Changes in / [a8616147:03286aa]


Ignore:
Location:
src
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/Box.cc

    ra8616147 r03286aa  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 14:51:21 2016
     12// Last Modified On : Tue May 03 16:44:47 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 in the adapter type
     1039                        param++;                // skip adaptee parameter
    10401040                        if ( realType->get_returnVals().empty() ) {
    1041                                 // void return
    10421041                                addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
    10431042                                bodyStmt = new ExprStmt( noLabels, adapteeApp );
    10441043                        } else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
    1045                                 // return type T
    10461044                                if ( (*param)->get_name() == "" ) {
    10471045                                        (*param)->set_name( "_ret" );
     
    20712069                                if ( n_members == 0 ) {
    20722070                                        // all empty structs have the same layout - size 1, align 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 ) ) ) );
     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 ) ) ) );
    20752073                                        // NOTE zero-length arrays are forbidden in C, so empty structs have no offsetof array
    20762074                                } else {
  • src/InitTweak/FixGlobalInit.cc

    ra8616147 r03286aa  
    1010// Created On       : Mon May 04 15:14:56 2016
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 11:37:30 2016
     12// Last Modified On : Mon May 09 11:44:29 2016
    1313// Update Count     : 2
    1414//
    1515
    1616#include "FixGlobalInit.h"
    17 #include "InitTweak.h"
     17#include "GenInit.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;
    131130                // C allows you to initialize objects with constant expressions
    132131                // xxx - this is an optimization. Need to first resolve constructors before we decide
     
    134133                // if ( isConstExpr( objDecl->get_init() ) ) return;
    135134
    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 ) );
     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 ) );
    143139
    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 ) );
     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 ) );
    149145
    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                 }
     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 ) );
    155150        }
    156151
  • src/InitTweak/FixInit.cc

    ra8616147 r03286aa  
    1010// Created On       : Wed Jan 13 16:29:30 2016
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 11:44:26 2016
     12// Last Modified On : Mon May 09 12:36:02 2016
    1313// Update Count     : 30
    1414//
     
    1717#include <list>
    1818#include "FixInit.h"
    19 #include "InitTweak.h"
    2019#include "ResolvExpr/Resolver.h"
    2120#include "ResolvExpr/typeops.h"
     
    2827#include "SymTab/Indexer.h"
    2928#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
    400424        namespace {
    401425                template<typename Iterator, typename OutputIterator>
     
    404428                                // remove if instrinsic destructor statement. Note that this is only called
    405429                                // on lists of implicit dtors, so if the user manually calls an intrinsic
    406                                 // dtor then the call must (and will) still be generated since the argument
    407                                 // may contain side effects.
     430                                // dtor then the call will still be generated
    408431                                if ( ! isInstrinsicSingleArgCallStmt( *it ) ) {
    409432                                        // don't need to call intrinsic dtor, because it does nothing, but
  • src/InitTweak/FixInit.h

    ra8616147 r03286aa  
    1010// Created On       : Wed Jan 13 16:29:30 2016
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 11:27:52 2016
     12// Last Modified On : Mon May 09 12:08:11 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 );
    3035} // namespace
    3136
  • src/InitTweak/GenInit.cc

    ra8616147 r03286aa  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 11:37:48 2016
     12// Last Modified On : Fri May 06 16:11:15 2016
    1313// Update Count     : 166
    1414//
     
    1717#include <list>
    1818#include "GenInit.h"
    19 #include "InitTweak.h"
    2019#include "SynTree/Declaration.h"
    2120#include "SynTree/Type.h"
     
    130129        }
    131130
     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        }
    132137        namespace {
     138
    133139                Expression * makeCtorDtorExpr( std::string name, ObjectDecl * objDecl, std::list< Expression * > args ) {
    134140                        UntypedExpr * expr = new UntypedExpr( new NameExpr( name ) );
     
    136142                        expr->get_args().splice( expr->get_args().end(), args );
    137143                        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;
    138171                }
    139172        }
     
    146179                                        // call into makeArrayFunction from validate.cc to generate calls to ctor/dtor for each element of array
    147180                                        // TODO: walk initializer and generate appropriate copy ctor if element has initializer
    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                                         }
     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() ) );
    177199                                } else {
    178200                                        // it's sufficient to attempt to call the ctor/dtor for the given object and its initializer
  • src/InitTweak/GenInit.h

    ra8616147 r03286aa  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 11:27:19 2016
     12// Last Modified On : Fri May 06 16:18:22 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 );
    2931} // namespace
    3032
  • src/InitTweak/module.mk

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

    ra8616147 r03286aa  
    126126        InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT) \
    127127        InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT) \
    128         InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT) \
    129128        Parser/driver_cfa_cpp-parser.$(OBJEXT) \
    130129        Parser/driver_cfa_cpp-lex.$(OBJEXT) \
     
    351350        GenPoly/DeclMutator.cc InitTweak/GenInit.cc \
    352351        InitTweak/FixInit.cc InitTweak/FixGlobalInit.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 \
     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 \
    359357        ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \
    360358        ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \
     
    573571        InitTweak/$(DEPDIR)/$(am__dirstamp)
    574572InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT):  \
    575         InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
    576 InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT):  \
    577573        InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
    578574Parser/parser.h: Parser/parser.cc
     
    810806        -rm -f InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT)
    811807        -rm -f InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT)
    812         -rm -f InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT)
    813808        -rm -f Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT)
    814809        -rm -f Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT)
     
    919914@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po@am__quote@
    920915@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@
    922916@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po@am__quote@
    923917@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po@am__quote@
     
    14311425@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`
    14321426
    1433 InitTweak/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 
    1440 InitTweak/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 
    14471427Parser/driver_cfa_cpp-parser.o: Parser/parser.cc
    14481428@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

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

    ra8616147 r03286aa  
    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 : Thu May 12 14:07:16 2016
     12// Last Modified On : Wed Aug 12 14:19:07 2015
    1313// Update Count     : 11
    1414//
     
    5151        if ( dimension ) {
    5252                os << " with dimension of ";
    53                 dimension->print( os, indent );
     53                dimension->print( os, 0 );
    5454        } // if
    5555}
  • src/SynTree/Expression.cc

    ra8616147 r03286aa  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 13:23:11 2016
     12// Last Modified On : Wed May 04 12:17:51 2016
    1313// Update Count     : 40
    1414//
     
    7575        constant.print( os );
    7676        Expression::print( os, indent );
     77        os << std::endl;
    7778}
    7879
     
    324325        os << ", from aggregate: ";
    325326        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, ' ' );
    363362                agg->print(os, indent + 2);
    364363        }
     
    382381void UntypedExpr::print( std::ostream &os, int indent ) const {
    383382        os << "Applying untyped: " << std::endl;
    384         os << std::string( indent+2, ' ' );
    385         function->print(os, indent + 2);
     383        os << std::string( indent+4, ' ' );
     384        function->print(os, indent + 4);
    386385        os << std::string( indent, ' ' ) << "...to: " << std::endl;
    387         printAll(args, os, indent + 2);
     386        printAll(args, os, indent + 4);
    388387        Expression::print( os, indent );
    389388}
  • src/SynTree/Initializer.cc

    ra8616147 r03286aa  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 13:23:03 2016
     12// Last Modified On : Tue Apr 26 15:51:35 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, ' ' );
    5453                        ( *i )->print(os, indent + 4 );
    5554                }
  • src/SynTree/ObjectDecl.cc

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

    ra8616147 r03286aa  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu May 12 13:33:18 2016
     12// Last Modified On : Thu Apr 28 13:34:32 2016
    1313// Update Count     : 54
    1414//
     
    4343
    4444void ExprStmt::print( std::ostream &os, int indent ) const {
    45         os << "Expression Statement:" << endl << std::string( indent + 2, ' ' );
     45        os << "Expression Statement:" << endl << std::string( indent, ' ' );
    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, ' ' );
    293292                (*it)->print( os, indent + 4 );
    294293        }
    295294
    296295        os << "\n" << string( indent + 2, ' ' ) << "condition: \n";
    297         if ( condition != 0 ) {
    298                 os << string( indent + 4, ' ' );
     296        if ( condition != 0 )
    299297                condition->print( os, indent + 4 );
    300         }
    301298
    302299        os << "\n" << string( indent + 2, ' ' ) << "increment: \n";
    303         if ( increment != 0 ) {
    304                 os << string( indent + 4, ' ' );
     300        if ( increment != 0 )
    305301                increment->print( os, indent + 4 );
    306         }
    307302
    308303        os << "\n" << string( indent + 2, ' ' ) << "statement block: \n";
    309         if ( body != 0 ) {
    310                 os << string( indent + 4, ' ' );
     304        if ( body != 0 )
    311305                body->print( os, indent + 4 );
    312         }
    313306
    314307        os << endl;
  • src/examples/limits.c

    ra8616147 r03286aa  
    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 
    161#include <limits>
    172
     3int main() {
    184// Integral Constants
    195
    20 short int m = MIN;
    21 int m = MIN;
    22 long int m = MIN;
    23 long long int m = MIN;
     6        short int m = MIN;
     7        int m = MIN;
     8        long int m = MIN;
     9        long long int m = MIN;
    2410
    25 short int M = MAX;
    26 unsigned short int M = MAX;
    27 int M = MAX;
    28 unsigned int M = MAX;
    29 long int M = MAX;
    30 unsigned long int M = MAX;
    31 long long int M = MAX;
    32 unsigned long long int M = MAX;
     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;
    3319
    3420// Floating-Point Constants
    3521
    36 float pi = PI;
    37 float pi_2 = PI_2;
    38 float pi_4 = PI_4;
    39 float _1_pi = _1_PI;
    40 float _2_pi = _2_PI;
    41 float _2_sqrt_pi = _2_SQRT_PI;
     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;
    4228
    43 double pi = PI;
    44 double pi_2 = PI_2;
    45 double pi_4 = PI_4;
    46 double _1_pi = _1_PI;
    47 double _2_pi = _2_PI;
    48 double _2_SQRT_pi = _2_SQRT_PI;
     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;
    4935
    50 long double pi = PI;
    51 long double pi_2 = PI_2;
    52 long double pi_4 = PI_4;
    53 long double _1_pi = _1_PI;
    54 long double _2_pi = _2_PI;
    55 long double _2_sqrt_pi = _2_SQRT_PI;
     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;
    5642
    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;
     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;
    6349
    64 long _Complex pi = PI;
    65 long _Complex pi_2 = PI_2;
    66 long _Complex pi_4 = PI_4;
    67 long _Complex _1_pi = _1_PI;
    68 long _Complex _2_pi = _2_PI;
    69 long _Complex _2_sqrt_pi = _2_SQRT_PI;
     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;
    7056
    71 float e = E;
    72 float log2_e = LOG2_E;
    73 float log10_e = LOG10_E;
    74 float ln_2 = LN_2;
    75 float ln_10 = LN_10;
    76 float sqrt_2 = SQRT_2;
    77 float _1_sqrt_2 = _1_SQRT_2;
     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;
    7864
    79 double e = E;
    80 double log2_e = LOG2_E;
    81 double log10_e = LOG10_E;
    82 double ln_2 = LN_2;
    83 double ln_10 = LN_10;
    84 double sqrt_2 = SQRT_2;
    85 double _1_sqrt_2 = _1_SQRT_2;
     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;
    8672
    87 long double e = E;
    88 long double log2_e = LOG2_E;
    89 long double log10_e = LOG10_E;
    90 long double ln_2 = LN_2;
    91 long double ln_10 = LN_10;
    92 long double sqrt_2 = SQRT_2;
    93 long double _1_sqrt_2 = _1_SQRT_2;
     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;
    9480
    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;
     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;
    10288
    103 long _Complex e = E;
    104 long _Complex log2_e = LOG2_E;
    105 long _Complex log10_e = LOG10_E;
    106 long _Complex ln_2 = LN_2;
    107 long _Complex ln_10 = LN_10;
    108 long _Complex sqrt_2 = SQRT_2;
    109 long _Complex _1_sqrt_2 = _1_SQRT_2;
     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}
    11097
    11198// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.