Geoff Keating [Mon, 14 Feb 2000 19:46:02 +0000 (19:46 +0000)]
collect2.c (main): If we have frames, then we will need to import the frame handling functions.
* collect2.c (main) [COLLECT_EXPORT_LIST]: If we have frames,
then we will need to import the frame handling functions.
(scan_prog_file) [COLLECT_EXPORT_LIST]: We will also need
to import the frames themselves.
Stan Cox [Mon, 14 Feb 2000 19:34:06 +0000 (19:34 +0000)]
basic_block.h: Added prototype for reorder_basic_blocks.
* basic_block.h: Added prototype for reorder_basic_blocks.
* toplev.c: Changes to add -freorder-blocks and graph dump after
block reordering is done.
* flow.c (reorder_block_def): New structure for use during block
reordering.
(REORDER_BLOCK_*): New macros to access members of above structure.
(skip_insns_between_block, get_common_dest, chain_reorder_blocks,
make_reorder_chain, fixup_reorder_chain, reorder_basic_blocks): New
functions for block reordering.
Co-Authored-By: Jason Eckhardt <jle@cygnus.com>
From-SVN: r31968
Warren Levy [Mon, 14 Feb 2000 10:23:29 +0000 (10:23 +0000)]
MPN.java (findLowestBit): Made methods public.
* gnu/gcj/math/MPN.java(findLowestBit): Made methods public.
* java/math/BigInteger.java(BigInteger(int,int,java.util.Random):
New constructor.
(min): Implemented.
(max): Implemented.
(modPow): Rewritten to not use the naive, slow, brute force approach.
(isProbablePrime): Implemented.
(testBit): Implemented.
(flipBit): Implemented.
(getLowestSetBit): Implemented.
Neil Booth [Mon, 14 Feb 2000 06:31:20 +0000 (06:31 +0000)]
cppfiles.c (read_and_prescan): When emitting deferred newlines...
2000-02-13 Neil Booth <NeilB@earthling.net>
* cppfiles.c (read_and_prescan): When emitting deferred
newlines, test speccase[] again instead of checking each
possible whitespace character in turn. When we encounter \r,
look behind for \n first, then ahead.
Zack Weinberg [Mon, 14 Feb 2000 01:32:19 +0000 (01:32 +0000)]
cse.c (cse_altered): New internal flag.
2000-02-13 Zack Weinberg <zack@wolery.cumb.org>
* cse.c (cse_altered): New internal flag.
(cse_insn): Set it if we changed an insn.
(cse_main): Clear cse_altered before each basic block.
Only garbage collect if cse_altered is true afterward.
* libjava.lang/inner_interface.out: New file.
* libjava.lang/inner_interface.java: New file.
* libjava.lang/final_int.out: New file.
* libjava.lang/final_int.java: New file.
* libjava.lang/final_static_and_friend.out: New file.
* libjava.lang/final_static_and_friend.java: New file.
Jan Hubicka [Sat, 12 Feb 2000 00:49:11 +0000 (01:49 +0100)]
i386.c (ix86_emit_restore_regs_using_mov): Break out from ...
* i386.c (ix86_emit_restore_regs_using_mov): Break out from ...
(ix86_expand_epilogue): ... here. Use mov instead of add to restore
stack pointer in functions w/o saved registers, output LEAVE more often
on TARGET_USE_LEAVE machines.
Zack Weinberg [Fri, 11 Feb 2000 20:17:27 +0000 (20:17 +0000)]
cpphash.c: Fix formatting, update commentary.
* cpphash.c: Fix formatting, update commentary.
(dump_definition): Take three separate arguments instead of a
MACRODEF structure argument.
* cpphash.h: Update prototype of dump_definition.
* cppinit.c (cpp_finish): Update call of dump_definition.
* cpplib.c (do_define): Always create new hash entry with
T_MACRO type. Remove redundant check for redefinition of
poisoned identifier. Update call of dump_definition.
(do_undef): Don't call check_macro_name. Rename sym_length to
len.
(do_error, do_warning): Don't use copy_rest_of_line or
SKIP_WHITE_SPACE.
(do_warning): Don't use pedwarn for the actual warning,
only the notice about its not being in the standard. (Fixes
bug with #warning in system headers.)
(do_ident): Stricter argument checking - accept only a single
string after #ident. Also, macro-expand the line.
(do_xifdef): Use cpp_defined. De-obfuscate.
(do_pragma): Split out specific pragma handling to separate
functions. Use get_directive_token. Update commentary. Do
not pass on #pragma once or #pragma poison to the front end.
(do_pragma_once, do_pragma_implementation, do_pragma_poison,
do_pragma_default): New.
Jeffrey A Law [Fri, 11 Feb 2000 19:35:57 +0000 (12:35 -0700)]
jump.c (jump_optimize_1): The first operand in a relational can be a CONST_INT.
* jump.c (jump_optimize_1): The first operand in a relational
can be a CONST_INT.
* optabs.c (emit_conditional_move): Handle relationals which
have a known true/false result.
Zack Weinberg [Thu, 10 Feb 2000 23:47:04 +0000 (23:47 +0000)]
cppexp.c: Don't include cpphash.h.
* cppexp.c: Don't include cpphash.h.
(parse_charconst, cpp_lex): Use cpp_defined.
(cpp_lex): Use get_directive_token throughout. Remove
unnecessary cases from switch. Move assertion-handling code
down to OTHER case.
(cpp_parse_expr): If we see '+' or '-', check the context to
determine if they are unary or binary operators. Streamline
the jumps a bit. Do not call skip_rest_of_line.
* cpplib.c: Make skip_rest_of_line and cpp_skip_hspace
static. Export get_directive_token. Update commentary.
(cpp_defined): New function.
(do_define): Remove reference to T_PCSTRING. Call
free_definition to release memory for old definition, when
redefining a macro.
(eval_if_expression): Set only_seen_white to 0 before calling
cpp_parse_expr. Call skip_rest_of_line after it returns.
(cpp_read_check_assertion): Don't preserve a pointer into the
token buffer across a call to cpp_get_token.
* Makefile.in (cppexp.o): Don't depend on cpphash.h.
* cppfiles.c (redundant_include_p): Use cpp_defined.
* cpphash.c (free_definition): New function.
(delete_macro): Use it. Update commentary.
* cpphash.h: Typedef HASHNODE here. Prototype cpp_lookup and
free_definition.
* cpplib.h: Don't typedef HASHNODE here. Delete T_PCSTRING
from enum node_type. Prototype cpp_defined and get_directive_token.
Don't prototype cpp_lookup, skip_rest_of_line, or cpp_skip_hspace.
* fix-header.c (check_macro_names): Use cpp_defined.
(read_scan_file): Set inhibit_warnings and inhibit_errors in
the options structure.
Tom Tromey [Thu, 10 Feb 2000 20:31:48 +0000 (20:31 +0000)]
natNativeThread.cc: New file.
* gnu/gcj/jni/natNativeThread.cc: New file.
* gnu/gcj/jni/NativeThread.java: New file.
* java/lang/Thread.java (data): Now a RawData.
* include/jvm.h (_Jv_GetCurrentJNIEnv, _Jv_SetCurrentJNIEnv):
Declare.
* Makefile.in: Rebuilt.
* Makefile.am (java/lang/Thread.h): New target.
(ordinary_java_source_files): Added NativeThread.java.
(nat_source_files): Added natNativeThread.cc.
* java/lang/natThread.cc: Include <jni.h>
(struct natThread): Added `jni_env' field.
(_Jv_GetCurrentJNIEnv): New function.
(_Jv_SetCurrentJNIEnv): Likewise.
(initialize_native): Initialize jni_env.
Include RawData.h.
* jni.cc (ThreadGroupClass): New define.
(_Jv_JNI_InvokeFunctions): New structure.
(JNI_GetCreatedJavaVMs): New function.
(the_vm): New global.
(JNI_GetDefaultJavaVMInitArgs): New function.
Include NativeThread.h.
(NativeThreadClass): New define.
(_Jv_JNI_EnsureLocalCapacity): Return JNI_ERR, not -1.
(_Jv_JNI_DestroyJavaVM): New function.
(_Jv_JNI_AttachCurrentThread): New function.
(_Jv_JNI_DetachCurrentThread): New function.
(_Jv_JNI_GetEnv): New function.
(JNI_CreateJavaVM): New function.
(_Jv_JNI_GetJavaVM): New function.
(_Jv_JNIFunctions): Added entry for GetJavaVM.
* include/jni.h (JavaVMAttachArgs): New structure.
(JNI_EDETACHED): New define.
(JNI_EVERSION): Likewise.
(JavaVM): Define properly.
(struct JNIInvokeInterface): New structure.
(class _Jv_JavaVM): New class.
(JNI_OnLoad, JNI_OnUnload): Declare.
(JNI_GetDefaultJavaVMInitArgs, JNI_CreateJavaVM,
JNI_GetCreatedJavaVMs): Declare.
(JavaVMInitArgs): New typedef.
(JavaVMOption): Likewise.
(JNI_ERR): New define.
(JNI_OK): Likewise.
Jan Hubicka [Thu, 10 Feb 2000 17:43:55 +0000 (18:43 +0100)]
function.c (assign_temp): Change zero-sized arrays to size 1.
* function.c (assign_temp): Change zero-sized arrays to size 1.
* integrate.c (expand_inline_function): Do not update
stack_alignment_needed
* i386.c (compute_frame_size): Remove #ifdef PREFERRED_FRAME_BOUNDARY,
add some sanity checking, remove optimization for function with
zero frame size.
Alexandre Oliva [Thu, 10 Feb 2000 16:29:21 +0000 (16:29 +0000)]
server.c (load_data): Return NULL if the marker line is not found.
* fixinc/server.c (load_data): Return NULL if the marker line is
not found.
(run_shell): If load_data returns NULL, retry the command once, in
a new shell.
Zack Weinberg [Thu, 10 Feb 2000 05:32:04 +0000 (05:32 +0000)]
configure.in: Correct --help text for --with-dwarf2.
* configure.in: Correct --help text for --with-dwarf2.
Put tm-dwarf2.h after other tm files, if it's requested.
* configure: Regenerate.
* config/tm-dwarf2.h: #undef PREFERRED_DEBUGGING_TYPE before
defining it.
Zack Weinberg [Thu, 10 Feb 2000 02:23:08 +0000 (02:23 +0000)]
cpplib.h: Provide HASHNODE typedef and forward decl of struct hashnode only.
* cpplib.h: Provide HASHNODE typedef and forward decl of
struct hashnode only. Kill cpp_hashnode typedef. MACRODEF,
DEFINITION, struct hashnode, struct macrodef, struct
definition, scan_decls prototype, default defn of
INCLUDE_LEN_FUDGE moved elsewhere.
* cpphash.h: MACRODEF, DEFINITION, struct macrodef, struct
definition, and struct hashnode moved here. Remove the unused
'predefined' field from struct definition. Replace the 'args'
union with its sole member. All users updated (cpphash.c).
Delete HASHSTEP and MAKE_POS macros, and hashf prototype. Add
multiple include guard.
* cpphash.c (hashf): Make static; use better algorithm; drop
HASHSIZE parameter; return an unsigned int.
(cpp_lookup): Drop HASH parameter. PFILE parameter is
used. Calculate HASHSIZE modulus here.
(cpp_install): Drop HASH parameter. Calculate HASHSIZE modulus
here.
(create_definition): Drop PREDEFINITION parameter.
* cpplib.c (do_define): Don't calculate a hash value here.
Don't pass (keyword == NULL) to create_definition.
* scan.h: Prototype scan_decls here.
* cppfiles.c: Move INCLUDE_LEN_FUDGE default defn here.
* cppexp.c, cppfiles.c, cppinit.c, cpplib.c, fix-header.c: All
callers of cpp_lookup and cpp_install updated.
Zack Weinberg [Thu, 10 Feb 2000 00:26:47 +0000 (00:26 +0000)]
cpphash.c (macarg): Hoist all the flag diddling out of the function...
* cpphash.c (macarg): Hoist all the flag diddling out of the
function...
(macroexpand): ... and out of the loop that calls macarg.
Skip over the initial paren before macro arguments with
cpp_get_non_space_token; point may be some distance before
that paren. Abort if it's not there.
* cpplib.c (parse_clear_mark): Delete function.
(parse_set_mark, parse_goto_mark): Make static.
(ACTIVE_MARK_P): New macro.
(skip_block_comment, skip_line_comment): Do not bump the line
if ACTIVE_MARK_P is true.
(cpp_pop_buffer): The buffer to be popped may not have an
active mark.
(cpp_get_token): When looking for the initial paren before
macro arguments, only set a mark in a file buffer, Always
return to that mark before proceeding to call macroexpand or
return a NAME token.
* cpplib.h: Remove prototypes of parse_set_mark,
parse_clear_mark, parse_goto_mark.
(struct cpp_options): Rename 'put_out_comments' to
'discard_comments' and invert its sense.
* cppinit.c, cpphash.c, cpplib.c: All users of
put_out_comments changed to use discard_comments, with
opposite sense.
Tom Tromey [Thu, 10 Feb 2000 00:14:54 +0000 (00:14 +0000)]
natIconv.cc (Input_iconv::finalize): Call iconv_close when handle is not NULL.
* gnu/gcj/convert/natIconv.cc (Input_iconv::finalize): Call
iconv_close when handle is not NULL. Thanks to Andrew Haley.
(Output_iconv::finalize): Likewise.