diff --git a/gcc/opts.c b/gcc/opts.c
index 6503980cd33..f2f058b3ece 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -1343,6 +1343,9 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
      opts->x_flag_complex_method = 1;
    else if (opts_set->x_flag_cx_fortran_rules)
      opts->x_flag_complex_method = opts->x_flag_default_complex_method;
+
+  if (opts->x_flag_var_tracking_assignments && !opts->x_flag_var_tracking)
+    opts->x_flag_var_tracking = opts->x_flag_var_tracking_assignments = -1;
  }
  
  #define LEFT_COLUMN	27
diff --git a/gcc/testsuite/gcc.dg/pr102585.c b/gcc/testsuite/gcc.dg/pr102585.c
new file mode 100644
index 00000000000..efd066b4a4e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr102585.c
@@ -0,0 +1,6 @@
+/* PR debug/102585 */
+/* { dg-do compile } */
+/* { dg-options "-fvar-tracking-assignments -fno-var-tracking" } */
+
+#pragma GCC optimize 0
+void d_demangle_callback_Og() { int c = 0; }
