https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70900
Bug ID: 70900
Summary: a library-level class-wide subprogram is not generated
into .o/.s
Product: gcc
Version: 6.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ada
Assignee: unassigned at gcc dot gnu.org
Reporter: demoonlit at panathenaia dot halfmoon.jp
Target Milestone: ---
gcc-6.1.0 does not generate machine-code for some kind of library-level
class-wide subprograms into .o/.s.
Minor difference of nest-level, profile, or body of it affects possible to
reproduce. I have not found the detailed condition, but found one reproducible
small code, below:
package p is
type t is tagged null record;
end p;
with p;
function p.liblevelcwsubp (obj : p.t'class) return p.t'class is
begin
return obj;
end p.liblevelcwsubp;
% x86_64-apple-darwin10-gcc -c p-liblevelcwsubp.adb
% nm p-liblevelcwsubp.o
nm: no name list
% x86_64-pc-linux-gnu-gcc -c p-liblevelcwsubp.adb
% x86_64-pc-linux-gnu-nm p-liblevelcwsubp.o
(empty output)
% x86_64-apple-darwin10-gcc -S p-liblevelcwsubp.adb
% cat p-liblevelcwsubp.s
.subsections_via_symbols
(end of file)
% x86_64-pc-linux-gnu-gcc -S p-liblevelcwsubp.adb
% cat p-liblevelcwsubp.s
.file "p-liblevelcwsubp.adb"
.ident "GCC: (GNU) 6.1.0"
.section .note.GNU-stack,"",@progbits
(end of file)
% x86_64-apple-darwin10-gcc --version
x86_64-apple-darwin10-gcc (GCC) 6.1.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% x86_64-pc-linux-gnu-gcc --version
x86_64-pc-linux-gnu-gcc (GCC) 6.1.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
----------
gcc-5 works:
% gcc -c p-liblevelcwsubp.adb
% nm p-liblevelcwsubp.o
0000000000000230 s EH_frame1
U ___gnat_rcheck_CE_Access_Check
U ___gnat_rcheck_PE_Accessibility_Check
0000000000000000 T __ada_p__liblevelcwsubp
U _memcpy
U _system__secondary_stack__ss_allocate
% gcc -S p-liblevelcwsubp.adb
% cat p-liblevelcwsubp.s
.const
LC0:
.ascii "p-liblevelcwsubp.adb"
.space 1
.text
.globl __ada_p__liblevelcwsubp
__ada_p__liblevelcwsubp:
LFB2:
pushq %rbp
LCFI0:
movq %rsp, %rbp
(...more contents)
% gcc --version
gcc (GCC) 5.3.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.