Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
88dad228
Commit
88dad228
authored
Nov 20, 1996
by
Jason Merrill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x
From-SVN: r13209
parent
d2872d37
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
63 additions
and
25 deletions
+63
-25
gcc/c-decl.c
+4
-0
gcc/dwarf2out.c
+51
-16
gcc/toplev.c
+6
-7
gcc/varasm.c
+2
-2
No files found.
gcc/c-decl.c
View file @
88dad228
...
@@ -1324,6 +1324,10 @@ pushtag (name, type)
...
@@ -1324,6 +1324,10 @@ pushtag (name, type)
tagged type. */
tagged type. */
TYPE_STUB_DECL
(
type
)
=
pushdecl
(
build_decl
(
TYPE_DECL
,
NULL_TREE
,
type
));
TYPE_STUB_DECL
(
type
)
=
pushdecl
(
build_decl
(
TYPE_DECL
,
NULL_TREE
,
type
));
/* An approximation for now, so we can tell this is a function-scope tag.
This will be updated in poplevel. */
TYPE_CONTEXT
(
type
)
=
DECL_CONTEXT
(
TYPE_STUB_DECL
(
type
));
}
}
/* Handle when a new declaration NEWDECL
/* Handle when a new declaration NEWDECL
...
...
gcc/dwarf2out.c
View file @
88dad228
...
@@ -5793,18 +5793,16 @@ add_bit_size_attribute (die, decl)
...
@@ -5793,18 +5793,16 @@ add_bit_size_attribute (die, decl)
(
unsigned
)
TREE_INT_CST_LOW
(
DECL_SIZE
(
decl
)));
(
unsigned
)
TREE_INT_CST_LOW
(
DECL_SIZE
(
decl
)));
}
}
/* If the compiled language is
GNU
C, then add a 'prototyped'
/* If the compiled language is
ANSI
C, then add a 'prototyped'
attribute, if arg types are given for the parameters of a function. */
attribute, if arg types are given for the parameters of a function. */
inline
void
inline
void
add_prototyped_attribute
(
die
,
func_type
)
add_prototyped_attribute
(
die
,
func_type
)
register
dw_die_ref
die
;
register
dw_die_ref
die
;
register
tree
func_type
;
register
tree
func_type
;
{
{
if
((
strcmp
(
language_string
,
"GNU C"
)
==
0
)
if
(
get_AT_unsigned
(
comp_unit_die
,
DW_AT_language
)
==
DW_LANG_C89
&&
(
TYPE_ARG_TYPES
(
func_type
)
!=
NULL
))
&&
TYPE_ARG_TYPES
(
func_type
)
!=
NULL
)
{
add_AT_flag
(
die
,
DW_AT_prototyped
,
1
);
add_AT_flag
(
die
,
DW_AT_prototyped
,
0
);
}
}
}
...
@@ -5893,6 +5891,11 @@ scope_die_for (t, context_die)
...
@@ -5893,6 +5891,11 @@ scope_die_for (t, context_die)
register
tree
containing_scope
;
register
tree
containing_scope
;
register
unsigned
long
i
;
register
unsigned
long
i
;
/* Function-local tags and functions get stuck in limbo until they are
fixed up by decls_for_scope. */
if
(
context_die
==
NULL
)
return
NULL
;
/* Walk back up the declaration tree looking for a place to define
/* Walk back up the declaration tree looking for a place to define
this type. */
this type. */
if
(
TREE_CODE_CLASS
(
TREE_CODE
(
t
))
==
't'
)
if
(
TREE_CODE_CLASS
(
TREE_CODE
(
t
))
==
't'
)
...
@@ -6037,7 +6040,7 @@ decl_start_label (decl)
...
@@ -6037,7 +6040,7 @@ decl_start_label (decl)
/* These routines generate the internnal representation of the DIE's for
/* These routines generate the internnal representation of the DIE's for
the compilation unit. Debugging information is collected by walking
the compilation unit. Debugging information is collected by walking
the declaration trees passed in from dwarf2out_
file_scope_
decl(). */
the declaration trees passed in from dwarf2out_decl(). */
static
void
static
void
gen_array_type_die
(
type
,
context_die
)
gen_array_type_die
(
type
,
context_die
)
...
@@ -6489,6 +6492,10 @@ gen_subprogram_die (decl, context_die)
...
@@ -6489,6 +6492,10 @@ gen_subprogram_die (decl, context_die)
fp_loc
=
new_loc_descr
(
DW_OP_reg0
+
fp_reg
);
fp_loc
=
new_loc_descr
(
DW_OP_reg0
+
fp_reg
);
add_AT_loc
(
subr_die
,
DW_AT_frame_base
,
fp_loc
);
add_AT_loc
(
subr_die
,
DW_AT_frame_base
,
fp_loc
);
if
(
current_function_needs_context
)
add_AT_loc
(
subr_die
,
DW_AT_static_link
,
loc_descriptor
(
lookup_static_chain
(
decl
)));
#ifdef DWARF_GNU_EXTENSIONS
#ifdef DWARF_GNU_EXTENSIONS
ASM_GENERATE_INTERNAL_LABEL
(
label_id
,
BODY_BEGIN_LABEL
,
ASM_GENERATE_INTERNAL_LABEL
(
label_id
,
BODY_BEGIN_LABEL
,
current_funcdef_number
);
current_funcdef_number
);
...
@@ -7325,13 +7332,28 @@ decls_for_scope (stmt, context_die, depth)
...
@@ -7325,13 +7332,28 @@ decls_for_scope (stmt, context_die, depth)
next_block_number
++
;
next_block_number
++
;
}
}
/* Output the DIEs to represent all of the data objects, functions,
/* Output the DIEs to represent all of the data objects and typedefs
typedefs, and tagged types declared directly within this block but not
declared directly within this block but not within any nested
within any nested sub-blocks. */
sub-blocks. Also, nested function and tag DIEs have been
generated with a parent of NULL; fix that up now. */
for
(
decl
=
BLOCK_VARS
(
stmt
);
for
(
decl
=
BLOCK_VARS
(
stmt
);
decl
!=
NULL
;
decl
=
TREE_CHAIN
(
decl
))
decl
!=
NULL
;
decl
=
TREE_CHAIN
(
decl
))
{
{
gen_decl_die
(
decl
,
context_die
);
if
(
TREE_CODE
(
decl
)
==
FUNCTION_DECL
)
{
register
dw_die_ref
die
=
lookup_decl_die
(
decl
);
add_child_die
(
context_die
,
die
);
}
else
if
(
TREE_CODE
(
decl
)
==
TYPE_DECL
&&
TYPE_DECL_IS_STUB
(
decl
))
{
register
dw_die_ref
die
=
lookup_type_die
(
TREE_TYPE
(
decl
));
if
(
die
)
add_child_die
(
context_die
,
die
);
else
gen_decl_die
(
decl
,
context_die
);
}
else
gen_decl_die
(
decl
,
context_die
);
}
}
/* Output the DIEs to represent all sub-blocks (and the items declared
/* Output the DIEs to represent all sub-blocks (and the items declared
...
@@ -7478,10 +7500,11 @@ gen_decl_die (decl, context_die)
...
@@ -7478,10 +7500,11 @@ gen_decl_die (decl, context_die)
/***************** Debug Information Generation Hooks ***********************/
/***************** Debug Information Generation Hooks ***********************/
void
void
dwarf2out_
file_scope_decl
(
decl
,
set_finalizing
)
dwarf2out_
decl
(
decl
)
register
tree
decl
;
register
tree
decl
;
register
int
set_finalizing
;
{
{
register
dw_die_ref
context_die
=
comp_unit_die
;
if
(
TREE_CODE
(
decl
)
==
ERROR_MARK
)
if
(
TREE_CODE
(
decl
)
==
ERROR_MARK
)
{
{
return
;
return
;
...
@@ -7544,6 +7567,13 @@ dwarf2out_file_scope_decl (decl, set_finalizing)
...
@@ -7544,6 +7567,13 @@ dwarf2out_file_scope_decl (decl, set_finalizing)
{
{
return
;
return
;
}
}
/* If we're a nested function, initially use a parent of NULL; if we're
a plain function, this will be fixed up in decls_for_scope. If
we're a method, it will be ignored, since we already have a DIE. */
if
(
decl_function_context
(
decl
))
context_die
=
NULL
;
break
;
break
;
case
VAR_DECL
:
case
VAR_DECL
:
...
@@ -7574,17 +7604,22 @@ dwarf2out_file_scope_decl (decl, set_finalizing)
...
@@ -7574,17 +7604,22 @@ dwarf2out_file_scope_decl (decl, set_finalizing)
if
(
DECL_SOURCE_LINE
(
decl
)
==
0
)
if
(
DECL_SOURCE_LINE
(
decl
)
==
0
)
return
;
return
;
/* If we are in terse mode, don't generate any DIEs to represent any
/* If we are in terse mode, don't generate any DIEs for types. */
actual typedefs. */
if
(
debug_info_level
<=
DINFO_LEVEL_TERSE
)
if
(
debug_info_level
<=
DINFO_LEVEL_TERSE
)
return
;
return
;
/* If we're a function-scope tag, initially use a parent of NULL;
this will be fixed up in decls_for_scope. */
if
(
decl_function_context
(
decl
))
context_die
=
NULL
;
break
;
break
;
default
:
default
:
return
;
return
;
}
}
gen_decl_die
(
decl
,
co
mp_uni
t_die
);
gen_decl_die
(
decl
,
co
ntex
t_die
);
if
(
TREE_CODE
(
decl
)
==
FUNCTION_DECL
if
(
TREE_CODE
(
decl
)
==
FUNCTION_DECL
&&
DECL_INITIAL
(
decl
)
!=
NULL
)
&&
DECL_INITIAL
(
decl
)
!=
NULL
)
...
...
gcc/toplev.c
View file @
88dad228
...
@@ -2538,7 +2538,7 @@ compile_file (name)
...
@@ -2538,7 +2538,7 @@ compile_file (name)
if
(
write_symbols
==
DWARF2_DEBUG
if
(
write_symbols
==
DWARF2_DEBUG
&&
(
TREE_CODE
(
decl
)
!=
FUNCTION_DECL
||
!
DECL_INITIAL
(
decl
)))
&&
(
TREE_CODE
(
decl
)
!=
FUNCTION_DECL
||
!
DECL_INITIAL
(
decl
)))
TIMEVAR
(
symout_time
,
dwarf2out_
file_scope_decl
(
decl
,
1
));
TIMEVAR
(
symout_time
,
dwarf2out_
decl
(
decl
));
#endif
#endif
}
}
}
}
...
@@ -2782,9 +2782,8 @@ rest_of_type_compilation (type, toplev)
...
@@ -2782,9 +2782,8 @@ rest_of_type_compilation (type, toplev)
TIMEVAR
(
symout_time
,
dwarfout_file_scope_decl
(
TYPE_STUB_DECL
(
type
),
0
));
TIMEVAR
(
symout_time
,
dwarfout_file_scope_decl
(
TYPE_STUB_DECL
(
type
),
0
));
#endif
#endif
#ifdef DWARF2_DEBUGGING_INFO
#ifdef DWARF2_DEBUGGING_INFO
/* Don't write out function-scope types here. */
if
(
write_symbols
==
DWARF2_DEBUG
)
if
(
write_symbols
==
DWARF2_DEBUG
&&
toplev
)
TIMEVAR
(
symout_time
,
dwarf2out_decl
(
TYPE_STUB_DECL
(
type
)));
TIMEVAR
(
symout_time
,
dwarf2out_file_scope_decl
(
TYPE_STUB_DECL
(
type
),
0
));
#endif
#endif
}
}
...
@@ -2900,7 +2899,7 @@ rest_of_compilation (decl)
...
@@ -2900,7 +2899,7 @@ rest_of_compilation (decl)
if
(
write_symbols
==
DWARF2_DEBUG
)
if
(
write_symbols
==
DWARF2_DEBUG
)
{
{
set_decl_abstract_flags
(
decl
,
1
);
set_decl_abstract_flags
(
decl
,
1
);
TIMEVAR
(
symout_time
,
dwarf2out_
file_scope_decl
(
decl
,
0
));
TIMEVAR
(
symout_time
,
dwarf2out_
decl
(
decl
));
set_decl_abstract_flags
(
decl
,
0
);
set_decl_abstract_flags
(
decl
,
0
);
}
}
#endif
#endif
...
@@ -2934,7 +2933,7 @@ rest_of_compilation (decl)
...
@@ -2934,7 +2933,7 @@ rest_of_compilation (decl)
if
(
write_symbols
==
DWARF2_DEBUG
)
if
(
write_symbols
==
DWARF2_DEBUG
)
{
{
set_decl_abstract_flags
(
decl
,
1
);
set_decl_abstract_flags
(
decl
,
1
);
TIMEVAR
(
symout_time
,
dwarf2out_
file_scope_decl
(
decl
,
0
));
TIMEVAR
(
symout_time
,
dwarf2out_
decl
(
decl
));
set_decl_abstract_flags
(
decl
,
0
);
set_decl_abstract_flags
(
decl
,
0
);
}
}
#endif
#endif
...
@@ -3431,7 +3430,7 @@ rest_of_compilation (decl)
...
@@ -3431,7 +3430,7 @@ rest_of_compilation (decl)
#ifdef DWARF2_DEBUGGING_INFO
#ifdef DWARF2_DEBUGGING_INFO
if
(
write_symbols
==
DWARF2_DEBUG
)
if
(
write_symbols
==
DWARF2_DEBUG
)
TIMEVAR
(
symout_time
,
dwarf2out_
file_scope_decl
(
decl
,
0
));
TIMEVAR
(
symout_time
,
dwarf2out_
decl
(
decl
));
#endif
#endif
exit_rest_of_compilation
:
exit_rest_of_compilation
:
...
...
gcc/varasm.c
View file @
88dad228
...
@@ -1183,7 +1183,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
...
@@ -1183,7 +1183,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
#ifdef DWARF2_DEBUGGING_INFO
#ifdef DWARF2_DEBUGGING_INFO
if
(
write_symbols
==
DWARF2_DEBUG
&&
top_level
if
(
write_symbols
==
DWARF2_DEBUG
&&
top_level
&&
DECL_CONTEXT
(
decl
))
&&
DECL_CONTEXT
(
decl
))
dwarf2out_
file_scope_decl
(
decl
,
0
);
dwarf2out_
decl
(
decl
);
#endif
#endif
}
}
...
@@ -1316,7 +1316,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
...
@@ -1316,7 +1316,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
#ifdef DWARF2_DEBUGGING_INFO
#ifdef DWARF2_DEBUGGING_INFO
if
(
write_symbols
==
DWARF2_DEBUG
&&
top_level
if
(
write_symbols
==
DWARF2_DEBUG
&&
top_level
&&
DECL_CONTEXT
(
decl
))
&&
DECL_CONTEXT
(
decl
))
dwarf2out_
file_scope_decl
(
decl
,
0
);
dwarf2out_
decl
(
decl
);
#endif
#endif
/* Only output DWARF debugging information for record-scope variables
/* Only output DWARF debugging information for record-scope variables
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment