PR c++/39551
* gcc/cp/call.c (build_over_call): Set TREE_NO_WARNING on the
compiler-generated INDIRECT_REF expression.
* gcc/cp/cvt.c (convert_to_void): Emit warning when stripping off
INDIRECT_REF.
* gcc/testsuite/g++.dg/warn/Wunused-13.C: New testcase.
From-SVN: r146132
gcc/:
* c.opt (Wenum-compare): Enable for C and Objc. Initialize to -1.
* c-opts.c (c_common_handle_option): For C, set warn_enum_compare
for -Wall and for -Wc++-compat.
(c_common_post_options): For C++, set warn_enum_compare if not
already set.
* c-tree.h (struct c_expr): Add field original_type.
(build_external_ref): Update declaration.
* c-parser.c (c_parser_braced_init): Set original_type.
(c_parser_initelt): Likewise.
(c_parser_expr_no_commas): Likewise.
(c_parser_conditional_expression): Likewise.
(c_parser_cast_expression): Likewise.
(c_parser_unary_expression): Likewise. Pull setting of
original_code to top of function.
(c_parser_sizeof_expression): Set original_type.
(c_parser_alignof_expression): Likewise.
(c_parser_postfix_expression): Likewise. Pull setting of
original_code to top of function.
(c_parser_postfix_expression_after_paren_type): Set
original_type.
(c_parser_postfix_expression_after_primary): Likewise.
(c_parser_expression): Likewise.
* c-typeck.c (build_external_ref): Add type parameter. Change all
callers.
(c_expr_sizeof_expr): Set original_type field.
(parser_build_unary_op): Likewise.
(parser_build_binary_op): Likewise. Optionally warn about
comparisons of enums of different types.
(digest_init): Set original_type field.
(really_start_incremental_init): Likewise.
(push_init_level, pop_init_level): Likewise.
* doc/invoke.texi (Warning Options): -Wenum-compare now
supported in C.
gcc/testsuite/:
* gcc.dg/Wenum-compare-1.c: New testcase.
From-SVN: r146127
2009-04-15 Richard Guenther <rguenther@suse.de>
* tree-ssa-pre.c (eliminate): When replacing a PHI node carry
out a necessary conversion.
* tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
names we didn't value number.
* tree-mudflap.c (mf_build_check_statement_for): Use correct types.
From-SVN: r146121
2009-04-15 Richard Guenther <rguenther@suse.de>
PR tree-optimization/39764
* tree-ssa-ccp.c (get_value): Canonicalize value with
canonicalize_float_value.
* g++.dg/torture/pr39764.C: New testcase.
From-SVN: r146120
2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch9.adb: Comment improvements.
(Build_Entry_Family_Name): Add parentheses around the index of a entry
family member.
2009-04-15 Bob Duff <duff@adacore.com>
* sem_warn.adb (Check_Infinite_Loop_Warning): Catch cases like
"while X /= null loop" where X is unchanged inside the loop. We were
not warning in this case, because of the pointers -- we feared that the
loop variable could be updated via a pointer, if there are any pointers
around the place. But that is impossible in this case.
* sem_util.adb (May_Be_Lvalue): This routine was overly pessimistic in
the case of dereferences. In X.all, X cannot be an l-value. We now
catch that case (and implicit dereferences, too).
2009-04-15 Vincent Celier <celier@adacore.com>
* sinput-p.ads, sinput-p.adb (Clear_Source_File_Table): New procedure
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Is_Actual_Of_Previous_Formal): Make fully recursive.
From code reading.
(Analyze_Package_Instantiation): If generic unit in child instance is
the same as generic unit in parent instance, look for an outer homonym
to locate the desired generic.
From-SVN: r146112
2009-04-15 Bob Duff <duff@adacore.com>
* sem_ch5.adb (Analyze_Loop_Statement): Don't check for infinite loop
warnings unless the loop comes from source, because checking generated
loops is a waste of time, and makes it harder to debug
Check_Infinite_Loop_Warning.
* sem_warn.adb (Check_Infinite_Loop_Warning): If the local variable
tested in the while loop is a renaming, do not warn. Otherwise, we get
false alarms, because it's usually renaming something that we can't
deal with (an indexed component, a global variable, ...).
* gnat_rm.texi: Fix typo
2009-04-15 Thomas Quinot <quinot@adacore.com>
* sem_ch6.adb: Minor reformatting
From-SVN: r146111
2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch7.adb (Expand_Ctrl_Function_Call): Check for the case where the
immediate parent of the controlled function call is a component
association.
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Use_One_Type): If the type is tagged, indicate that the
corresponding class-wide type is also in use.
2009-04-15 Thomas Quinot <quinot@adacore.com>
* frontend.adb: Minor comment fix
From-SVN: r146110
2009-04-15 Robert Dewar <dewar@adacore.com>
* gnatchop.adb (BOM_Length): New global variable
(Write_Unit): Add new parameter Write_BOM
(Write_Chopped_Files): Check for BOM and set Write_BOM for call
to Write_Unit
* gnat_ugn.texi: Add note on propagation of BOM by gnatchop
2009-04-15 Geert Bosch <bosch@adacore.com>
* system-mingw-x86_64.ads, system-darwin-x86_64.ads
(Backend_Overflow_Checks): Set to True.
2009-04-15 Gary Dismukes <dismukes@adacore.com>
* par-ch3.adb (P_Type_Declaration): Issue an error if the synchronized
keyword is given in a record extension.
2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch7.adb (Expand_Ctrl_Function_Call): Procede with the expansion
of a controlled function call in the context of a record aggregate.
This does not apply to array aggregates since the call will be expanded
into assignments.
2009-04-15 Ed Falis <falis@adacore.com>
* s-osinte-vxworks-kernel.adb, s-osinte-vxworks.adb,
s-osinte-vxworks.ads s-vxwext.ads, s-vxwext-kernel.adb,
s-vxwext-kernel.ads: Reorganize s-osinte-vxworks* and s-vxwext*.
From-SVN: r146108
2009-04-15 Robert Dewar <dewar@adacore.com>
* sem_ch13.adb (Unchecked_Conversions): Store source location instead
of node for location for warning messages.
* gnatchop.adb: Minor reformatting
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* exp_ch6.adb: additional guard for renaming declarations for in
parameters of an array type.
From-SVN: r146105
2009-04-15 Robert Dewar <dewar@adacore.com>
* sem_eval.adb (Get_Static_Length): Go to origin node for array bounds
in case they were rewritten by expander (Force_Evaluation).
* targparm.adb (Get_Target_Parameters): Correct check for
Suppress_Exception_Locations.
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* exp_ch6.adb (Expand_Inlined_Call): If an in-parameter in a call to be
inlined is of an array type that is not bit-packed, use a renaming
declaration to capture its value, rather than a constant declaration.
From-SVN: r146104
2009-04-15 Robert Dewar <dewar@adacore.com>
* rtsfind.adb: Minor reformatting.
2009-04-15 Emmanuel Briot <briot@adacore.com>
* prj-part.adb, prj-tree.adb, prj-tree.ads (Restore_And_Free): renames
Restore, and free the saved context.
2009-04-15 Gary Dismukes <dismukes@adacore.com>
* sem_ch3.adb (Analyze_Private_Extension_Declaration): Move error check
for illegal private extension from a synchronized interface parent in
front of check for illegal limited extension so that limited extension
from a synchronized interface will be rejected.
(Check_Ifaces): Check that a private extension that has a synchronized
interface as a progenitor must be explicitly declared synchronized.
Also check that a record extension cannot derive from a synchronized
interface.
From-SVN: r146103
2009-04-15 Pascal Obry <obry@adacore.com>
* adaint.h (__gnat_unlink): Add spec.
(__gnat_rename): Likewise.
2009-04-15 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb: Minor spelling error corrections in error messages
2009-04-15 Robert Dewar <dewar@adacore.com>
* sinfo.ads: Minor comment update
* opt.ads: Minor comment updates
* checks.adb (Enable_Overflow_Check): Do not set Do_Overflow_Check for
modular type.
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* exp_disp.ads, exp_disp.adb (Register_Primitive): Is now a function
that generates the code needed to update a dispatch table when a
primitive operation is declared with a subprogram body without previous
spec. Insertion of the generated code is responsibility of the caller.
(Make_DT): When building static tables, append the code created by
Register_Primitive to update a secondary table after it has been
constructed.
* exp_ch3.adb, exp_ch6.adb: use new version of Register_Primitive.
* sem_disp.adb (Check_Dispatching_Operation): Call Register_Primitive
on an overriding operation that implements an interface operation only
if not building static dispatch tables.
2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
* a-caldel-vms.adb (To_Duration): Declare a "safe" end of time which
does not cause overflow when converted to Duration. Use the safe value
as the maximum allowable time delay..
2009-04-15 Jerome Lambourg <lambourg@adacore.com>
* g-comlin.adb (Set_Command_Line): When adding a switch with attached
parameter, specify that the delimiter is NUL, otherwise "-j2" will be
translated to "-j 2".
2009-04-15 Bob Duff <duff@adacore.com>
* rtsfind.adb (Maybe_Add_With): Split out procedure to add implicit
with_clauses, to avoid code duplication. Change this processing so we
always add a with_clause on the main unit if needed.
From-SVN: r146102
2009-04-15 Pascal Obry <obry@adacore.com>
Add support for Win32 native encoding for delete/rename routines.
* adaint.c (__gnat_unlink): New routine.
(__gnat_rename): New routine.
Simple wrapper routines used to convert to proper encoding on
Windows.
* s-os_lib.adb: Use __gnat_unlink and __gnat_rename instead of direct
call to the C library.
* g-sercom-mingw.adb, s-win32.ads: Update Win32 binding.
2009-04-15 Robert Dewar <dewar@adacore.com>
* s-tassta.adb: Minor reformatting
From-SVN: r146101
2009-04-15 Robert Dewar <dewar@adacore.com>
* frontend.adb (Frontend): Set proper default for
Warn_On_Non_Local_Exception.
* opt.ads (Exception_Handler_Encountered): New flag
(No_Warn_On_Non_Local_Exception): New flag
* par-ch11.adb (P_Exception_Handler): Set Exception_Handler_Encountered
* sem_warn.adb (Set_Warning_Switch): Set No_Warn_On_Non_Local_Exception
(Set_Dot_Warning_Switch): Set No_Warn_On_Non_Local_Exception
2009-04-15 Cyrille Comar <comar@adacore.com>
* s-tassta.adb, a-exextr.adb, a-elchha.adb
(Ada.Exception.Last_Chance_Handler): Do not print unhandled exception
message when exception traces are active since it would generate
redundant information.
(Exception_Traces.Notify_Exception): put message output by a critical
section to avoid unsynchronized output.
(Trace_Unhandled_Exception_In_Task): put message output by a critical
section to avoid unsynchronized output.
2009-04-15 Emmanuel Briot <briot@adacore.com>
* g-comlin.adb, prj-tree.adb, prj-tree.ads, prj.adb, prj.ads
(Free): New subprogram.
From-SVN: r146100
2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
* a-calend.adb: Add new constant Nanos_In_Four_Years.
(Formatting_Operations.Time_Of): Change the way four year chunks of
nanoseconds are added to the intermediate result.
2009-04-15 Nicolas Setton <setton@adacore.com>
* sysdep.c: Add __APPLE__ in the list of systems where get_immediate
does not need to wait for a carriage return.
2009-04-15 Tristan Gingold <gingold@adacore.com>
* bindgen.adb: Do not generate adafinal if No_Finalization restriction
is set.
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Freeze_Entity): improve error message for improper use of
incomplete types.
Diagnose additional illegal uses of incomplete types in formal parts.
appearing in formal parts.
* sem_ch6.adb (Process_Formals, Analyze_Return_Type): ditto.
2009-04-15 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb (Expand_N_Allocator): Install test for object too large.
From-SVN: r146098
2009-04-15 Nicolas Roche <roche@adacore.com>
* adaint.c: Add function __gnat_lwp_self that retrieves the LWP of the
current thread.
* s-osinte-linux.ads: Import the __gnat_lwp_self function as lwp_self
* s-taprop-linux.adb (Enter_Task): Store the LWP in the TCB
From-SVN: r146097
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb: improve error message on exponentiation.
2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
* a-calend.adb: Move constant Epoch_Offset from package
Conversion_Operations to top level.
(Delay_Operations.To_Duration): Define a constant which represents
"end of time" and use it as a guard against very distant delay dates.
Protect the code against overflow when performing the origin shift to
Unix time.
From-SVN: r146095
2009-04-15 Robert Dewar <dewar@adacore.com>
* sem_prag.adb: Minor reformatting.
* sem_type.adb: Minor reformatting
2009-04-15 Javier Miranda <miranda@adacore.com>
* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Add missing
support to check eliminated subprograms.
* sem_elim.ads (Eliminate_Error_Msg): Update documentation.
* sem_elim.adb (Set_Eliminated): Add support for elimination of
dispatching subprograms.
* exp_disp.adb (Make_DT): Minor code cleanup when freezing primitive
operations. Initialize with "null" the slots of eliminated dispaching
primitives.
(Write_DT): Add output for eliminated primitives.
* sem_disp.adb (Check_Dispatching_Call): Check eliminated primitives.
From-SVN: r146093
./ * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
our distinct integral and vector types.
testsuite/
* g++.dg/ext/altivec-17.C: New.
From-SVN: r146092
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Use_One_Type): If both clauses appear on the same unit,
the second is redundant, regardless of scopes.
2009-04-15 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Get_Directories): Check for sources before checking
the object directory as when there are no sources, they may not be any
object directory.
* make.adb (Gnatmake): Do not attempt to get the path name of the exec
directory, when there are no exec directory.
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* sem_type.adb (Remove_Conversions): In order to resolve spurious
ambiguities, refine removal of universal interpretations from complex
expressions with literal arguments, when some numeric operators have
been declared abstract.
2009-04-15 Ed Falis <falis@adacore.com>
* init.c: Map SIGSEGV to Storage_Error for all targets for uniformity
and backward compatibility for targets using probing for stack overflow
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* sem_prag.adb (Analyze_Pragma, case 'Obsolescent): Pragma is legal
after any declaration, including renaming declarations.
From-SVN: r146091
2009-04-15 Javier Miranda <miranda@adacore.com>
* exp_ch4.adb (Expand_N_Allocator): Code cleanup.
* sem_ch6.adb (Check_Anonymous_Return): Add missing support for
functions returning anonymous access to class-wide limited types. Mark
also the containing scope as a task master.
* sem_ch8.adb (Restore_Scope_Stack): Add missing management for
limited-withed packages. Required to restore their visibility after
processing packages associated with implicit with-clauses.
* exp_ch3.adb (Build_Class_Wide_Master): Avoid marking masters
associated with return statements because this work is now done by
Check_Anonymous_Return.
(Build_Master): Code cleanup.
From-SVN: r146089
2009-04-15 Thomas Quinot <quinot@adacore.com>
* sem_warn.ads: Minor reformatting
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb: better error message for illegal interfaces
* sem_ch6.adb (Possible_Freeze): Delay freezing a subprogram if a
formal is an incomplete type from a limited_with clause.
From-SVN: r146086
2009-04-15 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Locate_Directory): New Boolean parameter
Externally_Built indicating if the project is externally built. If it
is, and --subdirs is specified, but the subdir does not exist, look
for the specified directory, without the subdir.
From-SVN: r146085
2009-04-15 Thomas Quinot <quinot@adacore.com>
* exp_smem.adb (Make_Shared_Var_Procs): For a protected type,
instantiate generic shared object package with the corresponding
record type.
From-SVN: r146083
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb (Analyze_Type_Declaration): Create freeze node for access
type even if the designated type comes from a limited_with clause, to
ensure that the symbol for the finalization list of the access type is
created.
From-SVN: r146081