Commit Graph

166535 Commits

Author SHA1 Message Date
Paul Thomas
db06a76e9a re PR fortran/88929 (ICE on building MPICH 3.2 with GCC 9 with ISO_Fortran_binding)
2019-01-24  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/88929
	* trans-array.c (gfc_conv_descriptor_elem_len): New function.
	* trans-array.h : Add prototype for above.
	* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Take account of
	assumed rank arrays being flagged by rank = -1 in expressions.
	Intent in arrays need a pointer to a copy of the data to be
	assigned to the descriptor passed for conversion. This should
	then be freed, together with the CFI descriptor on return from
	the C call.

2019-01-24  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/88929
	* gfortran.dg/ISO_Fortran_binding_3.f90 : New test
	* gfortran.dg/ISO_Fortran_binding_3.c : Subsidiary source.

From-SVN: r268231
2019-01-24 07:19:49 +00:00
Ian Lance Taylor
52c9cfeb08 runtime: install SIGURG handler on C created threads
Precise stack scan uses SIGURG to trigger a stack scan. We need
    to have Go signal handler installed for SIGURG.
    
    Reviewed-on: https://go-review.googlesource.com/c/159097

From-SVN: r268230
2019-01-24 05:31:14 +00:00
Xiong Hu Luo
eea18a4eb0 fix comments typo.
gcc/ChangeLog

2019-01-24  Xiong Hu Luo  <luoxhu@linux.vnet.ibm.com>

	* tree-ssa-dom.c (test_for_singularity): fix a comment typo.
	* vr-values.c (find_case_label_ranges): fix a comment typo.

From-SVN: r268229
2019-01-24 02:18:16 +00:00
Xiong Hu Luo
275e9ad9ee fix tab alignment issue.
ChangeLog

	2019-01-24  Xiong Hu Luo  <luoxhu@linux.vnet.ibm.com>

	* ChangeLog: replace space with tab.
	* MAINTAINERS: delete 1 tab to keep alignment.

From-SVN: r268228
2019-01-24 01:53:28 +00:00
GCC Administrator
a04870951e Daily bump.
From-SVN: r268225
2019-01-24 00:16:31 +00:00
Bin Cheng
76ca8d0f4a re PR target/85711 (ICE in aarch64_classify_address, at config/aarch64/aarch64.c:5678)
2019-01-23  Bin Cheng  <bin.cheng@arm.com>
	    Steve Ellcey <sellcey@marvell.com>

	PR target/85711
	* recog.c (address_operand): Return false on wrong mode for address.
	(constrain_operands): Check for mode with 'p' constraint.

Co-Authored-By: Steve Ellcey <sellcey@marvell.com>

From-SVN: r268219
2019-01-23 22:43:42 +00:00
H.J. Lu
6395ba73f8 libgcc2.c: Correct DI/TI -> SF/DF conversions
FSTYPE FUNC (DWtype u) in libgcc2.c, which converts DI/TI to SF/DF, has

  /* No leading bits means u == minimum.  */
  if (count == 0)
    return -(Wtype_MAXp1_F * (Wtype_MAXp1_F / 2));

in the third case (where actually count == 0 only means the high part is
minimum).  It should be:

  /* No leading bits means u == minimum.  */
  if (count == 0)
    return Wtype_MAXp1_F * (FSTYPE) (hi | ((UWtype) u != 0));

instead.

gcc/testsuite/

2019-01-23  H.J. Lu  <hongjiu.lu@intel.com>

	PR libgcc/88931
	* gcc.dg/torture/fp-int-convert-timode-1.c: New test.
	* gcc.dg/torture/fp-int-convert-timode-2.c: Likewise.
	* gcc.dg/torture/fp-int-convert-timode-3.c: Likewise.
	* gcc.dg/torture/fp-int-convert-timode-4.c: Likewise.

libgcc/

2019-01-23  Joseph Myers  <joseph@codesourcery.com>

	PR libgcc/88931
	* libgcc2.c (FSTYPE FUNC (DWtype u)): Correct no leading bits
	case.

From-SVN: r268216
2019-01-23 13:41:59 -08:00
Uros Bizjak
8c5b33788d * g++.target/i386/pr88998.C (main): Use FP constant in the assert.
From-SVN: r268198
2019-01-23 20:59:15 +01:00
Uros Bizjak
3274c5a342 re PR target/88998 (bad codegen with mmx instructions for unordered_map)
PR target/88998
	* config/i386/sse.md (sse2_cvtpi2pd): Add SSE alternatives.
	Disparage MMX alternative.
	(sse2_cvtpd2pi): Ditto.
	(sse2_cvttpd2pi): Ditto.

testsuite/ChangeLog:

	PR target/88998
	* g++.target/i386/pr88998.c: New test.

From-SVN: r268195
2019-01-23 20:10:58 +01:00
Marek Polacek
4aab08286a PR c++/88757 - qualified name treated wrongly as type.
* parser.c (cp_parser_direct_declarator): don't treat qualified-ids
	in parameter-list as types if name lookup for declarator-id didn't
	find one or more function templates.

	* g++.dg/cpp0x/dependent2.c: new test.
	* g++.dg/cpp2a/typename10.c: remove dg-error.
	* g++.dg/cpp2a/typename12.c: new test.
	* g++.dg/template/static30.c: remove dg-error.

From-SVN: r268192
2019-01-23 17:25:42 +00:00
David Malcolm
6770fa53f9 aarch64: fix use-after-free in -march=native (PR driver/89014)
Running:
  $ valgrind ./xgcc -B. -c test.c -march=native
on aarch64 shows a use-after-free in host_detect_local_cpu due
to the std::string result of aarch64_get_extension_string_for_isa_flags
only living until immediately after a c_str call.

This leads to corrupt "-march=" values being passed to cc1.

This patch fixes the use-after-free, though it appears to also need
Tamar's patch here:
  https://gcc.gnu.org/ml/gcc-patches/2018-12/msg01302.html
in order to generate valid values for cc1.  This may have worked by
accident in the past, if the corrupt "-march=" value happened to be
0-terminated in the "right" place; with this patch it now appears
to reliably break without Tamar's patch.

gcc/ChangeLog:
	PR driver/89014
	* config/aarch64/driver-aarch64.c (host_detect_local_cpu): Fix
	use-after-free of the result of
	aarch64_get_extension_string_for_isa_flags.

From-SVN: r268189
2019-01-23 16:36:46 +00:00
Jakub Jelinek
372e6e6bac re PR c/44715 (Break in increment expression of "for" statement inconsistent with g++)
PR c/44715
	* cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
	after genericizing cond and incr expressions.

	* doc/extend.texi: Document break and continue behavior in
	statement expressions.

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

From-SVN: r268188
2019-01-23 15:41:16 +01:00
Jakub Jelinek
d0f2db2316 re PR c++/88984 (ICE in genericize_switch_stmt, at cp/cp-gimplify.c:377)
PR c++/88984
	* cp-gimplify.c (genericize_switch_stmt): Move cond genericization
	before the begin_bc_block call.

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

From-SVN: r268187
2019-01-23 15:39:43 +01:00
Richard Biener
ef192ae1b6 re PR middle-end/89008 (O2 and O1 results differ for simple test)
2019-01-23  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/89008
	* tree-ssa-reassoc.c (eliminate_using_constants): For * 0 do
	not leave another stray operand.

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

From-SVN: r268186
2019-01-23 14:02:13 +00:00
Jason Merrill
4d0c18c601 PR c++/87893 - constexpr ctor ICE on ARM.
PR c++/88293 - ICE with comma expression.
	* constexpr.c (initialized_type): Don't shortcut non-void type.
	Handle COMPOUND_EXPR.
	(cxx_eval_outermost_constant_expr): Return early for void type.

From-SVN: r268185
2019-01-23 08:54:23 -05:00
Jakub Jelinek
561fd08128 * BASE-VER: Bump to 9.0.1.
From-SVN: r268184
2019-01-23 14:34:35 +01:00
Jonny Grant
a795cd3ddf re PR sanitizer/89010 (Update URLs in libsanitizer/README.gcc)
PR sanitizer/89010
	* libsanitizer/README.gcc: Update to current https URLs.

From-SVN: r268183
2019-01-23 14:18:50 +01:00
Eric Botcazou
39791fb62f cgraphunit.c (cgraph_node::expand_thunk): When expanding a GIMPLE thunk that returns by reference...
* cgraphunit.c (cgraph_node::expand_thunk): When expanding a GIMPLE
	thunk that returns by reference, use the type of the return object
	of the thunk instead of that of the alias to build the dereference.

From-SVN: r268182
2019-01-23 11:07:56 +00:00
Vineet Gupta
b3e5901b62 [ARC] atomics: Add operand to DMB instruction
Atomics use DMB instruction to enforce ordering of loads/stores.
Currently gcc generates DMB w/o any arg which is a no-op. Fix that by
generating DMB 3 which enforces R+W ordering. It is stricter than what
acq/rel expect, but there's no other way.

gcc/

2019-xx-xx  Vineet Gupta <vgupta@synopsys.com>

       * config/arc/atomic.md: Add operand to DMB instruction

From-SVN: r268181
2019-01-23 12:04:19 +01:00
Tom de Vries
3f5d2012fb [libbacktrace] Use size_t for low_offset/high_offset fields of struct unit
2019-01-23  Tom de Vries  <tdevries@suse.de>

	* dwarf.c (struct unit): Use size_t for low_offset/high_offset fields.
	(units_search, find_unit): Use size_t for offset.
	(build_address_map): Use size_t for unit_offset.

From-SVN: r268180
2019-01-23 10:22:43 +00:00
Jakub Jelinek
37aa68563b re PR tree-optimization/88964 (ICE in wide_int_to_tree_1, at tree.c:1561)
PR tree-optimization/88964
	* gimple-loop-interchange.cc (loop_cand::analyze_induction_var): Use
	build_zero_cst instead of build_int_cst.  Return false for loop
	invariants which honor signed zeros.

	* gfortran.dg/pr88964.f90: New test.

From-SVN: r268179
2019-01-23 09:35:38 +01:00
Tom de Vries
4a75460b00 [nvptx, libgomp] Fix cuMemAlloc with size zero
Consider test-case:
...
int
main (void)
{
  #pragma acc parallel async
  ;
  #pragma acc parallel async
  ;
  #pragma acc wait

  return 0;
}
...

This fails with:
...
libgomp: cuMemAlloc error: invalid argument
Segmentation fault (core dumped)
...
The cuMemAlloc error is due to the fact that we're try to allocate 0 bytes.

Fix this by preventing calling map_push with size zero argument in nvptx_exec.

This also has the consequence that for the abort-1.c test-case, we end up
calling cuMemFree during map_fini for the struct cuda_map allocated in
map_init, which fails because an abort happened.  Fix this by calling
cuMemFree with CUDA_CALL_NOCHECK in cuda_map_destroy.

2019-01-23  Tom de Vries  <tdevries@suse.de>

	PR target/PR88946
	* plugin/plugin-nvptx.c (cuda_map_destroy): Use CUDA_CALL_NOCHECK for
	cuMemFree.
	(nvptx_exec): Don't call map_push if mapnum == 0.
	* testsuite/libgomp.oacc-c-c++-common/pr88946.c: New test.

From-SVN: r268178
2019-01-23 08:16:56 +00:00
Tom de Vries
4fef8e4d8c [nvptx, libgomp] Fix assert (!s->map->active) in map_fini
There are currently two situations where this assert triggers:
...
libgomp/plugin/plugin-nvptx.c: map_fini: Assertion `!s->map->active' failed.
...

First, in abort-1.c, a parallel region triggering an abort:
...
int
main (void)
{
  #pragma acc parallel
  abort ();

  return 0;
}
...

The abort is detected in nvptx_exec as the CUDA_ERROR_ILLEGAL_INSTRUCTION
return status of the cuStreamSynchronize call after kernel launch, which is
then handled by calling non-returning function GOMP_PLUGIN_fatal.
Consequently, the map_pop in nvptx_exec that in case of cuStreamSynchronize
success would remove or inactive the element added by the map_push earlier in
nvptx_exec, does not trigger.  With the element no longer active, but still
marked active and a member of s->map,  we run into the assert during
GOMP_OFFLOAD_fini_device, which is triggered from atexit handler
gomp_target_fini (which is triggered by the GOMP_PLUGIN_fatal mentioned above
calling exit).

Second, in pr88941.c, an async parallel region without wait:
...
int
main (void)
{
  #pragma acc parallel async
  ;

  /* no #pragma acc wait */
  return 0;
}
...

Because nvptx_exec is handling an async region, it does not call map_pop for
the element added by map_push, but schedules an kernel execution completion
event to call map_pop.  Again, we run into the assert during
GOMP_OFFLOAD_fini_device, which is triggered from atexit handler
gomp_target_fini, but the exit in this case is triggered by returning from main.
So either the kernel is still running, or the kernel has completed but the
corresponding event that is supposed to call map_pop is stuck in the event
queue, waiting for an event_gc.

Fix this by removing the assert, and skipping the freeing of device memory if
the map is still marked active (though in the async case, this is more a
workaround than an fix).

2019-01-23  Tom de Vries  <tdevries@suse.de>

	PR target/88941
	PR target/88939
	* plugin/plugin-nvptx.c (cuda_map_destroy): Handle map->active case.
	(map_fini): Remove "assert (!s->map->active)".
	* testsuite/libgomp.oacc-c-c++-common/pr88941.c: New test.

From-SVN: r268177
2019-01-23 08:16:42 +00:00
Tom de Vries
2ee6cb22c1 [nvptx, libgomp] Fix map_push
The map field of a struct ptx_stream is a FIFO.  The FIFO is implemented as a
single linked list, with pop-from-the-front semantics.

The function map_pop pops an element, either by:
- deallocating the element, if there is more than one element
- or marking the element inactive, if there's only one element

The responsibility of map_push is to push an element to the back, as well as
selecting the element to push, by:
- allocating an element, or
- reusing the element at the front if inactive and big enough, or
- dropping the element at the front if inactive and not big enough, and
  allocating one that's big enough

The current implemention gets at least the first and most basic scenario wrong:

> map = cuda_map_create (size);

We create an element, and assign it to map.

> for (t = s->map; t->next != NULL; t = t->next)
>   ;

We determine the last element in the fifo.

> t->next = map;

We append the new element.

> s->map = map;

But here, we throw away the rest of the FIFO, and declare the FIFO to be just
the new element.

This problem causes the test-case asyncwait-1.c to fail intermittently on some
systems.  The pr87835.c test-case added here is a a minimized and modified
version of asyncwait-1.c (avoiding the kernel construct) that is more likely to
fail.

Fix this by rewriting map_pop more robustly, by:
- seperating the function in two phases: select element, push element
- when reusing or dropping an element, making sure that the element is cleanly
  popped from the queue
- rewriting the push element part in such a way that it can handle all cases
  without needing if statements, such that each line is exercised for each of
  the three cases.

2019-01-23  Tom de Vries  <tdevries@suse.de>

	PR target/87835
	* plugin/plugin-nvptx.c (map_push): Fix adding of allocated element.
	* testsuite/libgomp.oacc-c-c++-common/pr87835.c: New test.

From-SVN: r268176
2019-01-23 08:16:11 +00:00
Martin Sebor
c262f6b77c Warray-bounds-2.c: Include headers only if they exist.
gcc/testsuite/ChangeLog:

	* c-c++-common/Warray-bounds-2.c: Include headers only if they exist.
	* c-c++-common/Warray-bounds-3.c: Make xfails conditional on target
	non_strict_align.
	* c-c++-common/Wrestrict-2.c: Include headers only if they exist.
	* c-c++-common/Wrestrict.c: Make xfails conditional on target
	non_strict_align.

From-SVN: r268175
2019-01-22 17:23:21 -07:00
GCC Administrator
e6c26d6406 Daily bump.
From-SVN: r268174
2019-01-23 00:16:27 +00:00
Segher Boessenkool
37e8771204 Fix -fsplit-paths documentation
It is enabled at -O3, but the doc currently says -O2.  This fixes it.


	* doc/invoke.texi (-fsplit-paths): This is enabled by default at -O3.

From-SVN: r268170
2019-01-23 00:29:39 +01:00
Steve Ellcey
1b20e079b0 c-c++-common/gomp/pr60823-1.c: Change aarch64-*-* target to aarch64*-*-* target.
2018-01-22  Steve Ellcey  <sellcey@marvell.com>

	c-c++-common/gomp/pr60823-1.c: Change aarch64-*-* target
	to aarch64*-*-* target.
	c-c++-common/gomp/pr60823-3.c: Ditto.
	g++.dg/gomp/declare-simd-1.C: Ditto.
	g++.dg/gomp/declare-simd-3.C: Ditto.
	g++.dg/gomp/declare-simd-4.C: Ditto.
	g++.dg/gomp/declare-simd-7.C: Ditto.
	g++.dg/gomp/pr88182.C: Ditto.
	gcc.dg/gomp/declare-simd-1.c: Ditto.
	gcc.dg/gomp/declare-simd-3.c: Ditto.
	gcc.dg/gomp/pr59669-2.c: Ditto.
	gcc.dg/gomp/pr87895-1.c: Ditto.
	gcc.dg/gomp/simd-clones-2.c: Ditto.
	gfortran.dg/gomp/declare-simd-2.f90: Ditto.
	gfortran.dg/gomp/pr79154-1.f90: Ditto.
	gfortran.dg/gomp/pr83977.f90: Ditto.

From-SVN: r268168
2019-01-22 22:37:34 +00:00
Iain Buclaw
c21af61d6d d/dmd: Merge dmd upstream e21c07e84
Fixes bootstrap regression introduced by the previous merge.

Reviewed-on: https://github.com/dlang/dmd/pull/9283

From-SVN: r268167
2019-01-22 22:30:56 +00:00
Jakub Jelinek
8b5d2c5512 re PR target/88965 (powerpc64le vector builtin hits ICE in verify_gimple)
PR target/88965
	* config/rs6000/rs6000.c: Include tree-vrp.h and tree-ssanames.h.
	(rs6000_gimple_fold_builtin): If MEM_REF address doesn't satisfy
	is_gimple_mem_ref_addr predicate, force it into a SSA_NAME first.

	* gcc.target/powerpc/pr88965.c: New test.

From-SVN: r268166
2019-01-22 23:30:44 +01:00
Jakub Jelinek
18a23298d3 re PR middle-end/88968 (Stack overflow in gimplify_expr)
PR middle-end/88968
	* gimplify.c (gimplify_omp_atomic): Handle bitfield atomics with
	non-integral DECL_BIT_FIELD_REPRESENTATIVEs.

	* c-omp.c (c_finish_omp_atomic): For bitfield atomics, update type
	variable after using BIT_FIELD_REF.

	* c-c++-common/gomp/atomic-23.c: New test.

From-SVN: r268165
2019-01-22 23:28:42 +01:00
Jakub Jelinek
fbf3df55a1 re PR target/87064 (libgomp.oacc-fortran/reduction-3.f90 fails starting with r263751)
PR target/87064
	* config/rs6000/vsx.md (*vsx_reduc_<VEC_reduc_name>_v2df_scalar):
	Disable for little endian.

From-SVN: r268164
2019-01-22 23:27:32 +01:00
Harald Anlauf
358ebd8fbf re PR fortran/88579 (Calculating power of powers of two)
2019-01-22  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/88579
	* trans-expr.c (gfc_conv_power_op): Handle cases of (2**e) ** integer
	and (- 2**e) ** integer.

2019-01-22  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/88579
	* gfortran.dg/power_8.f90: New test.

From-SVN: r268163
2019-01-22 21:23:57 +00:00
Sandra Loosemore
7a8c906ca4 pr87906_0.C: Add dg-require-effective-target fpic.
2019-01-22  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/testsuite/
	* g++.dg/lto/pr87906_0.C: Add dg-require-effective-target fpic.
	* g++.dg/vec-init-1.C: Likewise.
	* gcc.dg/pr87793.c: Likewise.

From-SVN: r268162
2019-01-22 13:36:47 -05:00
Sandra Loosemore
7c426d1f9c pr86397-1.C: Add -fdelete-null-pointer-checks.
2019-01-22  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/testsuite/
	* g++.dg/cpp0x/pr86397-1.C: Add -fdelete-null-pointer-checks.
	* g++.dg/cpp0x/pr86397-2.C: Likewise.

From-SVN: r268161
2019-01-22 13:19:06 -05:00
Richard Earnshaw
43646ce3e0 [arm] Further fixes for PR88469
A bitfield that is exactly the same size as an integral type and
naturally aligned will have DECL_BIT_FIELD cleared.  So we need to
check DECL_BIT_FIELD_TYPE to be sure whether or not the underlying
type was declared with a bitfield declaration.

I've also added a test for bitfields that are based on overaligned types.

	PR target/88469
gcc:
	* config/arm/arm.c (arm_needs_double_word_align): Check
	DECL_BIT_FIELD_TYPE.

gcc/testsuite:
	* gcc.target/arm/aapcs/bitfield2.c: New test.
	* gcc.target/arm/aapcs/bitfield3.c: New test.

From-SVN: r268160
2019-01-22 17:56:02 +00:00
Wilco Dijkstra
df69e82448 Fix vect-nop-move.c test
Fix a failing test - changes in Combine mean the test now fails
eventhough the generated code is the same.  Given there are several
AArch64-specific tests for vec-select, remove the scanning of Combine
output.  Committed as trivial fix.

    testsuite/
	PR rtl-optimization/87763
	* gcc.dg/vect/vect-nop-move.c: Fix testcase on AArch64.

From-SVN: r268159
2019-01-22 17:49:46 +00:00
Hongtao Liu
83f6f4e5f4 i386: Add mask2 to builtin_description
There are

struct builtin_description
{
  const HOST_WIDE_INT mask;
  const enum insn_code icode;
  const char *const name;
  const enum ix86_builtins code;
  const enum rtx_code comparison;
  const int flag;
};

Since "mask" is used for both ix86_isa_flags and ix86_isa_flags2, buitins
with both flags can't be handled easily.  This patch adds mask2 to
builtin_description to handle it properly.

2019-01-22  Hongtao Liu  <hongtao.liu@intel.com>
	    H.J. Lu  <hongjiu.lu@intel.com>

	PR target/88909
	* config/i386/i386-builtin.def: Add mask2 to all builtin
	initializations.  Merge ARGS2 and SPECIAL_ARGS2 into ARGS and
	SPECIAL_ARGS.
	* config/i386/i386.c (BDESC): Add mask2 to the definition.
	(BDESC_FIRST): Likewise.
	(define_builtin): Add an argument for mask2.  Updated to handle
	both ix86_isa_flags and ix86_isa_flags2.
	(define_builtin_const): Likewise.
	(define_builtin_pure): Likewise.
	(define_builtin2): Deleted.
	(define_builtin_const2): Likewise.
	(builtin_description): Add a member, mask2.
	(bdesc_*): Add mask2 to builtin initializations.
	(ix86_init_mmx_sse_builtins): Update calls to def_builtin,
	def_builtin_const and def_builtin_pure.  Remove SPECIAL_ARGS2
	support.
	(ix86_get_builtin_func_type): Remove SPECIAL_ARGS2 support.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>

From-SVN: r268155
2019-01-22 08:20:25 -08:00
Jonathan Wakely
4c6b09810b PR libstdc++/88740 Print assertion messages to stderr
PR libstdc++/88740
	* testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
	write to stderr instead of using printf.

From-SVN: r268154
2019-01-22 16:08:18 +00:00
Ian Lance Taylor
494df8753b golang.org/x/tools/go/analysis: pass "gccgo" to types.SizesFor
For the gofrontend copy, change calls to types.SizesFor to pass
    "gccgo" rather than "gc".  Leave the asmdecl pass unchanged since that
    pass is gc-specific anyhow.
    
    This has been fixed in a better way in the external repo by
    https://golang.org/cl/158317 and friends, but that is not in 1.12, so
    use this approach for now.
    
    Reviewed-on: https://go-review.googlesource.com/c/158842

From-SVN: r268153
2019-01-22 15:43:40 +00:00
H.J. Lu
12f154688d i386: Load external function address via GOT slot
With noplt attribute, we load the external function address via the GOT
slot so that linker won't create an PLT entry for extern function address.

gcc/

	PR target/88954
	* config/i386/i386.c (ix86_force_load_from_GOT_p): Also check
	noplt attribute.

gcc/testsuite/

	PR target/88954
	* gcc.target/i386/pr88954-1.c: New test.
	* gcc.target/i386/pr88954-2.c: Likewise.

From-SVN: r268152
2019-01-22 06:53:41 -08:00
Richard Earnshaw
44a7251e1e [arm] PR target/88469 fix incorrect argument passing with 64-bit bitfields
Unfortunately another PCS bug has come to light with the layout of
structs whose alignment is dominated by a 64-bit bitfield element.
Such fields in the type list appear to have alignment 1, but in
reality, for the purposes of alignment of the underlying structure,
the alignment is derived from the underlying bitfield's type.  We've
been getting this wrong since support for over-aligned record types
was added several releases back.  Worse still, the existing code may
generate unaligned memory accesses that may fault on some versions of
the architecture.

I've taken the opportunity to add a few more tests that check the
passing arguments with overalignment in the PCS.  Looking through the
existing tests it looked like they were really only checking
self-consistency and not the precise location of the arguments.

PR target/88469

gcc:
	* config/arm/arm.c (arm_needs_doubleword_align): Return 2 if a record's
	alignment is dominated by a bitfield with 64-bit aligned base type.
	(arm_function_arg): Emit a warning if the alignment has changed since
	earlier GCC releases.
	(arm_function_arg_boundary): Likewise.
	(arm_setup_incoming_varargs): Likewise.

gcc/testsuite:
	* gcc.target/arm/aapcs/bitfield1.c: New test.
	* gcc.target/arm/aapcs/overalign_rec1.c: New test.
	* gcc.target/arm/aapcs/overalign_rec2.c: New test.
	* gcc.target/arm/aapcs/overalign_rec3.c: New test.

From-SVN: r268151
2019-01-22 14:03:22 +00:00
Manfred Schwarb
50d6ec8cff array_function_5.f90: Fix a dg directive.
2019-01-22  Manfred Schwarb  <manfred99@gmx.ch>

	* gfortran.dg/array_function_5.f90: Fix a dg directive.
	* gfortran.dg/block_16.f08: Likewise.
	* gfortran.dg/dec_structure_14.f90: Likewise.
	* gfortran.dg/namelist_96.f90: Likewise.
	* gfortran.dg/newunit_5.f90.f90: Moved to
	* gfortran.dg/newunit_5.f90: here.
	* gfortran.dg/pdt_28.f03: Likewise.
	* gfortran.dg/spread_simplify_1.f90: Likewise.

From-SVN: r268148
2019-01-22 14:12:36 +01:00
Richard Biener
4c82aa3b6a re PR tree-optimization/88862 (ICE in extract_affine, at graphite-sese-to-poly.c:313)
2019-01-22  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/88862
	* graphite-scop-detection.c
	(scop_detection::graphite_can_represent_scev): Reject ADDR_EXPR.

From-SVN: r268147
2019-01-22 11:28:56 +00:00
Andrew Stubbs
1b7ee8b4c9 Document AMD GCN.
2019-01-22  Andrew Stubbs  <ams@codesourcery.com>

	* doc/extend.tex (AMD GCN Function Attributes): New section.
	* doc/install.texi (amdgcn-unknown-amdhsa): New instructions.
	* doc/invoke.texi (AMD GCN Options): New section.
	* doc/md.texi (Constraints for Particular Machines): Add AMD GCN.

From-SVN: r268146
2019-01-22 10:51:22 +00:00
Eric Botcazou
d0b042c68a sparc.c (parc_delegitimize_address): Recognize the GOT register and decoded HIGH/LO_SUM combinations for labels in...
* config/sparc/sparc.c (parc_delegitimize_address): Recognize the GOT
	register and decoded HIGH/LO_SUM combinations for labels in PIC mode.

From-SVN: r268145
2019-01-22 10:20:00 +00:00
Tamar Christina
a14e30837f Fix overwide shifts in PR/88903 testcase
gcc/testsuite/ChangeLog:

	PR/tree-optimization 88903
	* gcc.dg/vect/pr88903-1.c: Add explicit &.

From-SVN: r268144
2019-01-22 10:13:56 +00:00
Jakub Jelinek
9a6585859f re PR tree-optimization/88044 (gfortran.dg/transfer_intrinsic_3.f90 hangs after r266171)
PR tree-optimization/88044
	* tree-ssa-loop-niter.c (number_of_iterations_cond): If condition
	is false in the first iteration, but !every_iteration, return false
	instead of true with niter->niter zero.

From-SVN: r268143
2019-01-22 10:58:23 +01:00
Nidal Faour
4293cd6ed8 re PR lto/88422 (collect2.exe: fatal error: lto-wrapper returned 1 exit status: file not recognized: file truncated)
2019-01-22  Nidal Faour  <nidal.faour@wdc.com>

	PR lto/88422
	* simple-object.c (O_BINARY): Define if not already defined.
	(simple_object_copy_lto_debug_sections): Create file in binary
	mode.

From-SVN: r268141
2019-01-22 09:47:52 +00:00
Jakub Jelinek
becba8a79f re PR rtl-optimization/88904 (Basic block incorrectly skipped in jump threading.)
PR rtl-optimization/88904
	* cfgcleanup.c (thread_jump): Verify cond2 doesn't mention
	any nonequal registers before processing BB_END (b).

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

From-SVN: r268140
2019-01-22 10:12:31 +01:00