Christophe Lyon [Wed, 18 May 2016 12:50:34 +0000 (12:50 +0000)]
arm-neon-ref.h (CHECK, [...]): Print which type was checked.
* gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h (CHECK,
CHECK_FP, CHECK_CUMULATIVE_SAT): Print which type was checked.
From-SVN: r236384
Christophe Lyon [Wed, 18 May 2016 12:48:47 +0000 (12:48 +0000)]
vmul.c: Remove useless #ifdef.
* gcc.target/aarch64/advsimd-intrinsics/vmul.c: Remove useless #ifdef.
* gcc.target/aarch64/advsimd-intrinsics/vshl.c: Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vtst.c: Likewise.
From-SVN: r236383
Christophe Lyon [Wed, 18 May 2016 12:46:23 +0000 (12:46 +0000)]
vreinterpret.c: Fix typo in comment.
* gcc.target/aarch64/advsimd-intrinsics/vreinterpret.c: Fix typo in comment.
From-SVN: r236382
Christophe Lyon [Wed, 18 May 2016 12:41:50 +0000 (14:41 +0200)]
Fix ChangeLog date.
From-SVN: r236381
Christophe Lyon [Wed, 18 May 2016 12:33:36 +0000 (12:33 +0000)]
noplt_3.c: Scan for "br\t".
* gcc.target/aarch64/noplt_3.c: Scan for "br\t".
* gcc.target/aarch64/tail_indirect_call_1.c: Scan for "br\t",
"blr\t" and switch to scan-assembler-times.
From-SVN: r236377
Richard Biener [Wed, 18 May 2016 12:32:46 +0000 (12:32 +0000)]
tree-ssa-loop-im.c (determine_max_movement): Properly add condition cost to PHI cost instead of total_cost.
2016-05-18 Richard Biener <rguenther@suse.de>
* tree-ssa-loop-im.c (determine_max_movement): Properly add
condition cost to PHI cost instead of total_cost.
From-SVN: r236376
Martin Liska [Wed, 18 May 2016 11:48:50 +0000 (13:48 +0200)]
Set DECL_PT_UID for merged variables in IPA ICF (PR70856).
PR fortran/70856
* ipa-icf.c (sem_variable::merge): Set DECL_PT_UID for
merged variables.
From-SVN: r236375
Richard Biener [Wed, 18 May 2016 11:21:33 +0000 (11:21 +0000)]
lto-streamer.h (LTO_major_version): Bump to 6.
2016-05-18 Richard Biener <rguenther@suse.de>
* lto-streamer.h (LTO_major_version): Bump to 6.
From-SVN: r236374
Segher Boessenkool [Wed, 18 May 2016 11:07:20 +0000 (13:07 +0200)]
function: Factor out make_*logue_seq
Make new functions make_split_prologue_seq, make_prologue_seq, and
make_epilogue_seq.
* function.c (make_split_prologue_seq, make_prologue_seq,
make_epilogue_seq): New functions, factored out from...
(thread_prologue_and_epilogue_insns): Here.
From-SVN: r236373
Segher Boessenkool [Wed, 18 May 2016 10:58:57 +0000 (12:58 +0200)]
function: Do the CLEANUP_EXPENSIVE after shrink-wrapping, not before
We should do CLEANUP_EXPENSIVE after shrink-wrapping, because shrink-
wrapping creates constructs that CLEANUP_EXPENSIVE can optimise, and
nothing runs CLEANUP_EXPENSIVE later.
* function.c (rest_of_handle_thread_prologue_and_epilogue): Call
cleanup_cfg with CLEANUP_EXPENSIVE after shrink-wrapping instead
of before. Add a comment.
From-SVN: r236372
Bin Cheng [Wed, 18 May 2016 10:41:28 +0000 (10:41 +0000)]
tree-ssa-loop-ivopts.c (get_computation_cost_at): Check inv expression pointer, not pointer to the pointer.
* tree-ssa-loop-ivopts.c (get_computation_cost_at): Check inv
expression pointer, not pointer to the pointer.
From-SVN: r236371
Jiong Wang [Wed, 18 May 2016 09:43:04 +0000 (09:43 +0000)]
[testsuite] Guard float64_t with __aarch64__
gcc/testsuite/
* gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h: Guard float64_t
with __aarch64__.
* gcc.target/aarch64/advsimd-intrinsics/vfms_vfma_n.c: Guard variable
declarations under __aarch64__ and __ARM_FEATURE_FMA.
From-SVN: r236370
Jakub Jelinek [Wed, 18 May 2016 09:24:59 +0000 (11:24 +0200)]
sse.md (pbroadcast_evex_isa): New mode attr.
* config/i386/sse.md (pbroadcast_evex_isa): New mode attr.
(avx2_pbroadcast<mode>): Add another alternative with v instead
of x constraints in it, using <pbroadcast_evex_isa> isa.
(avx2_pbroadcast<mode>_1): Similarly, add two such alternatives.
* gcc.target/i386/avx512bw-vpbroadcast-1.c: New test.
* gcc.target/i386/avx512bw-vpbroadcast-2.c: New test.
* gcc.target/i386/avx512bw-vpbroadcast-3.c: New test.
* gcc.target/i386/avx512vl-vpbroadcast-1.c: New test.
* gcc.target/i386/avx512vl-vpbroadcast-2.c: New test.
* gcc.target/i386/avx512vl-vpbroadcast-3.c: New test.
From-SVN: r236369
Jakub Jelinek [Wed, 18 May 2016 09:24:15 +0000 (11:24 +0200)]
sse.md (<ssse3_avx2>_palignr<mode>): Use constraint x instead of v in second alternative, add avx512bw alternative.
* config/i386/sse.md (<ssse3_avx2>_palignr<mode>): Use
constraint x instead of v in second alternative, add avx512bw
alternative.
* gcc.target/i386/avx512vl-vpalignr-3.c: New test.
* gcc.target/i386/avx512bw-vpalignr-3.c: New test.
From-SVN: r236368
Jakub Jelinek [Wed, 18 May 2016 09:23:39 +0000 (11:23 +0200)]
sse.md (<ssse3_avx2>_pshufb<mode>3<mask_name>): Use constraint x instead of v in second alternative, add avx512bw alternative.
* config/i386/sse.md (<ssse3_avx2>_pshufb<mode>3<mask_name>): Use
constraint x instead of v in second alternative, add avx512bw
alternative.
* gcc.target/i386/avx512vl-vpshufb-3.c: New test.
* gcc.target/i386/avx512bw-vpshufb-3.c: New test.
From-SVN: r236367
Jakub Jelinek [Wed, 18 May 2016 09:23:03 +0000 (11:23 +0200)]
sse.md (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Use constraint x instead of v in second alternative, add avx512bw alternative.
* config/i386/sse.md (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Use
constraint x instead of v in second alternative, add avx512bw
alternative.
* gcc.target/i386/avx512vl-vpmulhrsw-3.c: New test.
* gcc.target/i386/avx512bw-vpmulhrsw-3.c: New test.
From-SVN: r236366
Jakub Jelinek [Wed, 18 May 2016 09:22:28 +0000 (11:22 +0200)]
sse.md (avx2_pmaddubsw256, [...]): Add avx512bw alternative.
* config/i386/sse.md (avx2_pmaddubsw256, ssse3_pmaddubsw128): Add
avx512bw alternative.
* gcc.target/i386/avx512bw-vpmaddubsw-3.c: New test.
From-SVN: r236365
Kirill Yukhin [Wed, 18 May 2016 09:16:09 +0000 (09:16 +0000)]
i386. Extend static buffers. Fix SF mode operand constraint to `Yv' in storehpd pattern.
gcc/
* gcc/config/i386/sse.md (define_insn "*andnot<mode>3"): Extend static
array to 128 chars.
(define_insn "*andnottf3"): Ditto.
(define_insn "*<code><mode>3"/any_logic): Ditto.
(define_insn "*<code>tf3"/any_logic): Ditto.
(define_insn "sse2_storehpd"): Use Yv constraint for scalar
operand to block AVX-512VL insn variant emit when it is not enabled.
From-SVN: r236364
Kirill Yukhin [Wed, 18 May 2016 09:11:10 +0000 (09:11 +0000)]
AVX-512. Use `Yv' for SF mode operand in vec_concat pattern.
gcc/
* config/i386/sse.md (define_insn "*vec_concatv2sf_sse4_1"): Use 'Yv'
constraint fot SF mode.
From-SVN: r236363
Petr Murzin [Wed, 18 May 2016 09:06:11 +0000 (09:06 +0000)]
Fix patterns to enable sse-14.c to compile with -masm=intel.
gcc/
* config/i386/sse.md (define_insn "srcp14<mode>"): Use proper operand
modifiers.
(define_insn "rsqrt14<mode>"): Ditto.
(define_insn "<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>"): Ditto.
(define_insn "<fixsuffix>fix_truncv2sfv2di2<mask_name>"): Ditto.
(define_insn "avx512f_<code>v8div16qi2_mask_store"): Ditto.
(define_insn "vec_set_hi_<mode><mask_name>"): Ditto.
(define_insn "<mask_codefor>avx512dq_broadcast<mode><mask_name>"):
Ditto.
(define_insn "*avx512f_gatherdi<mode>"): Ditto.
(define_insn "*avx512f_scatterdi<mode>"): Ditto.
* config/i386/i386.c (ix86_print_operand): Expand check for size
override codes for Intel syntax.
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
From-SVN: r236362
Richard Biener [Wed, 18 May 2016 08:10:20 +0000 (08:10 +0000)]
re PR tree-optimization/71168 (ICE in find_uses_to_rename_use (tree-ssa-loop-manip.c:379))
2016-05-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/71168
* tree-loop-distribution.c (distribute_loop): Move *destroy_p
initialization earlier.
* gcc.dg/torture/pr71168.c: New testcase.
From-SVN: r236361
James Greenhalgh [Wed, 18 May 2016 08:00:33 +0000 (08:00 +0000)]
[Patch AArch64] Simplify reduc_plus_scal_v2[sd]f sequence
gcc/
* config/aarch64/aarch64-simd.md
(aarch64_reduc_plus_internal<mode>): Rename to...
(reduc_plus_scal): ...This, and remove previous implementation.
From-SVN: r236360
Kugan Vivekanandarajah [Wed, 18 May 2016 07:50:05 +0000 (07:50 +0000)]
Adding the testcase which was not addaed as part of r236356.
gcc/testsuite/ChangeLog:
2016-05-17 Kugan Vivekanandarajah <kuganv@linaro.org>
PR middle-end/63586
* gcc.dg/tree-ssa/pr63586-2.c: New test.
* gcc.dg/tree-ssa/pr63586.c: New test.
From-SVN: r236359
Richard Biener [Wed, 18 May 2016 07:41:09 +0000 (07:41 +0000)]
passes.def: Put late dse and cd_dce in canonical order.
2016-05-18 Richard Biener <rguenther@suse.de>
* passes.def: Put late dse and cd_dce in canonical order.
From-SVN: r236358
Jan Hubicka [Wed, 18 May 2016 07:12:46 +0000 (09:12 +0200)]
ipa-inline-transform.c (preserve_function_body_p): Look for first non-thunk clone.
* ipa-inline-transform.c (preserve_function_body_p): Look for
first non-thunk clone.
(save_function_body): Save into first non-thunk.
* lto-cgraph.c (lto_output_edge): When streaming thunk do not look
up call stmt id.
(lto_output_node): Inline thunks don't need body in every
partition.
* lto-streamer-in.c: Do not fixup thunk clones.
* cgraphclones.c (cgraph_node::create_edge_including_clone): Skip
thunks.
* tree-inline.c (copy_bb): Be prepared for target node to be new after
folding suceeds.
From-SVN: r236357
Kugan Vivekanandarajah [Wed, 18 May 2016 00:58:45 +0000 (00:58 +0000)]
re PR tree-optimization/63586 (x+x+x+x -> 4*x in gimple)
gcc/testsuite/ChangeLog:
2016-05-17 Kugan Vivekanandarajah <kuganv@linaro.org>
PR middle-end/63586
* gcc.dg/tree-ssa/pr63586-2.c: New test.
* gcc.dg/tree-ssa/pr63586.c: New test.
* gcc.dg/tree-ssa/reassoc-14.c: Adjust multiplication count.
gcc/ChangeLog:
2016-05-17 Kugan Vivekanandarajah <kuganv@linaro.org>
PR middle-end/63586
* tree-ssa-reassoc.c (transform_add_to_multiply): New.
(reassociate_bb): Call transform_add_to_multiply.
From-SVN: r236356
Kugan Vivekanandarajah [Wed, 18 May 2016 00:46:58 +0000 (00:46 +0000)]
aarch64.c (all_extensions): Removed unused static variable.
gcc/ChangeLog:
2016-05-17 Kugan Vivekanandarajah <kuganv@linaro.org>
* config/aarch64/aarch64.c (all_extensions): Removed unused static variable.
From-SVN: r236355
GCC Administrator [Wed, 18 May 2016 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r236354
Joseph Myers [Wed, 18 May 2016 00:13:34 +0000 (01:13 +0100)]
* da.po: Update.
From-SVN: r236349
Joseph Myers [Wed, 18 May 2016 00:10:15 +0000 (01:10 +0100)]
* da.po, sv.po: Update.
From-SVN: r236347
Nathan Sidwell [Tue, 17 May 2016 21:28:11 +0000 (21:28 +0000)]
20030222-1.c: Skip on ptx.
* gcc.c-torture/execute/
20030222-1.c: Skip on ptx.
* gcc.dg/pr68671.c: Fix ptx xfail-if.
* gcc.dg/torture/pr54261-1.c: Allocate atomic var statically.
* gcc.dg/torture/type-generic-1.c: Enable UNSAFE for ptx.
From-SVN: r236346
Nathan Sidwell [Tue, 17 May 2016 21:16:49 +0000 (21:16 +0000)]
nvptx.c (nvptx_function_arg_boundary): New.
* config/nvptx/nvptx.c (nvptx_function_arg_boundary): New.
(TARGET_FUNCTION_ARG_BOUNDARY): Override.
testsuite/
* gcc.target/nvptx/abi-vararg-3.c: New.
From-SVN: r236345
Mikhail Maltsev [Tue, 17 May 2016 20:50:22 +0000 (20:50 +0000)]
Fold bit_not through ASR and rotate
gcc/
PR tree-optimization/54579
PR middle-end/55299
* match.pd (~(~X >> Y), ~(~X >>r Y), ~(~X <<r Y)): New patterns.
gcc/testsuite
PR tree-optimization/54579
PR middle-end/55299
* gcc.dg/fold-notrotate-1.c: New test.
* gcc.dg/fold-notshift-1.c: New test.
* gcc.dg/fold-notshift-2.c: New test.
From-SVN: r236344
Marek Polacek [Tue, 17 May 2016 20:00:41 +0000 (20:00 +0000)]
re PR ipa/71146 (error: __builtin_unreachable or __builtin_trap call with arguments)
PR ipa/71146
* tree-inline.c (expand_call_inline): Call
maybe_remove_unused_call_args.
* g++.dg/ipa/pr71146.C: New test.
From-SVN: r236343
David Malcolm [Tue, 17 May 2016 19:28:47 +0000 (19:28 +0000)]
jit: gcc diagnostics are jit errors
libgccjit performs numerous checks at the API boundary, but
if these succeed, it ignores errors and other diagnostics emitted
within the core of gcc, and treats the compile of a gcc_jit_context
as having succeeded.
This patch ensures that if any diagnostics are emitted, they
are visible from the libgccjit API, and that the the context is
flagged as having failed.
For now any kind of diagnostic is treated as a jit error,
so warnings and notes also count as errors.
gcc/jit/ChangeLog:
* dummy-frontend.c: Include diagnostic.h.
(jit_begin_diagnostic): New function.
(jit_end_diagnostic): New function.
(jit_langhook_init): Register jit_begin_diagnostic
and jit_end_diagnostic with the global_dc.
* jit-playback.c: Include diagnostic.h.
(gcc::jit::playback::context::add_diagnostic): New method.
* jit-playback.h (struct diagnostic_context): Add forward
declaration.
(gcc::jit::playback::context::add_diagnostic): New method.
gcc/testsuite/ChangeLog:
* jit.dg/test-error-array-bounds.c: New test case.
From-SVN: r236342
David Malcolm [Tue, 17 May 2016 19:17:19 +0000 (19:17 +0000)]
jit: document gcc_jit_context_new_call_through_ptr
gcc/jit/ChangeLog:
* docs/topics/expressions.rst (Function calls): Document
gcc_jit_context_new_call_through_ptr.
* docs/_build/texinfo/libgccjit.texi: Regenerate.
From-SVN: r236341
Jim Wilson [Tue, 17 May 2016 18:50:22 +0000 (18:50 +0000)]
Fix minor doc bugs, signalling typo, major version changes rare.
gcc/
* doc/cpp.texi (__GNUC__): Major version changes are no longer rare.
* doc/invoke.texi (-mnan=2008): Change signalling to signaling.
* doc/md.texi (fmin@var{m}3): Likewise.
From-SVN: r236340
Marc Glisse [Tue, 17 May 2016 17:57:27 +0000 (19:57 +0200)]
x & C -> x if we know that x & ~C == 0
2016-05-17 Marc Glisse <marc.glisse@inria.fr>
gcc/
* match.pd (X & C): New transformation.
gcc/testsuite/
* gcc.dg/tree-ssa/and-1.c: New testcase.
From-SVN: r236338
Marc Glisse [Tue, 17 May 2016 17:54:28 +0000 (19:54 +0200)]
~X & Y to X ^ Y in some cases
2016-05-17 Marc Glisse <marc.glisse@inria.fr>
gcc/
* match.pd (~X & Y): New transformation.
gcc/testsuite/
* gcc.dg/tree-ssa/pr69270.c: Adjust.
* gcc.dg/tree-ssa/andnot-1.c: New testcase.
From-SVN: r236337
Marc Glisse [Tue, 17 May 2016 17:50:55 +0000 (19:50 +0200)]
VRP: range info of new variables
2016-05-17 Marc Glisse <marc.glisse@inria.fr>
gcc/
* tree-vrp.c (simplify_truth_ops_using_ranges): Set range
information for new SSA_NAME.
(simplify_conversion_using_ranges): Get range through get_range_info
instead of get_value_range.
gcc/testsuite/
* gcc.dg/tree-ssa/pr69270.c: Adjust.
* gcc.dg/tree-ssa/vrp99.c: New testcase.
From-SVN: r236336
Jiong Wang [Tue, 17 May 2016 16:41:18 +0000 (16:41 +0000)]
[AArch64, 4/4] Reimplement vmvn* intrinscis, remove inline assembly
gcc/
* config/aarch64/arm_neon.h (vmvn_s8): Reimplement using C operator.
Remove inline assembly.
(vmvn_s16): Likewise.
(vmvn_s32): Likewise.
(vmvn_u8): Likewise.
(vmvn_u16): Likewise.
(vmvn_u32): Likewise.
(vmvnq_s8): Likewise.
(vmvnq_s16): Likewise.
(vmvnq_s32): Likewise.
(vmvnq_u8): Likewise.
(vmvnq_u16): Likewise.
(vmvnq_u32): Likewise.
(vmvn_p8): Likewise.
(vmvnq_p16): Likewise.
From-SVN: r236334
Jiong Wang [Tue, 17 May 2016 16:39:39 +0000 (16:39 +0000)]
[AArch64, 3/4] Reimplement multiply by element to get rid of inline assembly
gcc/
* config/aarch64/aarch64-simd.md (vmul_n_f32): Remove inline assembly.
Use builtin.
(vmul_n_s16): Likewise.
(vmul_n_s32): Likewise.
(vmul_n_u16): Likewise.
(vmul_n_u32): Likewise.
(vmulq_n_f32): Likewise.
(vmulq_n_f64): Likewise.
(vmulq_n_s16): Likewise.
(vmulq_n_s32): Likewise.
(vmulq_n_u16): Likewise.
(vmulq_n_u32): Likewise.
gcc/testsuite/
* gcc.target/aarch64/simd/vmul_elem_1.c: Use intrinsics.
From-SVN: r236333
Jiong Wang [Tue, 17 May 2016 16:37:19 +0000 (16:37 +0000)]
[AArch64, 2/4] Extend vector mutiply by element to all supported modes
gcc/
* config/aarch64/aarch64-simd.md (*aarch64_mul3_elt_to_128df): Extend to
all supported modes. Rename to "*aarch64_mul3_elt_from_dup".
gcc/testsuite/
* gcc.target/aarch64/simd/vmul_elem_1.c: New.
From-SVN: r236332
Jiong Wang [Tue, 17 May 2016 16:34:46 +0000 (16:34 +0000)]
[AArch64, 1/4] Add the missing support of vfms_n_f32, vfmsq_n_f32, vfmsq_n_f64
gcc/
* config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_to_128df): Rename
to *aarch64_fma4_elt_from_dup<mode>.
(*aarch64_fnma4_elt_to_128df): Rename to
*aarch64_fnma4_elt_from_dup<mode>.
* config/aarch64/arm_neon.h (vfma_n_f64): New.
(vfms_n_f32): Likewise.
(vfms_n_f64): Likewise.
(vfmsq_n_f32): Likewise.
(vfmsq_n_f64): Likewise.
gcc/testsuite/
* gcc.target/aarch64/fmla_intrinsic_1.c: Allow ".d[index]" besides
".2d[index]" when scan the assembly.
* gcc.target/aarch64/fmls_intrinsic_1.c: Likewise.
* gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h: New entry for
float64x1.
* gcc.target/aarch64/advsimd-intrinsics/vfms_vfma_n.c: New.
From-SVN: r236331
Gerald Pfeifer [Tue, 17 May 2016 14:56:45 +0000 (14:56 +0000)]
* wide-int.h: Change fixed_wide_int_storage from class to struct.
From-SVN: r236324
Richard Biener [Tue, 17 May 2016 12:53:30 +0000 (12:53 +0000)]
re PR tree-optimization/71132 (gcc ICE at -O3 on valid code on x86_64-linux-gnu with “seg fault”)
2016-05-17 Richard Biener <rguenther@suse.de>
PR tree-optimization/71132
* tree-loop-distribution.c (create_rdg_cd_edges): Pass in loop.
Only add control dependences for blocks in the loop.
(build_rdg): Adjust.
(generate_code_for_partition): Return whether loop should
be destroyed and delay that.
(distribute_loop): Likewise.
(pass_loop_distribution::execute): Record loops to be destroyed
and perform delayed destroying of loops.
* gcc.dg/torture/pr71132.c: New testcase.
From-SVN: r236320
Christophe Lyon [Tue, 17 May 2016 12:22:33 +0000 (12:22 +0000)]
think1.C: Fix dg-do and dg-skip order.
* g++.dg/inherit/think1.C: Fix dg-do and dg-skip order.
From-SVN: r236319
Kyrylo Tkachov [Tue, 17 May 2016 12:15:05 +0000 (12:15 +0000)]
[AArch64] PR target/70809: Delete aarch64_vmls<mode> pattern
PR target/70809
* config/aarch64/aarch64-simd.md (aarch64_vmls<mode>): Delete.
* gcc.target/aarch64/pr70809_1.c: New test.
From-SVN: r236318
James Greenhalgh [Tue, 17 May 2016 11:10:10 +0000 (11:10 +0000)]
[Patch AArch64] Delete ASM_OUTPUT_DEF and fallback to default .set directive
gcc/
* config/aarch64/aarch64-elf.h (ASM_OUTPUT_DEF): Delete.
From-SVN: r236317
Kyrylo Tkachov [Tue, 17 May 2016 10:22:07 +0000 (10:22 +0000)]
[AArch64][tests] Skip cpu-diagnostics tests when overriding -mcpu
* gcc.target/aarch64/cpu-diagnostics-1.c: Skip if -mcpu is overriden.
* gcc.target/aarch64/cpu-diagnostics-2.c: Likewise.
* gcc.target/aarch64/cpu-diagnostics-3.c: Likewise.
* gcc.target/aarch64/cpu-diagnostics-4.c: Likewise.
From-SVN: r236316
Ilya Enkovich [Tue, 17 May 2016 09:28:15 +0000 (09:28 +0000)]
re PR target/71114 (Several test suite failures on x86_64-apple-darwin* after revision r236090)
gcc/
PR target/71114
* config/i386/i386.c (dimode_scalar_chain::convert_op): Fix
insertion point for instructions generated by validize_mem.
gcc/testsuite/
PR target/71114
* gcc.target/i386/pr70799-1.c: Fix scan for Darwin.
From-SVN: r236315
Jakub Jelinek [Tue, 17 May 2016 09:17:54 +0000 (11:17 +0200)]
re PR sanitizer/71160 (libasan: Backport support for malloc within dlsym)
PR sanitizer/71160
* asan/asan_malloc_linux.cc: Cherry pick upstream r254395
and r269633.
From-SVN: r236314
James Greenhalgh [Tue, 17 May 2016 09:02:19 +0000 (09:02 +0000)]
[Patch onbious] Fix indentation in c-typeck.c parser_build_unary_op
gcc/c/
* c-typeck.c (parser_build_unary_op): Fix formatting.
From-SVN: r236313
James Greenhalgh [Tue, 17 May 2016 08:56:57 +0000 (08:56 +0000)]
[Patch obvious AArch64] Wrap SHIFT_COUNT_TRUNCATED in brackets
* config/aarch64/aarch64.c (SHIFT_COUNT_TRUNCATED): Wrap definition
in brackets.
From-SVN: r236312
James Greenhalgh [Tue, 17 May 2016 08:54:19 +0000 (08:54 +0000)]
[AArch64 trivial] Don't define a macro when a variable will do
* config/aarch64/aarch64.c
(aarch64_output_simd_mov_immediate): Make "buf_size" a variable
rather than a macro.
From-SVN: r236311
Chung-Lin Tang [Tue, 17 May 2016 08:07:52 +0000 (08:07 +0000)]
oacc-init.c (acc_init): Remove !cached_base_dev condition on call to gomp_init_targets_once.
2016-05-17 Chung-Lin Tang <cltang@codesourcery.com>
libgomp/
* oacc-init.c (acc_init): Remove !cached_base_dev condition on call
to gomp_init_targets_once.
(acc_set_device_type): Remove !cached_base_dev condition on call to
gomp_init_targets_once, move call to before acc_device_lock acquire,
to avoid deadlock.
(acc_get_device_num): Remove !cached_base_dev condition on call to
gomp_init_targets_once.
(acc_set_device_num): Likewise.
From-SVN: r236310
GCC Administrator [Tue, 17 May 2016 00:16:24 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r236305
Jakub Sejdak [Mon, 16 May 2016 22:13:37 +0000 (22:13 +0000)]
config.guess: Import version 2016-04-02 (newest).
* config.guess: Import version 2016-04-02 (newest).
* config.sub: Import version 2016-05-10 (newest).
From-SVN: r236301
Jeff Law [Mon, 16 May 2016 20:37:43 +0000 (14:37 -0600)]
configure.ac: Add ARC support to libgloss.
2016-05-13 Anton Kolesov <anton.kolesov@synopsys.com>
* configure.ac: Add ARC support to libgloss.
* configure: Regenerate
From-SVN: r236300
Jan Hubicka [Mon, 16 May 2016 19:33:02 +0000 (21:33 +0200)]
ipa-inline-analysis.c (compute_inline_parameters): Disable inlinig into instrumentation thunks.
* ipa-inline-analysis.c (compute_inline_parameters): Disable inlinig
into instrumentation thunks.
* cif-code.def (CIF_CHKP): New.
From-SVN: r236299
Uros Bizjak [Mon, 16 May 2016 18:56:33 +0000 (20:56 +0200)]
xopintrin.h: Correct "unsinged" typo in the comments.
* config/i386/xopintrin.h: Correct "unsinged" typo in the comments.
From-SVN: r236297
Martin Jambor [Mon, 16 May 2016 17:49:44 +0000 (19:49 +0200)]
[hsa] Increase hsa symbol alignment to natural one
2016-05-16 Martin Jambor <mjambor@suse.cz>
* hsa-gen.c (fillup_for_decl): Increase alignment to natural one.
(get_symbol_for_decl): Sorry if a global symbol in under-aligned.
libgomp/
* testsuite/libgomp.hsa.c/complex-align-2.c: New test.
From-SVN: r236295
Marek Polacek [Mon, 16 May 2016 17:33:23 +0000 (17:33 +0000)]
gimple.c (maybe_remove_unused_call_args): Fix typos in the commentary.
* gimple.c (maybe_remove_unused_call_args): Fix typos in the
commentary.
From-SVN: r236294
Martin Jambor [Mon, 16 May 2016 15:40:30 +0000 (17:40 +0200)]
[PR 70857] Copy RESULT_DECL of HSA outlined kernel function
2016-05-16 Martin Jambor <mjambor@suse.cz>
PR hsa/70857
* omp-low.c (grid_expand_target_grid_body): Copy RESULT_DECL of
the outlined kernel function.
From-SVN: r236291
Wilco Dijkstra [Mon, 16 May 2016 14:55:15 +0000 (14:55 +0000)]
Update documentation of AArch64 options for GCC6 to be more accurate,
fix a few minor mistakes and remove some duplication.
* doc/invoke.texi (AArch64 Options): Various updates.
From-SVN: r236290
Robert Suchanek [Mon, 16 May 2016 14:21:02 +0000 (14:21 +0000)]
Enable LSA/DLSA for MSA.
* config/mips/mips.h (ISA_HAS_LSA): Enable for -mmsa.
(ISA_HAS_DLSA): Ditto.
From-SVN: r236289
Matthew Fortune [Mon, 16 May 2016 14:20:47 +0000 (14:20 +0000)]
Correct the latency of loads in M5100
gcc/
* config/mips/m5100.md (m51_int_load): Update the latency to 2.
From-SVN: r236288
Nathan Sidwell [Mon, 16 May 2016 13:16:28 +0000 (13:16 +0000)]
nvptx.c (nvptx_mangle_decl_assembler_name): Revert.
* config/nvptx/nvptx.c (nvptx_mangle_decl_assembler_name): Revert.
(nvptx_name_replacement): Restore. Add comment.
(write_fn_proto, write_fn_proto_from_insn,
nvptx_output_call_insn): Restore
(TARGET_MANGLE_DECL_ASSEMBLER_NAME): Delete.
From-SVN: r236286
Wilco Dijkstra [Mon, 16 May 2016 12:52:22 +0000 (12:52 +0000)]
Some patterns are using '%w2' for immediate operands...
Some patterns are using '%w2' for immediate operands, which means that a zero
immediate is actually emitted as 'wzr' or 'xzr'. This not only changes an
immediate operand into a register operand but may emit illegal instructions
from legal RTL (eg. ORR x0, SP, xzr rather than ORR x0, SP, 0).
* config/aarch64/aarch64.md
(add<mode>3_compareC_cconly_imm): Remove use of %w.
(add<mode>3_compareC_imm): Likewise.
(<optab>si3_uxtw): Split into register and immediate variants.
(andsi3_compare0_uxtw): Likewise.
(and<mode>3_compare0): Likewise.
(and<mode>3nr_compare0): Likewise.
(stack_protect_test_<mode>): Don't use %x for memory operands.
From-SVN: r236285
Matthew Fortune [Mon, 16 May 2016 12:45:31 +0000 (12:45 +0000)]
Fix multi-line brackets in mips-cpus.def
gcc/
* config/mips/mips-cpus.def (p5600): Add multi-line brackets.
From-SVN: r236284
Eric Botcazou [Mon, 16 May 2016 11:33:01 +0000 (11:33 +0000)]
decl.c (gnat_to_gnu_entity): Do not build a specific type for the object if it is deemed a constant.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Do not build
a specific type for the object if it is deemed a constant.
From-SVN: r236283
Eric Botcazou [Mon, 16 May 2016 11:20:45 +0000 (11:20 +0000)]
freeze.adb (Freeze_Record_Type): Extend pragma Implicit_Packing to components of any elementary types and of...
* freeze.adb (Freeze_Record_Type): Extend pragma Implicit_Packing to
components of any elementary types and of composite types.
From-SVN: r236282
Eric Botcazou [Mon, 16 May 2016 11:16:42 +0000 (11:16 +0000)]
freeze.adb (Freeze_Array_Type): Call Addressable predicate instead of testing for individual sizes.
* freeze.adb (Freeze_Array_Type): Call Addressable predicate instead
of testing for individual sizes.
(Freeze_Entity): Rework implementation of pragma Implicit_Packing for
array types, in particular test for suitable sizes upfront and do not
mimic the processing that will be redone later in Freeze_Array_Type.
From-SVN: r236281
Eric Botcazou [Mon, 16 May 2016 11:11:47 +0000 (11:11 +0000)]
trans.c (elaborate_all_entities_for_package): Also skip formal objects.
* gcc-interface/trans.c (elaborate_all_entities_for_package): Also skip
formal objects.
From-SVN: r236280
Eric Botcazou [Mon, 16 May 2016 11:08:53 +0000 (11:08 +0000)]
* doc/gnat_rm/implementation_defined_attributes.rst
(Scalar_Storage_Order): Adjust restriction for packed array types.
* einfo.ads (Is_Bit_Packed_Array): Adjust description.
(Is_Packed): Likewise.
(Is_Packed_Array_Impl_Type): Likewise.
(Packed_Array_Impl_Type): Likewise.
* exp_ch4.adb (Expand_N_Indexed_Component): Do not do anything special
if the prefix is not a packed array implemented specially.
* exp_ch6.adb (Expand_Actuals): Expand indexed components only for
bit-packed array types.
* exp_pakd.adb (Install_PAT): Set Is_Packed_Array_Impl_Type flag on
the PAT before analyzing its declaration.
(Create_Packed_Array_Impl_Type): Remove redundant statements.
* freeze.adb (Check_Component_Storage_Order): Reject packed array
components only if they are bit packed.
(Freeze_Array_Type): Fix logic detecting bit packing and do not bit
pack for composite types whose size is multiple of a byte.
Create the implementation type for packed array types only when it is
needed, i.e. bit packing or packing because of holes in index types.
Make sure the Has_Non_Standard_Rep and Is_Packed flags agree.
* gcc-interface/gigi.h (make_packable_type): Add MAX_ALIGN parameter.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>:
Call maybe_pad_type instead of building the padding type manually.
(gnat_to_gnu_entity) <E_Array_Subtype>: Do not assert that
Packed_Array_Impl_Type is present for packed arrays.
(gnat_to_gnu_component_type): Also handle known alignment for packed
types by passing it to make_packable_type.
* gcc-interface/utils.c (make_packable_type): Add MAX_ALIGN parameter
and deal with it in the array case. Adjust recursive call. Simplify
computation of new size and cap the alignment to BIGGEST_ALIGNMENT.
From-SVN: r236279
Wilco Dijkstra [Mon, 16 May 2016 11:01:36 +0000 (11:01 +0000)]
This patch fixes the attributes of integer immediate shifts which were...
This patch fixes the attributes of integer immediate shifts which were
incorrectly modelled as register controlled shifts. Also change EXTR
attribute to being a rotate.
* gcc/config/aarch64/aarch64.md (aarch64_ashl_sisd_or_int_<mode>3):
Split integer shifts into shift_reg and bfm.
(aarch64_lshr_sisd_or_int_<mode>3): Likewise.
(aarch64_ashr_sisd_or_int_<mode>3): Likewise.
(ror<mode>3_insn): Likewise.
(<optab>si3_insn_uxtw): Likewise.
(<optab><mode>3_insn): Change to rotate_imm.
(extr<mode>5_insn_alt): Likewise.
(extrsi5_insn_uxtw): Likewise.
(extrsi5_insn_uxtw_alt): Likewise.
From-SVN: r236278
Thomas Quinot [Mon, 16 May 2016 10:58:20 +0000 (10:58 +0000)]
freeze.adb (Check_Component_Storage_Order): Also get full view of enclosing type.
* freeze.adb (Check_Component_Storage_Order): Also get full view of
enclosing type.
From-SVN: r236277
Matthew Wahab [Mon, 16 May 2016 10:22:25 +0000 (10:22 +0000)]
Remove TARGET_INVALID_PARAMETER_TYPE and TARGET_INVALID_RETURN_TYPE hooks.
c/
2016-05-16 Matthew Wahab <matthew.wahab@arm.com>
* c-decl.c (grokdeclarator): Remove errmsg and use of
targetm.invalid_return_type.
(grokparms): Remove errmsg and use of
targetm.invalid_parameter_type.
cp/
2016-05-16 Matthew Wahab <matthew.wahab@arm.com>
* decl.c (grokdeclarator): Remove errmsg and use of
targetm.invalid_return_type.
(grokparms): Remove errmsg and use of
targetm.invalid_parameter_type.
gcc/
2016-05-16 Matthew Wahab <matthew.wahab@arm.com>
* doc/tm.texi: Regenerate.
* doc/tm.texi.in (TARGET_INVALID_PARAMETER_TYPE): Remove.
(TARGET_INVALID_RETURN_TYPE): Remove.
* system.h: Poison TARGET_INVALID_PARAMETER_TYPE and
TARGET_INVALID_RETURN_TYPE.
* target.def (invalid_parameter_type): Remove.
(invalid_return_type): Remove.
From-SVN: r236276
Eric Botcazou [Mon, 16 May 2016 10:14:19 +0000 (10:14 +0000)]
exp_util.adb (Remove_Side_Effects): Also make a constant if we need to capture the value for a small not...
* exp_util.adb (Remove_Side_Effects): Also make a constant if we need
to capture the value for a small not by-reference record type.
* freeze.ads (Check_Compile_Time_Size): Adjust comment.
* freeze.adb (Set_Small_Size): Likewise. Accept a size in the range
of 33 .. 64 bits.
(Check_Compile_Time_Size): Merge scalar and access type cases. Change
variable name in array type case. For the computation of the packed
size, deal with record components and remove redundant test.
(Freeze_Array_Type): Also adjust packing status when the size of the
component type is in the range 33 .. 64 bits.
* doc/gnat_rm/representation_clauses_and_pragmas.rst: Turn primitive
into elementary type throughout. Minor tweaks.
(Alignment Clauses): Document actual alignment of packed array types.
(Pragma Pack for Arrays): List only the 3 main cases and adjust. Add
"simple" to the record case. Document effect on non packable types.
(Pragma Pack for Records): Likewise. Add record case and adjust.
From-SVN: r236275
Jan Hubicka [Mon, 16 May 2016 10:10:28 +0000 (12:10 +0200)]
ipa-inline-analysis.c (compute_inline_parameters): Be more reailistic on estimating thunk bodies...
* ipa-inline-analysis.c (compute_inline_parameters): Be more reailistic
on estimating thunk bodies; do not set inline_failed to CIF_THUNK for
calls from thunk.
* ipa-inline-transform.c (inline_call): When inlining into thunk produce
gimple body.
(preserve_function_body_p): No need to preserve function body
* cif-codes.def (CIF_THUNK): Remove.
* cgraphclones.c (duplicate_thunk_for_node): Thunks calls are inlinable.
* g++.dg/ipa/ivinline-7.C: Do not xfail.
* g++.dg/ipa/ivinline-9.C: Do not xfail.
From-SVN: r236274
Jan Hubicka [Mon, 16 May 2016 10:01:57 +0000 (12:01 +0200)]
* tree-inline.c (expand_call_inline): recurse after inlining thunk.
From-SVN: r236273
Jan Hubicka [Mon, 16 May 2016 09:59:25 +0000 (11:59 +0200)]
tree.c (free_lang_data_in_decl): Also set target/optimization flags for thunks.
* tree.c (free_lang_data_in_decl): Also set target/optimization flags
for thunks.
From-SVN: r236272
Jan Hubicka [Mon, 16 May 2016 09:56:19 +0000 (11:56 +0200)]
ipa-inline.c (report_inline_failed_reason): Look into thunks, too
* ipa-inline.c (report_inline_failed_reason): Look into thunks, too
(inline_small_functions): Do not look for function symbol when resetting
caches.
From-SVN: r236271
Jan Hubicka [Mon, 16 May 2016 09:55:14 +0000 (11:55 +0200)]
lto-cgraph.c (compute_ltrans_boundary, [...]): Fix handling of inline thunks
* lto-cgraph.c (compute_ltrans_boundary, output_symtab): Fix handling
of inline thunks
* lto-partition.c (add_symbol_to_partition_1): Likewise.
From-SVN: r236270
Matthew Wahab [Mon, 16 May 2016 09:31:58 +0000 (09:31 +0000)]
[ARM] Enable __fp16 as a function parameter and return type.
gcc/
2016-05-16 Matthew Wahab <matthew.wahab@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Jiong Wang <jiong.wang@arm.com>
* config/arm/arm-c.c (arm_cpu_builtins): Use def_or_undef_macro
for __ARM_FP16_FORMAT_IEEE and __ARM_FP16_FORMAT_ALTERNATIVE.
Define __ARM_FP16_ARGS when appropriate.
* config/arm/arm.c (arm_invalid_parameter_type): Remove
declaration.
(arm_invalid_return_type): Likewise.
(TARGET_INVALID_PARAMETER_TYPE): Remove.
(TARGET_INVALID_RETURN_TYPE): Remove.
(aapcs_vfp_sub_candidate): Allow HFmode.
(aapcs_vfp_allocate): Add comment. Support HFmode.
(aapcs_vfp_allocate_return_reg): Likewise.
(struct aapcs_cp_arg_layout): Slightly reword comments for
is_return_candidate and allocate_return_reg.
(output_mov_vfp): Update assert.
(arm_hard_regno_mode_ok): Remove comment, update HF-mode
condition.
(arm_invalid_parameter_type): Remove.
(amr_invalid_return_type): Remove.
* config/arm/arm.h (TARGET_NEON_FP16): Fix definition.
* config/arm/arm.md (*arm32_movhf): Disable for TARGET_VFP.
* config/arm/vfp.md (*movhf_vfp): Enable for TARGET_VFP.
gcc/testsuite/
2016-05-16 Matthew Wahab <matthew.wahab@arm.com>
* g++.dg/ext/arm-fp16/fp16-param-1.c: Update expected output. Add
test for __ARM_FP16_ARGS.
* g++.dg/ext/arm-fp16/fp16-return-1.c: Update expected output.
* gcc.target/arm/aapcs/neon-vect10.c: New.
* gcc.target/arm/aapcs/neon-vect9.c: New.
* gcc.target/arm/aapcs/vfp18.c: New.
* gcc.target/arm/aapcs/vfp19.c: New.
* gcc.target/arm/aapcs/vfp20.c: New.
* gcc.target/arm/aapcs/vfp21.c: New.
* gcc.target/arm/fp16-aapcs-1.c: New.
* g++.target/arm/fp16-param-1.c: Update expected output. Add
test for __ARM_FP16_ARGS.
* g++.target/arm/fp16-return-1.c: Update expected output.
Co-Authored-By: Jiong Wang <jiong.wang@arm.com>
Co-Authored-By: Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
From-SVN: r236269
Matthew Wahab [Mon, 16 May 2016 09:20:50 +0000 (09:20 +0000)]
Move wrong ChangeLog entry from toplevel to gcc ChangeLog.
From-SVN: r236268
Eric Botcazou [Mon, 16 May 2016 08:55:12 +0000 (08:55 +0000)]
configure.ac: Add ACX_NONCANONICAL_HOST.
gnattools/
* configure.ac: Add ACX_NONCANONICAL_HOST.
* configure: Regenerate.
* Makefile.in: Replace host_alias with host_noncanonical.
(gnattools-cross): Do not rename the tools.
gcc/
* configure.ac: Add ACX_NONCANONICAL_HOST.
* configure: Regenerate.
* Makefile.in: Set host_noncanonical.
gcc/ada
* gcc-interface/Make-lang.in (GNATMAKE_FOR_HOST): In the canadian
cross case, use host_noncanonical instead of host as prefix.
(GNATBIND_FOR_HOST): Likewise.
(GNATLINK_FOR_HOST): Likewise.
(GNATLS_FOR_HOST): Likewise.
From-SVN: r236267
Matthew Wahab [Mon, 16 May 2016 08:46:00 +0000 (08:46 +0000)]
[AArch64] Remove an unused reload hook.
* config/aarch64/aarch64.h (LEGITIMIZE_RELOAD_ADDRESS): Remove.
* config/aarch64/arch64-protos.h
(aarch64_legitimize_reload_address): Remove.
* config/aarch64/aarch64.c (aarch64_legitimize_reload_address):
Remove.
From-SVN: r236266
Jiong Wang [Mon, 16 May 2016 08:11:42 +0000 (08:11 +0000)]
[testsuite] PR70227, skip g++.dg/lto/pr69589_0.C on targets without -rdynamic support
PR testsuite/70227
* g++.dg/lto/pr69589_0.C: Skip arm and aarch64 bare-metal targets.
From-SVN: r236265
GCC Administrator [Mon, 16 May 2016 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r236263
Harald Anlauf [Sun, 15 May 2016 18:34:57 +0000 (18:34 +0000)]
re PR fortran/69603 (ICE: segfault with -fimplicit-none and proc_ptr_comp_24.f90)
2016-05-15 Harald Anlauf <anlauf@gmx.de>
PR fortran/69603
* interface.c (compare_parameter): Check for non-NULL pointer.
2016-05-15 Harald Anlauf <anlauf@gmx.de>
PR fortran/69603
* gfortran.dg/pr69603.f90: New testcase.
From-SVN: r236253
GCC Administrator [Sun, 15 May 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r236248
Fritz Reese [Sat, 14 May 2016 16:00:35 +0000 (16:00 +0000)]
dec_union_4.f90: Fix endian issue.
2016-05-14 Fritz Reese <fritzoreese@gmail.com>
* gfortran.dg/dec_union_4.f90: Fix endian issue.
2016-05-14 Fritz Reese <fritzoreese@gmail.com>
* gfortran.texi: Update example of DEC UNION extension.
From-SVN: r236242
Fritz Reese [Sat, 14 May 2016 15:29:13 +0000 (15:29 +0000)]
re PR fortran/71047 (Allocatable component of INTENT(OUT) dummy not set correctly)
2016-05-14 Fritz Reese <fritzoreese@gmail.com>
PR fortran/71047
* expr.c (gfc_default_initializer): Avoid extra component refs in
constructors for derived types and classes.
2016-05-14 Fritz Reese <fritzoreese@gmail.com>
PR fortran/71047
* gfortran.dg/pr71047.f08: New test.
From-SVN: r236241
Uros Bizjak [Sat, 14 May 2016 13:22:45 +0000 (15:22 +0200)]
re PR target/71097 (Additional testsuite failures with -mcmodel=medium)
PR target/71097
* config/i386/i386.md (*movtf_internal): Before register allocation,
do not allow FP constants for CM_MEDIUM memory model, allow only
standard FP constants for CM_LARGE and CM_LARGE_PIC models.
(*movxf_internal): Ditto.
(*movdf_internal): Ditto.
(*movsf_internal): Ditto.
From-SVN: r236240
Uros Bizjak [Sat, 14 May 2016 09:07:13 +0000 (11:07 +0200)]
i * gcc.dg/vect/pr66636.c (foo): Add __attribute__((noinline,noclone)).
From-SVN: r236238
GCC Administrator [Sat, 14 May 2016 00:16:21 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r236237
Segher Boessenkool [Fri, 13 May 2016 23:01:40 +0000 (01:01 +0200)]
combine: Don't call extract_left_shift with count < 0 (PR67483)
If the compiled program does a shift by a negative amount, combine will
happily work with that, but it shouldn't then do an undefined operation
in GCC itself. This patch fixes the first case mentioned in the bug
report (I haven't been able to reproduce the second case, on trunk at
least).
PR rtl-optimization/67483
* combine.c (make_compound_operation): Don't call extract_left_shift
with negative shift amounts.
From-SVN: r236232
Joseph Myers [Fri, 13 May 2016 21:35:39 +0000 (22:35 +0100)]
Implement C11 DR#423 resolution (ignore function return type qualifiers).
The resolution of C11 DR#423, apart from doing things with the types
of expressions cast to qualified types which are only in standard
terms observable with _Generic and which agree with how GCC has
implemented _Generic all along, also specifies that qualifiers are
discarded from function return types: "derived-declarator-type-list
function returning T" becomes "derived-declarator-type-list function
returning the unqualified version of T" in the rules giving types for
function declarators. This means that declarations of a function with
both qualified and unqualified return types are now compatible,
similar to how different declarations can vary in whether a function
argument is declared with a qualifier or unqualified type.
This patch implements this resolution. Since the motivation for the
change was _Generic, the resolution is restricted to C11 mode; there's
no reason to consider there to be a defect in this regard in older
standard versions. Some less-obvious issues are handled as follows:
* As usual, and as with function arguments, _Atomic is not considered
a qualifier for this purpose; that is, function declarations must
agree regarding whether the return type is atomic.
* By 6.9.1#2, a function definition cannot return qualified void. But
with this change, specifying "const void" in the declaration
produces the type "function returning void", which is perfectly
valid, so "const void f (void) {}" is no longer an error.
* The application to restrict is less clear. The way I am
interpreting it in this patch is that "unqualified version of T" is
not valid if T is not valid, as in the case where T is a
restrict-qualified version of a type that cannot be restrict
qualified (non-pointer, or pointer-to-function). But it's possible
to argue the other way from the wording.
Bootstrapped with no regressions on x86_64-pc-linux-gnu.
gcc/c:
* c-decl.c (grokdeclarator): For C11, discard qualifiers on
function return type.
gcc/testsuite:
* gcc.dg/qual-return-5.c, gcc.dg/qual-return-6.c: New tests.
* gcc.dg/call-diag-2.c, gcc.dg/qual-return-2.c ,
gcc.dg/qual-return-3.c, gcc.dg/qual-return-4.c: Use -std=gnu99.
From-SVN: r236231
Martin Sebor [Fri, 13 May 2016 20:55:26 +0000 (20:55 +0000)]
c++/60049 - Right and left shift undefined behavior not an error in a constexpr
Add new test.
From-SVN: r236225