Merge lp:~rsandifo/gcc-linaro/lp-714921-4.5 into lp:gcc-linaro/4.5

Proposed by Richard Sandiford
Status: Merged
Merged at revision: 99491
Proposed branch: lp:~rsandifo/gcc-linaro/lp-714921-4.5
Merge into: lp:gcc-linaro/4.5
Diff against target: 322 lines (+156/-19) (has conflicts)
2 files modified
ChangeLog.linaro (+29/-0)
gcc/dwarf2out.c (+127/-19)
Text conflict in ChangeLog.linaro
To merge this branch: bzr merge lp:~rsandifo/gcc-linaro/lp-714921-4.5
Reviewer Review Type Date Requested Status
Andrew Stubbs (community) Approve
Review via email: mp+56525@code.launchpad.net

Description of the change

Patch was committed upstream. This backport includes two small changes
from one of Jakub's earlier patches (see ChangeLog).

This may still go into upstream 4.5, but it isn't certain yet.

To post a comment you must log in.
Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild has taken a snapshot of this branch at r99490 and queued it for build.

The snapshot is available at:
 http://ex.seabright.co.nz/snapshots/gcc-linaro-4.5+bzr99490~rsandifo~lp-714921-4.5.tar.xdelta3.xz

and will be built on the following builders:
 a8-builder a9-builder i686 x86_64

You can track the build queue at:
 http://ex.seabright.co.nz/helpers/scheduler

cbuild-snapshot: gcc-linaro-4.5+bzr99490~rsandifo~lp-714921-4.5
cbuild-ancestor: lp:gcc-linaro+bzr99489
cbuild-state: check

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on i686-lucid-cbuild102-scorpius-i686r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99490~rsandifo~lp-714921-4.5/logs/i686-lucid-cbuild102-scorpius-i686r1

The test suite results were unchanged compared to the branch point lp:gcc-linaro+bzr99489.

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99490~rsandifo~lp-714921-4.5/logs/i686-lucid-cbuild102-scorpius-i686r1/gcc-testsuite.txt

cbuild-checked: i686-lucid-cbuild102-scorpius-i686r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on x86_64-maverick-cbuild102-crucis-x86_64r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99490~rsandifo~lp-714921-4.5/logs/x86_64-maverick-cbuild102-crucis-x86_64r1

The test suite results were unchanged compared to the branch point lp:gcc-linaro+bzr99489.

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99490~rsandifo~lp-714921-4.5/logs/x86_64-maverick-cbuild102-crucis-x86_64r1/gcc-testsuite.txt

cbuild-checked: x86_64-maverick-cbuild102-crucis-x86_64r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :
Download full text (161.8 KiB)

cbuild successfully built this on armv7l-maverick-cbuild102-ursa2-cortexa8r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99490~rsandifo~lp-714921-4.5/logs/armv7l-maverick-cbuild102-ursa2-cortexa8r1

The test suite results changed compared to the branch point lp:gcc-linaro+bzr99489:
 -PASS: gcc.c-torture/compile/limits-fndefn.c -O3 -g (test for excess errors)
 +FAIL: gcc.c-torture/compile/limits-fndefn.c -O3 -g (test for excess errors)
 -PASS: largefile.c -O0 -I. (test for excess errors)
 +FAIL: largefile.c -O0 -I. (test for excess errors)
 +WARNING: program timed out.
 -PASS: gfortran.dg/used_dummy_types_1.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test
 -PASS: gfortran.dg/used_dummy_types_1.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
 -PASS: gfortran.dg/used_dummy_types_1.f90 -O3 -fomit-frame-pointer -funroll-loops execution test
 -PASS: gfortran.dg/used_dummy_types_1.f90 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
 +UNRESOLVED: gfortran.dg/used_dummy_types_1.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions compilation failed to produce executable
 +FAIL: gfortran.dg/used_dummy_types_1.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
 +UNRESOLVED: gfortran.dg/used_dummy_types_1.f90 -O3 -fomit-frame-pointer -funroll-loops compilation failed to produce executable
 +FAIL: gfortran.dg/used_dummy_types_1.f90 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
 -PASS: gfortran.dg/used_dummy_types_1.f90 -O3 -g execution test
 -PASS: gfortran.dg/used_dummy_types_1.f90 -O3 -g (test for excess errors)
 -PASS: gfortran.dg/used_dummy_types_1.f90 -Os execution test
 -PASS: gfortran.dg/used_dummy_types_1.f90 -Os (test for excess errors)
 +UNRESOLVED: gfortran.dg/used_dummy_types_1.f90 -O3 -g compilation failed to produce executable
 +FAIL: gfortran.dg/used_dummy_types_1.f90 -O3 -g (test for excess errors)
 +UNRESOLVED: gfortran.dg/used_dummy_types_1.f90 -Os compilation failed to produce executable
 +FAIL: gfortran.dg/used_dummy_types_1.f90 -Os (test for excess errors)
 -PASS: gfortran.dg/used_interface_ref.f90 -O0 execution test
 -PASS: gfortran.dg/used_interface_ref.f90 -O0 (test for excess errors)
 -PASS: gfortran.dg/used_interface_ref.f90 -O1 execution test
 -PASS: gfortran.dg/used_interface_ref.f90 -O1 (test for excess errors)
 -PASS: gfortran.dg/used_interface_ref.f90 -O2 execution test
 -PASS: gfortran.dg/used_interface_ref.f90 -O2 (test for excess errors)
 -PASS: gfortran.dg/used_interface_ref.f90 -O3 -fomit-frame-pointer execution test
 -PASS: gfortran.dg/used_interface_ref.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test
 -PASS: gfortran.dg/used_interface_ref.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
 -PASS: gfortran.dg/used_interface_ref.f90 -O3 -fomit-frame-pointer -funroll-loops execution test
 -PASS: gfortran.dg/used_interface_ref.f90 -O3 -fomit-frame-pointer -funroll-loops (test...

Revision history for this message
Michael Hope (michaelh1) wrote :

Please ignore the gfortran failues above. I changed the build environment while the test was running.

Revision history for this message
Andrew Stubbs (ams-codesourcery) wrote :

The A9 results have yet to come in, but this change seems core independent, so I very much doubt they'll find any trouble.

Please indicate in the ChangeLog that this is a backport.

OK with that change. Go ahead and merge to lp:gcc-linaro.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'ChangeLog.linaro'
--- ChangeLog.linaro 2011-04-06 12:29:08 +0000
+++ ChangeLog.linaro 2011-04-08 10:52:54 +0000
@@ -1,7 +1,36 @@
1<<<<<<< TREE
12011-04-06 Andrew Stubbs <ams@codesourcery.com>22011-04-06 Andrew Stubbs <ams@codesourcery.com>
23
3 Merge from FSF 4.5 branch r172013 (pre 4.5.3).4 Merge from FSF 4.5 branch r172013 (pre 4.5.3).
45
6=======
72011-03-28 Richard Sandiford <richard.sandiford@linaro.org>
8
9 Backport from mainline:
10 gcc/
11 * dwarf2out.c (dw_loc_list_node): Add resolved_addr and replaced.
12 (cached_dw_loc_list_def): New structure.
13 (cached_dw_loc_list): New typedef.
14 (cached_dw_loc_list_table): New variable.
15 (cached_dw_loc_list_table_hash): New function.
16 (cached_dw_loc_list_table_eq): Likewise.
17 (add_location_or_const_value_attribute): Take a bool cache_p.
18 Cache the list when the parameter is true.
19 (gen_formal_parameter_die): Update caller.
20 (gen_variable_die): Likewise.
21 (dwarf2out_finish): Likewise.
22 (dwarf2out_abstract_function): Nullify cached_dw_loc_list_table
23 while generating debug info for the decl.
24 (dwarf2out_function_decl): Clear cached_dw_loc_list_table.
25 (dwarf2out_init): Initialize cached_dw_loc_list_table.
26 (resolve_addr): Cache the result of resolving a chain of
27 location lists.
28
29 From: 2010-10-12 Jakub Jelinek <jakub@redhat.com>
30 * dwarf2out.c (dw_loc_list_node): Add emitted field.
31 (output_loc_list): Return immediately if emitted is set, set it.
32
33>>>>>>> MERGE-SOURCE
52011-03-10 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>342011-03-10 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
635
7 LP:73044036 LP:730440
837
=== modified file 'gcc/dwarf2out.c'
--- gcc/dwarf2out.c 2011-03-10 14:55:10 +0000
+++ gcc/dwarf2out.c 2011-04-08 10:52:54 +0000
@@ -4256,6 +4256,12 @@
4256 Only on head of list */4256 Only on head of list */
4257 const char *section; /* Section this loclist is relative to */4257 const char *section; /* Section this loclist is relative to */
4258 dw_loc_descr_ref expr;4258 dw_loc_descr_ref expr;
4259 /* True if all addresses in this and subsequent lists are known to be
4260 resolved. */
4261 bool resolved_addr;
4262 /* True if this list has been replaced by dw_loc_next. */
4263 bool replaced;
4264 bool emitted;
4259} dw_loc_list_node;4265} dw_loc_list_node;
42604266
4261#if defined (DWARF2_DEBUGGING_INFO) || defined (DWARF2_UNWIND_INFO)4267#if defined (DWARF2_DEBUGGING_INFO) || defined (DWARF2_UNWIND_INFO)
@@ -5759,6 +5765,19 @@
5759/* Table of decl location linked lists. */5765/* Table of decl location linked lists. */
5760static GTY ((param_is (var_loc_list))) htab_t decl_loc_table;5766static GTY ((param_is (var_loc_list))) htab_t decl_loc_table;
57615767
5768/* A cached location list. */
5769struct GTY (()) cached_dw_loc_list_def {
5770 /* The DECL_UID of the decl that this entry describes. */
5771 unsigned int decl_id;
5772
5773 /* The cached location list. */
5774 dw_loc_list_ref loc_list;
5775};
5776typedef struct cached_dw_loc_list_def cached_dw_loc_list;
5777
5778/* Table of cached location lists. */
5779static GTY ((param_is (cached_dw_loc_list))) htab_t cached_dw_loc_list_table;
5780
5762/* A pointer to the base of a list of references to DIE's that5781/* A pointer to the base of a list of references to DIE's that
5763 are uniquely identified by their tag, presence/absence of5782 are uniquely identified by their tag, presence/absence of
5764 children DIE's, and list of attribute/value pairs. */5783 children DIE's, and list of attribute/value pairs. */
@@ -6112,7 +6131,7 @@
6112static void insert_int (HOST_WIDE_INT, unsigned, unsigned char *);6131static void insert_int (HOST_WIDE_INT, unsigned, unsigned char *);
6113static void insert_float (const_rtx, unsigned char *);6132static void insert_float (const_rtx, unsigned char *);
6114static rtx rtl_for_decl_location (tree);6133static rtx rtl_for_decl_location (tree);
6115static bool add_location_or_const_value_attribute (dw_die_ref, tree,6134static bool add_location_or_const_value_attribute (dw_die_ref, tree, bool,
6116 enum dwarf_attribute);6135 enum dwarf_attribute);
6117static bool tree_add_const_value_attribute (dw_die_ref, tree);6136static bool tree_add_const_value_attribute (dw_die_ref, tree);
6118static bool tree_add_const_value_attribute_for_decl (dw_die_ref, tree);6137static bool tree_add_const_value_attribute_for_decl (dw_die_ref, tree);
@@ -7731,6 +7750,24 @@
7731 htab_find_with_hash (decl_loc_table, decl, DECL_UID (decl));7750 htab_find_with_hash (decl_loc_table, decl, DECL_UID (decl));
7732}7751}
77337752
7753/* Returns a hash value for X (which really is a cached_dw_loc_list_list). */
7754
7755static hashval_t
7756cached_dw_loc_list_table_hash (const void *x)
7757{
7758 return (hashval_t) ((const cached_dw_loc_list *) x)->decl_id;
7759}
7760
7761/* Return nonzero if decl_id of cached_dw_loc_list X is the same as
7762 UID of decl *Y. */
7763
7764static int
7765cached_dw_loc_list_table_eq (const void *x, const void *y)
7766{
7767 return (((const cached_dw_loc_list *) x)->decl_id
7768 == DECL_UID ((const_tree) y));
7769}
7770
7734/* Equate a DIE to a particular declaration. */7771/* Equate a DIE to a particular declaration. */
77357772
7736static void7773static void
@@ -10355,6 +10392,10 @@
10355{10392{
10356 dw_loc_list_ref curr = list_head;10393 dw_loc_list_ref curr = list_head;
1035710394
10395 if (list_head->emitted)
10396 return;
10397 list_head->emitted = true;
10398
10358 ASM_OUTPUT_LABEL (asm_out_file, list_head->ll_symbol);10399 ASM_OUTPUT_LABEL (asm_out_file, list_head->ll_symbol);
1035910400
10360 /* Walk the location list, and output each range + expression. */10401 /* Walk the location list, and output each range + expression. */
@@ -15920,15 +15961,22 @@
15920 these things can crop up in other ways also.) Note that one type of15961 these things can crop up in other ways also.) Note that one type of
15921 constant value which can be passed into an inlined function is a constant15962 constant value which can be passed into an inlined function is a constant
15922 pointer. This can happen for example if an actual argument in an inlined15963 pointer. This can happen for example if an actual argument in an inlined
15923 function call evaluates to a compile-time constant address. */15964 function call evaluates to a compile-time constant address.
15965
15966 CACHE_P is true if it is worth caching the location list for DECL,
15967 so that future calls can reuse it rather than regenerate it from scratch.
15968 This is true for BLOCK_NONLOCALIZED_VARS in inlined subroutines,
15969 since we will need to refer to them each time the function is inlined. */
1592415970
15925static bool15971static bool
15926add_location_or_const_value_attribute (dw_die_ref die, tree decl,15972add_location_or_const_value_attribute (dw_die_ref die, tree decl, bool cache_p,
15927 enum dwarf_attribute attr)15973 enum dwarf_attribute attr)
15928{15974{
15929 rtx rtl;15975 rtx rtl;
15930 dw_loc_list_ref list;15976 dw_loc_list_ref list;
15931 var_loc_list *loc_list;15977 var_loc_list *loc_list;
15978 cached_dw_loc_list *cache;
15979 void **slot;
1593215980
15933 if (TREE_CODE (decl) == ERROR_MARK)15981 if (TREE_CODE (decl) == ERROR_MARK)
15934 return false;15982 return false;
@@ -15964,7 +16012,34 @@
15964 && add_const_value_attribute (die, rtl))16012 && add_const_value_attribute (die, rtl))
15965 return true;16013 return true;
15966 }16014 }
15967 list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2);16015 /* If this decl is from BLOCK_NONLOCALIZED_VARS, we might need its
16016 list several times. See if we've already cached the contents. */
16017 list = NULL;
16018 if (loc_list == NULL || cached_dw_loc_list_table == NULL)
16019 cache_p = false;
16020 if (cache_p)
16021 {
16022 cache = (cached_dw_loc_list *)
16023 htab_find_with_hash (cached_dw_loc_list_table, decl, DECL_UID (decl));
16024 if (cache)
16025 list = cache->loc_list;
16026 }
16027 if (list == NULL)
16028 {
16029 list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2);
16030 /* It is usually worth caching this result if the decl is from
16031 BLOCK_NONLOCALIZED_VARS and if the list has at least two elements. */
16032 if (cache_p && list && list->dw_loc_next)
16033 {
16034 slot = htab_find_slot_with_hash (cached_dw_loc_list_table, decl,
16035 DECL_UID (decl), INSERT);
16036 cache = (cached_dw_loc_list *)
16037 ggc_alloc_cleared (sizeof (cached_dw_loc_list));
16038 cache->decl_id = DECL_UID (decl);
16039 cache->loc_list = list;
16040 *slot = cache;
16041 }
16042 }
15968 if (list)16043 if (list)
15969 {16044 {
15970 add_AT_location_description (die, attr, list);16045 add_AT_location_description (die, attr, list);
@@ -17532,7 +17607,7 @@
17532 equate_decl_number_to_die (node, parm_die);17607 equate_decl_number_to_die (node, parm_die);
17533 if (! DECL_ABSTRACT (node_or_origin))17608 if (! DECL_ABSTRACT (node_or_origin))
17534 add_location_or_const_value_attribute (parm_die, node_or_origin,17609 add_location_or_const_value_attribute (parm_die, node_or_origin,
17535 DW_AT_location);17610 node == NULL, DW_AT_location);
1753617611
17537 break;17612 break;
1753817613
@@ -17712,6 +17787,7 @@
17712 tree context;17787 tree context;
17713 int was_abstract;17788 int was_abstract;
17714 htab_t old_decl_loc_table;17789 htab_t old_decl_loc_table;
17790 htab_t old_cached_dw_loc_list_table;
1771517791
17716 /* Make sure we have the actual abstract inline, not a clone. */17792 /* Make sure we have the actual abstract inline, not a clone. */
17717 decl = DECL_ORIGIN (decl);17793 decl = DECL_ORIGIN (decl);
@@ -17725,7 +17801,9 @@
17725 DIE. Be sure to not clobber the outer location table nor use it or we would17801 DIE. Be sure to not clobber the outer location table nor use it or we would
17726 get locations in abstract instantces. */17802 get locations in abstract instantces. */
17727 old_decl_loc_table = decl_loc_table;17803 old_decl_loc_table = decl_loc_table;
17804 old_cached_dw_loc_list_table = cached_dw_loc_list_table;
17728 decl_loc_table = NULL;17805 decl_loc_table = NULL;
17806 cached_dw_loc_list_table = NULL;
1772917807
17730 /* Be sure we've emitted the in-class declaration DIE (if any) first, so17808 /* Be sure we've emitted the in-class declaration DIE (if any) first, so
17731 we don't get confused by DECL_ABSTRACT. */17809 we don't get confused by DECL_ABSTRACT. */
@@ -17750,6 +17828,7 @@
1775017828
17751 current_function_decl = save_fn;17829 current_function_decl = save_fn;
17752 decl_loc_table = old_decl_loc_table;17830 decl_loc_table = old_decl_loc_table;
17831 cached_dw_loc_list_table = old_cached_dw_loc_list_table;
17753 pop_cfun ();17832 pop_cfun ();
17754}17833}
1775517834
@@ -18431,9 +18510,8 @@
18431 && !TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl_or_origin)))18510 && !TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl_or_origin)))
18432 defer_location (decl_or_origin, var_die);18511 defer_location (decl_or_origin, var_die);
18433 else18512 else
18434 add_location_or_const_value_attribute (var_die,18513 add_location_or_const_value_attribute (var_die, decl_or_origin,
18435 decl_or_origin,18514 decl == NULL, DW_AT_location);
18436 DW_AT_location);
18437 add_pubname (decl_or_origin, var_die);18515 add_pubname (decl_or_origin, var_die);
18438 }18516 }
18439 else18517 else
@@ -20049,6 +20127,7 @@
20049 dwarf2out_decl (decl);20127 dwarf2out_decl (decl);
2005020128
20051 htab_empty (decl_loc_table);20129 htab_empty (decl_loc_table);
20130 htab_empty (cached_dw_loc_list_table);
20052}20131}
2005320132
20054/* Output a marker (i.e. a label) for the beginning of the generated code for20133/* Output a marker (i.e. a label) for the beginning of the generated code for
@@ -20649,6 +20728,11 @@
20649 decl_loc_table = htab_create_ggc (10, decl_loc_table_hash,20728 decl_loc_table = htab_create_ggc (10, decl_loc_table_hash,
20650 decl_loc_table_eq, NULL);20729 decl_loc_table_eq, NULL);
2065120730
20731 /* Allocate the cached_dw_loc_list_table. */
20732 cached_dw_loc_list_table
20733 = htab_create_ggc (10, cached_dw_loc_list_table_hash,
20734 cached_dw_loc_list_table_eq, NULL);
20735
20652 /* Allocate the initial hunk of the decl_scope_table. */20736 /* Allocate the initial hunk of the decl_scope_table. */
20653 decl_scope_table = VEC_alloc (tree, gc, 256);20737 decl_scope_table = VEC_alloc (tree, gc, 256);
2065420738
@@ -21278,30 +21362,53 @@
21278{21362{
21279 dw_die_ref c;21363 dw_die_ref c;
21280 dw_attr_ref a;21364 dw_attr_ref a;
21281 dw_loc_list_ref *curr;21365 dw_loc_list_ref *curr, *start, loc;
21282 unsigned ix;21366 unsigned ix;
2128321367
21284 for (ix = 0; VEC_iterate (dw_attr_node, die->die_attr, ix, a); ix++)21368 for (ix = 0; VEC_iterate (dw_attr_node, die->die_attr, ix, a); ix++)
21285 switch (AT_class (a))21369 switch (AT_class (a))
21286 {21370 {
21287 case dw_val_class_loc_list:21371 case dw_val_class_loc_list:
21288 curr = AT_loc_list_ptr (a);21372 start = curr = AT_loc_list_ptr (a);
21289 while (*curr)21373 loc = *curr;
21374 gcc_assert (loc);
21375 /* The same list can be referenced more than once. See if we have
21376 already recorded the result from a previous pass. */
21377 if (loc->replaced)
21378 *curr = loc->dw_loc_next;
21379 else if (!loc->resolved_addr)
21290 {21380 {
21291 if (!resolve_addr_in_expr ((*curr)->expr))21381 /* As things stand, we do not expect or allow one die to
21382 reference a suffix of another die's location list chain.
21383 References must be identical or completely separate.
21384 There is therefore no need to cache the result of this
21385 pass on any list other than the first; doing so
21386 would lead to unnecessary writes. */
21387 while (*curr)
21292 {21388 {
21293 dw_loc_list_ref next = (*curr)->dw_loc_next;21389 gcc_assert (!(*curr)->replaced && !(*curr)->resolved_addr);
21294 if (next && (*curr)->ll_symbol)21390 if (!resolve_addr_in_expr ((*curr)->expr))
21295 {21391 {
21296 gcc_assert (!next->ll_symbol);21392 dw_loc_list_ref next = (*curr)->dw_loc_next;
21297 next->ll_symbol = (*curr)->ll_symbol;21393 if (next && (*curr)->ll_symbol)
21394 {
21395 gcc_assert (!next->ll_symbol);
21396 next->ll_symbol = (*curr)->ll_symbol;
21397 }
21398 *curr = next;
21298 }21399 }
21299 *curr = next;21400 else
21401 curr = &(*curr)->dw_loc_next;
21300 }21402 }
21403 if (loc == *start)
21404 loc->resolved_addr = 1;
21301 else21405 else
21302 curr = &(*curr)->dw_loc_next;21406 {
21407 loc->replaced = 1;
21408 loc->dw_loc_next = *start;
21409 }
21303 }21410 }
21304 if (!AT_loc_list (a))21411 if (!*start)
21305 {21412 {
21306 remove_AT (die, a->dw_attr);21413 remove_AT (die, a->dw_attr);
21307 ix--;21414 ix--;
@@ -21361,6 +21468,7 @@
21361 add_location_or_const_value_attribute (21468 add_location_or_const_value_attribute (
21362 VEC_index (deferred_locations, deferred_locations_list, i)->die,21469 VEC_index (deferred_locations, deferred_locations_list, i)->die,
21363 VEC_index (deferred_locations, deferred_locations_list, i)->variable,21470 VEC_index (deferred_locations, deferred_locations_list, i)->variable,
21471 false,
21364 DW_AT_location);21472 DW_AT_location);
21365 }21473 }
2136621474

Subscribers

People subscribed via source and target branches