1. 13 Apr, 2010 8 commits
    • Remove lang_eh_type_covers, which is dead, and the corresponding · 1a710808
      Ada routine gnat_eh_type_covers.
      
      From-SVN: r158258
      Duncan Sands committed
    • s390.md: Replace TARGET_64BIT with TARGET_ZARCH. · 9602b6a1
      2010-04-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
                  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
      	
      	* gcc/config/s390/s390.md: Replace TARGET_64BIT with TARGET_ZARCH.
      	* gcc/config/s390/s390.c: Replace UNTIS_PER_WORD with
      	UNITS_PER_LONG where it is ABI relevant.	
      	(s390_return_addr_rtx): Likewise.
      	(s390_back_chain_rtx): Likewise.
      	(s390_frame_area): Likewise.
      	(s390_frame_info): Likewise.
      	(s390_initial_elimination_offset): Likewise.
      	(save_gprs): Likewise.
      	(s390_emit_prologue): Likewise.
      	(s390_emit_epilogue): Likewise.
      	(s390_function_arg_advance): Likewise.
      	(s390_function_arg): Likewise.
      	(s390_va_start): Likewise.
      	(s390_gimplify_va_arg): Likewise.
      	(s390_function_profiler): Likewise.
      	(s390_optimize_prologue): Likewise.
      	(s390_rtx_costs): Likewise.
      	(s390_secondary_reload): Likewise.
      	(s390_promote_function_mode): Likewise.
      	(s390_hard_regno_mode_ok): Replace TARGET_64BIT with TARGET_ZARCH.
      	(s390_scalar_mode_supported_p): Disallow TImode if no 64 bit
      	registers available.
      	(s390_unwind_word_mode): New function.
      	(s390_function_value): Split 64 bit values into register pair if
      	used as return value.
      	(s390_call_saved_register_used): Don't use HARD_REGNO_NREGS for
      	function call parameters.  Handle parallels.
      	(TARGET_SCALAR_MODE_SUPPORTED_P): New macro.
      	(HARD_REGNO_CALL_PART_CLOBBERED): New macro.
      	(DWARF_CIE_DATA_ALIGNMENT): New macro.
      	(s390_expand_setmem): Remove unused variable src_addr.
      	* gcc/longlong.h: Make smul_ppmm and sdiv_qrnnd inline asms to
      	deal with 64 bit registers.	
      	* gcc/config/s390/s390.h: Define __zarch__ predefined macro.
      	Replace UNITS_PER_WORD with UNITS_PER_LONG where it is ABI relevant.
      	(UNITS_PER_LONG): New macro.
      	* libjava/include/s390-signal.h: Define extended ucontext
      	structure containing the upper halfs of the 64 bit registers.
      
      
      Co-Authored-By: Ulrich Weigand <uweigand@de.ibm.com>
      
      From-SVN: r158257
      Andreas Krebbel committed
    • cfgexpand.c (gimple_expand_cfg): Clarify warning message text. · 3b123595
      	
      	* cfgexpand.c (gimple_expand_cfg): Clarify warning message text.
      
      From-SVN: r158256
      Simon Baldwin committed
    • gigi.h (standard_datatypes): Add ADT_parent_name_id. · 76af763d
      	* gcc-interface/gigi.h (standard_datatypes): Add ADT_parent_name_id.
      	(parent_name_id): New macro.
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Use it.
      	* gcc-interface/trans.c (gigi): Initialize it.
      	(lvalue_required_p) <N_Type_Conversion>: New case.
      	<N_Qualified_Expression>: Likewise.
      	<N_Allocator>: Likewise.
      	* gcc-interface/utils.c (convert): Try to properly upcast tagged types.
      
      From-SVN: r158255
      Eric Botcazou committed
    • gimple.c (walk_gimple_op): Do not request a pure rvalue on the RHS if the LHS is… · cb3d597d
      gimple.c (walk_gimple_op): Do not request a pure rvalue on the RHS if the LHS is of a non-renamable type.
      
      	* gimple.c (walk_gimple_op) <GIMPLE_ASSIGN>: Do not request a pure
      	rvalue on the RHS if the LHS is of a non-renamable type.
      	* tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Fold result.
      ada/
      	* gcc-interface/ada-tree.h (TYPE_BY_REFERENCE_P): Delete.
      	(DECL_CONST_ADDRESS_P): New macro.
      	(SET_DECL_ORIGINAL_FIELD_TO_FIELD): Likewise.
      	(SAME_FIELD_P): Likewise.
      	* gcc-interface/decl.c (constructor_address_p): New static function.
      	(gnat_to_gnu_entity) <object>: Set DECL_CONST_ADDRESS_P according to
      	the return value of above function.
      	(gnat_to_gnu_entity) <E_Record_Type>: Force BLKmode for all types
      	passed by reference.
      	<E_Record_Subtype>: Likewise.
      	Set TREE_ADDRESSABLE on the type if it passed by reference.
      	(make_packable_type): Use SET_DECL_ORIGINAL_FIELD_TO_FIELD.
      	(create_field_decl_from): Likewise.
      	(substitute_in_type): Likewise.
      	(purpose_member_field): Use SAME_FIELD_P.
      	* gcc-interface/misc.c (must_pass_by_ref): Test TREE_ADDRESSABLE.
      	* gcc-interface/trans.c (lvalue_required_p): Add ADDRESS_OF_CONSTANT
      	parameter and adjust recursive calls.
      	<N_Explicit_Dereference>: New case.
      	<N_Object_Declaration>: Return 1 if the object is of a class-wide type.
      	Adjust calls to lvalue_required_p.  Do not return the initializer of a
      	DECL_CONST_ADDRESS_P constant if an lvalue is required for it.
      	(call_to_gnu): Delay issuing error message for a misaligned actual and
      	avoid the associated back-end assertion.  Test TREE_ADDRESSABLE.
      	(gnat_gimplify_expr) <ADDR_EXPR>: Handle non-static constructors.
      	* gcc-interface/utils.c (make_dummy_type): Set TREE_ADDRESSABLE if the
      	type is passed by reference.
      	(convert) <CONSTRUCTOR>: Convert in-place in more cases.
      	* gcc-interface/utils2.c (build_cond_expr): Drop TYPE_BY_REFERENCE_P.
      	(build_simple_component_ref): Use SAME_FIELD_P.
      
      From-SVN: r158254
      Eric Botcazou committed
    • [multiple changes] · b7e75771
      2010-04-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	* array.c (extract_element): Restore function from trunk.
      	(gfc_get_array_element): Restore function from trunk.
      	(gfc_expand_constructor): Restore check against
      	flag_max_array_constructor.
      	* constructor.c (node_copy_and_append): Delete unused.
      	* gfortran.h: Delete comment and extra include.
      	* constructor.h: Bump copyright and clean up TODO comments.
      	* resolve.c: Whitespace.
      
      2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
      
      	* simplify.c (compute_dot_product): Replaced usage of ADVANCE macro
      	with direct access access to elements. Adjusted prototype, fixed all
      	callers.
      	(gfc_simplify_dot_product): Removed duplicate check for zero-sized
      	array.
      	(gfc_simplify_matmul): Removed usage of ADVANCE macro.
      	(gfc_simplify_spread): Removed workaround, directly insert elements
      	at a given array position.
      	(gfc_simplify_transpose): Likewise.
      	(gfc_simplify_pack): Replaced usage of ADVANCE macro with corresponding
      	function calls.
      	(gfc_simplify_unpack): Likewise.
      
      2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
      
      	* simplify.c (only_convert_cmplx_boz): Renamed to ...
      	(convert_boz): ... this and moved to start of file.
      	(gfc_simplify_abs): Whitespace fix.
      	(gfc_simplify_acos): Whitespace fix.
      	(gfc_simplify_acosh): Whitespace fix.
      	(gfc_simplify_aint): Whitespace fix.
      	(gfc_simplify_dint): Whitespace fix.
      	(gfc_simplify_anint): Whitespace fix.
      	(gfc_simplify_and): Replaced if-gate by more common switch-over-type.
      	(gfc_simplify_dnint): Whitespace fix.
      	(gfc_simplify_asin): Whitespace fix.
      	(gfc_simplify_asinh): Moved creation of result-expr out of switch.
      	(gfc_simplify_atan): Likewise.
      	(gfc_simplify_atanh): Whitespace fix.
      	(gfc_simplify_atan2): Whitespace fix.
      	(gfc_simplify_bessel_j0): Removed ATTRIBUTE_UNUSED.
      	(gfc_simplify_bessel_j1): Likewise.
      	(gfc_simplify_bessel_jn): Likewise.
      	(gfc_simplify_bessel_y0): Likewise.
      	(gfc_simplify_bessel_y1): Likewise.
      	(gfc_simplify_bessel_yn): Likewise.
      	(gfc_simplify_ceiling): Reorderd statements.
      	(simplify_cmplx): Use convert_boz(), check for constant arguments.
      	Whitespace fix.
      	(gfc_simplify_cmplx): Use correct default kind. Removed check for
      	constant arguments.
      	(gfc_simplify_complex): Replaced if-gate. Removed check for
      	constant arguments.
      	(gfc_simplify_conjg): Whitespace fix.
      	(gfc_simplify_cos): Whitespace fix.
      	(gfc_simplify_cosh): Replaced if-gate by more common switch-over-type.
      	(gfc_simplify_dcmplx): Removed check for constant arguments.
      	(gfc_simplify_dble): Use convert_boz() and gfc_convert_constant().
      	(gfc_simplify_digits): Whitespace fix.
      	(gfc_simplify_dim): Whitespace fix.
      	(gfc_simplify_dprod): Reordered statements.
      	(gfc_simplify_erf): Whitespace fix.
      	(gfc_simplify_erfc): Whitespace fix.
      	(gfc_simplify_epsilon): Whitespace fix.
      	(gfc_simplify_exp): Whitespace fix.
      	(gfc_simplify_exponent): Use convert_boz().
      	(gfc_simplify_floor): Reorderd statements.
      	(gfc_simplify_gamma): Whitespace fix.
      	(gfc_simplify_huge): Whitespace fix.
      	(gfc_simplify_iand): Whitespace fix.
      	(gfc_simplify_ieor): Whitespace fix.
      	(simplify_intconv): Use gfc_convert_constant().
      	(gfc_simplify_int): Use simplify_intconv().
      	(gfc_simplify_int2): Reorderd statements.
      	(gfc_simplify_idint): Reorderd statements.
      	(gfc_simplify_ior): Whitespace fix.
      	(gfc_simplify_ishftc): Removed duplicate type check.
      	(gfc_simplify_len): Use range_check() instead of manual range check.
      	(gfc_simplify_lgamma): Removed ATTRIBUTE_UNUSED. Whitespace fix.
      	(gfc_simplify_log): Whitespace fix.
      	(gfc_simplify_log10): Whitespace fix.
      	(gfc_simplify_minval): Whitespace fix.
      	(gfc_simplify_maxval): Whitespace fix.
      	(gfc_simplify_mod): Whitespace fix.
      	(gfc_simplify_modulo): Whitespace fix.
      	(simplify_nint): Reorderd statements.
      	(gfc_simplify_not): Whitespace fix.
      	(gfc_simplify_or): Replaced if-gate by more common switch-over-type.
      	(gfc_simplify_radix): Removed unused result-variable. Whitespace fix.
      	(gfc_simplify_range): Removed unused result-variable. Whitespace fix.
      	(gfc_simplify_real): Use convert_boz() and gfc_convert_constant().
      	(gfc_simplify_realpart): Whitespace fix.
      	(gfc_simplify_selected_char_kind): Removed unused result-variable.
      	(gfc_simplify_selected_int_kind): Removed unused result-variable.
      	(gfc_simplify_selected_real_kind): Removed unused result-variable.
      	(gfc_simplify_sign): Whitespace fix.
      	(gfc_simplify_sin): Whitespace fix.
      	(gfc_simplify_sinh): Replaced if-gate by more common switch-over-type.
      	(gfc_simplify_sqrt): Avoided goto by inlining check. Whitespace fix.
      	(gfc_simplify_tan): Replaced if-gate by more common switch-over-type.
      	(gfc_simplify_tanh): Replaced if-gate by more common switch-over-type.
      	(gfc_simplify_xor): Replaced if-gate by more common switch-over-type.
      
      2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
      
      	* gfortran.h (gfc_start_constructor): Removed.
      	(gfc_get_array_element): Removed.
      	* array.c (gfc_start_constructor): Removed, use gfc_get_array_expr 
      	instead. Fixed all callers.
      	(extract_element): Removed.
      	(gfc_expand_constructor): Temporarily removed check for
      	max-array-constructor. Will be re-introduced later if still required.
      	(gfc_get_array_element): Removed, use gfc_constructor_lookup_expr
      	instead. Fixed all callers.
      	* expr.c (find_array_section): Replaced manual lookup of elements
      	by gfc_constructor_lookup.
      
      2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
      
              * gfortran.h (gfc_get_null_expr): New prototype.
              (gfc_get_operator_expr): New prototype.
              (gfc_get_character_expr): New prototype.
              (gfc_get_iokind_expr): New prototype.
              * expr.c (gfc_get_null_expr): New.
              (gfc_get_character_expr): New.
              (gfc_get_iokind_expr): New.
              (gfc_get_operator_expr): Moved here from matchexp.c (build_node).
              * matchexp.c (build_node): Renamed and moved to
              expr.c (gfc_get_operator_expr). Reordered arguments to match 
              other functions. Fixed all callers.
              (gfc_get_parentheses): Use specific function to build expr.
              * array.c (gfc_match_array_constructor): Likewise.
              * arith.c (eval_intrinsic): Likewise.
              (gfc_hollerith2int): Likewise.
              (gfc_hollerith2real): Likewise.
              (gfc_hollerith2complex): Likewise.
              (gfc_hollerith2logical): Likewise.
              * data.c (create_character_intializer): Likewise.
              * decl.c (gfc_match_null): Likewise.
              (enum_initializer): Likewise.
              * io.c (gfc_match_format): Likewise.
              (match_io): Likewise.
              * match.c (gfc_match_nullify): Likewise.
              * primary.c (match_string_constant): Likewise.
              (match_logical_constant): Likewise.
              (build_actual_constructor): Likewise.
              * resolve.c (build_default_init_expr): Likewise.
              * symbol.c (generate_isocbinding_symbol): Likewise.
              (gfc_build_class_symbol): Likewise.
              (gfc_find_derived_vtab): Likewise.
              * simplify.c (simplify_achar_char): Likewise.
              (gfc_simplify_adjustl): Likewise.
              (gfc_simplify_adjustr): Likewise.
              (gfc_simplify_and): Likewise.
              (gfc_simplify_bit_size): Likewise.
              (gfc_simplify_is_iostat_end): Likewise.
              (gfc_simplify_is_iostat_eor): Likewise.
              (gfc_simplify_isnan): Likewise.
              (simplify_bound): Likewise.
              (gfc_simplify_leadz): Likewise.
              (gfc_simplify_len_trim): Likewise.
              (gfc_simplify_logical): Likewise.
              (gfc_simplify_maxexponent): Likewise.
              (gfc_simplify_minexponent): Likewise.
              (gfc_simplify_new_line): Likewise.
              (gfc_simplify_null): Likewise.
              (gfc_simplify_or): Likewise.
              (gfc_simplify_precision): Likewise.
              (gfc_simplify_repeat): Likewise.
              (gfc_simplify_scan): Likewise.
              (gfc_simplify_size): Likewise.
              (gfc_simplify_trailz): Likewise.
              (gfc_simplify_trim): Likewise.
              (gfc_simplify_verify): Likewise.
              (gfc_simplify_xor): Likewise.
              * trans-io.c (build_dt): Likewise.
              (gfc_new_nml_name_expr): Removed.
      
      2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
      
      	* arith.h (gfc_constant_result): Removed prototype.
      	* constructor.h (gfc_build_array_expr): Removed prototype.
      	(gfc_build_structure_constructor_expr): Removed prototype.
      	* gfortran.h (gfc_int_expr): Removed prototype.
      	(gfc_logical_expr): Removed prototype.
      	(gfc_get_array_expr): New prototype.
      	(gfc_get_structure_constructor_expr): New prototype.
      	(gfc_get_constant_expr): New prototype.
      	(gfc_get_int_expr): New prototype.
      	(gfc_get_logical_expr): New prototype.
      	* arith.c (gfc_constant_result): Moved and renamed to
      	expr.c (gfc_get_constant_expr). Fixed all callers.
      	* constructor.c (gfc_build_array_expr): Moved and renamed to
      	expr.c (gfc_get_array_expr). Split gfc_typespec argument to type
      	and kind. Fixed all callers.
      	(gfc_build_structure_constructor_expr): Moved and renamed to
      	expr.c (gfc_get_structure_constructor_expr). Split gfc_typespec argument
      	to type and kind. Fixed all callers.
      	* expr.c (gfc_logical_expr): Renamed to ...
      	(gfc_get_logical_expr): ... this. Added kind argument. Fixed all callers.
      	(gfc_int_expr): Renamed to ...
      	(gfc_get_int_expr): ... this. Added kind and where arguments. Fixed all
      	callers.
      	(gfc_get_constant_expr): New.
      	(gfc_get_array_expr): New.
      	(gfc_get_structure_constructor_expr): New.
      	* simplify.c (int_expr_with_kind): Removed, callers use gfc_get_int_expr
      	instead.
      
      2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
      
      	* constructor.h: New.
      	* constructor.c: New.
      	* Make-lang.in: Add new files to F95_PARSER_OBJS.
      	* arith.c (reducy_unary): Use constructor API.
      	(reduce_binary_ac): Likewise.
      	(reduce_binary_ca): Likewise.
      	(reduce_binary_aa): Likewise.
      	* check.c (gfc_check_pack): Likewise.
      	(gfc_check_reshape): Likewise.
      	(gfc_check_unpack): Likewise.
      	* decl.c (add_init_expr_to_sym): Likewise.
      	(build_struct): Likewise.
      	* dependency.c (gfc_check_dependency): Likewise.
      	(contains_forall_index_p): Likewise.
      	* dump-parse-tree.c (show_constructor): Likewise.
      	* expr.c (free_expr0): Likewise.
      	(gfc_copy_expr): Likewise.
      	(gfc_is_constant_expr): Likewise.
      	(simplify_constructor): Likewise.
      	(find_array_element): Likewise.
      	(find_component_ref): Likewise.
      	(find_array_section): Likewise.
      	(find_substring_ref): Likewise.
      	(simplify_const_ref): Likewise.
      	(scalarize_intrinsic_call): Likewise.
      	(check_alloc_comp_init): Likewise.
      	(gfc_default_initializer): Likewise.
      	(gfc_traverse_expr): Likewise.
      	* iresolve.c (check_charlen_present): Likewise.
      	(gfc_resolve_reshape): Likewise.
      	(gfc_resolve_transfer): Likewise.
      	* module.c (mio_constructor): Likewise.
      	* primary.c (build_actual_constructor): Likewise.
      	(gfc_match_structure_constructor): Likewise.
      	* resolve.c (resolve_structure_cons): Likewise.
      	* simplify.c (is_constant_array_expr): Likewise.
      	(init_result_expr): Likewise.
      	(transformational_result): Likewise.
      	(simplify_transformation_to_scalar): Likewise.
      	(simplify_transformation_to_array): Likewise.
      	(gfc_simplify_dot_product): Likewise.
      	(simplify_bound): Likewise.
      	(simplify_matmul): Likewise.
      	(simplify_minval_maxval): Likewise.
      	(gfc_simplify_pack): Likewise.
      	(gfc_simplify_reshape): Likewise.
      	(gfc_simplify_shape): Likewise.
      	(gfc_simplify_spread): Likewise.
      	(gfc_simplify_transpose): Likewise.
      	(gfc_simplify_unpack): Likewise.q
      	(gfc_convert_constant): Likewise.
      	(gfc_convert_char_constant): Likewise.
      	* target-memory.c (size_array): Likewise.
      	(encode_array): Likewise.
      	(encode_derived): Likewise.
      	(interpret_array): Likewise.
      	(gfc_interpret_derived): Likewise.
      	(expr_to_char): Likewise.
      	(gfc_merge_initializers): Likewise.
      	* trans-array.c (gfc_get_array_constructor_size): Likewise.
      	(gfc_trans_array_constructor_value): Likewise.
      	(get_array_ctor_strlen): Likewise.
      	(gfc_constant_array_constructor_p): Likewise.
      	(gfc_build_constant_array_constructor): Likewise.
      	(gfc_trans_array_constructor): Likewise.
      	(gfc_conv_array_initializer): Likewise.
      	* trans-decl.c (check_constant_initializer): Likewise.
      	* trans-expr.c (flatten_array_ctors_without_strlen): Likewise.
      	(gfc_apply_interface_mapping_to_cons): Likewise.
      	(gfc_trans_structure_assign): Likewise.
      	(gfc_conv_structure): Likewise.
      	* array.c (check_duplicate_iterator): Likewise.
      	(match_array_list): Likewise.
      	(match_array_cons_element): Likewise.
      	(gfc_match_array_constructor): Likewise.
      	(check_constructor_type): Likewise.
      	(check_constructor): Likewise.
      	(expand): Likewise.
      	(expand_constructor): Likewise.
      	(extract_element): Likewise.
      	(gfc_expanded_ac): Likewise.
      	(resolve_array_list): Likewise.
      	(gfc_resolve_character_array_constructor): Likewise.
      	(copy_iterator): Renamed to ...
      	(gfc_copy_iterator): ... this.
      	(gfc_append_constructor): Removed.
      	(gfc_insert_constructor): Removed unused function.
      	(gfc_get_constructor): Removed.
      	(gfc_free_constructor): Removed.
      	(qgfc_copy_constructor): Removed.
      	* gfortran.h (struct gfc_expr): Removed member 'con_by_offset'.
      	Removed all references. Replaced constructor list by splay-tree.
      	(struct gfc_constructor): Removed member 'next', moved 'offset' from
      	the inner struct, added member 'base'.
      	(gfc_append_constructor): Removed prototype.
      	(gfc_insert_constructor): Removed prototype.
      	(gfc_get_constructor): Removed prototype.
      	(gfc_free_constructor): Removed prototype.
      	(qgfc_copy_constructor): Removed prototype.
      	(gfc_copy_iterator): New prototype.
      	* trans-array.h (gfc_constant_array_constructor_p): Adjusted prototype.
      
      From-SVN: r158253
      Jerry DeLisle committed
    • Daily bump. · 57408aaf
      From-SVN: r158252
      GCC Administrator committed
    • elf: Remove empty directory. · da125f6f
      2010-04-13  Matthias Klose  <doko@ubuntu.com>
      
              * elf: Remove empty directory.
      
      From-SVN: r158248
      Matthias Klose committed
  2. 12 Apr, 2010 22 commits
    • gcc.c (cc1_options): Handle -iplugindir before processing the cc1 spec. · 4adbd5dd
      gcc/
      
      2010-04-13  Matthias Klose  <doko@ubuntu.com>
      
      	* gcc.c (cc1_options): Handle -iplugindir before processing
      	the cc1 spec. Only add -iplugindir once.
      	(cpp_unique_options): Add -iplugindir option if -fplugin* options
      	found.
      	* common.opt (iplugindir): Remove `Separate' property, initialize.
      	* plugin.c (default_plugin_dir_name): Error with missing -iplugindir
      	option.
      	* Makefile.in (check-%, check-parallel-%): Create plugin dir.
      	(distclean): Remove plugin dir.
      
      2010-04-13  Basile Starynkevitch  <basile@starynkevitch.net>
      
      	* doc/plugins.texi (Loading Plugins): Document short
      	-fplugin=foo option.
      	(Plugin API): Mention default_plugin_dir_name function.
      
      	* gcc.c (find_file_spec_function): Add new declaration.
      	(static_spec_func): Use it for "find-file".
      	(find_file_spec_function): Add new function.
      	(cc1_options): Add -iplugindir option if -fplugin* options found.
      
      	* gcc-plugin.h (default_plugin_dir_name): Added new declaration.
      
      	* plugin.c (add_new_plugin): Updated comment, and handle short
      	plugin name.
      	(default_plugin_dir_name): Added new function.
      
      	* common.opt (iplugindir): New option to set the plugin
      	directory.
      
      gcc/testsuite/
      
      2010-04-13  Matthias Klose  <doko@ubuntu.com>
      
      	* gcc.dg/plugindir1.c: New testcase.
      	* gcc.dg/plugindir2.c: New testcase.
      	* gcc.dg/plugindir3.c: New testcase.
      	* gcc.dg/plugindir4.c: New testcase.
      
      From-SVN: r158247
      Matthias Klose committed
    • i386.md (any_rotate): New code iterator. · e0db9cc6
      	* config/i386/i386.md (any_rotate): New code iterator.
      	(rotate_insn): New code attribute.
      	(rotate): Ditto.
      	(SWIM124): New mode iterator.
      	(<rotate_insn>ti3): New expander.
      	(<rotate_insn>di3): Macroize expander from {rotl,rotr}di3 using
      	any_rotate code iterator.
      	(<rotate_insn><mode>3) Macroize expander from {rotl,rotr}{qi,hi,si}3
      	using any_rotate code iterator and SWIM124 mode iterator.
      	(ix86_rotlti3): New insn_and_split pattern.
      	(ix86_rotrti3): Ditto.
      	(ix86_rotl<dwi>3_doubleword): Macroize insn_and_split pattern from
      	ix86_rotl{di,ti}3 patterns.
      	(ix86_rotr<dwi>3_doubleword): Ditto from ix86_rotr{di,ti}3 patterns.
      	(*<rotate_insn><mode>3_1): Merge with *{rotl,rotr}{qi,hi,si}3_1_one_bit
      	and *{rotl,rotr}di3_1_one_bit_rex64. Macroize insn from
      	*{rotl,rotr}{qi,hi,si}3_1 and *{rotl,rotr}di3_1_rex64 using any_rotate
      	code iterator and SWI mode iterator.
      	(*<rotate_insn>si3_1_zext): Merge with *{rotl,rotr}si3_1_one_bit_zext.
      	Macroize insn from {rotl,rotr}si3_1_zext using any_rotate
      	code iterator.
      	(*<rotate_insn>qi3_1_slp): Merge with *{rotl,rotr}qi3_1_one_bit_slp.
      	Macroize insn from {rotl,rotr}qi3_1_slp using any_rotate code iterator.
      	(bswap rotatert splitter): Add splitter.
      	(bswap splitter): Macroize splitter using any_rotate code iterator.
      	Add insn predicate to split only for TARGET_USE_XCHGB or when
      	optimizing function for size.
      
      testsuite/ChangeLog:
      
      	* gcc.target/i386/rotate-2.c: New test.
      
      From-SVN: r158243
      Uros Bizjak committed
    • pa.c (emit_move_sequence): Remove use of deleted variable flag_argument_noalias. · 077c8ada
      2010-04-12  Steve Ellcey  <sje@cup.hp.com>
      
      	* config/pa/pa.c (emit_move_sequence): Remove use of
      	deleted variable flag_argument_noalias.
      
      From-SVN: r158242
      Steve Ellcey committed
    • re PR c++/43641 ([C++0x] internal compiler error: tree check: expected… · e62e4922
      re PR c++/43641 ([C++0x] internal compiler error: tree check: expected call_expr, have target_expr in maybe_add_lambda_conv_op)
      
      	PR c++/43641
      	* semantics.c (maybe_add_lambda_conv_op): Use build_call_a and tweak
      	return value directly.
      
      From-SVN: r158241
      Jason Merrill committed
    • re PR c++/25811 (No failure creating a POD containing a const member, using new… · 9d809e8f
      re PR c++/25811 (No failure creating a POD containing a const member, using new without a new-initializer.)
      
      	PR c++/25811
      	* cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Declare.
      	* init.c (build_new_1): Check for uninitialized const members and
      	uninitialized reference members, when using new without
      	new-initializer. Call diagnose_uninitialized_cst_or_ref_member.
      	(diagnose_uninitialized_cst_or_ref_member): Define, call
      	diagnose_uninitialized_cst_or_ref_member_1.
      	(diagnose_uninitialized_cst_or_ref_member_1): New function.
      
      From-SVN: r158239
      Fabien Chêne committed
    • config.gcc: Removed *-*-solaris2.7* from list of obsolete configurations. · c7392d11
      	gcc:
      	* config.gcc: Removed *-*-solaris2.7* from list of obsolete
      	configurations.
      	Add to unsupported targets list.
      	* configure.ac (gcc_cv_as_tls): Removed i[34567]86-*-solaris2.[567]*,
      	sparc*-sun-solaris2.[567]* from target lists.
      	* configure: Regenerate.
      	* doc/install.texi (Specific, *-*-solaris2*): Document Solaris 7
      	removal.
      	Remove Solaris 7 patch references.
      	(Specific, sparc-sun-solaris2.7): Removed.
      	(sparc-sun-solaris2*): Update Solaris 7 example.
      	(sparc64-*-solaris2*): Likewise.
      
      	gcc/testsuite:
      	* g++.dg/warn/miss-format-1.C: Removed *-*-solaris2.7 from
      	dg-error, dg-warning.
      	* gcc.dg/c99-stdint-6.c: Removed *-*-solaris2.7 from dg-options.
      
      	libstdc++-v3:
      	* configure.host (os_include_dir): Removed solaris2.7 support.
      	* crossconfig.m4 (GLIBCXX_CROSSCONFIG): Likewise.
      	* configure: Regenerate.
      
      From-SVN: r158236
      Rainer Orth committed
    • config.build (alpha*-dec-osf4*): Remove. · 8c200350
      	gcc:
      	* config.build (alpha*-dec-osf4*): Remove.
      	* config.gcc: Remove alpha*-dec-osf4*, alpha-dec-osf5.0* from list
      	of obsolete configurations.
      	(alpha*-dec-osf[45]*): Remove alpha*-dec-osf4*, alpha-dec-osf5.0*
      	support.
      	* config/alpha/t-osf4: Renamed to ...
      	* config/alpha/t-osf5: ... this.
      	* config/alpha/osf.h: Renamed to ...
      	* config/alpha/osf5.h: ... this.
      	Merged old osf5.h contents.
      	Update comments.
      	(ASM_SPEC): Use ASM_OLDAS_SPEC directly.
      	(EXTRA_SPECS): Removed.
      	* doc/install.texi (Specific, alpha*-dec-osf5.1): Renamed to
      	reflect removal of Tru64 UNIX V4.0/V5.0 support.
      	Document that.
      
      	fixincludes:
      	* inclhack.def (alpha_wchar): Remove.
      	* fixincl.x: Regenerate.
      	* tests/base/wchar.h: Remove.
      
      	libgcc:
      	* config.host (alpha*-dec-osf[45]*): Removed alpha*-dec-osf4*,
      	alpha-dec-osf5.0* support.
      
      From-SVN: r158235
      Rainer Orth committed
    • * doc/contrib.texi (Contributors, Rainer Orth): Update. · 887204da
      From-SVN: r158233
      Rainer Orth committed
    • i386.c (x86_this_parameter): Handle aggregate for __thiscall convention. · c1b8e139
      2010-04-12  Kai Tietz  <kai.tietz@onevision.com>
      
              PR/43702
              * config/i386/i386.c (x86_this_parameter): Handle aggregate for
              __thiscall convention.
      
      From-SVN: r158232
      Kai Tietz committed
    • pa.c (hppa_legitimize_address): Remove unused variable orig_base. · b38bccca
      2010-04-12  Steve Ellcey  <sje@cup.hp.com>
      
      	* config/pa/pa.c (hppa_legitimize_address): Remove unused variable
      	orig_base.
      	* config/pa/pa.md (call, call_value): Remove unused variable call_insn.
      
      From-SVN: r158230
      Steve Ellcey committed
    • function.c (assign_parms_initialize_all): Add unused attribute to fntype. · fc2f1f53
      2010-04-12  Steve Ellcey  <sje@cup.hp.com>
      
      	* function.c (assign_parms_initialize_all): Add unused attribute
      	to fntype.
      
      From-SVN: r158228
      Steve Ellcey committed
    • gsstruct.def (GSS_CALL): New. · 913a7b5a
      2010-04-12  Richard Guenther  <rguenther@suse.de>
      
      	* gsstruct.def (GSS_CALL): New.
      	* gimple.def (GIMPLE_CALL): Change to GSS_CALL.
      	* gimple.h: Include tree-ssa-alias.h.
      	(struct gimple_statement_call): New.
      	(union gimple_statement_struct_d): Add gimple_call member.
      	(gimple_call_reset_alias_info): Declare.
      	(gimple_call_use_set): New function.
      	(gimple_call_clobber_set): Likewise.
      	* Makefile.in (GIMPLE_H): Add tree-ssa-alias.h.
      	* gimple.c (gimple_call_reset_alias_info): New function.
      	(gimple_build_call_1): Call it.
      	* lto-streamer-in.c (input_gimple_stmt): Likewise.
      	* tree-inline.c (remap_gimple_stmt): Likewise.
      	(expand_call_inline): Remove callused handling.
      	* cfgexpand.c (update_alias_info_with_stack_vars): Likewise.
      	* tree-dfa.c (dump_variable): Likewise.
      	* tree-parloops.c (parallelize_loops): Likewise.
      	* tree-ssa.c (init_tree_ssa): Likewise.
      	(delete_tree_ssa): Likewise.
      	* tree-flow-inline.h (is_call_used): Remove.
      	* tree-flow.h (struct gimple_df): Remove callused member.
      	* tree-nrv.c (dest_safe_for_nrv_p): Adjust predicate.
      	* tree-ssa-alias.c (dump_alias_info): Remove callused handling.
      	(ref_maybe_used_by_call_p_1): Simplify.
      	(call_may_clobber_ref_p_1): Likewise.
      	* tree-ssa-structalias.c (compute_points_to_sets): Set
      	the call stmt used and clobbered sets.
      	* tree-tailcall.c (suitable_for_tail_opt_p): Adjust predicate.
      	(find_tail_calls): Verify the tail call.
      
      From-SVN: r158227
      Richard Biener committed
    • gsstruct.def (GSS_CALL): New. · d086d311
      2010-04-12  Richard Guenther  <rguenther@suse.de>
      
      	* gsstruct.def (GSS_CALL): New.
      	* gimple.def (GIMPLE_CALL): Change to GSS_CALL.
      	* gimple.h: Include tree-ssa-alias.h.
      	(struct gimple_statement_call): New.
      	(union gimple_statement_struct_d): Add gimple_call member.
      	(gimple_call_reset_alias_info): Declare.
      	(gimple_call_use_set): New function.
      	(gimple_call_clobber_set): Likewise.
      	* Makefile.in (GIMPLE_H): Add tree-ssa-alias.h.
      	* gimple.c (gimple_call_reset_alias_info): New function.
      	(gimple_build_call_1): Call it.
      	* lto-streamer-in.c (input_gimple_stmt): Likewise.
      	* tree-inline.c (remap_gimple_stmt): Likewise.
      	(expand_call_inline): Remove callused handling.
      	* cfgexpand.c (update_alias_info_with_stack_vars): Likewise.
      	* tree-dfa.c (dump_variable): Likewise.
      	* tree-parloops.c (parallelize_loops): Likewise.
      	* tree-ssa.c (init_tree_ssa): Likewise.
      	(delete_tree_ssa): Likewise.
      	* tree-flow-inline.h (is_call_used): Remove.
      	* tree-flow.h (struct gimple_df): Remove callused member.
      	* tree-nrv.c (dest_safe_for_nrv_p): Adjust predicate.
      	* tree-ssa-alias.c (dump_alias_info): Remove callused handling.
      	(ref_maybe_used_by_call_p_1): Simplify.
      	(call_may_clobber_ref_p_1): Likewise.
      	* tree-ssa-structalias.c (compute_points_to_sets): Set
      	the call stmt used and clobbered sets.
      	* tree-tailcall.c (suitable_for_tail_opt_p): Adjust predicate.
      	(find_tail_calls): Verify the tail call.
      
      From-SVN: r158226
      Richard Guenther committed
    • ipa.c (cgraph_postorder): Adjust postorder to guarantee single-iteration always-inline inlining. · af961c7f
      2010-04-12  Richard Guenther  <rguenther@suse.de>
      
      	* ipa.c (cgraph_postorder): Adjust postorder to guarantee
      	single-iteration always-inline inlining.
      	* ipa-inline.c (cgraph_mark_inline): Do not return anything.
      	(cgraph_decide_inlining): Do not handle always-inline
      	specially.
      	(try_inline): Remove always-inline cycle detection special case.
      	Do not recurse on always-inlines.
      	(cgraph_early_inlining): Do not iterate if not optimizing.
      	(cgraph_gate_early_inlining): remove.
      	(pass_early_inline): Run unconditionally.
      	(gate_cgraph_decide_inlining): New function.
      	(pass_ipa_inline): Use it.  Do not run the IPA inliner if
      	not inlining or optimizing.
      	(cgraph_decide_inlining_of_small_functions): Also consider
      	always-inline functions.
      	(cgraph_default_inline_p): Return true for nodes which should
      	disregard inline limits.
      	(estimate_function_body_sizes): Assume zero size and time for
      	nodes which are marked as disregarding inline limits.
      	(cgraph_decide_recursive_inlining): Do not perform recursive
      	inlining on always-inline nodes.
      
      	* gcc.dg/torture/inline-2.c: New testcase.
      
      From-SVN: r158225
      Richard Guenther committed
    • re PR bootstrap/43699 ("variable set but not used" error during bootstrap) · fa8351f8
      	PR bootstrap/43699
      	* c-typeck.c (c_process_expr_stmt): Call mark_exp_read even
      	for exprs satisfying handled_component_p.
      
      	* gcc.dg/Wunused-var-7.c: New test.
      
      From-SVN: r158224
      Jakub Jelinek committed
    • re PR tree-optimization/43560 (possible wrong code bug) · f101882a
      	PR tree-optimization/43560
      	* gcc.c-torture/execute/pr43560.c: New test.
      
      From-SVN: r158220
      Jakub Jelinek committed
    • expr.c (categorize_ctor_elements_1): Properly count sub-elements of non-constant… · 675c873b
      expr.c (categorize_ctor_elements_1): Properly count sub-elements of non-constant aggregate elements.
      
      	* expr.c (categorize_ctor_elements_1): Properly count sub-elements of
      	non-constant aggregate elements.
      
      	* gimplify.c (gimplify_init_constructor): Do not pre-evaluate if this
      	is a real initialization.
      
      From-SVN: r158219
      Eric Botcazou committed
    • re PR c++/43611 (ICE: SIGSEGV with -fipa-cp-clone -fkeep-inline-functions) · 3fc20697
      2010-04-12  Richard Guenther  <rguenther@suse.de>
      
      	PR c++/43611
      	* semantics.c (expand_or_defer_fn_1): Do not keep extern
      	template inline functions.
      
      	* g++.dg/torture/pr43611.C: New testcase.
      
      From-SVN: r158218
      Richard Guenther committed
    • trans.c (Identifier_to_gnu): Use boolean variable. · c34f3839
      	* gcc-interface/trans.c (Identifier_to_gnu): Use boolean variable.
      	(call_to_gnu): Test gigi's flag TYPE_BY_REFERENCE_P instead of calling
      	front-end's predicate Is_By_Reference_Type.  Use consistent order and
      	remove ??? comment.  Use original conversion in all cases, if any.
      	* gcc-interface/utils.c (make_dummy_type): Minor tweak.
      	(convert): Use local copy in more cases.
      	<INDIRECT_REF>: Remove deactivated code.
      	(unchecked_convert): Use a couple of local copies.
      
      From-SVN: r158216
      Eric Botcazou committed
    • re PR c/36774 (-Wmissing-prototypes triggers on nested functions) · c4712597
      gcc/
      2010-04-12  Shujing Zhao  <pearly.zhao@oracle.com>
      
              PR c/36774
              * c-decl.c (start_function): Move forward check for nested function.
      
      gcc/testsuite/
      2010-04-12  Shujing Zhao  <pearly.zhao@oracle.com>
      
              PR c/36774
              * gcc.dg/pr36774-1.c: New test.
              * gcc.dg/pr36774-2.c: New test.
      
      From-SVN: r158214
      Shujing Zhao committed
    • Daily bump. · fe5859f0
      From-SVN: r158212
      GCC Administrator committed
  3. 11 Apr, 2010 9 commits
    • sh-protos.h (sh_legitimize_reload_address): Declare. · 6f50eb9c
      	* config/sh/sh-protos.h (sh_legitimize_reload_address): Declare.
      	* config/sh/sh.c: Include reload.h.
      	(sh_legitimize_reload_address): New.
      	* config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Use
      	sh_legitimize_reload_address.
      
      From-SVN: r158208
      Kaz Kojima committed
    • sh.md (*movqi_pop): New insn pattern. · c11c09f9
      	* config/sh/sh.md (*movqi_pop): New insn pattern.
      	* config/sh/predicates.md (sh_no_delay_pop_operand): New predicate.
      	* gcc.target/sh/rte-delay-slot.c: New test.
      
      From-SVN: r158207
      Kaushik Phatak committed
    • i386.md (any_shiftrt): New code iterator. · d72ebc16
      	* config/i386/i386.md (any_shiftrt): New code iterator.
      	(shiftrt_insn): New code attribute.
      	(shiftrt): Ditto.
      	(<shiftrt_insn><mode>3): Macroize expander from ashr<mode>3 and
      	lshr<mode>3 using any_shiftrt code iterator.
      	(*<shiftrt_insn><mode>3_doubleword): Macroize insn_and_split from
      	*ashr<mode>3_doubleword and *lshr<mode>3_doubleword using
      	any_shiftrt code iterator.
      	(*<shiftrt_insn><mode>3_doubleword peephole2): Macroize peephole2
      	pattern from corresponding peephole2 patterns.
      	(*<shiftrt_insn><mode>3_1): Macroize insn from *ashr<mode>3_1
      	and *lshr<mode>3_1 using any_shiftrt code iterator.
      	(*<shiftrt_insn>si3_1_zext): Ditto from *ashrsi3_1_zext
      	and *lshrsi3_1_zext.
      	(*<shiftrt_insn>qi3_1_slp): Ditto from *ashrqi3_1_slp
      	and *lshrqi3_1_slp.
      	(*<shiftrt_insn><mode>3_cmp): Ditto from *ashr<mode>3_cmp
      	and *lshr<mode>3_cmp.
      	(*<shiftrt_insn><mode>3_cmp_zext): Ditto from *ashr<mode>3_cmp_zext
      	and *lshr<mode>3_cmp_zext.
      	(*<shiftrt_insn><mode>3_cconly): Ditto from *ashr<mode>3_cconly
      	and *lshr<mode>3_cconly.
      
      From-SVN: r158205
      Uros Bizjak committed
    • i386.md (*ashr<mode>3_cconly): Fix wrong mode of scratch register. · 59caab22
      	* config/i386/i386.md (*ashr<mode>3_cconly): Fix wrong mode of
      	scratch register.
      	(*lshr<mode>3_cconly): Ditto.
      
      From-SVN: r158204
      Uros Bizjak committed
    • i386.md (lshr<mode>3): Macroize expander from lshr{qi,hi,si,di,ti}3_1 using SDWIM mode iterator. · 9200ac72
      	* config/i386/i386.md (lshr<mode>3): Macroize expander from
      	lshr{qi,hi,si,di,ti}3_1 using SDWIM mode iterator.
      	(*lshr<mode>3_doubleword): New insn_and_split_pattern.  Macroize
      	pattern from *lshr{di,ti}3_1 and corresponding splitters using
      	DWI mode iterator.
      	(*lshr<mode>3_doubleword peephole2): Macroize peephole2 pattern
      	from corresponding peephole2 patterns.
      	(*lshr<mode>3_1): Merge with *lshr{qi,hi,si}3_1_one_bit and
      	*lshrdi3_1_one_bit_rex64. Macroize insn from *lshr{qi,hi,si}3_cmp
      	and *lshrdi3_cmp_rex64 using SWI mode iterator.
      	(*lshrqi3_1_slp): Merge with *lshrqi3_1_one_bit_slp.
      	(*lshr<mode>3_cmp): Merge with *lshr{qi,hi,si}3_one_bit_cmp and
      	*lshrdi3_one_bit_cmp_rex64. Macroize insn from *lshr{qi,hi,si}3_cmp
      	and *lshrdi3_cmp_rex64 using SWI mode iterator.
      	(*lshrsi3_cmp_zext): Merge with *lshrsi3_cmp_one_bit_zext.
      	(*lshr<mode>3_cconly): Merge with *lshr{qi,hi,si}3_one_bit_cconly and
      	*lshrdi3_one_bit_cconly_rex64. Macroize insn from
      	*lshr{qi,hi,si}3_cconly and *lshrdi3_cconly_rex64 using
      	SWI mode iterator.
      
      From-SVN: r158203
      Uros Bizjak committed
    • trans.c (lvalue_required_for_attribute_p): New static function. · 3cd64bab
      	* gcc-interface/trans.c (lvalue_required_for_attribute_p): New static
      	function.
      	(lvalue_required_p) <N_Attribute_Reference>: Call it.
      	(gnat_to_gnu) <N_Selected_Component>: Prevent build_component_ref from
      	folding the result only if lvalue_required_for_attribute_p is true.
      	* gcc-interface/utils.c (maybe_unconstrained_array): Pass correctly
      	typed constant to build_component_ref.
      	(unchecked_convert): Likewise.
      	* gcc-interface/utils2.c (maybe_wrap_malloc): Likewise.
      	(build_allocator): Likewise.
      
      From-SVN: r158202
      Eric Botcazou committed
    • utils2.c (build_cond_expr): Take the address and dereference if the result type… · 87fa3d34
      utils2.c (build_cond_expr): Take the address and dereference if the result type is passed by reference.
      
      	* gcc-interface/utils2.c (build_cond_expr): Take the address and
      	dereference if the result type is passed by reference.
      
      From-SVN: r158201
      Eric Botcazou committed
    • trans.c (Case_Statement_to_gnu): Bool-ify variable. · 9c69c3af
      	* gcc-interface/trans.c (Case_Statement_to_gnu): Bool-ify variable.
      	(gnat_to_gnu) <N_Null_Statement>: When not optimizing, generate a
      	goto to the next statement.
      
      From-SVN: r158200
      Eric Botcazou committed
    • Daily bump. · c460cd49
      From-SVN: r158199
      GCC Administrator committed
  4. 10 Apr, 2010 1 commit
    • i386.md (ashr<mode>3): Macroize expander from ashr{qi,hi,si,di,ti}3_1 using SDWIM mode iterator. · 27431d88
      	* config/i386/i386.md (ashr<mode>3): Macroize expander from
      	ashr{qi,hi,si,di,ti}3_1 using SDWIM mode iterator.
      	(*ashr<mode>3_doubleword): New insn_and_split_pattern.  Macroize
      	pattern from *ashr{di,ti}3_1 and corresponding splitters using
      	DWI mode iterator.
      	(*ashr<mode>3_doubleword peephole2): Macroize peephole2 pattern
      	from corresponding peephole2 patterns.
      	(ashrdi3_cvt): Rename from ashrdi3_63_rex64.
      	(ashrsi3_cvt): Rename from ashrsi3_31.
      	(*ashrsi3_cvt_zext): Rename from *ashrsi3_31_zext.
      	(x86_shift<mode>_adj_3): Macroize expander from x86_shift_adj_3
      	and x86_64_shift_adj_3 using SWI48 mode iterator.
      	(*ashr<mode>3_1): Merge with *ashr{qi,hi,si}3_1_one_bit and
      	*ashrdi3_1_one_bit_rex64. Macroize insn from *ashr{qi,hi,si}3_cmp
      	and *ashrdi3_cmp_rex64 using SWI mode iterator.
      	(*ashrqi3_1_slp): Merge with *ashrqi3_1_one_bit_slp.
      	(*ashr<mode>3_cmp): Merge with *ashr{qi,hi,si}3_one_bit_cmp and
      	*ashrdi3_one_bit_cmp_rex64. Macroize insn from *ashr{qi,hi,si}3_cmp
      	and *ashrdi3_cmp_rex64 using SWI mode iterator.
      	(*ashrsi3_cmp_zext): Merge with *ashrsi3_cmp_one_bit_zext.
      	(*ashr<mode>3_cconly): Merge with *ashr{qi,hi,si}3_one_bit_cconly and
      	*ashrdi3_one_bit_cconly_rex64. Macroize insn from
      	*ashr{qi,hi,si}3_cconly and *ashrdi3_cconly_rex64 using
      	SWI mode iterator.
      	(sign_extend splitters): Update for renamed ashr{di,si}3_patterns.
      	* config/i386/i386.c (ix86_split_ashr): Update for renamed
      	x86_shift<mode>_adj_3 expander.
      
      From-SVN: r158195
      Uros Bizjak committed