Commit Graph

160201 Commits

Author SHA1 Message Date
Richard Sandiford
80c13ac5ec [AArch64] Add a tlsdesc call pattern for SVE
tlsdesc calls are guaranteed to preserve all Advanced SIMD registers,
but are not guaranteed to preserve the SVE extension of them.
The calls also don't preserve the SVE predicate registers.

The long-term plan for handling the SVE vector registers is CLOBBER_HIGH,
which adds a clobber equivalent of TARGET_HARD_REGNO_CALL_PART_CLOBBERED.
The pattern can then directly model the fact that the low 128 bits are
preserved and the upper bits are clobbered.

However, it's too late now for that to be included in GCC 8, so this
patch conservatively treats the whole vector register as being clobbered.
This has the obvious disadvantage that compiling for SVE can make NEON
code worse, but I don't think there's much we can do about that until
CLOBBER_HIGH is in.

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

gcc/
	* config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
	(V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
	(P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
	(P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
	(tlsdesc_small_<mode>): Turn a define_expand and use
	tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
	(tlsdesc_small_advsimd_<mode>): ...this.
	(tlsdesc_small_sve_<mode>): New pattern.

gcc/testsuite/
	* gcc.target/aarch64/sve/tls_1.c: New test.
	* gcc.target/aarch64/sve/tls_2.C: Likewise.

From-SVN: r258488
2018-03-13 15:12:59 +00:00
Richard Sandiford
11e9443f49 [AArch64] Add SVE mul_highpart patterns
One advantage of the new permute handling compared to the old way is
that we can now easily take advantage of the vectoriser's divmod patterns
for SVE.

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

gcc/
	* config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
	(UNSPEC_UMUL_HIGHPART): New constants.
	(MUL_HIGHPART): New int iteraor.
	(su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
	* config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
	define_expand.
	(*<su>mul<mode>3_highpart): New define_insn.

gcc/testsuite/
	* gcc.target/aarch64/sve/mul_highpart_1.c: New test.
	* gcc.target/aarch64/sve/mul_highpart_1_run.c: Likewise.

From-SVN: r258487
2018-03-13 15:12:14 +00:00
Richard Sandiford
c9b39302ef MAINTAINERS: Add entry for SVE maintainership.
2018-03-13  Richard Sandiford  <richard.sandiford@arm.com>

	* MAINTAINERS: Add entry for SVE maintainership.

From-SVN: r258486
2018-03-13 15:11:46 +00:00
Eric Botcazou
59a8062a6a re PR lto/84805 (ICE in get_odr_type, at ipa-devirt.c:2096 since r258133)
PR lto/84805
	* ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
	incomplete types.

From-SVN: r258481
2018-03-13 10:04:51 +00:00
Martin Liska
0dbacfcfad Fix PTA info in IPA ICF (PR ipa/84658).
2018-03-13  Martin Liska  <mliska@suse.cz>

	PR ipa/84658.
	* (sem_item_optimizer::sem_item_optimizer): Initialize new
	vector.
	(sem_item_optimizer::~sem_item_optimizer): Release it.
	(sem_item_optimizer::merge_classes): Register variable aliases.
	(sem_item_optimizer::fixup_pt_set): New function.
	(sem_item_optimizer::fixup_points_to_sets): Likewise.
	* ipa-icf.h: Declare new variables and functions.
2018-03-13  Martin Liska  <mliska@suse.cz>

	PR ipa/84658.
	* g++.dg/ipa/pr84658.C: New test.

From-SVN: r258480
2018-03-13 08:20:27 +00:00
Jakub Jelinek
9e61e48e12 re PR middle-end/84834 (ICE: tree check: expected integer_cst, have complex_cst in to_wide, at tree.h:5527)
PR middle-end/84834
	* match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
	integer_pow2p@2 and test integer_pow2p in condition.
	(A < 0 ? C : 0): Similarly for @1.

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

From-SVN: r258479
2018-03-13 09:12:59 +01:00
Jakub Jelinek
cd471b26ca re PR middle-end/84831 (Invalid memory read in parse_output_constraint)
PR middle-end/84831
	* stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
	characters starting at p contain '\0' character, don't look beyond
	that.

From-SVN: r258478
2018-03-13 09:12:07 +01:00
Jakub Jelinek
ee6e130378 re PR target/84827 (ICE in extract_insn, at recog.c:2311)
PR target/84827
	* config/i386/i386.md (round<mode>2): For 387 fancy math, disable
	pattern if -ftrapping-math -fno-fp-int-builtin-inexact.

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

From-SVN: r258477
2018-03-13 09:05:58 +01:00
Jakub Jelinek
fc31d739fb re PR target/84828 (ICE in verify_flow_info at gcc/cfghooks.c:265)
PR target/84828
	* reg-stack.c (change_stack): Change update_end var from int to
	rtx_insn *, if non-NULL don't update just BB_END (current_block), but
	also call set_block_for_insn on the newly added insns and rescan.

	* g++.dg/ext/pr84828.C: New test.

From-SVN: r258476
2018-03-13 09:04:54 +01:00
Jakub Jelinek
639e8522c0 re PR target/84786 ([miscompilation] vunpcklpd accessing xmm16-22 targeting KNL)
PR target/84786
	* config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
	on the last operand.

	* gcc.target/i386/avx512f-pr84786-1.c: New test.
	* gcc.target/i386/avx512f-pr84786-2.c: New test.

From-SVN: r258475
2018-03-13 09:03:28 +01:00
GCC Administrator
1f4e9d223c Daily bump.
From-SVN: r258474
2018-03-13 00:16:25 +00:00
Jakub Jelinek
fe217ba0ee re PR c++/84808 (ICE with constexpr and array)
PR c++/84808
	* constexpr.c (find_array_ctor_elt): Don't use elt reference after
	first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
	sizetype.  Formatting fixes.

	* g++.dg/cpp1y/constexpr-84808.C: New test.

From-SVN: r258471
2018-03-13 00:40:20 +01:00
Jakub Jelinek
038df1baec re PR c++/84704 (internal compiler error: gimplification failed)
PR c++/84704
	* tree.c (stabilize_reference_1): Return save_expr (e) for
	STATEMENT_LIST even if it doesn't have side-effects.

	* g++.dg/debug/pr84704.C: New test.

From-SVN: r258470
2018-03-13 00:39:21 +01:00
Jonathan Wakely
97ca95ac6f PR libstdc++/84773 use aligned alloc functions for FreeBSD and MinGW cross-compilers
PR libstdc++/84773
	PR libstdc++/83662
	* crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
	* configure: Regenerate.
	* include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
	(aligned_alloc): Add using-declaration.
	* testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.

From-SVN: r258468
2018-03-12 22:52:16 +00:00
Eric Botcazou
50536fd5e8 re PR ada/82813 (warning: '.builtin_memcpy' writing between 2 and 6 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=])
PR ada/82813
	* gcc-interface/misc.c (gnat_post_options): Disable string overflow
	warnings.

From-SVN: r258466
2018-03-12 22:40:05 +00:00
Jonathan Wakely
a60a1d3d4b Fix spelling of -mclflushopt in manual
* doc/invoke.texi (-mclflushopt): Fix spelling of option.

From-SVN: r258462
2018-03-12 22:31:12 +00:00
Renlin Li
980902fba6 [PATCH][AARCH64]Fix immediate alternative of movhf_aarch64 pattern.
gcc/

2018-03-12  Renlin Li  <renlin.li@arm.com>

    * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
    aarch64_output_scalar_simd_mov_immediate.

gcc/testsuite/

2018-03-12  Renlin Li  <renlin.li@arm.com>

    * gcc.target/aarch64/movi_hf.c: New.
    * gcc.target/aarch64/f16_mov_immediate_1.c: Update.
    * gcc.target/aarch64/f16_mov_immediate_2.c: Update.

From-SVN: r258459
2018-03-12 19:49:24 +00:00
Martin Sebor
e9b9fa4cda PR tree-optimization/83456 - -Wrestrict false positive on a non-overlapping memcpy in an inline function
gcc/ChangeLog:

	PR tree-optimization/83456
	* gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
	for perfectly overlapping calls to memcpy.
	(gimple_fold_builtin_memory_chk): Same.
	(gimple_fold_builtin_strcpy): Handle no-warning.
	(gimple_fold_builtin_stxcpy_chk): Same.
	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.

gcc/c-family/ChangeLog:

	PR tree-optimization/83456
	* gcc/c-family/c-common.c (check_function_restrict): Return bool.
	Restore checking of bounded built-in functions.
	(check_function_arguments): Also return the result
	of warn_for_restrict.
	* gcc/c-family/c-common.c (check_function_restrict): Return bool.
	* gcc/c-family/c-warn.c (warn_for_restrict): Return bool.

gcc/testsuite/ChangeLog:

	PR tree-optimization/83456
	* c-c++-common/Wrestrict-2.c: Remove test cases.
	* c-c++-common/Wrestrict.c: Same.
	* gcc.dg/Wrestrict-12.c: New test.
	* gcc.dg/Wrestrict-14.c: New test.

From-SVN: r258455
2018-03-12 12:04:16 -06:00
Segher Boessenkool
df4cfec554 rs6000: sysv: Don't pass SFmode in varargs in FPRs
This makes the float32-basic.c testcase work on sysv (32-bit Linux).

"float" is promoted to "double" for varargs.  The ABI also only defines
the use of double precision in varargs.  But _Float32 is not promoted.
Since there is no way of passing single-precision float in FPRs we
should pass SFmode in GPRs (or memory) instead.  This is similar to
the 64-bit ABI.

From-SVN: r258454
2018-03-12 18:37:39 +01:00
Joseph Myers
37f71cead0 * de.po, es.po, sv.po: Update.
From-SVN: r258453
2018-03-12 17:23:38 +00:00
Segher Boessenkool
fb54f550a0 combine: Fix PR84780 (more LOG_LINKS trouble)
There still are situations where we have stale LOG_LINKS.  This causes
combine to try two-insn combinations I2->I3 where the register set by
I2 is used before I3 as well.  Not good.

This patch fixes it by checking for this situation in can_combine_p
(similar to what we already do for three and four insn combinations).

From-SVN: r258452
2018-03-12 16:26:16 +01:00
Jason Merrill
d67b5d8d1d PR c++/84355 - ICE with deduction for member class template.
* pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
	CLASS_PLACEHOLDER_TEMPLATE.

From-SVN: r258451
2018-03-12 10:40:45 -04:00
H.J. Lu
a7fea88ffb Add a testcase for PR 84821
This was introduced by r258390 and fixed by r258415.

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

From-SVN: r258449
2018-03-12 06:33:38 -07:00
H.J. Lu
3fe126afd1 Add a testcase for PR 84799
This was introduced by r258390 and fixed by r258415.

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

From-SVN: r258448
2018-03-12 06:32:44 -07:00
Jason Merrill
11b782f7f2 PR c++/84802 - ICE capturing uninstantiated class.
* lambda.c (build_capture_proxy): Call complete_type.

From-SVN: r258447
2018-03-12 08:58:38 -04:00
Richard Biener
8f1a73b2bb re PR tree-optimization/84803 (ICE from ifcvt_memrefs_wont_trap with -O3)
2018-03-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84803
	* tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
	for refs DR analysis didn't process.

	* gcc.dg/torture/pr84803.c: New testcase.

From-SVN: r258446
2018-03-12 12:32:28 +00:00
Jakub Jelinek
b270a5215a re PR c++/84813 (internal compiler error: Segmentation fault with lambdas and constexpr variables)
PR c++/84813
	* g++.dg/debug/pr84813.C: New test.

From-SVN: r258445
2018-03-12 10:02:36 +01:00
Richard Biener
b79fa2f609 re PR tree-optimization/84777 (-Os inhibits all vectorization)
2018-03-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84777
	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
	force-vectorize loops ignore whether we are optimizing for size.

From-SVN: r258444
2018-03-12 08:45:54 +00:00
Chung-Ju Wu
823835a99d [NDS32] Implement TARGET_MD_ASM_ADJUST hook.
gcc/
	* config/nds32/nds32.c (nds32_md_asm_adjust): New function.
	(TARGET_MD_ASM_ADJUST): Define.

From-SVN: r258443
2018-03-12 01:29:34 +00:00
Monk Chiang
a6c7e7779a [NDS32] Refine prologue and epilogue code generation.
gcc/
	* config/nds32/nds32.c (nds32_compute_stack_frame,
	nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
	nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
	nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
	nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
	* config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
	NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
	* config/nds32/nds32.md (prologue, epilogue): Use macro
	NDS32_V3PUSH_AVAILABLE_P to do checking.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>

From-SVN: r258442
2018-03-12 01:21:57 +00:00
GCC Administrator
1fdffa310b Daily bump.
From-SVN: r258441
2018-03-12 00:16:14 +00:00
Paul Thomas
26219cee84 re PR fortran/84546 (Bad sourced allocation of CLASS(*) with source with CLASS(*) component)
2018-03-11  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84546
	* trans-array.c (structure_alloc_comps): Make sure that the
	vptr is copied and that the unlimited polymorphic _len is used
	to compute the size to be allocated.
	* trans-expr.c (gfc_get_class_array_ref): If unlimited, use the
	unlimited polymorphic _len for the offset to the element.
	(gfc_copy_class_to_class): Set the new 'unlimited' argument.
	* trans.h : Add the boolean 'unlimited' to the prototype.

2018-03-11  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84546
	* gfortran.dg/unlimited_polymorphic_29.f90 : New test.

From-SVN: r258438
2018-03-11 22:25:11 +00:00
Steven G. Kargl
1813c97a6f re PR fortran/83939 (Constraint C1290 (elemental function cannot be allocatable) not enforced)
2018-03-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/83939
	* resolve.c (resolve_fl_procedure): Enforce F2018:C15100.

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

	PR fortran/83939
	* gfortran.dg/pr83939.f90

From-SVN: r258437
2018-03-11 21:39:15 +00:00
Steven G. Kargl
fbe1f01743 check.c (gfc_check_kill): Check pid and sig are scalar.
2018-03-11  Steven G. Kargl  <kargls@gcc.gnu.org>

	* check.c (gfc_check_kill):  Check pid and sig are scalar.
	(gfc_check_kill_sub): Restrict kind to 4 and 8.
	* intrinsic.c (add_function): Sort keyword list.  Add pid and sig
	keywords for KILL.  Remove redundant *back="back" in favor of the
	original *bck="back".
	(add_subroutines): Sort keyword list.  Add pid and sig keywords
	for KILL.
	* intrinsic.texi: Fix documentation to consistently use pid and sig.
	* iresolve.c (gfc_resolve_kill): Kind can only be 4 or 8.  Choose the
	correct function.
	(gfc_resolve_rename_sub): Add comment.

From-SVN: r258436
2018-03-11 21:34:40 +00:00
Thomas Koenig
6f76317a47 re PR fortran/66128 (ICE for some intrinsics with zero sized array parameter)
2018-03-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/66128
	* simplify.c (simplify_transformation): Return default result for
	empty array argument.
	(gfc_simplify_all): Remove special-case handling for zerosize.
	(gfc_simplify_any): Likewise.
	(gfc_simplify_count): Likewise.
	(gfc_simplify_iall): Likewise.
	(gfc_simplify_iany): Likewise.
	(gfc_simplify_iparity): Likewise.
	(gfc_simplify_minval): Likewise.
	(gfc_simplify_maxval): Likewise.
	(gfc_simplify_norm2): Likewise.
	(gfc_simplify_product): Likewise.
	(gfc_simplify_sum): Likewise.

2018-03-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/66128
	* gfortran.dg/zero_sized_9.f90: New test.

From-SVN: r258435
2018-03-11 20:28:00 +00:00
Jakub Jelinek
cd5437ab5d re PR debug/58150 (debug info about definition of enum class not emitted if the declaration was already used in a class)
PR debug/58150
	* dwarf2out.c (gen_enumeration_type_die): Don't guard adding
	DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
	but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
	a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
	addition of most attributes on !orig_type_die or the attribute not
	being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.

	* g++.dg/debug/dwarf2/enum2.C: New test.

From-SVN: r258434
2018-03-11 17:50:08 +01:00
Kito Cheng
ff77f6e8b3 [NDS32] Add new option -mvh.
gcc/
	* config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
	__NDS32_VH__ macro.
	* config/nds32/nds32.opt (mvh): New option.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r258427
2018-03-11 12:21:23 +00:00
Kito Cheng
72b7e5e1b2 [NDS32] Add new function nds32_cpu_cpp_builtins and use it for TARGET_CPU_CPP_BUILTINS.
gcc/
	* config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
	function.
	* config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
	* config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
	definition.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r258426
2018-03-11 08:42:30 +00:00
Kito Cheng
483c57af55 [NDS32] Implement strlensi pattern.
gcc/
	* config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
	function.
	* config/nds32/nds32-multiple.md (strlensi): New pattern.
	* config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r258425
2018-03-11 08:24:33 +00:00
Monk Chiang
3999578cc5 [NDS32] Add intrinsic function for ffb, ffmism and flmism.
gcc/
	* config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
	UNSPEC_FFMISM and UNSPEC_FLMISM.
	* config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
	for ffb, ffmism and flmism.
	* config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
	(unspec_ffmism): Ditto.
	(unspec_flmism): Ditto.
	(nds32_expand_builtin_impl): Check if string extension is available.
	* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
	NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>

From-SVN: r258424
2018-03-11 07:48:48 +00:00
GCC Administrator
d8c12d24bf Daily bump.
From-SVN: r258423
2018-03-11 00:16:18 +00:00
Steven G. Kargl
7d2fb01c0a re PR fortran/84734 (Compiling codes with insane array dimensions gives an ICE after r257971)
2018-03-09  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/84734
	* arith.c (check_result, eval_intrinsic):  If result overflows, pass
	the expression up the chain instead of a NULL pointer.

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

	PR fortran/84734
	* gfortran.dg/pr84734.f90: New test.

From-SVN: r258416
2018-03-10 18:34:12 +00:00
Vladimir Makarov
b3231b65bb revert: re PR target/83712 ("Unable to find a register to spill" when compiling for thumb1)
2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>

	Reverting patch:
	2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/83712
	* lra-assigns.c (assign_by_spills): Return a flag of reload
	assignment failure.  Do not process the reload assignment
	failures.  Do not spill other reload pseudos if they has the same
	reg class.
	(lra_assign): Add a return arg.  Set up from the result of
	assign_by_spills call.
	(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
	* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
	usage_insns if it is not NULL.
	(spill_hard_reg_in_range): New function.
	(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
	* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
	function prototypes.
	(lra_assign): Change prototype.
	* lra.c (lra): Add code to deal with fails by splitting hard reg
	live ranges.

From-SVN: r258415
2018-03-10 16:32:21 +00:00
H.J. Lu
90984fe26a i386: Fix a typo: Enforcment -> Enforcement
PR target/84807
	* config/i386/i386.opt: Replace Enforcment with Enforcement.

From-SVN: r258414
2018-03-10 07:57:10 -08:00
Eric Botcazou
f1bc641455 trans.c (node_has_volatile_full_access): Consider only entities for objects.
* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
	Consider only entities for objects.

From-SVN: r258412
2018-03-10 10:11:29 +00:00
Alexandre Oliva
7b602c4dc2 [IEPM] [PR debug/84620] use constant form for DW_AT_GNU_entry_view
When outputting entry views in symbolic mode, we used to use a lbl_id,
but that outputs the view as an addr, perhaps even in an indirect one,
which is all excessive and undesirable for a small assembler-computed
constant.

Introduce a new value class for symbolic views, so that we can output
the labels as constant data, using as narrow forms as possible, but
wide enough for any symbolic views output in the compilation.  We
don't know exactly where the assembler will reset views, but we count
the symbolic views since known reset points and use that as an upper
bound for view numbers.

Ideally, we'd use uleb128, but then the compiler would have to defer
.debug_info offset computation to the assembler.  I'm not going there
for now, so a symbolic uleb128 assembler constant in an attribute is
not something GCC can deal with ATM.

for  gcc/ChangeLog

	PR debug/84620
	* dwarf2out.h (dw_val_class): Add dw_val_class_symview.
	(dw_val_node): Add val_symbolic_view.
	* dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
	(symview_upper_bound): New.
	(new_line_info_table): Initialize symviews_since_reset.
	(dwarf2out_source_line): Count symviews_since_reset and set
	symview_upper_bound.
	(dw_val_equal_p): Handle symview.
	(add_AT_symview): New.
	(print_dw_val): Handle symview.
	(attr_checksum, attr_checksum_ordered): Likewise.
	(same_dw_val_p, size_of_die): Likewise.
	(value_format, output_die): Likewise.
	(add_high_low_attributes): Use add_AT_symview for entry_view.
	(dwarf2out_finish): Reset symview_upper_bound, clear
	zero_view_p.

From-SVN: r258411
2018-03-10 06:42:40 +00:00
Jason Merrill
7ed12599fa PR c++/84770 - ICE with typedef and parameter pack.
* pt.c (verify_unstripped_args_1): Split out from
	verify_unstripped_args.

From-SVN: r258408
2018-03-09 22:34:37 -05:00
Jason Merrill
732a431dc9 PR c++/84785 - ICE with alias template and default targs.
* pt.c (type_unification_real): Set processing_template_decl if
	saw_undeduced == 1.

From-SVN: r258407
2018-03-09 22:34:29 -05:00
Jason Merrill
3569f81f2d PR c++/84752 - ICE with capture of constexpr array.
* call.c (standard_conversion): Set rvaluedness_matches_p on the
	identity conversion under ck_lvalue.

From-SVN: r258406
2018-03-09 22:34:23 -05:00
GCC Administrator
a72e8ba830 Daily bump.
From-SVN: r258405
2018-03-10 00:16:13 +00:00