title: c99 inline semantics with gcc (mspgcc)
body: <p>I am writing a couple of functions that I would like to inline.</p>
  
  <p>Reading <a href="http://www.greenend.org.uk/rjk/tech/inline.html" rel="noreferrer">here</a> and using the second c99 inline option with inline on all declarations and definitions, like so:</p>
  
  <pre><code>extern inline void SPFD54124B_write_cmd(uint16_t command);
  </code></pre>
  
  <p>in a header, and</p>
  
  <pre><code>inline void SPFD54124B_write_cmd(uint16_t command)
  {
      spi_write(command, CMD_WIDTH);
  }
  </code></pre>
  
  <p>in a corresponding c file. I was expecting to get inlined versions of the functions.</p>
  
  <p>But when I compile i get:</p>
  
  <pre><code>Generating dependencies dep/spi.d from src/spi.c
  Generating dependencies dep/spfd54124b.d from src/spfd54124b.c
  Generating dependencies dep/pomodoro.d from src/pomodoro.c
  Generating dependencies dep/font8x8_ualnum.d from src/font8x8_ualnum.c
  Generating dependencies dep/font8x8_basic.d from src/font8x8_basic.c
  Generating dependencies dep/evading_util.d from src/evading_util.c
  Compiling src/evading_util.c
  Compiling src/font8x8_basic.c
  Compiling src/font8x8_ualnum.c
  Compiling src/pomodoro.c
  src/spfd54124b.h:96:20: warning: inline function 'SPFD54124B_write_pixel' declared but never defined [enabled by default]
  src/spfd54124b.h:95:20: warning: inline function 'SPFD54124B_write_param' declared but never defined [enabled by default]
  src/spfd54124b.h:94:20: warning: inline function 'SPFD54124B_write_cmd' declared but never defined [enabled by default]
  src/spi.h:22:20: warning: inline function 'spi_write' declared but never defined [enabled by default]
  src/spfd54124b.h:96:20: warning: inline function 'SPFD54124B_write_pixel' declared but never defined [enabled by default]
  src/spfd54124b.h:95:20: warning: inline function 'SPFD54124B_write_param' declared but never defined [enabled by default]
  src/spfd54124b.h:94:20: warning: inline function 'SPFD54124B_write_cmd' declared but never defined [enabled by default]
  src/spi.h:22:20: warning: inline function 'spi_write' declared but never defined [enabled by default]
  src/pomodoro.c: In function 'main':
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:29:25: warning: called from here [-Winline]
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:31:25: warning: called from here [-Winline]
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:35:25: warning: called from here [-Winline]
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:36:25: warning: called from here [-Winline]
  src/spfd54124b.h:96:20: warning: inlining failed in call to 'SPFD54124B_write_pixel': function body not available [-Winline]
  src/pomodoro.c:40:31: warning: called from here [-Winline]
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:43:25: warning: called from here [-Winline]
  Compiling src/spfd54124b.c
  src/spi.h:22:20: warning: inline function 'spi_write' declared but never defined [enabled by default]
  src/spi.h:22:20: warning: inline function 'spi_write' declared but never defined [enabled by default]
  src/spfd54124b.c: In function 'SPFD54124B_init':
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:124:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:124:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spfd54124b.c: In function 'SPFD54124B_read':
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:25:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:29:14: warning: called from here [-Winline]
  src/spfd54124b.c: In function 'SPFD54124B_write_cmd':
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:124:14: warning: called from here [-Winline]
  src/spfd54124b.c: In function 'SPFD54124B_write_param':
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spfd54124b.c: In function 'SPFD54124B_write_pixel':
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spfd54124b.c: In function 'SPFD54124B_setrow':
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:124:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spfd54124b.c: In function 'SPFD54124B_setcol':
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:124:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spfd54124b.c: In function 'SPFD54124B_lputch':
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:124:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spfd54124b.c: In function 'SPFD54124B_putch':
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:124:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  src/spi.h:22:20: warning: inlining failed in call to 'spi_write': function body not available [-Winline]
  src/spfd54124b.c:129:14: warning: called from here [-Winline]
  Compiling src/spi.c
  Linking bin/pomodoro.elf
  
  &gt;&gt;&gt;&gt; Size of Firmware &lt;&lt;&lt;&lt;
     text    data     bss     dec     hex filename
     3150       0       2    3152     c50 bin/pomodoro.elf
  
  src/spfd54124b.h:96:20: warning: inline function 'SPFD54124B_write_pixel' declared but never defined [enabled by default]
  src/spfd54124b.h:95:20: warning: inline function 'SPFD54124B_write_param' declared but never defined [enabled by default]
  src/spfd54124b.h:94:20: warning: inline function 'SPFD54124B_write_cmd' declared but never defined [enabled by default]
  src/spi.h:22:20: warning: inline function 'spi_write' declared but never defined [enabled by default]
  src/spfd54124b.h:96:20: warning: inline function 'SPFD54124B_write_pixel' declared but never defined [enabled by default]
  src/spfd54124b.h:95:20: warning: inline function 'SPFD54124B_write_param' declared but never defined [enabled by default]
  src/spfd54124b.h:94:20: warning: inline function 'SPFD54124B_write_cmd' declared but never defined [enabled by default]
  src/spi.h:22:20: warning: inline function 'spi_write' declared but never defined [enabled by default]
  src/pomodoro.c: In function 'main':
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:29:25: warning: called from here [-Winline]
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:31:25: warning: called from here [-Winline]
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:35:25: warning: called from here [-Winline]
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:36:25: warning: called from here [-Winline]
  src/spfd54124b.h:96:20: warning: inlining failed in call to 'SPFD54124B_write_pixel': function body not available [-Winline]
  src/pomodoro.c:40:31: warning: called from here [-Winline]
  src/spfd54124b.h:94:20: warning: inlining failed in call to 'SPFD54124B_write_cmd': function body not available [-Winline]
  src/pomodoro.c:43:25: warning: called from here [-Winline]
  </code></pre>
  
  <p>I'm not sure I understand the different inlining alternatives in c99.</p>