Joseph Myers [Sat, 18 Apr 2009 23:21:34 +0000 (00:21 +0100)]
re PR c/27676 (gcc is overly strict in assignment to read-only data)
PR c/27676
* c-typeck.c (readonly_warning): new.
(build_unary_op, build_modify_expr): Use readonly_warning for
storing into something readonly but not const-qualified.
Jan Hubicka [Sat, 18 Apr 2009 22:18:21 +0000 (00:18 +0200)]
* eh_type.cc (__cxa_current_exception_type) Mark throw().
* unwind-cxx.h (__cxa_get_globals, __cxa_get_globals_fast): Mark const.
(__cxa_get_exception_ptr): Mark pure.
(__cxa_bad_cast, __cxa_bad_typeid): Mark noreturn
(__terminate): Makr throw ().
* exception (terminate): Mark throw().
(uncaught_exception): Mark pure.
* eh_ptr.cc (_M_safe_bool_dummy): Mark throw().
* guard.cc (__cxa_guard_abort, __cxa_guard_release): Mark throw().
* eh_terminate.cc (__terminate, terminate): Mark throw().
* vec.cc (__cxa_vec_cleanup): Mark throw().
* cxxabi.h (__cxa_vec_cleanup, __cxa_guard_release, __cxa_guard_abort): Mark throw ().
(__cxa_pure_virtual): Mark noreturn.
(__cxa_current_exception_type): Mark throw and pure.
* exception_ptr.h (operator ==, !=, _M_get, !, ==,
__cxa_exception_type): Mark pure.
(_M_safe_bool_dummy): Mark pure and const.
Joseph Myers [Sat, 18 Apr 2009 20:02:47 +0000 (21:02 +0100)]
re PR c/35210 (gcc incorrectly allows calling function returning "const void")
PR c/35210
* c-typeck.c (build_function_call): Check for calling a function
with qualified void return types. Call require_complete_type when
generating a trap.
Richard Guenther [Sat, 18 Apr 2009 13:02:00 +0000 (13:02 +0000)]
re PR tree-optimization/39804 (internal compiler error: in propagate_necessity, at tree-ssa-dce.c:754)
2009-04-18 Richard Guenther <rguenther@suse.de>
PR middle-end/39804
* tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
(fold_stmt): ... this and ...
(fold_stmt_inplace): ... this.
(fold_stmt_1): Fold references in calls and asms.
* tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
re PR middle-end/36902 (Array bound warning with dead code after optimization)
2009-04-18 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR middle-end/36902
* tree-vrp.c (check_array_ref): Pass a location_t instead of a
pointer. Use warning_at instead of warning.
(search_for_addr_array): Likewise.
(check_array_bounds): Likewise.
(check_all_array_refs): Check that the incoming edge is not in the
list of edges to be removed.
(check_all_array_refs): Avoid the temporal pointer.
(vrp_visit_cond_stmt): Fix typo.
(simplify_switch_using_ranges): Handle the case where the switch
index is an integer constant.
testsuite/
* gcc.dg/pr36902.c: New.
Diego Novillo [Fri, 17 Apr 2009 21:28:01 +0000 (17:28 -0400)]
tree-pretty-print.c (dump_generic_node): Add break after TREE_BINFO handler.
* tree-pretty-print.c (dump_generic_node): Add break
after TREE_BINFO handler.
Handle COMPLEX_TYPE, REAL_TYPE and FIXED_POINT_TYPE
Handle NULL TREE_TYPEs.
Handle METHOD_TYPE and FUNCTION_TYPE together.
Call print_struct_decl when printing structures and
TDF_SLIM is not given.
(print_struct_decl): Fix logic for detecting recursion.
Adam Nemet [Fri, 17 Apr 2009 19:36:02 +0000 (19:36 +0000)]
tm.texi (TARGET_DEFAULT_TARGET_FLAGS, [...]): Use @deftypevr rather than @deftypevar.
* doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
Use @deftypevr rather than @deftypevar.
2009-04-17 Rafael Avila de Espindola <espindola@google.com>
* Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
REVISION_c.
(OBJS-common): Add plugin-version.o.
(plugin-version.o): New.
* gcc-plugin.h (plugin_gcc_version): New.
(plugin_default_version_check): New.
(plugin_init_func, plugin_init): Add version argument.
* plugin-version.c: New.
* plugin.c (str_plugin_gcc_version_name): New.
(try_init_one_plugin): Read plugin_gcc_version from the plugin and
pass it to the init function.
(plugin_default_version_check): New.
Thomas Quinot [Fri, 17 Apr 2009 13:39:10 +0000 (13:39 +0000)]
re PR ada/35953 (Socket stream subprograms incorrectly handling null arrays)
2009-04-17 Thomas Quinot <quinot@adacore.com>
PR ada/35953
* g-socthi-vms.adb, g-socthi-vms.ads, g-socthi-vxworks.adb,
g-socthi-vxworks.ads, g-socthi-mingw.adb, g-socthi-mingw.ads,
g-socthi.adb, g-stsifd-sockets.adb, g-socthi.ads, g-socket.adb,
g-socket.ads (GNAT.Sockets.Thin.C_Send,
GNAT.Sockets.Thin.Syscall_Send): Remove unused subprograms.
Replace calls to send(2) with equivalent sendto(2) calls.
(GNAT.Sockets.Send_Socket): Factor common code in inlined subprogram.
(GNAT.Sockets.Write): Account for the case of hyper-empty arrays, do not
report an error in that case. Factor code common to the two versions
(datagram and stream) in common routine Stream_Write.
Ed Schonberg [Fri, 17 Apr 2009 13:17:12 +0000 (13:17 +0000)]
einfo.ads, einfo.adb: New attribute Underlying_Record_View...
2009-04-17 Ed Schonberg <schonberg@adacore.com>
* einfo.ads, einfo.adb: New attribute Underlying_Record_View, to handle
type extensions whose parent is a type with unknown discriminants.
* exp_aggr.adb (Expand_Record_Aggregate): If the type of an extension
aggregate has unknown discriminants, use the Underlying_Record_View to
obtain the discriminants of the ancestor part.
* exp_disp.adb (Build_Dispatch_Tables): Types that are
Underlying_Record_Views share the dispatching information of the
original record extension.
* exp_ch3.adb (Expand_Record_Extension): If the type inherits unknown
discriminants, propagate dispach table information to the
Underlying_Record_View.
* sem_ch3.adb (Build_Derived_Private_Type): If parent type has unknown
discriminants and declaration is not a completion, generate
Underlying_Record_View to provide proper discriminant information to
the front-end and to gigi.
* tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
(record_equivalences_from_stmt): Remove useless checks and
simplifications.
* tree-ssa-pre.c (eliminate): Avoid converting a constant if
the type is already suitable.
* exp_ch7.adb (Expand_Ctrl_Function_Call): Remove incorrect special
case for the case of an aggregate component, the attach call for the
result is actually needed.
* exp_aggr.adb (Backend_Processing_Possible): Backend processing for
an array aggregate must be disabled if the component type requires
controlled actions.
* exp_ch3.adb: Minor reformatting
2009-04-17 Arnaud Charlet <charlet@adacore.com>
* s-taprop-tru64.adb, s-taprop-vms.adb, s-taprop-linux.adb,
s-taprop-solaris.adb, s-taprop-irix.adb, s-taprop-hpux-dce.adb,
s-taprop-posix.adb (Suspend_Until_True): Protect against early wakeup.
Bob Duff [Fri, 17 Apr 2009 12:11:04 +0000 (14:11 +0200)]
output.ads (Indent,Outdent): New procedures for indenting the output.
2009-04-17 Bob Duff <duff@adacore.com>
* output.ads (Indent,Outdent): New procedures for indenting the output.
(Write_Char): Correct comment -- LF _is_ allowed.
* output.adb (Indent,Outdent): New procedures for indenting the output.
Keep track of the indentation level, and make sure it doesn't get too
high.
(Flush_Buffer): Insert spaces at the beginning of each line, if
indentation level is nonzero.
(Save_Output_Buffer,Restore_Output_Buffer): Save and restore the current
indentation level.
(Set_Standard_Error,Set_Standard_Output): Remove superfluous
"Next_Col := 1;". Flush_Buffer does that.
* sem_ch6.adb, sem_ch7.adb (Debug_Flag_C): Reorganize the output
controlled by the -gnatdc switch. It now occurs on entry/exit to the
relevant analysis routines, and calls Indent/Outdent to make the
indentation reflect the nesting level. Add "helper" routines, since
otherwise lots of "return;" statements would skip the debugging output.
* exp_aggr.adb: Minor code reorganization, no behaviour change.
2009-04-17 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Use_One_Type): Handle properly a redundant use type
clause in a unit that is a package body or a subunit, when the previous
clause appears in a spec or a parent.
* gfortran.dg/default_format_1.f90: XFAIL on spu-*-*.
* gfortran.dg/default_format_denormal_1.f90: XFAIL on spu-*-*.
* gfortran.dg/scalar_mask_2.f90: XFAIL on spu-*-*.
* gfortran.dg/integer_exponentiation_3.F90: XFAIL on spu-*-*.
* gfortran.dg/integer_exponentiation_5.F90: XFAIL on spu-*-*.
gcc-dg.exp (gcc-dg-prune): Make linker message check less strict so it also works with auto-overlay support.
* lib/gcc-dg.exp (gcc-dg-prune): Make linker message check
less strict so it also works with auto-overlay support.
* lib/gcc-defs.exp (${tool}_check_unsupported_p): Add check
for "exceeds local store" linker errors on the SPU.
* lib/gfortran.exp: Include target-supports.exp.
(gfortran_init): On SPU targets where automatic overlay support
is available, use it to build all Fortran test cases.
* gfortran.dg/pr20257.f90: Skip on spu-*-* targets.
* sinfo.ads, exp_aggr.adb, exp_aggr.ads: Minor reformatting
* exp_ch7.adb: Minor reformatting
2009-04-17 Bob Duff <duff@adacore.com>
* exp_ch4.adb (Expand_Allocator_Expression): In an initialized
allocator, check that the expression of the qualified expression obeys
the constraints of the subtype of the qualified expression.
2009-04-17 Thomas Quinot <quinot@adacore.com>
* sprint.adb (Write_Itype): Add handling of enumeration subtypes.
* exp_ch4.adb (Expand_Concatenation): Do not use calls at -Os.
2009-04-17 Pascal Obry <obry@adacore.com>
* mingw32.h: Add S2WSC and WS2SC macros to convert to/from
CurrentCodePage.
* adaint.h: Encoding_Unspecified is now defined. Corresponds to the
value when no encoding form paramter is set on Text_IO services.
* adaint.c: CurrentCodePage new variable on Windows.
Use new macros S2WSC and WS2SC instead of the UTF-8 oriented
ones.
* mkdir.c: Use new macros S2WSC and WS2SC instead of the UTF-8 oriented
ones.
* initialize.c: Initialize CurrentCodePage depending on GNAT_CODE_PAGE
environment variable value. Default is UTF-8.
* s-crtl.ads: Filename_Encoding add Unspecified in the enumeration type.
fopen and freopen encoding parameter is now set to Unspecified.
The default value is in this case UTF-8 (as it was before) but
use the new macros that convert to/from the code page set
at runtime (CurrentCodePage).
* s-fileio.adb: When no encoding specified use Unspecified value.
* nlists.ads, nlists.adb: Move New_Copy_List to sem_util.
* lib-load.adb: Use Copy_Separate_Tree rather than New_Copy_Tree
* sem_util.ads, sem_util.adb: New_Copy_Tree and New_Copy_List belong in
semantic units, because the handling of itypes in the copied tree
requires semantic information that does not belong in atree.
* par-ch6.adb (P_Subprogram): Overriding indicators should be allowed
on protected subprogram bodies, so exclude the case where Pf_Flags is
Pf_Decl_Pbod from the error check.
* par-ch9.adb (P_Protected_Operation_Items): Permit overriding
indicators on subprograms in protected bodies, and proceed with parsing
the subprogram.
* sem_ch6.adb (Verify_Overriding_Indicator): Exclude protected
subprograms from the check for primitiveness on subprograms with
overriding indicators.
(Check_Overriding_Indicator): Include protected subprograms in the
style check for missing overriding indicators.
2009-04-17 Tristan Gingold <gingold@adacore.com>
* init.c: Fix stack checking for x86 Darwin.
2009-04-17 Vincent Celier <celier@adacore.com>
* prj-attr.adb: New project level attribute Object_File_Suffix
(<language>).
* prj-nmsc.adb (Add_Source): Use the object file suffix to get the
object file name
(Process_Compiler): Process attribute Object_File_Suffix
* prj.adb (Object_Name): Use suffix Object_File_Suffix instead of
platform suffix, when specified.
* prj.ads (Language_Config): New component Object_File_Suffix,
defaulted to No_Name.
(Object_Name): New parameter Object_File_Suffix, defaulted to No_Name
* snames.ads-tmpl: New standard name Object_File_Suffix
* rtsfind.ads (RE_Request_Destroy): New PolyORB s-parint entity.
* exp_dist.adb (PolyORB_Support.Build_General_Calling_Stubs): Add
missing calls to RE_Request_Destroy to deallocate request objects after
use.
2009-04-17 Nicolas Setton <setton@adacore.com>
* link.c: Fix support for passing a response file under Darwin.
2009-04-17 Emmanuel Briot <briot@adacore.com>
* prj.adb (Free): new subprogram.
2009-04-17 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb: additional initialization on incomplete subtypes.
* sem_ch6.adb (Process_Formals): if the subprogram is in the private
part and one of the formals is an incomplete tagged type, attach to
list of private dependends of the type for later validation.
* sem_ch7.adb (Uninstall_Declarations): diagnose attempts to declare
primitive operations of a Taft-amendmment type.
* freeze.adb (Freeze_Entity): Remove tests on formals of an incomplete
type. The check is performed on package exit, possibly after the
subprogram is frozen.
2009-04-17 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Get_Directories): Get the object and exec directory
before looking for source directories, but make sure that there are nil
if they are not explicitely declared and there is explicitely no
sources in the project.