1. 15 Nov, 2018 18 commits
    • Machine-readable diagnostic output (PR other/19165) · 478dd60d
      This patch implements a -fdiagnostics-format=json option which
      converts the diagnostics to be output to stderr in a JSON format;
      see the documentation in invoke.texi.
      
      Logically-related diagnostics are nested at the JSON level, using
      the auto_diagnostic_group mechanism.
      
      gcc/ChangeLog:
      	PR other/19165
      	* Makefile.in (OBJS): Move json.o to...
      	(OBJS-libcommon): ...here and add diagnostic-format-json.o.
      	* common.opt (fdiagnostics-format=): New option.
      	(diagnostics_output_format): New enum.
      	* diagnostic-format-json.cc: New file.
      	* diagnostic.c (default_diagnostic_final_cb): New function, taken
      	from start of diagnostic_finish.
      	(diagnostic_initialize): Initialize final_cb to
      	default_diagnostic_final_cb.
      	(diagnostic_finish): Move "being treated as errors" messages to
      	default_diagnostic_final_cb.  Call any final_cb.
      	(default_diagnostic_finalizer): Add diagnostic_t param.
      	(diagnostic_report_diagnostic): Pass "orig_diag_kind" to
      	diagnostic_finalizer callback.
      	* diagnostic.h (enum diagnostics_output_format): New enum.
      	(diagnostic_finalizer_fn): Reimplement, adding diagnostic_t param.
      	(struct diagnostic_context): Add "final_cb".
      	(default_diagnostic_finalizer): Add diagnostic_t param.
      	(diagnostic_output_format_init): New decl.
      	* doc/invoke.texi (-fdiagnostics-format): New option.
      	* dwarf2out.c (gen_producer_string): Ignore
      	OPT_fdiagnostics_format_.
      	* gcc.c (driver_handle_option): Handle OPT_fdiagnostics_format_.
      	* lto-wrapper.c (append_diag_options): Ignore it.
      	* opts.c (common_handle_option): Handle it.
      
      gcc/c-family/ChangeLog:
      	PR other/19165
      	* c-opts.c (c_diagnostic_finalizer): Add diagnostic_t param.
      
      gcc/fortran/ChangeLog:
      	PR other/19165
      	* error.c (gfc_diagnostic_finalizer): Add diagnostic_t param.
      
      gcc/jit/ChangeLog:
      	PR other/19165
      	* dummy-frontend.c (jit_begin_diagnostic): Add diagnostic_t param.
      
      gcc/testsuite/ChangeLog:
      	PR other/19165
      	* c-c++-common/diagnostic-format-json-1.c: New test.
      	* c-c++-common/diagnostic-format-json-2.c: New test.
      	* c-c++-common/diagnostic-format-json-3.c: New test.
      	* c-c++-common/diagnostic-format-json-4.c: New test.
      	* c-c++-common/diagnostic-format-json-5.c: New test.
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
      	(custom_diagnostic_finalizer): Add diagnostic_t param.
      	* gcc.dg/plugin/location_overflow_plugin.c
      	(verify_unpacked_ranges): Likewise.
      	(verify_no_columns): Likewise.
      	* gfortran.dg/diagnostic-format-json-1.F90: New test.
      	* gfortran.dg/diagnostic-format-json-2.F90: New test.
      	* gfortran.dg/diagnostic-format-json-3.F90: New test.
      
      From-SVN: r266186
      David Malcolm committed
    • graphite: add missing dump_enabled_p checks (PR tree-optimization/88015) · ef190c93
      gcc/ChangeLog:
      	PR tree-optimization/88015
      	* graphite-isl-ast-to-gimple.c
      	(translate_isl_ast_to_gimple::scop_to_isl_ast): Add missing check
      	for dump_enabled_p.
      	* graphite-sese-to-poly.c (build_poly_scop): Likewise.
      
      From-SVN: r266184
      David Malcolm committed
    • re PR tree-optimization/88029 (ICE in execute_todo, at passes.c:1974) · 0e02fb26
      2018-11-15  Richard Biener  <rguenther@suse.de>
      
              PR middle-end/88029
              * gimple.c (gimple_call_flags): Union flags from decl, type
              and call fntype.
              * trans-mem.c (is_tm_pure_call): Simplify.
      
              * gcc.dg/tree-ssa/pr88029.c: New testcase.
      
      From-SVN: r266183
      Richard Biener committed
    • re PR tree-optimization/88031 (ICE in vectorizable_reduction, at tree-vect-loop.c:6953) · 22692f3c
      2018-11-15  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/88031
      	* tree-vect-loop.c (vectorizable_reduction): Move check
      	for multiple types earlier so we get the expected dump.
      	Simplify calls to vectorizable_condition.
      	* tree-vect-stmts.h (vectorizable_condition): Update prototype.
      	* tree-vect-stmts.c (vectorizable_condition): Instead of
      	reduc_def and reduc_index take just a flag.  Simplify
      	code-generation now that we can rely on the defs being set up.
      	(vectorizable_comparison): Remove unused argument.
      
      	* gcc.dg/pr88031.c: New testcase.
      
      From-SVN: r266182
      Richard Biener committed
    • [C++ DR 2336] Clean up synth walkers first · 3f5a0fde
      https://gcc.gnu.org/ml/gcc-patches/2018-11/msg01376.html
      	* cp-tree.h (enum special_function_kind): Reorder and comment.
      	* method.c (SFK_CTOR_P, SFK_DTOR_P, SFK_ASSIGN_P, SFK_COPY_P)
      	(SFK_MOVE_P): New predicates.
      	(walk_field_subobs, synthesized_method_base_walk): Drop
      	copy_arg_p, move_p, assign_p args.  Use new SFK predicates.  Order
      	parameters consistently.
      	(synthesized_method_walk): Drop ctor_p, copy_arg_p, move_p,
      	assign_p calculations.  Use new SFK predicates.  Adjust calls to
      	worker functions.
      
      From-SVN: r266180
      Nathan Sidwell committed
    • Fix spaces in PR62178 test · e99d38d0
      Fix spaces in scan assembler tests.
      
          testsuite/
      	* gcc.target/aarch64/pr62178.c: Fix spaces.
      
      From-SVN: r266179
      Wilco Dijkstra committed
    • misc.c (gnat_init_gcc_eh): Do not override the switch -fnon-call-exceptions… · 5f3040ed
      misc.c (gnat_init_gcc_eh): Do not override the switch -fnon-call-exceptions passed on the command line in...
      
      	* gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the switch
      	-fnon-call-exceptions passed on the command line in -gnatp mode.
      
      From-SVN: r266176
      Eric Botcazou committed
    • re PR tree-optimization/88030 (ICE in calc_dfs_tree, at dominance.c:458) · bca7138a
      2018-11-15  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/88030
      	* tree-complex.c (need_eh_cleanup): New global.
      	(update_complex_assignment): Mark blocks that need EH update.
      	(expand_complex_comparison): Likewise.
      	(tree_lower_complex): Allocate and deallocate need_eh_cleanup,
      	perform EH cleanup and schedule CFG cleanup if that did anything.
      
      	* gcc.dg/tsan/pr88030.c: New testcase.
      
      From-SVN: r266175
      Richard Biener committed
    • re PR rtl-optimization/88018 (ICE in insert_insn_on_edge at cfgrtl.c:1952 since r255066) · 3df45f17
      	PR rtl-optimization/88018
      	* cfgrtl.c (fixup_abnormal_edges): Guard moving insns to fallthru edge
      	on the presence of fallthru edge, rather than if it is a USE or not.
      
      	* g++.dg/tsan/pr88018.C: New test.
      
      From-SVN: r266174
      Jakub Jelinek committed
    • re PR tree-optimization/87917 (ICE in initialize_matrix_A at gcc/tree-data-ref.c:3150) · ef0519fd
      2018-11-15  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/87917
      	* tree-data-ref.c (analyze_miv_subscript): Guard calls to
      	analyze_subscript_affine_affine properly.
      
      	* gcc.dg/tree-ssa/pr87917.c: New testcase.
      
      From-SVN: r266173
      Richard Biener committed
    • csky-linux-elf.h (LINUX_DYNAMIC_LINKER): Remove. · 28209372
      2018-11-15  Xianmiao Qu  <xianmiao_qu@c-sky.com>
      
      	gcc/
      	* config/csky/csky-linux-elf.h (LINUX_DYNAMIC_LINKER): Remove.
      	(GLIBC_DYNAMIC_LINKER): Define.
      	(LINUX_TARGET_LINK_SPEC): Update the dynamic linker's name.
      
      	libgcc/
      	* config/csky/linux-unwind.h: Fix coding style.
      
      From-SVN: r266172
      Xianmiao Qu committed
    • re PR tree-optimization/84648 (Missed optimization : loop not removed.) · a81e2c62
      
      	PR tree-optimization/84648
      	* tree-ssa-loop-niter.c (adjust_cond_for_loop_until_wrap): New.
      	(number_of_iterations_cond): Adjust exit cond for loop-until-wrap case
      	by calling adjust_cond_for_loop_until_wrap.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/pr84648.c: New test.
      	* gcc.dg/pr68317.c: Add warning check on overflow.
      
      From-SVN: r266171
      Bin Cheng committed
    • re PR other/56334 (__attribute__((aligned)) documentation is misleading) · d8fdf280
      2018-11-15  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR other/56334
      
      	gcc/
      	* doc/extend.texi (Common Function Attributes): Clarify linker
      	restrictions on "aligned" attribute.
      	(Common Variable Attributes): Likewise.  Mention that linker
      	restrictions don't apply to stack-allocated variables.
      
      From-SVN: r266170
      Sandra Loosemore committed
    • gensupport.c (add_predicate_code): Properly handle ZERO_EXTRACT as an lvalue. · 4822d9cb
              * gensupport.c (add_predicate_code): Properly handle ZERO_EXTRACT
              as an lvalue.
      
      From-SVN: r266169
      Joern Rennecke committed
    • re PR lto/55102 (The options -flto and -On do not behave as described in GCC docs) · ef0336dc
      2018-11-14  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR lto/55102
      	PR lto/56700
      
      	gcc/
      	* doc/invoke.texi (Optimize Options): Remove bad example about
      	interaction between -flto and -O.  Replace it with a note that
      	you need to compile with -O and not just link.  Copy-edit -flto
      	discussion to reduce verbiage and improve flow.
      
      From-SVN: r266168
      Sandra Loosemore committed
    • Daily bump. · 97eb702c
      From-SVN: r266167
      GCC Administrator committed
    • Optimize pool resource allocation · a15032ee
      A recent change caused a performance regression. This restores the
      previous performance and adds a performance test.
      
      	* scripts/check_performance: Allow tests to choose a -std flag.
      	* src/c++17/memory_resource.cc (bitset::get_first_unset()): Use local
      	variables of the right types. Call update_next_word() unconditionally.
      	* testsuite/20_util/unsynchronized_pool_resource/cons.cc: New test.
      	* testsuite/performance/20_util/memory_resource/pools.cc: New test.
      	* testsuite/util/testsuite_performance.h (time_counter): Allow
      	timer to be restarted.
      
      From-SVN: r266164
      Jonathan Wakely committed
    • Fix test that does undefined shifts greater than width of size_t · aeb2b1f7
      	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Fix
      	test for 32-bit targets. Test additional allocation sizes.
      
      From-SVN: r266163
      Jonathan Wakely committed
  2. 14 Nov, 2018 22 commits
    • re PR middle-end/59658 (Document -f* flags enabled by -Og) · ded7b411
      2018-11-14  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR middle-end/59658
      
      	gcc/
      	* doc/invoke.texi (Optimize Options): Clarify that -O0 and -Og
      	also suppress many optimizations.  Alphabetize option lists for
      	-O1, -O2, and -Os.  Add list of options disabled with -Og, and
      	correct documentation for those options to say that.
      	* opts.c (default_options_table): Sort table by level and option
      	name, to make it easier to correlate to the manual.
      
      From-SVN: r266162
      Sandra Loosemore committed
    • i386.c (ix86_print_operand_address_as): Simplify printing of the names of segment registers. · 281d448d
      	* config/i386/i386.c (ix86_print_operand_address_as): Simplify
      	printing of the names of segment registers.
      
      From-SVN: r266161
      Uros Bizjak committed
    • [debug/88006] -fdebug-types-section gives undefined ref · 89d9bf44
      https://gcc.gnu.org/ml/gcc-patches/2018-11/msg01280.html
      	PR debug/88006
      	PR debug/87462
      	* dwarf2out.c (dwarf2out_finish): Apply resolve_addr to comdat
      	type list.
      
      	* g++.dg/debug/dwarf2/pr87462.C: New.
      	* g++.dg/debug/dwarf2/pr88006.C: New.
      
      From-SVN: r266158
      Nathan Sidwell committed
    • Add missing ZLIBINC to CFLAGS-optinfo-emit-json.o · 1ded030b
      gcc/ChangeLog:
      	* Makefile.in (CFLAGS-optinfo-emit-json.o): Add $(ZLIBINC).
      
      From-SVN: r266156
      David Malcolm committed
    • parser.c (make_id_declarator): Add location_t parameter. · 03f3f0f2
      /cp
      2018-11-14  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* parser.c (make_id_declarator): Add location_t parameter.
      	(cp_parser_lambda_declarator_opt): Adjust call.
      	(cp_parser_decomposition_declaration): Likewise.
      	(cp_parser_alias_declaration): Likewise.
      	(cp_parser_direct_declarator): Likewise.
      	(cp_parser_member_declaration): Likewise.
      	(cp_parser_objc_class_ivars): Likewise.
      	* decl.c (grokdeclarator): Use declarator->id_loc in two error
      	messages.
      
      /testsuite
      2018-11-14  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/cpp0x/nsdmi-union6.C: Test locations too.
      	* g++.dg/cpp0x/nsdmi6.C: Likewise.
      	* g++.dg/ext/flexary4.C: Likewise.
      	* g++.dg/ext/flexary9.C: Likewise.
      	* g++.dg/other/incomplete2.C: Likewise.
      	* g++.dg/parse/friend12.C: Likewise.
      
      From-SVN: r266155
      Paolo Carlini committed
    • Handle libphobos in contrib/gcc_update · 357044d2
      	* gcc_update (files_and_dependencies): Handle libphobos.
      
      From-SVN: r266154
      Rainer Orth committed
    • P1236R1 - Signed integers are two's complement · 8ee09943
      	P1236R1 - Signed integers are two's complement
      gcc/cp/
      	* constexpr.c (cxx_eval_check_shift_p): Disable the signed LSHIFT_EXPR
      	checks for c++2a.
      gcc/c-family/
      	* c-warn.c (maybe_warn_shift_overflow): Don't warn for c++2a.
      	* c-ubsan.c (ubsan_instrument_shift): Make signed shifts
      	with in-range second operand well defined for -std=c++2a.
      gcc/
      	* doc/invoke.texi (Wshift-overflow): Adjust documentation for
      	c++2a.
      gcc/testsuite/
      	* g++.dg/cpp2a/constexpr-shift1.C: New test.
      	* g++.dg/warn/permissive-1.C (enum A, enum D): Don't expect
      	diagnostics here for c++2a.
      	* g++.dg/cpp0x/constexpr-shift1.C (fn3, i3, fn4, i4): Don't expect
      	diagnostics here for c++2a.
      	* g++.dg/cpp0x/constexpr-60049.C (f3, x3, y3): Likewise.
      	* g++.dg/ubsan/cxx11-shift-1.C (main): Add some further tests.
      	* g++.dg/ubsan/cxx11-shift-2.C (main): Likewise.
      	* g++.dg/ubsan/cxx2a-shift-1.C: New test.
      	* g++.dg/ubsan/cxx2a-shift-2.C: New test.
      
      From-SVN: r266153
      Jakub Jelinek committed
    • re PR bootstrap/86739 (Bootstrap broken with host GCC 4.1.2) · 12763abc
      	PR bootstrap/86739
      	* hash-map.h (hash_map::iterator::reference_pair): New class.
      	(hash_map::iterator::operator*): Return it rather than std::pair.
      
      From-SVN: r266152
      Jakub Jelinek committed
    • optabs.c (expand_binop): Pass INT_MODE to operand_subword_force iff the operand is a constant. · c933b893
      	* optabs.c (expand_binop): Pass INT_MODE to operand_subword_force
      	iff the operand is a constant.
      
      	* gcc.c-torture/compile/20181114.c: New test.
      
      2018-11-14  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      From-SVN: r266151
      Jeff Law committed
    • * gimple-ssa-evrp-analyze.c · ff361cc6
      	(evrp_range_analyzer::record_ranges_from_incoming_edge): Rename
      	ignore_equivs_equal_p to equal_p.
      	* ipa-cp.c (meet_with_1): Use equal_p instead of
      	ignore_equivs_equal_p.
      	* ipa-prop.c (ipa_vr_ggc_hash_traits::equal): Same.
      	* tree-vrp.c (value_range::ignore_equivs_equal_p): Remove.
      	(value_range::operator==): Remove.
      	(value_range::operator!=): Remove.
      	(vrp_prop::visit_stmt): Use equal_p.
      	* tree-vrp.h (value_range): Remove operator==, operator!=,
      	ignore_equivs_equal_p.
      	* vr-values.c (update_value_range): Use equal_p.
      
      From-SVN: r266150
      Aldy Hernandez committed
    • Add comment · 62ec3fe8
      From-SVN: r266149
      Michael Matz committed
    • re PR middle-end/86575 (-Wimplicit-fallthrough affects code generation) · 725891a0
      Fix PR middle-end/86575
      
      	PR middle-end/86575
      	* gimplify.c (collect_fallthrough_labels): Add new argument,
      	return location via that, don't modify statements.
      	(warn_implicit_fallthrough_r): Adjust call, don't use
      	statement location directly.
      
      From-SVN: r266148
      Michael Matz committed
    • re PR tree-optimization/87985 (Compile-time and memory hog w/ -O1 -ftree-slp-vectorize) · e81d464c
      2018-11-14  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/87985
      	* tree-data-ref.c (split_constant_offset): Add wrapper
      	allocating a cache hash-map.
      	(split_constant_offset_1): Cache results of expanding
      	expressions from SSA def stmts.
      
      	* gcc.dg/pr87985.c: New testcase.
      
      From-SVN: r266147
      Richard Biener committed
    • Add missing dir to create_testsuite_files script · 78ef03b7
      	* scripts/create_testsuite_files: Add special_functions to the list
      	of directories to search. Add comment referring to conformance.exp.
      	* testsuite/libstdc++-dg/conformance.exp: Add comment referring
      	to create_testsuite_files.
      
      From-SVN: r266146
      Jonathan Wakely committed
    • [PATCH 2/2] S/390: Fix expectation in mrecord-mcount test for 31-bit · 487a4df6
       mode
      
      The emitted address is .long, not .quad, in that case.
      
      gcc/testsuite/ChangeLog:
      
      2018-11-14  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	* gcc.target/s390/mrecord-mcount.c (profileme): Expect .long in
      	31-bit mode.
      
      From-SVN: r266145
      Ilya Leoshkevich committed
    • [PATCH 1/2] S/390: Disable 3 global-array-* tests for 31-bit mode · 867a1e28
      These tests rely on larl->movdi merge, which is not implemented for
      31-bit mode.
      
      gcc/testsuite/ChangeLog:
      
      2018-11-14  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	* gcc.target/s390/global-array-almost-huge-element.c: Run only
      	in 64-bit mode.
      	* gcc.target/s390/global-array-almost-negative-huge-element.c:
      	Likewise.
      	* gcc.target/s390/global-array-even-element.c: Likewise.
      
      From-SVN: r266144
      Ilya Leoshkevich committed
    • re PR testsuite/88021 (aarch64 Busy hang running testcase pr60183.c since revision 265914) · 9449a01e
      2018-11-14  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/88021
      	* tree-data-ref.c (lambda_matrix_row_add): Change const1 argument
      	to lambda_int.
      	(lambda_vector_mult_const): Likewise.
      	(lambda_matrix_right_hermite): Use lambda_int temporaries.
      
      From-SVN: r266143
      Richard Biener committed
    • Simplify floating point comparisons · 5e21d765
      This patch implements some of the optimizations discussed in PR71026.
      
      Simplify (C / x >= 0.0) into x >= 0.0 with -funsafe-math-optimizations
      (since C / x can underflow to zero if x is huge, it's not safe otherwise).
      If C is negative the comparison is reversed.
      
      Simplify (x * C1) > C2 into x > (C2 / C1) with -funsafe-math-optimizations.
      If C1 is negative the comparison is reversed.
      
          gcc/
      	PR 71026/tree-optimization
      	* match.pd: Simplify floating point comparisons.
      
          gcc/testsuite/
      	PR 71026/tree-optimization
      	* gcc.dg/div-cmp-1.c: New test.
      	* gcc.dg/div-cmp-2.c: New test.
      
      Co-Authored-By: Jackson Woodruff <jackson.woodruff@arm.com>
      
      From-SVN: r266142
      Wilco Dijkstra committed
    • re PR other/88007 (ICE in gt_ggc_m_S, at ggc-page.c:1474) · 8cca0163
      	PR other/88007
      	* c-common.c (parse_optimize_options): Allocate option string from
      	opts_obstack rather than as GC memory.  Move the allocation after
      	warning for invalid option.
      
      	* gcc.dg/pr88007.c: New test.
      
      From-SVN: r266141
      Jakub Jelinek committed
    • re PR rtl-optimization/87817 (gcc.target/i386/bmi2-bzhi-2.c execution test) · 5bfba2b5
      	PR rtl-optimization/87817
      	* config/i386/i386.c (ix86_fold_builtin): For _bzhi_u{32,64} if
      	last argument has low 8 bits clear, fold to 0.
      
      	* gcc.target/i386/bmi2-bzhi-3.c (main): Add a couple of new tests.
      
      From-SVN: r266140
      Jakub Jelinek committed
    • [AArch64] Fix PR62178 testcase failures · ff4d8480
      The testcase for PR62178 has been failing for a while due to the pass
      conditions being too tight, resulting in failures with -mcmodel=tiny:
      
      	ldr	q2, [x0], 124
      	ld1r	{v1.4s}, [x1], 4
      	cmp	x0, x2
      	mla	v0.4s, v2.4s, v1.4s
      	bne	.L7
      
      -mcmodel=small generates the slightly different:
      
      	ldr	q1, [x0], 124
      	ldr	s2, [x1, 4]!
      	cmp	x0, x2
      	mla	v0.4s, v1.4s, v2.s[0]
      	bne	.L7
      
      This is due to Combine merging a DUP instruction with either a load
      or MLA - we can't force it to prefer one over the other.  However the
      generated vector loop is fast either way since it generates MLA and
      merges the DUP either with a load or MLA.  So relax the conditions
      slightly and check we still generate MLA and there is no DUP or FMOV.
      
      The testcase now passes - committed as obvious.
      
          testsuite/
      	* gcc.target/aarch64/pr62178.c: Relax scan-assembler checks.
      
      From-SVN: r266139
      Wilco Dijkstra committed
    • fix Darwin bootstrap. · b2581735
      gcc/
      
      	* tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Cast
      	MAX_OFILE_ALIGNMENT as needed.
      
      From-SVN: r266138
      Iain Sandoe committed