1. 13 Feb, 2013 9 commits
    • re PR fortran/56204 (gfortran.dg/quad_[23].f90 FAIL on Solaris 9/x86) · 6c8064fb
      2013-02-13  Tobias Burnus  <burnus@net-b.de>
                  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
      
              PR fortran/56204
              * gfortran.dg/quad_2.f90: Use "< epsilon" instead of "==".
              * gfortran.dg/quad_3.f90: Ditto.
      
      From-SVN: r196011
      Tobias Burnus committed
    • loop-init.c (loop_optimizer_init): Clear loop state when re-initializing preserved loops. · c1874a87
      2013-02-13  Richard Biener  <rguenther@suse.de>
      
      	* loop-init.c (loop_optimizer_init): Clear loop state when
      	re-initializing preserved loops.
      	* loop-unswitch.c (unswitch_single_loop): Return whether
      	we unswitched the loop.  Do not verify loop state here.
      	(unswitch_loops): When we unswitched a loop discover new
      	loops.
      
      From-SVN: r196010
      Richard Biener committed
    • libsanitizer merge from upstream r175049 · b4ab7d34
      From-SVN: r196009
      Kostya Serebryany committed
    • [asan] Avoid instrumenting duplicated memory access in the same basic block · bdcbe80c
      Like what Address Sanitizer does in LLVM, this patch avoids instrumented
      duplicated memory accesses in the same basic blocks.
      
      The approach taken is very conservative, to keep the pass simple, for
      a start.
      
      A memory access is considered to be a pair made of an expression tree
      representing the beginning of the memory region that is accessed and
      a the size of the access, in byte.  For now that size is either 1, 2,
      4, 8 or 16 bytes.
      
      The patch builds a hash table of the memory accesses that have been
      instrumented in the current basic block.  Then it walks the gimple
      statements of the current basic block.  For each statement, it tests
      if the memory regions it references have already been instrumented.
      If not, the statement is instrumented and each memory references that
      are actually instrumented are added to the hash table.  When a memory
      region is accessed (usually through builtin functions like memset),
      then what gets added to the hash table is actually two memory
      accesses: one for the beginning of the region, and the other for the
      its end.
      
      When the patch crosses a function call that is not a built-in function
      that we ought to instrument, the hash table is cleared, because that
      function call can possibly e.g free some memory that was instrumented.
      
      Likewise, when a new basic block is visited, the hash table is
      cleared.  I guess we could be smarter than just unconditionally
      clearing the hash table in this later case, but this is what asan@llvm
      does, and for now, I thought starting in a conservative manner might
      have some value.
      
      The hash table is destroyed at the end of the pass.
      
      Bootstrapped and tested against trunk on x86-64-unknown-linux-gnu.
      
      gcc/
      	* Makefile.in (asan.o): Add new dependency on hash-table.h
      	* asan.c (struct asan_mem_ref, struct mem_ref_hasher): New types.
      	(asan_mem_ref_init, asan_mem_ref_get_end, get_mem_ref_hash_table)
      	(has_stmt_been_instrumented_p, empty_mem_ref_hash_table)
      	(free_mem_ref_resources, has_mem_ref_been_instrumented)
      	(has_stmt_been_instrumented_p, update_mem_ref_hash_table)
      	(get_mem_ref_of_assignment): New functions.
      	(get_mem_refs_of_builtin_call): Extract from
      	instrument_builtin_call and tweak a little bit to make it fit with
      	the new signature.
      	(instrument_builtin_call): Use the new
      	get_mem_refs_of_builtin_call.  Use gimple_call_builtin_p instead
      	of is_gimple_builtin_call.
      	(instrument_derefs, instrument_mem_region_access): Insert the
      	instrumented memory reference into the hash table.
      	(maybe_instrument_assignment): Renamed instrument_assignment into
      	this, and change it to advance the iterator when instrumentation
      	actually happened and return true in that case.  This makes it
      	homogeneous with maybe_instrument_assignment, and thus give a
      	chance to callers to be more 'regular'.
      	(transform_statements): Clear the memory reference hash table
      	whenever we enter a new BB, when we cross a function call, or when
      	we are done transforming statements.  Use
      	maybe_instrument_assignment instead of instrumentation.  No more
      	need to special case maybe_instrument_assignment and advance the
      	iterator after calling it; it's now handled just like
      	maybe_instrument_call.  Update comment.
      
      gcc/testsuite/
      
      	* c-c++-common/asan/no-redundant-instrumentation-1.c: New test.
      	* testsuite/c-c++-common/asan/no-redundant-instrumentation-2.c: Likewise.
      	* testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c: Likewise.
      	* testsuite/c-c++-common/asan/inc.c: Likewise.
      
      From-SVN: r196008
      Dodji Seketeli committed
    • Fix typo in ChangeLog · a50bd22d
      From-SVN: r196005
      Kai Tietz committed
    • re PR target/52122 (incorrect ln -s replacement for mingw like targets in configure files) · b97ffdc9
      PR target/52122
      * Makefile.in (LN_S_RECUSIVE): New.
      (adainclude, adalib): Use LN_S_RECURSIVE for copy.
      
      From-SVN: r196002
      Kai Tietz committed
    • Revert rev. 195980 · c345d4f1
      From-SVN: r196001
      Kai Tietz committed
    • mn10300.c (mn10300_scan_for_setlb_lcc): Fix loop discovery code. · 4861a1f7
      2013-02-13  Richard Biener  <rguenther@suse.de>
      
      	* config/mn10300/mn10300.c (mn10300_scan_for_setlb_lcc):
      	Fix loop discovery code.
      
      From-SVN: r195998
      Richard Biener committed
    • Daily bump. · b9526fa5
      From-SVN: r195995
      GCC Administrator committed
  2. 12 Feb, 2013 20 commits
  3. 11 Feb, 2013 11 commits