diff --git a/cc/compiler.go b/cc/compiler.go
index 9b69114..0d8e3a1 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -226,7 +226,7 @@
 }
 
 func addToModuleList(ctx ModuleContext, list string, module string) {
-	getWallWerrorMap(ctx.Config(), list).Store(module, true)
+	getNamedMapForConfig(ctx.Config(), list).Store(module, true)
 }
 
 // Create a Flags struct that collects the compile flags from global values,
diff --git a/cc/makevars.go b/cc/makevars.go
index 5faf201..779de8f 100644
--- a/cc/makevars.go
+++ b/cc/makevars.go
@@ -25,22 +25,23 @@
 )
 
 const (
-	modulesAddedWall     = "ModulesAddedWall"
-	modulesUsingWnoError = "ModulesUsingWnoError"
+	modulesAddedWall          = "ModulesAddedWall"
+	modulesUsingWnoError      = "ModulesUsingWnoError"
+	modulesMissingProfileFile = "ModulesMissingProfileFile"
 )
 
 func init() {
 	android.RegisterMakeVarsProvider(pctx, makeVarsProvider)
 }
 
-func getWallWerrorMap(config android.Config, name string) *sync.Map {
+func getNamedMapForConfig(config android.Config, name string) *sync.Map {
 	return config.Once(name, func() interface{} {
 		return &sync.Map{}
 	}).(*sync.Map)
 }
 
 func makeStringOfKeys(ctx android.MakeVarsContext, setName string) string {
-	set := getWallWerrorMap(ctx.Config(), setName)
+	set := getNamedMapForConfig(ctx.Config(), setName)
 	keys := []string{}
 	set.Range(func(key interface{}, value interface{}) bool {
 		keys = append(keys, key.(string))
@@ -102,6 +103,7 @@
 	ctx.Strict("ANDROID_WARNING_ALLOWED_PROJECTS", makeStringOfWarningAllowedProjects())
 	ctx.Strict("SOONG_MODULES_ADDED_WALL", makeStringOfKeys(ctx, modulesAddedWall))
 	ctx.Strict("SOONG_MODULES_USING_WNO_ERROR", makeStringOfKeys(ctx, modulesUsingWnoError))
+	ctx.Strict("SOONG_MODULES_MISSING_PGO_PROFILE_FILE", makeStringOfKeys(ctx, modulesMissingProfileFile))
 
 	ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS", strings.Join(asanCflags, " "))
 	ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS", strings.Join(asanLdflags, " "))
diff --git a/cc/pgo.go b/cc/pgo.go
index 758c3d6..3ce67be 100644
--- a/cc/pgo.go
+++ b/cc/pgo.go
@@ -38,6 +38,10 @@
 const profileUseInstrumentFormat = "-fprofile-use=%s"
 const profileUseSamplingFormat = "-fprofile-sample-use=%s"
 
+func recordMissingProfileFile(ctx ModuleContext, missing string) {
+	getNamedMapForConfig(ctx.Config(), modulesMissingProfileFile).Store(missing, true)
+}
+
 type PgoProperties struct {
 	Pgo struct {
 		Instrumentation    *bool
@@ -96,6 +100,10 @@
 		}
 	}
 
+	// Record that this module's profile file is absent
+	missing := *props.Pgo.Profile_file + ":" + ctx.ModuleDir() + "/Android.bp:" + ctx.ModuleName()
+	recordMissingProfileFile(ctx, missing)
+
 	return android.OptionalPathForPath(nil)
 }
 
