Changeset d3e4d6c for src/Common
- Timestamp:
- Aug 23, 2017, 6:22:07 PM (8 years ago)
- 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:
- 87e08e24, cb811ac
- Parents:
- 9f07232 (diff), bd37119 (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. - Location:
- src/Common
- Files:
-
- 3 edited
-
PassVisitor.h (modified) (2 diffs)
-
PassVisitor.impl.h (modified) (2 diffs)
-
utility.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/PassVisitor.h
r9f07232 rd3e4d6c 116 116 virtual void visit( PointerType *pointerType ) override final; 117 117 virtual void visit( ArrayType *arrayType ) override final; 118 virtual void visit( ReferenceType *referenceType ) override final; 118 119 virtual void visit( FunctionType *functionType ) override final; 119 120 virtual void visit( StructInstType *aggregateUseType ) override final; … … 202 203 virtual Type* mutate( PointerType *pointerType ) override final; 203 204 virtual Type* mutate( ArrayType *arrayType ) override final; 205 virtual Type* mutate( ReferenceType *referenceType ) override final; 204 206 virtual Type* mutate( FunctionType *functionType ) override final; 205 207 virtual Type* mutate( StructInstType *aggregateUseType ) override final; -
src/Common/PassVisitor.impl.h
r9f07232 rd3e4d6c 792 792 793 793 template< typename pass_type > 794 void PassVisitor< pass_type >::visit( ReferenceType * node ) { 795 VISIT_BODY( node ); 796 } 797 798 template< typename pass_type > 794 799 void PassVisitor< pass_type >::visit( FunctionType * node ) { 795 800 VISIT_BODY( node ); … … 1129 1134 1130 1135 template< typename pass_type > 1136 Type * PassVisitor< pass_type >::mutate( ReferenceType * node ) { 1137 MUTATE_BODY( Type, node ); 1138 } 1139 1140 template< typename pass_type > 1131 1141 Type * PassVisitor< pass_type >::mutate( FunctionType * node ) { 1132 1142 MUTATE_BODY( Type, node ); -
src/Common/utility.h
r9f07232 rd3e4d6c 310 310 template< typename T1, typename T2 > 311 311 struct group_iterate_t { 312 group_iterate_t( const T1 & v1, const T2 & v2 ) : args(v1, v2) {313 assertf( v1.size() == v2.size(), "group iteration requires containers of the same size.");312 group_iterate_t( bool skipBoundsCheck, const T1 & v1, const T2 & v2 ) : args(v1, v2) { 313 assertf(skipBoundsCheck || v1.size() == v2.size(), "group iteration requires containers of the same size: <%lu, %lu>.", v1.size(), v2.size()); 314 314 }; 315 315 … … 336 336 }; 337 337 338 /// performs bounds check to ensure that all arguments are of the same length. 338 339 template< typename... Args > 339 340 group_iterate_t<Args...> group_iterate( Args &&... args ) { 340 return group_iterate_t<Args...>(std::forward<Args>( args )...); 341 return group_iterate_t<Args...>(false, std::forward<Args>( args )...); 342 } 343 344 /// does not perform a bounds check - requires user to ensure that iteration terminates when appropriate. 345 template< typename... Args > 346 group_iterate_t<Args...> unsafe_group_iterate( Args &&... args ) { 347 return group_iterate_t<Args...>(true, std::forward<Args>( args )...); 341 348 } 342 349
Note:
See TracChangeset
for help on using the changeset viewer.