Eric Botcazou [Fri, 23 Nov 2012 10:42:50 +0000 (10:42 +0000)]
decl.c (components_need_strict_alignment): New.
* gcc-interface/decl.c (components_need_strict_alignment): New.
(components_to_record): Do not pack the variants if one of the fields
needs strict alignment. Likewise for the variant part as a whole.
Specify the position of the variants even if the size isn't specified,
but do not specify the size of the variant part in this case.
Teresa Johnson [Fri, 23 Nov 2012 08:49:43 +0000 (08:49 +0000)]
predict.c (maybe_hot_count_p): Use threshold from profiled working set instead of hard limit.
* predict.c (maybe_hot_count_p): Use threshold from profiled working
set instead of hard limit.
(cgraph_maybe_hot_edge_p): Invoke maybe_hot_count_p() instead of
directly checking limit.
* params.def (HOT_BB_COUNT_FRACTION): Remove.
(HOT_BB_COUNT_WS_PERMILLE): New parameter.
* invoke.texi (hot-bb-count-fraction): Remove.
(hot-bb-count-ws-permille): Document.
Co-Authored-By: Jan Hubicka <jh@suse.cz>
From-SVN: r193747
Uros Bizjak [Thu, 22 Nov 2012 16:59:18 +0000 (17:59 +0100)]
i386.md (FPCMP): New mode iterator.
* config/i386/i386.md (FPCMP): New mode iterator.
(unord): New mode attribute.
(*cmp<mode>_0_i387): Macroize insn from *cmpfp_0
using X87MODEF mode iterator.
(*cmp<mode>_0_cc_i387): Macroize insn from *cmpfp_0_cc using
X87MODEF mode iterator.
(*cmpxf_i387): Rename from *cmpfp_xf.
(*cmpxf_cc_i387): Rename from *cmpfp_xf_cc.
(*cmp<mode>_i387): Rename from *cmpfp_<mode>.
(*cmp<mode>_cc_i387): Rename from *cmpfp_<mode>_cc.
(*cmpu<mode>_i387): Macroize insn from *cmpfp_u using X87MODEF
mode iterator.
(*cmpu<mode>_cc_i387): Macroize insn from *cmpfp_u_cc using X87MODEF
mode iterator.
(*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Macroize_insn from
*cmpfp_<mode> using X87MODEF mode iterator.
(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Macroize_insn from
*cmpfp_<mode>_cc using X87MODEF mode iterator.
(*cmpi<FPCMP:unord><MODEF:mode>_mixed): Macroize insn from
*cmpfp_i{,u}_mixed using FPCMP and MODEF mode iterators.
(*cmpi<FPCMP:unord><MODEF:mode>_mixed): Macroize insn from
*cmpfp_i{,u}_sse using FPCMP and MODEF mode iterators.
(*cmpi<CCFPCMP:unord><X87MODEF:mode>_i387): Macroize insn from
*cmpfp_i{,u}_387 using FPCMP and X87MODEF mode iterators.
Jason Merrill [Thu, 22 Nov 2012 14:42:00 +0000 (09:42 -0500)]
re PR c++/55137 (Unexpected static structure initialization)
PR c++/55137
* semantics.c (verify_constant): Track overflow separately.
(reduced_constant_expression_p): Don't check it here.
(cxx_eval_constant_expression): Check it on CSTs.
(cxx_eval_outermost_constant_expr): Treat overflows as non-constant
at this point, but still return the folded version.
(potential_constant_expression_1): Don't check overflow.
H.J. Lu [Thu, 22 Nov 2012 14:10:47 +0000 (14:10 +0000)]
Add STATIC_LIBASAN_LIBS for -static-libasan
* gcc.c (ADD_STATIC_LIBASAN_LIBS): New macro. Defined
with STATIC_LIBASAN_LIBS.
(LIBASAN_SPEC): Add STATIC_LIBASAN_LIBS.
* config/gnu-user.h (STATIC_LIBASAN_LIBS): New macro.
Georg-Johann Lay [Thu, 22 Nov 2012 10:00:13 +0000 (10:00 +0000)]
Adjust decimal point of signed accum mode to GCC default.
libgcc/
Adjust decimal point of signed accum mode to GCC default.
PR target/54222
* config/avr/t-avr (LIB1ASMFUNCS): Add _fractsfsq _fractsfusq,
_divqq_helper.
* config/avr/lib1funcs-fixed.S (__fractqqsf, __fracthqsf)
(__fractsasf, __fractsfha, __fractusqsf, __fractsfsa)
(__mulha3, __mulsa3)
(__divqq3, __divha3, __divsa3): Adjust to new position of
decimal point of signed accum types.
(__mulusa3_round): New function.
(__mulusa3): Use it.
(__divqq_helper): New function.
(__udivuqq3): Use it.
gcc/
Adjust decimal point of signed accum mode to GCC default.
PR target/54222
* config/avr/avr-modes.def (HA, SA, DA): Remove mode adjustments.
(TA): Move decimal point one bit to the right.
* config/avr/avr.c (avr_out_fract): Rewrite.
David S. Miller [Wed, 21 Nov 2012 23:55:29 +0000 (23:55 +0000)]
atanq.c (atanq): Update from GLIBC.
2012-11-22 David S. Miller <davem@davemloft.net>
Tobias Burnus <burnus@net-b.de>
Joseph Myers <joseph@codesourcery.com>
* math/atanq.c (atanq): Update from GLIBC. Handle tiny and
very large arguments properly.
* math/j0q.c (y0q): Update from GLIBC. Avoid arithmetic
underflow when 'x' is very small.
* math/j1q.c (y1q): Ditto.
* math/log1pq.c (log1pq): Update from GLIBC. Saturate
nonzero exponents with absolute value below 0x1p-128 to
+/- 0x1p-128.
* math/powq.c (powq): Update from GLIBC. If xm1 is
smaller than LDBL_EPSILON/2.0L, just return xm1.
Co-Authored-By: Joseph Myers <joseph@codesourcery.com> Co-Authored-By: Tobias Burnus <burnus@net-b.de>
From-SVN: r193716
Janus Weil [Wed, 21 Nov 2012 22:19:51 +0000 (23:19 +0100)]
re PR fortran/55352 (Erroneous gfortran warning of unused module variable when variable is only used in namelist)
2012-11-21 Janus Weil <janus@gcc.gnu.org>
PR fortran/55352
* trans-decl.c (generate_local_decl): Don't warn for explicitly imported
but unused module variables which are in a namelist or common block.
* config/alpha/alpha.md (extvmisaligndi): Rename from extv; update
mode of operand 1; remove ancient extract_bit_field workaround.
(insvmisaligndi): Rename from insv and update similarly.
(extzvmisaligndi): Rename from extzv and update similarly; split out...
(extzvdi): New expander.
Martin Jambor [Wed, 21 Nov 2012 17:13:48 +0000 (18:13 +0100)]
ipa-prop.h (struct ipa_node_params): Rename clone_for_all_contexts to do_clone_for_all_contexts.
2012-11-21 Martin Jambor <mjambor@suse.cz>
* ipa-prop.h (struct ipa_node_params): Rename clone_for_all_contexts to
do_clone_for_all_contexts. Update all uses. New flag
is_all_contexts_clone.
* ipa-cp.c (cgraph_edge_brings_value_p): Also consider the case when cs
leads to the clone for all contexts.
(perhaps_add_new_callers): Likewise.
(decide_whether_version_node): Remove bogus !plats->aggs test. Set
is_all_contexts_clone when cloning for all contexts.
* testsuite/gcc.dg/ipa/ipcp-agg-7.c: New test.
* testsuite/gcc.dg/ipa/ipcp-agg-8.c: Likewise.
Martin Jambor [Wed, 21 Nov 2012 17:04:45 +0000 (18:04 +0100)]
re PR tree-optimization/55260 (ICE: in ipa_get_parm_lattices, at ipa-cp.c:263 with -O2 -fno-inline -fipa-cp-clone)
2012-11-21 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/55260
* ipa-cp.c (intersect_aggregates_with_edge): New function.
(find_aggregate_values_for_callers_subset): Part moved to the function
above. Call it.
(cgraph_edge_brings_all_agg_vals_for_node): Reimplemented using
intersect_aggregates_with_edge.
Tobias Burnus [Wed, 21 Nov 2012 13:46:34 +0000 (14:46 +0100)]
re PR libquadmath/55225 (Fail to build lgammaq.c from trunk with mingw-w64)
2012-11-21 Tobias Burnus <burnus@net-b.de>
PR libquadmath/55225
* math/lgammaq.c (lgammaq): Use local variable if
math.h does not provide signgam.
* acinclude.m4 (LIBQUAD_CHECK_MATH_H_SIGNGAM): New check.
* configure.ac: Use it.
* configure: Regenerate.
* config.h.in: Regenerate.
Diego Novillo [Tue, 20 Nov 2012 21:21:30 +0000 (16:21 -0500)]
Introduce vNULL to use as a nil initializer for vec<>.
This patch implements Jakub's idea of adding an empty struct with
a typecast operator that returns nil vectors. This is useful to
shorten all the initializers when declaring vec instances or passing
nil vectors as function arguments.
2012-11-20 Diego Novillo <dnovillo@google.com>
Jakub Jelinek <jakub@redhat.com>
Jakub Jelinek [Tue, 20 Nov 2012 19:51:53 +0000 (20:51 +0100)]
vec.h (class vec_prefix): Change into struct.
* vec.h (class vec_prefix): Change into struct.
Rename field alloc_PRIVATE_ back to alloc_.
Rename field num_PRIVATE_ to num_.
Update all users.
(class vec<T, A, vl_embed>): Rename field pfx_PRIVATE_ to vecpfx_.
Rename field data_PRIVATE_ to vecdata_.
Update all users.
(class vec<T, A, vl_ptr>): Make every field public.
Rename field vec_PRIVATE_ back to vec_.
Update all users.
gcc/
PR middle-end/55403
PR middle-end/55391
* expmed.c (store_bit_field_1): Use adjust_bitfield_address_size
rather than adjust_bitfield_address to change the mode of a reference.
(extract_bit_field_1): Likewise.
Uros Bizjak [Tue, 20 Nov 2012 18:02:36 +0000 (19:02 +0100)]
[multiple changes]
2012-11-20 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (fix_trunc<MODEF:mode><SWI48:mode>_sse): Macroize
insn from fix_trunc<mode>{si,di}_sse using SWI48 mode iterator.
(peephole2 to avoid vector decoded forms): Macroize peephole2
using MODEF mode iterator. Use SWI48 mode iterator instead of SWI48x.
Diego Novillo [Tue, 20 Nov 2012 16:26:09 +0000 (11:26 -0500)]
Convert vec<> into a POD.
This fixes PR 55398 by making vec<> a true POD. I thought we could get
away with having private fields, but we can't. We fail to pass vec<>
instances through varargs.
The patch makes every field public and mangles the field names in the
hope that no future patch will try to make use of them directly. It's
horrible, but I could not think of anything better.
Tested with clang++ as the host compiler.
2012-11-20 Diego Novillo <dnovillo@google.com>
PR middle-end/55398
* vec.h (class vec_prefix): Make every field public.
Rename field alloc_ to alloc_PRIVATE_.
Rename field num_ to num_PRIVATE_.
Update all users.
(class vec<T, A, vl_embed>): Make every field public.
Rename field pfx_ to pfx_PRIVATE_.
Rename field data_ to data_PRIVATE_.
Update all users.
(class vec<T, A, vl_ptr>): Make every field public.
Rename field vec_ to vec_PRIVATE_.
Update all users.
Kai Tietz [Tue, 20 Nov 2012 16:17:16 +0000 (17:17 +0100)]
re PR target/55268 (gcc4.8 mingw-w64 wrong stdcall import symbols generated after rev 193204)
PR target/55268
* i386.c (ix86_mangle_decl_assembler_name): Use
SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME if defined.
* cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Rename
to SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME.
Nick Clifton [Tue, 20 Nov 2012 13:12:16 +0000 (13:12 +0000)]
v850.c (F): New function.
* config/v850/v850.c (F): New function. Mark the given insn as
being frame related.
(v850_all_frame_related): New function. Mark the given push insn
as being frame related.
(v850_pass_by_reference): When using the RH850 ABI do not pass
arguments by reference.
(v850_strict_argument_naming): Delete function.
(v850_function_arg): Use word alignment with the RH850 ABI.
(v850_arg_partial_bytes): Likewise.
(v850_function_arg_advance): Likewise.
(v850_print_operand): Handle CONST_INT and CONST_DOUBLE.
(compute_register_save_size): Use df_regs_ever_live_p.
(increment_stack): Mark prologue adjustments as being frame
related.
(expand_prologue): Handle pretend args. Mark insns generated as
being frame related.
(expand_epilogue): Likewise.
(v850_return_in_memory): When using the RH850 ABI return
aggregates in memory.
(v850_setup_incoming_varargs): Delete function.
(v850_option_override): New function.
(TARGET_DEBUG_UNWIND_INFO): Delete definition.
(TARGET_SETUP_INCOMING_VARARGS): Likewise.
(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
(TARGET_OPTION_OVERRIDE): Define.
* config/v850/v850.h (ASM_SPEC): Pass 8byte-align and gcc-abi
options on to assembler.
(LINK_SPEC): Likewise.
(TARGET_CPU_CPP_BUILTINS): Define __V850_8BYTE_ALIGN__ and
__V850_GCC_ABI__.
(STACK_BOUNDARY): Set to BIGGEST_ALIGNMENT.
(FUNCTION_BOUNDARY): With the RH850 ABI always 32-bit alignment.
(BIGGEST_ALIGNMENT): With -8byte-align set to 64-bits.
(BIGGEST_FIELD_ALIGNMENT): Likewise.
(enum reg_class): Swap EVEN_REGS and GENERAL_REGS.
(REG_CLASS_NAMES): Likewise.
(REG_CLASS_CONTENTS): Likewise.
(struct cum_arg): Delete anonymous_args field.
(INIT_CUMULATIVE_ARGS): Update.
(PREFERRED_DEBUG): Set to DWARF2_DEBUG.
(DWARF2_FRAME_INFO): Define.
(DWARF2_UNWIND_INFO): Define.
(INCOMING_RETURN_ADDR_RTX): Define.
(DWARF_FRAME_RETURN_COLUMN): Define.
(TARGET_USE_FPU): Define.
* config/v850/v850.md: Replace TARGET_V850E2V3 in floating point
insns with TARGET_USE_FPU.
(fixuns_truncsfsi2): New pattern.
(fixuns_truncdfsi2): New pattern.
(fix_truncsfdi2): New pattern.
(fixuns_truncsfdi2): New pattern.
(fix_truncdfdi2): New pattern.
(fixuns_truncdfdi2): New pattern.
(unsfloatsisf2): New pattern.
(unsfloatsidf2): New pattern.
(floatdisf2): New pattern.
(unsfloatdisf2): New pattern.
(floatdidf2): New pattern.
(unsfloatdidf2): New pattern.
(fnmasf4): Fix RTl description.
(fnmssf4): Likewise.
* config/v850/v850.opt (mrelax): New option.
(mlong-jumps): Likewise.
(msoft-float): Likewise.
(mhard-float): Likewise.
(mrh850-abi): Likewise.
(mgcc-abi): Likewise.
(m8byte-align): Likewise.
* config/v850/t-v850 (MULTILIB_OPTIONS): Update multilib options.
(MULTILIB_DIRNAMES): Likewise.
Nick Clifton [Tue, 20 Nov 2012 12:22:44 +0000 (12:22 +0000)]
rx.c (rx_function_arg_boundary): When using the RX ABI align stack arguments to their natural alignment.
* config/rx/rx.c (rx_function_arg_boundary): When using the RX ABI
align stack arguments to their natural alignment.
(rx_narrow_volatile_bitfield): New function. Allows narrow
volatile bitfields.
(rx_ok_to_inline): New function. Do not inline functions with
local variables into a naked caller.
(TARGET_NARROW_VOLATILE_BITFIELD): Define.
(TARGET_CAN_INLINE_P): Define.
* config/rx/rx.c (TARGET_CPU_CPP_BUILTINS): Define __RX_ABI__ or
__RX_GC_ABI__.
(ASM_SPEC): Pass -mgcc-abi on to the assembler.
(STRICT_ALIGNMENT): Set to false.
(CTORS_SECTION_ASM_OP): Add executable attribute.
(DTORS_SECTION_ASM_OP): Add executable attribute.
(INIT_ARRAY_SECTION_ASM_OP): Add executable attribute.
(FINI_ARRAY_SECTION_ASM_OP): Add executable attribute.
* config/rx/rx.md (subdi3): Don't allow MEMs as the third operand,
as it causes too much reload pressure.
* config/rx/rx.opt (mgcc-abi): New option.
(mrx-abi): New option.
* config/rx/t-rx (MULTILIB_OPTIONS): Show how to add an ABI
multilib.
(MULTILIB_DIRNAMES): Likewise.
Martin Jambor [Tue, 20 Nov 2012 11:20:41 +0000 (12:20 +0100)]
re PR tree-optimization/55260 (ICE: in ipa_get_parm_lattices, at ipa-cp.c:263 with -O2 -fno-inline -fipa-cp-clone)
2012-11-20 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/55260
* ipa-cp.c (find_aggregate_values_for_callers_subset): Rename info to
dest_info, use caller_info instead of info when determining whether
callee is a clone.
Jakub Jelinek [Tue, 20 Nov 2012 08:38:11 +0000 (09:38 +0100)]
re PR debug/55094 (ICE in maybe_record_trace_start, at dwarf2cfi.c:2224)
PR middle-end/55094
* builtins.c (expand_builtin_trap): Add REG_ARGS_SIZE note
on the trap insn for !ACCUMULATE_OUTGOING_ARGS.
* cfgcleanup.c (outgoing_edges_match): Don't look at debug insns
on the first old_insns_match_p call. For !ACCUMULATE_OUTGOING_ARGS
fail if the last real insn doesn't have REG_ARGS_SIZE note.
Jakub Jelinek [Tue, 20 Nov 2012 08:34:43 +0000 (09:34 +0100)]
re PR middle-end/54921 (wrong code with -Os -fno-omit-frame-pointer -fsched2-use-superblocks -fstack-protector -ftree-slp-vectorize)
PR rtl-optimization/54921
* cselib.h (fp_setter_insn): New prototype.
* cselib.c (fp_setter_insn): New function.
(cselib_process_insn): If frame_pointer_needed,
call cselib_invalidate_rtx (stack_pointer_rtx) after
processing a frame pointer setter.
* var-tracking.c (fp_setter): Removed.
(vt_initialize): Use fp_setter_insn instead of fp_setter.
Michael Meissner [Tue, 20 Nov 2012 00:55:58 +0000 (00:55 +0000)]
rs6000.md (movdf_hardfloat32): Reorder move constraints so that the traditional floating point loads...
2012-11-19 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.md (movdf_hardfloat32): Reorder move
constraints so that the traditional floating point loads, stores,
and moves are done first, then the VSX loads, stores, and moves,
and finally the GPR loads, stores, and moves so that reload
chooses FPRs over GPRs, and uses the traditional load/store
instructions which provide an offset.
(movdf_hardfloat64): Likewise.
Aldy Hernandez [Mon, 19 Nov 2012 18:43:40 +0000 (18:43 +0000)]
trans-mem (collect_bb2reg): Stop scanning at irrevocable
* trans-mem (collect_bb2reg): Stop scanning at irrevocable
* blocks.
(get_bb_regions_instrumented): Add new traverse_clone argument and
use it.
(expand_regions_1): Same.
(expand_region): Same.
(execute_tm_mark): Pass new argument to expand_regions.
(expand_block_edges): Pass new argument to
get_bb_regions_instrumented.
testsuite/
* g++.dg/tm/pr51516.C: Adjust for uninstrumented code path.
* gcc.dg/tm/clone-1.c: New test.
David Edelsohn [Mon, 19 Nov 2012 16:58:31 +0000 (11:58 -0500)]
re PR target/55276 (ppc: callee-saved vector registers not preserved)
2012-11-19 Mans Rullgard <mans@mansr.com>
PR target/55276
* config/rs6000/rs6000.c (rs6000_stack_info): Always set vrsave_mask
for TARGET_ALTIVEC_ABI. Zero vrsave_save_offset if
!TARGET_ALTIVEC_VRSAVE.
(rs6000_emit_prologue): For SAVE_INLINE_VLRs, check vrsave_size
not vrsave_mask.
Mans Rullgard [Mon, 19 Nov 2012 16:55:05 +0000 (16:55 +0000)]
rs6000.c (rs6000_stack_info): Always set vrsave_mask for TARGET_ALTIVEC_ABI.
2012-11-19 Mans Rullgard <mans@mansr.com>
* config/rs6000/rs6000.c (rs6000_stack_info): Always set vrsave_mask
for TARGET_ALTIVEC_ABI. Zero vrsave_save_offset if
!TARGET_ALTIVEC_VRSAVE.
(rs6000_emit_prologue): For SAVE_INLINE_VLRs, check vrsave_size
not vrsave_mask.