Age | Commit message (Collapse) | Author |
|
ok miod@ deraadt@
|
|
with _REENTRANT. Also remove undef _POSIX_THREADS in phread.h.
From brad@comstyle.com. okay guenther@
|
|
construct, so that it is still written in rtl statements, and part of
it can be put in a delay slot. And the way it's written now, it does not
create bogus uninitialized warnings.
|
|
the two SImode subregs of the DImode destination operand, this confuses
the register life analysis and causes gcc to emit wrong warning about
values not being initialized.
Unfortunately, the fallback logic infers a worse sequence (mov + cmp against
zero + ext of the cmp signedness bit, instead of mov + ext of the sign bit),
which wastes an instruction and a register.
This is hopefully a temporary measure until a nonconfusing flavour of the
fast expansion is devised (preferrably one which does not expose the
optimize_reg_copy_3 big-endian bug as well).
|
|
derefs in at least one case and I do not have time to debug this before the
release.
ok deraadt@
|
|
on some (not in-tree) configurations.
ok espie@ kettenis@
|
|
default logic works better.
|
|
clobbered list. Still not enabled by default, there are still bugs in their
usage (perl does not build), but it's much better.
No functional change yet.
|
|
functions which are too greedy in stack variables.
This is intended to be used for kernel compiles, where this warning will
be enabled for a reasonable size (after a few weeks grace period so that
people can upgrade their compiler).
Please note that this warning relies upon md code, and as such is only
available on platforms OpenBSD runs on; also, the stack size being warned
on is only the local variables size, regardless of the ABI stack usage
requirements and the callee-saved registers; which means a function may
be warning-clean yet need more stack space than meets the eye; the
actual size being checked on may change to include these extras in the
future.
|
|
defined in terms of long, not int on all architectures.
|
|
921215-1 gcc testsuite.
|
|
This makes a noticeable performance improvement on 68060, especially for
crypto operations (such as ssh), with basically no loss on 680[234]0.
ok deraadt@
|
|
"doh! ok!" niklas@ ;-)
|
|
inter-library function calls where the callee would change the GOT register
but not restore it when returning to its caller.
Helps immensely libpthread, as well as dynamically-linked X11 clients.
Fromm gcc 3; tested by matthieu@, nick@ and todd@; ok deraadt@
|
|
changes address incorrect stack usage, when optimization needs more
nameless temporary values than available registers, and has to save them
on stack.
In some (rare) circumstances, it will compute a stack address _outside_
the current function local storage space, overwriting the caller's stack.
Most of the time, this only affects the "outgoing argument area", which is
harmless if it has not been populated; this explains why it has not been
noticed earlier.
Since I see no easy way to fix this, I decided to go the simpler way of
removing this ougoing argument area. This not only reduces stack usage,
but also makes varargs/stdarg code smaller and faster; also functions which
get their first few arguments in registers, then some on the stack, then
some in registers again, will not allocate stack space for the second
set of arguments passed through registers.
This is an ABI change, we are no longer 88Open compliant (have we ever
been?).
|
|
work for code compiled at -O0...
|
|
knowing that the area we are using is correctly aligned.
Produces smaller and faster code (about 0.8% time decrease in a complete
build, which amounts to roughly 15 minutes).
|
|
for registers if at least one nameless argument is passed through registers;
instead, only allocate as many bytes as necessary.
Slightly reduces stack usage; no ABI change.
|
|
current_function_{stdarg,varargs} instead of homegrown implementation, etc.
No functional change.
|
|
fixes C++ exceptions.
this relies on an earlier libstdc++ bump
|
|
|
|
This is a workaround for lines 1055-1057 of tcp_input.c being miscompiled,
though the problem looks like missing use/clobber qualifiers in the
extendplussidi insn, rather than a specific optimize_reg_copy_3() issue.
A proper fix may be devised in the future, in the meantime this allows
m68k platforms to be back in track.
|
|
No functional change, it's just faster.
|
|
and the reload phase when compiling complex code, and the fix is non-trivial.
|
|
and FUNCTION_ARG_ADVANCE fixes in m88k.c, allow the optimized bcopy
sequences to be reliable again, so enable them back.
|
|
parameter is going to hit the stack.
|
|
__builtin_saveregs(); no functional change.
|
|
pass all the subsequent arguments on the stack.
This is necessary for proper varargs operation, if used.
|
|
|
|
|
|
|
|
valid base register for indexed addressing, rather than providing an
incomplete inline version.
This allows constructs such as
(plus:SI (reg:SI (subreg:SI (reg:DI 1))))
to properly pass through the reload phase if optimization is enabled.
Such a construct can be generated with
buf[index + index2] = value;
if either index or index2 are long long.
Fixes the ICE in zsh Src/Zle/computil.c.
|
|
comparisons using different operators, make sure to generate an insn
with the correct mode.
This means that constructs like
if (c != -1 & i < 9999)
and
if ((i<=7) | (value != 0))
as found in transfig and teTeX, respectively, will now compile with
optimization.
Note the single & or | in these constructs - this kind is rare enough for
this bug to have remained unnoticed until now...
|
|
few bugs in the 2.95 codebase, one of them being fatal to m88k.
A real fix will come after 3.5.
ok deraadt@
|
|
on mvme88k.
ok deraadt@ espie@
|
|
Disable building of cxxfilt in gcc, build it from its own directory.
|
|
This switch forces block copy operations to always fallback to memcpy()
when it is not done by inline load and stores, rather than using the
m88k movstr* functions found in libgcc.
The name of this option has been choosen after the mips back end, which
has a similar option.
Right now, this is a no-op since these functions are disabled due to (yet)
another gcc bug; but this will help building standalone code, such as the
kernel and boot blocks, without having to link against libgcc.
|
|
This changes the real definition to __mcount, but with a weak mcount
for compat. On the next major bump the weak alias should be removed.
Without this diff the compiler symbol mcount conflicts with the
user mcount() function.
|
|
|
|
|
|
for example when -fexpensive-optimizations is used, sometimes causes incorrect
code sequences to be generated.
As -fexpensive-optimizations is implied by -O2, this means we are potentially
affected by this in numerous places... so add a specific workaround to nullify
expensizve-optimizations in preserve_subexpressions_p() on a
known-to-be-affected basis.
So far, only alpha, powerpc, m88k, sparc and sparc64 are affected.
Problem tracked down by henning@ - analysis by etoh@ and I - ugly workaround
by me - ok deraadt@
|
|
hundred bytes) block copies. While the functions themselves are probably
optimal or not far from it, the code responsible for their invocation is not,
and has a bad tendency of miscomputing the destination buffer address,
especially when optimization is used.
This is a temporary measure, these functions will be reenabled once a good fix
is ready.
ok deraadt@ espie@
|
|
Configuration settings mostly borrowed from the former gcc 2.8 configuration.
A few typos and fixes backported from gcc 3.3, and a hell lot of fixes from
my fingertips.
This is enough to yield a compiler which will produce correct code at -O0.
Optimization is slightly broken for some constructs, and more fixes are in
the pipeline.
ok deraadt@
|
|
|
|
the libc functions are in place, remove HARD_QUAD from sparc64. (If you
actually want it, for some demented reason, look at -mhard-quad-float,
void where prohibited).
|
|
convention for the _Qp_* functions. Rather than fix it, rely on the
fact that it does produce correct calls to the _Q_* functions and
provide a shim in libc (already committed) to deal with it.
|
|
ok drahn@
|
|
pvalchev@ fgsch@ millert@ ok
|
|
|
|
rescinded 22 July 1999. Proofed by myself and Theo.
|