diff --git a/cc/cc.go b/cc/cc.go index 2a84f5533..019b1f26e 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -505,6 +505,7 @@ type ModuleContextIntf interface { selectedStl() string baseModuleName() string getVndkExtendsModuleName() string + isAfdoCompile() bool isPgoCompile() bool isNDKStubLibrary() bool useClangLld(actx ModuleContext) bool @@ -1259,6 +1260,13 @@ func (c *Module) IsVndk() bool { return false } +func (c *Module) isAfdoCompile() bool { + if afdo := c.afdo; afdo != nil { + return afdo.Properties.AfdoTarget != nil + } + return false +} + func (c *Module) isPgoCompile() bool { if pgo := c.pgo; pgo != nil { return pgo.Properties.PgoCompile @@ -1536,6 +1544,10 @@ func (ctx *moduleContextImpl) isVndk() bool { return ctx.mod.IsVndk() } +func (ctx *moduleContextImpl) isAfdoCompile() bool { + return ctx.mod.isAfdoCompile() +} + func (ctx *moduleContextImpl) isPgoCompile() bool { return ctx.mod.isPgoCompile() } diff --git a/cc/lto.go b/cc/lto.go index 6d555790c..2c274bd3f 100644 --- a/cc/lto.go +++ b/cc/lto.go @@ -123,7 +123,7 @@ func (lto *lto) flags(ctx BaseModuleContext, flags Flags) Flags { // If the module does not have a profile, be conservative and limit cross TU inline // limit to 5 LLVM IR instructions, to balance binary size increase and performance. - if !ctx.isPgoCompile() { + if !ctx.isPgoCompile() && !ctx.isAfdoCompile() { flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,-plugin-opt,-import-instr-limit=5") }