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

Commit 49540800 authored by Pirama Arumuga Nainar's avatar Pirama Arumuga Nainar
Browse files

Search for PGO profiles in PGO_ADDITIONAL_PROFILE_DIRS

This variable can be set in BoardConfig.mk to specify a list of
additional paths that contain PGO profiles.  These directories are
searched after the predefined paths in soong/cc/pgo.go while finding
PGO profiles.

Test: Set this variable in a BoardConfig and verify that such profiles
are found and that these paths are searched after the predefined paths
in soong/cc/pgo.go.

Change-Id: I0bb9523de614d0f23aba8d51c887d8fc8f41c993
parent 1d298758
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -710,6 +710,10 @@ func (c *deviceConfig) CoverageEnabledForPath(path string) bool {
	return coverage
}

func (c *deviceConfig) PgoAdditionalProfileDirs() []string {
	return c.config.ProductVariables.PgoAdditionalProfileDirs
}

func (c *config) IntegerOverflowDisabledForPath(path string) bool {
	if c.ProductVariables.IntegerOverflowExcludePaths == nil {
		return false
+2 −0
Original line number Diff line number Diff line
@@ -205,6 +205,8 @@ type productVariables struct {
	ExtraVndkVersions []string `json:",omitempty"`

	NamespacesToExport []string `json:",omitempty"`

	PgoAdditionalProfileDirs []string `json:",omitempty"`
}

func boolPtr(v bool) *bool {
+10 −3
Original line number Diff line number Diff line
@@ -27,17 +27,24 @@ var (
	// some functions
	profileUseOtherFlags = []string{"-Wno-backend-plugin"}

	pgoProfileProjects = []string{
	globalPgoProfileProjects = []string{
		"toolchain/pgo-profiles",
		"vendor/google_data/pgo-profiles",
	}
)

const pgoProfileProjectsConfigKey = "PgoProfileProjects"
const profileInstrumentFlag = "-fprofile-generate=/data/local/tmp"
const profileSamplingFlag = "-gline-tables-only"
const profileUseInstrumentFormat = "-fprofile-use=%s"
const profileUseSamplingFormat = "-fprofile-sample-use=%s"

func getPgoProfileProjects(config android.DeviceConfig) []string {
	return config.OnceStringSlice(pgoProfileProjectsConfigKey, func() []string {
		return append(globalPgoProfileProjects, config.PgoAdditionalProfileDirs()...)
	})
}

func recordMissingProfileFile(ctx ModuleContext, missing string) {
	getNamedMapForConfig(ctx.Config(), modulesMissingProfileFile).Store(missing, true)
}
@@ -92,8 +99,8 @@ func (props *PgoProperties) addProfileGatherFlags(ctx ModuleContext, flags Flags
}

func (props *PgoProperties) getPgoProfileFile(ctx ModuleContext) android.OptionalPath {
	// Test if the profile_file is present in any of the pgoProfileProjects
	for _, profileProject := range pgoProfileProjects {
	// Test if the profile_file is present in any of the PGO profile projects
	for _, profileProject := range getPgoProfileProjects(ctx.DeviceConfig()) {
		path := android.ExistentPathForSource(ctx, "", profileProject, *props.Pgo.Profile_file)
		if path.Valid() {
			return path