Commit Graph

165481 Commits

Author SHA1 Message Date
Ed Schonberg
5bb88560d7 [Ada] Enhance comment
2018-12-03  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch3.adb (Complete_Private_Subtype): Enhance comment.

From-SVN: r266749
2018-12-03 15:48:03 +00:00
Olivier Hainque
7beb2b9dd2 [Ada] Gigi support for OpenACC pragmas
Matching front-end bits to support Acc_Kernels, Acc_Parallel,
Acc_Loop and Acc_Data.

2018-12-03  Olivier Hainque  <hainque@adacore.com>

gcc/ada/

	* gcc-interface/lang.opt (fopenacc): New option for Ada.
	* gcc-interface/misc.c (gnat_handle_option): Handle it.
	* gcc-interface/trans.c (struct loop_info_d): Add OMP
	attributes.
	(Iterate_Acc_Clause_Arg, Acc_gnat_to_gnu): New functions,
	helpers for OpenACC pragmas processing in Pragma_to_gnu.
	(Acc_Var_to_gnu, Acc_Reduc_Var_to_gnu, Acc_Reduc_to_gnu):
	Likewise.
	(Acc_Size_Expr_to_gnu, Acc_Size_List_to_gnu): Likewise.
	(Pragma_Acc_Data_to_gnu): Likewise.
	(Pragma_to_gnu): Handle Pragma_Acc_Loop, Pragma_Acc_Data,
	Pragma_Acc_Kernels and Pragma_Acc_Parallel.
	(Acc_Loop_to_gnu, Regular_Loop_to_gnu): New functions. Helpers
	for ...
	(Loop_Statement_to_gnu): Rework to handle OpenACC loops.

From-SVN: r266748
2018-12-03 15:47:57 +00:00
Olivier Hainque
e663d4d985 [Ada] Adjust the default MALLOC_OBSERVABLE_ALIGNMENT to 2 * POINTER_SIZE
Instead of 2 * LONG_TYPE_SIZE. POINTER_SIZE is believed to be the
correct base on more configurations than LONG_TYPE_SIZE and this
adjustment prevents the need for local patches to compensate on
configurations where the latter is inappropriate, for example
x86_64-mingw.

2018-12-03  Olivier Hainque  <hainque@adacore.com>

gcc/ada/

	* gcc-interface/targtyps.c (MALLOC_OBSERVABLE_ALIGNMENT): Set to
	2 * POINTER_SIZE.

From-SVN: r266747
2018-12-03 15:47:52 +00:00
Ed Schonberg
1ab144aec0 [Ada] Missing check on if-expression
This patch fixes a constraint check on a dependent expression of an
if-expression, when the context if given by a slice or the 'Range of
an array. The constraint check is applied if the context is constrained,
but the corresponding flag was not set for the index subtype generated
for a slice (explicit or implicit).

Executing:
   gprbuild -P test -q main
   ./main

Must yield:
   raised CONSTRAINT_ERROR : foo.ads:13 range check failed

----
with Types;
generic
   Buffer : in out Types.Buffer;
package Foo
is
   function Get (Pos : Natural) return Integer;

private
   function Get (Pos : Natural) return Integer
   is (Buffer ((if Pos in Buffer'Range then Pos else Buffer'First)));
end Foo;
----
with Foo;
with Types;
with Usefoo;

procedure Main is
   Z : Types.Buffer := (Natural'Last .. Natural'Last - 1 => 0);
   R : Integer;
begin
   Usefoo.Do_Something (Z, R);
end Main;
----
pragma SPARK_Mode (On);
pragma Profile (Ravenscar);
pragma Partition_Elaboration_Policy (Sequential);
----
project Test is
  package Compiler is
    for Default_Switches ("Ada") use ("-gnatws");
    for Local_Configuration_Pragmas use "test.adc";
  end Compiler;
end Test;
----
package Types
is
   subtype Natural_Without_Last is Natural range 1 .. Natural'Last - 1;
   type Buffer is array (Natural_Without_Last range <>) of Integer;

end Types;
----
with Foo;

package body Usefoo
is

   procedure Do_Something (B : in out Types.Buffer;
                           R : out Integer)
   is
      package F is new Foo (B (B'First .. B'First + B'Length / 2 - 1));
   begin
      R := F.Get (B'First + B'Length / 2 - 1);
   end Do_Something;

end Usefoo;
----
with Types;

package Usefoo
is

   procedure Do_Something (B : in out Types.Buffer;
                           R : out Integer)
                           with Pre => B'First > 0;

end Usefoo;

2018-12-03  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_res.adb (Set_Slice_Subtype): The index type of a slice is
	constrained.

From-SVN: r266746
2018-12-03 15:46:23 +00:00
Fritz Reese
7ed760c793 re PR fortran/87919 (Incorrect fortran handling of -fno-* options)
2018-12-03  Fritz Reese  <fritzoreese@gmail.com>
            Mark Eggleston <mark.eggleston@codethink.co.uk>

    PR fortran/87919

    gcc/fortran/ChangeLog:

	PR fortran/87919
	* options.c (SET_FLAG, SET_BITFLAG, SET_BITFLAG2): New macros.
	(set_dec_flags): Set/unset DEC and std flags according to value.
	(set_init_local_zero): New helper for -finit-local-zero flag group.
	(gfc_init_options): Fix disabling of init flags, array temporaries
	check, and dec flags when value is zero (from -fno-*).

    gcc/testsuite/ChangeLog:

	PR fortran/87919
	* gfortran.dg/array_temporaries_5.f90: New test.
	* gfortran.dg/dec_bitwise_ops_3.f90: Ditto.
	* gfortran.dg/dec_d_lines_3.f: Ditto.
	* gfortran.dg/dec_exp_4.f90: Ditto.
	* gfortran.dg/dec_exp_5.f90: Ditto.
	* gfortran.dg/dec_io_7.f90: Ditto.
	* gfortran.dg/dec_structure_24.f90: Ditto.
	* gfortran.dg/dec_structure_25.f90: Ditto.
	* gfortran.dg/dec_structure_26.f90: Ditto.
	* gfortran.dg/dec_structure_27.f90: Ditto.
	* gfortran.dg/dec_type_print_3.f90: Ditto.
	* gfortran.dg/init_flag_20.f90: Ditto.


Co-Authored-By: Mark Eggleston <mark.eggleston@codethink.co.uk>

From-SVN: r266745
2018-12-03 15:42:51 +00:00
Jeff Law
509f987074 h8300.md (low byte masking peepholes): Only accept nonimmediate_operand for the to-be-masked operand.
* config/h8300/h8300.md (low byte masking peepholes): Only accept
	nonimmediate_operand for the to-be-masked operand.

From-SVN: r266744
2018-12-03 08:21:15 -07:00
Jeff Law
bbb10360f3 pr59963-2.c: Make testnames unique.
* gcc.dg/pr59963-2.c: Make testnames unique.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-18.c: Likewise.

From-SVN: r266743
2018-12-03 08:17:03 -07:00
Richard Biener
867399e91a tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Only allow expected function-pointer cast re-instantiation.
2018-12-03  Richard Biener  <rguenther@suse.de>

	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Only
	allow expected function-pointer cast re-instantiation.

From-SVN: r266742
2018-12-03 15:13:04 +00:00
Ilya Leoshkevich
8c66130b1f S/390: Add support for section anchors
gcc/ChangeLog:

2018-12-03  Ilya Leoshkevich  <iii@linux.ibm.com>

	* common/config/s390/s390-common.c (s390_option_init_struct):
	Use section anchors by default.
	* config/s390/s390.c (s390_check_symref_alignment): Handle
	anchors.
	(TARGET_MAX_ANCHOR_OFFSET): Use short displacement.
	* output.h (assemble_align): Pass `align' as unsigned int, so
	that the value 0x80000000, which corresponds to `aligned(1 <<
	28)', would pass the `align > BITS_PER_UNIT' check.
	* varasm.c (assemble_align): Likewise.

gcc/testsuite/ChangeLog:

2018-12-03  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/nodatarel-1.c: Expect .LANCHOR0@GOTENT instead
	of a@GOTENT.
	* gcc.target/s390/section-anchors.c: New test.
	* gcc.target/s390/section-anchors2.c: New test.
	* gcc.target/s390/section-anchors3.c: New test.

From-SVN: r266741
2018-12-03 15:07:36 +00:00
Julian Brown
df3fdfa67f Fix infinite recursion in OMP clause pretty-printing, default label
gcc/
	* tree-pretty-print.c (dump_omp_clause): Make default case
	gcc_unreachable.

From-SVN: r266740
2018-12-03 13:46:19 +00:00
Richard Biener
476a31b55b re PR tree-optimization/88301 (Optimization regression with undefined unsigned overflow)
2018-12-03  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/88301
	* tree-vrp.c (register_edge_assert_for_2): Handle conversions
	that do not change the value by registering the same assert
	for the operand.

	* gcc.dg/tree-ssa/evrp13.c: New testcase.

From-SVN: r266739
2018-12-03 13:38:20 +00:00
Jakub Jelinek
959ded615c re PR tree-optimization/71109 (gcc ICE at -O3 on valid code on x86_64-linux-gnu in "maybe_record_trace_start")
PR tree-optimization/71109
	* gcc.c-torture/compile/pr71109.c: New test.

From-SVN: r266738
2018-12-03 14:30:41 +01:00
Richard Biener
bcda485bdf tree-vect-loop.c (vect_transform_loop): Properly compute upper bound for the epilogue when doing epilogue vectorization.
2018-12-03  Richard Biener  <rguenther@suse.de>

	* tree-vect-loop.c (vect_transform_loop): Properly compute
	upper bound for the epilogue when doing epilogue vectorization.

From-SVN: r266737
2018-12-03 13:24:08 +00:00
Jakub Jelinek
3eec96ce31 re PR target/88287 (aarch64/sve/vcond_1.C fails since r266620)
PR target/88287
	* g++.target/aarch64/sve/vcond_1.C: Adjust for comparison
	canonicalization.

From-SVN: r266736
2018-12-03 14:04:57 +01:00
Ilya Leoshkevich
98fe146e5b Repeat jump threading after combine
Consider the following RTL:

(insn (set (reg 65) (if_then_else (eq %cc 0) 1 0)))
(insn (parallel [(set %cc (compare (reg 65) 0)) (clobber %scratch)]))
(jump_insn (set %pc (if_then_else (ne %cc 0) (label_ref 23) %pc)))

Combine simplifies this into:

(note NOTE_INSN_DELETED)
(note NOTE_INSN_DELETED)
(jump_insn (set %pc (if_then_else (eq %cc 0) (label_ref 23) %pc)))

opening up the possibility to perform jump threading.

gcc/ChangeLog:

2018-12-03  Ilya Leoshkevich  <iii@linux.ibm.com>

	PR target/80080
	* cfgcleanup.c (class pass_postreload_jump): New pass.
	(pass_postreload_jump::execute): Likewise.
	(make_pass_postreload_jump): Likewise.
	* passes.def: Add pass_postreload_jump before
	pass_postreload_cse.
	* tree-pass.h (make_pass_postreload_jump): New pass.

gcc/testsuite/ChangeLog:

2018-12-03  Ilya Leoshkevich  <iii@linux.ibm.com>

	PR target/80080
	* gcc.target/s390/pr80080-4.c: New test.

From-SVN: r266734
2018-12-03 09:49:02 +00:00
Andi Kleen
e45130c59e Mark x86_64 only tests as such.
2018-12-02  Andi Kleen  <ak@linux.intel.com>

	* gcc.target/i386/returninst1.c: Run on 64bit only.
	* gcc.target/i386/returninst2.c: Dito.
	* gcc.target/i386/returninst3.c: Dito.

From-SVN: r266733
2018-12-03 01:06:56 +00:00
GCC Administrator
e4ce879570 Daily bump.
From-SVN: r266732
2018-12-03 00:16:24 +00:00
Uros Bizjak
c9c033f0c9 i386.c (inline_memory_move_cost): Correctly compute number of TFmode GPR moves.
* config/i386/i386.c (inline_memory_move_cost): Correctly
	compute number of TFmode GPR moves.

From-SVN: r266729
2018-12-02 23:21:37 +01:00
Jakub Jelinek
c10a94358f re PR target/88278 (Fails to elide zeroing of upper vector register)
PR target/88278
	* config/i386/sse.md (*vec_concatv4sf_0, *vec_concatv4si_0): New insns.

	* gcc.target/i386/pr88278.c: New test.
	* gcc.target/i386/pr53759.c: Don't expect vmovlps insn, expect vmovq
	instead.
	* gcc.target/i386/pr53759-2.c: New test.

From-SVN: r266728
2018-12-02 21:43:49 +01:00
Jeff Law
9253111511 h8300.md (call, call_value): Drop mode from operand containing number of bytes pushed.
* config/h8300/h8300.md (call, call_value): Drop mode from
	operand containing number of bytes pushed.
	(call_insn, call_value_insn): Use mode iterator for number
	of bytes pushed operand.  Make pattern name vary appropriately.

From-SVN: r266727
2018-12-02 11:31:44 -07:00
Jan Hubicka
3b131f6a86 bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges): trust precise profiles.
* bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges):
	trust precise profiles.

From-SVN: r266726
2018-12-02 15:39:45 +00:00
Janne Blomqvist
df996c3fd2 Use atomic load/store to access static backtrace state pointer
As the static backtrace state pointer can be accessed from multiple
threads, use atomics to access it.

Regtested on x86_64-pc-linux-gnu.

libgfortran/ChangeLog:

2018-12-02  Janne Blomqvist  <jb@gcc.gnu.org>

	PR libfortran/88137
	* runtime/backtrace.c (show_backtrace): Use atomic load/store to
	access the static lbstate pointer.

From-SVN: r266724
2018-12-02 17:12:44 +02:00
Jakub Jelinek
4a82df9a38 tree-nested.c (convert_nonlocal_omp_clauses, [...]): Handle OMP_CLAUSE_IN_REDUCTION...
* tree-nested.c (convert_nonlocal_omp_clauses,
	convert_local_omp_clauses): Handle OMP_CLAUSE_IN_REDUCTION,
	OMP_CLAUSE_TASK_REDUCTION and OMP_CLAUSE__SIMT_ clauses.
	(convert_nonlocal_reference_stmt, convert_local_reference_stmt):
	Convert clauses for GIMPLE_OMP_TASKGROUP.

	* testsuite/libgomp.c/task-reduction-3.c: New test.

From-SVN: r266723
2018-12-02 13:50:50 +01:00
Jakub Jelinek
daa8c1d763 omp-low.c (check_omp_nesting_restrictions): Allow cancel or cancellation point with taskgroup clause inside of taskloop.
* omp-low.c (check_omp_nesting_restrictions): Allow cancel or
	cancellation point with taskgroup clause inside of taskloop.  Consider
	a taskloop construct without nogroup clause as implicit taskgroup for
	diagnostics if cancel/cancellation point with taskgroup clause is
	closely nested inside of taskgroup region.

	* c-c++-common/gomp/cancel-1.c (f2): Add various taskloop related
	tests.

	* testsuite/libgomp.c-c++-common/cancel-taskgroup-4.c: New test.

From-SVN: r266722
2018-12-02 13:48:42 +01:00
Jakub Jelinek
e80944753d re PR sanitizer/88291 (asan ICE in asan_clear_shadow)
PR sanitizer/88291
	* asan.c (asan_clear_shadow): Move assert that len is multiple of 4
	to the start of the function.
	(asan_emit_stack_protection): When emitting clearing sequence for
	epilogue, align offset down to ASAN_RED_ZONE_SIZE granularity,
	add last_size_aligned which is last_size padded to multiples of
	ASAN_RED_ZONE_SIZE and emit asan_clear_shadow always on 4 byte
	boundaries.

	* c-c++-common/asan/pr88291.c: New test.

From-SVN: r266721
2018-12-02 13:39:26 +01:00
Jakub Jelinek
faa867f5a8 re PR c++/88258 (Infinite loop emitting diagnostics in the C++ front-end)
PR c++/88258
	* parser.c (cp_parser_skip_to_closing_parenthesis_1,
	cp_parser_skip_to_end_of_statement,
	cp_parser_skip_to_end_of_block_or_statement,
	cp_parser_skip_to_closing_brace,
	cp_parser_skip_to_closing_square_bracket,
	cp_parser_skip_balanced_tokens): Don't treat CPP_PRAGMA_EOL specially
	if in_pragma is false.

	* g++.dg/gomp/pr88258.C: New test.

From-SVN: r266720
2018-12-02 13:38:20 +01:00
Iain Buclaw
f4b6fc8c53 Merge dmd upstream 5220ad51e
Backports Ddoc fix that is present in upstream, but did not make its way
into the C++ port of the D front-end implementation.

The old special types for C long, unsigned long, and long double have
also been removed as neither the compiler nor druntime bindings support
handling it anymore.

Commits merged from dmd.

	Backport Issue 14633: Fixed false DDoc warnings
	https://github.com/dlang/dmd/pull/9027

	Remove old support code for struct __c_long/ulong/long_double
	https://github.com/dlang/dmd/pull/9028

From-SVN: r266719
2018-12-02 11:47:49 +00:00
GCC Administrator
bb567ea307 Daily bump.
From-SVN: r266717
2018-12-02 00:16:22 +00:00
Marek Polacek
70cdce4f30 re PR c++/87523 (ICE: Closures apparently fail to capture constexpr)
PR c++/87523
	* g++.dg/cpp1y/lambda-generic-87523.C: New test.

From-SVN: r266714
2018-12-01 21:53:07 +00:00
Iain Buclaw
5a5129a0df libphobos: Add support for RISCV to glibc bindings
Backported from upstream druntime master.

Reviewed-on: https://github.com/dlang/druntime/pull/2355

From-SVN: r266713
2018-12-01 21:48:43 +00:00
Marek Polacek
16e48dd1b4 re PR c++/79629 (ICE on invalid code in tsubst_copy, at cp/pt.c:14477)
PR c++/79629
	* g++.dg/other/error35.C: New test.

From-SVN: r266712
2018-12-01 21:32:16 +00:00
Marek Polacek
8fc1ef712d re PR c++/83856 (ICE in tsubst_copy;)
PR c++/83856
	* g++.dg/cpp1y/lambda-generic-83856.C: New test.

From-SVN: r266711
2018-12-01 21:09:31 +00:00
Marek Polacek
96c35892be Implement P0634R3, Down with typename!
* parser.c (CP_PARSER_FLAGS_TYPENAME_OPTIONAL): New enumerator.
	(cp_parser_type_name): Remove declaration.
	(cp_parser_postfix_expression): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_type_id.
	(cp_parser_new_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL to
	cp_parser_type_specifier_seq.
	(cp_parser_lambda_declarator_opt): Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL to
	cp_parser_parameter_declaration_clause.
	(cp_parser_condition): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_simple_declaration): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_init_declarator.
	(cp_parser_conversion_type_id): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_type_specifier_seq.
	(cp_parser_default_type_template_argument): Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_type_id.
	(cp_parser_template_parameter): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_parameter_declaration.
	(cp_parser_explicit_instantiation): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_simple_type_specifier): Adjust call to cp_parser_type_name
	to relay if we should treat the typename keyword as optional.  Maybe
	call cp_parser_make_typename_type is parsing a template-id and it's
	not a TYPE_DECL.
	(cp_parser_type_name): Remove unused function.
	(cp_parser_enum_specifier): Pass to CP_PARSER_FLAGS_NONE
	cp_parser_type_specifier_seq.
	(cp_parser_alias_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_type_id.
	(cp_parser_init_declarator): New parameter.  Pass it down to
	cp_parser_declarator.
	(cp_parser_declarator): New parameter.  Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.  Pass the new parameter to
	cp_parser_direct_declarator.
	(cp_parser_direct_declarator): New parameter.  Pass it to
	cp_parser_parameter_declaration_clause and cp_parser_declarator.
	(cp_parser_declarator_id):
	(cp_parser_type_id_1): New parameter.  Pass it to
	cp_parser_type_specifier_seq.  Adjust call to cp_parser_declarator.
	(cp_parser_type_id): New parameter.  Pass it to cp_parser_type_id_1.
	(cp_parser_template_type_arg): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_type_id_1.
	(cp_parser_trailing_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_type_id_1.
	(cp_parser_type_specifier_seq): New parameter.
	(function_being_declared_is_template_p):
	(cp_parser_parameter_declaration_clause): New parameter.  Pass it to
	cp_parser_parameter_declaration_list.
	(cp_parser_parameter_declaration_list): New parameter.  Pass it to
	cp_parser_parameter_declaration.
	(cp_parser_parameter_declaration): New parameter.  Pass it to
	cp_parser_decl_specifier_seq.  Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_member_declaration): Adjust call to
	cp_parser_decl_specifier_seq to also include
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL.  Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_declarator.
	(cp_parser_exception_declaration): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_type_specifier_seq and cp_parser_declarator.
	(cp_parser_requirement_parameter_list): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_parameter_declaration_clause.
	(cp_parser_constructor_declarator_p): Resolve the TYPENAME_TYPE.
	(cp_parser_single_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_decl_specifier_seq and cp_parser_init_declarator.
	(cp_parser_cache_defarg): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator and cp_parser_parameter_declaration_list.
	(cp_parser_objc_method_tail_params_opt): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_parameter_declaration.
	(cp_parser_objc_class_ivars): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_objc_try_catch_finally_statement): Pass CP_PARSER_FLAGS_NONE
	to cp_parser_parameter_declaration
	(cp_parser_objc_struct_declaration): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_omp_for_loop_init): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator and cp_parser_type_specifier_seq.

	* g++.dg/cpp0x/alias-decl-43.C: Adjust dg-error.
	* g++.dg/cpp0x/decltype67.C: Only expect error in c++17_down.
	* g++.dg/cpp1z/typename1.C: New test.
	* g++.dg/cpp2a/typename1.C: New test.
	* g++.dg/cpp2a/typename10.C: New test.
	* g++.dg/cpp2a/typename11.C: New test.
	* g++.dg/cpp2a/typename2.C: New test.
	* g++.dg/cpp2a/typename3.C: New test.
	* g++.dg/cpp2a/typename4.C: New test.
	* g++.dg/cpp2a/typename5.C: New test.
	* g++.dg/cpp2a/typename6.C: New test.
	* g++.dg/cpp2a/typename7.C: New test.
	* g++.dg/cpp2a/typename8.C: New test.
	* g++.dg/cpp2a/typename9.C: New test.
	* g++.dg/diagnostic/missing-typename.C: Only run the test in
	c++17_down.
	* g++.dg/other/crash-9.C: Add template disambiguator.
	* g++.dg/other/nontype-1.C: Only expect error in c++17_down.
	* g++.dg/parse/crash13.C: Likewise.
	* g++.dg/parse/error36.C: Likewise.
	* g++.dg/parse/no-typename1.C: Likewise.
	* g++.dg/parse/typedef2.C: Likewise.
	* g++.dg/parse/typename11.C: Likewise.
	* g++.dg/template/crash48.C: Adjust dg-error.
	* g++.dg/template/dependent-name5.C: Only expect error in c++17_down.
	Add dg-error.
	* g++.dg/template/error29.C: Only expect error in c++17_down.
	* g++.dg/template/nested5.C: Add template disambiguator.
	* g++.dg/template/pr84789.C: Only expect error in c++17_down.
	* g++.dg/template/static30.C: Add dg-error.
	* g++.dg/template/typedef6.C: Adjust dg-error.
	* g++.dg/template/typename3.C: Only expect error in c++17_down.

From-SVN: r266710
2018-12-01 17:56:27 +00:00
Jeff Law
e770ab191c * gcc.dg/predict-22.c: Update expected output.
From-SVN: r266709
2018-12-01 09:52:22 -07:00
Jakub Jelinek
a5b2566158 re PR sanitizer/88289 (r266664 causes asan to fail on many/most tests on BE)
PR sanitizer/88289
	* asan.c (asan_redzone_buffer::flush_redzone_payload): Fix up
	an off-by-one for BYTES_BIG_ENDIAN.

From-SVN: r266708
2018-12-01 08:31:56 +01:00
Jakub Jelinek
6b4f5050a9 re PR target/54589 (struct offset add should be folded into address calculation)
PR target/54589
	* combine.c (find_split_point): For invalid memory address
	nonobj + obj + const, if reg + obj + const is valid addressing
	mode, split at nonobj.  Use if rather than else if for the
	fallback.  Comment fixes.

	* gcc.target/i386/pr54589.c: New test.

From-SVN: r266707
2018-12-01 08:27:58 +01:00
GCC Administrator
1072cfdf34 Daily bump.
From-SVN: r266705
2018-12-01 00:16:41 +00:00
Indu Bhagat
732779d073 coverage.c (get_coverage_counts): Use from_function_decl for precise function location.
* coverage.c (get_coverage_counts): Use from_function_decl for precise
	function location.
	* profile-count.c (profile_count::dump): Add handling for precise
	profile quality.
	* profile.c (compute_branch_probabilities): Rely on exec_counts instead
	of profile_info to set profile_status of function.
	(branch_prob): Do not set profile_status of function based on
	profile_info. Done above based on exec_counts.

From-SVN: r266702
2018-11-30 16:54:30 -07:00
Jakub Jelinek
4df6a90634 re PR tree-optimization/88274 (ICE in check, at tree-vrp.c:188)
PR tree-optimization/88274
	* tree-ssa-reassoc.c (optimize_range_tests_xor,
	optimize_range_tests_diff): If type has smaller precision than
	corresponding mode or if it has non-standard min/max, compute
	everything in a standard type for the precision.

From-SVN: r266701
2018-12-01 00:27:23 +01:00
Jakub Jelinek
e26584b265 re PR testsuite/85368 (phi-opt-11 test fails on IBM Z)
PR testsuite/85368
	* params.def (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT): New param.
	* tree-ssa-ifcombine.c (ifcombine_ifandif): If
	--param logical-op-non-short-circuit is present, override
	LOGICAL_OP_NON_SHORT_CIRCUIT value from the param.
	* fold-const.c (fold_range_test, fold_truth_andor): Likewise.

	* lib/target-supports.exp (logical_op_short_circuit): Remove.
	* gcc.dg/builtin-bswap-7.c: Remove logical_op_short_circuit
	effective target, drop -mbranch-cost= options from the test and
	instead pass --param logical-op-non-short-circuit=0 or
	--param logical-op-non-short-circuit=1 depending on what the
	tests meant to test.
	* gcc.dg/pr21643.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c: Likewise.
	* gcc.dg/tree-ssa/phi-opt-11.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c: Likewise.
	* gcc.dg/tree-ssa/ssa-thread-14.c: Likewise.
	* gcc.dg/tree-ssa/vrp47.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-11.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-16.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-14.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: Likewise.
	* gcc.dg/tree-ssa/vrp87.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: Likewise.
	* gcc.dg/tree-ssa/phi-opt-2.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-13.c: Likewise.
	* gcc.dg/tree-ssa/ssa-thread-11.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: Likewise.
	* gcc.dg/tree-ssa/forwprop-28.c: Likewise.
	* gcc.dg/binop-xor1.c: Likewise.
	* gcc.dg/pr46309.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-18.c: New test.
	* gcc.dg/tree-ssa/reassoc-32.c: Add
	--param logical-op-non-short-circuit=1 to dg-options.
	* gcc.dg/tree-ssa/reassoc-33.c: Likewise.
	* gcc.dg/tree-ssa/reassoc-34.c: Likewise.
	* gcc.dg/tree-ssa/reassoc-35.c: Likewise.
	* gcc.dg/tree-ssa/reassoc-36.c: Likewise.

From-SVN: r266700
2018-12-01 00:26:41 +01:00
Jeff Law
2b86de4cc6 optabs.c (expand_binop): Use "machine_mode" rather than "enum machine mode" in most recent change.
* optabs.c (expand_binop): Use "machine_mode" rather than
	"enum machine mode" in most recent change.

From-SVN: r266698
2018-11-30 16:12:59 -07:00
Wilco Dijkstra
71b144289c re PR middle-end/64242 (Longjmp expansion incorrect)
PR middle-end/64242
	* builtins.c (expand_builtin_longjmp): Use a temporary when restoring
	the frame pointer.
	(expand_builtin_nonlocal_goto): Likewise.

	* gcc.c-torture/execute/pr64242.c: New test.

From-SVN: r266697
2018-11-30 16:06:51 -07:00
David Malcolm
8ba109cecc C++: fix-it hint for missing parentheses
Consider:

  class t1
  {
  public:
    double length () const { return m_length; }
  private:
    double m_length;
  };

missing-parens-fixit.C: In function 'bool test_1(const t1&)':
missing-parens-fixit.C:14:15: error: invalid use of member function
  'double t1::length() const' (did you forget the '()' ?)
   14 |   return inst.length > 0.0;
      |          ~~~~~^~~~~~

This patch adds a fix-it hint for the case where the member function
takes no parameters, suggesting the addition of the parentheses:

   14 |   return inst.length > 0.0;
      |          ~~~~~^~~~~~
      |                     ()

so that an IDE can potentially apply the fix.

gcc/cp/ChangeLog:
	* typeck2.c: Include "gcc-rich-location.h".
	(cxx_incomplete_type_diagnostic): When complaining about possibly
	missing parens, add a fix-it hint if the member function takes no
	additional params.

gcc/ChangeLog:
	* diagnostic-core.h (emit_diagnostic): New decl.
	* diagnostic.c (emit_diagnostic): New overload, taking a
	rich_location *.

gcc/testsuite/ChangeLog:
	* g++.dg/parse/missing-parens-fixit.C: New test.

From-SVN: r266696
2018-11-30 22:51:18 +00:00
David Malcolm
553a316b99 pretty-print.c: add selftest::test_prefixes_and_wrapping
gcc/ChangeLog:
	* pretty-print.c (class selftest::test_pretty_printer): New
	subclass of pretty_printer.
	(selftest::test_prefixes_and_wrapping): New test.
	(selftest::pretty_print_c_tests): Call it.

From-SVN: r266695
2018-11-30 22:46:45 +00:00
Michael Ploujnikov
ed1b53a0ab Minimize clone counter memory usage in LTO.
gcc/lto:

	* lto-partition.c (privatize_symbol_name_1): Keep track of
	non-unique symbol counters in the lto_clone_numbers hash
	map.
	(lto_promote_cross_file_statics): Allocate and free the
	lto_clone_numbers hash map.
	(lto_promote_statics_nonwpa): Free the lto_clone_numbers hash
	map.

From-SVN: r266693
2018-11-30 22:31:02 +00:00
Michael Ploujnikov
53aedcce09 Minimize clone counter memory usage in create_virtual_clone.
Based on Martin Jambour's suggestion:
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00111.html

gcc:

	* cgraph.h (clone_function_name): Add a variant that takes a
	tree decl.
	* cgraph.h (cgraph_node::create_virtual_clone): Add a new
	argument: num_suffix.
	* cgraphclones.c (cgraph_node::create_virtual_clone): Pass
	num_suffix to clone_function_name.
	(clone_function_name): Add a variant that takes a tree decl.
	* ipa-cp.c (create_specialized_node): Keep track of clone
	counters in clone_num_suffixes hash map.
	(ipcp_driver): Free the counter hash map.
	* ipa-hsa.c (process_hsa_functions): Creates at most one hsa
	clone per function.

From-SVN: r266692
2018-11-30 22:27:11 +00:00
Michael Ploujnikov
b75255a9b1 Make function assembly more independent.
This is achieved by having clone_function_name assign unique clone
numbers for each function independently.

gcc:

	* cgraphclones.c: Replaced clone_fn_id_num with clone_fn_ids;
	hash map.
	(clone_function_name_numbered): Use clone_fn_ids.

gcc/testsuite:

	* gcc.dg/independent-cloneids-1.c: New test.

From-SVN: r266691
2018-11-30 22:20:43 +00:00
Jakub Jelinek
d5b5f5ad90 re PR debug/85550 (-fdebug-types-section broken with DW_OP_addr in DW_AT_location)
PR debug/85550
	* g++.dg/debug/dwarf2/pr85550.C: New test.

From-SVN: r266689
2018-11-30 21:55:41 +01:00
Cesar Philippidis
fe570ff8d4 [PR88288, OpenACC, libgomp] Adjust offsets for present data clauses
Make libgomp respect the on device offset of subarrays which may arise in
present data clauses.

	libgomp/
	PR libgomp/88288
	* oacc-parallel.c (GOACC_parallel_keyed): Add offset to devaddrs.
	* testsuite/libgomp.oacc-c-c++-common/pr88288.c: New test.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r266688
2018-11-30 21:39:49 +01:00
James Norris
344b0fdf2e [C++] Use existing local variable in cp_parser_oacc_enter_exit_data
gcc/cp/
	* parser.c (cp_parser_oacc_enter_exit_data): Use existing local
	variable.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r266687
2018-11-30 21:39:40 +01:00