Changeset a8616147


Ignore:
Timestamp:
May 17, 2016, 12:52:21 PM (7 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
58440ce
Parents:
03286aa (diff), 189243c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'ctor' of plg.uwaterloo.ca:software/cfa/cfa-cc into ctor

Location:
src
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/Box.cc

    r03286aa ra8616147  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue May 03 16:44:47 2016
     12// Last Modified On : Fri May 13 14:51:21 2016
    1313// Update Count     : 295
    1414//
     
    10371037                        std::list< DeclarationWithType *>::iterator param = adapterType->get_parameters().begin();
    10381038                        std::list< DeclarationWithType *>::iterator realParam = adaptee->get_parameters().begin();
    1039                         param++;                // skip adaptee parameter
     1039                        param++;                // skip adaptee parameter in the adapter type
    10401040                        if ( realType->get_returnVals().empty() ) {
     1041                                // void return
    10411042                                addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
    10421043                                bodyStmt = new ExprStmt( noLabels, adapteeApp );
    10431044                        } else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
     1045                                // return type T
    10441046                                if ( (*param)->get_name() == "" ) {
    10451047                                        (*param)->set_name( "_ret" );
     
    20692071                                if ( n_members == 0 ) {
    20702072                                        // all empty structs have the same layout - size 1, align 1
    2071                                         makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from_ulong( 1 ) ) ) );
    2072                                         makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from_ulong( 1 ) ) ) );
     2073                                        makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from_ulong( (unsigned long)1 ) ) ) );
     2074                                        makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from_ulong( (unsigned long)1 ) ) ) );
    20732075                                        // NOTE zero-length arrays are forbidden in C, so empty structs have no offsetof array
    20742076                                } else {
  • src/InitTweak/FixGlobalInit.cc

    r03286aa ra8616147  
    1010// Created On       : Mon May 04 15:14:56 2016
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon May 09 11:44:29 2016
     12// Last Modified On : Fri May 13 11:37:30 2016
    1313// Update Count     : 2
    1414//
    1515
    1616#include "FixGlobalInit.h"
    17 #include "GenInit.h"
     17#include "InitTweak.h"
    1818#include "SynTree/Declaration.h"
    1919#include "SynTree/Type.h"
     
    125125                std::list< Statement * > & destroyStatements = destroyFunction->get_statements()->get_kids();
    126126
    127                 if ( objDecl->get_init() == NULL ) return;
     127                // if ( objDecl->get_init() == NULL ) return;
    128128                if ( ! tryConstruct( objDecl ) ) return; // don't construct @= or designated objects
    129129                if ( objDecl->get_type()->get_isConst() ) return; // temporary: can't assign to a const variable
     130                if ( objDecl->get_storageClass() == DeclarationNode::Extern ) return;
    130131                // C allows you to initialize objects with constant expressions
    131132                // xxx - this is an optimization. Need to first resolve constructors before we decide
     
    133134                // if ( isConstExpr( objDecl->get_init() ) ) return;
    134135
    135                 // steal initializer from object and attach it to a new temporary
    136                 ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, objDecl->get_type()->clone(), objDecl->get_init() );
    137                 objDecl->set_init( NULL );
    138                 initStatements.push_back( new DeclStmt( noLabels, newObj ) );
     136                if ( ArrayType * at = dynamic_cast< ArrayType * > ( objDecl->get_type() ) ) {
     137                        // xxx - initialize each element of the array
     138                } else {
     139                        // steal initializer from object and attach it to a new temporary
     140                        ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, objDecl->get_type()->clone(), objDecl->get_init() );
     141                        objDecl->set_init( NULL );
     142                        initStatements.push_back( new DeclStmt( noLabels, newObj ) );
    139143
    140                 // copy construct objDecl using temporary
    141                 UntypedExpr * init = new UntypedExpr( new NameExpr( "?{}" ) );
    142                 init->get_args().push_back( new AddressExpr( new VariableExpr( objDecl ) ) );
    143                 init->get_args().push_back( new VariableExpr( newObj ) );
    144                 initStatements.push_back( new ExprStmt( noLabels, init ) );
     144                        // copy construct objDecl using temporary
     145                        UntypedExpr * init = new UntypedExpr( new NameExpr( "?{}" ) );
     146                        init->get_args().push_back( new AddressExpr( new VariableExpr( objDecl ) ) );
     147                        init->get_args().push_back( new VariableExpr( newObj ) );
     148                        initStatements.push_back( new ExprStmt( noLabels, init ) );
    145149
    146                 // add destructor calls to global destroy function
    147                 UntypedExpr * destroy = new UntypedExpr( new NameExpr( "^?{}" ) );
    148                 destroy->get_args().push_back( new AddressExpr( new VariableExpr( objDecl ) ) );
    149                 destroyStatements.push_front( new ExprStmt( noLabels, destroy ) );
     150                        // add destructor calls to global destroy function
     151                        UntypedExpr * destroy = new UntypedExpr( new NameExpr( "^?{}" ) );
     152                        destroy->get_args().push_back( new AddressExpr( new VariableExpr( objDecl ) ) );
     153                        destroyStatements.push_front( new ExprStmt( noLabels, destroy ) );
     154                }
    150155        }
    151156
  • src/InitTweak/FixInit.cc

    r03286aa ra8616147  
    1010// Created On       : Wed Jan 13 16:29:30 2016
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon May 09 12:36:02 2016
     12// Last Modified On : Fri May 13 11:44:26 2016
    1313// Update Count     : 30
    1414//
     
    1717#include <list>
    1818#include "FixInit.h"
     19#include "InitTweak.h"
    1920#include "ResolvExpr/Resolver.h"
    2021#include "ResolvExpr/typeops.h"
     
    2728#include "SymTab/Indexer.h"
    2829#include "GenPoly/PolyMutator.h"
    29 #include "GenPoly/GenPoly.h"
    3030
    3131bool ctordtorp = false;
     
    398398        }
    399399
    400         bool isInstrinsicSingleArgCallStmt( Statement * stmt ) {
    401                 if ( stmt == NULL ) return false;
    402                 if ( ExprStmt * exprStmt = dynamic_cast< ExprStmt * >( stmt ) ) {
    403                         ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( exprStmt->get_expr() );
    404                         assert( appExpr );
    405                         VariableExpr * function = dynamic_cast< VariableExpr * >( appExpr->get_function() );
    406                         assert( function );
    407                         // check for Intrinsic only - don't want to remove all overridable ctor/dtors because autogenerated ctor/dtor
    408                         // will call all member dtors, and some members may have a user defined dtor.
    409                         FunctionType * funcType = GenPoly::getFunctionType( function->get_var()->get_type() );
    410                         assert( funcType );
    411                         return function->get_var()->get_linkage() == LinkageSpec::Intrinsic && funcType->get_parameters().size() == 1;
    412                 } else if ( CompoundStmt * compoundStmt = dynamic_cast< CompoundStmt * >( stmt ) ) {
    413                         // could also be a compound statement with a loop, in the case of an array
    414                         assert( compoundStmt->get_kids().size() == 2 ); // loop variable and loop
    415                         ForStmt * forStmt = dynamic_cast< ForStmt * >( compoundStmt->get_kids().back() );
    416                         assert( forStmt && forStmt->get_body() );
    417                         return isInstrinsicSingleArgCallStmt( forStmt->get_body() );
    418                 } else {
    419                         // should never get here
    420                         assert( false && "encountered unknown call statement" );
    421                 }
    422         }
    423 
    424400        namespace {
    425401                template<typename Iterator, typename OutputIterator>
     
    428404                                // remove if instrinsic destructor statement. Note that this is only called
    429405                                // on lists of implicit dtors, so if the user manually calls an intrinsic
    430                                 // dtor then the call will still be generated
     406                                // dtor then the call must (and will) still be generated since the argument
     407                                // may contain side effects.
    431408                                if ( ! isInstrinsicSingleArgCallStmt( *it ) ) {
    432409                                        // don't need to call intrinsic dtor, because it does nothing, but
  • src/InitTweak/FixInit.h

    r03286aa ra8616147  
    1010// Created On       : Wed Jan 13 16:29:30 2016
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon May 09 12:08:11 2016
     12// Last Modified On : Fri May 13 11:27:52 2016
    1313// Update Count     : 5
    1414//
     
    2828  /// and unwrap basic C-style initializers
    2929        void fix( std::list< Declaration * > & translationUnit );
    30 
    31   /// True if stmt is a call statement where the function called is intrinsic and takes one parameter.
    32   /// Intended to be used for default ctor/dtor calls, but might have use elsewhere.
    33   /// Currently has assertions that make it less than fully general.
    34   bool isInstrinsicSingleArgCallStmt( Statement * expr );
    3530} // namespace
    3631
  • src/InitTweak/GenInit.cc

    r03286aa ra8616147  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 06 16:11:15 2016
     12// Last Modified On : Fri May 13 11:37:48 2016
    1313// Update Count     : 166
    1414//
     
    1717#include <list>
    1818#include "GenInit.h"
     19#include "InitTweak.h"
    1920#include "SynTree/Declaration.h"
    2021#include "SynTree/Type.h"
     
    129130        }
    130131
    131         bool tryConstruct( ObjectDecl * objDecl ) {
    132                 // xxx - handle designations
    133                 return ! LinkageSpec::isBuiltin( objDecl->get_linkage() ) &&
    134                         (objDecl->get_init() == NULL ||
    135                         ( objDecl->get_init() != NULL && objDecl->get_init()->get_maybeConstructed() ));
    136         }
    137132        namespace {
    138 
    139133                Expression * makeCtorDtorExpr( std::string name, ObjectDecl * objDecl, std::list< Expression * > args ) {
    140134                        UntypedExpr * expr = new UntypedExpr( new NameExpr( name ) );
     
    142136                        expr->get_args().splice( expr->get_args().end(), args );
    143137                        return expr;
    144                 }
    145 
    146                 class InitExpander : public Visitor {
    147                   public:
    148                   InitExpander() {}
    149                   // ~InitExpander() {}
    150                         virtual void visit( SingleInit * singleInit );
    151                         virtual void visit( ListInit * listInit );
    152                         std::list< Expression * > argList;
    153                 };
    154 
    155                 void InitExpander::visit( SingleInit * singleInit ) {
    156                         argList.push_back( singleInit->get_value()->clone() );
    157                 }
    158 
    159                 void InitExpander::visit( ListInit * listInit ) {
    160                         // xxx - for now, assume no nested list inits
    161                         std::list<Initializer*>::iterator it = listInit->begin_initializers();
    162                         for ( ; it != listInit->end_initializers(); ++it ) {
    163                                 (*it)->accept( *this );
    164                         }
    165                 }
    166 
    167                 std::list< Expression * > makeInitList( Initializer * init ) {
    168                         InitExpander expander;
    169                         maybeAccept( init, expander );
    170                         return expander.argList;
    171138                }
    172139        }
     
    179146                                        // call into makeArrayFunction from validate.cc to generate calls to ctor/dtor for each element of array
    180147                                        // TODO: walk initializer and generate appropriate copy ctor if element has initializer
    181                                         std::list< Statement * > ctor;
    182                                         std::list< Statement * > dtor;
    183 
    184                                         SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "?{}", back_inserter( ctor ) );
    185                                         SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "^?{}", front_inserter( dtor ), false );
    186 
    187                                         // Currently makeArrayFunction produces a single Statement - a CompoundStmt
    188                                         // which  wraps everything that needs to happen. As such, it's technically
    189                                         // possible to use a Statement ** in the above calls, but this is inherently
    190                                         // unsafe, so instead we take the slightly less efficient route, but will be
    191                                         // immediately informed if somehow the above assumption is broken. In this case,
    192                                         // we could always wrap the list of statements at this point with a CompoundStmt,
    193                                         // but it seems reasonable at the moment for this to be done by makeArrayFunction
    194                                         // itself
    195                                         assert( ctor.size() == 1 );
    196                                         assert( dtor.size() == 1 );
    197 
    198                                         objDecl->set_init( new ConstructorInit( ctor.front(), dtor.front(), objDecl->get_init() ) );
     148                                        std::list< Expression * > args = makeInitList( objDecl->get_init() );
     149                                        if ( args.empty() ) {
     150                                                std::list< Statement * > ctor;
     151                                                std::list< Statement * > dtor;
     152
     153                                                SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "?{}", back_inserter( ctor ) );
     154                                                SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "^?{}", front_inserter( dtor ), false );
     155
     156                                                // Currently makeArrayFunction produces a single Statement - a CompoundStmt
     157                                                // which  wraps everything that needs to happen. As such, it's technically
     158                                                // possible to use a Statement ** in the above calls, but this is inherently
     159                                                // unsafe, so instead we take the slightly less efficient route, but will be
     160                                                // immediately informed if somehow the above assumption is broken. In this case,
     161                                                // we could always wrap the list of statements at this point with a CompoundStmt,
     162                                                // but it seems reasonable at the moment for this to be done by makeArrayFunction
     163                                                // itself
     164                                                assert( ctor.size() == 1 );
     165                                                assert( dtor.size() == 1 );
     166
     167                                                objDecl->set_init( new ConstructorInit( ctor.front(), dtor.front(), objDecl->get_init() ) );
     168                                        } else {
     169                                                // array came with an initializer list: initialize each element
     170                                                // may have more initializers than elements in the array - need to check at each index that
     171                                                // we haven't exceeded size. This requires precomputing the size because it might be a side-effecting
     172                                                // computation.
     173                                                // may have fewer initializers than eleemnts in the array - need to default construct
     174                                                // remaining elements.
     175                                                // might be able to merge this with the case above.
     176                                        }
    199177                                } else {
    200178                                        // it's sufficient to attempt to call the ctor/dtor for the given object and its initializer
  • src/InitTweak/GenInit.h

    r03286aa ra8616147  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 06 16:18:22 2016
     12// Last Modified On : Fri May 13 11:27:19 2016
    1313// Update Count     : 3
    1414//
     
    2727        /// Adds return value temporaries and wraps Initializers in ConstructorInit nodes
    2828        void genInit( std::list< Declaration * > & translationUnit );
    29         /// True if the resolver should try to construct objDecl
    30         bool tryConstruct( ObjectDecl * objDecl );
    3129} // namespace
    3230
  • src/InitTweak/module.mk

    r03286aa ra8616147  
    1111## Created On       : Mon Jun  1 17:49:17 2015
    1212## Last Modified By : Rob Schluntz
    13 ## Last Modified On : Fri May 06 15:59:27 2016
     13## Last Modified On : Fri May 13 11:36:24 2016
    1414## Update Count     : 3
    1515###############################################################################
     
    1717SRC += InitTweak/GenInit.cc \
    1818        InitTweak/FixInit.cc \
    19         InitTweak/FixGlobalInit.cc
     19        InitTweak/FixGlobalInit.cc \
     20        InitTweak/InitTweak.cc
    2021
  • src/Makefile.in

    r03286aa ra8616147  
    126126        InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT) \
    127127        InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT) \
     128        InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT) \
    128129        Parser/driver_cfa_cpp-parser.$(OBJEXT) \
    129130        Parser/driver_cfa_cpp-lex.$(OBJEXT) \
     
    350351        GenPoly/DeclMutator.cc InitTweak/GenInit.cc \
    351352        InitTweak/FixInit.cc InitTweak/FixGlobalInit.cc \
    352         Parser/parser.yy Parser/lex.ll Parser/TypedefTable.cc \
    353         Parser/ParseNode.cc Parser/DeclarationNode.cc \
    354         Parser/ExpressionNode.cc Parser/StatementNode.cc \
    355         Parser/InitializerNode.cc Parser/TypeData.cc \
    356         Parser/LinkageSpec.cc Parser/parseutility.cc Parser/Parser.cc \
     353        InitTweak/InitTweak.cc Parser/parser.yy Parser/lex.ll \
     354        Parser/TypedefTable.cc Parser/ParseNode.cc \
     355        Parser/DeclarationNode.cc Parser/ExpressionNode.cc \
     356        Parser/StatementNode.cc Parser/InitializerNode.cc \
     357        Parser/TypeData.cc Parser/LinkageSpec.cc \
     358        Parser/parseutility.cc Parser/Parser.cc \
    357359        ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \
    358360        ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \
     
    571573        InitTweak/$(DEPDIR)/$(am__dirstamp)
    572574InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT):  \
     575        InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
     576InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT):  \
    573577        InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
    574578Parser/parser.h: Parser/parser.cc
     
    806810        -rm -f InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT)
    807811        -rm -f InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT)
     812        -rm -f InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT)
    808813        -rm -f Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT)
    809814        -rm -f Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT)
     
    914919@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po@am__quote@
    915920@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po@am__quote@
     921@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po@am__quote@
    916922@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po@am__quote@
    917923@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po@am__quote@
     
    14251431@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.obj `if test -f 'InitTweak/FixGlobalInit.cc'; then $(CYGPATH_W) 'InitTweak/FixGlobalInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixGlobalInit.cc'; fi`
    14261432
     1433InitTweak/driver_cfa_cpp-InitTweak.o: InitTweak/InitTweak.cc
     1434@am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-InitTweak.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo -c -o InitTweak/driver_cfa_cpp-InitTweak.o `test -f 'InitTweak/InitTweak.cc' || echo '$(srcdir)/'`InitTweak/InitTweak.cc
     1435@am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
     1436@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.o' libtool=no @AMDEPBACKSLASH@
     1437@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1438@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-InitTweak.o `test -f 'InitTweak/InitTweak.cc' || echo '$(srcdir)/'`InitTweak/InitTweak.cc
     1439
     1440InitTweak/driver_cfa_cpp-InitTweak.obj: InitTweak/InitTweak.cc
     1441@am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-InitTweak.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo -c -o InitTweak/driver_cfa_cpp-InitTweak.obj `if test -f 'InitTweak/InitTweak.cc'; then $(CYGPATH_W) 'InitTweak/InitTweak.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitTweak.cc'; fi`
     1442@am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
     1443@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.obj' libtool=no @AMDEPBACKSLASH@
     1444@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1445@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-InitTweak.obj `if test -f 'InitTweak/InitTweak.cc'; then $(CYGPATH_W) 'InitTweak/InitTweak.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitTweak.cc'; fi`
     1446
    14271447Parser/driver_cfa_cpp-parser.o: Parser/parser.cc
    14281448@am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo -c -o Parser/driver_cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
  • src/ResolvExpr/Resolver.cc

    r03286aa ra8616147  
    1010// Created On       : Sun May 17 12:17:01 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon May 09 12:10:19 2016
     12// Last Modified On : Fri May 13 11:36:40 2016
    1313// Update Count     : 203
    1414//
     
    2525#include "SymTab/Indexer.h"
    2626#include "Common/utility.h"
    27 #include "InitTweak/FixInit.h"
     27#include "InitTweak/InitTweak.h"
    2828
    2929#include <iostream>
  • src/SynTree/ArrayType.cc

    r03286aa ra8616147  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // ArrayType.cc -- 
     7// ArrayType.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 14:19:07 2015
     12// Last Modified On : Thu May 12 14:07:16 2016
    1313// Update Count     : 11
    1414//
     
    5151        if ( dimension ) {
    5252                os << " with dimension of ";
    53                 dimension->print( os, 0 );
     53                dimension->print( os, indent );
    5454        } // if
    5555}
  • src/SynTree/Expression.cc

    r03286aa ra8616147  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed May 04 12:17:51 2016
     12// Last Modified On : Fri May 13 13:23:11 2016
    1313// Update Count     : 40
    1414//
     
    7575        constant.print( os );
    7676        Expression::print( os, indent );
    77         os << std::endl;
    7877}
    7978
     
    325324        os << ", from aggregate: ";
    326325        if (agg != 0) {
     326                os << std::string( indent + 2, ' ' );
    327327                agg->print(os, indent + 2);
    328328        }
     
    360360        os << std::string( indent, ' ' ) << "from aggregate: " << std::endl;
    361361        if (agg != 0) {
     362                os << std::string( indent + 2, ' ' );
    362363                agg->print(os, indent + 2);
    363364        }
     
    381382void UntypedExpr::print( std::ostream &os, int indent ) const {
    382383        os << "Applying untyped: " << std::endl;
    383         os << std::string( indent+4, ' ' );
    384         function->print(os, indent + 4);
     384        os << std::string( indent+2, ' ' );
     385        function->print(os, indent + 2);
    385386        os << std::string( indent, ' ' ) << "...to: " << std::endl;
    386         printAll(args, os, indent + 4);
     387        printAll(args, os, indent + 2);
    387388        Expression::print( os, indent );
    388389}
  • src/SynTree/Initializer.cc

    r03286aa ra8616147  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Apr 26 15:51:35 2016
     12// Last Modified On : Fri May 13 13:23:03 2016
    1313// Update Count     : 28
    1414//
     
    4949
    5050        if ( ! designators.empty() ) {
    51                 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "   << std::endl;
     51                os << std::endl << std::string(indent + 2, ' ' ) << "designated by: " << std::endl;
    5252                for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {
     53                        os << std::string(indent + 4, ' ' );
    5354                        ( *i )->print(os, indent + 4 );
    5455                }
  • src/SynTree/ObjectDecl.cc

    r03286aa ra8616147  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed May 04 12:18:28 2016
     12// Last Modified On : Fri May 13 13:23:32 2016
    1313// Update Count     : 30
    1414//
     
    5757
    5858        if ( init ) {
    59                 os << std::string(indent, ' ');
    6059                os << " with initializer ";
    6160                init->print( os, indent );
    62                 os << std::string(indent, ' ') << "maybeConstructed? " << init->get_maybeConstructed();
     61                os << std::endl << std::string(indent, ' ');
     62                os << "maybeConstructed? " << init->get_maybeConstructed();
    6363        } // if
    6464
  • src/SynTree/Statement.cc

    r03286aa ra8616147  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Apr 28 13:34:32 2016
     12// Last Modified On : Thu May 12 13:33:18 2016
    1313// Update Count     : 54
    1414//
     
    4343
    4444void ExprStmt::print( std::ostream &os, int indent ) const {
    45         os << "Expression Statement:" << endl << std::string( indent, ' ' );
     45        os << "Expression Statement:" << endl << std::string( indent + 2, ' ' );
    4646        expr->print( os, indent + 2 );
    4747}
     
    290290        os << string( indent + 2, ' ' ) << "initialization: \n";
    291291        for ( std::list<Statement *>::const_iterator it = initialization.begin(); it != initialization.end(); ++it ) {
     292                os << string( indent + 4, ' ' );
    292293                (*it)->print( os, indent + 4 );
    293294        }
    294295
    295296        os << "\n" << string( indent + 2, ' ' ) << "condition: \n";
    296         if ( condition != 0 )
     297        if ( condition != 0 ) {
     298                os << string( indent + 4, ' ' );
    297299                condition->print( os, indent + 4 );
     300        }
    298301
    299302        os << "\n" << string( indent + 2, ' ' ) << "increment: \n";
    300         if ( increment != 0 )
     303        if ( increment != 0 ) {
     304                os << string( indent + 4, ' ' );
    301305                increment->print( os, indent + 4 );
     306        }
    302307
    303308        os << "\n" << string( indent + 2, ' ' ) << "statement block: \n";
    304         if ( body != 0 )
     309        if ( body != 0 ) {
     310                os << string( indent + 4, ' ' );
    305311                body->print( os, indent + 4 );
     312        }
    306313
    307314        os << endl;
  • src/examples/limits.c

    r03286aa ra8616147  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// limits.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Tue May 10 20:44:20 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue May 10 20:45:28 2016
     13// Update Count     : 1
     14//
     15
    116#include <limits>
    217
    3 int main() {
    418// Integral Constants
    519
    6         short int m = MIN;
    7         int m = MIN;
    8         long int m = MIN;
    9         long long int m = MIN;
     20short int m = MIN;
     21int m = MIN;
     22long int m = MIN;
     23long long int m = MIN;
    1024
    11         short int M = MAX;
    12         unsigned short int M = MAX;
    13         int M = MAX;
    14         unsigned int M = MAX;
    15         long int M = MAX;
    16         unsigned long int M = MAX;
    17         long long int M = MAX;
    18         unsigned long long int M = MAX;
     25short int M = MAX;
     26unsigned short int M = MAX;
     27int M = MAX;
     28unsigned int M = MAX;
     29long int M = MAX;
     30unsigned long int M = MAX;
     31long long int M = MAX;
     32unsigned long long int M = MAX;
    1933
    2034// Floating-Point Constants
    2135
    22         float pi = PI;
    23         float pi_2 = PI_2;
    24         float pi_4 = PI_4;
    25         float _1_pi = _1_PI;
    26         float _2_pi = _2_PI;
    27         float _2_sqrt_pi = _2_SQRT_PI;
     36float pi = PI;
     37float pi_2 = PI_2;
     38float pi_4 = PI_4;
     39float _1_pi = _1_PI;
     40float _2_pi = _2_PI;
     41float _2_sqrt_pi = _2_SQRT_PI;
    2842
    29         double pi = PI;
    30         double pi_2 = PI_2;
    31         double pi_4 = PI_4;
    32         double _1_pi = _1_PI;
    33         double _2_pi = _2_PI;
    34         double _2_SQRT_pi = _2_SQRT_PI;
     43double pi = PI;
     44double pi_2 = PI_2;
     45double pi_4 = PI_4;
     46double _1_pi = _1_PI;
     47double _2_pi = _2_PI;
     48double _2_SQRT_pi = _2_SQRT_PI;
    3549
    36         long double pi = PI;
    37         long double pi_2 = PI_2;
    38         long double pi_4 = PI_4;
    39         long double _1_pi = _1_PI;
    40         long double _2_pi = _2_PI;
    41         long double _2_sqrt_pi = _2_SQRT_PI;
     50long double pi = PI;
     51long double pi_2 = PI_2;
     52long double pi_4 = PI_4;
     53long double _1_pi = _1_PI;
     54long double _2_pi = _2_PI;
     55long double _2_sqrt_pi = _2_SQRT_PI;
    4256
    43         _Complex pi = PI;
    44         _Complex pi_2 = PI_2;
    45         _Complex pi_4 = PI_4;
    46         _Complex _1_pi = _1_PI;
    47         _Complex _2_pi = _2_PI;
    48         _Complex _2_sqrt_pi = _2_SQRT_PI;
     57_Complex pi = PI;
     58_Complex pi_2 = PI_2;
     59_Complex pi_4 = PI_4;
     60_Complex _1_pi = _1_PI;
     61_Complex _2_pi = _2_PI;
     62_Complex _2_sqrt_pi = _2_SQRT_PI;
    4963
    50         long _Complex pi = PI;
    51         long _Complex pi_2 = PI_2;
    52         long _Complex pi_4 = PI_4;
    53         long _Complex _1_pi = _1_PI;
    54         long _Complex _2_pi = _2_PI;
    55         long _Complex _2_sqrt_pi = _2_SQRT_PI;
     64long _Complex pi = PI;
     65long _Complex pi_2 = PI_2;
     66long _Complex pi_4 = PI_4;
     67long _Complex _1_pi = _1_PI;
     68long _Complex _2_pi = _2_PI;
     69long _Complex _2_sqrt_pi = _2_SQRT_PI;
    5670
    57         float e = E;
    58         float log2_e = LOG2_E;
    59         float log10_e = LOG10_E;
    60         float ln_2 = LN_2;
    61         float ln_10 = LN_10;
    62         float sqrt_2 = SQRT_2;
    63         float _1_sqrt_2 = _1_SQRT_2;
     71float e = E;
     72float log2_e = LOG2_E;
     73float log10_e = LOG10_E;
     74float ln_2 = LN_2;
     75float ln_10 = LN_10;
     76float sqrt_2 = SQRT_2;
     77float _1_sqrt_2 = _1_SQRT_2;
    6478
    65         double e = E;
    66         double log2_e = LOG2_E;
    67         double log10_e = LOG10_E;
    68         double ln_2 = LN_2;
    69         double ln_10 = LN_10;
    70         double sqrt_2 = SQRT_2;
    71         double _1_sqrt_2 = _1_SQRT_2;
     79double e = E;
     80double log2_e = LOG2_E;
     81double log10_e = LOG10_E;
     82double ln_2 = LN_2;
     83double ln_10 = LN_10;
     84double sqrt_2 = SQRT_2;
     85double _1_sqrt_2 = _1_SQRT_2;
    7286
    73         long double e = E;
    74         long double log2_e = LOG2_E;
    75         long double log10_e = LOG10_E;
    76         long double ln_2 = LN_2;
    77         long double ln_10 = LN_10;
    78         long double sqrt_2 = SQRT_2;
    79         long double _1_sqrt_2 = _1_SQRT_2;
     87long double e = E;
     88long double log2_e = LOG2_E;
     89long double log10_e = LOG10_E;
     90long double ln_2 = LN_2;
     91long double ln_10 = LN_10;
     92long double sqrt_2 = SQRT_2;
     93long double _1_sqrt_2 = _1_SQRT_2;
    8094
    81         _Complex e = E;
    82         _Complex log2_e = LOG2_E;
    83         _Complex log10_e = LOG10_E;
    84         _Complex ln_2 = LN_2;
    85         _Complex ln_10 = LN_10;
    86         _Complex sqrt_2 = SQRT_2;
    87         _Complex _1_sqrt_2 = _1_SQRT_2;
     95_Complex e = E;
     96_Complex log2_e = LOG2_E;
     97_Complex log10_e = LOG10_E;
     98_Complex ln_2 = LN_2;
     99_Complex ln_10 = LN_10;
     100_Complex sqrt_2 = SQRT_2;
     101_Complex _1_sqrt_2 = _1_SQRT_2;
    88102
    89         long _Complex e = E;
    90         long _Complex log2_e = LOG2_E;
    91         long _Complex log10_e = LOG10_E;
    92         long _Complex ln_2 = LN_2;
    93         long _Complex ln_10 = LN_10;
    94         long _Complex sqrt_2 = SQRT_2;
    95         long _Complex _1_sqrt_2 = _1_SQRT_2;
    96 }
     103long _Complex e = E;
     104long _Complex log2_e = LOG2_E;
     105long _Complex log10_e = LOG10_E;
     106long _Complex ln_2 = LN_2;
     107long _Complex ln_10 = LN_10;
     108long _Complex sqrt_2 = SQRT_2;
     109long _Complex _1_sqrt_2 = _1_SQRT_2;
    97110
    98111// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.