Automated rollback of commit f26e8694ae78599b3e2004e3360eaf3443fa53a6.

*** Reason for rollback ***

Breaks clang_tidy.

*** Original change description ***

Introduce -c source_file -o output_file build variables

Prior to this cl CompileCommandLine would (almost) unconditionally emit -c and
-o flags. This cl removes this logic and relies on crosstool to emit these
flags. This is another small step towards platform independent C++ rules.

Memory use is not affected, since the build variables used by this cl are already
exposed, this cl just forces crosstools to use it.

RELNOTES: None.
PiperOrigin-RevId: 168834576
diff --git a/src/main/java/com/google/devtools/build/lib/actions/CommandAction.java b/src/main/java/com/google/devtools/build/lib/actions/CommandAction.java
index 1ac7da8..e8d5a93 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/CommandAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/CommandAction.java
@@ -14,7 +14,6 @@
 
 package com.google.devtools.build.lib.actions;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableMap;
 import java.util.List;
 
@@ -34,6 +33,5 @@
   ImmutableMap<String, String> getEnvironment();
 
   /** Returns inputs to this action, including inputs that may be pruned. */
-  @VisibleForTesting // productionVisibility = Visibility.PRIVATE
   Iterable<Artifact> getPossibleInputsForTesting();
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index da4ec05..0a253d3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -90,6 +90,7 @@
   private static final ImmutableSet<String> DEFAULT_FEATURES =
       ImmutableSet.of(
           CppRuleClasses.DEPENDENCY_FILE,
+          CppRuleClasses.COMPILE_ACTION_FLAGS_IN_FLAG_SET,
           CppRuleClasses.RANDOM_SEED,
           CppRuleClasses.MODULE_MAPS,
           CppRuleClasses.MODULE_MAP_HOME_CWD,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java
index 73bf3e8..3215cbb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java
@@ -20,8 +20,10 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables;
 import com.google.devtools.build.lib.rules.cpp.CppCompileAction.DotdFile;
+import com.google.devtools.build.lib.util.FileType;
 import com.google.devtools.build.lib.util.Pair;
 import com.google.devtools.build.lib.util.Preconditions;
+import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -31,6 +33,7 @@
 public final class CompileCommandLine {
 
   private final Artifact sourceFile;
+  private final Artifact outputFile;
   private final Predicate<String> coptsFilter;
   private final FeatureConfiguration featureConfiguration;
   private final CcToolchainFeatures.Variables variables;
@@ -40,6 +43,7 @@
 
   private CompileCommandLine(
       Artifact sourceFile,
+      Artifact outputFile,
       Predicate<String> coptsFilter,
       FeatureConfiguration featureConfiguration,
       CppConfiguration cppConfiguration,
@@ -47,6 +51,7 @@
       String actionName,
       DotdFile dotdFile) {
     this.sourceFile = Preconditions.checkNotNull(sourceFile);
+    this.outputFile = Preconditions.checkNotNull(outputFile);
     this.coptsFilter = coptsFilter;
     this.featureConfiguration = Preconditions.checkNotNull(featureConfiguration);
     this.cppConfiguration = Preconditions.checkNotNull(cppConfiguration);
@@ -66,12 +71,8 @@
     return featureConfiguration.getEnvironmentVariables(actionName, variables);
   }
 
-  /**
-   * @param overwrittenVariables: Variables that will overwrite original build variables. When null,
-   *     unmodified original variables are used.
-   */
-  protected List<String> getArguments(
-      @Nullable CcToolchainFeatures.Variables overwrittenVariables) {
+  protected List<String> getArgv(
+      PathFragment outputFile, CcToolchainFeatures.Variables overwrittenVariables) {
     List<String> commandLine = new ArrayList<>();
 
     // first: The command name.
@@ -86,6 +87,17 @@
 
     // second: The compiler options.
     commandLine.addAll(getCompilerOptions(overwrittenVariables));
+
+    if (!featureConfiguration.isEnabled("compile_action_flags_in_flag_set")) {
+      // third: The file to compile!
+      commandLine.add("-c");
+      commandLine.add(sourceFile.getExecPathString());
+
+      // finally: The output file. (Prefixed with -o).
+      commandLine.add("-o");
+      commandLine.add(outputFile.getPathString());
+    }
+
     return commandLine;
   }
 
@@ -104,6 +116,19 @@
     addFilteredOptions(
         options, featureConfiguration.getPerFeatureExpansions(actionName, updatedVariables));
 
+    if (!featureConfiguration.isEnabled("compile_action_flags_in_flag_set")) {
+      if (FileType.contains(outputFile, CppFileTypes.ASSEMBLER, CppFileTypes.PIC_ASSEMBLER)) {
+        options.add("-S");
+      } else if (FileType.contains(
+          outputFile,
+          CppFileTypes.PREPROCESSED_C,
+          CppFileTypes.PREPROCESSED_CPP,
+          CppFileTypes.PIC_PREPROCESSED_C,
+          CppFileTypes.PIC_PREPROCESSED_CPP)) {
+        options.add("-E");
+      }
+    }
+
     return options;
   }
 
@@ -149,16 +174,19 @@
 
   public static Builder builder(
       Artifact sourceFile,
+      Artifact outputFile,
       Predicate<String> coptsFilter,
       String actionName,
       CppConfiguration cppConfiguration,
       DotdFile dotdFile) {
-    return new Builder(sourceFile, coptsFilter, actionName, cppConfiguration, dotdFile);
+    return new Builder(
+        sourceFile, outputFile, coptsFilter, actionName, cppConfiguration, dotdFile);
   }
 
   /** A builder for a {@link CompileCommandLine}. */
   public static final class Builder {
     private final Artifact sourceFile;
+    private final Artifact outputFile;
     private Predicate<String> coptsFilter;
     private FeatureConfiguration featureConfiguration;
     private CcToolchainFeatures.Variables variables = Variables.EMPTY;
@@ -169,6 +197,7 @@
     public CompileCommandLine build() {
       return new CompileCommandLine(
           Preconditions.checkNotNull(sourceFile),
+          Preconditions.checkNotNull(outputFile),
           Preconditions.checkNotNull(coptsFilter),
           Preconditions.checkNotNull(featureConfiguration),
           Preconditions.checkNotNull(cppConfiguration),
@@ -179,11 +208,13 @@
 
     private Builder(
         Artifact sourceFile,
+        Artifact outputFile,
         Predicate<String> coptsFilter,
         String actionName,
         CppConfiguration cppConfiguration,
         DotdFile dotdFile) {
       this.sourceFile = sourceFile;
+      this.outputFile = outputFile;
       this.coptsFilter = coptsFilter;
       this.actionName = actionName;
       this.cppConfiguration = cppConfiguration;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java
index 29a00d0..e965d4a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java
@@ -70,8 +70,6 @@
                 "  implies: 'user_compile_flags'",
                 "  implies: 'sysroot'",
                 "  implies: 'unfiltered_compile_flags'",
-                "  implies: 'compiler_input_flags'",
-                "  implies: 'compiler_output_flags'",
                 "}",
                 "action_config {",
                 "  config_name: 'preprocess-assemble'",
@@ -83,8 +81,6 @@
                 "  implies: 'user_compile_flags'",
                 "  implies: 'sysroot'",
                 "  implies: 'unfiltered_compile_flags'",
-                "  implies: 'compiler_input_flags'",
-                "  implies: 'compiler_output_flags'",
                 "}",
                 "action_config {",
                 "  config_name: 'c-compile'",
@@ -96,8 +92,6 @@
                 "  implies: 'user_compile_flags'",
                 "  implies: 'sysroot'",
                 "  implies: 'unfiltered_compile_flags'",
-                "  implies: 'compiler_input_flags'",
-                "  implies: 'compiler_output_flags'",
                 "}",
                 "action_config {",
                 "  config_name: 'c++-compile'",
@@ -109,8 +103,6 @@
                 "  implies: 'user_compile_flags'",
                 "  implies: 'sysroot'",
                 "  implies: 'unfiltered_compile_flags'",
-                "  implies: 'compiler_input_flags'",
-                "  implies: 'compiler_output_flags'",
                 "}",
                 "action_config {",
                 "  config_name: 'c++-header-parsing'",
@@ -122,8 +114,6 @@
                 "  implies: 'user_compile_flags'",
                 "  implies: 'sysroot'",
                 "  implies: 'unfiltered_compile_flags'",
-                "  implies: 'compiler_input_flags'",
-                "  implies: 'compiler_output_flags'",
                 "}",
                 "action_config {",
                 "  config_name: 'c++-header-preprocessing'",
@@ -135,8 +125,6 @@
                 "  implies: 'user_compile_flags'",
                 "  implies: 'sysroot'",
                 "  implies: 'unfiltered_compile_flags'",
-                "  implies: 'compiler_input_flags'",
-                "  implies: 'compiler_output_flags'",
                 "}",
                 "action_config {",
                 "  config_name: 'c++-module-compile'",
@@ -148,8 +136,6 @@
                 "  implies: 'user_compile_flags'",
                 "  implies: 'sysroot'",
                 "  implies: 'unfiltered_compile_flags'",
-                "  implies: 'compiler_input_flags'",
-                "  implies: 'compiler_output_flags'",
                 "}",
                 "action_config {",
                 "  config_name: 'c++-module-codegen'",
@@ -161,8 +147,6 @@
                 "  implies: 'user_compile_flags'",
                 "  implies: 'sysroot'",
                 "  implies: 'unfiltered_compile_flags'",
-                "  implies: 'compiler_input_flags'",
-                "  implies: 'compiler_output_flags'",
                 "}",
                 ifTrue(
                     !existingFeatureNames.contains(CppRuleClasses.LEGACY_COMPILE_FLAGS),
@@ -1043,66 +1027,6 @@
                     "      flag: '@%{linker_param_file}'",
                     "    }",
                     "  }",
-                    "}"),
-                ifTrue(
-                    !existingFeatureNames.contains("compiler_input_flags"),
-                    "feature {",
-                    "  name: 'compiler_input_flags'",
-                    "  enabled: true",
-                    "  flag_set {",
-                    "    action: 'assemble'",
-                    "    action: 'preprocess-assemble'",
-                    "    action: 'c-compile'",
-                    "    action: 'c++-compile'",
-                    "    action: 'c++-module-compile'",
-                    "    action: 'c++-module-codegen'",
-                    "    action: 'objc-compile'",
-                    "    action: 'objc++-compile'",
-                    "    action: 'c++-header-preprocessing'",
-                    "    action: 'c++-header-parsing'",
-                    "    action: 'lto-backend'",
-                    "    expand_if_all_available: 'source_file'",
-                    "    flag_group {",
-                    "      flag: '-c'",
-                    "      flag: '%{source_file}'",
-                    "    }",
-                    "  }",
-                    "}"),
-                ifTrue(
-                    !existingFeatureNames.contains("compiler_output_flags"),
-                    "feature {",
-                    "  name: 'compiler_output_flags'",
-                    "  enabled: true",
-                    "  flag_set {",
-                    "    action: 'assemble'",
-                    "    action: 'preprocess-assemble'",
-                    "    action: 'c-compile'",
-                    "    action: 'c++-compile'",
-                    "    action: 'c++-module-compile'",
-                    "    action: 'c++-module-codegen'",
-                    "    action: 'objc-compile'",
-                    "    action: 'objc++-compile'",
-                    "    action: 'c++-header-preprocessing'",
-                    "    action: 'c++-header-parsing'",
-                    "    action: 'lto-backend'",
-                    "    flag_group {",
-                    "      expand_if_all_available: 'output_object_file'",
-                    "      flag: '-o'",
-                    "      flag: '%{output_object_file}'",
-                    "    }",
-                    "    flag_group {",
-                    "      expand_if_all_available: 'output_assembly_file'",
-                    "      flag: '-o'",
-                    "      flag: '%{output_assembly_file}'",
-                    "      flag: '-S'",
-                    "    }",
-                    "    flag_group {",
-                    "      expand_if_all_available: 'output_preprocess_file'",
-                    "      flag: '-o'",
-                    "      flag: '%{output_preprocess_file}'",
-                    "      flag: '-E'",
-                    "    }",
-                    "  }",
                     "}")));
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index 735e24e..0de697b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -341,6 +341,7 @@
     this.compileCommandLine =
         CompileCommandLine.builder(
                 sourceFile,
+                outputFile,
                 coptsFilter,
                 actionName,
                 cppConfiguration,
@@ -662,7 +663,7 @@
   @Override
   public List<String> getCmdlineIncludes() {
     ImmutableList.Builder<String> cmdlineIncludes = ImmutableList.builder();
-    List<String> args = getArguments();
+    List<String> args = getArgv();
     for (Iterator<String> argi = args.iterator(); argi.hasNext();) {
       String arg = argi.next();
       if (arg.equals("-include") && argi.hasNext()) {
@@ -724,9 +725,21 @@
     return ImmutableMap.copyOf(environment);
   }
 
+  /**
+   * Returns a new, mutable list of command and arguments (argv) to be passed
+   * to the gcc subprocess.
+   */
+  public final List<String> getArgv() {
+    return getArgv(getInternalOutputFile());
+  }
+
   @Override
   public List<String> getArguments() {
-    return compileCommandLine.getArguments(overwrittenVariables);
+    return getArgv();
+  }
+
+  protected final List<String> getArgv(PathFragment outputFile) {
+    return compileCommandLine.getArgv(outputFile, overwrittenVariables);
   }
 
   @Override
@@ -1087,8 +1100,7 @@
   public ResourceSet estimateResourceConsumptionLocal() {
     // We use a local compile, so much of the time is spent waiting for IO,
     // but there is still significant CPU; hence we estimate 50% cpu usage.
-    return ResourceSet.createWithRamCpuIo(
-        /* memoryMb= */ 200, /* cpuUsage= */ 0.5, /* ioUsage= */ 0.0);
+    return ResourceSet.createWithRamCpuIo(/*memoryMb=*/200, /*cpuUsage=*/0.5, /*ioUsage=*/0.0);
   }
 
   @Override
@@ -1105,10 +1117,10 @@
     // itself is fully determined by the input source files and module maps.
     // A better long-term solution would be to make the compiler to find them automatically and
     // never hand in the .pcm files explicitly on the command line in the first place.
-    f.addStrings(compileCommandLine.getArguments(/* overwrittenVariables= */ null));
+    f.addStrings(compileCommandLine.getArgv(getInternalOutputFile(), null));
 
     /*
-     * getArguments() above captures all changes which affect the compilation
+     * getArgv() above captures all changes which affect the compilation
      * command and hence the contents of the object file.  But we need to
      * also make sure that we reexecute the action if any of the fields
      * that affect whether validateIncludes() will report an error or warning
@@ -1336,9 +1348,9 @@
     message.append(getProgressMessage());
     message.append('\n');
     // Outputting one argument per line makes it easier to diff the results.
-    // The first element in getArguments() is actually the command to execute.
+    // The first element in getArgv() is actually the command to execute.
     String legend = "  Command: ";
-    for (String argument : ShellEscaper.escapeAll(getArguments())) {
+    for (String argument : ShellEscaper.escapeAll(getArgv())) {
       message.append(legend);
       message.append(argument);
       message.append('\n');
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
index 4e8139e..5239a2f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
@@ -190,6 +190,13 @@
   public static final String RANDOM_SEED = "random_seed";
 
   /**
+   * A string constant for the compile_action_flags_in_flag_set feature. This feature is just a
+   * transitional feature which helps telling whether -c and -o options are already in flag_set of
+   * action_config in CROSSTOOL file. Once the transition is done, it should be removed.
+   */
+  public static final String COMPILE_ACTION_FLAGS_IN_FLAG_SET = "compile_action_flags_in_flag_set";
+
+  /**
    * A string constant for the dependency_file feature. This feature generates the .d file.
    */
   public static final String DEPENDENCY_FILE = "dependency_file";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index 24afe83..1daec43 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -199,12 +199,14 @@
     // line to write to $TEST_TMPDIR instead.
     final String outputPrefix = "$TEST_TMPDIR/";
     String argv =
-        getArguments()
+        getArgv(outputFile.getExecPath())
             .stream()
             .map(
                 input -> {
                   String result = ShellEscaper.escapeString(input);
-                  // Replace -c <tempOutputFile> so it's -c <outputFile>.
+                  // Once -c and -o options are added into action_config, the argument of
+                  // getArgv(outputFile.getExecPath()) won't be used anymore. There will always be
+                  // -c <tempOutputFile>, but here it has to be outputFile, so we replace it.
                   if (input.equals(tempOutputFile.getPathString())) {
                     result =
                         outputPrefix + ShellEscaper.escapeString(outputFile.getExecPathString());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
index cf8612a..f24be92 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
@@ -53,18 +53,17 @@
           + action.getPrimaryInput().getExecPathString());
     }
     Iterable<Artifact> inputs = Iterables.concat(action.getInputs(), action.getAdditionalInputs());
-    Spawn spawn =
-        new SimpleSpawn(
-            action,
-            ImmutableList.copyOf(action.getArguments()),
-            ImmutableMap.copyOf(action.getEnvironment()),
-            ImmutableMap.copyOf(action.getExecutionInfo()),
-            EmptyRunfilesSupplier.INSTANCE,
-            ImmutableList.copyOf(inputs),
-            /* tools= */ ImmutableList.of(),
-            /* filesetManifests= */ ImmutableList.of(),
-            action.getOutputs().asList(),
-            action.estimateResourceConsumptionLocal());
+    Spawn spawn = new SimpleSpawn(
+        action,
+        ImmutableList.copyOf(action.getArgv()),
+        ImmutableMap.copyOf(action.getEnvironment()),
+        ImmutableMap.copyOf(action.getExecutionInfo()),
+        EmptyRunfilesSupplier.INSTANCE,
+        ImmutableList.<Artifact>copyOf(inputs),
+        /*tools=*/ImmutableList.<Artifact>of(),
+        /*filesetManifests=*/ImmutableList.<Artifact>of(),
+        action.getOutputs().asList(),
+        action.estimateResourceConsumptionLocal());
 
     actionExecutionContext
         .getSpawnActionContext(action.getMnemonic())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
index 69d071e..8241b68 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
@@ -502,6 +502,7 @@
             .add(CppRuleClasses.COMPILE_ALL_MODULES)
             .add(CppRuleClasses.EXCLUDE_PRIVATE_HEADERS_IN_MODULE_MAPS)
             .add(CppRuleClasses.ONLY_DOTH_HEADERS_IN_MODULE_MAPS)
+            .add(CppRuleClasses.COMPILE_ACTION_FLAGS_IN_FLAG_SET)
             .add(CppRuleClasses.DEPENDENCY_FILE)
             .add(CppRuleClasses.INCLUDE_PATHS)
             .add(isHost ? "host" : "nonhost")
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MOCK_OSX_CROSSTOOL b/src/test/java/com/google/devtools/build/lib/packages/util/MOCK_OSX_CROSSTOOL
index c94b6ef..0012d76 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/MOCK_OSX_CROSSTOOL
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/MOCK_OSX_CROSSTOOL
@@ -1243,58 +1243,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -1380,8 +1328,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -1405,8 +1351,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -1425,8 +1369,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -1445,8 +1387,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -1465,8 +1405,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -1494,8 +1432,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc++-compile"
@@ -1524,8 +1460,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "assemble"
@@ -1542,8 +1476,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -1562,8 +1494,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -3040,58 +2970,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -3177,8 +3055,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -3202,8 +3078,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -3222,8 +3096,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -3242,8 +3114,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -3262,8 +3132,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -3291,8 +3159,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc++-compile"
@@ -3321,8 +3187,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "assemble"
@@ -3339,8 +3203,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -3359,8 +3221,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -4837,58 +4697,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -4974,8 +4782,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -4999,8 +4805,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -5019,8 +4823,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -5039,8 +4841,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -5059,8 +4859,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -5088,8 +4886,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc++-compile"
@@ -5118,8 +4914,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "assemble"
@@ -5136,8 +4930,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -5156,8 +4948,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -6634,58 +6424,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -6771,8 +6509,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -6796,8 +6532,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -6816,8 +6550,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -6836,8 +6568,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -6856,8 +6586,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -6885,8 +6613,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc++-compile"
@@ -6915,8 +6641,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "assemble"
@@ -6933,8 +6657,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -6953,8 +6675,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -8439,58 +8159,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -8576,8 +8244,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -8601,8 +8267,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -8621,8 +8285,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -8641,8 +8303,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -8661,8 +8321,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -8690,8 +8348,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_simulator_compiler_flags"
   }
   action_config {
@@ -8721,8 +8377,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_simulator_compiler_flags"
   }
   action_config {
@@ -8740,8 +8394,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -8760,8 +8412,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -10248,58 +9898,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -10385,8 +9983,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -10410,8 +10006,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -10430,8 +10024,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -10450,8 +10042,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -10470,8 +10060,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -10499,8 +10087,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_simulator_compiler_flags"
   }
   action_config {
@@ -10530,8 +10116,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_simulator_compiler_flags"
   }
   action_config {
@@ -10549,8 +10133,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -10569,8 +10151,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -12082,58 +11662,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -12219,8 +11747,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -12245,8 +11771,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -12266,8 +11790,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -12287,8 +11809,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -12308,8 +11828,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -12338,8 +11856,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_simulator_compiler_flags"
   }
   action_config {
@@ -12369,8 +11885,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_simulator_compiler_flags"
   }
   action_config {
@@ -12388,8 +11902,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -12409,8 +11921,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -13896,58 +13406,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -14033,8 +13491,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -14058,8 +13514,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -14078,8 +13532,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -14098,8 +13550,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -14118,8 +13568,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -14147,8 +13595,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_simulator_compiler_flags"
   }
   action_config {
@@ -14178,8 +13624,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_simulator_compiler_flags"
   }
   action_config {
@@ -14197,8 +13641,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -14217,8 +13659,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -15725,58 +15165,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -15862,8 +15250,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -15887,8 +15273,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -15907,8 +15291,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -15927,8 +15309,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -15947,8 +15327,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -15976,8 +15354,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc++-compile"
@@ -16006,8 +15382,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "assemble"
@@ -16024,8 +15398,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -16044,8 +15416,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -17554,58 +16924,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -17691,8 +17009,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -17716,8 +17032,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -17736,8 +17050,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -17756,8 +17068,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -17776,8 +17086,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -17805,8 +17113,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc++-compile"
@@ -17835,8 +17141,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "assemble"
@@ -17853,8 +17157,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -17873,8 +17175,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -19408,58 +18708,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -19545,8 +18793,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -19571,8 +18817,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -19592,8 +18836,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -19613,8 +18855,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -19634,8 +18874,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -19664,8 +18902,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc++-compile"
@@ -19694,8 +18930,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "assemble"
@@ -19712,8 +18946,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -19733,8 +18965,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -21242,58 +20472,6 @@
     }
   }
   feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
-  feature {
     name: "dbg_only_flag"
     flag_set {
       action: "objc-compile"
@@ -21379,8 +20557,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -21404,8 +20580,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -21424,8 +20598,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -21444,8 +20616,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -21464,8 +20634,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -21493,8 +20661,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc++-compile"
@@ -21523,8 +20689,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "assemble"
@@ -21541,8 +20705,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -21561,8 +20723,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
index 51a46cc..3bde118 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -369,19 +369,19 @@
         "           srcs = [ 'library.cc' ],",
         "           nocopts = '-fPIC')");
 
-    assertThat(getCppCompileAction("//a:pic").getArguments()).contains("-fPIC");
-    assertThat(getCppCompileAction("//a:libpic.so").getArguments()).contains("-fPIC");
-    assertThat(getCppCompileAction("//a:piclib").getArguments()).contains("-fPIC");
-    assertThat(getCppCompileAction("//a:nopic").getArguments()).doesNotContain("-fPIC");
-    assertThat(getCppCompileAction("//a:libnopic.so").getArguments()).doesNotContain("-fPIC");
-    assertThat(getCppCompileAction("//a:nopiclib").getArguments()).doesNotContain("-fPIC");
+    assertThat(getCppCompileAction("//a:pic").getArgv()).contains("-fPIC");
+    assertThat(getCppCompileAction("//a:libpic.so").getArgv()).contains("-fPIC");
+    assertThat(getCppCompileAction("//a:piclib").getArgv()).contains("-fPIC");
+    assertThat(getCppCompileAction("//a:nopic").getArgv()).doesNotContain("-fPIC");
+    assertThat(getCppCompileAction("//a:libnopic.so").getArgv()).doesNotContain("-fPIC");
+    assertThat(getCppCompileAction("//a:nopiclib").getArgv()).doesNotContain("-fPIC");
   }
 
   @Test
   public void testPicModeAssembly() throws Exception {
     useConfiguration("--cpu=k8");
     scratch.file("a/BUILD", "cc_library(name='preprocess', srcs=['preprocess.S'])");
-    List<String> argv = getCppCompileAction("//a:preprocess").getArguments();
+    List<String> argv = getCppCompileAction("//a:preprocess").getArgv();
     assertThat(argv).contains("-fPIC");
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java
index 93d1c69..e0fd563 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java
@@ -92,7 +92,7 @@
                     "  }",
                     "}"))
             .build();
-    assertThat(compileCommandLine.getArguments(/* overwrittenVariables= */ null))
+    assertThat(compileCommandLine.getArgv(scratchArtifact("a/FakeOutput").getExecPath(), null))
         .contains("-some_foo_flag");
   }
 
@@ -134,12 +134,13 @@
                     "}"))
             .setCoptsFilter(flag -> !flag.contains("i_am_a_flag"))
             .build();
-    return compileCommandLine.getArguments(/* overwrittenVariables= */ null);
+    return compileCommandLine.getArgv(scratchArtifact("a/FakeOutput").getExecPath(), null);
   }
 
   private Builder makeCompileCommandLineBuilder() throws Exception {
     return CompileCommandLine.builder(
         scratchArtifact("a/FakeInput"),
+        scratchArtifact("a/FakeOutput"),
         new Predicate<String>() {
           @Override
           public boolean apply(String s) {
diff --git a/tools/cpp/CROSSTOOL b/tools/cpp/CROSSTOOL
index 2588c3a..0a96846 100644
--- a/tools/cpp/CROSSTOOL
+++ b/tools/cpp/CROSSTOOL
@@ -673,6 +673,11 @@
     name: 'random_seed'
   }
 
+  # This feature is just for enabling flag_set in action_config for -c and -o options during the transitional period
+  feature {
+    name: 'compile_action_flags_in_flag_set'
+  }
+
   action_config {
     config_name: 'c-compile'
     action_name: 'c-compile'
diff --git a/tools/cpp/CROSSTOOL.tpl b/tools/cpp/CROSSTOOL.tpl
index 2b220f7..63ced51 100644
--- a/tools/cpp/CROSSTOOL.tpl
+++ b/tools/cpp/CROSSTOOL.tpl
@@ -238,10 +238,16 @@
     }
   }
 
+  # This feature is just for enabling flag_set in action_config for -c and -o options during the transitional period
+  feature {
+    name: 'compile_action_flags_in_flag_set'
+  }
+
   feature {
     name: 'has_configured_linker_path'
   }
 
+
   # This feature indicates strip is not supported, building stripped binary will just result a copy of orignial binary
   feature {
     name: 'no_stripping'
diff --git a/tools/osx/crosstool/CROSSTOOL.tpl b/tools/osx/crosstool/CROSSTOOL.tpl
index 3b16480..8abffa5 100644
--- a/tools/osx/crosstool/CROSSTOOL.tpl
+++ b/tools/osx/crosstool/CROSSTOOL.tpl
@@ -1128,58 +1128,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -1234,8 +1182,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -1254,8 +1200,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -1274,8 +1218,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -1294,8 +1236,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -1314,8 +1254,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -1330,8 +1268,6 @@
         flag: "x86_64"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -1362,8 +1298,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -1393,8 +1327,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -1413,8 +1345,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -2793,58 +2723,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -2899,8 +2777,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -2919,8 +2795,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -2939,8 +2813,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -2959,8 +2831,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -2979,8 +2849,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -2995,8 +2863,6 @@
         flag: "x86_64"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -3028,8 +2894,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -3060,8 +2924,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -3080,8 +2942,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -4462,58 +4322,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -4568,8 +4376,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -4588,8 +4394,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -4608,8 +4412,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -4628,8 +4430,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -4648,8 +4448,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -4664,8 +4462,6 @@
         flag: "i386"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -4697,8 +4493,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -4729,8 +4523,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -4749,8 +4541,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -6153,58 +5943,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -6259,8 +5997,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -6280,8 +6016,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -6301,8 +6035,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -6322,8 +6054,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -6343,8 +6073,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -6360,8 +6088,6 @@
         flag: "x86_64"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -6393,8 +6119,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -6425,8 +6149,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -6446,8 +6168,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -7829,58 +7549,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -7935,8 +7603,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -7955,8 +7621,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -7975,8 +7639,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -7995,8 +7657,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -8015,8 +7675,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -8031,8 +7689,6 @@
         flag: "i386"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -8064,8 +7720,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -8096,8 +7750,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -8116,8 +7768,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -9486,58 +9136,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -9592,8 +9190,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -9612,8 +9208,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -9632,8 +9226,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -9652,8 +9244,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -9672,8 +9262,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -9688,8 +9276,6 @@
         flag: "armv7"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -9720,8 +9306,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -9751,8 +9335,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -9771,8 +9353,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -11143,58 +10723,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -11249,8 +10777,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -11269,8 +10795,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -11289,8 +10813,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -11309,8 +10831,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -11329,8 +10849,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -11345,8 +10863,6 @@
         flag: "armv7k"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -11377,8 +10893,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -11408,8 +10922,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -11428,8 +10940,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -12822,58 +12332,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -12928,8 +12386,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -12949,8 +12405,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -12970,8 +12424,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -12991,8 +12443,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -13012,8 +12462,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -13029,8 +12477,6 @@
         flag: "arm64"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -13061,8 +12507,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -13092,8 +12536,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -13113,8 +12555,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "unfiltered_cxx_flags"
   }
   action_config {
@@ -14486,58 +13926,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -14592,8 +13980,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -14612,8 +13998,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -14632,8 +14016,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -14652,8 +14034,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -14672,8 +14052,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -14688,8 +14066,6 @@
         flag: "arm64"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -14720,8 +14096,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -14751,8 +14125,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -14771,8 +14143,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"
@@ -16147,58 +15517,6 @@
       expand_if_all_available: "linker_param_file"
     }
   }
-  feature {
-    name: "compiler_input_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-c"
-        flag: "%{source_file}"
-      }
-      expand_if_all_available: "source_file"
-    }
-  }
-  feature {
-    name: "compiler_output_flags"
-    flag_set {
-      action: "assemble"
-      action: "preprocess-assemble"
-      action: "c-compile"
-      action: "c++-compile"
-      action: "c++-header-parsing"
-      action: "c++-header-preprocessing"
-      action: "c++-module-compile"
-      action: "c++-module-codegen"
-      action: "objc-compile"
-      action: "objc++-compile"
-      flag_group {
-        flag: "-o"
-        flag: "%{output_object_file}"
-        expand_if_all_available: "output_object_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_assembly_file}"
-        flag: "-S"
-        expand_if_all_available: "output_assembly_file"
-      }
-      flag_group {
-        flag: "-o"
-        flag: "%{output_preprocess_file}"
-        flag: "-E"
-        expand_if_all_available: "output_preprocess_file"
-      }
-    }
-  }
   action_config {
     config_name: "strip"
     action_name: "strip"
@@ -16253,8 +15571,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-compile"
@@ -16273,8 +15589,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-module-compile"
@@ -16293,8 +15607,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-parsing"
@@ -16313,8 +15625,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "c++-header-preprocessing"
@@ -16333,8 +15643,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-compile"
@@ -16349,8 +15657,6 @@
         flag: "<architecture>"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "objc_actions"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
@@ -16381,8 +15687,6 @@
         flag: "-std=gnu++11"
       }
     }
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
     implies: "apply_default_compiler_flags"
     implies: "apply_default_warnings"
     implies: "framework_paths"
@@ -16412,8 +15716,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "preprocess-assemble"
@@ -16432,8 +15734,6 @@
     implies: "user_compile_flags"
     implies: "sysroot"
     implies: "unfiltered_compile_flags"
-    implies: "compiler_input_flags"
-    implies: "compiler_output_flags"
   }
   action_config {
     config_name: "objc-archive"