+2017-06-08 Jan Hubicka <hubicka@ucw.cz>
+
+ * cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition
+ instead of flag_reorder_blocks_and_partition.
+ * dbxout.c (dbxout_function_end): Likewise.
+ * dwarf2out.c (gen_subprogram_die): Likewise.
+ * haifa-sched.c (sched_create_recovery_edges): Likewise.
+ * hw-doloop.c (reorg_loops): Likewise.
+ * varasm.c (assemble_start_function,
+ assemble_end_function): Likewise.
+ (decide_function_section): Do not check for
+ flag_reorder_blocks_and_partition.
+
2017-06-08 Alexander Ivchenko <alexander.ivchenko@intel.com>
* tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
layout required moving a block from the hot to the cold
section. This would create an illegal partitioning unless some
manual fixup was performed. */
- gcc_assert (!(crtl->bb_reorder_complete
- && flag_reorder_blocks_and_partition));
+ gcc_assert (!crtl->bb_reorder_complete || !crtl->has_bb_partition);
initialize_original_copy_tables ();
/* By convention, GCC will mark the end of a function with an N_FUN
symbol and an empty string. */
- if (flag_reorder_blocks_and_partition)
+ if (crtl->has_bb_partition)
{
dbxout_begin_empty_stabs (N_FUN);
dbxout_stab_value_label_diff (crtl->subsections.hot_section_end_label,
struct function *fun = DECL_STRUCT_FUNCTION (decl);
- if (!flag_reorder_blocks_and_partition)
+ if (!crtl->has_bb_partition)
{
dw_fde_ref fde = fun->fde;
if (fde->dw_fde_begin)
{
const char *end_label;
- if (flag_reorder_blocks_and_partition)
+ if (crtl->has_bb_partition)
{
if (in_cold_section_p)
end_label = crtl->subsections.cold_section_end_label;
if (sec != text_section)
have_multiple_function_sections = true;
- if (flag_reorder_blocks_and_partition && !cold_text_section)
+ if (crtl->has_bb_partition && !cold_text_section)
{
gcc_assert (current_function_decl == fun);
cold_text_section = unlikely_text_section ();
/* Partition type is the same, if it is "unpartitioned". */
{
/* Rewritten from cfgrtl.c. */
- if (flag_reorder_blocks_and_partition
- && targetm_common.have_named_sections)
+ if (crtl->has_bb_partition && targetm_common.have_named_sections)
{
/* We don't need the same note for the check because
any_condjump_p (check) == true. */
/* We can't enter cfglayout mode anymore if basic block partitioning
already happened. */
- if (do_reorder && !flag_reorder_blocks_and_partition)
+ if (do_reorder && !crtl->has_bb_partition)
{
reorder_loops (loops);
free_loops (loops);
{
first_function_block_is_cold = false;
- if (flag_reorder_blocks_and_partition)
- /* We will decide in assemble_start_function. */
- return;
-
if (DECL_SECTION_NAME (decl))
{
struct cgraph_node *node = cgraph_node::get (current_function_decl);
char tmp_label[100];
bool hot_label_written = false;
- if (flag_reorder_blocks_and_partition)
+ if (crtl->has_bb_partition)
{
ASM_GENERATE_INTERNAL_LABEL (tmp_label, "LHOTB", const_labelno);
crtl->subsections.hot_section_label = ggc_strdup (tmp_label);
has both hot and cold sections, because we don't want to re-set
the alignment when the section switch happens mid-function. */
- if (flag_reorder_blocks_and_partition)
+ if (crtl->has_bb_partition)
{
first_function_block_is_cold = false;
/* Switch to the correct text section for the start of the function. */
switch_to_section (function_section (decl));
- if (flag_reorder_blocks_and_partition
- && !hot_label_written)
+ if (crtl->has_bb_partition && !hot_label_written)
ASM_OUTPUT_LABEL (asm_out_file, crtl->subsections.hot_section_label);
/* Tell assembler to move to target machine's alignment for functions. */
{
#ifdef ASM_DECLARE_FUNCTION_SIZE
/* We could have switched section in the middle of the function. */
- if (flag_reorder_blocks_and_partition)
+ if (crtl->has_bb_partition)
switch_to_section (function_section (decl));
ASM_DECLARE_FUNCTION_SIZE (asm_out_file, fnname, decl);
#endif
}
/* Output labels for end of hot/cold text sections (to be used by
debug info.) */
- if (flag_reorder_blocks_and_partition)
+ if (crtl->has_bb_partition)
{
section *save_text_section;