diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2018-12-11 11:08:45 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-12-11 11:08:45 +0000 |
commit | 13a6dfe3a1268265006628e58ec94d7d4222328d (patch) | |
tree | e7a7cc44e293595fed209fd469dc146c46db4b6b /gcc/ada/gcc-interface/utils.c | |
parent | d6a73cc353b90dbb253985aa6aba95c0d98680e6 (diff) | |
download | gcc-13a6dfe3a1268265006628e58ec94d7d4222328d.zip gcc-13a6dfe3a1268265006628e58ec94d7d4222328d.tar.gz gcc-13a6dfe3a1268265006628e58ec94d7d4222328d.tar.bz2 |
[Ada] Almost always inline init. procedure of small and simple records
2018-12-11 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* fe.h (Debug_Generated_Code): Declare.
* gcc-interface/gigi.h (enum inline_status_t): Rename
is_disabled to is_default, is_enabled to is_requested and add
is_prescribed.
* gcc-interface/decl.c (inline_status_for_subprog): New function.
(gnat_to_gnu_entity) <E_Subprogram_Type>: Use it to get the
inlining status of the subprogram.
* gcc-interface/trans.c (gigi): Adjust to above renaming.
(build_raise_check): Likewise.
(Compilation_Unit_to_gnu): Likewise.
(gnat_to_gnu): Likewise.
* gcc-interface/utils.c (create_subprog_decl): Likewise. Deal
with is_prescribed status by setting
DECL_DISREGARD_INLINE_LIMITS. Do not set the
DECL_NO_INLINE_WARNING_P flag if Debug_Generated_Code is true.
From-SVN: r266976
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
-rw-r--r-- | gcc/ada/gcc-interface/utils.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index 05959d6..5646051 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -3235,20 +3235,17 @@ create_subprog_decl (tree name, tree asm_name, tree type, tree param_decl_list, DECL_ARTIFICIAL (subprog_decl) = artificial_p; DECL_EXTERNAL (subprog_decl) = extern_flag; + DECL_FUNCTION_IS_DEF (subprog_decl) = definition; + DECL_IGNORED_P (subprog_decl) = !debug_info_p; TREE_PUBLIC (subprog_decl) = public_flag; - if (!debug_info_p) - DECL_IGNORED_P (subprog_decl) = 1; - if (definition) - DECL_FUNCTION_IS_DEF (subprog_decl) = 1; - switch (inline_status) { case is_suppressed: DECL_UNINLINABLE (subprog_decl) = 1; break; - case is_disabled: + case is_default: break; case is_required: @@ -3269,9 +3266,15 @@ create_subprog_decl (tree name, tree asm_name, tree type, tree param_decl_list, /* ... fall through ... */ - case is_enabled: + case is_prescribed: + DECL_DISREGARD_INLINE_LIMITS (subprog_decl) = 1; + + /* ... fall through ... */ + + case is_requested: DECL_DECLARED_INLINE_P (subprog_decl) = 1; - DECL_NO_INLINE_WARNING_P (subprog_decl) = artificial_p; + if (!Debug_Generated_Code) + DECL_NO_INLINE_WARNING_P (subprog_decl) = artificial_p; break; default: |