mirror of git://gcc.gnu.org/git/gcc.git
dwarf2out.c (gen_variable_die): Emit DW_AT_const_expr attribute if needed.
* dwarf2out.c (gen_variable_die): Emit DW_AT_const_expr attribute if needed. Re-add origin_die variable and its initialization. cp/ * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_const_expr. testsuite/ * g++.dg/debug/dwarf2/constexpr-var-1.C: New test. From-SVN: r241408
This commit is contained in:
parent
f9faea3725
commit
8e6982f7aa
|
|
@ -1,5 +1,8 @@
|
||||||
2016-10-21 Jakub Jelinek <jakub@redhat.com>
|
2016-10-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* dwarf2out.c (gen_variable_die): Emit DW_AT_const_expr attribute
|
||||||
|
if needed. Re-add origin_die variable and its initialization.
|
||||||
|
|
||||||
* gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns
|
* gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns
|
||||||
even for -fstack-reuse=none, or for volatile vars etc.
|
even for -fstack-reuse=none, or for volatile vars etc.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-10-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* cp-objcp-common.c (cp_decl_dwarf_attribute): Handle
|
||||||
|
DW_AT_const_expr.
|
||||||
|
|
||||||
2016-10-17 Jakub Jelinek <jakub@redhat.com>
|
2016-10-17 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* cp-objcp-common.h (cp_function_decl_explicit_p,
|
* cp-objcp-common.h (cp_function_decl_explicit_p,
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,11 @@ cp_decl_dwarf_attribute (const_tree decl, int attr)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DW_AT_const_expr:
|
||||||
|
if (VAR_OR_FUNCTION_DECL_P (decl) && DECL_DECLARED_CONSTEXPR_P (decl))
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21264,6 +21264,7 @@ gen_variable_die (tree decl, tree origin, dw_die_ref context_die)
|
||||||
tree ultimate_origin;
|
tree ultimate_origin;
|
||||||
dw_die_ref var_die;
|
dw_die_ref var_die;
|
||||||
dw_die_ref old_die = decl ? lookup_decl_die (decl) : NULL;
|
dw_die_ref old_die = decl ? lookup_decl_die (decl) : NULL;
|
||||||
|
dw_die_ref origin_die = NULL;
|
||||||
bool declaration = (DECL_EXTERNAL (decl_or_origin)
|
bool declaration = (DECL_EXTERNAL (decl_or_origin)
|
||||||
|| class_or_namespace_scope_p (context_die));
|
|| class_or_namespace_scope_p (context_die));
|
||||||
bool specialization_p = false;
|
bool specialization_p = false;
|
||||||
|
|
@ -21423,7 +21424,7 @@ gen_variable_die (tree decl, tree origin, dw_die_ref context_die)
|
||||||
var_die = new_die (DW_TAG_variable, context_die, decl);
|
var_die = new_die (DW_TAG_variable, context_die, decl);
|
||||||
|
|
||||||
if (origin != NULL)
|
if (origin != NULL)
|
||||||
add_abstract_origin_attribute (var_die, origin);
|
origin_die = add_abstract_origin_attribute (var_die, origin);
|
||||||
|
|
||||||
/* Loop unrolling can create multiple blocks that refer to the same
|
/* Loop unrolling can create multiple blocks that refer to the same
|
||||||
static variable, so we must test for the DW_AT_declaration flag.
|
static variable, so we must test for the DW_AT_declaration flag.
|
||||||
|
|
@ -21509,6 +21510,14 @@ gen_variable_die (tree decl, tree origin, dw_die_ref context_die)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
tree_add_const_value_attribute_for_decl (var_die, decl_or_origin);
|
tree_add_const_value_attribute_for_decl (var_die, decl_or_origin);
|
||||||
|
|
||||||
|
if ((dwarf_version >= 4 || !dwarf_strict)
|
||||||
|
&& lang_hooks.decls.decl_dwarf_attribute (decl_or_origin,
|
||||||
|
DW_AT_const_expr) == 1
|
||||||
|
&& !get_AT (var_die, DW_AT_const_expr)
|
||||||
|
&& (origin_die == NULL || get_AT (origin_die, DW_AT_const_expr) == NULL)
|
||||||
|
&& !specialization_p)
|
||||||
|
add_AT_flag (var_die, DW_AT_const_expr, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Generate a DIE to represent a named constant. */
|
/* Generate a DIE to represent a named constant. */
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
2016-10-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* g++.dg/debug/dwarf2/constexpr-var-1.C: New test.
|
||||||
|
|
||||||
2016-10-21 Paul Thomas <pault@gcc.gnu.org>
|
2016-10-21 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/69566
|
PR fortran/69566
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
// { dg-do compile }
|
||||||
|
// { dg-options "-O -std=c++11 -g -dA -gno-strict-dwarf" }
|
||||||
|
// { dg-final { scan-assembler-times " DW_AT_const_expr" 2 } }
|
||||||
|
|
||||||
|
constexpr int a = 5;
|
||||||
|
struct S
|
||||||
|
{
|
||||||
|
static constexpr int b = 6;
|
||||||
|
} s;
|
||||||
Loading…
Reference in New Issue