Hi Bin,

> -----Original Message-----
> From: gcc-ow...@gcc.gnu.org <gcc-ow...@gcc.gnu.org> On Behalf Of
> Bin.Cheng
> Sent: Sunday, November 11, 2018 12:28 PM
> To: GCC Development <gcc@gcc.gnu.org>
> Subject: A GCC bug related to inline?
> 
> Hi,
> Given below simple code:
> 
> inline int foo (int a) {
>   return a + 1;
> }
> int g = 5;
> int main(void) {
>   return foo(g);
> }
> 
> When compiled with -O0, GCC generates below assembly:
> .file "test.c"
> .text
> .globl g
> .data
> .align 4
> .type g, @object
> .size g, 4
> g:
> .long 5
> .text
> .globl main
> .type main, @function
> main:
> .LFB1:
> .cfi_startproc
> pushq %rbp
> .cfi_def_cfa_offset 16
> .cfi_offset 6, -16
> movq %rsp, %rbp
> .cfi_def_cfa_register 6
> movl g(%rip), %eax
> movl %eax, %edi
> call foo
> popq %rbp
> .cfi_def_cfa 7, 8
> ret
> .cfi_endproc
> .LFE1:
> .size main, .-main
> .ident "GCC: (GNU) 9.0.0 20181031 (experimental)"
> .section .note.GNU-stack,"",@progbits
> 
> Note the body of function foo is removed while call to foo isn't inlined, this
> results in undefined reference to "foo" at linking.
> 
> Guess this is a bug?

Not sure if this is a bug.
Looks like -std=c99  or -std=gnu99 inline won't generate function body.    
Older standard do emit,  I used extra -fgnu89-inline.

> 
> Thanks,
> bin
Regards,
Venkat.

Reply via email to