Age | Commit message (Collapse) | Author |
|
stderr separately so that redirections of gcc's stdout/stderr act as
expected.
ok and testing miod@
|
|
as an ersatz for -W. Now that more and more third-party software assumes the
compiler supports -Wextra, this is definitely worth doing.
|
|
gcc 3 no longer defines this for us.
|
|
matches the behaviour of gcc >= 4.3 and clang
ok miod@
|
|
considerations.
|
|
with an optimization pass which attemps to identify and remove dead stores.
Unfortunately, this logic assumes that a given rtl MEM reference can only
refer to register contents and values, but not further dereference memory.
This is not true of all addressing modes on vax, and this causes gcc 3 to
consider as dead stores everything which can be expressed as *offset(register)
in vax assembly. The canonical example of this is linked list insertion or
removal, with instructions such as "item->prev->next = item->next" being
wrongly optimized out, and cause double frees or other funny linking problems
later on.
Add a knob to disable the troublesome part of that optimization pass, and
only enable this knob on vax.
This gives a native vax gcc 3 compiler able to rebuild the world.
|
|
considerations.
|
|
considerations.
|
|
|
|
From Joerg Wunsch in GCC PR 23479, under the GPLv2.
This is required to build the i965 backend with newer versions of mesa.
ok kettenis@ espie@ miod@
|
|
considerations.
|
|
instruction, before testing whether it can be built with `or.u'; this
allows further optimization.
condition_value(): handle ORDERED and UNORDERED condition codes.
print_operand(): remove support for no longer used `w' qualifier.
|
|
inline assembly, tb/tbnd instructions.
Don't use `r' qualifier for "register_operand", it's redundant.
|
|
incomplete equivalent. The ugly BLK<->{QI,HI,SI,DI} load and store insns in
m88k.md can thus get removed, and there was much rejoicing (as well as fewer
warnings when building).
|
|
|
|
Also, when compiling PIC, do not force PIC_OFFSET_TABLE_REGNUM to be set
in global_regs[], there is no reason to do this (on the other hand, forcing it
to be set in fixed_regs[] and call_used_regs[] is still necessary and correct).
|
|
|
|
gcc 4.
|
|
- turn FUNCTION_BOUNDARY into a constant, as intended, since its value
is used (among other things) to decide the alignment to expect from a
function pointer value.
- remove LABEL_ALIGN_AFTER_BARRIER. There is no reason to align jump
destinations on half a cache line, and the MI default for this value
is good enough.
However, in order to preserve the intent of what FUNCTION_BOUNDARY used to
be defined as, initialize align_functions to sensible values in
m88k_override_options(), unless -falign-functions=... is specified.
|
|
|
|
definition forces variable-sized types to always be passed by reference.
Update the varargs code to cope with this.
gcc.c-torture/execute/20020412-1 finally passes.
|
|
RTL generation in SETUP_INCOMING_VARARGS(...,0).
This means we no longer need to explicitely allocate room on the stack for
the saved register area (which we did in EXPAND_BUILTIN_SAVEREGS). We were
returning the correct size in SETUP_INCOMING_VARARGS's ``pretend_size''
argument anyway, causing this space to be allocated twice.
This change should also allow for the stack protector to be reenabled (after
more testing).
|
|
configuration, the wrong life analysis bug leading to removal of half the
code of ISDOT() in libc's fts.c fts_stat() no longer triggers.
|
|
code on m68k. In pure gcc tradition, even though the issue has been
acknowledged as a bug introduced around gcc 2.5, it was considered as
`not a regression' with subtle semantics tricks, and only fixed in 3.4.x
although the fix was available for a long time.
Although this changes an MI file, this chunk actually removes a no longer
used function which was only ever used on m68k.
|
|
considerations.
|
|
considerations.
|
|
existing behaviour of wrapping big PIC addresses in `unspec's to prevent the
cse pass from modifying them.
However, instead of building the unspec ourselves in the C code, rely upon
explicitely named define_insn() constructs in the .md description.
Then, fix the ambiguity this introduces between the locate1 and movsi_high_pic
insns by defining symbolic constants as the unspec selector, and using them,
instead of 0.
|
|
SYMBOL_REF or LABEL_REF, when deciding to put #got_rel relocations. This allows
(symbol + constant) to be correctly relocated when building PIC.
|
|
caused the code responsible for adding the proper #got_rel relocation to the
second part of the PIC symbol address load.
Instead of using an UNSPEC for that purpose (which violates assumptions made
by the MI code anyway), check for the the second operand of a LO_SUM being
either a SYMBOL_REF or a LABEL_REF, to output the #got_rel relocation, and
drop the remaining bits of UNSPEC handling.
|
|
|
|
|
|
PIC base register, it case it turns out to not be necessary. This should not
be needed because this sequence is only generated if
current_function_uses_pic_offset_table is set, but it can't hurt to expect the
worse (from rs6000).
legitimize_address(): do not coerce the address using (unspec:SI gen_rtvec() ),
but rather use it unmodified, in the -fPIC case. This lets libstdc++.so build
(and probably anything else being compiled with -fPIC rather than -fpic).
|
|
the fully static one. Update the compiler specs to allow for dynamic linking
of libraries and binaries.
|
|
ok miod@
|
|
a long time ago, because I had not realized symbol visibility required a
lot of shared library major bumps to avoid mixed binaries.
However, at the moment, none of the platforms using gcc 3 supports shared
libraries (this is being worked on), and the remaining gcc 2 platforms won't
support gcc 3 until switching from a.out to ELF, which makes the risk of mixing
visibility-unaware binaries with visibility-aware binaries moot.
Reminded by brad@.
|
|
-fpic or -fPIC. Same for __PIE__ and __pie__; matches the behaviour of
the in-tree gcc 4.
|
|
|
|
compiler can be built on one particular m88k system and output code for another
with the proper options, but it only does half the job since there is too much
knowledge of the native toolchain embedded (at compile-time) in the compiler.
Building code for a different operating system and toolchain is what
cross-compiler are for.
Remove support for SDB debug information (only used by SVR3) and tdesc debug
information (only used by SVR4). The latter is questionable, but this helps
making the code less entangled.
Tell m88k.h to not rewrite almost all ASM_WHATEVER macros gratuitously on the
false pretense that `all m88k assemblers use the same syntax for pseudo-ops'.
This was already not true with SVR4, and is getting worse with our ELF
toolchain.
|
|
used for more than registers).
Convert all output of registers to asm_fprintf with %R.
Stop altering reg_names[] at runtime depending on the selected register prefix.
|
|
|
|
in the m88k backend; as a result, SHORT_ADDRESS_P() will always return 0,
therefore remove all code depending on it being nonzero.
|
|
-m{no-,}optimize-arg-area doesn't do anything either since the arg area has
been removed in gcc 2.95.
|
|
- add the frame pointer to EPILOGUE_USES when profiling
- when the initial stack adjustement is larger than 64KB and requires a
temporary register to be used, add a REG_FRAME_RELATED_EXPR of the original
computation (not constrained by the adjustement size) to the REG_NOTES of
the stack pointer adjustement sequence. Borrowed from alpha which has a
similar issue.
|
|
with the same value.
|
|
need to sync with upstream anymore) to make things a bit simpler and get
rid of unintended bitrotting.
This time:
- remove the small-data feature. It was only supported for COFF binaries
anyway. This allows us to stop providing TARGET_ASM_SELECT_SECTION and
use the default flavour, from which this backend had derived a bit in
addition to sdata support, so this is a good thing...
- remove the -midentify-version option
- remove the -mbig-pic option, it has been superseded by -fPIC since years
and was supposed to be removed `in a future version' since a long time
as well.
- remove the old MONITOR_GCC debug hooks.
|
|
ok miod@
|
|
of files to include, in proper order, as tm_file at configure time. This
requires openbsd.h to be split, as also encountered on other platforms, and will
make further work easier.
No functional change introduced.
|
|
is used, a frame pointer is required for all non-leaf functions, and for leaf
functions unless -momit-leaf-frame-pointer is specified. Also, a frame pointer
is mandatory when profiling.
This used to be mostly harmless with gcc 2.95, but is required with gcc 3 to
get profiling to work.
|
|
DWARF debugging information to be produced, but define DWARF2_UNWIND_INFO
to zero to prevent it from being output yet.
This exposes dire weaknesses in the way the dwarf unwinder recognizes stack
frame setup instructions, so borrow code from rs6000 to rewrite and annotate
them as dwarf-edible instructions.
No functional change intended - although this enables one more optimization
code path in gcc.
|
|
if reload_completed; INITIAL_ELIMINATION_OFFSET() invokes it (which is very
likely a source for more bugs, to be investigated)
|