diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -6666,6 +6666,7 @@ Args.AddLastArg(CmdArgs, options::OPT_dM); Args.AddLastArg(CmdArgs, options::OPT_dD); + Args.AddLastArg(CmdArgs, options::OPT_dI); Args.AddLastArg(CmdArgs, options::OPT_fmax_tokens_EQ); diff --git a/clang/test/Driver/preprocessor.c b/clang/test/Driver/preprocessor.c --- a/clang/test/Driver/preprocessor.c +++ b/clang/test/Driver/preprocessor.c @@ -4,3 +4,11 @@ #define A B A A +// The driver should pass preprocessor dump flags (-dD, -dM and -dI) to cc1 invocation +// RUN: %clang -### -E -dD %s 2>&1 | FileCheck --check-prefix=CHECK-dD %s +// RUN: %clang -### -E -dM %s 2>&1 | FileCheck --check-prefix=CHECK-dM %s +// RUN: %clang -### -E -dI %s 2>&1 | FileCheck --check-prefix=CHECK-dI %s +// CHECK-dD: clang{{.*}} "-cc1" {{.*}} "-dD" +// CHECK-dM: clang{{.*}} "-cc1" {{.*}} "-dM" +// CHECK-dI: clang{{.*}} "-cc1" {{.*}} "-dI" +