Commit Graph

154499 Commits

Author SHA1 Message Date
Jeff Law
13f752b273 aarch64.c (aarch64_emit_probe_stack_range): Handle frame sizes that do not satisfy aarch64_uimm12_shift.
* config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle
	frame sizes that do not satisfy aarch64_uimm12_shift.

	* gcc.c-torture/compile/stack-check-1.c: New test.

From-SVN: r249566
2017-06-22 11:18:05 -06:00
Ian Lance Taylor
47f68dc231 runtime: make NumGoroutine wait for system goroutines to register
In libgo system goroutines register themselves after they start.
    That means that there is a small race between the goroutine being
    seen by the scheduler and the scheduler knowing that the goroutine
    is a system goroutine. That in turn means that runtime.NumGoroutines
    can overestimate the number of goroutines at times.
    
    This patch fixes the overestimate by counting the number of system
    goroutines waiting to start, and pausing NumGoroutines until those
    goroutines have all registered.
    
    This is kind of a lot of mechanism for this not very important
    problem, but I couldn't think of a better approach.
    
    The test for this is TestNumGoroutine in runtime/proc_test.go.
    The test is not currently run, but it will be soon.
    
    Reviewed-on: https://go-review.googlesource.com/46457

From-SVN: r249565
2017-06-22 15:46:47 +00:00
Ian Lance Taylor
b8f70831bf compiler: fix stale comment in lexer
Remove stale comment in code that accepts "go:nowritebarrier"
    pragma. Update comment for "go:nowritebarrierrec".
    
    Reviewed-on: https://go-review.googlesource.com/46416

From-SVN: r249564
2017-06-22 15:42:50 +00:00
Jan Hubicka
eaee472d05 profile-count.h (apply_probability, [...]): Fix checks for zero.
* profile-count.h (apply_probability,
	apply_scale, probability_in): Fix checks for zero.

From-SVN: r249563
2017-06-22 14:50:23 +00:00
Ian Lance Taylor
c016fd32fe runtime: don't assume that _ = *s will panic if s is nil
With the gc toolchain apparently
            var s *string
            _ = *s
    is enough to panic with a nil pointer dereference. The gccgo compiler
    will simply discard the dereference, which I think is a reasonable and
    acceptable optimization. Change the tests to use an exported variable
    instead. The tests are not currently run, but they will be with a
    later patch to gotools.
    
    Reviewed-on: https://go-review.googlesource.com/46450

From-SVN: r249562
2017-06-22 14:46:12 +00:00
Ian Lance Taylor
3b0ddadf74 runtime: change some stack fields to uintptr
Because of how gccgo implements cgo calls, the code in dropm may not
    have any write barriers.  As a step toward implementing that, change
    the gcstack, gcnextsegment, and gcnextsp fields of the g struct to
    uintptr, so that assignments to them do not require write barriers.
    The gcinitialsp field remains unsafe.Pointer, as on 32-bit systems
    that do not support split stack it points to a heap allocated space
    used for the goroutine stack.
    
    The test for this is runtime tests like TestCgoCallbackGC, which are
    not run today but will be run with a future gotools patch.
    
    Reviewed-on: https://go-review.googlesource.com/46396

From-SVN: r249561
2017-06-22 14:44:30 +00:00
Rainer Orth
a055692a25 Support $SYSROOT for = in -I etc.
* incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix.
	* doc/cppdiropts.texi (-I @var{dir}): Document it.

From-SVN: r249560
2017-06-22 14:37:17 +00:00
Ian Lance Taylor
c8a47c4877 runtime: avoid write barriers when calling deferred function
Calling a deferred function currently requires changing from a uintptr
    to the function code to a Go function value. That is done by setting
    the value of a func local variable using unsafe.Pointer. The local
    variable will always be on the stack. Adjust the code that sets the
    local variable to avoid generating a write barrier.
    
    A write barrier is never needed here. Also, for deferreturn, we must
    avoid write barriers entirely when called from a cgo function; that
    requires more than just this, but this is a start.
    
    The test for this is runtime tests that use the go tool; these are not
    currently run, but they will be in the future.
    
    Reviewed-on: https://go-review.googlesource.com/46455

From-SVN: r249559
2017-06-22 14:33:13 +00:00
Ian Lance Taylor
b92e4dff0a runtime: rename _defer struct _panic field to panicStack
The gc version of the _defer struct has a _panic field that has a
    completely different meaning. We are going to want that bring that new
    meaning into the gofrontend to improve panic reports with nested
    panic calls. Simplify that by first renaming the existing _panic field.
    
    Reviewed-on: https://go-review.googlesource.com/46454

From-SVN: r249558
2017-06-22 14:31:16 +00:00
Ian Lance Taylor
ed99905e1d runtime: adjust tests for gofrontend
- don't run tests that depend on SetCgoTraceback
    - don't expect a '(' after the function name in a traceback
    - change the expected name of nested functions in a traceback
    
    These tests are not currently run, but they will be soon.
    
    Reviewed-on: https://go-review.googlesource.com/46453

From-SVN: r249557
2017-06-22 14:28:57 +00:00
Ian Lance Taylor
2a208bc257 runtime: don't build test files that use SetCgoTraceback for gccgo
The gofrontend doesn't support the runtime.SetCgoTraceback function,
    which is specifically for handling mixed Go and C tracebacks.
    Use a build tag to avoid compiling the runtime/testdata/testprogcgo
    files that refer to SetCgoTraceback. These files are not currently
    compiled anyhow, but they will be with a future gotools patch.
    
    Reviewed-on: https://go-review.googlesource.com/46452

From-SVN: r249556
2017-06-22 14:27:09 +00:00
Ian Lance Taylor
7d8c7b26c8 runtime: build testprogcgo with -pthread
Building this test with gccgo requires an explicit -pthread option to
    be passed to the C compiler, so that it links against -lpthread.
    This test is not built today, but it will be soon with a future patch.
    
    Reviewed-on: https://go-review.googlesource.com/46451

From-SVN: r249555
2017-06-22 14:23:54 +00:00
Jonathan Wakely
b6d03af0b1 PR libstdc++/81173 fix undefined memset with null pointer
PR libstdc++/81173
	* include/bits/stl_bvector.h (vector<bool>::_M_initialize_value):
	Do not pass null pointer to memset.

From-SVN: r249554
2017-06-22 15:16:38 +01:00
Richard Biener
0759db190d tree-vect-loop.c (vect_model_reduction_cost): Handle COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without REDUC_MAX_EXPR...
2016-06-22  Richard Biener  <rguenther@suse.de>

	* tree-vect-loop.c (vect_model_reduction_cost): Handle
	COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without
	REDUC_MAX_EXPR support.
	(vectorizable_reduction): Likewise.
	(vect_create_epilog_for_reduction): Likewise.

	* gcc.dg/vect/pr65947-1.c: Remove xfail.
	* gcc.dg/vect/pr65947-2.c: Likewise.
	* gcc.dg/vect/pr65947-3.c: Likewise.
	* gcc.dg/vect/pr65947-4.c: Likewise.
	* gcc.dg/vect/pr65947-5.c: Likewise.
	* gcc.dg/vect/pr65947-6.c: Likewise.
	* gcc.dg/vect/pr65947-8.c: Likewise.
	* gcc.dg/vect/pr65947-9.c: Likewise.
	* gcc.dg/vect/pr65947-10.c: Likewise.
	* gcc.dg/vect/pr65947-12.c: Likewise.
	* gcc.dg/vect/pr65947-13.c: Likewise.
	* gcc.dg/vect/pr65947-14.c: Likewise.
	* gcc.dg/vect/vect-cond-2.c: Likewise.
	* gcc.dg/vect/vect-pr69848.c: Likewise.

From-SVN: r249553
2017-06-22 12:07:07 +00:00
Martin Liska
c24c235efa Fix ipa-split-5.c test-case.
2017-06-22  Martin Liska  <mliska@suse.cz>

	* gcc.dg/tree-ssa/ipa-split-5.c: Make function bigger in order
	to not inline it.

From-SVN: r249503
2017-06-22 10:54:40 +00:00
James Greenhalgh
71f82be94f [Patch match.pd] Fold (A / (1 << B)) to (A >> B)
For the testcase in the patch:

  unsigned long
  f2 (unsigned long a, int b)
  {
    unsigned long x = 1UL << b;
    return a / x;
  }

We currently generate an unsigned division and a left shift, where
we could instead generate a right shift.

gcc/

2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>

	* match.pd (A / (1 << B) -> A >> B): New.
	* generic-match-head.c: Include optabs-tree.h.
	* gimple-match-head.c: Likewise.
	* optabs-tree.h (target_supports_op_p): New.
	* optabs-tree.c (target_supports_op_p): New.

gcc/testsuite/

2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>

	* gcc.dg/tree-ssa/forwprop-37.c: New.

From-SVN: r249502
2017-06-22 08:39:04 +00:00
Richard Biener
a78f698034 pr65947-14.c: Fix missing brace.
2017-06-22  Richard Biener  <rguenther@suse.de>

	* gcc.dg/vect/pr65947-14.c: Fix missing brace.

From-SVN: r249501
2017-06-22 08:33:28 +00:00
Richard Biener
85d5b033ae pr65947-14.c: New testcase.
2017-06-22  Richard Biener  <rguenther@suse.de>

	* gcc.dg/vect/pr65947-14.c: New testcase.

From-SVN: r249500
2017-06-22 08:14:21 +00:00
Rainer Orth
8dc877ebc4 Support --sysroot with Solaris ld
* configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for
	$gcc_cv_ld --help output.
	(gcc_cv_ld_demangle): Likewise.
	(gcc_cv_ld_eh_frame_hdr): Likewise.
	(gcc_cv_ld_pie): Likewise.
	(gcc_cv_ld_as_needed): Likewise.  Prefer native forms unless $gnu_ld.
	(gcc_cv_ld_buildid): Likewise.
	(gcc_cv_ld_sysroot): Likewise.
	(ld_bndplt_support): Likewise.
	(ld_pushpopstate_support): Likewise.
	* configure: Regenerate.
	* config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define.

From-SVN: r249496
2017-06-22 06:54:04 +00:00
Ian Lance Taylor
c83c219a63 runtime: in traceback, print panic rather than runtime.gopanic
The gc toolchain does the same thing, in gentraceback in
    runtime/traceback.go.
    
    The test for this is TestPanicTraceback in runtime/crash_test.go.  We
    don't yet run that test, but we will in a future change.
    
    Reviewed-on: https://go-review.googlesource.com/46397

From-SVN: r249495
2017-06-22 04:16:23 +00:00
Ian Lance Taylor
55ea0ea07d compiler, runtime: better stack trace for go f() where f is nil
The test for this is TestGoNil in the runtime package, which we don't
    run yet but will run with a subsequent gotools patch.
    
    Updates golang/go#8045
    
    Reviewed-on: https://go-review.googlesource.com/46392

From-SVN: r249494
2017-06-22 04:13:36 +00:00
GCC Administrator
bc216de9f6 Daily bump.
From-SVN: r249492
2017-06-22 00:16:21 +00:00
Ian Lance Taylor
fbe457feb7 debug/elf: handle Alpha relocs
Patch by Uros Bizjak.
    
    Reviewed-on: https://go-review.googlesource.com/46391

From-SVN: r249487
2017-06-21 22:39:36 +00:00
Ian Lance Taylor
36f1a35f69 compiler: fix missing case in Array_type::get_value_pointer
Update the code in Array_type::get_value_pointer that handles
    "lvalue" context to look for both regular var expressions
    and temp var expressions, since both can appear in array/slice
    index expressions on the left hand side of assignments.
    
    Reviewed-on: https://go-review.googlesource.com/46170

From-SVN: r249486
2017-06-21 22:29:58 +00:00
Ian Lance Taylor
3f741f1b60 Forgot to remove this file in the last libgo commit.
libgo: remove old MIPS architecture names
    
    This removes the old names for the 3 main MIPS ABIs: mipso32, mipsn32
    and mipsn64. It also removes the mipso64 ABI which has no equivalent
    architecture name in go. This ABI has been dead for sometime and I doubt
    anyone will miss it.
    
    Change-Id: I087b243784edf6705fdaf9c32e3233da5e387283

From-SVN: r249485
2017-06-21 22:29:36 +00:00
Ian Lance Taylor
b95cd48b01 libgo: remove old MIPS architecture names
This removes the old names for the 3 main MIPS ABIs: mipso32, mipsn32
    and mipsn64. It also removes the mipso64 ABI which has no equivalent
    architecture name in go. This ABI has been dead for sometime and I doubt
    anyone will miss it.
    
    Reviewed-on: https://go-review.googlesource.com/46154

From-SVN: r249477
2017-06-21 22:11:04 +00:00
Ian Lance Taylor
1701a9d8f0 libgo: use gc's arch names as the default GOARCHs on MIPS
This means that the gc tools and gofrontend agree on the architecture names
    for the 3 MIPS ABIs which should allow a gofrontend compiler to build go.
    
    Reviewed-on: https://go-review.googlesource.com/46153

From-SVN: r249476
2017-06-21 21:55:34 +00:00
Ian Lance Taylor
95eebd21db cmd/cgo: add mips64p32* to ptrSizeMap and intSizeMap
Reviewed-on: https://go-review.googlesource.com/46152

From-SVN: r249475
2017-06-21 21:50:52 +00:00
Ian Lance Taylor
4c0478b338 internal/syscall/unix: implement randomTrap on mips64p32*
Rename getrandom_linux_mipsn32.go to use the new architecture name for
    the n32 ABI and enable building it on mips64p32 and mips64p32le.
    
    Reviewed-on: https://go-review.googlesource.com/46151

From-SVN: r249474
2017-06-21 21:47:35 +00:00
Ian Lance Taylor
a8bc65cd00 libgo, syscall: fix ptrace implementation on MIPS
On MIPS, the correct structure for PtraceRegs is 'struct pt_regs' which
    is declared in linux/ptrace.h. Previously no PtraceRegs structure was
    created on MIPS because 'struct user_regs_struct' doesn't exist there.
    
    Fallback to using pt_regs when the PtraceRegs structure is generated in
    mksysinfo.sh, then adjust syscall_linux_mipsx.go to read the program
    counter from the correct field.
    
    In addition, implement PtraceGetRegs and PtraceSetRegs on all 3 ABI
    variants.
    
    syscall_linux_mips64x.go can now be removed since the ptrace code on
    all 3 ABIs is identical.
    
    Reviewed-on: https://go-review.googlesource.com/46150

From-SVN: r249473
2017-06-21 21:46:03 +00:00
Ian Lance Taylor
8d4b68a7c4 libgo, syscall: fix ptrace implementation on MIPS
On MIPS, the correct structure for PtraceRegs is 'struct pt_regs' which
    is declared in linux/ptrace.h. Previously no PtraceRegs structure was
    created on MIPS because 'struct user_regs_struct' doesn't exist there.
    
    Fallback to using pt_regs when the PtraceRegs structure is generated in
    mksysinfo.sh, then adjust syscall_linux_mipsx.go to read the program
    counter from the correct field.
    
    In addition, implement PtraceGetRegs and PtraceSetRegs on all 3 ABI
    variants.
    
    syscall_linux_mips64x.go can now be removed since the ptrace code on
    all 3 ABIs is identical.
    
    Reviewed-on: https://go-review.googlesource.com/46150

From-SVN: r249472
2017-06-21 21:42:41 +00:00
Michael Meissner
4ded86690e re PR target/80510 (Optimize Power7/power8 Altivec load/stores)
2017-06-21  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/80510
	* gcc.target/powerpc/pr80510-1.c: Restrict test to 64-bit until
	32-bit support is added.  Change ITYPE size to 64-bit integer.
	* gcc.target/powerpc/pr80510-2.c: Likewise.

From-SVN: r249470
2017-06-21 21:08:40 +00:00
Jakub Jelinek
ac135a731d re PR target/81151 (-Wmaybe-uninitialized in insn-emit.c)
PR target/81151
	* config/i386/sse.md (round<mode>2): Renumber match_dup and
	operands indexes to avoid gap between operands and match_dups.

From-SVN: r249469
2017-06-21 22:02:00 +02:00
Ville Voutilainen
5e88d2d08d PR libstdc++/80675, PR libstdc++/80940
* include/std/istream:
(__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream): Use the new base.
(__rvalue_istream_type): New.
(operator>>(_Istream&&, _Tp&&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual extraction.
* include/std/ostream:
(__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream): Use the new base.
(__rvalue_ostream_type): New.
(operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual insertion.
* testsuite/27_io/rvalue_streams-2.cc: Add new tests.

From-SVN: r249468
2017-06-21 22:53:26 +03:00
Jakub Jelinek
cb8d1b01b3 re PR c++/81154 (OpenMP with shared variable in a template class crash)
PR c++/81154
	* semantics.c (handle_omp_array_sections_1, finish_omp_clauses):
	Complain about t not being a variable if t is OVERLOAD even
	when processing_template_decl.

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

From-SVN: r249467
2017-06-21 20:30:32 +02:00
Thomas Preud'homme
1e55769b15 Fix variant selection in dg-cmp-results.sh
2017-06-21  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    contrib/
    * dg-cmp-results.sh: Restore filtering on target variant.

From-SVN: r249463
2017-06-21 16:20:57 +00:00
Andrew Jenner
827c925e6a MAINTAINERS: Add myself as maintainer for PowerPC SPE port.
* MAINTAINERS: Add myself as maintainer for PowerPC SPE port.

From-SVN: r249462
2017-06-21 16:17:24 +00:00
David Malcolm
113459fad3 C++: Add fix-it hints for -Wold-style-cast
gcc/cp/ChangeLog:
	* parser.c (get_cast_suggestion): New function.
	(maybe_add_cast_fixit): New function.
	(cp_parser_cast_expression): Capture the location of the closing
	parenthesis.  Call maybe_add_cast_fixit when emitting warnings
	about old-style casts.

gcc/testsuite/ChangeLog:
	* g++.dg/other/old-style-cast-fixits.C: New test case.

From-SVN: r249461
2017-06-21 16:11:36 +00:00
Andrew Pinski
b10f10092e aarch64-cost-tables.h (thunderx_extra_costs): Increment Arith_shift and Arith_shift_reg by 1.
2017-06-21  Andrew Pinski  <apinski@cavium.com>

        * config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs):
        Increment Arith_shift and Arith_shift_reg by 1.
        * config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend):
        New tuning flag.
        * config/aarch64/aarch64.c (thunderx_tunings): Enable
        AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND.
        (aarch64_strip_extend): Add new argument and test for it.
        (aarch64_cheap_mult_shift_p): New function.
        (aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't
        add a cost if it is true.
        Update calls to aarch64_strip_extend.
        (aarch64_rtx_costs): Update calls to aarch64_strip_extend.

From-SVN: r249459
2017-06-21 08:58:12 -07:00
Andrew Pinski
f1e247d018 aarch64-cores.def (thunderxt88p1): Use thunderxt88 tunings.
2017-06-21  Andrew Pinski  <apinski@cavium.com>

        * config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88
        tunings.
        (thunderxt88): Likewise.
        * config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable.
        (thunderx_prefetch_tune): New variable.
        (thunderx2t99_prefetch_tune): Update for the correct values.
        (thunderxt88_tunings): New variable.
        (thunderx_tunings): Use thunderx_prefetch_tune instead of
        generic_prefetch_tune.
        (thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK.

From-SVN: r249458
2017-06-21 08:35:14 -07:00
Kyrylo Tkachov
2c0113fd8a [AArch64] Fix atomic_cmp_exchange_zero_reg_1.c with +lse
* config/aarch64/atomics.md (aarch64_compare_and_swap<mode>_lse,
	SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z.
	(aarch64_compare_and_swap<mode>_lse, GPI): Likewise.
	(aarch64_atomic_cas<mode>, SHORT): Likewise for operand 2.
	(aarch64_atomic_cas<mode>, GPI): Likewise.

From-SVN: r249457
2017-06-21 15:26:21 +00:00
Jakub Jelinek
5e9d501c7d * g++.dg/cpp0x/constexpr-cast.C: Adjust dg-error for ILP32.
From-SVN: r249455
2017-06-21 16:55:40 +02:00
Ramana Radhakrishnan
6bea305b3e Update baseline symbols for aarch64-none-linux-gnu
* config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Regenerate

From-SVN: r249454
2017-06-21 14:38:56 +00:00
Tom de Vries
27d33d3ef0 Support dg-add-options in profopt.exp
2017-06-21  Tom de Vries  <tom@codesourcery.com>

	* lib/profopt.exp (profopt-get-options): Support dg-add-options.

From-SVN: r249453
2017-06-21 14:14:31 +00:00
Tom de Vries
5433db459e Fix warning in gcc.dg/tree-prof/comp-goto-1.c
2017-06-21  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/tree-prof/comp-goto-1.c: Fix 'return type defaults to int'
	warning.

From-SVN: r249452
2017-06-21 14:14:16 +00:00
Martin Liska
93c1837582 Rework cold and hot label attributes in predict.c.
2017-06-21  Martin Liska  <mliska@suse.cz>

	* gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT
	statements on cold and hot labels.
	* predict.c (tree_estimate_probability_bb): Remove the
	prediction from this place.
2017-06-21  Martin Liska  <mliska@suse.cz>

	* gcc.dg/tree-ssa/attr-hotcold-2.c: Update scanned patterns.

From-SVN: r249451
2017-06-21 12:52:14 +00:00
Martin Liska
e59a1c22fb Make early return predictor more precise.
2017-06-21  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/79489
	* gimplify.c (maybe_add_early_return_predict_stmt): New
	function.
	(gimplify_return_expr): Call the function.
	* predict.c (tree_estimate_probability_bb): Remove handling
	of early return.
	* predict.def: Update comment about early return predictor.
	* gimple-predict.h (is_gimple_predict): New function.
	* predict.def: Change default value of early return to 66.
	* tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT
	statements.
	* passes.def: Put pass_strip_predict_hints to the beginning of
	IPA passes.

From-SVN: r249450
2017-06-21 12:51:46 +00:00
Pierre-Marie de Rodat
ff9baa5f1c DWARF: make it possible to emit debug info for declarations only
The DWARF back-end used to systematically ignore file-scope function and
variable declarations.  While this is justified in language like C/C++,
where such declarations can appear in several translation units and thus
bloat uselessly the debug info, this behavior is counter-productive in
languages with a well-defined module system.  Specifically, it prevents
the description of imported entities, that belong to foreign languages,
making them unavailable from debuggers.

Take for instance:

    package C_Binding is
        function My_C_Function (I : Integer) return Integer;
        pragma Import (C, My_C_Function, "my_c_function");
    end C_Binding;

This makes available for Ada programs the C function "my_c_function"
under the following name: C_Binding.My_C_Function.  When GCC compiles
it, though, it is represented as a FUNCTION_DECL node with DECL_EXTERNAL
set and a null DECL_INITIAL, which used to be discarded unconditionally
in the DWARF back-end.

This patch moves such filter from the DWARF back-end to the relevant
callers: passes.c:rest_of_decl_compilation and
godump.c:go_early_global_decl. It also This patch also updates the Ada
front-end to call debug hooks for functions such as in the above
example, so that we do generate debugging information for them.

gcc/
	* dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope
	FUNCTION_DECL declarations.
	(dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL
	declarations.
	(dwaf2out_decl): Likewise.
	* godump.c (go_early_global_decl): Skip call to the real debug hook
	for FUNCTION_DECL declarations.
	* passes.c (rest_of_decl_compilation): Skip call to the
	early_global_decl debug hook for FUNCTION_DECL declarations, unless
	-fdump-go-spec is passed.

gcc/ada/
	* gcc-interface/ada-tree.h (DECL_FUNCTION_IS_DEF): Update copyright
	notice.  New macro.
	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Tag the subprogram
	as a definition.
	(Compilation_Unit_to_gnu): Tag the elaboration procedure as a
	definition.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Tag declarations of
	imported subprograms for the current compilation unit as
	definitions.  Disable debug info for references to variables.
	* gcc-interface/gigi.h (create_subprog_decl): Update declaration.
	* gcc-interface/utils.c (gnat_pushdecl): Add external DECLs that are
	not built-in functions to their binding scope.
	(create_subprog_decl): Add a DEFINITION parameter.  If it is true, tag
	the function as a definition.  Update all callers.
	(gnat_write_global_declarations): Emit debug info for imported
	functions.  Filter out external variables for which debug info
	is disabled.

gcc/testsuite/
	* gnat.dg/debug11_pkg.adb, gnat.dg/debug11_pkg.ads,
	gnat.dg/debug11_pkg2.ads: New testcase.

From-SVN: r249449
2017-06-21 11:24:51 +00:00
Marc Glisse
a23ba8ccd0 [i386] __builtin_ia32_stmxcsr could be pure
2017-06-21  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* config/i386/i386.c (struct builtin_isa): New field pure_p.
	Reorder for compactness.
	(def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p.
	(def_builtin_pure, def_builtin_pure2): New functions.
	(ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure.

gcc/testsuite/
	* gcc.target/i386/getround.c: New file.

From-SVN: r249448
2017-06-21 11:20:41 +00:00
Marc Glisse
ed73f46f30 NOP conversions in X+CST+CST
2017-06-21  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* match.pd (nop_convert): New predicate.
	((A +- CST1) +- CST2): Allow some NOP conversions.

gcc/testsuite/
	* gcc.dg/tree-ssa/addadd.c: Un-XFAIL.
	* gcc.dg/tree-ssa/addadd-2.c: New file.

From-SVN: r249447
2017-06-21 11:16:27 +00:00