Mark Mitchell [Thu, 12 Aug 2004 17:58:24 +0000 (17:58 +0000)]
re PR c++/16273 (Memory exhausted when using nested classes and virtual functions)
PR c++/16273
* class.c (count_depth_data): New type.
(dfs_depth_post): New function.
(dfs_depth_q): Likewise.
(find_final_overrider_data_s): Change type of vpath.
Add vpath_list.
(dfs_find_final_overrider_1): New function.
(dfs_find_final_overrider): Use it.
(dfs_find_final_overrider_q): Adjust use of vpath.
(dfs_find_final_overrider_post): Likewise.
(find_final_overrider): Use dfs_depth. Allocate and deallocate
vpath_list.
Hans Boehm [Thu, 12 Aug 2004 17:56:32 +0000 (17:56 +0000)]
re PR libgcj/16662 (IllegalMonitorStateException in EventQueue.getNextEvent(): possible hash synchronization bug?)
PR libgcj/16662
* java/lang/natObject.cc (LOCK_LOG, LOG): Add debug tracing.
(Almost everywhere): add LOG calls, fix, add comments.
(_Jv_MonitorEnter): Replace masking of LOCKED bit with assertion.
Add explicit check for LOCKED bit in slow case (PR 16662).
(_Jv_MonitorExit): Add casts in debug-only code.
Always release LOCKED bit before throwing exception.
(_Jv_ObjectCheckMonitor): Lock may be held if lightweight lock
isn't. Handle easy cases without lock acquisition.
(Object::wait): Use NotifyAll for lock inflation.
Andreas Krebbel [Thu, 12 Aug 2004 17:40:02 +0000 (17:40 +0000)]
s390.c (struct s390_frame_layout): New struct as element of struct machine_function.
2004-08-12 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (struct s390_frame_layout): New struct as element
of struct machine_function.
(cfun->machine->frame_size): Moved into cfun->machine->frame_layout and
changed all uses.
(cfun->machine->save_fprs_p): Replaced by cfun_save_high_fprs and
changed all uses.
(cfun_frame_layout, cfun_save_high_fprs_p, cfun_gprs_save_area_size)
(cfun_set_fpr_bit, cfun_fpr_bit_p): New macros.
(s390_frame_area, s390_register_info): New functions.
(s390_optimize_prolog): Renamed to s390_optimize_prologue. Added check
for base register.
(s390_return_addr_rtx, s390_return_address_offset)
(s390_va_start, s390_gimplify_va_arg)
(s390_emit_prologue, s390_emit_epilogue): Adjusted for new stack
layouts.
(s390_frame_info): Functionality partly moved to s390_register_info.
Made adaptions for new stack layout.
(save_gprs, restore_gprs): Changed meaning of second parameter and
adapted all callers.
* config/s390/s390.h (s390_backchain_string): New global variable.
(MASK_BACKCHAIN): Removed definition.
(TARGET_BACKCHAIN): Changed check.
(TARGET_KERNEL_BACKCHAIN): New macro.
(TARGET_SWITCHES): Removed entries of "backchain" and "no-backchain".
(TARGET_OPTIONS): Added "backchain", "no-backchain" and
"kernel-backchain".
(DYNAMIC_CHAIN_ADDRESS): Adjusted for new stack layouts.
* config/s390/s390.md ("allocate_stack"): Added TARGET_KERNEL_BACKCHAIN
as condition. Adjusted for new stack layout.
* doc/invoke.texi: Added documentation for new option
"-mkernel-backchain" and adjusted documentation of "-mbackchain" and
"-mno-backchain".
David Edelsohn [Thu, 12 Aug 2004 15:05:38 +0000 (15:05 +0000)]
expr.c (move_by_pieces): Set alignment for move to minimum of MOVE_MAX_PIECES mode alignment and the...
* expr.c (move_by_pieces): Set alignment for move to minimum of
MOVE_MAX_PIECES mode alignment and the largest non-slow mode
alignment, but not less than the original alignment.
(move_by_pieces_ninsns): Same.
(can_store_by_pieces): Similar for store with STORE_MAX_PIECES.
(store_by_pieces_1): Same.
Diego Novillo [Thu, 12 Aug 2004 14:34:11 +0000 (14:34 +0000)]
re PR tree-optimization/16867 (Inline array initializer miscompilation at -O)
PR tree-optimization/16867
* tree.c (is_global_var): New function.
(needs_to_live_in_memory): Check for TREE_ADDRESSABLE.
Call is_global_var.
* tree.h (DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL): Remove.
Update all users.
(is_global_var): Declare.
* tree-dfa.c (dump_variable): Display global and addressable
attributes.
(add_referenced_var): Clarify documentation when marking
variables call-clobbered.
* tree-flow-inline.h (is_call_clobbered): Call is_global_var
instead of needs_to_live_in_memory.
(mark_call_clobbered): If the variable is a tag, mark it
DECL_EXTERNAL.
* tree-gimple.c (is_gimple_reg): Don't check for
TREE_ADDRESSABLE.
(is_gimple_non_addressable): Likewise.
* tree-ssa-alias.c (get_nmt_for): Always check whether the tag
needs to be marked call-clobbered.
(setup_pointers_and_addressables): Call is_global_var instead
of needs_to_live_in_memory.
* tree-ssa-dce.c (need_to_preserve_store): Remove.
Update all users with is_global_var.
(mark_stmt_if_obviously_necessary): Fix processing of aliased
stores. Don't check the virtual definitions. Rather, check
whether the store is going into global memory.
(find_obviously_necessary_stmts): Get the symbol from the PHI
result.
* tree-ssa-operands.c (get_call_expr_operands): Do not add
clobbering may-defs if the call does not have side effects.
libjava/ChangeLog
PR tree-optimization/16867
* testsuite/libjava.lang/PR16867.java: New test.
Jan Beulich [Thu, 12 Aug 2004 09:46:39 +0000 (09:46 +0000)]
2004-08-12 Jan Beulich <jbeulich@novell.com>
* config/locale/generic/ctype_members.cc
(ctype<wchar_t>::_M_convert_to_wmask): Default case must not use 0 as
initializer for return value, as that is invalid for enumerated types.
* config/locale/gnu/ctype_members.cc
(ctype<wchar_t>::_M_convert_to_wmask): Likewise.
Jan Beulich [Thu, 12 Aug 2004 09:34:16 +0000 (09:34 +0000)]
parser.c (cp_parser_asm_definition): Properly consume scope operator tokens preceding the clobbers.
cp/
2004-08-12 Jan Beulich <jbeulich@novell.com>
* parser.c (cp_parser_asm_definition): Properly consume scope operator
tokens preceding the clobbers. Don't check for scope operator
following inputs. Simplify inputs handling to match that now used for
clobbers.
testsuite/
2004-08-12 Jan Beulich <jbeulich@novell.com>
Zack Weinberg [Thu, 12 Aug 2004 07:49:00 +0000 (07:49 +0000)]
genpreds.c: Add capability to generate predicate bodies as well as function prototypes.
* genpreds.c: Add capability to generate predicate bodies as
well as function prototypes. Write function prototypes for
the generic predicates too.
(process_define_predicate, write_tm_preds_h, write_insn_preds_c)
(write_predicate_subfunction, mark_mode_tests, add_mode_tests)
(write_match_code, write_predicate_expr, write_one_predicate_function)
(parse_option): New functions.
(output_predicate_decls): Delete.
(main): Read the machine description, process DEFINE_PREDICATE or
DEFINE_SPECIAL_PREDICATE patterns, write tm-preds.h or insn-preds.c
as appropriate.
* genrecog.c (struct decision_test): Replace index with
struct pred_data pointer.
(next_index): Remove, unused.
(pred_table, preds, special_mode_pred_table): Delete.
(compute_predicate_codes, process_define_predicate): New functions.
(validate_pattern, add_to_sequence, write_switch): Update for
new data structures.
(main): Handle DEFINE_PREDICATE and DEFINE_SPECIAL_PREDICATE.
Check both error_count and have_error.
* gensupport.c (in_fname, first_predicate): New globals.
(define_pred_queue, define_pred_tail): New RTL-pattern queue.
(predicate_table, last_predicate, old_pred_table)
(old_special_pred_table): New statics.
(hash_struct_pred_data, eq_struct_pred_data, lookup_predicate)
(add_predicate, init_predicate_table): New functions.
(process_rtx): Handle DEFINE_PREDICATE and DEFINE_SPECIAL_PREDICATE.
(init_md_reader_args_cb): Use the global in_fname. No need to zero
it or max_include_len. Call init_predicate_table.
(read_rtx): Run the predicate queue after the attribute queue
but before all the others.
* gensupport.h (in_fname, struct pred_data, first_predicate)
(lookup_predicate, add_predicate, FOR_ALL_PREDICATES): Declare.
* rtl.def (MATCH_CODE, MATCH_TEST, DEFINE_PREDICATE)
(DEFINE_SPECIAL_PREDICATE): New RTL codes.
* dummy-conditions.c: Don't include bconfig.h, system.h,
coretypes.h, tm.h, or system.h. Do include stddef.h.
Duplicate declaration of struct c_test from gensupport.h.
* recog.h: Delete prototypes of predicate functions.
* doc/md.texi (Predicates): New section with complete
documentation of operand/operator predicates. Remove some
incomplete documentation of predicates from other places.
* doc/tm.texi (Misc): Move SPECIAL_MODE_PREDICATES next to
PREDICATE_CODES; indicate that both are deprecated in favor
of define_predicate/define_special_predicate.
* config/ia64/ia64.c: All predicate function definitions moved
to ia64.md, except
(small_addr_symbolic_operand, tls_symbolic_operand): Delete.
(ia64_expand_load_address, ia64_expand_move):
Check SYMBOL_REF_TLS_MODEL directly, don't use tls_symbolic_operand.
* config/ia64/ia64.md: All predicates now defined here.
(symbolic_operand): Is now a special predicate.
* c-common.h (STATEMENT_LIST_HAS_LABEL): New.
* c-semantics.c (add_stmt): Set it.
* c-decl.c (finish_decl): Use it to create a new BIND_EXPR
before instantiating a variable sized type.
Ziemowit Laski [Thu, 12 Aug 2004 01:53:01 +0000 (01:53 +0000)]
(This patch is part of merge of objc-improvements-branch into mainline.)
[gcc/ChangeLog]
2004-08-12 Ziemowit Laski <zlaski@apple.com>
(This patch is part of merge of objc-improvements-branch
into mainline.)
* doc/frontends.texi: Mention Objective-C++ in addition to
Objective-C.
* doc/install.texi: Add 'obj-c++' to list of configurable
languages.
* doc/invoke.texi: Rename Objective-C option headings to
indicate they also apply to Objective-C++. List file
extensions for Objective-C++ sources. Mention that
ObjC and ObjC++ compilations may also use C and C++ options,
respectively. Point users to doc/standards.texi for
further info on ObjC and ObjC++.
* doc/sourcebuild.texi: Mention the objcp/ directory and
the Objective-C++ sources it contains.
* doc/standards.texi: Update link to Apple ObjC site;
add link to gcc readings.html WWW doc.
Paul Brook [Wed, 11 Aug 2004 20:59:15 +0000 (20:59 +0000)]
arm.c (thumb_force_lr_save): Add prototype.
* arm.c (thumb_force_lr_save): Add prototype.
(thumb_compute_save_reg_mask): New function.
(thumb_find_work_register): New function.
(arm_get_frame_offsets): Use thumb_compute_save_reg_mask.
(thumb_unexpanded_epilogue): Ditto. Remove redundant code.
Don't clobber r3 when removing pretend args.
(thumb_expand_prologue): Use thumb_compute_save_reg_mask.
(thumb_output_function_prologue): Use new functions.
(thumb_set_return_address): Use thumb_compute_save_reg_mask.
* arm.h (THUMB_REG_PUSHED_P): Remove.
James E Wilson [Wed, 11 Aug 2004 20:08:00 +0000 (20:08 +0000)]
Fix -fprofile-use ICE.
PR rtl-optimization/16490
* cfgrtl.c (cfg_layout_split_edge): Set global_live_at_start and
global_live_at_end for new basic block if already set for other blocks.
Andrew MacLeod [Wed, 11 Aug 2004 17:50:47 +0000 (17:50 +0000)]
tree-flow-inline.h (get_def_ops, [...]): Add operand structure reference.
2004-08-11 Andrew MacLeod <amacleod@redhat.com>
* tree-flow-inline.h (get_def_ops, get_use_ops, get_v_may_def_ops,
get_vuse_ops,get_v_must_def_ops): Add operand structure reference.
(get_v_may_def_result_ptr, get_v_may_def_op_ptr): New access struct.
(start_ssa_stmt_operands): Delete.
* tree-flow.h (struct stmt_ann_d): Replace operand vectors with new
struct stmt_operands_d.
(build_ssa_operands): New extern entry point.
* tree-ssa-dom.c (record_equivalences_from_stmt): Remove operand
building code, replace with create_ssa_artficial_load_stmt().
* tree-ssa-operands.c (struct voperands_d): Delete.
(allocate_v_may_def_optype): Allocate v_may_def_operand_type_t vector.
(allocate_v_must_def_optype): Use sizeof (tree), not sizeof (tree *).
(free_uses, free_defs, free_vuses, free_v_may_defs,
free_v_must_defs): Remove dealloc parameter.
(remove_vuses, remove_v_may_def, remove_v_must_defs): Delete.
(finalize_ssa_defs, finalize_ssa_uses, finalize_ssa_v_may_defs,
finalize_ssa_vuses, finalize_ssa_v_must_defs): Perform all operand
vector comparisons, ssa_name reuse, and allocations here.
(verify_start_operands): Delete.
(finalize_ssa_stmt_operands): Set new operands by calling finalize
routines.
(start_ssa_stmt_operands): Move from tree-flow-inline.h.
(append_def, append_usei): Simplify to simple accumulation.
(append_v_may_def, append_vuse, append_v_must_def): Simplify to avoiding
duplicates and simple accumulation.
(free_ssa_operands): Free vectors in a stmt_operand structure.
(build_ssa_operands): New. Create a new stmt_operand structure from
a stmt and an old set of stmt_operands.
(get_stmt_operands): Simplify and call build_ssa_operands.
(get_expr_operands, get_asm_expr_operands, get_indirect_ref_operands,
get_call_expr_operands, add_stmt_operand, add_call_clobber_ops,
add_call_read_ops): Don't pass prev_vops around anymore.
(note_addressable): Return if no stmt annotation.
(copy_virtual_operands): Access v_may_def operands through a struct.
(create_ssa_artficial_load_stmt): New. Create a load stmt for DOM's
hash tables without treating the stmt as a real stmt.
* tree-ssa-operands.h (struct v_may_def_operand_type): New. Access
v_may_def def and use through a struct instead of 2 array elements.
(struct v_may_def_optype_d): Use v_may_def_operand_type.
(struct stmt_operands_d): New. Struct for storing all operand vectors.
Paolo Carlini [Wed, 11 Aug 2004 09:31:13 +0000 (09:31 +0000)]
re PR libstdc++/16959 (Segmentation fault in ios_base::sync_with_stdio)
2004-08-11 Paolo Carlini <pcarlini@suse.de>
Petur Runolfsson <peturr02@ru.is>
PR libstdc++/16959
* src/ios_init.cc (ios_base::sync_with_stdio): Make sure the
standard streams are constructed.
* testsuite/27_io/ios_base/sync_with_stdio/16959.cc: New.
Nick Clifton [Wed, 11 Aug 2004 07:48:13 +0000 (07:48 +0000)]
(arm_is_longcall_p): Update comment describing this funciton's behaviour.
Return true when the current function has a section attribute and
-mlong-calls is in effect.
(ARM_DECLARE_FUNCTION_SIZE): Do not set the short-call marker when
-mlong-calls is in effect and the function has a section attribute.
David Edelsohn [Wed, 11 Aug 2004 02:40:45 +0000 (22:40 -0400)]
rs6000-protos.h (expand_block_clear): Declare.
* config/rs6000/rs6000-protos.h (expand_block_clear): Declare.
* config/rs6000/rs6000.md (clrmemsi): New pattern.
* config/rs6000/rs6000.c (expand_block_clear): New function.
(expand_block_move): Convert alignment to bits. Use SImode and
HImode for unaligned addresses if not STRICT_ALIGNMENT.
* varasm.c (unlikely_section_label): New global variable.
(unlikely_text_section_name): New global variable.
(text_section): Remove alignment statement.
(unlikely_text_section): Remove alignment statement; use
unlikely_section_label rather than hard-coded string.
(assemble_start_function): Initialize unlikely_section_label and
unlikely_text_section_name; make sure cold section is properly
aligned at start of function; output unlikely_section_label if
appropriate.
Andrew MacLeod [Tue, 10 Aug 2004 18:31:26 +0000 (18:31 +0000)]
tree-cfg.c (bsi_insert_before, [...]): Call modify_stmt after linking stmt into the program.
2004-08-10 Andrew MacLeod <amacleod@redhat.com>
* tree-cfg.c (bsi_insert_before, bsi_insert_after): Call modify_stmt
after linking stmt into the program.
(bsi_remove): Don't call modify_stmt.
* tree-complex.c (update_complex_assignment,
expand_complex_comparison): Call modify_stmt after changing the stmt.
* tree-outof-ssa.c (rewrite_trees): Call modify_stmt only if not
removing the stmt.
* tree-ssa-ccp.c (substitute_and_fold): Call modify_stmt after changing
the stmt, and only if needed.
* tree-ssa-dom.c (thread_across_edge): Pass no annotation for a dummy
expression.
(simplify_rhs_and_lookup_avail_expr): Don't take an annotation param.
(simplify_cond_and_lookup_avail_expr): Use modify_stmt.
(simplify_switch_and_lookup_avail_expr): Don't take an annotation param.
(eliminate_redundant_computations): Don't pass an annotation. Call
modify_stmt rather than setting the annotation directly.
(record_equivalences_from_stmt): Remove unused local 'j'.
(cprop_operand): Take a stmt rather than an annotation as a parameter.
Call modify_stmt.
(cprop_into_stmt): Pass stmt rather than annotation.
(update_rhs_and_lookup_avail_expr): Call modify_stmt.
* tree-ssa-loop-im.c (schedule_sm): Call get_stmt_ann rather than
modify_stmt.
* tree-ssa.c (propagate_into_addr): Dont call modify_stmt.
* ggc-zone.c (struct alloc_zone): Add statistics counters.
(always_collect): New flag.
(ggc_alloc_zone_1): Update statistics support. Don't include
overhead in allocated counter.
(sweep_pages): Update allocated counter for large pages. Don'y
include overhead.
(ggc_collect_1): Always collect.
(ggc_collect): Honor always_collect flag. Sum all zones to decide
whether to collect.
(SCALE, LABEL): New macros.
(ggc_print_statistics): Add statistics support.
Roger Sayle [Mon, 9 Aug 2004 22:36:39 +0000 (22:36 +0000)]
expmed.c (sdiv_pow2_cheap, [...]): Change type to bool.
* expmed.c (sdiv_pow2_cheap, smod_pow2_cheap): Change type to bool.
(init_expmed): Fix potential overrun problem with "all.reg".
(expand_sdiv2_pow2): Add an alternate implementation for signed
division, if the target provides a suitable conditional move insn.
* ggc-common.c (ggc_rlimit_bound): Don't check RSS limit.
Check DATA limit only if there's no AS limit. Ignore insanely
low DATA limits.
(ggc_min_heapsize_heuristic): Don't divide AS or RSS limits by 8,
but take care that the AS limit isn't overrun.
* doc/invoke.texi: Update documentation of min-heapsize parameter.
* Makefile.in (OBJC-common): Add tree-ssa-threadupdate.c
(tree-ssa-threadupdate.o): Add dependencies.
* tree-ssa-threadupdate.c: New file.
* tree-flow.h (incoming_edge_threaded): New flag in block annotation.
(rewrite_vars_out_of_ssa): Remove prototype.
(cleanup_tree_cfg): Returns a bool.
* tree.h (thread_through_all_blocks): Prototype.
* tree-outof-ssa.c (SSANORM_*): Move into here.
(remove_ssa_form): Now static.
(rewrite_vars_out_of_ssa): Kill.
* tree-ssa-live.c (register_ssa_partitions_for_vars): Kill.
* tree-ssa-live.h (SSANORM_*): Moved into tree-outof-ssa.c.
(remove_ssa_form, register_partitions_for_vars): Kill declarations.
* tree-cfg.c (cleanup_tree_cfg): Return a value indicating if
anything was changed.
* tree-phinodes.c (add_phi_arg): Get the block for the PHI
from the PHI's annotation rather than the edge associated with
the new argument.
* tree-ssa-dom.c (redirection_edges): Kill.
(redirect_edges_and_update_ssa_graph): Kill.
(tree_ssa_dominator_optimize): Do not reset forwardable flag
for blocks anymore. Do not initialize redirection_edges.
Call thread_through_all_blocks. Simplify code for cleanup
of the CFG and iterating. No longer call cleanup_tree_cfg
outside the iteration loop.
(thread_across_edge): No longer mess with forwardable blocks.
Steven Bosscher [Mon, 9 Aug 2004 16:58:42 +0000 (16:58 +0000)]
timevar.def (TV_CPROP1, [...]): New timers.
* timevar.def (TV_CPROP1, TV_CPROP2, TV_PRE, TV_HOIST, TV_LSM):
New timers.
* gcse.c: Include timevar.h.
(const_prop_count, copy_prop_count): Rename to global_const_prop_count
and global_copy_prop_count.
(local_const_prop_count, local_copy_prop_count): New static globals.
(gcse_main): Set the right timevar for each pass.
(cprop_jump): Increment global_const_prop_count when a constant is
propagated. Add "GLOBAL" to dump output.
(cprop_insn): Increment global_const_prop_count when a constant is
propagated, or global_copy_prop_count when a copy is propagated.
(do_local_cprop): Likewise for local_const_prop_count and
local_copy_prop_count.
(one_cprop_pass): Initialize const/cprop counters to zero.
Print out results of local and global const/cprop separately.
(bypass_block): Break over-length line.
matmul.m4, [...]: Allocate space if return value has NULL in its data field.
2004-09-09 Victor Leikehman <lei@il.ibm.com>
* m4/matmul.m4, m4/matmull.m4, intrinsics/eoshift0.c,
intrinsics/eoshift2.c, intrinsics/transpose_generic.c:
Allocate space if return value has NULL in its data field.
* generated/*.c: Regenerate.
Arnaud Charlet [Mon, 9 Aug 2004 12:24:25 +0000 (14:24 +0200)]
[multiple changes]
2004-08-09 Thomas Quinot <quinot@act-europe.fr>
* g-socket.adb (Abort_Selector): Initialize Buf to prevent valgrind
from complaining on potential uninitialized reference.
Change calls to GNAT.Sockets.Thin.Is_Socket_In_Set to account for
new specification and test explicitly for non-zero return value.
* g-socthi.ads (Is_Socket_In_Set): Declare imported function as
returning C.int, to avoid using a derived boolean type.
* exp_ch5.adb (Make_Tag_Ctrl_Assignments): Use
Duplicate_Subexpr_No_Checks in preference to direct use of
Remove_Side_Effects and New_Copy_Tree.
Clear Comes_From_Source on prefix of 'Size attribute reference.
* g-socthi.adb, g-socthi-vms.adb, g-socthi-mingw.adb,
g-socthi-vxworks.adb: Change calls to
GNAT.Sockets.Thin.Is_Socket_In_Set to account for new specification
and test explicitly for non-zero return value.
* g-socthi-vms.ads, g-socthi-mingw.ads, g-socthi-vxworks.ads:
(Is_Socket_In_Set): Declare imported function as returning C.int, to
avoid using a derived boolean type.
2004-08-09 Albert Lee <lee@gnat.com>
* system-irix-n32.ads: Refine tasking priority constants for IRIX.
2004-08-09 Pascal Obry <obry@gnat.com>
* gnat_ugn.texi: Document new way to build DLLs on Windows using
GCC's -shared option.
* mlib-tgt-mingw.adb (Build_Dynamic_Library): Pass GCC's options into
Options_2 parameter (options put after object files).
* decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Adjust condition to
ignore overflows on low and high bounds of an index to also account for
differences in signedness between sizetype and gnu_index_subtype.
These are as legitimate as the ones caused by a lower TYPE_PRECISION
on sizetype.
2004-08-09 Robert Dewar <dewar@gnat.com>
* s-solita.ads, s-solita.adb: Minor reformatting
* gnat_rm.texi: Add documentation for pragma Profile (Restricted)
Move pragma Restricted_Run_Time, No_Run_Time, Ravenscar to new
obsolescent section
Add note that No_Implicit_Conditionals does not suppress
run time constraint checks.
* vms_conv.ads: Minor reformatting
* s-secsta.adb: Use SS_Ptr instead of Mark_Id as stack pointer (cleanup
and necessary for following change).
(Mark): Return new format Mark_Id containing sec stack address
(Release): Use sec stack address from Mark_Id avoiding Self call
* s-secsta.ads: Define SS_Ptr to be used instead of Mark_Id as stack
pointer (cleanup and necessary for following change).
Define Mark_Id as record containing address of secondary stack, that way
Release does not need to find the stack again, decreasing the number of
calls to Self and improving efficiency.
* sem_util.ads: Add a ??? comment for Is_Local_Variable_Reference
* sem_ch5.adb (Analyze_Case_Statement): Add circuitry to track value of
case variable into the individual case branches when possible.
* sem_ch11.adb: Minor reformatting
* prj.ads: Correct spelling of suffixs
* prj-nmsc.adb: Minor reformatting
Correct spelling suffixs throughout (also in identifiers)
* freeze.adb: Minor spelling correction
* exp_ch2.adb: Cleanups to handling of Current_Value
(no functional effect).
* bld.adb: Correct spelling of suffixs
* einfo.adb (Enclosing_Dynamic_Scope): Defend against junk argument
2004-08-09 Ed Schonberg <schonberg@gnat.com>
PR ada/15408
* sem_ch7.adb (Install_Private_Declarations): In the body of the
package or of a child, private entities are both immediately_visible
and not hidden.
2004-08-09 Ed Schonberg <schonberg@gnat.com>
* sem_eval.adb (Eval_Integer_Literal): If the context is Any_Integer,
there are no range checks on the value of the literal.
* exp_ch7.adb (Insert_Actions_In_Scope_Around): If the node being
wrapped is the triggering alternative of an asynchronous select, action
statements mustbe inserted before the select itself.
* sem_attr.adb (Analyze_Attribute, case 'Size): Handle properly the
case where the prefix is a protected function call.
(Resolve_Attribute, case 'Access): The attribute reference on a
subprogram is legal in a generic body if the subprogram is declared
elsewhere.
2004-08-09 Vincent Celier <celier@gnat.com>
* makegpr.adb (Build_Library): Link with g++ if C++ is one of the
languages, otherwise building the library may fail with unresolved
symbols.
(Compile_Sources): Do not build libraries if -c switch is used
* gnatlink.adb (Process_Args): New switches -M and -Mmap
(Write_Usage): If map file creation is supported, output new switches
-M and -Mmap.
(Gnatlink): When -M is specified, add the necessary switch(es) to the
gcc call, when supported.
* Makefile.in: Added indepsw.o to the object list for gnatlink
Specified the AIX, GNU/Linux and Windows versions of indepsw.adb
* indepsw-aix.adb, indepsw-linux.adb, indepsw-mingw.adb,
indepsw.adb, indepsw.ads: New files.
2004-08-09 Bernard Banner <banner@gnat.com>
* system-vxworks-x86.ads, s-vxwork-x86.ads: New files.
* Makefile.in: add section for vxworks x86
2004-08-09 Hristian Kirtchev <kirtchev@gnat.com>
* exp_ch3.adb (Build_Init_Statements): Add extra condition to deal with
per-object constrained components where the discriminant is of an
Access type.
(Build_Record_Init_Proc): Add condition to prevent the inheritance of
the parent initialization procedure for derived Unchecked_Unions.
Instead, derived Unchecked_Unions build their own initialization
procedure.
(Build_Variant_Record_Equality): Implement Unchecked_Union equality.
Check the body of the subprogram for details.
(Freeze_Record_Type): Prevent the inheritance of discriminant checking
functions for derived Unchecked_Union types by introducing a condition.
Allow the creation of TSS equality functions for Unchecked_Unions.
(Make_Eq_Case): Rename formal parameter Node to E in function signature.
Add formal parameter Discr to function signature. Discr is used to
control the generated case statement for Unchecked_Union types.
(Make_Eq_If): Rename formal parameter Node to E in function signature.
* exp_ch4.adb (Build_Equality_Call): Implement equality calls for
Unchecked_Unions.
Check the body of the subprogram for details.
(Expand_Composite_Equality): Augment composite type equality to include
correct handling of Unchecked_Union components.
(Expand_N_In): Add condition to detect illegal membership tests when the
subtype mark is a constrained Unchecked_Union and the expression lacks
inferable discriminants, and build a Raise_Program_Error node.
(Expand_N_Op_Eq): Add function Has_Unconstrained_UU_Component. Used
to detect types that contain components of unconstrained Unchecked_Union
subtype. Add condition to detect equality between types that have an
unconstrained Unchecked_Union component, and build a Raise_Program_Error
node. Add condition to detect equality between Unchecked_Union types
that lack inferable discriminants, and build a Raise_Program_Error node.
Otherwise build a TSS equality function call.
(Expand_N_Type_Conversion): Add condition to detect illegal conversions
from a derived Unchecked_Union to an unconstrained non-Unchecked_Union
with the operand lacking inferable discriminants, and build a Raise_
Program_Error node.
(Expand_Record_Equality): Remove guard that prevents Unchecked_Union
composite equality.
(Has_Inferable_Discriminants): Implement new predicate for objects and
expressions of Unchecked_Union type. Check the body of subprogram for
details.
(Has_Unconstrained_UU_Components): Add function
Component_Is_Unconstrained_UU. It is used to detect whether a single
component is of an unconstrained Unchecked_Union subtype. Add function
Variant_Is_Unconstrained_UU. It is used to detect whether a single
component inside a variant is of an unconstrained Unchecked_Union type.
* exp_ch5.adb (Expand_Assign_Record): Add condition to copy the
inferred discriminant values. Add condition to generate a case
statement with an inferred discriminant as the switch.
(Make_Component_List_Assign): Introduce a Boolean flag that determines
the behaviour of the subprogram in the presence of an Unchecked_Union.
Add condition to trigger the usage of the inferred discriminant value
as the generated case statement switch.
(Make_Field_Assign): Introduce a Boolean flag that determines the
behaviour of the subprogram in the presence of an Unchecked_Union. Add
condition to trigger the usage of the inferred discriminant value as
the right-hand side of the generated assignment.
* exp_ch6.adb (Expand_Call): Add condition to skip extra actual
parameter generation when dealing with Unchecked_Unions.
* checks.adb (Apply_Discriminant_Check): Do not apply discriminant
checks for Unchecked_Unions.
* einfo.ads: Update comment on usage of flag Has_Per_Object_Constraint
* exp_attr.adb (Expand_N_Attribute_Reference): Produce
Raise_Program_Error nodes for the execution of Read and Write
attributes of Unchecked_Union types and the execution of Input and
Output attributes of Unchecked_Union types that lack default
discriminant values.
* sem_prag.adb (Analyze_Pragma): Remodel the analysis of pragma
Unchecked_Union. Add procedure Check_Component. It is used to inspect
per-object constrained components of Unchecked_Unions for being
Unchecked_Unions themselves. Add procedure Check_Variant. It is used to
check individual components withing a variant.
* sem_res.adb (Resolve_Comparison_Op): Remove guard that prevents
comparison of Unchecked_Unions.
(Resolve_Equality_OP): Remove guard that prevents equality between
Unchecked_Unions.
* sem_util.adb (Build_Component_Subtype): Add guard to prevent creation
of component subtypes for Unchecked_Union components.
(Get_Actual_Subtype): Add condition that returs the Unchecked_Union type
since it is the actual subtype.
* sem_ch12.adb (Instantiate_Type): Add condition to detect the correct
pass of Unchecked_Union subtypes as generic actuals to formal types
that lack known_discriminant_parts or that are derived Unchecked_Union
types, and do nothing. In any other case, produce an error message.
* sem_ch3.adb (Analyze_Component_Declaration): Add function
Contains_POC. It determines whether a constraint uses the discriminant
of an enclosing record type.
Add condition to detect per-object constrained component and set the
appropriate flag.
(Derived_Type_Declaration): Remove guard that prevents derivation from
Unchecked_Union types.
(Process_Subtype): Remove quard that prevents the creation of Unchecked_
Union subtypes.
* sem_ch4.adb (Analyze_Selected_Component): Correct the detection of
references to Unchecked_Union discriminants.
* sem_ch6.adb (Create_Extra_Formals): Add condition to skip extra
formal generation when dealing with Unchecked_Unions.
(Set_Actual_Subtypes): Add condition to prevent generation of actual
subtypes for Unchecked_Unions.
* sem_ch7.adb (Analyze_Package_Specification): Add procedure
Inspect_Unchecked_Union_Completion. It is used to detect incorrect
completions of discriminated partial views by Unchecked_Unions and
produce an error message.
2004-08-09 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* trans.c (struct stmt_group): New field, GLOBAL.
(global_stmt_group, gnu_elab_proc_decl, build_unit_elab): Deleted.
(struct elab_info): New struct.
(elab_info_list, gnu_elab_proc_stack): New variables.
(Compilation_Unit_to_gnu): New procedure.
(gigi): Call it and also handle elaboration procs we've saved.
(gnat_init_stmt_group): Don't set global_stmt_group; instead initialize
global field from parent.
(gnat_to_gnu): Get decl from gnu_elab_proc_stack.
(gnat_to_gnu, case N_Compilation_Unit): Call Compilation_Unit_to_gnu.
(start_stmt_group): Initialize global field from parent.
(add_decl_expr): Set to global for current statement group.
(gnat_gimplify_expr, case NULL_EXPR): Add operand 0 to pre list, not
post.
* utils.c (global_bindings_p): True when no current_function_decl; no
longer check current_binding_level.
2004-08-09 Ben Brosgol <brosgol@gnat.com>
* xgnatugn.adb: Added logic to deal with @ifset/@ifclear for edition
choice.