Ed Schonberg [Fri, 22 Aug 2008 13:26:28 +0000 (15:26 +0200)]
2008-08-22 Ed Schonberg <schonberg@adacore.com>
* exp_tss.adb:
(Base_Init_Proc): For a protected subtype, use the base type of the
corresponding record to locate the propoer initialization procedure.
Ed Schonberg [Fri, 22 Aug 2008 12:41:30 +0000 (14:41 +0200)]
exp_ch5.adb (Expand_Simple_Function_Return): If secondary stack is involved and the return type is class-wide...
2008-08-22 Ed Schonberg <schonberg@adacore.com>
* exp_ch5.adb (Expand_Simple_Function_Return): If secondary stack is
involved and the return type is class-wide, use the type of the expression
for the generated access type. Suppress useless discriminant checks on the
allocator.
Gary Dismukes [Fri, 22 Aug 2008 12:12:04 +0000 (14:12 +0200)]
exp_aggr.adb (Static_Array_Aggregate): When a static array aggregate with a range is transformed into a positional...
2008-08-22 Gary Dismukes <dismukes@adacore.com>
* exp_aggr.adb (Static_Array_Aggregate): When a static array aggregate
with a range is transformed into a positional aggregate, any copied
component literals should be marked Is_Static_Expression.
* sem_eval.adb (Compile_Time_Known_Value): Don't treat null literals as
not being known at at compile time when Configurable_Run_Time_Mode is
true.
Eric Botcazou [Fri, 22 Aug 2008 12:11:31 +0000 (14:11 +0200)]
init.c (__gnat_adjust_context_for_raise): Delete for AIX, HP-UX, Solaris, FreeBSD, VxWorks and PowerPC/Linux.
2008-08-22 Eric Botcazou <ebotcazou@adacore.com>
* init.c (__gnat_adjust_context_for_raise): Delete for AIX, HP-UX,
Solaris, FreeBSD, VxWorks and PowerPC/Linux. For x86{-64}/Linux,
do not adjust the PC anymore.
(__gnat_error_handler): Do not call __gnat_adjust_context_for_raise
on AIX, HP-UX, Solaris, FreeBSD and VxWorks.
* raise-gcc.c (get_call_site_action_for): Use _Unwind_GetIPInfo
instead of _Unwind_GetIP.
Daniel Kraft [Fri, 22 Aug 2008 10:53:40 +0000 (12:53 +0200)]
gfortran.h (in_prefix): Removed from this header.
2008-08-22 Daniel Kraft <d@domob.eu>
* gfortran.h (in_prefix): Removed from this header.
* match.h (gfc_matching_prefix): Moved and renamed from `in_prefix'.
* decl.c (in_prefix): Removed from here.
(gfc_match_prefix): Use new name of `gfc_matching_prefix'.
* symbol.c (gfc_check_symbol_typed): Ditto.
* expr.c (check_typed_ns): New helper variable.
(expr_check_typed_help): New helper method.
(gfc_expr_check_typed): Rewrote to use gfc_traverse_expr to do the
work, fixing a minor problem.
* match.c (gfc_matching_prefix): New variable.
Arnaud Charlet [Fri, 22 Aug 2008 09:03:53 +0000 (11:03 +0200)]
exp_attr.adb (Expand_N_Attribute_Reference): In case of access attributes add missing support to handle designated types...
2008-08-22 Javier Miranda <miranda@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference): In case of access
attributes add missing support to handle designated types that come
from the limited view.
Ed Schonberg [Fri, 22 Aug 2008 09:03:16 +0000 (11:03 +0200)]
sem_ch8.adb (Use_One_Type): when checking which of two use_type clauses in related units is redundant...
2008-08-22 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Use_One_Type): when checking which of two use_type
clauses in related units is redundant, if one of the units is a package
instantiation, use its instance_spec to determine which unit is the
ancestor of the other.
Arnaud Charlet [Fri, 22 Aug 2008 08:54:46 +0000 (10:54 +0200)]
make.adb (Check.File_Not_A_Source_Of): New Boolean function
2008-08-22 Vincent Celier <celier@adacore.com>
* make.adb (Check.File_Not_A_Source_Of): New Boolean function
(Check): Check if the file names registered in the ALI file for the
spec, the body and each of the subunits are the ones expected.
Daniel Kraft [Fri, 22 Aug 2008 07:13:25 +0000 (09:13 +0200)]
re PR fortran/32095 (Accepts invalid character(len(a)),dimension(1) :: a)
2008-08-22 Daniel Kraft <d@domob.eu>
PR fortran/32095
PR fortran/34228
* gfortran.h (in_prefix): New global.
(gfc_check_symbol_typed), (gfc_check_expr_typed): New methods.
* array.c (match_array_element_spec): Check that bounds-expressions
don't have symbols not-yet-typed in them.
* decl.c (var_element): Check that variable used is already typed.
(char_len_param_value): Check that expression does not contain
not-yet-typed symbols.
(in_prefix): New global.
(gfc_match_prefix): Record using `in_prefix' if we're at the moment
parsing a prefix or not.
* expr.c (gfc_expr_check_typed): New method.
* parse.c (verify_st_order): New argument to disable error output.
(check_function_result_typed): New helper method.
(parse_spec): Check that the function-result declaration, if given in
a prefix, contains no not-yet-typed symbols when the IMPLICIT rules are
parsed.
* symbol.c (gfc_check_symbol_typed): Check that a symbol already has
a type associated to it, otherwise use the IMPLICIT rules or signal
an error.
2008-08-22 Daniel Kraft <d@domob.eu>
PR fortran/32095
PR fortran/34228
* gfortran.dg/used_before_typed_1.f90: New test.
* gfortran.dg/used_before_typed_2.f90: New test.
* gfortran.dg/used_before_typed_3.f90: New test.
* gfortran.dg/array_constructor_26.f03: Add -std=gnu to not enable
legacy-behaviour for the new check.
* gfortran.dg/array_constructor_27.f03: Ditto.
* gfortran.dg/blockdata_4.f90: Ditto.
* gfortran.dg/bound_2.f90: Reordered declarations to satisfy the check.
* gfortran.dg/result_in_spec_1.f90: Ditto.
* gfortran.dg/argument_checking_7.f90: Adapted expected error messages.
Nathan Froyd [Thu, 21 Aug 2008 15:37:05 +0000 (15:37 +0000)]
libgomp.exp (libgomp_init): Only set things that depend on blddir if blddir exists.
* testsuite/libgomp.exp (libgomp_init): Only set things that
depend on blddir if blddir exists.
(libgomp_target_compile): Likewise.
* testsuite/libgomp.c++/c++.exp: Likewise.
* testsuite/libgomp.fortran/fortran.exp: Likewise.
Jan Hubicka [Thu, 21 Aug 2008 15:26:59 +0000 (17:26 +0200)]
cgraph.c (first_cgraph_function_insertion_hook): New variable.
* cgraph.c (first_cgraph_function_insertion_hook): New variable.
(cgraph_add_function_insertion_hook, cgraph_remove_function_insertion_hook,
cgraph_call_function_insertion_hooks): New functions.
* cgraph.h (cgraph_add_function_insertion_hook, cgraph_remove_function_insertion_hook,
cgraph_call_function_insertion_hooks): Declare.
* ipa-reference.c (function_insertion_hook_holder): New variable.
(check_operand, look_for_address_of): When checking late, do not care
about module bitmaps.
(add_new_function): New function.
(generate_summary): Register hooks; zero module bitmaps.
(propagate): Unregister hooks.
* ipa-pure-const.c (function_insertion_hook_holder): New variable.
(add_new_function): New function.
(generate_summary): Register hook.
(propagate): Remove hook.
* ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
* tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
* ipa-cp.c (ipcp_update_cloned_node): New function.
(build_const_val): Handle functions correctly; bring type logic
into sync with tree-inline.c
(ipcp_init_stage): Take care of computing stuff needed by
indirect inlining; update clones.
(ipcp_generate_summary): Break out of ipcp_driver.
(ipcp_driver): Do only execution and transformation.
(pass_ipa_cp): Make IPA_PASS.
* tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
offset to address.
* ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
ipcp, some info is already available.
* ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
* tree-inline.c (remap_ssa_name): Unshare expression.
Richard Guenther [Thu, 21 Aug 2008 15:18:58 +0000 (15:18 +0000)]
tree-ssa-pre.c (insert_into_preds_of_block): Before inserting a PHI ask VN if it is already available.
2008-08-21 Richard Guenther <rguenther@suse.de>
* tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
a PHI ask VN if it is already available.
* tree-ssa-sccvn.h (vn_phi_lookup): Declare.
* tree-ssa-sccvn.c (vn_phi_lookup): Export.
Jan Hubicka [Thu, 21 Aug 2008 12:39:35 +0000 (14:39 +0200)]
Backport from LTO branch:
2008-05-05 Kenneth Zadeck <zadeck@naturalbridge.com>
Jan Hubicka <jh@suse.cz>
* ipa-pure-const.c
(init_state, finish_state, set_function_state, generate_summary):
New functions.
(scan_stmt): Renamed from scan_function. Changed to keep state in
local static vars rather than cgraph aux field.
(propagate): Renamed from static_execute. Changed to keep state in
local static vars rather than cgraph aux field.
(pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
* tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
* tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
* ipa-reference.c (init_function_info, generate_summary,
propagate): New functions.
(analyze_function): Call init_function_info.
(static_execute): Stripped into generate_summary and propagate.
(pass_ipa_reference): Made into ipa_opt_pass.
re PR middle-end/179 (-Wuninitialized missing warning with &var)
2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR middle-end/179
* tree-ssa.c (warn_uninit): Do not warn for variables that can be
initialized outside the current module.
(warn_uninitialized_var): Ignore left-hand side when walking the
trees. Ignore address expressions. Examine VUSE operands in gimple
statements with a variable declaration on the right-hand side.
testsuite/
* gcc.dg/uninit-6.c (make_something): Remove XFAIL.
* gcc.dg/uninit-6-O0.c (make_something): Remove XFAIL.
* gcc.dg/uninit-B.c (baz): Remove XFAIL.
* gcc.dg/uninit-B-2.c: New.
* gcc.dg/uninit-B-O0-2.c: New.
* gcc.dg/uninit-pr19430-O0.c: New.
* gcc.dg/uninit-pr19430.c: New.
* gcc.dg/uninit-pr19430-2.c: New.
Emmanuel Briot [Wed, 20 Aug 2008 16:12:38 +0000 (18:12 +0200)]
2008-08-20 Emmanuel Briot <briot@adacore.com>
* g-catiio.ads, g-catiio.adb:
(Value): Avoid an unnecessary system call to Clock in most cases.
This call is only needed when only the time is provided in the string,
and ignored in all other cases. This is more efficient.
Vincent Celier [Wed, 20 Aug 2008 16:11:55 +0000 (18:11 +0200)]
2008-08-20 Vincent Celier <celier@adacore.com>
* ali.adb:
(Scan_ALI): Use Name_Find, not Name_Enter to get the name of a subunit,
as the name may already have been entered in the table by the Project
Manager.
Richard Guenther [Wed, 20 Aug 2008 16:01:59 +0000 (16:01 +0000)]
tree-vrp.c (op_with_constant_singleton_value_range): New function.
2008-08-20 Richard Guenther <rguenther@suse.de>
* tree-vrp.c (op_with_constant_singleton_value_range): New function.
(extract_range_from_binary_expr): Fall back to constant propagation.
(extract_range_from_unary_expr): Likewise.
* gcc.dg/tree-ssa/pr21829.c: Scan optimized and cddce2 dumps
instead of phicprop2. Make sure all is fine after cddce2,
add an XFAILed scan for merging the two remaining ifs.
Arnaud Charlet [Wed, 20 Aug 2008 15:43:11 +0000 (17:43 +0200)]
styleg-c.ads, [...] (Missing_Overriding): new procedure to implement style check that overriding operations are...
2008-08-20 Ed Schonberg <schonberg@adacore.com>
* styleg-c.ads, styleg-c.adb (Missing_Overriding): new procedure to
implement style check that overriding operations are explicitly marked
at such.
* style.ads (Missing_Overriding): new procedure that provides interface
to previous one.
* stylesw.ads, stylesw.adb: New style switch -gnatyO, to enable check
that the declaration or body of overriding operations carries an
explicit overriding indicator.
* sem_ch8.adb
(Analyze_Subprogram_Renaming): if operation is overriding, check whether
explicit indicator should be present.
* sem_ch6.adb (Verify_Overriding_Indicator,
Check_Overriding_Indicator): If operation is overriding, check whether
declaration and/or body of subprogram should be present
Vincent Celier [Wed, 20 Aug 2008 15:42:52 +0000 (17:42 +0200)]
make.adb (Gnatmake_Switch_Found): New Boolean global variable
2008-08-20 Vincent Celier <celier@adacore.com>
* make.adb (Gnatmake_Switch_Found): New Boolean global variable
(Switch_May_Be_Passed_To_The_Compiler): New Boolean global variable
(Add_Switches): New Boolean parameter Unknown_Switches_To_The_Compiler
defaulted to True. Fail when Unknown_Switches_To_The_Compiler is False
and a switch is not recognized by gnatmake.
(Gnatmake): Implement new scheme for gnatmake switches and global
compilation switches.
(Switches_Of): Try successively Switches (<file name>),
Switches ("Ada"), Switches (others) and Default_Switches ("Ada").
Gary Dismukes [Wed, 20 Aug 2008 15:29:44 +0000 (17:29 +0200)]
exp_ch3.adb (Build_Array_Init_Proc): Clarify comment related to creating dummy init proc.
2008-08-20 Gary Dismukes <dismukes@adacore.com>
* exp_ch3.adb (Build_Array_Init_Proc): Clarify comment related to
creating dummy init proc.
(Requires_Init_Proc): Return False in the case No_Default_Initialization
is in force and the type does not have associated default
initialization. Move test of Is_Public (with tests of restrictions
No_Initialize_Scalars and No_Default_Initialization) to end, past tests
for default initialization.
Vincent Celier [Wed, 20 Aug 2008 15:29:33 +0000 (17:29 +0200)]
prj-nmsc.adb (Check_Naming_Schemes): Accept source file names for gprbuild when casing is MixedCase...
2008-08-20 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Check_Naming_Schemes): Accept source file names for
gprbuild when casing is MixedCase, whatever the casing of the letters
in the file name.
* exp_ch5.adb (Controlled_Type): New routine.
(Expand_N_Extended_Return_Statement): When generating a move of the
final list in extended return statements, check the type of the
function and in the case of double expanded return statements, the type
of the returned object.
(Expand_Simple_Function_Return): Perform an interface conversion when
the type of the returned object is an interface and the context is an
extended return statement.
* exp_ch4.adb (Expand_N_And_Then, Expand_N_Or_Else): Improve constant
folding. We were folding things like "False and then ...", but not
"X and then ..." where X is a constant whose value is known at compile
time.
Thomas Quinot [Wed, 20 Aug 2008 14:27:01 +0000 (16:27 +0200)]
exp_strm.adb (Build_Elementary_Input_Call, [...]): Fix incorrect condition in circuitry that selects the stream attribute routines...
2008-08-20 Thomas Quinot <quinot@adacore.com>
* exp_strm.adb (Build_Elementary_Input_Call,
Build_Elementary_Write_Call): Fix incorrect condition in circuitry that
selects the stream attribute routines for long float types.