Changeset 0720e049 for src/ResolvExpr


Ignore:
Timestamp:
Aug 11, 2017, 10:33:37 AM (7 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
54cd58b
Parents:
3d4b23fa (diff), 59a75cb (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 'master' of plg.uwaterloo.ca:/u/cforall/software/cfa/cfa-cc

Location:
src/ResolvExpr
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • src/ResolvExpr/Alternative.h

    r3d4b23fa r0720e049  
    1010// Created On       : Sat May 16 23:45:43 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 23:54:39 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jul 22 09:36:36 2017
     13// Update Count     : 3
    1414//
    1515
    16 #ifndef ALTERNATIVE_H
    17 #define ALTERNATIVE_H
     16#pragma once
    1817
    1918#include <list>
     
    4746} // namespace ResolvExpr
    4847
    49 #endif // ALTERNATIVE_H
    50 
    5148// Local Variables: //
    5249// tab-width: 4 //
  • src/ResolvExpr/AlternativeFinder.cc

    r3d4b23fa r0720e049  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:52:08 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar 17 09:14:17 2017
    13 // Update Count     : 30
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Wed Jul 26 11:33:00 2017
     13// Update Count     : 31
    1414//
    1515
     
    878878        }
    879879
     880        void AlternativeFinder::visit( VirtualCastExpr * castExpr ) {
     881                assertf( castExpr->get_result(), "Implicate virtual cast targets not yet supported." );
     882                AlternativeFinder finder( indexer, env );
     883                // don't prune here, since it's guaranteed all alternatives will have the same type
     884                // (giving the alternatives different types is half of the point of ConstructorExpr nodes)
     885                finder.findWithAdjustment( castExpr->get_arg(), false );
     886                for ( Alternative & alt : finder.alternatives ) {
     887                        alternatives.push_back( Alternative(
     888                                new VirtualCastExpr( alt.expr->clone(), castExpr->get_result()->clone() ),
     889                                alt.env, alt.cost ) );
     890                }
     891        }
     892
    880893        void AlternativeFinder::visit( UntypedMemberExpr *memberExpr ) {
    881894                AlternativeFinder funcFinder( indexer, env );
  • src/ResolvExpr/AlternativeFinder.h

    r3d4b23fa r0720e049  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:56:12 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Apr 19 11:44:53 2016
    13 // Update Count     : 2
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Wed Jul 26 11:24:00 2017
     13// Update Count     : 4
    1414//
    1515
    16 #ifndef ALTERNATIVEFINDER_H
    17 #define ALTERNATIVEFINDER_H
     16#pragma once
    1817
    1918#include <set>
     
    5049                virtual void visit( AddressExpr *addressExpr );
    5150                virtual void visit( CastExpr *castExpr );
     51                virtual void visit( VirtualCastExpr *castExpr );
    5252                virtual void visit( UntypedMemberExpr *memberExpr );
    5353                virtual void visit( MemberExpr *memberExpr );
     
    132132} // namespace ResolvExpr
    133133
    134 #endif // ALTERNATIVEFINDER_H
    135 
    136134// Local Variables: //
    137135// tab-width: 4 //
  • src/ResolvExpr/AlternativePrinter.h

    r3d4b23fa r0720e049  
    1010// Created On       : Sun May 17 06:55:43 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 06:57:12 2015
    13 // Update Count     : 3
     12// Last Modified On : Sat Jul 22 09:37:09 2017
     13// Update Count     : 4
    1414//
    1515
    16 #ifndef ALTERNATIVEPRINTER_H
    17 #define ALTERNATIVEPRINTER_H
     16#pragma once
    1817
    1918#include <iostream>
     
    3433} // namespace ResolvExpr
    3534
    36 #endif // ALTERNATIVEPRINTER_H
    37 
    3835// Local Variables: //
    3936// tab-width: 4 //
  • src/ResolvExpr/ConversionCost.h

    r3d4b23fa r0720e049  
    1010// Created On       : Sun May 17 09:37:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:35:56 2016
    13 // Update Count     : 3
     12// Last Modified On : Sat Jul 22 09:38:24 2017
     13// Update Count     : 4
    1414//
    1515
    16 #ifndef CONVERSIONCOST_H
    17 #define CONVERSIONCOST_H
     16#pragma once
    1817
    1918#include "SynTree/Visitor.h"
     
    5150} // namespace ResolvExpr
    5251
    53 #endif // CONVERSIONCOST_H */
    54 
    5552// Local Variables: //
    5653// tab-width: 4 //
  • src/ResolvExpr/Cost.h

    r3d4b23fa r0720e049  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 09:39:50 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 22 16:43:10 2015
    13 // Update Count     : 4
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 22 09:35:55 2017
     13// Update Count     : 5
    1414//
    1515
    16 #ifndef COST_H
    17 #define COST_H
     16#pragma once
    1817
    1918#include <iostream>
     
    114113} // namespace ResolvExpr
    115114
    116 #endif // COST_H
    117 
    118115// Local Variables: //
    119116// tab-width: 4 //
  • src/ResolvExpr/CurrentObject.cc

    r3d4b23fa r0720e049  
    3838                                return constExpr->get_constant()->get_ival();
    3939                        } else {
    40                                 assertf( false, "Non-integer constant expression in getConstValue", toString( constExpr ).c_str() ); // xxx - might be semantic error
     40                                assertf( false, "Non-integer constant expression in getConstValue %s", toString( constExpr ).c_str() ); // xxx - might be semantic error
    4141                        }
    4242                } else if ( dynamic_cast< OneType * >( constExpr->get_result() ) ) {
     
    163163                                setPosition( castExpr->get_arg() );
    164164                        } else if ( VariableExpr * varExpr = dynamic_cast< VariableExpr * >( expr ) ) {
    165                                 assertf( dynamic_cast<EnumInstType *> ( varExpr->get_result() ), "ArrayIterator given variable that isn't an enum constant", toString( expr ).c_str() );
     165                                assertf( dynamic_cast<EnumInstType *> ( varExpr->get_result() ), "ArrayIterator given variable that isn't an enum constant : %s", toString( expr ).c_str() );
    166166                                index = 0; // xxx - get actual value of enum constant
    167167                        } else if ( dynamic_cast< SizeofExpr * >( expr ) || dynamic_cast< AlignofExpr * >( expr ) ) {
     
    505505                        curTypes = newTypes;
    506506                        newTypes.clear();
    507                         assertf( desigAlts.size() == curTypes.size(), "Designator alternatives (%d) and current types (%d) out of sync", desigAlts.size(), curTypes.size() );
     507                        assertf( desigAlts.size() == curTypes.size(), "Designator alternatives (%zu) and current types (%zu) out of sync", desigAlts.size(), curTypes.size() );
    508508                } // for
    509509                if ( desigAlts.size() > 1 ) {
  • src/ResolvExpr/CurrentObject.h

    r3d4b23fa r0720e049  
    99// Author           : Rob Schluntz
    1010// Created On       : Thu Jun  8 11:07:25 2017
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jun  8 11:07:41 2017
    13 // Update Count     : 2
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 22 09:36:48 2017
     13// Update Count     : 3
    1414//
    1515
    16 #ifndef CURRENT_OBJECT_H
    17 #define CURRENT_OBJECT_H
     16#pragma once
    1817
    1918#include <stack>
     
    5150} // namespace ResolvExpr
    5251
    53 #endif // CURRENT_OBJECT_H
    54 
    5552// Local Variables: //
    5653// tab-width: 4 //
  • src/ResolvExpr/FindOpenVars.h

    r3d4b23fa r0720e049  
    1010// Created On       : Sun May 17 09:46:04 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 09:47:20 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jul 22 09:35:18 2017
     13// Update Count     : 3
    1414//
    1515
    16 #ifndef FINDOPENVARS_H
    17 #define FINDOPENVARS_H
     16#pragma once
    1817
    1918#include "Unify.h"
     
    2524} // namespace ResolvExpr
    2625
    27 #endif // FINDOPENVARS_H
    28 
    2926// Local Variables: //
    3027// tab-width: 4 //
  • src/ResolvExpr/RenameVars.h

    r3d4b23fa r0720e049  
    1010// Created On       : Sun May 17 12:10:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:36:39 2016
    13 // Update Count     : 3
     12// Last Modified On : Sat Jul 22 09:33:54 2017
     13// Update Count     : 4
    1414//
    1515
    16 #ifndef RESOLVEXPR_RENAMEVARS_H
    17 #define RESOLVEXPR_RENAMEVARS_H
     16#pragma once
    1817
    1918#include <list>
     
    5655} // namespace ResolvExpr
    5756
    58 #endif // RENAMEVARS_H
    59 
    6057// Local Variables: //
    6158// tab-width: 4 //
  • src/ResolvExpr/ResolveTypeof.h

    r3d4b23fa r0720e049  
    1010// Created On       : Sun May 17 12:14:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 12:16:29 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jul 22 09:38:35 2017
     13// Update Count     : 3
    1414//
    1515
    16 #ifndef RESOLVETYPEOF_H
    17 #define RESOLVETYPEOF_H
     16#pragma once
    1817
    1918#include "SynTree/SynTree.h"
     
    2423} // namespace ResolvExpr
    2524
    26 #endif // RESOLVETYPEOF_H
    27 
    2825// Local Variables: //
    2926// tab-width: 4 //
  • src/ResolvExpr/Resolver.cc

    r3d4b23fa r0720e049  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:17:01 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Mar 23 17:23:14 2017
    13 // Update Count     : 211
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Tus Aug  8 16:06:00 2017
     13// Update Count     : 212
    1414//
    1515
     
    7171                virtual void visit( ReturnStmt *returnStmt ) override;
    7272                virtual void visit( ThrowStmt *throwStmt ) override;
     73                virtual void visit( CatchStmt *catchStmt ) override;
    7374
    7475                virtual void visit( SingleInit *singleInit ) override;
     
    368369
    369370        void Resolver::visit( ThrowStmt *throwStmt ) {
     371                // TODO: Replace *exception type with &exception type.
    370372                if ( throwStmt->get_expr() ) {
    371                         Expression * wrapped = new CastExpr( throwStmt->get_expr(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
     373                        StructDecl * exception_decl =
     374                                lookupStruct( "__cfaehm__base_exception_t" );
     375                        assert( exception_decl );
     376                        Expression * wrapped = new CastExpr(
     377                                throwStmt->get_expr(),
     378                                new PointerType(
     379                                        noQualifiers,
     380                                        new StructInstType(
     381                                                noQualifiers,
     382                                                exception_decl
     383                                                )
     384                                        )
     385                                );
    372386                        Expression * newExpr = findSingleExpression( wrapped, *this );
    373387                        throwStmt->set_expr( newExpr );
     388                }
     389        }
     390
     391        void Resolver::visit( CatchStmt *catchStmt ) {
     392                if ( catchStmt->get_cond() ) {
     393                        Expression * wrapped = new CastExpr(
     394                                catchStmt->get_cond(),
     395                                new BasicType( noQualifiers, BasicType::Bool )
     396                                );
     397                        catchStmt->set_cond( findSingleExpression( wrapped, *this ) );
    374398                }
    375399        }
  • src/ResolvExpr/Resolver.h

    r3d4b23fa r0720e049  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:18:34 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 15:06:53 2016
    13 // Update Count     : 2
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 22 09:36:57 2017
     13// Update Count     : 3
    1414//
    1515
    16 #ifndef RESOLVER_H
    17 #define RESOLVER_H
     16#pragma once
    1817
    1918#include "SynTree/SynTree.h"
     
    2928} // namespace ResolvExpr
    3029
    31 #endif // RESOLVER_H
    32 
    3330// Local Variables: //
    3431// tab-width: 4 //
  • src/ResolvExpr/TypeEnvironment.h

    r3d4b23fa r0720e049  
    1010// Created On       : Sun May 17 12:24:58 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 12:26:52 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jul 22 09:35:45 2017
     13// Update Count     : 3
    1414//
    1515
    16 #ifndef TYPEENVIRONMENT_H
    17 #define TYPEENVIRONMENT_H
     16#pragma once
    1817
    1918#include <string>
     
    9998} // namespace ResolvExpr
    10099
    101 #endif // TYPEENVIRONMENT_H */
    102 
    103100// Local Variables: //
    104101// tab-width: 4 //
  • src/ResolvExpr/TypeMap.h

    r3d4b23fa r0720e049  
    99// Author           : Aaron B. Moss
    1010// Created On       : Fri Feb 19 13:55:00 2016
    11 // Last Modified By : Aaron B. Moss
    12 // Last Modified On : Fri Feb 19 13:55:00 2016
    13 // Update Count     : 1
    14 //
    15 
    16 #ifndef _TYPEMAP_H
    17 #define _TYPEMAP_H
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 22 09:37:19 2017
     13// Update Count     : 2
     14//
     15
     16#pragma once
    1817
    1918#include <map>
     
    204203}  // namespace ResolvExpr
    205204
    206 #endif // _TYPEMAP_H
    207 
    208205// Local Variables: //
    209206// tab-width: 4 //
  • src/ResolvExpr/Unify.h

    r3d4b23fa r0720e049  
    1010// Created On       : Sun May 17 13:09:04 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 13:10:34 2015
    13 // Update Count     : 2
     12// Last Modified On : Fri Jul 21 23:09:34 2017
     13// Update Count     : 3
    1414//
    1515
    16 #ifndef UNIFY_H
    17 #define UNIFY_H
     16#pragma once
    1817
    1918#include <map>
     
    7271} // namespace ResolvExpr
    7372
    74 #endif // UNIFY_H
    75 
    7673// Local Variables: //
    7774// tab-width: 4 //
  • src/ResolvExpr/typeops.h

    r3d4b23fa r0720e049  
    1010// Created On       : Sun May 17 07:28:22 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 07:33:11 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jul 22 09:36:18 2017
     13// Update Count     : 3
    1414//
    1515
    16 #ifndef TYPEOPS_H
    17 #define TYPEOPS_H
     16#pragma once
    1817
    1918#include "SynTree/SynTree.h"
     
    157156} // namespace ResolvExpr
    158157
    159 #endif // TYPEOPS_H
    160 
    161158// Local Variables: //
    162159// tab-width: 4 //
Note: See TracChangeset for help on using the changeset viewer.