- 02 Sep, 2011 6 commits
-
-
2011-09-02 Bob Duff <duff@adacore.com> * einfo.adb: (Has_Xref_Entry): Do not call Implementation_Base_Type. Lib.Xref has been rewritten to avoid the need for it, and it was costly. * s-htable.ads,s-htable.adb: (Present,Set_If_Not_Present): New functions in support of efficient xref. * lib-xref-alfa.adb: Misc changes related to Key component of type Xref_Entry. * lib-xref.adb: (Add_Entry,etc): Speed improvement. (New_Entry): Call Implementation_Base_Type, because Has_Xref_Entry no longer does. This is the one place where it is needed. 2011-09-02 Johannes Kanig <kanig@adacore.com> * g-comlin.adb (Getopt): New optional argument Concatenate to have similar interface as the other Getopt function. 2011-09-02 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch4.adb: (Expand_Allocator_Expression): Do not generate a call to Set_Finalize_Address if there is no allocator available. * exp_util.adb: (Build_Allocate_Deallocate_Proc): Account for a case of allocator expansion where the allocator is not expanded but needs a custom allocate routine. Code reformatting. (Is_Finalizable_Transient): Remove local variables Has_Rens and Ren_Obj. Code reformatting. (Is_Renamed): Renamed to Is_Aliased. Add code to detect aliasing through the use of 'reference. * sem_ch4.adb: (Analyze_Allocator): Detect allocators generated as part of build-in-place expansion. They are intentionally marked as coming from source, but their parents are not. From-SVN: r178436
Arnaud Charlet committed -
2011-09-02 Ed Schonberg <schonberg@adacore.com> * sem_ch10.adb (Analyze_With_Clause): If the library unit is the generated subprogram declaration for a child unit body that acts as spec, use the original body in the with_clause, to prevent binding errors. 2011-09-02 Vincent Celier <celier@adacore.com> * gnat_ugn.texi: Adapt documentation of -gnateInnn to new VMS qualifier /MULTI_UNIT_INDEX= 2011-09-02 Johannes Kanig <kanig@adacore.com> * g-comlin.adb (Getopt): Return when switch is dealt with automatically, instead of calling the callback function From-SVN: r178435
Arnaud Charlet committed -
2011-09-02 Vincent Celier <celier@adacore.com> * prj-nmsc.adb: (Find_Sources): When the list of sources is explicitly declared in an extending project, do not warn if a source for an inherited naming exception is not found. 2011-09-02 Gary Dismukes <dismukes@adacore.com> * exp_ch6.adb: (Is_Build_In_Place_Function_Call): Return False if expansion is inactive. 2011-09-02 Ed Schonberg <schonberg@adacore.com> * sem_util.adb (Note_Possible_Modification): If the entity being modified is the renaming generated for an Ada2012 iterator element, the enclosing container or array is modified as well. From-SVN: r178434
Robert Dewar committed -
2011-09-02 Vincent Celier <celier@adacore.com> * prj-nmsc.adb: (Find_Sources): When the list of sources is explicitly declared in an extending project, do not warn if a source for an inherited naming exception is not found. 2011-09-02 Gary Dismukes <dismukes@adacore.com> * exp_ch6.adb: (Is_Build_In_Place_Function_Call): Return False if expansion is inactive. 2011-09-02 Ed Schonberg <schonberg@adacore.com> * sem_util.adb (Note_Possible_Modification): If the entity being modified is the renaming generated for an Ada2012 iterator element, the enclosing container or array is modified as well. From-SVN: r178433
Arnaud Charlet committed -
2011-09-02 Jose Ruiz <ruiz@adacore.com> * s-taprop-linux.adb (Initialize_Lock, Initialize_TCB, Initialize): Define and initialize the mutex attributes and condition variable attributes locally. 2011-09-02 Vincent Celier <celier@adacore.com> * prj-nmsc.adb (Check_File): Mark as Locally_Removed a naming exception replaced in an extending project. (Check_Object): No error when the other source is locally removed. 2011-09-02 Yannick Moy <moy@adacore.com> * exp_ch6.adb (Is_Build_In_Place_Function_Call): in Alfa mode, allow unresolved calls. From-SVN: r178432
Arnaud Charlet committed -
From-SVN: r178431
GCC Administrator committed
-
- 01 Sep, 2011 28 commits
-
-
2011-09-01 Thomas Koenig <tkoenig@gcc.gnu.org> * generated/bessel_r4.c: Regenerated. * generated/bessel_r8.c: Regenerated. * generated/bessel_r10.c: Regenerated. * generated/bessel_r16.c: Regenerated. From-SVN: r178425
Thomas Koenig committed -
hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)): Remove noexcept, the move constructor allocates memory... 2011-09-01 Paolo Carlini <paolo.carlini@oracle.com> * include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)): Remove noexcept, the move constructor allocates memory; rearrange the code in the body to consistently update __ht._M_rehash_policy before using _M_next_bkt on it. * include/debug/unordered_map: Adjust. * include/debug/unordered_set: Likewise. * include/profile/unordered_map: Likewise. * include/profile/unordered_set: Likewise. * testsuite/23_containers/unordered_map/cons/ noexcept_move_construct.cc: Remove. * testsuite/23_containers/unordered_set/cons/ noexcept_move_construct.cc: Likewise. * testsuite/23_containers/unordered_multimap/cons/ noexcept_move_construct.cc: Likewise. * testsuite/23_containers/unordered_multiset/cons/ noexcept_move_construct.cc: Likewise. From-SVN: r178423
Paolo Carlini committed -
* gcc-interface/Makefile.in: Clean up handling of x86 and x86-64 run-time files. * gcc-interface/Make-lang.in: Update dependencies. From-SVN: r178421
Arnaud Charlet committed -
From-SVN: r178420
Arnaud Charlet committed -
From-SVN: r178419
Arnaud Charlet committed -
2011-09-01 Robert Dewar <dewar@adacore.com> * sem_ch3.adb, s-taprop-linux.adb, gnatls.adb: Minor reformatting. 2011-09-01 Jose Ruiz <ruiz@adacore.com> * adaint.h (__gnat_cpu_free): Fix the name of this profile. * adaint.c (__gnat_cpu_alloc, __gnat_cpu_alloc_size, __gnat_cpu_free, __gnat_cpu_zero, __gnat_cpu_set): Create version of these subprograms specific for systems where their glibc version does not define the routines to handle dynamically allocated CPU sets. 2011-09-01 Vincent Celier <celier@adacore.com> * prj-proc.adb, prj.ads, prj-nmsc.adb, prj-util.adb, prj-util.ads, prj-env.adb: Implement inheritance of naming exceptions in extending projects. From-SVN: r178418
Arnaud Charlet committed -
2011-09-01 Romain Berrendonner <berrendo@adacore.com> * gnatls.adb: Display simple message instead of content of gnatlic.adl. 2011-09-01 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch3.adb: (Build_Derived_Record_Type) Remove the kludgy update of access discriminant and anonymous access component scopes. (Inherit_Component): Reuse the itype of an access discriminant or anonymous access component by copying it in order to set the proper scope. This is done only when the parent and the derived type are in different scopes. (Set_Anonymous_Etype): New routine. 2011-09-01 Robert Dewar <dewar@adacore.com> * a-convec.adb: Minor reformatting throughout. From-SVN: r178417
Arnaud Charlet committed -
2011-09-01 Jose Ruiz <ruiz@adacore.com> * adaint.c, adaint.h (__gnat_cpu_alloc, __gnat_cpu_alloc_size, __gnat_cpu_set_free): Create these wrappers around the CPU_ALLOC, CPU_ALLOC_SIZE and CPU_FREE linux macros. (__gnat_cpu_zero, __gnat_cpu_set): Use the CPU_ZERO_S and CPU_SET_S respectively because we are now using dynamically allocated CPU sets which are more portable across different glibc versions. * s-osinte-linux.ads (cpu_set_t_ptr, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE): Add this type and subprograms to be able to create cpu_set_t masks dynamically according to the number of processors in the target platform. (CPU_ZERO, CPU_SET): They are now mapped to the CPU_ZERO_S and CPU_SET_S respectively, so we need to pass the size of the masks as parameters. * s-taprop-linux.adb (Create_Task, Set_Task_Affinity): Use dynamically created cpu_set_t masks with the number of processors available in the target platform, instead of static bit arrays. It enhances portability because it uses the information from the target platform. * sem_ch8.adb: (Attribute_Renaming): When checking whether we are using a restricted run-time library, use the flag Configurable_Run_Time_Mode instead of Restricted_Profile. From-SVN: r178416
Jose Ruiz committed -
2011-09-01 Vincent Celier <celier@adacore.com> * ug_words: Add /MULTI_UNIT_INDEX= -> -gnateI * vms_data.ads: Add new VMS qualifier equivalent for -gnateInnn 2011-09-01 Nicolas Roche <roche@adacore.com> * adaint.c (__gnat_tmp_name): Don't use tmpnam function from the system on VxWorks in kernel mode. From-SVN: r178415
Arnaud Charlet committed -
2011-09-01 Jose Ruiz <ruiz@adacore.com> * s-taprop-linux.adb (Create_Task, Set_Task_Affinity): Use the linux macros for handling CPU sets (CPU_ZERO, CPU_SET) instead of modifying directly the bit array. * s-osinte-linux.ads (CPU_ZERO, CPU_SET): Import these wrappers around the linux macros with the same name. * adaint.h, adaint.c (__gnat_cpu_zero, __gnat_cpu_set): Create these wrappers around the CPU_ZERO and CPU_SET linux macros. 2011-09-01 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb (Find_Insertion_List): Removed. (Process_Transient_Objects): Insert the declarations of the hook access type and the hook object before the associated transient object. 2011-09-01 Jose Ruiz <ruiz@adacore.com> * sem_ch8.adb (Attribute_Renaming): Add missing check to avoid loading package System.Aux_Dec when using restricted run-time libraries which do not have this package. 2011-09-01 Tristan Gingold <gingold@adacore.com> * s-vaflop-vms-alpha.adb: Remove pragma optimize, useless. 2011-09-01 Bob Duff <duff@adacore.com> * sem_attr.adb (Analyze_Access_Attribute): Do not call Kill_Current_Values for P'Unrestricted_Access, where P is library level 2011-09-01 Thomas Quinot <quinot@adacore.com> * exp_ch5.adb: Minor reformatting * gnat_ugn.texi: Fix minor typos. * gcc-interface/Make-lang.in: Update dependencies. From-SVN: r178414
Arnaud Charlet committed -
2011-09-01 Robert Dewar <dewar@adacore.com> * inline.adb, sem_aggr.adb: Minor reformatting. 2011-09-01 Ed Schonberg <schonberg@adacore.com> * a-convec.adb: Proper handling of cursors for Ada2012 iterators. From-SVN: r178413
Arnaud Charlet committed -
2011-09-01 Robert Dewar <dewar@adacore.com> * prj-proc.adb, exp_ch6.adb, prj-env.adb: Minor reformatting. 2011-09-01 Bob Duff <duff@adacore.com> * sem_aggr.adb (Resolve_Aggregate): Need to treat "in instance body" the same as "in inlined body", because visibility shouldn't apply there. 2011-09-01 Eric Botcazou <ebotcazou@adacore.com> * inline.adb (Add_Inlined_Body): Refine previous change. From-SVN: r178412
Arnaud Charlet committed -
2011-09-01 Gary Dismukes <dismukes@adacore.com> * exp_ch6.ads (Needs_BIP_Alloc_Form): New utility function. * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Test for case where call initializes an object of a return statement before testing for a constrained call, to ensure that all such cases get handled by simply passing on the caller's parameters. Also, in that case call Needs_BIP_Alloc_Form to determine whether to pass on the BIP_Alloc_Form parameter of the enclosing function rather than testing Is_Constrained. Add similar tests for the return of a BIP call to later processing to ensure consistent handling. (Needs_BIP_Alloc_Form): New utility function. * sem_ch6.adb: (Create_Extra_Formals): Replace test for adding a BIP_Alloc_Form formal with call to new utility function Needs_BIP_Alloc_Form. 2011-09-01 Pascal Obry <obry@adacore.com> * prj-part.adb: Minor reformatting. 2011-09-01 Vincent Celier <celier@adacore.com> * prj-env.adb (Create_Mapping_File.Process): Encode the upper half character in the unit name. From-SVN: r178411
Arnaud Charlet committed -
2011-09-01 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch4.adb: Minor code and comment reformatting. 2011-09-01 Thomas Quinot <quinot@adacore.com> * exp_ch6.adb (Expand_Inlined_Call): Remove redundant tests for Is_Limited_Type and Is_Tagged_Type in condition checking for by-reference type. * inline.adb (Add_Inlined_Body): Only exclude init_procs. Other subprograms may have a completion because of a previous Inline_Always clause, but the enclosing package must be marked inlined for the subprogram body to become visible to the backend. From-SVN: r178410
Arnaud Charlet committed -
2011-09-01 Thomas Quinot <quinot@adacore.com> * sem_aux.adb, exp_ch4.adb: Minor reformatting From-SVN: r178409
Thomas Quinot committed -
2011-08-31 Richard Guenther <rguenther@suse.de> * expr.c (expand_expr_real_2): Move COND_EXPR and VEC_COND_EXPR handling here, from ... (expand_expr_real_1): ... here. * gimple-pretty-print.c (dump_ternary_rhs): Handle COND_EXPR and VEC_COND_EXPR. * gimple.c (gimple_rhs_class_table): Make COND_EXPR and VEC_COND_EXPR a GIMPLE_TERNARY_RHS. * tree-cfg.c (verify_gimple_assign_ternary): Handle COND_EXPR and VEC_COND_EXPR here ... (verify_gimple_assign_single): ... not here. * gimple-fold.c (fold_gimple_assign): Move COND_EXPR folding. * tree-object-size.c (cond_expr_object_size): Adjust. (collect_object_sizes_for): Likewise. * tree-scalar-evolution.c (interpret_expr): Don't handle ternary RHSs. * tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and simplify. (ssa_forward_propagate_and_combine): Adjust. * tree-ssa-loop-im.c (move_computations_stmt): Build the COND_EXPR as ternary. * tree-ssa-threadedge.c (fold_assignment_stmt): Adjust. * tree-vect-loop.c (vect_is_simple_reduction_1): Likewise. * tree-vect-stmt.c (vectorizable_condition): Likewise. * tree-vrp.c (extract_range_from_cond_expr): Likewise. (extract_range_from_assignment): Likewise. From-SVN: r178408
Richard Guenther committed -
2011-09-01 Pascal Obry <obry@adacore.com> * prj-proc.adb, prj.ads, sinput-p.adb: Minor reformatting. 2011-09-01 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Generate references to the formals of a subprogram stub that acts as a spec. 2011-09-01 Ed Schonberg <schonberg@adacore.com> * exp_ch6.adb (Expand_Inlined_Call): If an actual is a by_reference type, declare a renaming for it, not an object declaration. From-SVN: r178407
Arnaud Charlet committed -
2011-09-01 Yannick Moy <moy@adacore.com> * ali-util.adb, ali-util.ads (Read_Withed_ALIs): Add parameter Ignore_Errors to ignore failures to read ALI files when True. 2011-09-01 Javier Miranda <miranda@adacore.com> * exp_ch3.adb (Expand_N_Object_Declaration): Handle non-default constructor calls associated with non-tagged record types. 2011-09-01 Robert Dewar <dewar@adacore.com> * g-socthi-vms.adb: Minor reformatting. 2011-09-01 Nicolas Roche <roche@adacore.com> * sysdep.c: Don't use macro functions for stdio functions on VxWorks in order to avoid impact of imcompatible changes. * cstreams.c: Likewise * cio.c: Likewise * aux-io.c: Likewise 2011-09-01 Yannick Moy <moy@adacore.com> * lib-writ.adb (Write_With_Lines): Always output complete information on "with" line in Alfa mode, as this is required by formal verification back-end. From-SVN: r178406
Arnaud Charlet committed -
2011-09-01 Tristan Gingold <gingold@adacore.com> * g-socthi-vms.adb: Add comments. 2011-09-01 Pascal Obry <obry@adacore.com> * prj.ads: Minor reformatting. From-SVN: r178405
Arnaud Charlet committed -
2011-09-01 Vincent Celier <celier@adacore.com> * prj-env.adb (Create_Config_Pragmas_File.Check): Put all naming exceptions in the config pragmas file. 2011-09-01 Tristan Gingold <gingold@adacore.com> * gnat_ugn.texi: Document GNAT_STACK_SIZE on IVMS. From-SVN: r178404
Arnaud Charlet committed -
2011-09-01 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb (Find_Insertion_List): New routine. (Process_Transient_Objects): Add code to handle the abnormal finalization of a controlled transient associated with a subprogram call. Since transients are cleaned up right after the associated context, an exception raised during a subprogram call may bypass the finalization code. 2011-09-01 Robert Dewar <dewar@adacore.com> * exp_ch6.adb (Expand_Call): Check actual for aliased parameter is aliased. From-SVN: r178403
Arnaud Charlet committed -
2011-09-01 Robert Dewar <dewar@adacore.com> * exp_ch4.adb, a-exexda.adb: Minor reformatting. From-SVN: r178402
Robert Dewar committed -
2011-09-01 Robert Dewar <dewar@adacore.com> * s-taskin.ads, s-tassta.adb, sem_ch13.adb: Minor reformatting. 2011-09-01 Thomas Quinot <quinot@adacore.com> * Makefile.rtl: Move s-oscons.o from GNATRTL_TASKING_OBJS to GNATRTL_NONTASKING_OBJS. 2011-09-01 Robert Dewar <dewar@adacore.com> * einfo.ads (Is_Aliased): Fix existing documentation and add note on possibility of this flag being set for formals in Ada 2012 mode. * par-ch6.adb (P_Formal_Part): Handle aliased for parameters for Ada 2012. * sem_ch6.adb (Process_Formals): Handle aliased parameters in Ada 2012 mode. * sinfo.adb (Aliased_Present): Allowed in N_Parameter_Specification for Ada 2012. * sinfo.ads (Aliased_Present): Allowed in N_Parameter_Specification for Ada 2012. 2011-09-01 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch4.adb (Find_Insertion_Node): New routine. Determines the proper insertion node in a tree of nested Expression_With_Actions nodes. (Process_Transient_Object): In the case where a complex if statement has been converted into nested Expression_With_Actions nodes, the "hook" object and the associated access type must be inserted before the top most Expression_With_Actions. From-SVN: r178401
Arnaud Charlet committed -
2011-09-01 Robert Dewar <dewar@adacore.com> * a-cbprqu.adb, a-cbprqu.ads, a-cuprqu.adb, a-cuprqu.ads, a-cbsyqu.adb, a-cbsyqu.ads: Minor reformatting. 2011-09-01 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb: Conditionalize aliasing predicates to Ada2012. 2011-09-01 Jose Ruiz <ruiz@adacore.com> * aspects.ads (Aspect_Id, Aspect_Argument, Aspect_Names): Add the CPU aspect. * aspects.adb (Canonical_Aspect): Add entry for the CPU aspect. * sem_ch13.adb (Analyze_Aspect_Specifications): Analyze the CPU aspect in a similar way as we do for the Priority or Dispatching_Domain aspect. * s-mudido-affinity.adb (Dispatching_Domain_Tasks, Dispatching_Domains_Frozen): Move this local data to package System.Tasking because with the CPU aspect we need to have access to this data when creating the task in System.Tasking.Stages.Create_Task * s-taskin.ads (Dispatching_Domain_Tasks, Dispatching_Domains_Frozen): Move these variables from the body of System.Multiprocessors.Dispatching_Domains because with the CPU aspect we need to have access to this data when creating the task in System.Tasking.Stages.Create_Task. * s-taskin.adb (Initialize): Signal the allocation of the environment task to a CPU, if any, so that we know whether the CPU can be transferred to a different dispatching domain. * s-tassta.adb (Create_Task): Check whether the CPU to which this task is being allocated belongs to the dispatching domain where the task lives. Signal the allocation of the task to a CPU, if any, so that we know whether the CPU can be transferred to a different dispatching domain. From-SVN: r178400
Arnaud Charlet committed -
2011-09-01 Ed Schonberg <schonberg@adacore.com> * exp_attr.adb, sem_attr.adb, snames.ads-tmpl: Implementation of attributes Same_Storage and Overlaps_Storage. From-SVN: r178399
Ed Schonberg committed -
2011-09-01 Hristian Kirtchev <kirtchev@adacore.com> * exp_strm.adb: Remove with and use clause for Opt. (Build_Array_Input_Function): Remove the version-dependent generation of the return statement. The Ada 2005 tree is now the default. 2011-09-01 Yannick Moy <moy@adacore.com> * put_alfa.adb: Unconditionnally write files in Alfa section, so that it is never empty when compiling in Alfa mode. 2011-09-01 Robert Dewar <dewar@adacore.com> * sem_aggr.adb, sem_ch3.adb, a-direct.adb, s-taprop-vxworks.adb, comperr.adb, exp_ch9.adb, exp_pakd.adb, sem_ch12.adb, freeze.adb, s-taprop-mingw.adb, s-taprop-linux.adb, s-taprop-solaris.adb, gnat1drv.adb, a-rbtgbo.adb, exp_dist.adb: Minor reformatting 2011-09-01 Matthew Heaney <heaney@adacore.com> * Makefile.rtl, impunit.adb: Add a-csquin.ads, a-cusyqu.ad[sb], a-cuprqu.ad[sb], a-cbsyqu.ad[sb], a-cbprqu.ad[sb] * a-csquin.ads: New Ada 2012 unit that specifies the queue interface * a-cusyqu.ads, a-cusyqu.adb: New Ada 2012 unit that specifies the unbounded queue container. * a-cbsyqu.ads, a-cbsyqu.adb: New Ada 2012 unit that specifies the bounded queue container. * a-cuprqu.ads, a-cuprqu.adb: New Ada 2012 unit that specifies the unbounded priority queue container. * a-cbprqu.ads, a-cbprqu.adb: New Ada 2012 unit that specifies the bounded priority queue container. From-SVN: r178398
Arnaud Charlet committed -
PR tree-optimization/50178 * gfortran.dg/vect/pr50178.f90: New test. From-SVN: r178397
Ira Rosen committed -
From-SVN: r178393
GCC Administrator committed
-
- 31 Aug, 2011 6 commits
-
-
gcc/ * config/i386/i386.md: Use (match_test ...) for attribute tests. * config/i386/mmx.md: Likewise. * config/i386/sse.md: Likewise. * config/i386/predicates.md (call_insn_operand): Use (not (match_test "...")) instead of (match_test "!...") * config/i386/constraints.md (w): Likewise. From-SVN: r178389
Richard Sandiford committed -
gcc/ * doc/md.texi: Describe the use of match_tests in attribute tests. * rtl.def (MATCH_TEST): Update commentary. * genattrtab.c (attr_copy_rtx, check_attr_test, clear_struct_flag) (write_test_expr, walk_attr_value): Handle MATCH_TEST. From-SVN: r178388
Richard Sandiford committed -
gcc/ * genattrtab.c (attr_rtx_1): Hash SYMBOL_REFs. (attr_string): Use copy_md_ptr_loc. From-SVN: r178387
Richard Sandiford committed -
2011-08-31 Martin Jambor <mjambor@suse.cz> PR middle-end/49886 * ipa-inline-analysis.c (compute_inline_parameters): Set can_change_signature of noes with typde attributes. * ipa-split.c (split_function): Do not skip any arguments if can_change_signature is set. * testsuite/gcc.c-torture/execute/pr49886.c: New testcase. From-SVN: r178386
Martin Jambor committed -
2011-08-31 Martin Jambor <mjambor@suse.cz> * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Alias check removed. From-SVN: r178384
Martin Jambor committed -
2011-08-31 Richard Guenther <rguenther@suse.de> * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE special-casing. From-SVN: r178377
Richard Guenther committed
-