Re: GCC options for kernel live-patching (Was: Add a new option to control inlining only on static functions)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 
> That was promised to be done by Honza Hubička. He's very skilled in IPA optimizations and he's aware
> of optimizations that cause troubles for live-patching.

:) I am not sure how skilful I am, but here is what I arrived to.

 We have transformations that are modeled as clonning, which are
  - inlining  (can't be disabled completely because of always inline, but -fno-inline
    does most of stuff)
  - cloning (disabled via -fno-ipa-cp)
  - ipa-sra (-fno-ipa-sra)
  - splitting (-fno-partial-inlining)
 These should play well with Martin's tracking code

 We propagate info about side effects of function:
  - function attribute discovery (pure, const, nothrow, malloc)
    Some of this can be disabled by -fno-ipa-pure-const, but not all
    of it.  Nothrow does not have flag but it is obviously not a concern
    for C++
  - ipa-pta (disabled by default, -fno-ipa-pta)
  - ipa-reference (list of accessed/modified global vars), disable by -fno-ipa-refernece
  - stack alignment requirements (no flag to disable)
  - inter-procedural register allocation (-fno-ipa-ra)

 We perform discovery of functions/variables with no address taken and
 optimizations that are not valid otherwise such as duplicating them
 or doing skipping them for alias analysis (no flag to disable)

 Identical code folding merges function bodies that are semanticaly equivalent
 and thus one can't patch one without patching another, -fno-ipa-icf

 Unreachable code/variable removal may be concern too (no flag to disable)

 Write only global variable discovery (no flag to dosable)

 Visibility changes with -flto and/or -fwhole-program

 We also have profile propagation (discovery of cuntions used only in cold regions,
 but that I guess is only performance issue not correctness)
 No flag to disable

Honza

> 
> Martin
> 
> >
> >thanks.
> >
> >Qing
> >
> 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux