Jakub Jelinek [Fri, 19 Nov 2010 23:48:57 +0000 (00:48 +0100)]
re PR tree-optimization/45830 (Code+rodata increase with -ftree-switch-conversion)
PR tree-optimization/45830
* stmt.c (expand_switch_using_bit_tests_p): New function.
(expand_case): Use it.
* tree.h (expand_switch_using_bit_tests_p): New prototype.
* tree-switch-conversion.c (struct switch_conv_info): Add
bit_test_uniq, bit_test_count and bit_test_bb fields.
(check_range): Fix a comment.
(check_process_case): Compute bit_test_uniq and bit_test_count.
(create_temp_arrays): Use XCNEWVEC, merge 3 arrays into one
allocation.
(free_temp_arrays): Use XDELETEVEC, adjust for the 3 arrays merging.
(constructor_contains_same_values_p): Use FOR_EACH_VEC_ELT.
(array_value_type): New function.
(build_one_array): Use it, if it returned different type,
fold_convert all constructor fields and convert back to the
wider type in the generated code.
(process_switch): Initialize bit_test_uniq, bit_test_count and
bit_test_bb fields. Don't optimize if expand_switch_using_bit_tests_p
returned true.
* gcc.target/i386/pr45830.c: New test.
* gcc.c-torture/execute/pr45830.c: New test.
Nicola Pero [Fri, 19 Nov 2010 22:23:22 +0000 (22:23 +0000)]
In gcc/objc/: 2010-11-19 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/objc/:
2010-11-19 Nicola Pero <nicola.pero@meta-innovation.com>
* objc-act.c (objc_start_class_interface): Do not warn that class
attributes are unimplemented. Pass the attributes to start_class.
(objc_start_category_interface): Updated call to start_class.
(objc_start_class_implementation): Same change.
(objc_start_category_implementation): Same change.
(objc_build_class_component_ref): Warn if the class is deprecated.
(build_private_template): Mark the template as deprecated if the
class is deprecated.
(start_class): Added 'attributes' argument. Emit a warning if
using a deprecated class as superclass of a class, or original
class of a category. Recognize the 'deprecated' attribute when
starting and interface, and mark the interface with
TREE_DEPRECATED if present. Store attributes in the interface.
In gcc/testsuite/:
2010-11-19 Nicola Pero <nicola.pero@meta-innovation.com>
* objc.dg/attributes/class-attribute-1.m: Rewritten.
* objc.dg/attributes/class-attribute-2.m: Same change.
* obj-c++.dg/attributes/class-attribute-1.mm: Same change.
* obj-c++.dg/attributes/class-attribute-2.mm: Same change.
* objc.dg/fobjc-std-1.m: Updated.
* obj-c++.dg/fobjc-std-1.mm: Updated.
@@ -1439,17 +1441,12 @@ crx_expand_prologue (void)
void
crx_expand_epilogue (void)
{
- rtx return_reg;
-
/* Nonzero if we need to return and pop only RA. This will generate a
* different insn. This differentiate is for the peepholes for call as last
* statement in function. */
int only_popret_RA = (save_regs[RETURN_ADDRESS_REGNUM]
&& (sum_regs == UNITS_PER_WORD));
- /* Return register. */
- return_reg = gen_rtx_REG (Pmode, RETURN_ADDRESS_REGNUM);
-
if (frame_pointer_needed)
/* Restore the stack pointer with the frame pointers value */
emit_move_insn (stack_pointer_rtx, frame_pointer_rtx);
Rainer Orth [Fri, 19 Nov 2010 18:24:25 +0000 (18:24 +0000)]
gcc-defs.exp (gcc-set-multilib-library-path): Use eval to exec $compiler.
* lib/gcc-defs.exp (gcc-set-multilib-library-path): Use eval to
exec $compiler.
* lib/gfortran.exp (gfortran_link_flags): Remove braces around
$GFORTRAN_UNDER_TEST.
(gfortran_init): Use -B to specify specpath, add trailing /.
Joseph Myers [Fri, 19 Nov 2010 13:27:18 +0000 (13:27 +0000)]
common.opt (flag_instrument_functions_exclude_functions, [...]): New Variable definitions.
* common.opt (flag_instrument_functions_exclude_functions,
flag_instrument_functions_exclude_files): New Variable
definitions.
* flags.h (flag_instrument_functions_exclude_p): Don't declare.
* gimplify.c (char_p): Declare type and vectors.
(flag_instrument_functions_exclude_p): Moved from opts.c. Make
static.
* opts.c (flag_instrument_functions_exclude_functions,
flag_instrument_functions_exclude_files): Remove.
(add_comma_separated_to_vector): Take void **.
(flag_instrument_functions_exclude_p): Move to gimplify.c.
(common_handle_option): Use options structure for
-finstrument-functions-exclude- options.
In gcc/cp/:
2010-11-19 Nicola Pero <nicola.pero@meta-innovation.com>
* parser.c (cp_parser_objc_protocol_declaration): Pass attributes
to objc_declare_protocols.
In gcc/objc/:
2010-11-19 Nicola Pero <nicola@nicola.brainstorm.co.uk>
* objc-act.c (lookup_protocol): Added 'warn_if_deprecated'
argument. If it is 'true' and the protocol is deprecated, emit a
deprecation warning.
(objc_start_protocol): Do not warn that protocol attributes are
unimplemented. Pass the attributes to start_protocol.
(start_protocol): Added attributes argument. Recognize the
'deprecated' attribute and mark the protocols with TREE_DEPRECATED
if present. Store attributes in the protocol.
(objc_declare_protocols): Added 'attributes' argument. Recognize
the 'deprecated' attribute and mark the protocols with
TREE_DEPRECATED if present. Store attributes in the protocol.
Updated call to lookup_protocol.
(objc_build_protocol_expr): Updated call to lookup_protocol.
(check_protocol_recursively): Same change.
(lookup_and_install_protocols): Same change.
* objc-act.h: Updated comments.
In gcc/testsuite/:
2010-11-19 Nicola Pero <nicola.pero@meta-innovation.com>
Richard Guenther [Fri, 19 Nov 2010 11:57:21 +0000 (11:57 +0000)]
re PR lto/45789 (ICE: tree code 'lang_type' is not supported in gimple streams with -flto when using __builtin_printf())
2010-11-19 Richard Guenther <rguenther@suse.de>
PR lto/45789
* lto-streamer-out.c (lto_output_ts_common_tree_pointers): For
IDENTIFIERs do not stream TREE_TYPE.
* lto-streamer-in.c (lto_input_ts_common_tree_pointers): Likewise.
Eric Botcazou [Thu, 18 Nov 2010 18:48:54 +0000 (18:48 +0000)]
decl.c (gnat_to_gnu_entity): Also use return-by-invisible-reference if the return type is By_Reference.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Also
use return-by-invisible-reference if the return type is By_Reference.
Tidy up and skip the processing of the return type if it is void.
Richard Guenther [Thu, 18 Nov 2010 13:10:40 +0000 (13:10 +0000)]
re PR lto/46525 (Failed to bootstrap-lto)
2010-11-18 Richard Guenther <rguenther@suse.de>
PR lto/46525
* gimple.c (gimple_register_type): Update TYPE_MAIN_VARIANT of
type leaders.
(gimple_register_canonical_type): Also cache the canoncial type
for non type leaders.
re PR middle-end/46518 (internal compiler error: in vinsn_detach, at sel-sched-ir.c:1271)
PR middle-end/46518
* sel-sched-ir.c (init_expr): Use the correct type for
target_available.
* sel-sched.c (fill_vec_av_set): Use explicitly signed char type.
Paolo Bonzini [Wed, 17 Nov 2010 18:17:17 +0000 (18:17 +0000)]
c-parser.c (c_token_is_qualifier, [...]): New.
2010-11-17 Paolo Bonzini <bonzini@gnu.org>
* c-parser.c (c_token_is_qualifier,
c_parser_next_token_is_qualifier): New.
(c_parser_declaration_or_fndef, c_parser_struct_declaration):
Improve error message on specs->tagdef_seen_p.
(c_parser_struct_or_union_specifier): Improve error recovery.
(c_parser_declspecs): Move exit condition on C_ID_ID early.
Reorganize exit condition for C_ID_TYPENAME/C_ID_CLASSNAME
using c_parser_next_token_is_qualifier; extend it to cover
a ctsk_tagdef typespec and !typespec_ok in general.
testsuite:
2010-11-17 Paolo Bonzini <bonzini@gnu.org>
* gcc.dg/two-types-1.c: New test.
* gcc.dg/two-types-2.c: New test.
* gcc.dg/two-types-3.c: New test.
* gcc.dg/two-types-4.c: New test.
* gcc.dg/two-types-5.c: New test.
* gcc.dg/two-types-6.c: New test.
* gcc.dg/two-types-7.c: New test.
* gcc.dg/two-types-8.c: New test.
* gcc.dg/two-types-9.c: New test.
* gcc.dg/two-types-10.c: New test.
* objc.dg/two-types-1.m: New test.
Jakub Jelinek [Wed, 17 Nov 2010 13:02:31 +0000 (14:02 +0100)]
re PR rtl-optimization/46440 (ICE: in rtl_verify_flow_info, at cfgrtl.c:2165 with -fstack-protector-all -fno-tree-dominator-opts -fno-tree-fre)
PR rtl-optimization/46440
* combine.c (update_cfg_for_uncondjump): When changing
an indirect jump into unconditional jump, remove BARRIERs
from bb's footer.
Jakub Jelinek [Wed, 17 Nov 2010 11:15:55 +0000 (12:15 +0100)]
re PR middle-end/45838 (FAIL: libgomp.c/pr34513.c execution test)
PR middle-end/45838
* tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
call_may_clobber_ref_p_1): Return true for __sync_* and some
OpenMP builtins that act as threading barriers.
Co-Authored-By: Richard Guenther <rguenther@suse.de>
From-SVN: r166863
Richard Guenther [Wed, 17 Nov 2010 10:43:21 +0000 (10:43 +0000)]
re PR tree-optimization/46498 (ICE: in eliminate_unnecessary_stmts, at tree-ssa-dce.c:1112 with -O -funsafe-math-optimizations -fno-tree-dominator-opts -fno-tree-reassoc)
Jakub Jelinek [Wed, 17 Nov 2010 09:16:06 +0000 (10:16 +0100)]
nop.h: New file.
* gcc.dg/guality/nop.h: New file.
* gcc.dg/guality/asm-1.c: Include it and use NOP macro instead of
"nop". Adjust line numbers in gdb-test.
* gcc.dg/guality/pr43329-1.c: Likewise.
Jason Merrill [Wed, 17 Nov 2010 01:43:19 +0000 (20:43 -0500)]
call.c (convert_like_real): Don't make a temp for copy-list-init.
* call.c (convert_like_real): Don't make a temp for copy-list-init.
(build_over_call): Don't handle that here.
(build_new_method_call): Use COMPLETE_OR_OPEN_TYPE_P for error.
Nicola Pero [Wed, 17 Nov 2010 01:01:49 +0000 (01:01 +0000)]
In gcc/objc/: 2010-11-17 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/objc/:
2010-11-17 Nicola Pero <nicola.pero@meta-innovation.com>
* objc-act.c (lookup_method_in_protocol_list): Search methods in
PROTOCOL_OPTIONAL_CLS_METHODS / PROTOCOL_OPTIONAL_NST_METHODS if
they are not found in PROTOCOL_CLS_METHODS / PROTOCOL_NST_METHODS.
In gcc/testsuite/:
2010-11-17 Nicola Pero <nicola.pero@meta-innovation.com>
* config/spu/spu.md (fma<VSF>4): Rename from fma_<VSF>.
(fnma<VSF>4): Rename from fnms_<VSF>.
(fms<VSF>4): Rename from fms_<VSF>.
(fma<VDF>4): Rename from fma_<VDF>.
(fms<VDF>4): Rename from fms_<VDF>.
(nfma<VDF>4): Rename from fnma_<VDF>.
(nfms<VDF>4): Rename from fnms_<VDF>.
(fnma<VDF>4, fnms<VDF>4): New expanders.
(floatunsdisf2): Update for the renames.
(*div<VSF>3_fast, *div<VSF>3_adjusted): Likewise.
* config/spu/spu-builtins.def: Update CODE_FOR_* for the renames.
re PR target/46470 ("add $0x8,%rsp" no longer optimized to pop)
PR target/46470
* recog.c (peep2_attempt): Convert frame-related info when possible.
(peep2_fill_buffer): Allow frame-related insns into the buffer.
(peephole2_optimize): Allow peep2_attempt to fail.
Eric Botcazou [Tue, 16 Nov 2010 22:13:52 +0000 (22:13 +0000)]
re PR rtl-optimization/46315 (-O2 -fno-strict-overflow causes wrong code generation)
PR rtl-optimization/46315
* rtl.h (remove_reg_equal_equiv_notes_for_regno): Declare.
* rtlanal.c (remove_reg_equal_equiv_notes_for_regno): New function
extracted from...
* dce.c (delete_corresponding_reg_eq_notes): ...here. Rename into...
(remove_reg_equal_equiv_notes_for_defs): ...this.
(delete_unmarked_insns): Adjust to above renaming.
* ifcvt.c (dead_or_predicable): Remove REG_EQUAL and REG_EQUIV notes
referring to registers set in the insns being moved, if any.
* df-core.c (df_ref_dump): New function extracted from...
(df_refs_chain_dump): ...here. Call it.
(df_regs_chain_dump): Likewise.
* df-problems.c (df_chain_dump): Print 'e' for uses in notes.
* df-scan.c (df_scan_start_dump): Likewise. Fix long line.
PR fortran/32049
* gfortran.dg/quad_1.f90: New.
* lib/gcc-defs.exp (gcc-set-multilib-library-path): Use also
compiler arguments.
* lib/gfortran.exp (gfortran_link_flags): Add libquadmath to
library search path; call gcc-set-multilib-library-path with
arguments such that libgfortran.spec is found.
(gfortran_init): Add path for libgfortran.spec to
GFORTRAN_UNDER_TEST.