1. 15 Feb, 2013 6 commits
  2. 14 Feb, 2013 15 commits
  3. 13 Feb, 2013 19 commits
    • re PR libstdc++/56111 ({float,double,long double} complex not accepted anymore) · 1c259e8b
      2013-02-13  Marc Glisse  <marc.glisse@inria.fr>
      
      	PR libstdc++/56111
      	* include/std/complex (complex): Undefine.
      	* include/c_compatibility/complex.h (complex): Only undefine if
      	<complex> has been included.
      	* testsuite/26_numerics/complex/56111.cc: New testcase.
      
      From-SVN: r196034
      Marc Glisse committed
    • mv12-aux.C: Delete, move to mv12-aux.cc. · 9e3a83c1
      2013-02-13  Sriraman Tallam  <tmsriram@google.com>
      
      	* g++.dg/ext/mv12-aux.C: Delete, move to mv12-aux.cc.
      	* g++.dg/ext/mv12-aux.cc: New file.
      	* g++.dg/ext/mv12.h: Remove directives. Fix comment.
      	* g++.dg/ext/mv12.C: Fix file name.
      
      From-SVN: r196033
      Sriraman Tallam committed
    • hashtable_policy.h (_Hash_code_base): Restore default constructor protected. · d9a3647a
      2013-02-13  François Dumont  <fdumont@gcc.gnu.org>
      
      	* include/bits/hashtable_policy.h (_Hash_code_base): Restore
      	default constructor protected.
      	* include/bits/hashtable.h: static assert that _Hash_code_base has
      	a default constructor available through inheritance.
      
      From-SVN: r196030
      François Dumont committed
    • asan.c (create_cond_insert_point): Add create_then_fallthru_edge argument. · c4bfe8bf
      	* asan.c (create_cond_insert_point): Add create_then_fallthru_edge
      	argument.  If it is false, don't create edge from then_bb to
      	fallthru_bb.
      	(insert_if_then_before_iter): Pass true to it.
      	(build_check_stmt): Pass false to it.
      	(transform_statements): Flush hash table only on extended basic
      	block boundaries, rather than at the beginning of every bb.
      	Don't flush hash table on nonfreeing_call_p calls.
      	* tree-flow.h (nonfreeing_call_p): New prototype.
      	* tree-ssa-phiopt.c (nonfreeing_call_p): No longer static.
      
      From-SVN: r196029
      Jakub Jelinek committed
    • We should not strip subregs of non-scalars during shift expansion. · 7afe2801
      	* expmed.c (expand_shift_1): Only strip scalar integer subregs.
      
      From-SVN: r196027
      David S. Miller committed
    • Make sure mv12-aux.C has same directives as mv12.C. · 8a04a774
      Make sure mv12-aux.C has same directives as mv12.C. mv12-aux.C should not
      compile for non-x86 targets.
      
      2013-02-13  Sriraman Tallam  <tmsriram@google.com>
      
      	* g++.dg/ext/mv12-aux.C: Add directives to match mv12.C.
      
      From-SVN: r196026
      Sriraman Tallam committed
    • re PR c++/55710 ([C++11] Linkage errors with lambdas) · 43c2d791
      	PR c++/55710
      	* semantics.c (maybe_add_lambda_conv_op): Mark static thunk
      	TREE_USED.
      
      From-SVN: r196025
      Jason Merrill committed
    • re PR c++/55879 ([C++11] nested constexpr Initialisation raises internal compiler error) · 70fc7c6c
      	PR c++/55879
      	* semantics.c (cxx_bind_parameters_in_call): Undo DECL_BY_REFERENCE.
      
      From-SVN: r196024
      Jason Merrill committed
    • re PR c++/55993 ([C++11] derived-to-base conversion fails in constant expression) · 58b922f8
      	PR c++/55993
      	* semantics.c (cxx_fold_indirect_ref): Handle empty bases at
      	non-zero offsets, too.
      
      From-SVN: r196023
      Jason Merrill committed
    • re PR c++/56155 ([C++11] enumeration with fixed underlying type - enumerators… · d0d9cf0e
      re PR c++/56155 ([C++11] enumeration with fixed underlying type - enumerators have wrong type within enumerator-list)
      
      	PR c++/56155
      	* decl.c (build_enumerator): Always convert the value to a
      	fixed underlying type.
      
      From-SVN: r196022
      Jason Merrill committed
    • re PR c++/56135 ([c++11] this incorrectly captured as null in template member function) · 78a2ea41
      	PR c++/56135
      	* pt.c (tsubst_copy_and_build): Don't forget any new
      	captures that arose from use of dependent names.
      
      From-SVN: r196021
      Jason Merrill committed
    • re PR target/56184 (Internal compiler error in push_reload during bootstrap stage 2) · 70cc3288
      2013-02-13  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR target/56184
      	* ira.c (max_regno_before_ira): Move from ...
      	(ira): ... here.
      	(fix_reg_equiv_init): Use max_regno_before_ira instead of
      	vec_safe_length.
      
      2013-02-13  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR target/56184
      	* gcc.target/arm/pr56184.C: New test.
      
      From-SVN: r196019
      Vladimir Makarov committed
    • re PR c++/56302 (sys/sdt.h asms stopped working at -O0) · 6760071f
      	PR c++/56302
      	* semantics.c (finish_asm_stmt): If input constraints allow
      	neither register nor memory, try maybe_constant_value to get
      	a constant if possible.
      
      	* g++.dg/torture/pr56302.C: New test.
      	* g++.dg/cpp0x/constexpr-56302.C: New test.
      	* c-c++-common/pr56302.c: New test.
      
      From-SVN: r196018
      Jakub Jelinek committed
    • i386.c (ix86_asan_shadow_offset): Revert last change. · 6422242b
      	* config/i386/i386.c (ix86_asan_shadow_offset): Revert last change.
      
      	* asan/asan_mapping.h (SHADOW_OFFSET): Set to (1ULL << 44) on x86-64.
      
      From-SVN: r196017
      Jakub Jelinek committed
    • re PR lto/56295 (Missed optimization with LTO) · 976a81ee
      2013-02-13  Richard Biener  <rguenther@suse.de>
      
      	PR lto/56295
      	* gimple-streamer-out.c (output_gimple_stmt): Undo wrapping
      	globals in MEM_REFs.
      
      From-SVN: r196013
      Richard Biener committed
    • 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