Committed as r259943.

On Fri, May 4, 2018 at 4:57 PM, Pekka Jääskeläinen
<pekka.jaaskelai...@tut.fi> wrote:
> HSA assumes all program scope HSAIL symbols can be queried from
> the host runtime API, thus cannot be removed by the IPA.
>
> Getting some inlining happening in the finalized binary required:
> * explicitly marking the 'prog' scope functions and the launcher
> function "externally_visible" to avoid the inliner removing it
> * also the host_def ptr is set to externally visible, otherwise
> IPA assumes it's never set
> * adding the 'inline' keyword to functions to enable inlining,
> otherwise GCC defaults to replaceable functions (one can link
> over the previous one) which cannot be inlined
> * replacing all calls to declarations with calls to definitions to
> enable the inliner to find the definition
> * to fix missing hidden argument types in the generated functions.
> These were ignored silently until GCC started to be able to
> inline calls to such functions.
> * do not gimplify before fixing the call targets. Otherwise the
> calls get detached and the definitions are not found. The reason
> why this happens is not clear, but gimplifying only after call
> target decl->def conversion fixes this.
> ---
>  gcc/brig/ChangeLog                                | 11 +++
>  gcc/brig/brig-lang.c                              |  4 +-
>  gcc/brig/brigfrontend/brig-branch-inst-handler.cc |  2 +
>  gcc/brig/brigfrontend/brig-function-handler.cc    | 30 ++++++---
>  gcc/brig/brigfrontend/brig-function.cc            |  4 +-
>  gcc/brig/brigfrontend/brig-to-generic.cc          | 82
> ++++++++++++++++++++++-
>  gcc/brig/brigfrontend/brig-to-generic.h           |  8 +++
>  gcc/brig/brigfrontend/brig-variable-handler.cc    |  3 +
>  8 files changed, 130 insertions(+), 14 deletions(-)
>

Reply via email to