This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[patch][rfc] Enabling more optimizations with -ON
- From: Rafael EspÃndola <rafael dot espindola at gmail dot com>
- To: Binutils <binutils at sourceware dot org>
- Cc: Cary Coutant <ccoutant at google dot com>
- Date: Mon, 3 Nov 2014 11:39:26 -0500
- Subject: [patch][rfc] Enabling more optimizations with -ON
- Authentication-results: sourceware.org; auth=none
In compilers the -ON options enable various optimizations. Different
compilers (and compiler versions) have different ones, but the option
itself is commonly available and selects a somewhat corresponding
level.
In both bfd ld and gold very few optimizations are enabled with the
-ON options. This means that users have to know which optimizations
are available:
ld ...-O3 --gc-sections --icf=safe....
If an optimization is added to one of them, a configure check has to
be used to find if the program is being linked with gold or bfd (and
which version).
As a starting point, the attached patch changes gold to gc sections by
default if given -O3 or higher. It can still be disabled with an
explicit --no-gc-sections.
Cheers,
Rafael
2014-11-03 Rafael Ãvila de EspÃndola <rafael.espindola@gmail.com>
* options.cc (General_options::finalize): Set gc_sections by default
if -O3 or higher is used.
diff --git a/gold/options.cc b/gold/options.cc
index 731061d..b704439 100644
--- a/gold/options.cc
+++ b/gold/options.cc
@@ -1250,6 +1250,9 @@ General_options::finalize()
gold_fatal(_("Options --incremental-changed, --incremental-unchanged, "
"--incremental-unknown require the use of --incremental"));
+ if (!this->user_set_gc_sections() && this->optimize() >= 3)
+ this->set_gc_sections(true);
+
// Check for options that are not compatible with incremental linking.
// Where an option can be disabled without seriously changing the semantics
// of the link, we turn the option off; otherwise, we issue a fatal error.