diff options
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -592,6 +592,7 @@ decode_options (unsigned int argc, const char **argv) or less automatically remove extra jumps, but would also try to use more short jumps instead of long jumps. */ flag_reorder_blocks = 0; + flag_reorder_blocks_and_partition = 0; } if (optimize_size) @@ -657,6 +658,19 @@ decode_options (unsigned int argc, const char **argv) if (flag_really_no_inline == 2) flag_really_no_inline = flag_no_inline; + + /* 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 + turn off the partitioning optimization. */ + + if (flag_exceptions && flag_reorder_blocks_and_partition) + { + warning + ("-freorder-blocks-and-partition does not work with exceptions"); + flag_reorder_blocks_and_partition = 0; + flag_reorder_blocks = 1; + } } /* Handle target- and language-independent options. Return zero to @@ -1268,6 +1282,10 @@ common_handle_option (size_t scode, const char *arg, flag_reorder_blocks = value; break; + case OPT_freorder_blocks_and_partition: + flag_reorder_blocks_and_partition = value; + break; + case OPT_freorder_functions: flag_reorder_functions = value; break; |