Via expander, pre- and post-reload patterns. The pre-reload
pattern is defined to allow lower_subregs totally split the
DImode values.
From-SVN: r169014
Now that we properly track the life of MDR, we can emit
the RETF instruction if MDR has not been modified. This
insn is 3-4 cycles faster since the return address is
already loaded.
From-SVN: r169013
There's little reason to greatly complicate things by splitting
the pic_load patterns and using complex rtl to make it work out.
Instead, use the %= marker to generate unique numbers and emit
the entire load_pic sequence at once.
At the same time, collect all references to outgoing_args_size
into mn10300_frame_size, and all computations of register save
area size into mn10300_initial_offset.
From-SVN: r169012
For addition and logicals, define an operation-plus-flags update pattern
in preparation for compare elimination. In addition, clean up the way
we compare and validate CC_MODEs. Define NEG in terms of NOT; this is
smaller and allows a non-clobbering destination alternative.
From-SVN: r169010
Allow REG+REG and POST_MODIFY addressing for AM33. Fix AM33 base and
index register classes. Remove a bunch of register class combinations
that aren't really useful after this cleanup.
From-SVN: r169006
Handles output reloads for QI/HImode properly; previously we were
only handing input reloads properly.
Handles reloads involving the stack pointer better; note that the
AM33 allows copying SP to DATA_REGS as well as ADDRESS and EXTENDED.
From-SVN: r169005
Use the "D" and "A" constraints, and the enabled attribute to
unify all ofthe integer move patterns. Delete the fake double
word move patterns; let the middle-end generate subregs as required.
Unfortunately, this somehow exposes a register pressure problem
with the udivmod pattern. This is properly fixed with subsequent
patches that expose the MDR register.
In the meantime it is highly desirable to to preserve bisect-ability
of the patch series, so disable this pattern for AM30.
From-SVN: r169004
PR c++/47303
* decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
or DECL_EXTERNAL.
* g++.dg/template/anonunion1.C: New test.
From-SVN: r169000
PR tree-optimization/47290
* tree-eh.c (infinite_empty_loop_p): New function.
(cleanup_empty_eh): Use it.
* g++.dg/torture/pr47290.C: New test.
From-SVN: r168974
2011-01-18 Janus Weil <janus@gcc.gnu.org>
PR fortran/47240
* resolve.c (expression_rank): Fix rank of procedure poiner components.
* trans-expr.c (gfc_conv_procedure_call): Take care of procedure
pointer components as actual arguments.
2011-01-18 Janus Weil <janus@gcc.gnu.org>
PR fortran/47240
* gfortran.dg/proc_ptr_comp_29.f90: New.
From-SVN: r168973
* doc/extend.texi: Mention __float128 support on hppa HP-UX.
* config/pa/pa-hpux.h (HPUX_LONG_DOUBLE_LIBRARY): Define to 1.
* config/pa/pa.c (pa_expand_builtin): New. Include "langhooks.h".
(pa_c_mode_for_suffix): New.
(TARGET_EXPAND_BUILTIN): Define.
(TARGET_C_MODE_FOR_SUFFIX): Define.
(pa_builtins): Define.
(pa_init_builtins): Register __float128 type and init new support
builtins.
* config/pa/pa.h (HPUX_LONG_DOUBLE_LIBRARY): Define if not defined.
* config/pa/quadlib.c (_U_Qfcopysign): New.
From-SVN: r168969
PR middle-end/46894
* explow.c (allocate_dynamic_stack_space): Do not assume more than
BITS_PER_UNIT alignment if STACK_DYNAMIC_OFFSET or STACK_POINTER_OFFSET
are defined.
From-SVN: r168968
2011-01-18 Richard Guenther <rguenther@suse.de>
PR rtl-optimization/47216
* emit-rtl.c: Include tree-flow.h.
(set_mem_attributes_minus_bitpos): Use tree_could_trap_p instead
of replicating it with different semantics.
* Makefile.in (emit-rtl.o): Adjust.
From-SVN: r168951
2011-01-18 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/unique_ptr.h (default_delete<>::default_delete()):
Declare defaulted per DR 1517.
* testsuite/util/testsuite_common_types.h
(constexpr_defaulted_default_constructible): Add.
* testsuite/20_util/default_delete/cons/constexpr.cc: Use it.
From-SVN: r168947
PR rtl-optimization/47299
* expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: Don't use
subtarget. Use normal multiplication if both operands are
constants.
* expmed.c (expand_widening_mult): Don't try to optimize constant
multiplication if op0 has VOIDmode. Convert op1 constant to mode
before using it.
* gcc.c-torture/execute/pr47299.c: New test.
From-SVN: r168944
Now that gdb supports Blackfin targets, no need to mask it.
Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
From-SVN: r168943
PR c++/47067
* semantics.c (base_field_constructor_elt): New fn.
(cxx_eval_bare_aggregate): Use it.
(build_data_member_initialization): Leave COMPONENT_REF for
vfield inits.
From-SVN: r168937
In gcc/objc/:
2011-01-17 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/47314
* objc-act.c (finish_objc): When calling check_duplicates to check
duplicated instance methods, set 'is_class' to 0, not 1.
In gcc/testsuite/:
2011-01-17 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/47314
* objc.dg/selector-warn-1.m: New.
* obj-c++.dg/selector-warn-1.mm: New.
From-SVN: r168934