160414 Commits

Author SHA1 Message Date
Kyrylo Tkachov
63028caaeb [arm] PR target/85026: Fix ldrsh length estimate in Thumb state
This bug has been reported against GCC 7.3.0 but it is latent in all release branches and on trunk.
We underestimate the length of the LRSH instruction in Thumb state.
Unlike other load instructions LDRSH can be encoded in 16 bits only when using a register offset.
In the testcase we have "ldrsh   r2, [r4]" being assigned a length of 2, which is wrong.
So we don't calculate branch ranges properly and cause the assembler error.

The fix is to make the unaligned_loadhis insn similar to the *arm_extendqihi_insn insn that outputs an LDRSB.
Just remove the wrong 2-byte alternative. I don't think this is worth inventing a new "register-offset-only" constraint.
This also makes the patch safer for backporting.

Bootstrapped and tested on arm-none-linux-gnueabihf.

	PR target/85026
	* config/arm/arm.md (unaligned_loadhis): Remove first alternative.
	Clean up attributes.

	* g++.dg/pr85026.C: New test.

From-SVN: r258818
2018-03-23 16:43:43 +00:00
David Edelsohn
2fce761ff8 XFAIL AIX.
From-SVN: r258816
2018-03-23 11:18:25 -04:00
Sudakshina Das
c084d13efa [ARM] Fix pr84826.c failure for thumb1
*** gcc/testsuite/ChangeLog ***

2018-03-23  Sudakshina Das  <sudi.das@arm.com>

	PR target/84826
	* gcc.target/arm/pr84826.c: Add dg directive.

From-SVN: r258805
2018-03-23 13:57:28 +00:00
Marek Polacek
889a3a30d0 re PR c++/85045 (ICE+SIGILL on valid C++ code: cxx_pretty_printer::postfix_expression(tree_node*) (), at cp/cxx-pretty-print.c:482)
PR c++/85045
	* c-pretty-print.c (c_pretty_printer::multiplicative_expression)
	<case RDIV_EXPR>: Tweak condition.

	* cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
	Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
	(cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.

	* g++.dg/cpp0x/Wnarrowing5.C: New test.
	* gcc.dg/pr85045.c: New test.

From-SVN: r258804
2018-03-23 13:45:49 +00:00
Ville Voutilainen
50531a2a1d Implement P0962
* parser.c (cp_parser_perform_range_for_lookup): Change
the condition for deciding whether to use members.

From-SVN: r258803
2018-03-23 15:17:19 +02:00
Marek Polacek
b01556f72a re PR c++/85033 (internal compiler error: in fold_offsetof_1, at c-family/c-common.c:6269)
PR c++/85033
	* semantics.c (finish_offsetof): Don't allow CONST_DECLs.

	* g++.dg/ext/builtin-offsetof2.C: New test.

From-SVN: r258801
2018-03-23 12:55:55 +00:00
Eric Botcazou
f300628bfb re PR bootstrap/85020 (gcc fails to bootstrap with profiledbootstrap and --with-build-config=bootstrap-lto)
2018-03-23  Eric Botcazou  <ebotcazou@adacore.com>

	PR debug/85020
	* gnat.dg/lto22.adb: New test.
	* gnat.dg/lto22_pkg1.ad[sb]: New helper.
	* gnat.dg/lto22_pkg2.ads: Likewise.

From-SVN: r258799
2018-03-23 11:23:54 +00:00
Richard Biener
71f70d0c0c re PR bootstrap/85020 (gcc fails to bootstrap with profiledbootstrap and --with-build-config=bootstrap-lto)
2018-03-23  Richard Biener  <rguenther@suse.de>

	PR debug/85020
	* dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
	we are going to emit early debug for LTO.

From-SVN: r258798
2018-03-23 11:19:49 +00:00
Jakub Jelinek
9ecdd81a03 re PR c/80778 (gcc.dg/auto-type-1.c ICEs with -flto)
PR c/80778
	* gcc.dg/lto/pr80778_0.c: New test.

From-SVN: r258797
2018-03-23 11:45:36 +01:00
Jakub Jelinek
b3d8938043 re PR inline-asm/85034 (-O1 internal compiler error: in elimination_costs_in_insn, at reload1.c:3633)
PR inline-asm/85034
	* function.c (match_asm_constraints_1): Don't optimize if input
	doesn't satisfy general_operand predicate for output's mode.

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

From-SVN: r258796
2018-03-23 10:10:02 +01:00
Jakub Jelinek
6f5799be39 re PR inline-asm/85022 (internal compiler error: in write_dependence_p, at alias.c:3003)
PR inline-asm/85022
	* alias.c (write_dependence_p): Don't require for x_canonicalized
	non-VOIDmode if x has VOIDmode.

	* c-c++-common/torture/pr85022.c: New test.

From-SVN: r258795
2018-03-23 10:05:56 +01:00
Jakub Jelinek
ee3a999fe7 re PR sanitizer/85029 (-fsanitize=undefined internal compiler error: in maybe_optimize_ubsan_ptr_ifn, at sanopt.c:493)
PR sanitizer/85029
	* sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
	just don't try to optimize it rather than assert it never happens.

	* g++.dg/ubsan/pr85029.C: New test.

From-SVN: r258794
2018-03-23 09:55:53 +01:00
Alexandre Oliva
631270a5ce [PR c++/71251] check tmpl parms in template using decl
Check that template using decls have the correct number of parm lists.

for  gcc/cp/ChangeLog

	PR c++/71251
	* parser.c (cp_parser_alias_declaration): Call
	parser_check_template_parameters.

for  gcc/testsuite/ChangeLog

	PR c++/71251
	* g++.dg/cpp0x/pr71251.C: New.

From-SVN: r258793
2018-03-23 04:09:06 +00:00
Alexandre Oliva
5904d9d923 [PR c++/84789] do not fail to resolve typename into template-independent
Although resolve_typename_type always takes a template-dependent
type-id, and it usually resolves it to another template-dependent
type-id, it is not correct to require the latter: in declarators,
template-dependent scopes may turn out to name template-independent
types, as in the pr84789-2.C and pr84789-3.C testcases.

The ill-formed testcase pr84789.C trips the same too-strict assert,
and also gets fixed by removing the assertion on the simplified scope.
However, whereas when the dependent type cannot be resolved, we get an
error that suggests 'typename' is missing:

pr84789.C:12:3: error: need ‘typename’ before ‘typename B<T>::A::I::I’
because ‘typename B<T>::A::I’ is a dependent scope
   B<T>::A::I::I i;
   ^~~~

when it can, we got errors that did not point at that possibility,
which may be confusing:

pr84789.C:9:15: error: ‘A::I’ {aka ‘int’} is not a class type
   B<T>::A::I::I i; // { dg-error "typename" }
               ^
pr84789.C:9:15: error: ‘I’ in ‘A::I’ {aka ‘int’} does not name a type

Changing the parser diagnostic code that reports an invalid type name
so that it does not attempt to reparse the name as a declarator gets
us the superior diagnostic of a missing 'typename' keyword.


for  gcc/cp/ChangeLog

	PR c++/84789
	* pt.c (resolve_typename_type): Drop assert that stopped
	simplification to template-independent types.  Add assert to
	verify the initial scope is template dependent.
	* parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
	Reparse the id expression as a type-name, not a declarator.

for  gcc/testsuite/ChangeLog

	PR c++/84789
	* g++.dg/template/pr84789.C: New.
	* g++.dg/template/pr84789-2.C: New.
	* g++.dg/template/pr84789-3.C: New.
	* g++.dg/parse/dtor11.C: Accept alternate error message.

From-SVN: r258792
2018-03-23 01:19:14 +00:00
Alexandre Oliva
3ec16e3610 [PR c++/84729] reject parenthesized array init
A parenthesized initializer was only accepted when new()ing an array in
permissive mode.  We were not careful, however, to convert the
TREE_LIST initializer to the array element type in this extension.

Instead of fixing it, converting the initializer to the base type
after turning the TREE_LIST initializer to a compound_expr, we disable
this deprecated extension.


for  gcc/cp/ChangeLog

	PR c++/84729
	* init.c (build_vec_init): Error at parenthesized array init.

for  gcc/testsuite/ChangeLog

	PR c++/84729
	* g++.dg/pr84729.C: New.
        * g++.old-deja/g++.ext/arrnew2.C: Require error.
	* g++.old-deja/g++.robertl/eb58.C: Likewise.
	* g++.old-deja/g++.robertl/eb63.C: Likewise.

From-SVN: r258791
2018-03-23 01:19:01 +00:00
Alexandre Oliva
91f9108f1b Disable auto_is_implicit_function_template_parm_p while parsing attributes
We don't want functions to become implicit templates just because of
random uses of auto in unexpected places.  Disabling the special
handling of auto while parsing attributes, for example, makes for
more sensible errors.


for  gcc/cp/ChangeLog

	PR c++/84610
	PR c++/84642
	PR c++/84942
	* cp-tree.h (temp_override): New template class, generalizing
	a cleanup that was only used...
	* parser.c (cp_parser_parameter_declaration_clause):
	... here for auto_is_implicit_function_template_parm_p.
	(cp_parser_gnu_attributes_opt): Use it here as well.
	(cp_parser_std_attribute): Likewise.

From-SVN: r258790
2018-03-23 01:18:48 +00:00
GCC Administrator
c95bcbe3c1 Daily bump.
From-SVN: r258789
2018-03-23 00:16:19 +00:00
Steven G. Kargl
b74fa12697 re PR fortran/84922 (fortran reports inconsistency in rank of arguments in interface and contained procedures)
2018-03-22  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/84922
	* decl.c (get_proc_name): If the MODULE prefix appears in interface
	body, then it must appear on the contained subroutine or function.
	While here, fix nearby mis-indented code.

2018-03-22  Steven G. Kargl  <kargl@gcc.gnu.org

	PR fortran/84922
	* gfortran.dg/interface_42.f90: New test.
	* gfortran.dg/interface_43.f90: New test.

From-SVN: r258784
2018-03-22 21:42:07 +00:00
Kelvin Nilsen
0bf86d4683 rs6000-builtin.def: Remove various BU_ALTIVEC_X macro expansions for definition of...
gcc/ChangeLog:

2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
	macro expansions for definition of ST_INTERNAL_<mode> and
	LD_INTERNAL_<mode> builtins.
	* config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
	Remove prototype.
	* config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
	function.
	(altivec_expand_st_builtin): Likewise.
	(altivec_expand_builtin): Remove calls to deleted functions.
	(rs6000_address_for_altivec): Delete this function.
	* config/rs6000/vector.md: Remove expands for
	vector_altivec_load_<mode> and vector_altivec_store_<mode>.

From-SVN: r258783
2018-03-22 20:18:35 +00:00
Sudakshina Das
bb4ac03b8f [ARM][PR target/84826] Fix ICE in extract_insn, at recog.c:2304 on
arm-linux-gnueabi

The ICE in the bug report was happening because the macro
USE_RETURN_INSN (FALSE) was returning different values at different points
in the compilation. This was internally occurring because the function
arm_compute_static_chain_stack_bytes () which was dependent on
arm_r3_live_at_start_p () was giving a different value after the cond_exec
instructions were created in ce3 causing the liveness of r3 to escape up
to the start block.

The function arm_compute_static_chain_stack_bytes () should really only
compute the value once duringepilogue/prologue stage. This pass introduces
a new member 'static_chain_stack_bytes' to the target definition of the
struct machine_function which gets calculated in expand_prologue and is the
value that is returned by arm_compute_static_chain_stack_bytes () beyond that.

ChangeLog entries:

*** gcc/ChangeLog ***

2018-03-22  Sudakshina Das  <sudi.das@arm.com>

	PR target/84826
	* config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
	* config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
	re-computing once computed.
	(arm_expand_prologue): Compute machine->static_chain_stack_bytes.
	(arm_init_machine_status): Initialize
	machine->static_chain_stack_bytes.

*** gcc/testsuite/ChangeLog ***

2018-03-22  Sudakshina Das  <sudi.das@arm.com>

	PR target/84826
	* gcc.target/arm/pr84826.c: New test.

From-SVN: r258777
2018-03-22 17:24:41 +00:00
Christophe Lyon
253db5538b [testsuite] Make sure dg-do is before dg-require-effective-target.
2018-03-22  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/testsuite/
	* gcc.target/arm/addr-modes-float.c: Move dg-do before
	dg-require-effective-target.
	* gcc.target/arm/addr-modes-int.c: Likewise.
	* gcc.target/nios2/lo-addr-tls.c: Likewise.

From-SVN: r258776
2018-03-22 17:39:36 +01:00
Kelvin Nilsen
b51b0c9dc0 re PR target/84760 (Finish implementation of __builtin_altivec_lvx_v1ti)
gcc/ChangeLog:

2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	PR target/84760
	* doc/extend.texi: Add four new prototypes for vec_ld.
	* config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
	definitions for more logical presentation.
	* config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
	entries for V1TI variants of __builtin_altivec_ld builtin.
	* config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
	handling of V1TI variant of LVX icode pattern.
	(altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
	(rs6000_gimple_fold_builtin): Likewise.
	(altivec_init_builtins): Add code to define
	__builtin_altivec_lvx_v1ti function.

gcc/testsuite/ChangeLog:

2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	PR target/84760
	* gcc.target/powerpc/altivec-ld-1.c: New test.

From-SVN: r258774
2018-03-22 15:42:39 +00:00
Jonathan Wakely
7c69a7d9bd PR libstdc++/85040 fix std::less<void> etc. ambiguities
PR libstdc++/85040
	* include/bits/stl_function.h (greater::__not_overloaded)
	(less::__not_overloaded, greater_equal::__not_overloaded)
	(less_equal::__not_overloaded): Fix ambiguous specializations.
	* testsuite/20_util/function_objects/comparisons_pointer.cc: Add
	tests for type with overlaoded operators.

From-SVN: r258773
2018-03-22 14:23:27 +00:00
Bin Cheng
ece7d31f42 pr83126.c: Require pthread for the test.
gcc/testsuite
	* gcc.dg/graphite/pr83126.c: Require pthread for the test.

From-SVN: r258768
2018-03-22 14:06:49 +00:00
Rainer Orth
83872062cb xfail experimental/memory_resource/resource_adaptor.cc on 32-bit Solaris/x86 (PR libstdc++/77691)
PR libstdc++/77691
	* testsuite/experimental/memory_resource/resource_adaptor.cc:
	xfail execution on 32-bit Solaris/x86.

From-SVN: r258766
2018-03-22 13:33:29 +00:00
Jakub Jelinek
3c896da0fd re PR inline-asm/84941 (internal compiler error: in reg_overlap_mentioned_p, at rtlanal.c:1870 (reg_overlap_mentioned_p()/match_asm_constraints_1()))
PR inline-asm/84941
	* function.c (match_asm_constraints_1): Don't do the optimization
	if input isn't a REG, SUBREG, MEM or constant.

	* gcc.dg/pr84941.c: New test.

From-SVN: r258764
2018-03-22 13:31:46 +01:00
Igor Tsimbalist
f262038551 Fix PR85025: libgcc/config/i386/shadow-stack-unwind.h is wrong.
PR target/85025
	* config/i386/shadow-stack-unwind.h (_Unwind_Frames_Extra):
	Fix a typo, tmp => 255.

From-SVN: r258763
2018-03-22 12:22:31 +01:00
Tom de Vries
71b7c365f9 [tail-merge] Don't merge bbs with bb_has_abnormal_pred
2018-03-22  Tom de Vries  <tom@codesourcery.com>

	PR tree-optimization/84956
	* tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
	bb_has_abnormal_pred.

	* gcc.dg/pr84956.c: New test.

From-SVN: r258758
2018-03-22 10:21:12 +00:00
Jakub Jelinek
f13ed3ed23 re PR sanitizer/85018 (Many sanitizer tests ICE since r258681)
PR sanitizer/85018
	* dwarf2asm.c (dw2_output_indirect_constant_1): Set
	DECL_INITIAL (decl) to decl at the end.
	* varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
	adjust the comment.

From-SVN: r258757
2018-03-22 09:32:12 +01:00
Marek Polacek
08ad2797c6 re PR c++/84854 (ICE: unexpected expression in cxx_eval_constant_expression, at cp/constexpr.c:4774)
PR c++/84854
	* semantics.c (finish_if_stmt_cond): Check if the type of the condition
	is boolean.

	* g++.dg/cpp1z/constexpr-if15.C: New test.
	* g++.dg/cpp1z/constexpr-if16.C: New test.

From-SVN: r258756
2018-03-22 08:08:07 +00:00
Jason Merrill
2170d4b6dd PR c++/81311 - wrong C++17 overload resolution.
* call.c (build_user_type_conversion_1): Remove C++17 code.
	(conv_binds_ref_to_prvalue): New.
	(build_over_call): Handle C++17 copy elision.
	(build_special_member_call): Only do C++17 copy elision here if the
	argument is already the right type.

From-SVN: r258755
2018-03-21 23:53:19 -04:00
GCC Administrator
a0e46153b6 Daily bump.
From-SVN: r258754
2018-03-22 00:16:17 +00:00
Joseph Myers
c5c5822ae5 Adjust __builtin_tgmath handling of integer arguments to _FloatN narrowing macros.
When adding __builtin_tgmath to support a better tgmath.h
implementation, I noted that further changes might be needed regarding
the TS 18661 functions that round their results to a narrower type,
because of unresolved issues with how the corresponding type-generic
macros are defined in TS 18661.

The resolution of those issues is still in flux, but the latest
version does indeed require something slightly different from
__builtin_tgmath.  It specifies that integer arguments to type-generic
macros such as f32xadd are treated as _Float64 not double - which was
also present in earlier versions of the resolution - but then it also
specifies different handling for _Float64 arguments and double
arguments, which wasn't in earlier versions.  Specifically, in the
latest version
<http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2213.pdf>, f32xadd
with _Float64 arguments would call f32xaddf64, while f32xadd with
double arguments would call f32xaddf64x.  Since integer arguments are
converted directly to the argument type of the selected function (not
to double / _Float64x unless that ends up as the argument type), this
is a user-visible difference in semantics that means __builtin_tgmath
actually needs to implement treating integer arguments as _Float64 in
this case (the rest of the latest semantics can then be implemented in
the header, with a few inline functions there).

To avoid releasing with the older version of the __builtin_tgmath
semantics that doesn't work with the latest proposed DR#13 resolution,
this patch implements a rule in __builtin_tgmath that maps integer
types to _Float64 (respectively _Complex _Float64 for complex integer
types) where all the specified functions return the same _FloatN or
_FloatNx type.  This does not affect any existing uses of
__builtin_tgmath in glibc's or GCC's tgmath.h since I haven't yet
added any of these type-generic macros to glibc when adding the
corresponding narrowing functions.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

	* doc/extend.texi (__builtin_tgmath): Document when complex
	integer types are treated as _Complex _Float64.

gcc/c:
	* c-parser.c (c_parser_postfix_expression): For __builtin_tgmath
	where all functions return the same _FloatN or _FloatNx type,
	treat integer types as _Float64 instead of double.

gcc/testsuite:
	* gcc.dg/builtin-tgmath-3.c: New test.

From-SVN: r258751
2018-03-21 22:29:37 +00:00
Tom de Vries
f4274af890 [doc] Remove pasto in __builtin_extend_pointer doc
2018-03-21  Tom de Vries  <tom@codesourcery.com>

	* doc/extend.texi (__builtin_extend_pointer): Remove pasto.

From-SVN: r258750
2018-03-21 22:24:04 +00:00
Alexandre Oliva
0186f68450 [PR c++/71965] silence multi-dim array init sorry without tf_error
We shouldn't substitute templates into short-circuited-out concepts
constraints, but we do, and to add insult to injury, we issue a
sorry() error when a concept that shouldn't even have been substituted
attempts to perform a multi-dimensional array initialization with a
new{} expression.

Although fixing the requirements short-circuiting is probably too
risky at this point, we can get closer to the intended effect by
silencing that sorry just as we silence other errors.

for  gcc/cp/ChangeLog

	PR c++/71965
	* init.c (build_vec_init): Silence error, former sorry,
	without tf_error.

for  gcc/testsuite/ChangeLog

	PR c++/71965
	* g++.dg/concepts/pr71965.C: New.

From-SVN: r258749
2018-03-21 22:08:34 +00:00
Alexandre Oliva
7446b353b5 [PR c++/84610,84642] recover from implicit template parms gracefully
If we get a parse error during an attempted fully implicit function
template parse, and need to skip to the end of the statement or block,
we may discard the function parms scope rather than the enclosing
injected implicit template parms scope.  If we rollback a tentative
parse and try something else, we'll no longer be in a function parms
scope, but rather in a template parms scope, but we may still attempt
to synthesize implicit template parms and then fail the assert that
checks we're in a function parms scope.

This patch introduces an alternative to
finish_fully_implicit_template_p, to be used during error recovery,
that floats the implicit template parm scope to the top so that it
gets discarded as we finish and discard the failed implicit template
data, while other scopes are retained as expected.  It also clears the
implicit template parser data as we finish the template, so that it
doesn't linger on referencing discarded or used scopes and parms.

for gcc/cp/ChangeLog

	PR c++/84610
	PR c++/84642
	* parser.c (abort_fully_implicit_template_p): New.
	(cp_parser_skip_to_end_of_statement): Use it.
	(cp_parser_skip_to_end_of_block_or_statement): Likewise.
	(finish_fully_implicit_template_p): Clear
	implicit_template_parms and implicit_template_scope.

for  gcc/testsuite/ChangeLog

	PR c++/84610
	PR c++/84642
	* g++.dg/cpp0x/pr84610.C: New.
	* g++.dg/cpp0x/pr84642.C: New.

From-SVN: r258748
2018-03-21 22:08:19 +00:00
Jakub Jelinek
aa1c94299c re PR c/84999 (ICE in make_vector_type, at tree.c:9561)
PR c/84999
	* c-typeck.c (build_binary_op): If c_common_type_for_size fails when
	building vector comparison, diagnose it and return error_mark_node.

	* c-c++-common/pr84999.c: New test.

From-SVN: r258747
2018-03-21 22:48:47 +01:00
Paolo Carlini
e299d4fc1a re PR c++/84972 (ICE: tree check: expected class 'type', have 'exceptional' (error_mark) in extended_tree, at tree.h:5545)
/cp
2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84972
	* decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
	error_mark_node when check_array_designated_initializer fails.

/testsuite
2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84972
	* g++.dg/ext/desig10.C: New.

From-SVN: r258746
2018-03-21 21:19:03 +00:00
Thomas Koenig
482768bd6b re PR fortran/84957 (ICE in gfc_sym_type, at fortran/trans-types.c:2255)
2018-03-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
	Harald Anlauf  <anlauf@gmx.de>

	PR fortran/84957
	* trans-types.c (gfc_sym_type): Do not dereference NULL pointer.

2018-03-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
	Harald Anlauf  <anlauf@gmx.de>

	PR fortran/84957
	* gfortran.dg/pr84957.f90: New test.


Co-Authored-By: Harald Anlauf <anlauf@gmx.de>

From-SVN: r258745
2018-03-21 21:12:41 +00:00
Jakub Jelinek
3e129b5bc6 re PR tree-optimization/84960 (ICE in GIMPLE pass: isolate-paths)
PR tree-optimization/84960
	* tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
	if it is ENTRY block, move them into single succ of ENTRY in that case.

	* gcc.c-torture/compile/pr84960.c: New test.

From-SVN: r258744
2018-03-21 21:53:16 +01:00
Richard Sandiford
535808fd72 poly_span_traits fixes (PR 84811)
This patch fixes incorrect results for HOST_WIDE_INT positions
at opposite extremes when used with HOST_WIDE_INT sizes.  It also
fixes UB when comparing such positions with unsigned HOST_WIDE_INT
sizes (although the results in that case were wrapv-correct).

2018-03-20  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	PR tree-optimization/84811
	* poly-int.h (poly_span_traits): Remove the T3 parameter and
	promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
	(maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
	(known_subrange_p): Update accordingly.  Cast each value involved
	in the size comparison, rather than casting the result of the
	subtraction.

gcc/testsuite/
	PR tree-optimization/84811
	* gcc.dg/torture/pr84811.c: New test.

From-SVN: r258743
2018-03-21 20:52:15 +00:00
Jakub Jelinek
e215422f1d re PR tree-optimization/84982 (logically inverting bools into local array results in bitwise negation)
PR tree-optimization/84982
	* gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
	by flipping the least significant bit rather than all bits from
	bitpos to bitpos + bitsize - 1.

	* c-c++-common/pr84982.c: New test.

From-SVN: r258742
2018-03-21 21:20:40 +01:00
Jakub Jelinek
57e20f74e0 re PR c++/84961 (ICE error: SSA_NAME_DEF_STMT is wrong)
PR c++/84961
	* cp-tree.h (genericize_compound_lvalue): Declare.
	* typeck.c (genericize_compound_lvalue): New function.
	(unary_complex_lvalue, cp_build_modify_expr): Use it.
	* semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
	and PREDECREMENT_EXPR in output and "m" constrained input operands with
	COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
	COMPOUND_EXPR operand.

	* c-c++-common/pr43690.c: Don't expect errors on "m" (--x) and
	"m" (++x) in C++.
	* g++.dg/torture/pr84961-1.C: New test.
	* g++.dg/torture/pr84961-2.C: New test.

From-SVN: r258741
2018-03-21 21:19:33 +01:00
Nathan Sidwell
b2595987bd [PR c++/85008] ICE looking for clone
https://gcc.gnu.org/ml/gcc-patches/2018-03/msg01129.html
	PR c++/85008
	* tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
	* decl2.c (vague_linkage_p): Likewise.

	PR c++/85008
	* g++.dg/pr85008.C: New.

From-SVN: r258738
2018-03-21 19:22:10 +00:00
Janne Blomqvist
983d49ddd1 PR 84615 Regressions due to type mismatch with character functions
Since the kind of the hidden character length variable is not part of
the character variable definition, we must ensure that character
lengths are always of the same kind in interfaces, regardless of how
they were declared in the source. This patch ensures this when calling
a procedure.

Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu.

gcc/fortran/ChangeLog:

2018-03-21  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/84615
	* trans-expr.c (gfc_conv_procedure_call): Convert charlen to
	gfc_charlen_type_node when calling procedure.

gcc/testsuite/ChangeLog:

2018-03-21  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/84615
	* gfortran.dg/char_result_17.f90: New test.

From-SVN: r258736
2018-03-21 20:46:44 +02:00
David Malcolm
5afef8b119 C++: show private field accessor hints with -g and optimization (PR c++/84994)
gcc/cp/ChangeLog:
	PR c++/84994
	* constexpr.c (constexpr_fn_retval): Make non-"static".
	* cp-tree.h (constexpr_fn_retval): New decl.
	* search.c (direct_accessor_p): Update leading comment.
	(reference_accessor_p): Likewise.
	(field_accessor_p): Replace check that function body is a
	RETURN_EXPR with a call to constexpr_fn_retval.  Fix
	indentation of "field_type" decl.

gcc/testsuite/ChangeLog:
	PR c++/84994
	* g++.dg/other/accessor-fixits-1.C: Move to...
	* g++.dg/torture/accessor-fixits-1.C: ...here.
	* g++.dg/other/accessor-fixits-2.C: Move to...
	* g++.dg/torture/accessor-fixits-2.C: ...here.
	* g++.dg/other/accessor-fixits-3.C: Move to...
	* g++.dg/torture/accessor-fixits-3.C: ...here.
	* g++.dg/other/accessor-fixits-4.C: Move to...
	* g++.dg/torture/accessor-fixits-4.C: ...here.
	* g++.dg/other/accessor-fixits-5.C: Move to...
	* g++.dg/torture/accessor-fixits-5.C: ...here.
	* g++.dg/torture/accessor-fixits-6.C: New testcase.
	* g++.dg/torture/accessor-fixits-7.C: New testcase.
	* g++.dg/torture/accessor-fixits-8.C: New testcase.

From-SVN: r258731
2018-03-21 18:21:39 +00:00
Nathan Sidwell
aa3dd75327 Remove long-dead deprecation documentation
https://gcc.gnu.org/ml/gcc-patches/2018-03/msg01083.html
	* doc/extend.texi (Deprecated Features): Remove mention of
	long-deleted deprecations.

From-SVN: r258730
2018-03-21 18:06:38 +00:00
Rainer Orth
adb0355ff6 xfail gcc.dg/tree-ssa/pr84512.c on 64-bit sparc
* gcc.dg/tree-ssa/pr84512.c: xfail on 64-bit SPARC.

From-SVN: r258729
2018-03-21 17:56:46 +00:00
Rainer Orth
ea143da7fb Enable jit on Solaris: soname option and EXTRA_GCC_LIBS (PR jit/84288)
gcc/jit:
	PR jit/84288
	* Make-lang.in ($(LIBGCCJIT_FILENAME)): Add $(EXTRA_GCC_LIBS).

	gcc:
	PR jit/84288
	* configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
	* configure: Regenerate.

From-SVN: r258727
2018-03-21 17:39:16 +00:00
Sudakshina Das
839c95d00b [ARM] Fix test pr82989.c for big endian and mthumb
The test pr82989.c which was added in one of previous commits is failing for
mthumb and big-endian configurations. The aim of this test was to check that
NEON instructions are not being used for simple shift operations. The scanning
of lsl and lsr instructions and checking its counts were just too restrictive
for different configurations. So I have now simplified the test to only check
for the absence of NEON instructions.

*** gcc/testsuite/ChangeLog ***

2018-03-21  Sudakshina Das  <sudi.das@arm.com>

	PR target/82989
	* gcc.target/arm/pr82989.c: Change dg scan-assembly directives.

From-SVN: r258723
2018-03-21 17:14:48 +00:00