1. 12 Mar, 2018 4 commits
  2. 11 Mar, 2018 10 commits
    • re PR fortran/84546 (Bad sourced allocation of CLASS(*) with source with CLASS(*) component) · 26219cee
      2018-03-11  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/84546
      	* trans-array.c (structure_alloc_comps): Make sure that the
      	vptr is copied and that the unlimited polymorphic _len is used
      	to compute the size to be allocated.
      	* trans-expr.c (gfc_get_class_array_ref): If unlimited, use the
      	unlimited polymorphic _len for the offset to the element.
      	(gfc_copy_class_to_class): Set the new 'unlimited' argument.
      	* trans.h : Add the boolean 'unlimited' to the prototype.
      
      2018-03-11  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/84546
      	* gfortran.dg/unlimited_polymorphic_29.f90 : New test.
      
      From-SVN: r258438
      Paul Thomas committed
    • re PR fortran/83939 (Constraint C1290 (elemental function cannot be allocatable) not enforced) · 1813c97a
      2018-03-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/83939
      	* resolve.c (resolve_fl_procedure): Enforce F2018:C15100.
      
      2018-03-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/83939
      	* gfortran.dg/pr83939.f90
      
      From-SVN: r258437
      Steven G. Kargl committed
    • check.c (gfc_check_kill): Check pid and sig are scalar. · fbe1f017
      2018-03-11  Steven G. Kargl  <kargls@gcc.gnu.org>
      
      	* check.c (gfc_check_kill):  Check pid and sig are scalar.
      	(gfc_check_kill_sub): Restrict kind to 4 and 8.
      	* intrinsic.c (add_function): Sort keyword list.  Add pid and sig
      	keywords for KILL.  Remove redundant *back="back" in favor of the
      	original *bck="back".
      	(add_subroutines): Sort keyword list.  Add pid and sig keywords
      	for KILL.
      	* intrinsic.texi: Fix documentation to consistently use pid and sig.
      	* iresolve.c (gfc_resolve_kill): Kind can only be 4 or 8.  Choose the
      	correct function.
      	(gfc_resolve_rename_sub): Add comment.
      
      From-SVN: r258436
      Steven G. Kargl committed
    • re PR fortran/66128 (ICE for some intrinsics with zero sized array parameter) · 6f76317a
      2018-03-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/66128
      	* simplify.c (simplify_transformation): Return default result for
      	empty array argument.
      	(gfc_simplify_all): Remove special-case handling for zerosize.
      	(gfc_simplify_any): Likewise.
      	(gfc_simplify_count): Likewise.
      	(gfc_simplify_iall): Likewise.
      	(gfc_simplify_iany): Likewise.
      	(gfc_simplify_iparity): Likewise.
      	(gfc_simplify_minval): Likewise.
      	(gfc_simplify_maxval): Likewise.
      	(gfc_simplify_norm2): Likewise.
      	(gfc_simplify_product): Likewise.
      	(gfc_simplify_sum): Likewise.
      
      2018-03-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/66128
      	* gfortran.dg/zero_sized_9.f90: New test.
      
      From-SVN: r258435
      Thomas Koenig committed
    • re PR debug/58150 (debug info about definition of enum class not emitted if the… · cd5437ab
      re PR debug/58150 (debug info about definition of enum class not emitted if the declaration was already used in a class)
      
      	PR debug/58150
      	* dwarf2out.c (gen_enumeration_type_die): Don't guard adding
      	DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
      	but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
      	a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
      	addition of most attributes on !orig_type_die or the attribute not
      	being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
      
      	* g++.dg/debug/dwarf2/enum2.C: New test.
      
      From-SVN: r258434
      Jakub Jelinek committed
    • [NDS32] Add new option -mvh. · ff77f6e8
      gcc/
      	* config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
      	__NDS32_VH__ macro.
      	* config/nds32/nds32.opt (mvh): New option.
      
      Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
      
      From-SVN: r258427
      Kito Cheng committed
    • [NDS32] Add new function nds32_cpu_cpp_builtins and use it for TARGET_CPU_CPP_BUILTINS. · 72b7e5e1
      gcc/
      	* config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
      	function.
      	* config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
      	* config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
      	definition.
      
      Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
      
      From-SVN: r258426
      Kito Cheng committed
    • [NDS32] Implement strlensi pattern. · 483c57af
      gcc/
      	* config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
      	function.
      	* config/nds32/nds32-multiple.md (strlensi): New pattern.
      	* config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
      
      Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
      
      From-SVN: r258425
      Kito Cheng committed
    • [NDS32] Add intrinsic function for ffb, ffmism and flmism. · 3999578c
      gcc/
      	* config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
      	UNSPEC_FFMISM and UNSPEC_FLMISM.
      	* config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
      	for ffb, ffmism and flmism.
      	* config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
      	(unspec_ffmism): Ditto.
      	(unspec_flmism): Ditto.
      	(nds32_expand_builtin_impl): Check if string extension is available.
      	* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
      	NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
      
      Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
      Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>
      
      From-SVN: r258424
      Monk Chiang committed
    • Daily bump. · d8c12d24
      From-SVN: r258423
      GCC Administrator committed
  3. 10 Mar, 2018 9 commits
    • re PR fortran/84734 (Compiling codes with insane array dimensions gives an ICE after r257971) · 7d2fb01c
      2018-03-09  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/84734
      	* arith.c (check_result, eval_intrinsic):  If result overflows, pass
      	the expression up the chain instead of a NULL pointer.
      
      2018-03-09  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/84734
      	* gfortran.dg/pr84734.f90: New test.
      
      From-SVN: r258416
      Steven G. Kargl committed
    • revert: re PR target/83712 ("Unable to find a register to spill" when compiling for thumb1) · b3231b65
      2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
      
      	Reverting patch:
      	2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR target/83712
      	* lra-assigns.c (assign_by_spills): Return a flag of reload
      	assignment failure.  Do not process the reload assignment
      	failures.  Do not spill other reload pseudos if they has the same
      	reg class.
      	(lra_assign): Add a return arg.  Set up from the result of
      	assign_by_spills call.
      	(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
      	* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
      	usage_insns if it is not NULL.
      	(spill_hard_reg_in_range): New function.
      	(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
      	* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
      	function prototypes.
      	(lra_assign): Change prototype.
      	* lra.c (lra): Add code to deal with fails by splitting hard reg
      	live ranges.
      
      From-SVN: r258415
      Vladimir Makarov committed
    • i386: Fix a typo: Enforcment -> Enforcement · 90984fe2
      	PR target/84807
      	* config/i386/i386.opt: Replace Enforcment with Enforcement.
      
      From-SVN: r258414
      H.J. Lu committed
    • trans.c (node_has_volatile_full_access): Consider only entities for objects. · f1bc6414
      	* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
      	Consider only entities for objects.
      
      From-SVN: r258412
      Eric Botcazou committed
    • [IEPM] [PR debug/84620] use constant form for DW_AT_GNU_entry_view · 7b602c4d
      When outputting entry views in symbolic mode, we used to use a lbl_id,
      but that outputs the view as an addr, perhaps even in an indirect one,
      which is all excessive and undesirable for a small assembler-computed
      constant.
      
      Introduce a new value class for symbolic views, so that we can output
      the labels as constant data, using as narrow forms as possible, but
      wide enough for any symbolic views output in the compilation.  We
      don't know exactly where the assembler will reset views, but we count
      the symbolic views since known reset points and use that as an upper
      bound for view numbers.
      
      Ideally, we'd use uleb128, but then the compiler would have to defer
      .debug_info offset computation to the assembler.  I'm not going there
      for now, so a symbolic uleb128 assembler constant in an attribute is
      not something GCC can deal with ATM.
      
      for  gcc/ChangeLog
      
      	PR debug/84620
      	* dwarf2out.h (dw_val_class): Add dw_val_class_symview.
      	(dw_val_node): Add val_symbolic_view.
      	* dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
      	(symview_upper_bound): New.
      	(new_line_info_table): Initialize symviews_since_reset.
      	(dwarf2out_source_line): Count symviews_since_reset and set
      	symview_upper_bound.
      	(dw_val_equal_p): Handle symview.
      	(add_AT_symview): New.
      	(print_dw_val): Handle symview.
      	(attr_checksum, attr_checksum_ordered): Likewise.
      	(same_dw_val_p, size_of_die): Likewise.
      	(value_format, output_die): Likewise.
      	(add_high_low_attributes): Use add_AT_symview for entry_view.
      	(dwarf2out_finish): Reset symview_upper_bound, clear
      	zero_view_p.
      
      From-SVN: r258411
      Alexandre Oliva committed
    • PR c++/84770 - ICE with typedef and parameter pack. · 7ed12599
      	* pt.c (verify_unstripped_args_1): Split out from
      	verify_unstripped_args.
      
      From-SVN: r258408
      Jason Merrill committed
    • PR c++/84785 - ICE with alias template and default targs. · 732a431d
      	* pt.c (type_unification_real): Set processing_template_decl if
      	saw_undeduced == 1.
      
      From-SVN: r258407
      Jason Merrill committed
    • PR c++/84752 - ICE with capture of constexpr array. · 3569f81f
      	* call.c (standard_conversion): Set rvaluedness_matches_p on the
      	identity conversion under ck_lvalue.
      
      From-SVN: r258406
      Jason Merrill committed
    • Daily bump. · a72e8ba8
      From-SVN: r258405
      GCC Administrator committed
  4. 09 Mar, 2018 17 commits
    • 2018-03-09 Paolo Carlini <paolo.carlini@oracle.com> · 79228fd2
      	* Fix wrong date in ChangeLog entry.
      
      From-SVN: r258402
      Paolo Carlini committed
    • re PR c++/71169 (ICE on invalid C++ code in pop_nested_class (cp/class.c:7785)) · be977d08
      /cp
      2018-03-09  Jason Merrill  <jason@redhat.com>
      	    Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/71169
      	PR c++/71832
      	* pt.c (any_erroneous_template_args_p): New.
      	* cp-tree.h (any_erroneous_template_args_p): Declare it.
      	* parser.c (cp_parser_class_specifier_1): Use it.
      
      /testsuite
      2018-03-09  Jason Merrill  <jason@redhat.com>
      	    Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/71169
      	PR c++/71832
      	* g++.dg/cpp0x/pr71169.C: New.
      	* g++.dg/cpp0x/pr71169-2.C: Likewise.
      	* g++.dg/cpp0x/pr71832.C: Likewise.
      
      Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>
      
      From-SVN: r258401
      Jason Merrill committed
    • re PR target/83969 (ICE in final_scan_insn, at final.c:2997 (error: could not… · 00d7fc28
      re PR target/83969 (ICE in final_scan_insn, at final.c:2997 (error: could not split insn) for powerpc targets)
      
      gcc/
      	PR target/83969
      	* config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
      	Add strict argument and use it.
      	(rs6000_split_multireg_move): Update for new strict argument.
      	(mem_operand_gpr): Disallow all non-offsettable addresses.
      	* config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
      
      gcc/testsuite/
      	PR target/83969
      	* gcc.target/powerpc/pr83969.c: New test.
      
      From-SVN: r258400
      Peter Bergner committed
    • re PR target/84772 (powerpc-spe: Spurious "is used uninitialized" warning, or… · 2956d3a8
      re PR target/84772 (powerpc-spe: Spurious "is used uninitialized" warning, or possibly incorrect codegen for va_arg(long double))
      
      	PR target/84772
      	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
      	temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
      	* config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
      
      	* gcc.dg/pr84772.c: New test.
      
      From-SVN: r258399
      Jakub Jelinek committed
    • PR c++/84726 - unnecessary capture of constant vars. · 1577f10a
      	* cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
      	(LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
      	* expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
      	* lambda.c (is_constant_capture_proxy)
      	(current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
      	(prune_lambda_captures): New.
      	(finish_lambda_function): Call prune_lambda_captures.
      
      From-SVN: r258398
      Jason Merrill committed
    • re PR c++/84076 (Warning about objects through POD mistakenly claims the object is a pointer) · 5f2440b0
      	PR c++/84076
      	* call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
      	build ADDR_EXPR with REFERENCE_TYPE.
      	(build_over_call): For purposes of check_function_arguments, if
      	argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
      	its operand rather than the argument itself.
      
      	* g++.dg/warn/Wformat-2.C: New test.
      
      From-SVN: r258397
      Jason Merrill committed
    • re PR c++/84767 (ICE with pointer to VLA) · 9d9a9a90
      	PR c++/84767
      	* tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
      	decl, use remap_type if we want to use the type.
      
      	* g++.dg/ext/vla18.C: New test.
      
      From-SVN: r258395
      Jakub Jelinek committed
    • re PR tree-optimization/84526 (ICE in generic_overlap at… · 8286793a
      re PR tree-optimization/84526 (ICE in generic_overlap at gcc/gimple-ssa-warn-restrict.c:927 since r257860)
      
      gcc/ChangeLog:
      
      	PR tree-optimization/84526
      	* gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
      	Remove dead code.
      	(builtin_access::generic_overlap): Be prepared to handle non-array
      	base objects.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/84526
      	* gcc.dg/Wrestrict-10.c: New test.
      	* gcc.dg/Wrestrict-11.c: New test.
      
      From-SVN: r258394
      Martin Sebor committed
    • re PR rtl-optimization/84682 (internal compiler error: Segmentation fault (process_address_1)) · 998fd141
      	PR rtl-optimization/84682
      	* lra-constraints.c (process_address_1): Check is_address flag
      	for address constraints.
      	(process_alt_operands): Likewise.
      	* lra.c (lra_set_insn_recog_data): Pass asm operand locs to
      	preprocess_constraints.
      	* recog.h (preprocess_constraints): Add oploc parameter.
      	Adjust callers.
      
      	PR rtl-optimization/84682
      	* gcc.dg/torture/pr84682-1.c: New.
      	* gcc.dg/torture/pr84682-2.c: New.
      	* gcc.dg/torture/pr84682-3.c: New.
      
      From-SVN: r258393
      Alexandre Oliva committed
    • commit ce28919112dbb234366816ab39ce060ad45e8ca9 · 300e61fa
          Makefile: add internal/trace to noinst_DATA
          
          The internal/trace package is only imported by tests (specifically the
          tests in runtime/trace) so it must be in noinst_DATA to ensure that it
          is built before running the tests.
          
          This was mostly working because internal/trace has tests itself, and
          is listed in check-packages.txt before runtime/trace, so typical
          invocations of make would build internal/trace for checking purposes
          before checking runtime/trace.  But we need this change to make that
          reliable.
          
          Reviewed-on: https://go-review.googlesource.com/99836
      
      From-SVN: r258392
      Ian Lance Taylor committed
    • re PR c++/84724 (internal compiler error: in single_succ_edge, at… · 060ad852
      re PR c++/84724 (internal compiler error: in single_succ_edge, at basic-block.h:339 with a declaration of __builtin_trap)
      
      	PR c++/84724
      	* decl.c (duplicate_decls): Don't override __* prefixed builtins
      	except for __[^b]*_chk, instead issue permerror and for -fpermissive
      	also a note and return olddecl.
      
      	* g++.dg/ext/pr84724.C: New test.
      
      From-SVN: r258391
      Jakub Jelinek committed
    • re PR target/83712 ("Unable to find a register to spill" when compiling for thumb1) · e0cd6bc0
      2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR target/83712
      	* lra-assigns.c (assign_by_spills): Return a flag of reload
      	assignment failure.  Do not process the reload assignment
      	failures.  Do not spill other reload pseudos if they has the same
      	reg class.
      	(lra_assign): Add a return arg.  Set up from the result of
      	assign_by_spills call.
      	(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
      	* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
      	usage_insns if it is not NULL.
      	(spill_hard_reg_in_range): New function.
      	(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
      	* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
      	function prototypes.
      	(lra_assign): Change prototype.
      	* lra.c (lra): Add code to deal with fails by splitting hard reg
      	live ranges.
      
      2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR target/83712
      	* gcc.target/arm/pr83712.c: New.
      
      From-SVN: r258390
      Vladimir Makarov committed
    • [arm] PR target/83193: Do not print arch/cpu hints twice on invalid -march/-mcpu · a4017ff7
      Currently when handling an invalid -march or -mcpu option on a toolchain without an explicit --with-mode configuration
      and compiling without an explicit -mthumb or -marm the arm specs end up calling arm_target_thumb_only to determine
      the "thumbness" of the target, which involves parsing the architecture or cpu name. But the functions doing that
      parsing also emit error messages and hints on invalid arguments. Later when we parse the architecture or cpu string to
      as part of the canonicalisation process (arm_canon_arch_option) we end up emitting the errors again.
      
      The solution in this patch is to silence the errors during the arm_target_thumb_only processing so that they are not emitted
      twice. arm_canon_arch_option is guaranteed to run as well, so it can emit the errors and hints that it needs.
      
      Bootstrapped and tested on arm-none-linux-gnueabihf.
      
      Checked that we emit the arch/cpu hints for invalid -march/-mcpu options only once when no "thumbness" options were specified
      during configuration or invocation.
      
      	PR target/83193
      	* common/config/arm/arm-common.c (arm_parse_arch_option_name):
      	Accept complain bool parameter.  Only emit errors if it is true.
      	(arm_parse_cpu_option_name): Likewise.
      	(arm_target_thumb_only): Adjust callers of the above.
      	* config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
      	prototype to take a default true bool parameter.
      	(arm_parse_arch_option_name): Likewise.
      
      From-SVN: r258389
      Kyrylo Tkachov committed
    • jit: use 'configure' to replace hard-coded linker options (PR jit/64089 and PR jit/84288) · deb3da39
      gcc/ChangeLog:
      	PR jit/64089
      	PR jit/84288
      	* Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
      	* configure: Regenerate.
      	* configure.ac ("linker --version-script option"): New.
      	("linker soname option"): New.
      
      gcc/jit/ChangeLog:
      	PR jit/64089
      	PR jit/84288
      	* Make-lang.in (COMMA): New.
      	(LIBGCCJIT_VERSION_SCRIPT_OPTION): New.
      	(LIBGCCJIT_SONAME_OPTION): New.
      	(jit): Move --version-script and -soname linker options to the
      	above.
      
      
      Co-Authored-By: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
      
      From-SVN: r258388
      David Malcolm committed
    • re PR tree-optimization/84775 (ICE on valid code at -O3: in… · 20003c3c
      re PR tree-optimization/84775 (ICE on valid code at -O3: in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709)
      
      2018-03-09  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/84775
      	* tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
      	immediate uses of predicate stmts and mark them modified.
      
      	Revert
      	PR tree-optimization/84178
      	* tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
      	to caller.
      	(version_loop_for_if_conversion): Delay update_ssa call.
      	(tree_if_conversion): Delay update_ssa until after predicate
      	insertion.
      
      	* gcc.dg/torture/pr84775.c: New testcase.
      
      From-SVN: r258387
      Richard Biener committed
    • S/390: libatomic: Fix 16 byte atomic exchange · a4c6bd08
      The compiler builtin will use the hardware instruction cdsg if the
      memory operand is properly aligned and will fall back to the
      library call otherwise.
      In case the compiler for one part is able to detect that the
      location is aligned and fails to do so for another usage of the hw
      instruction and the sw fall back would be mixed on the same memory
      location.  To avoid this the library fall back also has to use the
      hardware instruction if possible.
      
      libatomic/ChangeLog:
      
      2018-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/exch_n.c: New file.
      	* configure.tgt: Add the config directory for s390.
      
      From-SVN: r258384
      Andreas Krebbel committed
    • [PR c++/84733] ICE in check-local-shadow · d04e6ed5
      https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00425.html
      	PR c++/84733
      	* name-lookup.c (do_pushdecl_with_scope): Only clear
      	current_function_decl when pushing a non-class (i.e. namespace)
      	scope.
      
      From-SVN: r258383
      Nathan Sidwell committed