diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -4179,6 +4179,7 @@ MarshallingInfoFlag>; def pedantic : Flag<["-", "--"], "pedantic">, Group, Flags<[CC1Option,FlangOption,FC1Option]>, HelpText<"Warn on language extensions">, MarshallingInfoFlag>; +def p : Flag<["-"], "p">, HelpText<"Enable mcount instrumentation with prof">; def pg : Flag<["-"], "pg">, HelpText<"Enable mcount instrumentation">, Flags<[CC1Option]>, MarshallingInfoFlag>; def pipe : Flag<["-", "--"], "pipe">, @@ -4225,7 +4226,6 @@ LangOpts<"POSIXThreads">, DefaultFalse, PosFlag, NegFlag, BothFlags<[CC1Option]>>; -def p : Flag<["-"], "p">; def pie : Flag<["-"], "pie">, Group; def static_pie : Flag<["-"], "static-pie">, Group; def read__only__relocs : Separate<["-"], "read_only_relocs">; diff --git a/clang/lib/Driver/ToolChains/AIX.cpp b/clang/lib/Driver/ToolChains/AIX.cpp --- a/clang/lib/Driver/ToolChains/AIX.cpp +++ b/clang/lib/Driver/ToolChains/AIX.cpp @@ -271,7 +271,7 @@ CmdArgs.push_back("-lc"); - if (Args.hasArg(options::OPT_pg)) { + if (Args.hasArg(options::OPT_p, options::OPT_pg)) { CmdArgs.push_back(Args.MakeArgString((llvm::Twine("-L") + D.SysRoot) + "/lib/profiled")); CmdArgs.push_back(Args.MakeArgString((llvm::Twine("-L") + D.SysRoot) + 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 @@ -6331,7 +6331,9 @@ } } if (Arg *A = Args.getLastArgNoClaim(options::OPT_p)) { - if (!TC.getTriple().isOSAIX() && !TC.getTriple().isOSOpenBSD()) { + if (TC.getTriple().isOSAIX()) { + CmdArgs.push_back("-pg"); + } else if (!TC.getTriple().isOSOpenBSD()) { D.Diag(diag::err_drv_unsupported_opt_for_target) << A->getAsString(Args) << TripleStr; } diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c --- a/clang/test/Driver/aix-ld.c +++ b/clang/test/Driver/aix-ld.c @@ -135,6 +135,8 @@ // CHECK-LD32-PROF-NOT: "--no-as-needed" // CHECK-LD32-PROF-NOT: "-lm" // CHECK-LD32-PROF: "-lc" +// CHECK-LD32-PROF: "-L[[SYSROOT]]/lib/profiled" +// CHECK-LD32-PROF: "-L[[SYSROOT]]/usr/lib/profiled" // Check powerpc64-ibm-aix7.1.0.0, 64-bit. Enable profiling. // RUN: %clang %s -### 2>&1 \ @@ -162,6 +164,8 @@ // CHECK-LD64-PROF-NOT: "--no-as-needed" // CHECK-LD64-PROF-NOT: "-lm" // CHECK-LD64-PROF: "-lc" +// CHECK-LD64-PROF: "-L[[SYSROOT]]/lib/profiled" +// CHECK-LD64-PROF: "-L[[SYSROOT]]/usr/lib/profiled // Check powerpc-ibm-aix7.1.0.0, 32-bit. Enable g-profiling. // RUN: %clang %s -### 2>&1 \