Do not use profiles if ANDROID_PGO_NO_PROFILE_USE is set
Bug: http://b/65598278
Non-PGO builds (with this environment variable set) can be used to
measure the performance difference induced by PGO.
Test: Build PGO modules with ANDROID_PGO_PROFILE_USE set.
Change-Id: Ib23bad5208ac7f54894c7768d7532f53b6b91179
diff --git a/cc/pgo.go b/cc/pgo.go
index 02be168..c5e4e86 100644
--- a/cc/pgo.go
+++ b/cc/pgo.go
@@ -94,6 +94,24 @@
return flags
}
+func (props *PgoProperties) addProfileUseFlags(ctx ModuleContext, flags Flags) Flags {
+ // If the PGO profiles project is found, and this module has PGO
+ // enabled, add flags to use the profile
+ if profilesDir := getPgoProfilesDir(ctx); props.PgoPresent && profilesDir.Valid() {
+ profileFile := android.PathForSource(ctx, profilesDir.String(), *props.Pgo.Profile_file)
+ profileUseFlags := props.profileUseFlags(ctx, profileFile.String())
+
+ flags.CFlags = append(flags.CFlags, profileUseFlags...)
+ flags.LdFlags = append(flags.LdFlags, profileUseFlags...)
+
+ // Update CFlagsDeps and LdFlagsDeps so the module is rebuilt
+ // if profileFile gets updated
+ flags.CFlagsDeps = append(flags.CFlagsDeps, profileFile)
+ flags.LdFlagsDeps = append(flags.LdFlagsDeps, profileFile)
+ }
+ return flags
+}
+
func (props *PgoProperties) isPGO(ctx BaseModuleContext) bool {
isInstrumentation := props.isInstrumentation()
isSampling := props.isSampling()
@@ -191,19 +209,8 @@
return props.addProfileGatherFlags(ctx, flags)
}
- // If the PGO profiles project is found, and this module has PGO
- // enabled, add flags to use the profile
- if profilesDir := getPgoProfilesDir(ctx); props.PgoPresent && profilesDir.Valid() {
- profileFile := android.PathForSource(ctx, profilesDir.String(), *(props.Pgo.Profile_file))
- profileUseFlags := props.profileUseFlags(ctx, profileFile.String())
-
- flags.CFlags = append(flags.CFlags, profileUseFlags...)
- flags.LdFlags = append(flags.LdFlags, profileUseFlags...)
-
- // Update CFlagsDeps and LdFlagsDeps so the module is rebuilt
- // if profileFile gets updated
- flags.CFlagsDeps = append(flags.CFlagsDeps, profileFile)
- flags.LdFlagsDeps = append(flags.LdFlagsDeps, profileFile)
+ if !ctx.AConfig().IsEnvTrue("ANDROID_PGO_NO_PROFILE_USE") {
+ return props.addProfileUseFlags(ctx, flags)
}
return flags