aboutsummaryrefslogtreecommitdiff
path: root/gcc/opts.c
diff options
context:
space:
mode:
authorJames E Wilson <wilson@specifixinc.com>2005-12-05 21:31:39 -0800
committerJim Wilson <wilson@gcc.gnu.org>2005-12-05 21:31:39 -0800
commite395963ff613e9e6b497466bd9b49c6a3eb2f1eb (patch)
tree2328deb0683c3924365413140ef7031e54863a74 /gcc/opts.c
parent326eda4b252e23e9c9b2ee1f0ad484c2175e7534 (diff)
downloadgcc-e395963ff613e9e6b497466bd9b49c6a3eb2f1eb.zip
gcc-e395963ff613e9e6b497466bd9b49c6a3eb2f1eb.tar.gz
gcc-e395963ff613e9e6b497466bd9b49c6a3eb2f1eb.tar.bz2
re PR target/24934 (profilebootstrap failure)
PR target/24934 * opts.c (decode_options): Turn off partitioning if flag_unwind_tables is set. From-SVN: r108103
Diffstat (limited to 'gcc/opts.c')
-rw-r--r--gcc/opts.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/gcc/opts.c b/gcc/opts.c
index 7edaeac..776ce73 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -675,7 +675,8 @@ decode_options (unsigned int argc, const char **argv)
/* The optimization to partition hot and cold basic blocks into separate
sections of the .o and executable files does not work (currently)
- with exception handling. If flag_exceptions is turned on we need to
+ with exception handling. This is because there is no support for
+ generating unwind info. If flag_exceptions is turned on we need to
turn off the partitioning optimization. */
if (flag_exceptions && flag_reorder_blocks_and_partition)
@@ -686,8 +687,24 @@ decode_options (unsigned int argc, const char **argv)
flag_reorder_blocks = 1;
}
+ /* If user requested unwind info, then turn off the partitioning
+ optimization. */
+
+ if (flag_unwind_tables && ! targetm.unwind_tables_default
+ && flag_reorder_blocks_and_partition)
+ {
+ inform ("-freorder-blocks-and-parition does not support unwind info");
+ flag_reorder_blocks_and_partition = 0;
+ flag_reorder_blocks = 1;
+ }
+
+ /* If the target requested unwind info, then turn off the partitioning
+ optimization with a different message. Likewise, if the target does not
+ support named sections. */
+
if (flag_reorder_blocks_and_partition
- && !targetm.have_named_sections)
+ && (!targetm.have_named_sections
+ || (flag_unwind_tables && targetm.unwind_tables_default)))
{
inform
("-freorder-blocks-and-partition does not work on this architecture");