Changes in / [9802f4c:f2d1335]
- Files:
-
- 19 edited
-
Jenkinsfile_disabled (modified) (1 diff)
-
automake/missing (modified) (1 diff, 1 prop)
-
libcfa/src/bits/defs.hfa (modified) (1 diff)
-
libcfa/src/concurrency/invoke.h (modified) (2 diffs)
-
libcfa/src/concurrency/kernel.cfa (modified) (2 diffs)
-
libcfa/src/concurrency/kernel_private.hfa (modified) (1 diff)
-
src/AST/Convert.cpp (modified) (2 diffs)
-
src/AST/Expr.hpp (modified) (1 diff)
-
src/AST/Pass.impl.hpp (modified) (1 diff)
-
src/AST/Print.cpp (modified) (1 diff)
-
src/CodeGen/CodeGenerator.cc (modified) (1 diff)
-
src/Common/PassVisitor.impl.h (modified) (3 diffs)
-
src/Parser/parser.yy (modified) (1 diff)
-
src/ResolvExpr/Resolver.cc (modified) (2 diffs)
-
src/SynTree/Expression.cc (modified) (1 diff)
-
src/SynTree/Expression.h (modified) (1 diff)
-
src/main.cc (modified) (1 diff)
-
tests/.expect/gccExtensions.x64.txt (modified) (1 diff)
-
tests/.expect/gccExtensions.x86.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
Jenkinsfile_disabled
r9802f4c rf2d1335 102 102 103 103 echo GitLogMessage() 104 105 // This is a complete hack but it solves problems with automake thinking it needs to regenerate makefiles106 // We fudged automake/missing to handle that but automake stills bakes prints inside the makefiles107 // and these cause more problems.108 sh 'find . -name Makefile.in -exec touch {} +'109 104 } 110 105 } -
automake/missing
-
Property mode
changed from
120000to100644
r9802f4c rf2d1335 1 /usr/share/automake-1.15/missing 1 #! /bin/sh 2 # Tdelisle : having the Makefiles.in automatically regenerated causes problems 3 # when using multiple versions of automake, even if only on end user machines 4 # therefore I am disabling that feature by commenting this script 5 exit 0 -
Property mode
changed from
-
libcfa/src/bits/defs.hfa
r9802f4c rf2d1335 47 47 #define OPTIONAL_THREAD __attribute__((weak)) 48 48 #endif 49 50 static inline long long rdtscl(void) {51 unsigned int lo, hi;52 __asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));53 return ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );54 } -
libcfa/src/concurrency/invoke.h
r9802f4c rf2d1335 46 46 #ifdef __cforall 47 47 extern "Cforall" { 48 extern __attribute__((aligned(128)))thread_local struct KernelThreadData {48 extern thread_local struct KernelThreadData { 49 49 struct thread_desc * volatile this_thread; 50 50 struct processor * volatile this_processor; … … 55 55 volatile bool in_progress; 56 56 } preemption_state; 57 58 uint32_t rand_seed;59 57 } kernelTLS __attribute__ ((tls_model ( "initial-exec" ))); 60 58 } -
libcfa/src/concurrency/kernel.cfa
r9802f4c rf2d1335 133 133 NULL, 134 134 NULL, 135 { 1, false, false }, 136 6u //this should be seeded better but due to a bug calling rdtsc doesn't work 135 { 1, false, false } 137 136 }; 138 137 … … 261 260 //Main of the processor contexts 262 261 void main(processorCtx_t & runner) { 263 // Because of a bug, we couldn't initialized the seed on construction264 // Do it here265 kernelTLS.rand_seed ^= rdtscl();266 267 262 processor * this = runner.proc; 268 263 verify(this); -
libcfa/src/concurrency/kernel_private.hfa
r9802f4c rf2d1335 101 101 #define KERNEL_STORAGE(T,X) static char storage_##X[sizeof(T)] 102 102 103 static inline uint32_t tls_rand() {104 kernelTLS.rand_seed ^= kernelTLS.rand_seed << 6;105 kernelTLS.rand_seed ^= kernelTLS.rand_seed >> 21;106 kernelTLS.rand_seed ^= kernelTLS.rand_seed << 7;107 return kernelTLS.rand_seed;108 }109 110 103 111 104 void doregister( struct cluster & cltr ); -
src/AST/Convert.cpp
r9802f4c rf2d1335 898 898 auto expr = visitBaseExpr( node, 899 899 new AsmExpr( 900 new std::string(node->inout),900 get<Expression>().accept1(node->inout), 901 901 get<Expression>().accept1(node->constraint), 902 902 get<Expression>().accept1(node->operand) … … 2270 2270 new ast::AsmExpr( 2271 2271 old->location, 2272 old->inout,2272 GET_ACCEPT_1(inout, Expr), 2273 2273 GET_ACCEPT_1(constraint, Expr), 2274 2274 GET_ACCEPT_1(operand, Expr) -
src/AST/Expr.hpp
r9802f4c rf2d1335 583 583 class AsmExpr final : public Expr { 584 584 public: 585 std::stringinout;585 ptr<Expr> inout; 586 586 ptr<Expr> constraint; 587 587 ptr<Expr> operand; 588 588 589 AsmExpr( const CodeLocation & loc, const std::string &io, const Expr * con, const Expr * op )589 AsmExpr( const CodeLocation & loc, const Expr * io, const Expr * con, const Expr * op ) 590 590 : Expr( loc ), inout( io ), constraint( con ), operand( op ) {} 591 591 -
src/AST/Pass.impl.hpp
r9802f4c rf2d1335 1315 1315 maybe_accept( node, &AsmExpr::result ); 1316 1316 } 1317 maybe_accept( node, &AsmExpr::inout ); 1317 1318 maybe_accept( node, &AsmExpr::constraint ); 1318 1319 maybe_accept( node, &AsmExpr::operand ); -
src/AST/Print.cpp
r9802f4c rf2d1335 1011 1011 os << "Asm Expression:" << endl; 1012 1012 ++indent; 1013 if ( !node->inout.empty() ) os << "[" << node->inout << "] ";1013 if ( node->inout ) node->inout->accept( *this ); 1014 1014 if ( node->constraint ) node->constraint->accept( *this ); 1015 1015 if ( node->operand ) node->operand->accept( *this ); -
src/CodeGen/CodeGenerator.cc
r9802f4c rf2d1335 786 786 787 787 void CodeGenerator::postvisit( AsmExpr * asmExpr ) { 788 if ( !asmExpr->inout.empty() ) {788 if ( asmExpr->get_inout() ) { 789 789 output << "[ "; 790 output << asmExpr->inout;790 asmExpr->get_inout()->accept( *visitor ); 791 791 output << " ] "; 792 792 } // if 793 asmExpr-> constraint->accept( *visitor );793 asmExpr->get_constraint()->accept( *visitor ); 794 794 output << " ( "; 795 asmExpr-> operand->accept( *visitor );795 asmExpr->get_operand()->accept( *visitor ); 796 796 output << " )"; 797 797 } -
src/Common/PassVisitor.impl.h
r9802f4c rf2d1335 2452 2452 2453 2453 indexerScopedAccept( node->result , *this ); 2454 maybeAccept_impl ( node->inout , *this ); 2454 2455 maybeAccept_impl ( node->constraint, *this ); 2455 2456 maybeAccept_impl ( node->operand , *this ); … … 2463 2464 2464 2465 indexerScopedAccept( node->result , *this ); 2466 maybeAccept_impl ( node->inout , *this ); 2465 2467 maybeAccept_impl ( node->constraint, *this ); 2466 2468 maybeAccept_impl ( node->operand , *this ); … … 2475 2477 indexerScopedMutate( node->env , *this ); 2476 2478 indexerScopedMutate( node->result , *this ); 2479 maybeMutate_impl ( node->inout , *this ); 2477 2480 maybeMutate_impl ( node->constraint, *this ); 2478 2481 maybeMutate_impl ( node->operand , *this ); -
src/Parser/parser.yy
r9802f4c rf2d1335 1423 1423 asm_operand: // GCC 1424 1424 string_literal '(' constant_expression ')' 1425 { $$ = new ExpressionNode( new AsmExpr( nullptr, $1, maybeMoveBuild< Expression >( $3 ) ) ); }1426 | '[' IDENTIFIER']' string_literal '(' constant_expression ')'1427 { $$ = new ExpressionNode( new AsmExpr( $2, $4, maybeMoveBuild< Expression >( $6 ) ) ); }1425 { $$ = new ExpressionNode( new AsmExpr( maybeMoveBuild< Expression >( (ExpressionNode *)nullptr ), $1, maybeMoveBuild< Expression >( $3 ) ) ); } 1426 | '[' constant_expression ']' string_literal '(' constant_expression ')' 1427 { $$ = new ExpressionNode( new AsmExpr( maybeMoveBuild< Expression >( $2 ), $4, maybeMoveBuild< Expression >( $6 ) ) ); } 1428 1428 ; 1429 1429 -
src/ResolvExpr/Resolver.cc
r9802f4c rf2d1335 485 485 visit_children = false; 486 486 findVoidExpression( asmExpr->operand, indexer ); 487 if ( asmExpr->get_inout() ) { 488 findVoidExpression( asmExpr->inout, indexer ); 489 } // if 487 490 } 488 491 … … 1362 1365 asmExpr = ast::mutate_field( 1363 1366 asmExpr, &ast::AsmExpr::operand, findVoidExpression( asmExpr->operand, symtab ) ); 1367 1368 if ( asmExpr->inout ) { 1369 asmExpr = ast::mutate_field( 1370 asmExpr, &ast::AsmExpr::inout, findVoidExpression( asmExpr->inout, symtab ) ); 1371 } 1364 1372 1365 1373 return asmExpr; -
src/SynTree/Expression.cc
r9802f4c rf2d1335 527 527 } 528 528 529 AsmExpr::AsmExpr( const AsmExpr & other ) : Expression( other ), inout( other.inout), constraint( maybeClone( other.constraint ) ), operand( maybeClone( other.operand ) ) {}529 AsmExpr::AsmExpr( const AsmExpr & other ) : Expression( other ), inout( maybeClone( other.inout ) ), constraint( maybeClone( other.constraint ) ), operand( maybeClone( other.operand ) ) {} 530 530 531 531 532 532 void AsmExpr::print( std::ostream & os, Indenter indent ) const { 533 533 os << "Asm Expression: " << std::endl; 534 if ( !inout.empty() ) os << "[" << inout << "] ";534 if ( inout ) inout->print( os, indent+1 ); 535 535 if ( constraint ) constraint->print( os, indent+1 ); 536 536 if ( operand ) operand->print( os, indent+1 ); -
src/SynTree/Expression.h
r9802f4c rf2d1335 575 575 class AsmExpr : public Expression { 576 576 public: 577 std::stringinout;577 Expression * inout; 578 578 Expression * constraint; 579 579 Expression * operand; 580 580 581 AsmExpr( const std::string * _inout, Expression * constraint, Expression * operand ) : inout( _inout ? *_inout : "" ), constraint( constraint ), operand( operand ) { delete _inout;}581 AsmExpr( Expression * inout, Expression * constraint, Expression * operand ) : inout( inout ), constraint( constraint ), operand( operand ) {} 582 582 AsmExpr( const AsmExpr & other ); 583 virtual ~AsmExpr() { delete constraint; delete operand; }; 583 virtual ~AsmExpr() { delete inout; delete constraint; delete operand; }; 584 585 Expression * get_inout() const { return inout; } 586 void set_inout( Expression * newValue ) { inout = newValue; } 587 588 Expression * get_constraint() const { return constraint; } 589 void set_constraint( Expression * newValue ) { constraint = newValue; } 590 591 Expression * get_operand() const { return operand; } 592 void set_operand( Expression * newValue ) { operand = newValue; } 584 593 585 594 virtual AsmExpr * clone() const override { return new AsmExpr( * this ); } -
src/main.cc
r9802f4c rf2d1335 414 414 415 415 416 static const char optstring[] = ":hlLmNnpP:S:t gwW:D:";416 static const char optstring[] = ":hlLmNnpP:S:twW:D:"; 417 417 418 418 enum { PreludeDir = 128 }; -
tests/.expect/gccExtensions.x64.txt
r9802f4c rf2d1335 12 12 asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=" "r" ( _X3dsti_2 ) : : ); 13 13 asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ) : "r" ( _X3srci_2 ) : ); 14 asm ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ), "=r" ( _X3srci_2 ) : [ src] "r" ( _X3dsti_2 ) : "r0" );14 asm ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ), "=r" ( _X3srci_2 ) : [ _X3srci_2 ] "r" ( _X3dsti_2 ) : "r0" ); 15 15 L2: L1: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" : : "r" ( _X3srci_2 ), "r" ( (&_X3dsti_2) ) : "r5", "memory" : L1, L2 ); 16 16 double _Complex _X2c1Cd_2; -
tests/.expect/gccExtensions.x86.txt
r9802f4c rf2d1335 12 12 asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=" "r" ( _X3dsti_2 ) : : ); 13 13 asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ) : "r" ( _X3srci_2 ) : ); 14 asm ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ), "=r" ( _X3srci_2 ) : [ src] "r" ( _X3dsti_2 ) : "r0" );14 asm ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ), "=r" ( _X3srci_2 ) : [ _X3srci_2 ] "r" ( _X3dsti_2 ) : "r0" ); 15 15 L2: L1: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" : : "r" ( _X3srci_2 ), "r" ( (&_X3dsti_2) ) : "r5", "memory" : L1, L2 ); 16 16 double _Complex _X2c1Cd_2;
Note:
See TracChangeset
for help on using the changeset viewer.