the support provided depends on the backend. */
rtx stack_limit_rtx;
-/* Nonzero if we should track variables. When
- flag_var_tracking == AUTODETECT_VALUE it will be set according
- to optimize, debug_info_level and debug_hooks in process_options (). */
+/* Positive if we should track variables, negative if we should run
+ the var-tracking pass only to discard debug annotations, zero if
+ we're not to run it. When flag_var_tracking == AUTODETECT_VALUE it
+ will be set according to optimize, debug_info_level and debug_hooks
+ in process_options (). */
int flag_var_tracking = AUTODETECT_VALUE;
+/* Positive if we should track variables at assignments, negative if
+ we should run the var-tracking pass only to discard debug
+ annotations. When flag_var_tracking_assignments ==
+ AUTODETECT_VALUE it will be set according to flag_var_tracking. */
+int flag_var_tracking_assignments = AUTODETECT_VALUE;
+
+/* Nonzero if we should toggle flag_var_tracking_assignments after
+ processing options and computing its default. */
+int flag_var_tracking_assignments_toggle = 0;
+
/* Type of stack check. */
enum stack_check_type flag_stack_check = NO_STACK_CHECK;
#else
fprintf (asm_file, "\t.file\t");
output_quoted_string (asm_file, na);
- fputc ('\n', asm_file);
+ putc ('\n', asm_file);
#endif
}
ggc_protect_identifiers = false;
- /* This must also call cgraph_finalize_compilation_unit and
- cgraph_optimize. */
+ /* This must also call cgraph_finalize_compilation_unit. */
lang_hooks.decls.final_write_globals ();
if (errorcount || sorrycount)
case SWITCH_TYPE_ENABLED:
if (prepend_sep)
fputc (' ', asm_out_file);
- fprintf (asm_out_file, text);
+ fputs (text, asm_out_file);
/* No need to return the length here as
print_single_switch has already done it. */
return 0;
/* Drop through. */
case SWITCH_TYPE_DESCRIPTIVE:
- fprintf (stderr, text);
+ fputs (text, stderr);
/* No need to return the length here as
print_single_switch has already done it. */
return 0;
into the assembler file as comments. */
print_version (asm_out_file, ASM_COMMENT_START);
print_switch_values (print_to_asm_out_file);
- fprintf (asm_out_file, "\n");
+ putc ('\n', asm_out_file);
}
#endif
}
}
/* Default tree printer. Handles declarations only. */
-static bool
-default_tree_printer (pretty_printer * pp, text_info *text, const char *spec,
+bool
+default_tree_printer (pretty_printer *pp, text_info *text, const char *spec,
int precision, bool wide, bool set_locus, bool hash)
{
tree t;
|| flag_loop_block
|| flag_loop_interchange
|| flag_loop_strip_mine
- || flag_graphite_identity)
+ || flag_graphite_identity
+ || flag_loop_parallelize_all)
sorry ("Graphite loop optimizations cannot be used");
#endif
if (flag_gtoggle)
{
if (debug_info_level == DINFO_LEVEL_NONE)
- debug_info_level = DINFO_LEVEL_NORMAL;
+ {
+ debug_info_level = DINFO_LEVEL_NORMAL;
+
+ if (write_symbols == NO_DEBUG)
+ write_symbols = PREFERRED_DEBUGGING_TYPE;
+ }
else
debug_info_level = DINFO_LEVEL_NONE;
}
- if (flag_dump_final_insns)
+ if (flag_dump_final_insns && !flag_syntax_only && !no_backend)
{
FILE *final_output = fopen (flag_dump_final_insns, "w");
if (!final_output)
flag_var_tracking_uninit = 0;
}
- if (flag_rename_registers == AUTODETECT_VALUE)
- flag_rename_registers = default_debug_hooks->var_location
- != do_nothing_debug_hooks.var_location;
+ /* If the user specifically requested variable tracking with tagging
+ uninitialized variables, we need to turn on variable tracking.
+ (We already determined above that variable tracking is feasible.) */
+ if (flag_var_tracking_uninit)
+ flag_var_tracking = 1;
if (flag_var_tracking == AUTODETECT_VALUE)
flag_var_tracking = optimize >= 1;
+ if (flag_var_tracking_assignments == AUTODETECT_VALUE)
+ flag_var_tracking_assignments = flag_var_tracking
+ && !(flag_selective_scheduling || flag_selective_scheduling2);
+
+ if (flag_var_tracking_assignments_toggle)
+ flag_var_tracking_assignments = !flag_var_tracking_assignments;
+
+ if (flag_var_tracking_assignments && !flag_var_tracking)
+ flag_var_tracking = flag_var_tracking_assignments = -1;
+
+ if (flag_var_tracking_assignments
+ && (flag_selective_scheduling || flag_selective_scheduling2))
+ warning (0, "var-tracking-assignments changes selective scheduling");
+
+ if (flag_rename_registers == AUTODETECT_VALUE)
+ flag_rename_registers = default_debug_hooks->var_location
+ != do_nothing_debug_hooks.var_location;
+
if (flag_tree_cselim == AUTODETECT_VALUE)
#ifdef HAVE_conditional_move
flag_tree_cselim = 1;
flag_tree_cselim = 0;
#endif
- /* If the user specifically requested variable tracking with tagging
- uninitialized variables, we need to turn on variable tracking.
- (We already determined above that variable tracking is feasible.) */
- if (flag_var_tracking_uninit)
- flag_var_tracking = 1;
-
/* If auxiliary info generation is desired, open the output file.
This goes in the same directory as the source file--unlike
all the other output files. */
if (flag_signaling_nans)
flag_trapping_math = 1;
- /* We cannot reassociate if we want traps or signed zeros. */
+ /* We cannot reassociate if we want traps or signed zeros. */
if (flag_associative_math && (flag_trapping_math || flag_signed_zeros))
{
warning (0, "-fassociative-math disabled; other options take precedence");