On Sun, Nov 04, 2018 at 11:43:44AM +0900, Masahiro Yamada wrote: > On Sat, Nov 3, 2018 at 12:55 AM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > > > On 11/2/18, Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> wrote: > > > On Thu, Nov 1, 2018 at 11:32 PM Changbin Du <changbin.du@xxxxxxxxx> wrote: > > >> On Thu, Nov 01, 2018 at 12:32:48PM +0900, Masahiro Yamada wrote: > > > > > > How about clang? > > > > > > For clang, -Og might be equivalent to -O1 at this moment, but I am not > > > sure. > > > > > > In my understanding, Clang does not inline functions marked with 'static > > > inline' > > > for -Og (or -O1) optimization level. > > > > > > Theoretically, 'inline' keyword is a just hint for the compiler, after all. > > > > I think this means that we cannot build the kernel in that configuration, > > at least with CONFIG_OPTIMIZE_INLINING=y. Without that option, > > every 'inline' becomes 'always_inline'. > > > > Sorry, I missed that fact. > > > At this moment of time, it is OK given the following: > > - CONFIG_OPTIMIZE_INLINING is defined only for x86 > - Clang cannot build x86 due to missing asm-goto > > > However, Clang with -Og > does not inline even such simple code like this: > > > -----test code------ > static inline int foo(int x) > { > return x; > } > > int bar(int x) > { > return foo(x); > } > ------------------- > > > > $ clang -Og -c -o bar.o bar.c > $ objdump -d bar.o > bar.o: file format elf64-x86-64 > > > Disassembly of section .text: > > 0000000000000000 <bar>: > 0: eb 0e jmp 10 <foo> > 2: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) > 9: 00 00 00 > c: 0f 1f 40 00 nopl 0x0(%rax) > > 0000000000000010 <foo>: > 10: 89 f8 mov %edi,%eax > 12: c3 retq > > I see. Thanks for your explanation. So I think we should disable CONFIG_DEBUG_EXPERIENCE for clang. Do you know how to distinguish different copmilers in Kconfig? > > -- > Best Regards > Masahiro Yamada -- Thanks, Changbin Du