Douglas Gregor [Fri, 31 Aug 2007 19:18:20 +0000 (19:18 +0000)]
re PR c++/32597 (New operation with empty parameter pack does not value-initialize)
2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
PR c++/32597
* init.c (build_default_init): Make extern.
* cp-tree.h (build_default_init): Declare here.
* pt.c (tsubst_expr): When the instantiation of the initializer of
a variable results in an empty list, default-initialize the
variable.
(tsubst_copy_and_build): When the instantiation of the initializer
in a new expression results in an empty initializer list,
default-initialize it.
Nick Clifton [Fri, 31 Aug 2007 14:27:19 +0000 (14:27 +0000)]
re PR target/33132 (m32r: ICE: RTL check: expected elt 0 type 'i' or 'n', have 'w' (rtx const_int) in insn_current_length, at insn-attrtab.c:29)
PR target/33132
* config/m32r/constraints.md: Add W constraint for integer zero.
* config/m32r/m32r.md (get_pc): Use W and i constraints.
Fix length calculation by using alternatives.
optabs.c (shift_optab_p, [...]): New functions, split out from expand_binop.
gcc/
* optabs.c (shift_optab_p, commutative_optab_p): New functions,
split out from expand_binop.
(avoid_expensive_constant): New function.
(expand_binop_directly): Remove commutative_op argument and
call cummutative_optab_p instead. Do not change op0 or op1
when swapping xop0 and xop1. Apply avoid_expensive_constant
to each argument after potential swapping. Enforce the
canonical order of commutative operands.
(expand_binop): Use shift_optab_p and commutative_optab_p.
Update the calls to expand_binop_directly. Only force constants
into registers when widening an operation. Only swap operands
once a direct expansion has been rejected.
(expand_twoval_binop): Only force constants into registers when
using a direct expansion.
Maxim Kuvyrkov [Fri, 31 Aug 2007 13:08:55 +0000 (13:08 +0000)]
sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
* sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
(sched_analyze_insn): Don't postprocess speculative dependencies when
target has no scheduling.
* tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
'uninitialized' warning.
Arnaud Charlet [Fri, 31 Aug 2007 10:25:05 +0000 (12:25 +0200)]
[multiple changes]
2007-08-31 Vincent Celier <celier@adacore.com>
* fmap.ads: Minor comment updates
2007-08-31 GNAT Script <nobody@adacore.com>
* Make-lang.in: Makefile automatically updated
2007-08-31 Bob Duff <duff@adacore.com>
* sinfo.ads: Minor comment fix.
2007-08-31 Thomas Quinot <quinot@adacore.com>
* stand.ads: (Standard_Debug_Renaming_Type): Make comment consistent
with implementation.
Documentation cleanup only.
2007-08-31 Sergey Rybin <rybin@adacore.com>
* vms_data.ads: Add new qualifier /STMT_NAME_ON_NEW_LINE for the new
gnatpp '--separate-stmt-name' option.
Add new qualifier /USE_ON_NEW_LIN for the new gnatpp '--use-on-new-line'
option.
* gnat_ugn.texi: Add description for the new gnatpp
'--separate-stmt-name' and '--use-on-new-line' options.
Ed Schonberg [Fri, 31 Aug 2007 10:24:10 +0000 (12:24 +0200)]
sem_ch3.adb: The predicate Is_Descendent_Of_Address is now an entity flag, for effiency.
2007-08-31 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb: The predicate Is_Descendent_Of_Address is now an entity
flag, for effiency. It is called when analyzing arithmetic operators
and also for actuals in calls that are universal_integers. The flag is
set for the predefined type address, and for any type or subtype
derived from it.
* sem_ch4.adb (Analyze_One_Call): Reject an actual that is a
Universal_Integer, when the formal is a descendent of address and the
call appears in user code.
(Analyze_Selected_Component): if the prefix is a private extension, the
tag component is visible.
* sem_util.ads, sem_util.adb: Remove Is_Descendent_Of_Address, now an
entity flag.
Ed Schonberg [Fri, 31 Aug 2007 10:23:59 +0000 (12:23 +0200)]
sem_ch10.adb (Analyze_Subunit_Context): When analyzing context clauses of subunits...
2007-08-31 Ed Schonberg <schonberg@adacore.com>
* sem_ch10.adb (Analyze_Subunit_Context): When analyzing context
clauses of subunits, ignore limited_with_clauses that are illegal and
have not been fully analyzed.
Bob Duff [Fri, 31 Aug 2007 10:23:37 +0000 (12:23 +0200)]
par-ch4.adb (P_Simple_Expression): Fold long sequences of concatenations of string literals into a single literal...
2007-08-31 Bob Duff <duff@adacore.com>
* par-ch4.adb (P_Simple_Expression): Fold long sequences of
concatenations of string literals into a single literal, in order to
avoid very deep recursion in the front end, which was causing stack
overflow.
* sem_eval.adb (Eval_Concatenation): If the left operand is the empty
string, and the right operand is a string literal (the case of "" &
"..."), optimize by avoiding copying the right operand -- just use the
value of the right operand directly.
* stringt.adb (Store_String_Chars): Optimize by growing the
String_Chars table all at once, rather than appending characters one by
one.
(Write_String_Table_Entry): If the string to be printed is very long,
just print the first few characters, followed by the length. Otherwise,
doing "pn(n)" in the debugger can take an extremely long time.
* sem_prag.adb (Process_Interface_Name): Replace loop doing
Store_String_Char with Store_String_Chars.
* restrict.adb, namet.adb, par-util.adb: Remove redundant type
conversion.
* sem_res.adb (Resolve_Qualified_Expression): Add machinery to detect
simple redundant qualifications. The check is performed whenever the
expression is a non-overloaded identifier.
(Resolve_Type_Conversion): Enchance the redundant type conversion check
to include loop parameters.
(Valid_Conversion): Avoid generation of spurious error message.
Gary Dismukes [Fri, 31 Aug 2007 10:22:39 +0000 (12:22 +0200)]
exp_ch8.adb (Expand_N_Package_Renaming_Declaration): In the case of a library-level package renaming...
2007-08-31 Gary Dismukes <dismukes@adacore.com>
* exp_ch8.adb (Expand_N_Package_Renaming_Declaration): In the case of a
library-level package renaming, pass the declaration associated with
the renaming's special debug variable to Qualify_Entity_Names to ensure
that its encoded name is properly qualified.
* exp_dbug.adb (Qualify_All_Entity_Names): Check for a variable entity
occurring in the list of entities to qualify, and do not attempt to
traverse an entity list in that case. Variables associated with
` library-level package renamings can now occur in the table.
* exp_dbug.ads: Revise documentation of the encoding for renaming
declarations.
Ed Schonberg [Fri, 31 Aug 2007 10:22:15 +0000 (12:22 +0200)]
exp_ch3.adb (Build_Record_Init_Proc): If there is a static initialization aggregate for the type...
2007-08-31 Ed Schonberg <schonberg@adacore.com>
* exp_ch3.adb (Build_Record_Init_Proc): If there is a static
initialization aggregate for the type, generate itype references for
thetypes of its (sub)components, to prevent out-of-scope errors in gigi.
* einfo.ads, einfo.adb: New flag Is_Raised (Flag224). Update the
structure of E_Exception to reflect the new flag.
(Is_Raised, Set_Is_Raised): New inlined routines.
Update the usage of available flag to reflect the addition of Is_Raised.
(Is_Raised, Set_Is_Raised): Bodies of new routines.
(Write_Entity_Flags): Write the status of flag Is_Raised.
(Is_Descendent_Of_Address): New entity flag, to simplify handling of
spurious ambiguities when integer literals appear in the context of an
address type that is a visible integer type.
* sem_ch11.adb (Analyze_Exception_Handler): Add code to warn on local
exceptions never being raised.
(Analyze_Raise_Statement): When analyzing an exception, mark it as being
explicitly raised.
* checks.adb (In_Declarative_Region_Of_Subprogram_Body): New routine.
(Mark_Non_Null): If the node for which we just generated an access check
is a reference to an *in* parameter and the reference appears in the
declarative part of a subprogram body, mark the node as known non null.
Vincent Celier [Fri, 31 Aug 2007 10:19:18 +0000 (12:19 +0200)]
re PR ada/4720 (GNAT programs do not support --help and --version)
2007-08-30 Vincent Celier <celier@adacore.com>
PR ada/4720
* gnatchop.adb, gnatfind.adb, gnatlink.adb, gnatls.adb,
gnatname.adb, gnatxref.adb, gprep.adb, clean.adb gnatbind.adb
(Check_Version_And_Help): New procedure in package Switch to process
switches --version and --help.
Use Check_Version_And_Help in GNAT tools
* make.adb: Ditto.
(Compile_Sources): Make sure that sources that are "excluded" are not
compiled.
(Gnatmake): Do not issue -aO. to gnatbind and only issue -I- if a
project file is used.
(Version_Switch): Remove, moved to Switch
(Help_Switch): Remove, moved to Switch
(Display_Version): Remove, moved to Switch
* switch.ads, switch.adb (Check_Version_And_Help): New procedure in
package Switch to process switches --version and --help.
(Display_Version): New procedure
* gnatvsn.ads, gnatvsn.adb (Copyright_Holder): New function.
Olivier Hainque [Fri, 31 Aug 2007 07:08:40 +0000 (07:08 +0000)]
xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New internal macro.
2007-08-31 Olivier Hainque <hainque@adacore.com>
* config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
internal macro. Default alignment factor for csect directives, chosen
to match what BIGGEST_ALIGNMENT allows.
(DATA_SECTION_ASM_OP): Use it.
* config/rs6000/rs6000.c
(rs6000_xcoff_output_readonly_section_asm_op):
Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
(rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
Olivier Hainque [Fri, 31 Aug 2007 07:02:43 +0000 (07:02 +0000)]
dbxout.c (dbxout_block): Move declaration within the first #if defined (DBX_DEBUGGING_INFO) block.
2007-08-31 Olivier Hainque <hainque@adacore.com>
* dbxout.c (dbxout_block): Move declaration within the first
#if defined (DBX_DEBUGGING_INFO) block. Rearrange another such
block to include the definition, together with the associated
helpers.
Ollie Wild [Fri, 31 Aug 2007 04:41:52 +0000 (04:41 +0000)]
cvt.c (cp_convert_to_pointer): Remove force parameter.
gcc/cp/
* cvt.c (cp_convert_to_pointer): Remove force parameter. Call
convert_ptrmem for pointer to member conversions.
(convert_to_pointer_force): Update cp_convert_to_pointer call.
(ocp_convert): Update cp_convert_to_pointer call.
* typeck.c (convert_ptrmem): Add conditional for null pointers to
members.
(build_static_cast_1): Check can_convert for conversions in either
direction.
(get_delta_difference_1): New function.
(get_delta_difference): Refactor to call get_delta_difference_1.
gcc/testsuite/
g++.dg/conversion/ptrmem2.C: New test.
g++.dg/conversion/ptrmem3.C: New test.
g++.dg/conversion/ptrmem4.C: New test.
g++.dg/conversion/ptrmem5.C: New test.
g++.dg/conversion/ptrmem6.C: New test.
g++.dg/conversion/ptrmem7.C: New test.
g++.dg/conversion/ptrmem8.C: New test.
Paul Thomas [Thu, 30 Aug 2007 22:10:55 +0000 (22:10 +0000)]
re PR fortran/31879 (ICE with function having array of character variables argument)
2007-08-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31879
PR fortran/31197
PR fortran/31258
PR fortran/32703
* gfortran.h : Add prototype for gfc_resolve_substring_charlen.
* resolve.c (gfc_resolve_substring_charlen): New function.
(resolve_ref): Call gfc_resolve_substring_charlen.
(gfc_resolve_character_operator): New function.
(gfc_resolve_expr): Call the new functions in cases where the
character length is missing.
* iresolve.c (cshift, eoshift, merge, pack, reshape, spread,
transpose, unpack): Call gfc_resolve_substring_charlen for
source expressions that are character and have a reference.
* trans.h (gfc_trans_init_string_length) Change name to
gfc_conv_string_length; modify references in trans-expr.c,
trans-array.c and trans-decl.c.
* trans-expr.c (gfc_trans_string_length): Handle case of no
backend_decl.
(gfc_conv_aliased_arg): Remove code for treating substrings
and replace with call to gfc_trans_string_length.
* trans-array.c (gfc_conv_expr_descriptor): Remove code for
treating strings and call gfc_trans_string_length instead.
2007-08-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31879
* gfortran.dg/char_length_7.f90: New test.
* gfortran.dg/char_length_9.f90: New test.
* gfortran.dg/char_assign_1.f90: Add extra warning.
PR fortran/31197
PR fortran/31258
* gfortran.dg/char_length_8.f90: New test.
Jakub Jelinek [Thu, 30 Aug 2007 16:43:19 +0000 (18:43 +0200)]
re PR target/33168 (GCC Boot failure, building libstc++)
PR target/33168
* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
true if any of the compare_section_name calls returned true,
rather than if any returned false.
Richard Guenther [Thu, 30 Aug 2007 14:52:28 +0000 (14:52 +0000)]
re PR middle-end/33199 (tr1/2_general_utilities/shared_ptr/assign/auto_ptr.cc)
2007-08-30 Richard Guenther <rguenther@suse.de>
PR tree-optimization/33199
* tree-ssa-structalias.c (handle_lhs_call): New function.
(find_func_aliases): In non-IPA mode make sure that for
calls that return a pointer we add a constraint for the
result to point to anything.
Richard Guenther [Thu, 30 Aug 2007 13:55:42 +0000 (13:55 +0000)]
invoke.texi (-mveclibabi): Document new target option.
2007-08-30 Richard Guenther <rguenther@suse.de>
* doc/invoke.texi (-mveclibabi): Document new target option.
* config/i386/i386.opt (-mveclibabi): New target option.
* config/i386/i386.c (ix86_veclib_handler): Handler for
vectorization library support.
(override_options): Handle the -mveclibabi option, initialize
the vectorization library handler.
(ix86_builtin_vectorized_function): As fallback call the
vectorization library handler, if set.
(ix86_veclibabi_acml): New static function for ACML ABI style
vectorization support.
Jakub Jelinek [Thu, 30 Aug 2007 08:25:36 +0000 (10:25 +0200)]
rs6000.c (rs6000_emit_sync): For QI or HI mode used_m...
* config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
used_m, even if it is 32-bit aligned, adjust used_m MEM to have
SImode and update m. Don't run gen_lowpart_common on arbitrary
memory address, force it to register first.
* gcc.dg/sync-2.c (AI_ALIGN): Define if not defined.
(AI): Add AI_ALIGN.
* gcc.dg/sync-3.c: New test.
Paolo Bonzini [Wed, 29 Aug 2007 17:01:35 +0000 (17:01 +0000)]
re PR target/33168 (GCC Boot failure, building libstc++)
2007-08-29 Paolo Bonzini <bonzini@gnu.org>
PR target/33168
* config/rs6000/rs6000.c (compare_section_name): New function.
(rs6000_elf_in_small_data_p): Compare section prefixes instead
of full name.
Tobias Burnus [Wed, 29 Aug 2007 13:08:55 +0000 (15:08 +0200)]
re PR fortran/33215 (Bind(C): Bugs with empty "name=": Creates wrong result and accepts invalid)
2007-08-29 Christopher D. Rickett <crickett@lanl.gov>
PR fortran/33215
* decl.c (build_sym): Pass number of identifiers on line to
set_binding_label.
(set_binding_label): Verify that only one identifier given if
NAME= specified, even if the given binding label has zero length.
(gfc_match_bind_c): Remove declaration for has_name_equals because
it hides the static global one that is needed.
2007-08-29 Christopher D. Rickett <crickett@lanl.gov>
PR fortran/33215
* gfortran.dg/binding_label_tests_15.f03: New test case.
* gfortran.dg/binding_label_tests_16.f03: Ditto.
Douglas Gregor [Wed, 29 Aug 2007 12:25:01 +0000 (12:25 +0000)]
re PR c++/33194 (ICE: canonical types differ for identical types void ()(const char*, ...) and void ()(const char*, ...))
2007-08-29 Douglas Gregor <doug.gregor@gmail.com>
PR c++/33194
* tree.c (build_type_attribute_qual_variant): Set canonical types
on the final, unqualified attribute variant before building the
qualified version.
Nathan Sidwell [Wed, 29 Aug 2007 03:53:41 +0000 (03:53 +0000)]
m68k.c (m68k_get_function_kind): Assert we're never given a non-function.
gcc/
* config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
given a non-function.
(m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.