* builtins.c (expand_builtin_strcmp): Use const*_rtx when
expanding strcmp at compile-time. Add another transformation.
(expand_builtin_strncmp): Add more transformations. Call
expand_builtin_memcmp, not expand_builtin_strcmp, under
appropriate conditions if HAVE_cmpstrsi.
testsuite:
gcc.c-torture/execute/string-opt-3.c: Add more strcmp checks.
gcc.c-torture/execute/string-opt-8.c: Add more strncmp checks.
From-SVN: r37963
* c-common.c (combine_strings): When the ISO C standard specifies
the maximum length of a string, it doesn't include the trailing
zero byte.
* gcc.dg/cpp/if-6.c: New testcase.
From-SVN: r37961
* arm.h (ARM_REGNO_OK_FOR_BASE_P, THUMB_REGNO_MODE_OK_FOR_BASE_P): New
macros.
(REGNO_MODE_OK_FOR_BASE_P): Define in terms of above.
(REGNO_OK_FOR_FOR_BASE_P): Delete.
(ARM_REG_OK_FOR_BASE_P, THUMB_REG_MODE_OK_FOR_BASE_P): New macros for
both strict and non-strict uses.
(REG_MODE_OK_FOR_BASE_P): Define in terms of above.
(ARM_REG_OK_FOR_INDEX_P, THUMB_REG_OK_FOR_INDEX_P): New macros.
(REG_OK_FOR_INDEX_P): Define in terms of above.
(REG_OK_FOR_BASE_P): Delete.
(REG_OK_FOR_PRE_POST_P): Delete.
(ARM_BASE_REGISTER_RTX_P): Renamed from BASE_REGISTER_RTX_P.
(ARM_INDEX_REGISTER_RTX_P): Renamed from INDEX_REGISTER_RTX_P.
(ARM_GO_IF_LEGITIMATE_INDEX): Renamed from GO_IF_LEGITIMATE_INDEX.
(THUMB_LEGITIMATE_OFFSET): Renamed from LEGITIMATE_OFFSET.
(ARM_GO_IF_LEGITIMATE_ADDRESS): Adjust for name changes. Use ARM
specific variants rather than general ones. Use ARM_REG_OK_FOR_BASE_P
in pre/post increment cases.
(THUMB_GO_IF_LEGITIMATE_ADDRESS): Similarly for Thumb.
(ARM_LEGITIMIZE_ADDRESS): Similarly.
(THUMB_LEGITIMIZE_RELOAD_ADDRESS): Similarly.
* arm.c (legitimate_pic_address): Similarly.
From-SVN: r37954
* config/avr/avr.md: Document UNSPEC usage.
(*tablejump_rjmp, *tablejump_lib, *tablejump_enh, *tablejump):
Make operand 0 input only, clobber it. Use UNSPEC, not a bogus
MEM for program memory word reference. Do not add the label to
the table index in each of the asm output templates, instead ...
(casesi): ... do it in RTL. Adjust to match the above change.
From-SVN: r37951
* java/util/LinkedList.java (removeFirst): Update `first' field.
Handle the last == first case.
(removeLast): Update `last' field. Handle the last == first case.
From-SVN: r37940
2000-12-01 Jim Blandy <jimb@redhat.com>
* dbxout.c (dbxout_parms): Correctly describe parameters passed by
invisible reference in registers, but then spilled to the stack.
Remove code to emit a second stab for such parameters; it attempts
to describe the value's location by introducing a synthetic C++
`reference' type, and then saying the stack slot has that
reference type. This loses type information (breaking GDB's
`ptype' command, among other things) just to describe a location
which stabs can represent correctly in other ways.
From-SVN: r37936
* cppinit.c (initialize): Forgotten prototype.
* cpplex.c (_cpp_lex_token): Loop until not skipping.
Always clear PREV_WHITE upon meeting a new line.
* cpplib.c (end_directive): Set pfile->skipping after
skip_rest_of_line.
* cpplib.h (cpp_reader): Remove macro_pos.
* cppmacro.c (cpp_get_line): Don't do anything special inside
macros.
(parse_arg): Add PREV_WHITE if a token appears after new lines.
(funlike_invocation_p): Save and restore the output position
over a successful check for a '('.
(enter_macro_context): Delete uses of macro_pos.
(cpp_get_token): Don't use pfile->skipping.
From-SVN: r37927
* c-decl.c (grokdeclarator): If pedantic, warn about arrays with
incomplete element type.
(grokparms): Before checking for incomplete parameter type, check
the type isn't error_mark_node.
testsuite:
* gcc.dg/c99-array-nonobj-1.c: No longer XFAIL.
From-SVN: r37920
* builtins.c (target_char_cast): New function.
(expand_builtin_strchr): Use it.
(expand_builtin_strrchr): Use it.
(builtin_memset_read_str): New function.
(expand_builtin_memset): Use target_char_cast.
Try to optimize memset with second argument non-zero using
store_by_pieces.
* gcc.c-torture/execute/string-opt-5.c: Add some memset tests.
From-SVN: r37918