platform/upstream/gcc.git
11 years agoasan.c (report_error_func): Set DECL_IGNORED_P, don't touch DECL_ASSEMBLER_NAME.
Jakub Jelinek [Thu, 15 Nov 2012 13:12:36 +0000 (14:12 +0100)]
asan.c (report_error_func): Set DECL_IGNORED_P, don't touch DECL_ASSEMBLER_NAME.

* asan.c (report_error_func): Set DECL_IGNORED_P, don't touch
DECL_ASSEMBLER_NAME.
(asan_init_func): Likewise.
(asan_finish_file): Use void * instead of __asan_global * as
type of __asan_{,un}register_globals.  Set DECL_IGNORED_P on
the decls.

From-SVN: r193532

11 years agoAdd myself as asan co-reviewer
Dodji Seketeli [Thu, 15 Nov 2012 12:36:50 +0000 (12:36 +0000)]
Add myself as asan co-reviewer

ChangeLog:

* MAINTAINERS: (asan.c, related): Add myself.

From-SVN: r193530

11 years agoMakefile.in (if_multiarch): Don't use a GNU make 3.81 feature.
Matthias Klose [Thu, 15 Nov 2012 11:58:42 +0000 (11:58 +0000)]
Makefile.in (if_multiarch): Don't use a GNU make 3.81 feature.

2012-11-15  Matthias Klose  <doko@ubuntu.com>

        * Makefile.in (if_multiarch): Don't use a GNU make 3.81 feature.

From-SVN: r193529

11 years agotests
Jason Merrill [Thu, 15 Nov 2012 01:54:00 +0000 (20:54 -0500)]
tests

From-SVN: r193527

11 years agore PR c++/37276 (Trouble with some (C99?) math builtins and namespace std)
Jason Merrill [Thu, 15 Nov 2012 01:53:48 +0000 (20:53 -0500)]
re PR c++/37276 (Trouble with some (C99?) math builtins and namespace std)

PR c++/37276
* decl.c (decls_match): Remove #ifdef around earlier fix.

From-SVN: r193526

11 years agoclass.c (finish_struct_1): Check virtual functions for missing ABI tags.
Jason Merrill [Thu, 15 Nov 2012 01:53:37 +0000 (20:53 -0500)]
class.c (finish_struct_1): Check virtual functions for missing ABI tags.

* class.c (finish_struct_1): Check virtual functions
for missing ABI tags.

From-SVN: r193525

11 years agore PR c++/55275 (abi_tag attribute doesn't work on explicit specializations of class...
Jason Merrill [Thu, 15 Nov 2012 01:53:23 +0000 (20:53 -0500)]
re PR c++/55275 (abi_tag attribute doesn't work on explicit specializations of class templates)

PR c++/55275
* pt.c (maybe_process_partial_specialization): Update
DECL_SOURCE_LOCATION for new specializations.

From-SVN: r193524

11 years agore PR libstdc++/53841 ([C++11] condition_variable::wait_until() fails with high resol...
Jonathan Wakely [Thu, 15 Nov 2012 01:38:17 +0000 (01:38 +0000)]
re PR libstdc++/53841 ([C++11] condition_variable::wait_until() fails with high resolution clocks)

PR libstdc++/53841
* include/std/condition_variable (condition_variable::wait_until):
Handle clocks with higher resolution than __clock_t.
(condition_variable::__wait_until_impl): Remove unnecessary _Clock
parameter.
* testsuite/30_threads/condition_variable/members/53841.cc: New.

From-SVN: r193523

11 years agore PR bootstrap/55051 (profiledbootstrap failed)
Jan Hubicka [Thu, 15 Nov 2012 01:07:01 +0000 (02:07 +0100)]
re PR bootstrap/55051 (profiledbootstrap failed)

PR bootstrap/55051
* gcov-io.c (gcov_read_summary): Fix array bound check.

From-SVN: r193522

11 years agoConsider *-*-nacl* targets ELF
Roland McGrath [Thu, 15 Nov 2012 00:38:07 +0000 (00:38 +0000)]
Consider *-*-nacl* targets ELF

* configure.ac (ENABLE_GOLD): Consider *-*-nacl* targets ELF.
* configure: Regenerate.

From-SVN: r193521

11 years agoDaily bump.
GCC Administrator [Thu, 15 Nov 2012 00:18:38 +0000 (00:18 +0000)]
Daily bump.

From-SVN: r193519

11 years agoAdd support for multilib run-time libraries
H.J. Lu [Thu, 15 Nov 2012 00:03:37 +0000 (00:03 +0000)]
Add support for multilib run-time libraries

PR other/55291
* configure.ac (--enable-version-specific-runtime-libs): New option.
(AC_CANONICAL_SYSTEM): New.
(AM_ENABLE_MULTILIB): Moved right after AM_INIT_AUTOMAKE.
(toolexecdir): Support multilib.
(toolexeclibdir): Likewise.
(multilib_arg): New.
* Makefile.in: Regenerated.
* aclocal.m4: Likewise.
* configure: Likewise.
* asan/Makefile.in: Likewise.
* interception/Makefile.in: Likewise.
* sanitizer_common/Makefile.in: Likewise.

From-SVN: r193516

11 years agore PR debug/55328 (ICE: in output_addr_table_entry, at dwarf2out.c:21780 with -gsplit...
Sterling Augustine [Wed, 14 Nov 2012 23:36:50 +0000 (23:36 +0000)]
re PR debug/55328 (ICE: in output_addr_table_entry, at dwarf2out.c:21780 with -gsplit-dwarf)

2012-11-14  Sterling Augustine  <saugustine@google.com>

PR debug/55328
* dwarf2out.c (index_address_table_entry): Check a node's refcount.

From-SVN: r193515

11 years agore PR libstdc++/55320 (Invalid delete with throwing copy-c'tor passed to std::function)
Jonathan Wakely [Wed, 14 Nov 2012 23:33:01 +0000 (23:33 +0000)]
re PR libstdc++/55320 (Invalid delete with throwing copy-c'tor passed to std::function)

PR libstdc++/55320
* include/std/functional (function::function(F)): Set _M_manager after
operations that could throw.
(_Function_base::_Ref_manager::_M_init_functor): Use addressof.
* include/tr1/functional
(_Function_base::_Ref_manager::_M_init_functor): Use addressof.
(_Function_base::_Base_manager::_M_get_pointer): Likewise.
* testsuite/20_util/function/cons/55320.cc: New.
* testsuite/20_util/function/cons/addressof.cc: New.
* testsuite/20_util/function/cons/callable.cc: Remove header.
* testsuite/20_util/bind/ref_neg.cc: Adjust dg-error line numbers.
* testsuite/tr1/3_function_objects/function/10.cc: New.

From-SVN: r193514

11 years agobuiltins.c (define_builtin): Accept ECF flags and use set_call_expr_flags.
Jan Hubicka [Wed, 14 Nov 2012 23:14:05 +0000 (00:14 +0100)]
builtins.c (define_builtin): Accept ECF flags and use set_call_expr_flags.

* builtins.c (define_builtin): Accept ECF flags and
use set_call_expr_flags.
(initialize_builtins): Update.

From-SVN: r193513

11 years agore PR bootstrap/55051 (profiledbootstrap failed)
Jan Hubicka [Wed, 14 Nov 2012 23:03:22 +0000 (00:03 +0100)]
re PR bootstrap/55051 (profiledbootstrap failed)

PR bootstrap/55051
* ipa-inline.c (edge_badness): Improve dumping; fix overflow.

From-SVN: r193512

11 years agoasan-dg.exp: New file.
Jakub Jelinek [Wed, 14 Nov 2012 22:58:01 +0000 (23:58 +0100)]
asan-dg.exp: New file.

* lib/asan-dg.exp: New file.
* gcc.dg/asan/asan.exp: New file.
* g++.dg/dg.exp: Prune also asan tests.
* g++.dg/asan/asan.exp: New file.
* c-c++-common/asan/memcmp-1.c: New test.

From-SVN: r193511

11 years agot-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
Matthias Klose [Wed, 14 Nov 2012 22:45:25 +0000 (22:45 +0000)]
t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.

2012-11-14  Matthias Klose  <doko@ubuntu.com>

        * config/sparc/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
        * config/sparc/t-linux: New file; define MULTIARCH_DIRNAME.
        * config.gcc <sparc-*-linux*> (tmake_file): Include sparc/t-linux
        for 32bit non-biarch configurations.

From-SVN: r193510

11 years agoabi_tag.cc: Adjust expected demangling for 128bit long-double targets.
Uros Bizjak [Wed, 14 Nov 2012 22:23:51 +0000 (23:23 +0100)]
abi_tag.cc: Adjust expected demangling for 128bit long-double targets.

* testsuite/26_numerics/complex/abi_tag.cc: Adjust expected
demangling for 128bit long-double targets.

From-SVN: r193509

11 years agoinvoke.texi: Document -print-multiarch.
Matthias Klose [Wed, 14 Nov 2012 21:29:15 +0000 (21:29 +0000)]
invoke.texi: Document -print-multiarch.

2012-11-14  Matthias Klose  <doko@ubuntu.com>

        * doc/invoke.texi: Document -print-multiarch.
        * doc/install.texi: Document --enable-multiarch.
        * doc/fragments.texi: Document MULTILIB_OSDIRNAMES, MULTIARCH_DIRNAME.
        * configure.ac: Add --enable-multiarch option.
        * configure: Regenerate.
        * Makefile.in (s-mlib): Pass MULTIARCH_DIRNAME to genmultilib.
        enable_multiarch, with_float: New macros.
        if_multiarch: New macro, define in terms of enable_multiarch.
        * genmultilib: Add new argument for the multiarch name.
        * gcc.c (multiarch_dir): Define.
        (for_each_path): Search for multiarch suffixes.
        (driver_handle_option): Handle multiarch option.
        (do_spec_1): Pass -imultiarch if defined.
        (main): Print multiarch.
        (set_multilib_dir): Separate multilib and multiarch names
        from multilib_select.
        (print_multilib_info): Ignore multiarch names in multilib_select.
        * incpath.c (add_standard_paths): Search the multiarch include dirs.
        * cppdefault.h (default_include): Document multiarch in multilib
        member.
        * cppdefault.c: [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an
        include directory for multiarch directories.
        * common.opt: New options --print-multiarch and -imultilib.
        * config.gcc <i[34567]86-*-linux* | x86_64-*-linux*> (tmake_file):
        Include i386/t-linux.
        <i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu> (tmake_file):
        Include i386/t-kfreebsd.
        <i[34567]86-*-gnu*> (tmake_file): Include i386/t-gnu.
        * config/i386/t-linux64: Add multiarch names in
        MULTILIB_OSDIRNAMES, define MULTIARCH_DIRNAME.
        * config/i386/t-gnu: New file.
        * config/i386/t-kfreebsd: Likewise.
        * config/i386/t-linux: Likewise.

From-SVN: r193508

11 years agof95-lang.c (ATTR_NOTHROW_LEAF_MALLOC_LIST): New macro.
Jan Hubicka [Wed, 14 Nov 2012 21:09:58 +0000 (22:09 +0100)]
f95-lang.c (ATTR_NOTHROW_LEAF_MALLOC_LIST): New macro.

* f95-lang.c (ATTR_NOTHROW_LEAF_MALLOC_LIST): New macro.
(gfc_define_builtin): Use set_call_expr_flags.
(gfc_init_builtin_functions): Update.

From-SVN: r193507

11 years agotree.c (set_call_expr_flags): New function.
Jan Hubicka [Wed, 14 Nov 2012 21:08:52 +0000 (22:08 +0100)]
tree.c (set_call_expr_flags): New function.

* tree.c (set_call_expr_flags): New function.
(local_define_builtin): Use it.
* tree.h (set_call_expr_flags): Declare.

From-SVN: r193506

11 years agore PR c++/55323 (ICE in expand_aggr_init_1, at cp/init.c:1718)
Paolo Carlini [Wed, 14 Nov 2012 20:29:07 +0000 (20:29 +0000)]
re PR c++/55323 (ICE in expand_aggr_init_1, at cp/init.c:1718)

/cp
2012-11-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/55323
* init.c (emit_mem_initializers): Skip arguments == error_mark_node.

/testsuite
2012-11-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/55323
* g++.dg/cpp0x/vt-55323.C: New.

From-SVN: r193505

11 years agore PR c++/11750 (class scope using-declaration lookup not implemented)
Fabien Chêne [Wed, 14 Nov 2012 20:12:47 +0000 (21:12 +0100)]
re PR c++/11750 (class scope using-declaration lookup not implemented)

gcc/testsuite/ChangeLog

2012-11-14  Fabien Chêne  <fabien@gcc.gnu.org>

PR c++/11750
* g++.dg/inherit/vitual9.C: New.

gcc/cp/ChangeLog

2012-11-14  Fabien Chêne  <fabien@gcc.gnu.org>

PR c++/11750
* call.c (build_new_method_call_1): Check that the instance type
and the function context are the same before setting the flag
LOOKUP_NONVIRTUAL.

From-SVN: r193504

11 years agore PR target/47440 (Use LCM for vzeroupper insertion)
Uros Bizjak [Wed, 14 Nov 2012 16:47:29 +0000 (17:47 +0100)]
re PR target/47440 (Use LCM for vzeroupper insertion)

PR target/47440
* config/i386/i386.c (gate_insert_vzeroupper): New function.
(rest_of_handle_insert_vzeroupper): Ditto.
(struct rtl_opt_pass pass_insert_vzeroupper): New.
(ix86_option_override): Register vzeroupper insertion pass here.
(ix86_check_avx256_register): Handle SUBREGs properly.
(ix86_init_machine_status): Remove optimize_mode_switching[AVX_U128]
initialization.

From-SVN: r193503

11 years agoconfigure.ac (HAVE_LD_LARGE_TOC): Add AIX test.
David Edelsohn [Wed, 14 Nov 2012 16:41:21 +0000 (11:41 -0500)]
configure.ac (HAVE_LD_LARGE_TOC): Add AIX test.

        * configure.ac (HAVE_LD_LARGE_TOC): Add AIX test.
        * configure: Regenerated.
        * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Warn if
        other toc options used with cmodel. Disable TARGET_NO_FP_IN_TOC
        and TARGET_NO_SUM_IN_TOC if not CMODEL_SMALL. CMODEL_MEDIUM means
        CMODEL_LARGE on AIX.
        (ASM_SPEC): -mvsx implies -mpwr6. Add -many.
        (ASM_DEFAULT_SPEC): Use -mpwr4.
        (TARGET_CMODEL): Define.
        (SET_CMODEL): Define.
        * config/rs6000/rs6000.md (largetoc_high_aix<mode>): New.
        (largetoc_high_plus_aix<mode>): New.
        (largetoc_low<mode>): Change to mode iterator. Test TARGET_TOC
        instead of TARGET_ELF.
        (tocref): Remove TARGET_ELF test.
        * config/rs6000/rs6000.c (output_toc): Use [TE] for large TOC
        symbols on AIX.
        * config/rs6000/aix64.opt (mcmodel): New.

From-SVN: r193502

11 years agoi386.c (ix86_get_function_versions_dispatcher): Guard variables with ASM_OUTPUT_TYPE_...
Andreas Tobler [Wed, 14 Nov 2012 15:55:50 +0000 (16:55 +0100)]
i386.c (ix86_get_function_versions_dispatcher): Guard variables with ASM_OUTPUT_TYPE_DIRECTIVE and HAVE_GNU_INDIRECT_FUNCTION...

2012-11-14  Andreas Tobler  <andreast@fgznet.ch>

* config/i386/i386.c (ix86_get_function_versions_dispatcher): Guard
variables with ASM_OUTPUT_TYPE_DIRECTIVE and
HAVE_GNU_INDIRECT_FUNCTION where needed.

From-SVN: r193501

11 years agoCheck __x86_64__ instead of __WORDSIZE
H.J. Lu [Wed, 14 Nov 2012 13:45:56 +0000 (13:45 +0000)]
Check __x86_64__ instead of __WORDSIZE

PR other/55292
Backport from upstream revision 167883
* sanitizer_common/sanitizer_linux.cc (internal_mmap): Check
__x86_64__ instead of __WORDSIZE.
(internal_filesize): Likwise.

From-SVN: r193500

11 years agoDon't set AC_CONFIG_AUX_DIR
H.J. Lu [Wed, 14 Nov 2012 12:21:28 +0000 (12:21 +0000)]
Don't set AC_CONFIG_AUX_DIR

* configure.ac (AC_CONFIG_AUX_DIR): Removed.
* Makefile.in: Regenerated.
* configure: Likewise.

From-SVN: r193499

11 years agoRename libsanitizer/ChangeLog.asan to libsanitizer/ChangeLog
H.J. Lu [Wed, 14 Nov 2012 11:41:10 +0000 (03:41 -0800)]
Rename libsanitizer/ChangeLog.asan to libsanitizer/ChangeLog

From-SVN: r193498

11 years agoUpdate libsanitizer generated files
H.J. Lu [Wed, 14 Nov 2012 11:09:00 +0000 (11:09 +0000)]
Update libsanitizer generated files

* gcc_update: Update libsanitizer generated files.

From-SVN: r193497

11 years agoDaily bump.
GCC Administrator [Wed, 14 Nov 2012 00:18:21 +0000 (00:18 +0000)]
Daily bump.

From-SVN: r193494

11 years agoUpdate configure.ac for GCC tree and remove unused files
H.J. Lu [Wed, 14 Nov 2012 00:02:12 +0000 (00:02 +0000)]
Update configure.ac for GCC tree and remove unused files

PR other/55304
* acinclude.m4: New file.
* Makefile.am (ACLOCAL_AMFLAGS): New.
* configure.ac (AC_PREREQ): Set to 2.64.
(AC_CONFIG_AUX_DIR): Set to "..".
* Makefile.in: Regenerated.
* aclocal.m4: Likewise.
* configure: Likewise.
* asan/Makefile.in: Likewise.
* interception/Makefile.in: Likewise.
* sanitizer_common/Makefile.in: Likewise.

* config.guess: Removed.
* config.sub: Likewise.
* depcomp: Likewise.
* install-sh: Likewise.
* ltmain.sh: Likewise.
* missing: Likewise.

From-SVN: r193491

11 years agocommon.opt (fPIC, [...]): Create a Negative loop such that any of these options disab...
Ian Lance Taylor [Tue, 13 Nov 2012 23:03:56 +0000 (23:03 +0000)]
common.opt (fPIC, [...]): Create a Negative loop such that any of these options disables the others.

* common.opt (fPIC, fPIE, fpic, fpie): Create a Negative loop such
that any of these options disables the others.

From-SVN: r193489

11 years agoMove libsanitizer configure logic to subdirectory
Richard Henderson [Tue, 13 Nov 2012 22:19:44 +0000 (14:19 -0800)]
Move libsanitizer configure logic to subdirectory

From-SVN: r193487

11 years agocgraph.c (insert_new_cgraph_node_version): Use cgraph_get_node instead of cgraph_get_...
Sriraman Tallam [Tue, 13 Nov 2012 21:56:30 +0000 (21:56 +0000)]
cgraph.c (insert_new_cgraph_node_version): Use cgraph_get_node instead of cgraph_get_create_node.

2012-11-13  Sriraman Tallam  <tmsriram@google.com>

* cgraph.c (insert_new_cgraph_node_version): Use cgraph_get_node
instead of cgraph_get_create_node.
* config/i386/i386.c (ix86_get_function_versions_dispatcher): Move ifunc
not supported code to the end.

* class.c (mark_versions_used): Remove.
(resolve_address_of_overloaded_function): Call target hook
for versioned functions. Refactor to call
get_function_versions_dispatcher.
* decl.c (duplicate_decls): Add comments.
* cp/call.c (get_function_version_dispatcher): Expose function.
(mark_versions_used): Expose function.
* cp/cp-tree.h (mark_versions_used): New declaration.
(get_function_version_dispatcher): Ditto.

* testsuite/g++.dg/mv4.C: Add require ifunc. Change error message.
* testsuite/g++.dg/mv5.C: Add require ifunc.
* testsuite/g++.dg/mv6.C: Add require ifunc.

From-SVN: r193486

11 years agore PR other/55312 (libbacktrace doesn't honor --disable-werror)
Ian Lance Taylor [Tue, 13 Nov 2012 21:25:39 +0000 (21:25 +0000)]
re PR other/55312 (libbacktrace doesn't honor --disable-werror)

PR other/55312
* configure.ac: Only add -Werror if building a target library.

From-SVN: r193485

11 years agore PR tree-optimization/55253 (Revision 193298 miscompiles sqlite with -Os)
Martin Jambor [Tue, 13 Nov 2012 18:56:24 +0000 (19:56 +0100)]
re PR tree-optimization/55253 (Revision 193298 miscompiles sqlite with -Os)

2012-11-13  Martin Jambor  <mjambor@suse.cz>

PR tree-optimization/55253
* ipa-cp.c (merge_aggregate_lattices): Propagate aggs_contain_variable
flag.

* testsuite/gcc.dg/torture/pr55253.c: New test.
* testsuite/gcc.dg/torture/pr55305.c: Likewise.

From-SVN: r193484

11 years agoWorkaround PR middle-end/55142
H.J. Lu [Tue, 13 Nov 2012 18:35:32 +0000 (10:35 -0800)]
Workaround PR middle-end/55142

gcc/

2012-11-13  Eric Botcazou  <ebotcazou@adacore.com>
    H.J. Lu  <hongjiu.lu@intel.com>

PR middle-end/55142
* config/i386/i386.c (legitimize_pic_address): Properly handle
REG + CONST.
(ix86_print_operand_address): Set code to 'k' when forcing
addr32 prefix.  For x32, zero-extend negative displacement if
it < -16*1024*1024.

gcc/testsuite/

2012-11-13  H.J. Lu  <hongjiu.lu@intel.com>

PR middle-end/55142
* gcc.target/i386/pr55142-1.c: New file.
* gcc.target/i386/pr55142-2.c: Likewise.

From-SVN: r193483

11 years agomode-switching.c (create_pre_exit): Use NONDEBUG_INSN_P.
Uros Bizjak [Tue, 13 Nov 2012 17:22:04 +0000 (18:22 +0100)]
mode-switching.c (create_pre_exit): Use NONDEBUG_INSN_P.

* mode-switching.c (create_pre_exit): Use NONDEBUG_INSN_P.

From-SVN: r193482

11 years ago* ChangeLog: Fix my last entry.
Uros Bizjak [Tue, 13 Nov 2012 17:08:13 +0000 (18:08 +0100)]
* ChangeLog: Fix my last entry.

From-SVN: r193481

11 years agore PR target/41993 ([sh] ICE in create_pre_exit, at mode-switching.c:399)
Uros Bizjak [Tue, 13 Nov 2012 16:59:37 +0000 (17:59 +0100)]
re PR target/41993 ([sh] ICE in create_pre_exit, at mode-switching.c:399)

PR target/41993
* mode-switching.c (create_pre_exit): Set return_copy to last_insn
when copy_start is a function return regno instead of pseudo.
Skip debug instructions in instruction scan loop.

From-SVN: r193480

11 years agoPR c++/54466 - ICE with alias template which type-id is const qualified
Dodji Seketeli [Tue, 13 Nov 2012 16:07:39 +0000 (16:07 +0000)]
PR c++/54466 - ICE with alias template which type-id is const qualified

Consider this short example:

    template<typename T>
      struct X { };

    template<typename T>
      using Y = const X<T>;

    using Z = Y<int>;

G++ crashes in lookup_class_template_1 while trying to build the alias
template instantiation Y<int>.

I think this is indirectly due to the fact that that
lookup_class_template_1 can now yield a const qualified type like
'const X<T>'.

As a consequence, the code in lookup_template_class_1 that was trying
to access the TYPE_STUB_DECL field of the result of
lookup_template_class_1 should now be adjusted to access the
TYPE_STUB_DECL of the main variant of the resulting type instead (and
that is TYPE_MAIN_DECL); because qualified types (constructed with
build_qualified_type) have their TYPE_STUB_DECL set to NULL.

Fixed thus and tested on x86_64-unknown-linux-gnu against trunk.

gcc/cp

PR c++/54466
* pt.c (lookup_template_class_1): TYPE_STUB_DECL should be
accessed on the main variant of the type.

gcc/testsuite/

* g++.dg/cpp0x/alias-decl-26.C: New test file.

In the example of this patch, g++ crashes when trying to build the
alias template Y<int

From-SVN: r193479

11 years agoEnable libsanitizer just on x86 linux for now
Dodji Seketeli [Tue, 13 Nov 2012 15:12:12 +0000 (15:12 +0000)]
Enable libsanitizer just on x86 linux for now

This patch builds libsanitizer only on x86_64 and i?86 linux targets
for now.  I guess The build can be enabled on other targets when they
are ready.

ChangeLog:

* configure.ac: Enable libsanitizer just on x86 linux for now.
* configure: Re-generate.

From-SVN: r193478

11 years agoconfigure.ac: Disable libsanitizer on AIX.
David Edelsohn [Tue, 13 Nov 2012 14:19:14 +0000 (14:19 +0000)]
configure.ac: Disable libsanitizer on AIX.

        * configure.ac: Disable libsanitizer on AIX. Merge libquadmath
        sections.
        * configure: Regenerate.

From-SVN: r193477

11 years agoarm.c (arm_emit_coreregs_64bit_shift): Fix comment.
Andrew Stubbs [Tue, 13 Nov 2012 13:31:50 +0000 (13:31 +0000)]
arm.c (arm_emit_coreregs_64bit_shift): Fix comment.

2012-11-13  Andrew Stubbs  <ams@codesourcery.com>
            Ulrich Weigand  <ulrich.weigand@linaro.org>

* config/arm/arm.c (arm_emit_coreregs_64bit_shift): Fix comment.
* config/arm/arm.md (opt, opt_enabled): New attributes.
(enabled): Use opt_enabled.
(ashldi3, ashrdi3, lshrdi3): Add TARGET_NEON case.
(ashldi3): Allow general operands for TARGET_NEON case.
* config/arm/iterators.md (rshifts): New code iterator.
(shift, shifttype): New code attributes.
* config/arm/neon.md (UNSPEC_LOAD_COUNT): New unspec type.
(neon_load_count, ashldi3_neon_noclobber, ashldi3_neon,
signed_shift_di3_neon, unsigned_shift_di3_neon,
ashrdi3_neon_imm_noclobber, lshrdi3_neon_imm_noclobber,
<shift>di3_neon): New patterns.

Co-Authored-By: Ulrich Weigand <ulrich.weigand@linaro.org>
From-SVN: r193476

11 years agoEnable x32 check on more i386 tests
H.J. Lu [Tue, 13 Nov 2012 12:31:12 +0000 (12:31 +0000)]
Enable x32 check on more i386 tests

* gcc.target/i386/avx256-unaligned-load-2.c: Requre !ia32
instead of lp64.
* gcc.target/i386/avx256-unaligned-store-2.c: Likewise.
* gcc.target/i386/pr49715-2.c: Likewise.
* gcc.target/i386/retarg.c: Likewise.  Scan both %rdi and %edi.

From-SVN: r193475

11 years ago* Makefile.in (asan.o): Depend on $(TM_P_H).
Jakub Jelinek [Tue, 13 Nov 2012 07:38:25 +0000 (08:38 +0100)]
* Makefile.in (asan.o): Depend on $(TM_P_H).

From-SVN: r193472

11 years agore PR tree-optimization/55281 (ICE in build_int_cst_wide, at tree.c:1217 (with...
Jakub Jelinek [Tue, 13 Nov 2012 07:25:36 +0000 (08:25 +0100)]
re PR tree-optimization/55281 (ICE in  build_int_cst_wide, at tree.c:1217  (with Ofast, ok with O3))

PR tree-optimization/55281
* tree-vect-generic.c (expand_vector_condition): Accept any
is_gimple_val rather than just SSA_NAME if not COMPARISON_CLASS_P.
* fold-const.c (fold_ternary_loc): Fold VEC_COND_EXPR if arg0 is
either integer_all_onesp or integer_zerop.
* tree-vect-stmts.c (vectorizable_condition): Build the condition
using corresponding vector integer type instead of vectype.

* gcc.dg/vect/fast-math-pr55281.c: New test.
* g++.dg/opt/pr55281.C: New test.

From-SVN: r193471

11 years agore PR rtl-optimization/54127 (ICE in maybe_record_trace_start with asm goto, --target...
Jakub Jelinek [Tue, 13 Nov 2012 07:23:51 +0000 (08:23 +0100)]
re PR rtl-optimization/54127 (ICE in maybe_record_trace_start with asm goto, --target=powerpc-unknown-linux-gnu)

PR rtl-optimization/54127
* cfgrtl.c (force_nonfallthru_and_redirect): When redirecting
asm goto labels from BB_HEAD (e->dest) to target bb, decrement
LABEL_NUSES of BB_HEAD (e->dest) and increment LABEL_NUSES of
BB_HEAD (target) appropriately and adjust JUMP_LABEL and/or
REG_LABEL_TARGET and REG_LABEL_OPERAND.

* gcc.dg/torture/pr54127.c: New test.

From-SVN: r193470

11 years agoasan.c (instrument_builtin_call): Fix up dest assignment.
Jakub Jelinek [Tue, 13 Nov 2012 07:21:15 +0000 (08:21 +0100)]
asan.c (instrument_builtin_call): Fix up dest assignment.

* asan.c (instrument_builtin_call) <case BUILT_IN_BCOPY>: Fix up
dest assignment.

From-SVN: r193469

11 years agoGet sparc building again after ASAN merge.
David S. Miller [Tue, 13 Nov 2012 06:53:23 +0000 (06:53 +0000)]
Get sparc building again after ASAN merge.

libsanitizer/

* asan/asan_linux.cc (GetPcSpBp): Add sparc support.

From-SVN: r193468

11 years agore PR target/55257 (g++.dg/debug/dwarf2/non-virtual-thunk.C scan-assembler thunk...
Hans-Peter Nilsson [Tue, 13 Nov 2012 06:15:53 +0000 (06:15 +0000)]
re PR target/55257 (g++.dg/debug/dwarf2/non-virtual-thunk.C scan-assembler thunk.C:30)

PR target/55257
* config/cris/cris.c (cris_asm_output_mi_thunk): Call
final_start_function and final_end_function.

From-SVN: r193467

11 years ago* asan.c: Include tm_p.h
David Edelsohn [Tue, 13 Nov 2012 03:14:28 +0000 (03:14 +0000)]
* asan.c: Include tm_p.h

From-SVN: r193466

11 years agoconfigure.ac: Add section for configdirs for libsanitizer.
Hans-Peter Nilsson [Tue, 13 Nov 2012 01:36:17 +0000 (01:36 +0000)]
configure.ac: Add section for configdirs for libsanitizer.

* configure.ac: Add section for configdirs for libsanitizer.
Disable for cris-*-* and mmix-*-*.
* configure: Regenerate.

From-SVN: r193465

11 years agore PR target/55195 (shorten_branches generates incorrect forward branch distances)
John David Anglin [Tue, 13 Nov 2012 00:36:54 +0000 (00:36 +0000)]
re PR target/55195 (shorten_branches generates incorrect forward branch distances)

PR target/55195
* config/pa/pa.md (type): Add sibcall and sh_func_adrs insn types.
(in_branch_delay): Don't allow sibcall or sh_func_adrs insns.
(in_nullified_branch_delay): Likewise.
(in_call_delay): Likewise.
Define delay for sibcall insns.  Adjust Z3 and Z4 insn reservations for
new types.  Add opaque cond to mark all calls, sibcalls, dyncalls and
the $$sh_func_adrs call as variable.  Update type of sibcalls and
$$sh_func_adrs call.
* config/pa/pa.c (pa_adjust_insn_length): Revise to return updated
length instead of adjustment.  Handle negative and undefined call
adjustments for insn_default_length.  Remove adjustment for millicode
insn with unfilled delay slot.
(pa_output_millicode_call): Update for revised millicode length.
* config/pa/pa.h (ADJUST_INSN_LENGTH): Revise to set LENGTH.

From-SVN: r193464

11 years agoDaily bump.
GCC Administrator [Tue, 13 Nov 2012 00:18:29 +0000 (00:18 +0000)]
Daily bump.

From-SVN: r193463

11 years ago* tree-ssa-ccp.c (dump_lattice_value) <CONSTANT>: Fix duplication.
Eric Botcazou [Mon, 12 Nov 2012 23:32:56 +0000 (23:32 +0000)]
* tree-ssa-ccp.c (dump_lattice_value) <CONSTANT>: Fix duplication.

From-SVN: r193459

11 years agofuture (atomic_future): Remove declaration of non-standard name.
Jonathan Wakely [Mon, 12 Nov 2012 23:00:41 +0000 (23:00 +0000)]
future (atomic_future): Remove declaration of non-standard name.

* include/std/future (atomic_future): Remove declaration of
non-standard name.

From-SVN: r193457

11 years agocommon.opt (fvar-tracking-uninit): Document.
Eric Botcazou [Mon, 12 Nov 2012 22:59:37 +0000 (22:59 +0000)]
common.opt (fvar-tracking-uninit): Document.

* common.opt (fvar-tracking-uninit): Document.
* toplev.c (process_options): Fix handling of flag_var_tracking_uninit.
* config/darwin.c (darwin_override_options): Likewise.

From-SVN: r193456

11 years agosched-vis.c (print_pattern): Handle NULL patterns.
Steven Bosscher [Mon, 12 Nov 2012 22:13:20 +0000 (22:13 +0000)]
sched-vis.c (print_pattern): Handle NULL patterns.

* sched-vis.c (print_pattern): Handle NULL patterns.

From-SVN: r193455

11 years agoconfigure.ac: Check for getexecname.
Ian Lance Taylor [Mon, 12 Nov 2012 21:24:19 +0000 (21:24 +0000)]
configure.ac: Check for getexecname.

* configure.ac: Check for getexecname.
* fileline.c: #include <errno.h>.  Define getexecname if not
available.
(fileline_initialize): Try to find the executable in a few
different ways.
* print.c (error_callback): Only print the filename if it came
from the backtrace state.
* configure, config.h.in: Rebuild.

Co-Authored-By: Gerald Pfeifer <gerald@pfeifer.com>
Co-Authored-By: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
From-SVN: r193454

11 years agore PR rtl-optimization/51447 (global register variable definition incorrectly removed...
Steven Bosscher [Mon, 12 Nov 2012 20:21:59 +0000 (20:21 +0000)]
re PR rtl-optimization/51447 (global register variable definition incorrectly removed as dead code)

gcc/
PR rtl-optimization/51447
* df-scan.c (df_get_entry_block_def_set): Add global regs to the set.
* df-problems.c (df_lr_local_compute): Make global regs always live.
* dce.c (deletable_insn_p): Make insns setting a global reg
inherently necessary.

testsuite/
PR rtl-optimization/51447
* gcc.c-torture/execute/pr51447.c: New test.

From-SVN: r193453

11 years agoUse CSINC instead of CSEL to return 1 (AArch64)
Ian Bolton [Mon, 12 Nov 2012 19:39:46 +0000 (19:39 +0000)]
Use CSINC instead of CSEL to return 1 (AArch64)

From-SVN: r193452

11 years agoOptimise comparison where intermediate result not used (AArch64)
Ian Bolton [Mon, 12 Nov 2012 19:35:24 +0000 (19:35 +0000)]
Optimise comparison where intermediate result not used (AArch64)

From-SVN: r193450

11 years agosyscall: Force first letter of error message to lower case.
Ian Lance Taylor [Mon, 12 Nov 2012 19:34:52 +0000 (19:34 +0000)]
syscall: Force first letter of error message to lower case.

From-SVN: r193449

11 years agogcc_update: Add libquadmath generated files.
Tobias Burnus [Mon, 12 Nov 2012 19:26:53 +0000 (20:26 +0100)]
gcc_update: Add libquadmath generated files.

2012-11-12  Tobias Burnus  <burnus@net-b.de>

        * gcc_update: Add libquadmath generated files.

From-SVN: r193448

11 years agoAdd libsanitizer generated files
H.J. Lu [Mon, 12 Nov 2012 18:56:36 +0000 (18:56 +0000)]
Add libsanitizer generated files

* gcc_update: Add libsanitizer generated files.

From-SVN: r193447

11 years ago* include/std/complex (real, imag): Add ABI tag in C++11 mode.
Jason Merrill [Mon, 12 Nov 2012 17:51:26 +0000 (12:51 -0500)]
* include/std/complex (real, imag): Add ABI tag in C++11 mode.

From-SVN: r193445

11 years agoRemove ChangeLog.asan
Dodji Seketeli [Mon, 12 Nov 2012 16:46:03 +0000 (17:46 +0100)]
Remove ChangeLog.asan

* ChangeLog.asan: Remove this, as it got accidentally in from the
merging of the asan branch into trunk.

From-SVN: r193444

11 years agoinvoke.texi: Move -faddress-sanitizer from Optimization Options to Debugging Options.
Tobias Burnus [Mon, 12 Nov 2012 16:44:03 +0000 (17:44 +0100)]
invoke.texi: Move -faddress-sanitizer from Optimization Options to Debugging Options.

2012-11-12  Tobias Burnus  <burnus@net-b.de>

        * doc/invoke.texi: Move -faddress-sanitizer from Optimization
        Options to Debugging Options.

From-SVN: r193443

11 years ago* asan.c: Formatting cleanups.
Jakub Jelinek [Mon, 12 Nov 2012 16:18:59 +0000 (17:18 +0100)]
* asan.c: Formatting cleanups.

From-SVN: r193442

11 years agoImport the asan runtime library into GCC tree
Wei Mi [Mon, 12 Nov 2012 15:53:47 +0000 (15:53 +0000)]
Import the asan runtime library into GCC tree

This patch imports the runtime library in the GCC tree, ensures that
-lasan is passed to the linker when -faddress-sanitizer is used and
sets up the build system accordingly.

ChangeLog:

* configure.ac: Add libsanitizer to target_libraries.
* Makefile.def: Ditto.
* configure: Regenerate.
* Makefile.in: Regenerate.
* libsanitizer: New directory for asan runtime.  Contains an empty
tsan directory.

gcc/ChangeLog:

* gcc.c (LINK_COMMAND_SPEC): Add -laddress-sanitizer to link
command if -faddress-sanitizer is on.

libsanitizer:

Initial checkin: migrate asan runtime from llvm.

From-SVN: r193441

11 years agoInstrument built-in memory access function calls
Dodji Seketeli [Mon, 12 Nov 2012 15:53:25 +0000 (15:53 +0000)]
Instrument built-in memory access function calls

This patch instruments many memory access patterns through builtins.

Basically, for a call like:

     __builtin_memset (from, 0, n_bytes);

the patch would only instrument the accesses at the beginning and at
the end of the memory region [from, from + n_bytes].  This is the
strategy used by the llvm implementation of asan.

This instrumentation is done for all the memory access builtin
functions that expose a well specified memory region -- one that
explicitly states the number of bytes accessed in the region.

A special treatment is used for __builtin_strlen.  The patch
instruments the access to the first byte of its argument, as well as
the access to the byte (of the argument) at the offset returned by
strlen.

For the __sync_* and __atomic* calls the patch instruments the access
to the bytes pointed to by the argument.

While doing this, I have added a new parameter to build_check_stmt to
decide whether to insert the instrumentation code before or after the
statement iterator.  This allows us to do away with the
gsi_{next,prev} dance we were doing in the callers of this function.

Tested by running cc1 -fasan on variations of simple programs like:

    int
    foo ()
    {
      char foo[10] = {0};

      foo[0] = 't';
      foo[1] = 'e';
      foo[2] = 's';
      foo[3] = 't';
      int l = __builtin_strlen (foo);
      int n = sizeof (foo);
      __builtin_memset (&foo[4], 0, n - 4);
      __sync_fetch_and_add (&foo[11], 1);

      return l;
    }

and by starring at the gimple output which for this function is:

    ;; Function foo (foo, funcdef_no=0, decl_uid=1714, cgraph_uid=0)

    foo ()
    {
      int n;
      int l;
      char foo[10];
      int D.1725;
      char * D.1724;
      int D.1723;
      long unsigned int D.1722;
      int D.1721;
      long unsigned int D.1720;
      long unsigned int _1;
      int _4;
      long unsigned int _5;
      int _6;
      char * _7;
      int _8;
      char * _9;
      unsigned long _10;
      unsigned long _11;
      unsigned long _12;
      signed char * _13;
      signed char _14;
      _Bool _15;
      unsigned long _16;
      signed char _17;
      _Bool _18;
      _Bool _19;
      char * _20;
      unsigned long _21;
      unsigned long _22;
      unsigned long _23;
      signed char * _24;
      signed char _25;
      _Bool _26;
      unsigned long _27;
      signed char _28;
      _Bool _29;
      _Bool _30;
      char * _31;
      unsigned long _32;
      unsigned long _33;
      unsigned long _34;
      signed char * _35;
      signed char _36;
      _Bool _37;
      unsigned long _38;
      signed char _39;
      _Bool _40;
      _Bool _41;
      char * _42;
      unsigned long _43;
      unsigned long _44;
      unsigned long _45;
      signed char * _46;
      signed char _47;
      _Bool _48;
      unsigned long _49;
      signed char _50;
      _Bool _51;
      _Bool _52;
      char * _53;
      unsigned long _54;
      unsigned long _55;
      unsigned long _56;
      signed char * _57;
      signed char _58;
      _Bool _59;
      unsigned long _60;
      signed char _61;
      _Bool _62;
      _Bool _63;
      char[10] * _64;
      unsigned long _65;
      unsigned long _66;
      unsigned long _67;
      signed char * _68;
      signed char _69;
      _Bool _70;
      unsigned long _71;
      signed char _72;
      _Bool _73;
      _Bool _74;
      unsigned long _75;
      unsigned long _76;
      unsigned long _77;
      signed char * _78;
      signed char _79;
      _Bool _80;
      unsigned long _81;
      signed char _82;
      _Bool _83;
      _Bool _84;
      long unsigned int _85;
      long unsigned int _86;
      char * _87;
      char * _88;
      unsigned long _89;
      unsigned long _90;
      unsigned long _91;
      signed char * _92;
      signed char _93;
      _Bool _94;
      unsigned long _95;
      signed char _96;
      _Bool _97;
      _Bool _98;
      char * _99;
      unsigned long _100;
      unsigned long _101;
      unsigned long _102;
      signed char * _103;
      signed char _104;
      _Bool _105;
      unsigned long _106;
      signed char _107;
      _Bool _108;
      _Bool _109;

      <bb 2>:
      foo = {};
      _9 = &foo[0];
      _10 = (unsigned long) _9;
      _11 = _10 >> 3;
      _12 = _11 + 17592186044416;
      _13 = (signed char *) _12;
      _14 = *_13;
      _15 = _14 != 0;
      _16 = _10 & 7;
      _17 = (signed char) _16;
      _18 = _17 >= _14;
      _19 = _15 & _18;
      if (_19 != 0)
goto <bb 5>;
      else
goto <bb 4>;

      <bb 5>:
      __asan_report_store1 (_10);

      <bb 4>:
      foo[0] = 116;
      _20 = &foo[1];
      _21 = (unsigned long) _20;
      _22 = _21 >> 3;
      _23 = _22 + 17592186044416;
      _24 = (signed char *) _23;
      _25 = *_24;
      _26 = _25 != 0;
      _27 = _21 & 7;
      _28 = (signed char) _27;
      _29 = _28 >= _25;
      _30 = _26 & _29;
      if (_30 != 0)
goto <bb 7>;
      else
goto <bb 6>;

      <bb 7>:
      __asan_report_store1 (_21);

      <bb 6>:
      foo[1] = 101;
      _31 = &foo[2];
      _32 = (unsigned long) _31;
      _33 = _32 >> 3;
      _34 = _33 + 17592186044416;
      _35 = (signed char *) _34;
      _36 = *_35;
      _37 = _36 != 0;
      _38 = _32 & 7;
      _39 = (signed char) _38;
      _40 = _39 >= _36;
      _41 = _37 & _40;
      if (_41 != 0)
goto <bb 9>;
      else
goto <bb 8>;

      <bb 9>:
      __asan_report_store1 (_32);

      <bb 8>:
      foo[2] = 115;
      _42 = &foo[3];
      _43 = (unsigned long) _42;
      _44 = _43 >> 3;
      _45 = _44 + 17592186044416;
      _46 = (signed char *) _45;
      _47 = *_46;
      _48 = _47 != 0;
      _49 = _43 & 7;
      _50 = (signed char) _49;
      _51 = _50 >= _47;
      _52 = _48 & _51;
      if (_52 != 0)
goto <bb 11>;
      else
goto <bb 10>;

      <bb 11>:
      __asan_report_store1 (_43);

      <bb 10>:
      foo[3] = 116;
      _53 = (char *) &foo;
      _54 = (unsigned long) _53;
      _55 = _54 >> 3;
      _56 = _55 + 17592186044416;
      _57 = (signed char *) _56;
      _58 = *_57;
      _59 = _58 != 0;
      _60 = _54 & 7;
      _61 = (signed char) _60;
      _62 = _61 >= _58;
      _63 = _59 & _62;
      if (_63 != 0)
goto <bb 13>;
      else
goto <bb 12>;

      <bb 13>:
      __asan_report_load1 (_54);

      <bb 12>:
      _1 = __builtin_strlen (&foo);
      _64 = _53 + _1;
      _65 = (unsigned long) _64;
      _66 = _65 >> 3;
      _67 = _66 + 17592186044416;
      _68 = (signed char *) _67;
      _69 = *_68;
      _70 = _69 != 0;
      _71 = _65 & 7;
      _72 = (signed char) _71;
      _73 = _72 >= _69;
      _74 = _70 & _73;
      if (_74 != 0)
goto <bb 15>;
      else
goto <bb 14>;

      <bb 15>:
      __asan_report_load1 (_65);

      <bb 14>:
      l_2 = (int) _1;
      n_3 = 10;
      _4 = n_3 + -4;
      _5 = (long unsigned int) _4;
      _6 = l_2 + 1;
      _7 = &foo[_6];
      if (_5 != 0)
goto <bb 17>;
      else
goto <bb 16>;

      <bb 17>:
      _75 = (unsigned long) _7;
      _76 = _75 >> 3;
      _77 = _76 + 17592186044416;
      _78 = (signed char *) _77;
      _79 = *_78;
      _80 = _79 != 0;
      _81 = _75 & 7;
      _82 = (signed char) _81;
      _83 = _82 >= _79;
      _84 = _80 & _83;
      _85 = _5;
      _86 = _85 - 1;
      _87 = _7;
      _88 = _87 + _86;
      _89 = (unsigned long) _88;
      _90 = _89 >> 3;
      _91 = _90 + 17592186044416;
      _92 = (signed char *) _91;
      _93 = *_92;
      _94 = _93 != 0;
      _95 = _89 & 7;
      _96 = (signed char) _95;
      _97 = _96 >= _93;
      _98 = _94 & _97;
      if (_98 != 0)
goto <bb 21>;
      else
goto <bb 20>;

      <bb 21>:
      __asan_report_store1 (_89);

      <bb 20>:
      if (_84 != 0)
goto <bb 19>;
      else
goto <bb 18>;

      <bb 19>:
      __asan_report_store1 (_75);

      <bb 18>:

      <bb 16>:
      __builtin_memset (_7, 0, _5);
      _99 = &foo[11];
      _100 = (unsigned long) _99;
      _101 = _100 >> 3;
      _102 = _101 + 17592186044416;
      _103 = (signed char *) _102;
      _104 = *_103;
      _105 = _104 != 0;
      _106 = _100 & 7;
      _107 = (signed char) _106;
      _108 = _107 >= _104;
      _109 = _105 & _108;
      if (_109 != 0)
goto <bb 23>;
      else
goto <bb 22>;

      <bb 23>:
      __asan_report_store1 (_100);

      <bb 22>:
      __sync_fetch_and_add_1 (&foo[11], 1);
      _8 = l_2;
      foo ={v} {CLOBBER};

    <L1>:
      return _8;

    }

    ;; Function _GLOBAL__sub_I_00099_0_foo (_GLOBAL__sub_I_00099_0_foo, funcdef_no=1, decl_uid=1752, cgraph_uid=4)

    _GLOBAL__sub_I_00099_0_foo ()
    {
      <bb 2>:
      __asan_init ();
      return;

    }

gcc/
* gimple.h (is_gimple_builtin_call): Declare ...
* gimple.c (is_gimple_builtin_call): ... New public function.
* asan.c (insert_if_then_before_iter, instrument_mem_region_access,
instrument_strlen_call, maybe_instrument_builtin_call,
instrument_call): New static functions.
(create_cond_insert_point): Renamed
create_cond_insert_point_before_iter into this.  Add a new
parameter to decide whether to insert the condition before or
after the statement iterator.
(build_check_stmt): Adjust for the new create_cond_insert_point.
Add a new parameter to decide whether to add the instrumentation
code before or after the statement iterator.
(instrument_assignment): Factorize from ...
(transform_statements): ... here.  Use maybe_instrument_call to
instrument builtin function calls as well.
(instrument_derefs): Adjust for the new parameter of
build_check_stmt.  Fix detection of bit-field access.

From-SVN: r193440

11 years agoFactorize condition insertion code out of build_check_stmt
Dodji Seketeli [Mon, 12 Nov 2012 15:53:12 +0000 (15:53 +0000)]
Factorize condition insertion code out of build_check_stmt

This patch splits a new create_cond_insert_point_before_iter function
out of build_check_stmt, to be used by a later patch.

Tested by running cc1 -fasan on the test program below with and
without the patch and by inspecting the gimple output to see that
there is no change.

void
foo ()
{
  char foo[1] = {0};

  foo[0] = 1;
}

gcc/

* asan.c (create_cond_insert_point_before_iter): Factorize out of ...
(build_check_stmt): ... here.

From-SVN: r193439

11 years agoMake build_check_stmt accept an SSA_NAME for its base
Dodji Seketeli [Mon, 12 Nov 2012 15:52:56 +0000 (15:52 +0000)]
Make build_check_stmt accept an SSA_NAME for its base

This patch makes build_check_stmt accept its memory access parameter
to be an SSA name.  This is useful for a subsequent patch that will
re-use.

Tested by running cc1 -fasan on the program below with and without the
patch and inspecting the gimple output to see that there is no change.

void
foo ()
{
  char foo[1] = {0};

  foo[0] = 1;
}

gcc/
* asan.c (build_check_stmt): Accept the memory access to be
represented by an SSA_NAME.

From-SVN: r193438

11 years agoImplement protection of global variables
Jakub Jelinek [Mon, 12 Nov 2012 15:52:42 +0000 (16:52 +0100)]
Implement protection of global variables

This patch implements the protection of global variables.  See the
comments appended to the beginning of the asan.c file.

* varasm.c: Include asan.h.
(assemble_noswitch_variable): Grow size by asan_red_zone_size
if decl is asan protected.
(place_block_symbol): Likewise.
(assemble_variable): If decl is asan protected, increase
DECL_ALIGN if needed, and for decls emitted using
assemble_variable_contents append padding zeros after it.
* Makefile.in (varasm.o): Depend on asan.h.
* asan.c: Include output.h.
(asan_pp, asan_pp_initialized, asan_ctor_statements): New variables.
(asan_pp_initialize, asan_pp_string): New functions.
(asan_emit_stack_protection): Use asan_pp{,_initialized}
instead of local pp{,_initialized} vars, use asan_pp_initialize
and asan_pp_string helpers.
(asan_needs_local_alias, asan_protect_global,
asan_global_struct, asan_add_global): New functions.
(asan_finish_file): Protect global vars that can be protected. Use
asan_ctor_statements instead of ctor_statements
* asan.h (asan_protect_global): New prototype.
(asan_red_zone_size): New inline function.

Co-Authored-By: Wei Mi <wmi@google.com>
From-SVN: r193437

11 years agoImplement protection of stack variables
Jakub Jelinek [Mon, 12 Nov 2012 15:52:26 +0000 (16:52 +0100)]
Implement protection of stack variables

This patch implements the protection of stack variables.

It lays out stack variables as well as the different red zones,
emits some prologue code to populate the shadow memory as to poison
(mark as non-accessible) the regions of the red zones and mark the
regions of stack variables as accessible, and emit some epilogue code
to un-poison (mark as accessible) the regions of red zones right
before the function exits.

* Makefile.in (asan.o): Depend on $(EXPR_H) $(OPTABS_H).
(cfgexpand.o): Depend on asan.h.
* asan.c: Include expr.h and optabs.h.
(asan_shadow_set): New variable.
(asan_shadow_cst, asan_emit_stack_protection): New functions.
(asan_init_shadow_ptr_types): Initialize also asan_shadow_set.
* cfgexpand.c: Include asan.h.  Define HOST_WIDE_INT heap vector.
(partition_stack_vars): If i is large alignment and j small
alignment or vice versa, break out of the loop instead of continue,
and put the test earlier.  If flag_asan, break out of the loop
if for small alignment size is different.
(struct stack_vars_data): New type.
(expand_stack_vars): Add DATA argument.  Change PRED type to
function taking size_t argument instead of tree.  Adjust pred
calls.  Fill DATA in and add needed padding in between variables
if -faddress-sanitizer.
(defer_stack_allocation): Defer everything for flag_asan.
(stack_protect_decl_phase_1, stack_protect_decl_phase_2): Take
size_t index into stack_vars array instead of the decl directly.
(asan_decl_phase_3): New function.
(expand_used_vars): Return var destruction sequence.  Adjust
expand_stack_vars calls, add another one for flag_asan.  Call
asan_emit_stack_protection if expand_stack_vars added anything
to the vectors.
(expand_gimple_basic_block): Add disable_tail_calls argument.
(gimple_expand_cfg): Pass true to it if expand_used_vars returned
non-NULL.  Emit the sequence returned by expand_used_vars after
return_label.
* asan.h (asan_emit_stack_protection): New prototype.
(asan_shadow_set): New decl.
(ASAN_RED_ZONE_SIZE, ASAN_STACK_MAGIC_LEFT, ASAN_STACK_MAGIC_MIDDLE,
ASAN_STACK_MAGIC_RIGHT, ASAN_STACK_FRAME_MAGIC): Define.
(asan_protect_stack_decl): New inline.
* toplev.c (process_options): Also disable -faddress-sanitizer on
!FRAME_GROWS_DOWNWARDS targets.

From-SVN: r193436

11 years agoAllow asan at -O0
Jakub Jelinek [Mon, 12 Nov 2012 15:52:09 +0000 (16:52 +0100)]
Allow asan at -O0

This patch defines a new asan pass gate that is activated at -O0, in
addition to the pass that was initially activated at -O3 level The
patch also does some comment cleanups here and there.

* asan.c (build_check_stmt): Rename join_bb variable to else_bb.
(gate_asan_O0): New function.
(pass_asan_O0): New variable.
* passes.c (init_optimization_passes): Add pass_asan_O0.
* tree-pass.h (pass_asan_O0): New declaration.

From-SVN: r193435

11 years agoEmit GIMPLE directly instead of gimplifying GENERIC.
Jakub Jelinek [Mon, 12 Nov 2012 15:51:53 +0000 (16:51 +0100)]
Emit GIMPLE directly instead of gimplifying GENERIC.

This patch cleanups the instrumentation code generation by emitting
GIMPLE directly, as opposed to emitting GENERIC tree and then
gimplifying them.  It also does some cleanups here and there

* Makefile.in (GTFILES): Add $(srcdir)/asan.c.
(asan.o): Update the dependencies of asan.o.
* asan.c (tm.h, tree.h, tm_p.h, basic-block.h, flags.h
function.h, tree-inline.h, tree-dump.h, diagnostic.h, demangle.h,
langhooks.h, ggc.h, cgraph.h, gimple.h): Remove these unused but
included headers.
(shadow_ptr_types): New variable.
(report_error_func): Change is_store argument to bool, don't append
newline to function name.
(PROB_VERY_UNLIKELY, PROB_ALWAYS): Define.
(build_check_stmt): Change is_store argument to bool.  Emit GIMPLE
directly instead of creating trees and gimplifying them.  Mark
the error reporting function as very unlikely.
(instrument_derefs): Change is_store argument to bool.  Use
int_size_in_bytes to compute size_in_bytes, simplify size check.
Use build_fold_addr_expr instead of build_addr.
(transform_statements): Adjust instrument_derefs caller.
Use gimple_assign_single_p as stmt test.  Don't look at MEM refs
in rhs2.
(asan_init_shadow_ptr_types): New function.
(asan_instrument): Don't push/pop gimplify context.
Call asan_init_shadow_ptr_types if not yet initialized.
* asan.h (ASAN_SHADOW_SHIFT): Adjust comment.

Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
Co-Authored-By: Xinliang David Li <davidxl@google.com>
From-SVN: r193434

11 years agoInitial asan cleanups
Jakub Jelinek [Mon, 12 Nov 2012 15:51:34 +0000 (16:51 +0100)]
Initial asan cleanups

This patch defines a new asan_shadow_offset target macro, instead of
having a mere macro in the asan.c file.  It becomes thus cleaner to
define the target macro for targets that supports asan, namely x86 for
now.  The ASAN_SHADOW_SHIFT (which, along with the asan_shadow_offset
constant, is used to compute the address of the shadow memory byte for
a given memory address) is defined in asan.h.

gcc/ChangeLog

* toplev.c (process_options): Warn and turn off
-faddress-sanitizer if not supported by target.
* asan.c: Include target.h.
(asan_scale, asan_offset_log_32, asan_offset_log_64,
asan_offset_log): Removed.
(build_check_stmt): Use ASAN_SHADOW_SHIFT and
targetm.asan_shadow_offset ().
(asan_instrument): Don't initialize asan_offset_log.
* asan.h (ASAN_SHADOW_SHIFT): Define.
* target.def (TARGET_ASAN_SHADOW_OFFSET): New hook.
* doc/tm.texi.in (TARGET_ASAN_SHADOW_OFFSET): Add it.
* doc/tm.texi: Regenerated.
* Makefile.in (asan.o): Depend on $(TARGET_H).
* config/i386/i386.c (ix86_asan_shadow_offset): New function.
(TARGET_ASAN_SHADOW_OFFSET): Define.

From-SVN: r193433

11 years agoInitial import of asan from the Google branch
Wei Mi [Mon, 12 Nov 2012 15:51:13 +0000 (15:51 +0000)]
Initial import of asan from the Google branch

This patch imports the initial state of asan as it was in the
Google branch.

It provides basic infrastructure for asan to instrument memory
accesses on the heap, at -O3.  Note that it supports neither stack nor
global variable protection.

The rest of the patches of the set is intended to further improve this
base.

gcc/ChangeLog

* Makefile.in: Add asan.c and its dependencies.
* common.opt: Add -faddress-sanitizer option.
* invoke.texi: Document the new flag.
* passes.c: Add the asan pass.
* toplev.c (compile_file): Call asan_finish_file.
* asan.c: New file.
* asan.h: New file.
* tree-pass.h: Declare pass_asan.

Co-Authored-By: Diego Novillo <dnovillo@google.com>
Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r193432

11 years agore PR fortran/55272 (ICE on passing coarray argument between files)
Tobias Burnus [Mon, 12 Nov 2012 11:03:42 +0000 (12:03 +0100)]
re PR fortran/55272 (ICE on passing coarray argument between files)

2012-11-12  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55272
        * module.c (mio_array_spec): Correctly handle coarray
        scalars.

2012-11-12  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55272
        * gfortran.dg/coarray_29_1.f90: New.
        * gfortran.dg/coarray_29_2.f90: New.

From-SVN: r193429

11 years agodiagnostic.c (diagnostic_append_note): Also call va_end when inhibit_notes_p is true.
Tobias Burnus [Mon, 12 Nov 2012 11:00:58 +0000 (12:00 +0100)]
diagnostic.c (diagnostic_append_note): Also call va_end when inhibit_notes_p is true.

2012-11-12  Tobias Burnus  <burnus@net-b.de>

        * diagnostic.c (diagnostic_append_note): Also call va_end when
        inhibit_notes_p is true.

From-SVN: r193428

11 years agoIndex declspecs.locations by ds_typedef rather than ds_thread.
Ed Smith-Rowland [Mon, 12 Nov 2012 05:35:05 +0000 (05:35 +0000)]
Index declspecs.locations by ds_typedef rather than ds_thread.

From-SVN: r193426

11 years agogcse.c (struct bb_data): Add new fields, old_pressure, live_in and backup.
Bin Cheng [Mon, 12 Nov 2012 02:17:38 +0000 (02:17 +0000)]
gcse.c (struct bb_data): Add new fields, old_pressure, live_in and backup.

* gcse.c (struct bb_data): Add new fields, old_pressure, live_in
and backup.
(get_regno_pressure_class): Add prototype.
(update_bb_reg_pressure): New.
(should_hoist_expr_to_dom): Add new parameter from.
Monitor the change of reg pressure and use it to drive hoisting.
(hoist_code): Update LIVE and reg pressure information.
(calculate_bb_reg_pressure): Initialize live_in and backup.

* gcc.dg/hoist-register-pressure-3.c: New test.

From-SVN: r193425

11 years agomd.texi (Standard Pattern Names For Generation): Fix swapped sine and cosine operands...
Oleg Endo [Mon, 12 Nov 2012 00:50:11 +0000 (00:50 +0000)]
md.texi (Standard Pattern Names For Generation): Fix swapped sine and cosine operands in the sincos description.

* doc/md.texi (Standard Pattern Names For Generation): Fix swapped
sine and cosine operands in the sincos description.

From-SVN: r193424

11 years agore PR target/53512 (SH Target: Allow fsca and fsrra for non-SH4A)
Oleg Endo [Mon, 12 Nov 2012 00:27:56 +0000 (00:27 +0000)]
re PR target/53512 (SH Target: Allow fsca and fsrra for non-SH4A)

PR target/53512
* config/sh/sh.md (sincossf3): Fix swapped sin and cos operands.

From-SVN: r193423

11 years agoDaily bump.
GCC Administrator [Mon, 12 Nov 2012 00:17:22 +0000 (00:17 +0000)]
Daily bump.

From-SVN: r193422

11 years agosh4a-fprun.c: Add test_sinf and test_cosf noinline wrappers around sinf and cosf.
Oleg Endo [Sun, 11 Nov 2012 23:58:06 +0000 (23:58 +0000)]
sh4a-fprun.c: Add test_sinf and test_cosf noinline wrappers around sinf and cosf.

* gcc.target/sh/sh4a-fprun.c: Add test_sinf and test_cosf noinline
wrappers around sinf and cosf.

From-SVN: r193419

11 years agoRemove "!" from riF->o alternative
H.J. Lu [Sun, 11 Nov 2012 23:50:45 +0000 (23:50 +0000)]
Remove "!" from riF->o alternative

* config/i386/i386.md (*movti_internal_rex64): Remove "!" from
riF->o alternative.

From-SVN: r193418

11 years agosparc.h (AS_NIAGARA3_FLAG): Tweak.
Eric Botcazou [Sun, 11 Nov 2012 21:56:27 +0000 (21:56 +0000)]
sparc.h (AS_NIAGARA3_FLAG): Tweak.

* config/sparc/sparc.h (AS_NIAGARA3_FLAG): Tweak.
* config/sparc/sol2.h (TARGET_CPU_niagara4 support): Fix pasto.

From-SVN: r193416

11 years agore PR rtl-optimization/55247 (internal compiler error: Max. number of generated reloa...
Eric Botcazou [Sun, 11 Nov 2012 21:52:49 +0000 (21:52 +0000)]
re PR rtl-optimization/55247 (internal compiler error: Max. number of generated reload insns per insn is achieved (90))

PR rtl-optimization/55247
PR middle-end/55259
* emit-rtl.c (adjust_address_1): If POINTERS_EXTEND_UNSIGNED > 0,
handle ZERO_EXTEND.
* recog.c (offsettable_address_addr_space_p): Likewise.

From-SVN: r193415

11 years agochapter.txml: Remove whitespace inside <keyword>.
Andreas Schwab [Sun, 11 Nov 2012 21:17:43 +0000 (21:17 +0000)]
chapter.txml: Remove whitespace inside <keyword>.

* doc/xml/chapter.txml: Remove whitespace inside <keyword>.
* doc/xml/class.txml: Likewise.
* doc/xml/manual/abi.xml: Likewise.
* doc/xml/manual/algorithms.xml: Likewise.
* doc/xml/manual/allocator.xml: Likewise.
* doc/xml/manual/appendix_contributing.xml: Likewise.
* doc/xml/manual/appendix_free.xml: Likewise.
* doc/xml/manual/appendix_porting.xml: Likewise.
* doc/xml/manual/atomics.xml: Likewise.
* doc/xml/manual/auto_ptr.xml: Likewise.
* doc/xml/manual/backwards_compatibility.xml: Likewise.
* doc/xml/manual/bitmap_allocator.xml: Likewise.
* doc/xml/manual/build_hacking.xml: Likewise.
* doc/xml/manual/codecvt.xml: Likewise.
* doc/xml/manual/concurrency.xml: Likewise.
* doc/xml/manual/concurrency_extensions.xml: Likewise.
* doc/xml/manual/configure.xml: Likewise.
* doc/xml/manual/containers.xml: Likewise.
* doc/xml/manual/ctype.xml: Likewise.
* doc/xml/manual/debug.xml: Likewise.
* doc/xml/manual/debug_mode.xml: Likewise.
* doc/xml/manual/diagnostics.xml: Likewise.
* doc/xml/manual/extensions.xml: Likewise.
* doc/xml/manual/internals.xml: Likewise.
* doc/xml/manual/intro.xml: Likewise.
* doc/xml/manual/io.xml: Likewise.
* doc/xml/manual/iterators.xml: Likewise.
* doc/xml/manual/locale.xml: Likewise.
* doc/xml/manual/localization.xml: Likewise.
* doc/xml/manual/messages.xml: Likewise.
* doc/xml/manual/mt_allocator.xml: Likewise.
* doc/xml/manual/numerics.xml: Likewise.
* doc/xml/manual/parallel_mode.xml: Likewise.
* doc/xml/manual/policy_data_structures.xml: Likewise.
* doc/xml/manual/prerequisites.xml: Likewise.
* doc/xml/manual/profile_mode.xml: Likewise.
* doc/xml/manual/shared_ptr.xml: Likewise.
* doc/xml/manual/status_cxx1998.xml: Likewise.
* doc/xml/manual/status_cxx2011.xml: Likewise.
* doc/xml/manual/status_cxxtr1.xml: Likewise.
* doc/xml/manual/status_cxxtr24733.xml: Likewise.
* doc/xml/manual/strings.xml: Likewise.
* doc/xml/manual/support.xml: Likewise.
* doc/xml/manual/test.xml: Likewise.
* doc/xml/manual/using_exceptions.xml: Likewise.
* doc/xml/manual/utilities.xml: Likewise.
* doc/xml/spine.xml: Likewise.

From-SVN: r193414

11 years agoacinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Also check for /usr/share/xml/docbook/style...
Andreas Schwab [Sun, 11 Nov 2012 21:01:01 +0000 (21:01 +0000)]
acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Also check for /usr/share/xml/docbook/stylesheet/nwalsh5/current.

* acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Also check for
/usr/share/xml/docbook/stylesheet/nwalsh5/current.
* configure: Regenerate.

From-SVN: r193413

11 years agore PR middle-end/55263 (ICE: pre_and_rev_post_order_compute, at cfganal.c:875 with...
Steven Bosscher [Sun, 11 Nov 2012 20:29:11 +0000 (20:29 +0000)]
re PR middle-end/55263 (ICE: pre_and_rev_post_order_compute, at cfganal.c:875 with -O -fgcse-after-reload -fnon-call-exceptions)

gcc/
PR middle-end/55263
* postreload.c (rest_of_handle_postreload): With non-call exceptions,
if edges are purged call cleanup_cfg to remove unreachable blocks.

testsuite/
PR middle-end/55263
* g++.dg/pr55263.C: New test.

From-SVN: r193412

11 years agoextend.texi: Copy-edit to use "built-in function" instead of "builtin", per GCC codin...
Sandra Loosemore [Sun, 11 Nov 2012 19:47:00 +0000 (14:47 -0500)]
extend.texi: Copy-edit to use "built-in function" instead of "builtin", per GCC coding standards.

2012-11-11  Sandra Loosemore  <sandra@codesourcery.com>

gcc/
* doc/extend.texi: Copy-edit to use "built-in function" instead
of "builtin", per GCC coding standards.  Also use consistent
capitalization in titles of sections describing built-in functions.

From-SVN: r193411

11 years agore PR tree-optimization/55238 (ICE in find_aggregate_values_for_callers_subset, at...
Martin Jambor [Sun, 11 Nov 2012 19:35:27 +0000 (20:35 +0100)]
re PR tree-optimization/55238 (ICE in find_aggregate_values_for_callers_subset, at ipa-cp.c:2908 building zlib)

PR tree-optimization/55238
* ipa-cp.c (agg_pass_through_permissible_p): New function.
(propagate_aggs_accross_jump_function): Use it.
(find_aggregate_values_for_callers_subset): Likewise and relax an
assert.

* testsuite/gcc.dg/torture/pr55238.c: New test.

From-SVN: r193410

11 years agore PR target/47440 (Use LCM for vzeroupper insertion)
Uros Bizjak [Sun, 11 Nov 2012 19:17:17 +0000 (20:17 +0100)]
re PR target/47440 (Use LCM for vzeroupper insertion)

PR target/47440
* config/i386/i386.c (check_avx256_stores): Remove.
(ix86_check_avx256_register): New.
(ix86_avx_u128_mode_needed): Use ix86_check_avx256_register.
Check the whole RTX for 256bit registers using for_each_rtx.
(ix86_check_avx_stores): New.
(ix86_avx_u128_mode_after): Change mode of CALL RTX to AVX_U128_CLEAN
if there are no 256bit registers used in the function return register.
(ix86_avx_u128_mode_entry): Use ix86_check_avx256_register.
(ix86_avx_u128_mode_exit): Ditto.

From-SVN: r193409

11 years agopr54920.c: Add "-fno-common" option on hppa*-*-hpux*.
John David Anglin [Sun, 11 Nov 2012 19:16:00 +0000 (19:16 +0000)]
pr54920.c: Add "-fno-common" option on hppa*-*-hpux*.

* gcc.dg/torture/pr54920.c: Add "-fno-common" option on hppa*-*-hpux*.
* c-c++-common/torture/vector-subscript-1.c: Likewise.
* c-c++-common/torture/vector-subscript-2.c: Likewise.

From-SVN: r193408