buildtools/gcc
X512 ef1ae53606 gcc11: Enable frame pointers by default for Haiku
* fno-omit-frame-pointer is enabled by default on all architectures
* This provides easier/faster backtraces at the cost of lower
  performance (Fedora benchmarks show between no difference and 10%
  depending on the scenario, with most things being around 2%)
* 32-bit x86 is not changed, because it has very few registes compared
  to other architectures, the performance cost would be even worse there
  (Fedora backed out the change on 32bit x86 as well)

On ARM and RISV-V, unwinding without a frame pointer is difficult (on
ARM this is due to the architecture defining mainly the link register as
a way to chaun functions, there is no fixed stack structure, on RISC-V I
don't know what the situation is but I expect there is something
similar). So on these architectures, the frame pointer should always be
enabled. On PPC, there is an hardware register doing pretty much the
frame pointer role, and that can't be disabled. On other architectures
(m68k and x86_64), it is mostly a matter of balance between the
performance cost and the ease of getting backtraces (for example for
realtime profiling). This can now easily be tweaked per architecture as
needed, with frame pointers being enabled by default (a reasonable
choice for someone starting a new architecture, ease of debugging is
more important than performance then).

Note that code that enables -fomit-frame-pointer explicitly can still do
that if needed, so the bad cases where the performance cost is very high
can be handled in this way.

Source for Fedora benchmarks: https://pagure.io/fesco/issue/2817#comment-826636

Change-Id: Iea9b8fec51adb192052f55cc49a8c1d922e27aa4
Reviewed-on: https://review.haiku-os.org/c/buildtools/+/4368
Reviewed-by: X512 X512 <danger_mail@list.ru>
Reviewed-by: David Karoly <karolyd577@gmail.com>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2023-06-15 15:10:40 +00:00
..
c++tools import gcc 11.3.0 2022-07-15 19:23:24 +02:00
config import gcc 11.3.0 2022-07-15 19:23:24 +02:00
contrib import gcc 11.3.0 2022-07-15 19:23:24 +02:00
fixincludes import gcc 11.3.0 2022-07-15 19:23:24 +02:00
gcc gcc11: Enable frame pointers by default for Haiku 2023-06-15 15:10:40 +00:00
gmp import gmp 6.2.1 2022-07-15 15:12:25 +02:00
gnattools import gcc 11.3.0 2022-07-15 19:23:24 +02:00
gotools import gcc 11.3.0 2022-07-15 19:23:24 +02:00
include Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
INSTALL import gcc 11.3.0 2022-07-15 19:23:24 +02:00
intl import gcc 11.3.0 2022-07-15 19:23:24 +02:00
isl import ISL 0.24 2022-07-15 15:05:28 +02:00
libada import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libatomic Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
libbacktrace import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libcc1 import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libcody Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
libcpp import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libdecnumber import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libffi Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
libgcc Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
libgfortran import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libgo import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libgomp Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
libhsail-rt import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libiberty import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libitm import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libobjc import gcc 11.3.0 2022-07-15 19:23:24 +02:00
liboffloadmic import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libphobos import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libquadmath Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
libsanitizer import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libssp import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libstdc++-v3 Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
libvtv import gcc 11.3.0 2022-07-15 19:23:24 +02:00
lto-plugin import gcc 11.3.0 2022-07-15 19:23:24 +02:00
maintainer-scripts import gcc 11.3.0 2022-07-15 19:23:24 +02:00
mpc import mpc 1.2.0 2022-07-15 15:15:39 +02:00
mpfr Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
zlib import gcc 11.3.0 2022-07-15 19:23:24 +02:00
.dir-locals.el
.gitattributes
ABOUT-NLS
ar-lib
ChangeLog import gcc 11.3.0 2022-07-15 19:23:24 +02:00
ChangeLog.jit
ChangeLog.tree-ssa
compile
config-ml.in
config.guess
config.rpath
config.sub
configure Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
configure.ac Merge gcc 11.3.0 with Haiku changes 2022-07-15 19:57:13 +02:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.RUNTIME
depcomp
install-sh
LAST_UPDATED import gcc 11.3.0 2022-07-15 19:23:24 +02:00
libtool-ldflags
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS
Makefile.def import gcc 11.3.0 2022-07-15 19:23:24 +02:00
Makefile.in import gcc 11.3.0 2022-07-15 19:23:24 +02:00
Makefile.tpl import gcc 11.3.0 2022-07-15 19:23:24 +02:00
MD5SUMS import gcc 11.3.0 2022-07-15 19:23:24 +02:00
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
NEWS import gcc 11.3.0 2022-07-15 19:23:24 +02:00
README
symlink-tree
test-driver
ylwrap

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.