re PR fortran/44054 (Handle -Werror, -Werror=, -fdiagnostics-show-option, !GCC$ diagnostic (pragmas) and color)
gcc/fortran/ChangeLog:
2014-10-06 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR fortran/44054
PR fortran/54687
* gfortran.h (gfc_warning_cmdline): Add overload that takes an
option.
(gfc_error_cmdline): Declare.
* error.c (gfc_warning_cmdline): New overload that takes an option.
(gfc_error_cmdline): New.
* lang.opt (Wmissing-include-dirs): New.
* scanner.c (add_path_to_list): Use the new functions.
(load_file): Likewise.
* options.c (gfc_init_options): Wmissing-include-dirs is enabled
by default in Fortran.
(gfc_handle_option): Accept automatically handled options.
Rong Xu [Tue, 7 Oct 2014 04:06:12 +0000 (04:06 +0000)]
params.def (PARAM_INDIR_CALL_TOPN_PROFILE): New param.
2014-10-06 Rong Xu <xur@google.com>
* gcc/params.def (PARAM_INDIR_CALL_TOPN_PROFILE): New param.
* gcc/tree-profile.c: (params.h): New include.
(init_ic_make_global_vars): Make __gcov_indirect_call_topn_callee
and __gcov_indirect_call_topn_counters for
indirect_call_topn_profile.
(gimple_init_edge_profiler): New decls for
__gcov_indirect_call_topn_profiler.
(gimple_gen_ic_profiler): Generate the correct profiler call.
(gimple_gen_ic_func_profiler): Fix format.
* gcc/value-prof.c (params.h): New include.
(dump_histogram_value): Hanlde indirect_call_topn counters.
(stream_in_histogram_value): Ditto.
(gimple_indirect_call_to_profile): Use indirect_call_topn
profile when PARAM_INDIR_CALL_TOPN_PROFILE is set.
(gimple_find_values_to_profile): Hanlde indirect_call_topn
counters.
* gcc/value-prof.h (enum hist_type): Histrogram type for
indirect_call_topn counters.
* gcc/profile.c (instrument_values): Instrument
indirect_call_topn counters.
Paolo Carlini [Mon, 6 Oct 2014 16:13:41 +0000 (16:13 +0000)]
re PR c++/55250 ([C++0x] enum declarations within constexpr function are allowed, constexpr declarations are not)
/cp
2014-10-06 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/55250
* semantics.c (check_constexpr_bind_expr_vars): New.
(check_constexpr_ctor_body, massage_constexpr_body): Use it.
(build_constexpr_constructor_member_initializers): Handle
BIND_EXPR in the main conditional.
/testsuite
2014-10-06 Paolo Carlini <paolo.carlini@oracle.com>
Marek Polacek [Mon, 6 Oct 2014 13:48:31 +0000 (13:48 +0000)]
gctest.c: Fix defaulting to int.
boehm-gc/
* testsuite/boehm-gc.c/gctest.c: Fix defaulting to int.
gcc/testsuite/
* c-c++-common/raw-string-3.c: Use -std=gnu89 for C.
* g++.dg/lto/pr54625-1_0.c: Fix defaulting to int.
* g++.dg/lto/pr54625-2_0.c: Likewise.
* gcc.misc-tests/gcov-14.c: Use -fgnu89-inline.
Marek Polacek [Mon, 6 Oct 2014 11:54:24 +0000 (11:54 +0000)]
affinity-1.c: Include <sys/wait.h>.
* testsuite/libgomp.c/affinity-1.c: Include <sys/wait.h>.
* testsuite/libgomp.c/nqueens-1.c: Include <stdlib.h>.
* testsuite/libgomp.c/thread-limit-1.c: Include <omp.h>
* testsuite/libgomp.c/thread-limit-2.c: Likewise.
Jakub Jelinek [Mon, 6 Oct 2014 07:45:19 +0000 (09:45 +0200)]
ubsan.h (ubsan_get_source_location): New prototype.
* ubsan.h (ubsan_get_source_location): New prototype.
* ubsan.c (ubsan_source_location_type): New variable.
Function renamed to ...
(ubsan_get_source_location_type): ... this. Cache
return value in ubsan_source_location_type variable.
(ubsan_source_location, ubsan_create_data): Use
ubsan_get_source_location_type instead of
ubsan_source_location_type.
* asan.c (asan_protect_global): Don't protect globals
with ubsan_get_source_location_type () type.
(asan_add_global): Provide global decl location info
if possible.
Jakub Jelinek [Mon, 6 Oct 2014 07:44:13 +0000 (09:44 +0200)]
ubsan.h (ubsan_get_source_location): New prototype.
* ubsan.h (ubsan_get_source_location): New prototype.
* ubsan.c (ubsan_source_location_type): New variable.
Function renamed to ...
(ubsan_get_source_location_type): ... this. Cache
return value in ubsan_source_location_type variable.
(ubsan_source_location, ubsan_create_data): Use
ubsan_get_source_location_type instead of
ubsan_source_location_type.
* asan.c (asan_protect_global): Don't protect globals
with ubsan_get_source_location_type () type.
(asan_add_global): Provide global decl location info
if possible.
Mark Wielaard [Sun, 5 Oct 2014 15:25:03 +0000 (15:25 +0000)]
PR debug/63239 Add DWARF representation for C++11 deleted member function.
include/ChangeLog
* dwarf2.def (DW_AT_GNU_deleted): New attribute.
gcc/ChangeLog
* dwarf2out.c (gen_subprogram_die): When a member function is
explicitly deleted then add a DW_AT_GNU_deleted attribute.
* langhooks.h (struct lang_hooks_for_decls): Add
function_decl_deleted_p langhook.
* langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_DELETED_P): Define.
(LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_DELETED_P.
gcc/cp/ChangeLog
* cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_DELETED_P): Define.
(cp_function_decl_deleted_p): New prototype.
* cp-objcp-common.c (cp_function_deleted_p): New function.
gcc/testsuite/ChangeLog
* g++.dg/debug/dwarf2/deleted-member-function.C: New testcase.
* ipa-polymorphic-call.c (walk_ssa_copies): Recognize
NULL pointer checks.
(ipa_polymorphic_call_context::get_dynamic_type): Return true
if type doesn't change.
* cgraph.h (cgraph_indirect_call_info): New flag.
* cgraph.c (cgraph_node::create_indirect_edge): Initialize it.
(cgraph_node::dump): Dump it.
* ipa-prop.c (ipa_analyze_call_uses): Ignore return valud
of context.get_dynamic_type.
(ipa_make_edge_direct_to_target): Do not speculate
edge that is already speuclative.
(try_make_edge_direct_virtual_call): Use VPTR_CHANGED; Do not
speculate to __builtin_unreachable
(ipa_write_indirect_edge_info, ipa_read_indirect_edge_info): Stream
vptr_changed.
* ipa-cp.c (ipa_get_indirect_edge_target_1): Use vptr_changed.
* g++.dg/ipa/devirt-47.C: New testcase.
Jan Hubicka [Sat, 4 Oct 2014 18:29:03 +0000 (20:29 +0200)]
devirt-46.C: New testcase.
* g++.dg/ipa/devirt-46.C: New testcase.
* ipa-prop.c (ipa_compute_jump_functions_for_edge): Call
get_dynamic_type; drop TODO.
* ipa-polymorphic-call.c
(ipa_polymorphic_call_context::get_dynamic_type): Be ready
for otr_type to be unknown.
Trevor Saunders [Sat, 4 Oct 2014 13:29:26 +0000 (13:29 +0000)]
Fix dupplicate declaration of ggc_realloc in gencondmd
If vec.h is included before ggc.h it forward declares ggc_realloc with
defaulted arguments. This means ggc.h can not be included later because
it would lead to a second declaration of ggc_realloc with defaulted
arguments. In generator programs vec.h can not include ggc.h because it
may not exist yet. So generator programs must make sure they include
ggc.h before anything that includes vec.h.
Bill Schmidt [Fri, 3 Oct 2014 22:38:39 +0000 (22:38 +0000)]
altivec.md (altivec_lvsl): New define_expand.
[gcc]
2014-10-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* altivec.md (altivec_lvsl): New define_expand.
(altivec_lvsl_direct): Rename define_insn from altivec_lvsl.
(altivec_lvsr): New define_expand.
(altivec_lvsr_direct): Rename define_insn from altivec_lvsr.
* rs6000.c (rs6000_expand_builtin): Change to use
altivec_lvs[lr]_direct; remove commented-out code.
[gcc/testsuite]
2014-10-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Jan Hubicka [Fri, 3 Oct 2014 22:34:47 +0000 (22:34 +0000)]
ipa-polymorphic-call.c (decl_maybe_in_construction_p): Be ready for BASE and OUTER_TYPE being NULL.
* ipa-polymorphic-call.c (decl_maybe_in_construction_p): Be ready
for BASE and OUTER_TYPE being NULL.
(ipa_polymorphic_call_context::possible_dynamic_type_change): Add
in_poly_cdtor parameter.
Bill Schmidt [Fri, 3 Oct 2014 21:32:20 +0000 (21:32 +0000)]
rs6000-c.c (altivec_resolve_overloaded_builtin): Issue a warning message when vec_lvsl or vec_lvsr is used with a little endian...
[gcc]
2014-10-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
Issue a warning message when vec_lvsl or vec_lvsr is used with a
little endian target.
[gcc/testsuite]
2014-10-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* g++.dg/ext/altivec-2.C: Compile with -Wno-deprecated to avoid
failing with the new warning message.
* gcc.dg/vmx/3c-01a.c: Likewise.
* gcc.dg/vmx/ops-long-1.c: Likewise.
* gcc.dg/vmx/ops.c: Likewise.
* gcc.target/powerpc/altivec-20.c: Likewise.
* gcc.target/powerpc/altivec-6.c: Likewise.
* gcc.target/powerpc/altivec-vec-merge.c: Likewise.
* gcc.target/powerpc/vsx-builtin-8.c: Likewise.
* gcc.target/powerpc/warn-lvsl-lvsr.c: New test.
tree-pretty-print.c (dump_location): Make it extern.
gcc/ChangeLog:
2014-10-03 Manuel López-Ibáñez <manu@gcc.gnu.org>
* tree-pretty-print.c (dump_location): Make it extern. Dump also
the column.
* tree-pretty-print.h (dump_location): Declare.
* gimple-pretty-print.c (dump_gimple_phi): Use dump_location.
(pp_gimple_stmt_1): Likewise.
(dump_implicit_edges): Likewise.
* gimplify.c (gimplify_call_expr): Use LOCATION_FILE and
LOCATION_LINE.
David Malcolm [Fri, 3 Oct 2014 20:25:30 +0000 (20:25 +0000)]
Fix build breakage on darwin introduced by me in r215861
gcc/ChangeLog:
* gcc.c (driver::global_initializations): Remove "const" so
that GCC_DRIVER_HOST_INITIALIZATION can modify decoded_options
and decoded_options_count.
Jan Hubicka [Fri, 3 Oct 2014 20:18:52 +0000 (20:18 +0000)]
ipa-polymorphic-call.c (decl_maybe_in_construction_p): Be ready for BASE and OUTER_TYPE being NULL.
* ipa-polymorphic-call.c (decl_maybe_in_construction_p): Be ready
for BASE and OUTER_TYPE being NULL.
(ipa_polymorphic_call_context::possible_dynamic_type_change): Add
in_poly_cdtor parameter.
Bill Schmidt [Fri, 3 Oct 2014 20:06:38 +0000 (20:06 +0000)]
lex.c (search_line_fast): Add new version to be used for Power8 and later targets when Altivec is enabled.
2014-10-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* lex.c (search_line_fast): Add new version to be used for Power8
and later targets when Altivec is enabled. Restrict the existing
Altivec version to big-endian systems so that lvsr is not used on
little endian, where it is deprecated. Remove LE-specific code
from the now-BE-only version.
Marc Glisse [Fri, 3 Oct 2014 19:57:01 +0000 (21:57 +0200)]
re PR c++/54427 (Expose more vector extensions)
2014-10-03 Marc Glisse <marc.glisse@inria.fr>
PR c++/54427
PR c++/57198
PR c++/58845
gcc/c-family/
* c-common.c (warn_logical_operator): Punt for vectors.
gcc/cp/
* typeck.c (cp_build_binary_op): save_expr after convert to save
redundant operations.
[TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR]: Handle vectors.
(cp_build_unary_op) [TRUTH_NOT_EXPR]: Likewise.
gcc/
* doc/extend.texi (Vector Extensions): Document &&, ||, ! in C++.
gcc/testsuite/
* g++.dg/ext/vector9.C: Update, not an error anymore.
* g++.dg/ext/vector27.C: Replace with new test.
* g++.dg/ext/vector28.C: New file.
* g++.dg/other/error23.C: Update to a different error.
Jakub Jelinek [Fri, 3 Oct 2014 18:19:12 +0000 (20:19 +0200)]
i386.c (ix86_expand_vec_perm_vpermi2): Fix up formatting.
* config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Fix up formatting.
(ix86_expand_vec_perm): Only call ix86_expand_vec_perm_vpermi2 if
TARGET_AVX512F.
(expand_vec_perm_1): Likewise.
Jakub Jelinek [Fri, 3 Oct 2014 18:17:45 +0000 (20:17 +0200)]
vshuf-v8df.c: New test.
* gcc.dg/torture/vshuf-v8df.c: New test.
* gcc.dg/torture/vshuf-v8di.c: New test.
* gcc.dg/torture/vshuf-v16sf.c: New test.
* gcc.dg/torture/vshuf-v16si.c: New test.
* gcc.dg/torture/vshuf-v32hi.c: New test.
* gcc.dg/torture/vshuf-v64qi.c: New test.
* gcc.dg/torture/vshuf-64.inc: New file.
Jakub Jelinek [Fri, 3 Oct 2014 18:16:09 +0000 (20:16 +0200)]
re PR tree-optimization/61403 (An opportunity for x86 gcc vectorizer (~40% gain))
PR tree-optimization/61403
* config/i386/i386.c (expand_vec_perm_palignr): Fix a spelling
error in comment. Also optimize 256-bit vectors for AVX2
or AVX (floating vectors only), provided the first permutation
can be performed in one insn.
Jason Merrill [Fri, 3 Oct 2014 16:48:24 +0000 (12:48 -0400)]
decl.c (start_decl): Complain about static/thread_local vars in constexpr function.
* decl.c (start_decl): Complain about static/thread_local vars
in constexpr function.
(check_for_uninitialized_const_var): Also uninitialized vars.
* parser.c (cp_parser_jump_statement): And gotos.
(cp_parser_asm_operand_list): And asm.
(cp_parser_try_block): And try.
* semantics.c (ensure_literal_type_for_constexpr_object): And
non-literal.
David Malcolm [Fri, 3 Oct 2014 16:28:03 +0000 (16:28 +0000)]
gcc.c: Split up the driver's "main" into smaller functions
gcc/ChangeLog:
* gcc.c (class driver): New class.
(main): Reimplement in terms of driver::main, moving most of the
locals to be locals within individual methods of class driver.
The remaining locals "explicit_link_files", "decoded_options" and
"decoded_options_count" are used by multiple driver:: methods, and
so become member data. Doing so isolates the argc/argv reads and
writes. Replace "goto out" with a special exit code from
new method driver::prepare_infiles. Split out the old
implementation of main into the following...
(driver::main): New function, corresponding to the old "main"
implementation.
(driver::set_progname): New function, taken from the old
"main" implementation.
(driver::expand_at_files): Likewise.
(driver::decode_argv): Likewise.
(driver::global_initializations): Likewise.
(driver::build_multilib_strings): Likewise.
(driver::set_up_specs): Likewise.
(driver::putenv_COLLECT_GCC): Likewise.
(driver::maybe_putenv_COLLECT_LTO_WRAPPER): Likewise.
(driver::handle_unrecognized_options): Likewise.
(driver::maybe_print_and_exit): Likewise.
(driver::prepare_infiles): Likewise.
(driver::do_spec_on_infiles): Likewise.
(driver::maybe_run_linker): Likewise.
(driver::final_actions): Likewise.
(driver::get_exit_code): Likewise.
re PR go/61877 (reflect: cannot use []string as type string in Call)
PR go/61877
refect: fix direct call of variadic method value
As reported in bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61877
gcc mainline has regressed in this. This CL adds the tests proposed
for the main Go repository:
restores the code from the amd64/386 path that makes this work and
was lost when the Go 1.3 stdlib was merged and changes the FFI path
to call into the same helper code as the amd64/386 path.
I've only tested this on amd64 but I did test a version that was
patched to unconditionally take the FFI path.
PR libgomp/61200
* omp-low.c (taskreg_contexts): New variable.
(scan_omp_parallel): Push newly created context into taskreg_contexts
vector and move record layout code to finish_taskreg_scan.
(scan_omp_task): Likewise.
(finish_taskreg_scan): New function.
(execute_lower_omp): Call finish_taskreg_scan on all taskreg_contexts
vector elements and release it.
Jakub Jelinek [Fri, 3 Oct 2014 07:27:50 +0000 (09:27 +0200)]
re PR target/62128 (Use vpalignr for AVX2 rotation)
PR target/62128
* config/i386/i386.c (expand_vec_perm_palignr): If op1, op0 order
of palignr arguments can't be used due to min 0 or max - min
too high, try also op0, op1 order of palignr arguments.
* gcc.dg/torture/vshuf-16.inc (TESTS): Add 2 new permutations.
* gcc.dg/torture/vshuf-32.inc (TESTS): Add 5 new permutations.