Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8540b2c1 authored by Yi Kong's avatar Yi Kong Committed by Automerger Merge Worker
Browse files

Merge "Add platform-wide sampling PGO option" into rvc-dev am: bc6341b8

Change-Id: I735eef59b2da6b35f5c039c1593a2dfe618df5c1
parents 4f4c89ce bc6341b8
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1031,6 +1031,10 @@ func (c *deviceConfig) DeviceKernelHeaderDirs() []string {
	return c.config.productVariables.DeviceKernelHeaders
}

func (c *deviceConfig) SamplingPGO() bool {
	return Bool(c.config.productVariables.SamplingPGO)
}

func (c *config) NativeLineCoverage() bool {
	return Bool(c.productVariables.NativeLineCoverage)
}
+2 −0
Original line number Diff line number Diff line
@@ -251,6 +251,8 @@ type productVariables struct {
	ClangTidy  *bool   `json:",omitempty"`
	TidyChecks *string `json:",omitempty"`

	SamplingPGO  *bool   `json:",omitempty"`

	NativeLineCoverage   *bool    `json:",omitempty"`
	Native_coverage      *bool    `json:",omitempty"`
	ClangCoverage        *bool    `json:",omitempty"`
+19 −14
Original line number Diff line number Diff line
@@ -88,20 +88,21 @@ func (pgo *pgo) props() []interface{} {
	return []interface{}{&pgo.Properties}
}

func (props *PgoProperties) addProfileGatherFlags(ctx ModuleContext, flags Flags) Flags {
func (props *PgoProperties) addInstrumentationProfileGatherFlags(ctx ModuleContext, flags Flags) Flags {
	flags.Local.CFlags = append(flags.Local.CFlags, props.Pgo.Cflags...)

	if props.isInstrumentation() {
	flags.Local.CFlags = append(flags.Local.CFlags, profileInstrumentFlag)
	// The profile runtime is added below in deps().  Add the below
	// flag, which is the only other link-time action performed by
	// the Clang driver during link.
	flags.Local.LdFlags = append(flags.Local.LdFlags, "-u__llvm_profile_runtime")
	return flags
}
	if props.isSampling() {
func (props *PgoProperties) addSamplingProfileGatherFlags(ctx ModuleContext, flags Flags) Flags {
	flags.Local.CFlags = append(flags.Local.CFlags, props.Pgo.Cflags...)

	flags.Local.CFlags = append(flags.Local.CFlags, profileSamplingFlag)
	flags.Local.LdFlags = append(flags.Local.LdFlags, profileSamplingFlag)
	}
	return flags
}

@@ -286,8 +287,12 @@ func (pgo *pgo) flags(ctx ModuleContext, flags Flags) Flags {
	props := pgo.Properties

	// Add flags to profile this module based on its profile_kind
	if props.ShouldProfileModule {
		return props.addProfileGatherFlags(ctx, flags)
	if props.ShouldProfileModule && props.isInstrumentation() {
		return props.addInstrumentationProfileGatherFlags(ctx, flags)
	} else if props.ShouldProfileModule && props.isSampling() {
		return props.addSamplingProfileGatherFlags(ctx, flags)
	} else if ctx.DeviceConfig().SamplingPGO() {
		return props.addSamplingProfileGatherFlags(ctx, flags)
	}

	if !ctx.Config().IsEnvTrue("ANDROID_PGO_NO_PROFILE_USE") {