[PATCH] D104088: Add clang frontend flags for MIP
ellis updated this revision to Diff 355066. ellis added a comment. Add min instruction count frontend flag. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D104088/new/ https://reviews.llvm.org/D104088 Files: clang/include/clang/Driver/Options.td clang/include/clang/Driver/ToolChain.h clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/Darwin.h clang/lib/Driver/ToolChains/DragonFly.cpp clang/lib/Driver/ToolChains/FreeBSD.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp clang/lib/Driver/ToolChains/Fuchsia.h clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/Linux.h clang/lib/Driver/ToolChains/NetBSD.cpp clang/lib/Driver/ToolChains/Solaris.cpp clang/test/CMakeLists.txt clang/test/Driver/clang-mip-flags.c Index: clang/test/Driver/clang-mip-flags.c === --- /dev/null +++ clang/test/Driver/clang-mip-flags.c @@ -0,0 +1,49 @@ +// REQUIRES: clang-driver +// UNSUPPORTED: windows-msvc + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip %s 2>&1 | FileCheck %s --check-prefix USE +// USE: "-cc1" +// USE-SAME: "-mllvm" "-machine-profile-use=/path/to/profile.mip" +// USE-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -o my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -fmachine-profile-link-unit-name=my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// USE-OUTPUT: "-cc1" +// USE-OUTPUT-SAME: "-mllvm" "-link-unit-name=my-executable" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// RUN: %clang -### -fno-machine-profile-generate -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// GEN: "-cc1" +// GEN-SAME: "-mllvm" "-enable-machine-instrumentation" +// GEN-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fmachine-profile-generate -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// NOGEN-NOT: "-enable-machine-instrumentation" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-function-coverage %s 2>&1 | FileCheck %s --check-prefix FUNCCOV +// FUNCCOV: "-cc1" +// FUNCCOV-SAME: "-mllvm" "-enable-machine-function-coverage" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-block-coverage %s 2>&1 | FileCheck %s --check-prefix BLOCKCOV +// BLOCKCOV: "-cc1" +// BLOCKCOV-SAME: "-mllvm" "-enable-machine-block-coverage" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix FULL +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-call-graph %s 2>&1 | FileCheck %s --check-prefix FULL +// FULL: "-cc1" +// FULL-SAME: "-mllvm" "-enable-machine-call-graph" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-runtime-buffer=1024 %s 2>&1 | FileCheck %s --check-prefix RUNTIMEBUF +// RUNTIMEBUF: "-cc1" +// RUNTIMEBUF-SAME: "-mllvm" "-machine-profile-runtime-buffer=1024" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-function-group-count=22 -fmachine-profile-selected-function-group=11 %s 2>&1 | FileCheck %s --check-prefix GEN-GROUPS +// GEN-GROUPS: "-cc1" +// GEN-GROUPS-SAME: "-mllvm" "-machine-profile-function-group-count=22" +// GEN-GROUPS-SAME: "-mllvm" "-machine-profile-selected-function-group=11" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-min-instruction-count=50 %s 2>&1 | FileCheck %s --check-prefix MIN-INSTR +// MIN-INSTR: "-cc1" +// MIN-INSTR-SAME: "-mllvm" "-machine-profile-min-instruction-count=50" Index: clang/test/CMakeLists.txt === --- clang/test/CMakeLists.txt +++ clang/test/CMakeLists.txt @@ -118,6 +118,7 @@ llvm-lto2 llvm-modextract llvm-nm +llvm-mipdata llvm-objcopy llvm-objdump llvm-profdata Index: clang/lib/Driver/ToolChains/Solaris.cpp === --- clang/lib/Driver/ToolChains/Solaris.cpp +++ clang/lib/Driver/ToolChains/Solaris.cpp @@ -149,6 +149,7 @@ CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); getToolChain().addProfileRTLibs(Args, CmdArgs); + getToolChain().addMachineProfileRTLibs(Args, CmdArgs); const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); C.addCommand(std::make_unique(JA, *this, ResponseFileSupport::None(), Index: clang/lib/Driver/ToolChains/NetBSD.cpp === ---
[PATCH] D104088: Add clang frontend flags for MIP
ellis updated this revision to Diff 353705. ellis added a comment. Correctly link the runtime symbol for Mach-O. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D104088/new/ https://reviews.llvm.org/D104088 Files: clang/include/clang/Driver/Options.td clang/include/clang/Driver/ToolChain.h clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/Darwin.h clang/lib/Driver/ToolChains/DragonFly.cpp clang/lib/Driver/ToolChains/FreeBSD.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp clang/lib/Driver/ToolChains/Fuchsia.h clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/Linux.h clang/lib/Driver/ToolChains/NetBSD.cpp clang/lib/Driver/ToolChains/Solaris.cpp clang/test/CMakeLists.txt clang/test/Driver/clang-mip-flags.c Index: clang/test/Driver/clang-mip-flags.c === --- /dev/null +++ clang/test/Driver/clang-mip-flags.c @@ -0,0 +1,45 @@ +// REQUIRES: clang-driver +// UNSUPPORTED: windows-msvc + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip %s 2>&1 | FileCheck %s --check-prefix USE +// USE: "-cc1" +// USE-SAME: "-mllvm" "-machine-profile-use=/path/to/profile.mip" +// USE-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -o my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -fmachine-profile-link-unit-name=my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// USE-OUTPUT: "-cc1" +// USE-OUTPUT-SAME: "-mllvm" "-link-unit-name=my-executable" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// RUN: %clang -### -fno-machine-profile-generate -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// GEN: "-cc1" +// GEN-SAME: "-mllvm" "-enable-machine-instrumentation" +// GEN-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fmachine-profile-generate -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// NOGEN-NOT: "-enable-machine-instrumentation" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-function-coverage %s 2>&1 | FileCheck %s --check-prefix FUNCCOV +// FUNCCOV: "-cc1" +// FUNCCOV-SAME: "-mllvm" "-enable-machine-function-coverage" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-block-coverage %s 2>&1 | FileCheck %s --check-prefix BLOCKCOV +// BLOCKCOV: "-cc1" +// BLOCKCOV-SAME: "-mllvm" "-enable-machine-block-coverage" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix FULL +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-call-graph %s 2>&1 | FileCheck %s --check-prefix FULL +// FULL: "-cc1" +// FULL-SAME: "-mllvm" "-enable-machine-call-graph" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-runtime-buffer=1024 %s 2>&1 | FileCheck %s --check-prefix RUNTIMEBUF +// RUNTIMEBUF: "-cc1" +// RUNTIMEBUF-SAME: "-mllvm" "-machine-profile-runtime-buffer=1024" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-function-group-count=22 -fmachine-profile-selected-function-group=11 %s 2>&1 | FileCheck %s --check-prefix GEN-GROUPS +// GEN-GROUPS: "-cc1" +// GEN-GROUPS-SAME: "-mllvm" "-machine-profile-function-group-count=22" +// GEN-GROUPS-SAME: "-mllvm" "-machine-profile-selected-function-group=11" Index: clang/test/CMakeLists.txt === --- clang/test/CMakeLists.txt +++ clang/test/CMakeLists.txt @@ -118,6 +118,7 @@ llvm-lto2 llvm-modextract llvm-nm +llvm-mipdata llvm-objcopy llvm-objdump llvm-profdata Index: clang/lib/Driver/ToolChains/Solaris.cpp === --- clang/lib/Driver/ToolChains/Solaris.cpp +++ clang/lib/Driver/ToolChains/Solaris.cpp @@ -149,6 +149,7 @@ CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); getToolChain().addProfileRTLibs(Args, CmdArgs); + getToolChain().addMachineProfileRTLibs(Args, CmdArgs); const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); C.addCommand(std::make_unique(JA, *this, ResponseFileSupport::None(), Index: clang/lib/Driver/ToolChains/NetBSD.cpp === --- clang/lib/Driver/ToolChains/NetBSD.cpp +++ clang/lib/Driver/ToolChains/NetBSD.cpp @@ -337,6 +337,7 @@ } ToolChain.addProfileRTLibs(Args, CmdArgs); + ToolChain.addMachineProfileRTLibs(Args, CmdArgs); const char *Exec
[PATCH] D104088: Add clang frontend flags for MIP
ellis updated this revision to Diff 352007. ellis added a comment. MIP does not support windows Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D104088/new/ https://reviews.llvm.org/D104088 Files: clang/include/clang/Driver/Options.td clang/include/clang/Driver/ToolChain.h clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/Darwin.h clang/lib/Driver/ToolChains/DragonFly.cpp clang/lib/Driver/ToolChains/FreeBSD.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp clang/lib/Driver/ToolChains/Fuchsia.h clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/Linux.h clang/lib/Driver/ToolChains/NetBSD.cpp clang/lib/Driver/ToolChains/Solaris.cpp clang/test/CMakeLists.txt clang/test/Driver/clang-mip-flags.c Index: clang/test/Driver/clang-mip-flags.c === --- /dev/null +++ clang/test/Driver/clang-mip-flags.c @@ -0,0 +1,45 @@ +// REQUIRES: clang-driver +// UNSUPPORTED: windows-msvc + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip %s 2>&1 | FileCheck %s --check-prefix USE +// USE: "-cc1" +// USE-SAME: "-mllvm" "-machine-profile-use=/path/to/profile.mip" +// USE-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -o my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -fmachine-profile-link-unit-name=my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// USE-OUTPUT: "-cc1" +// USE-OUTPUT-SAME: "-mllvm" "-link-unit-name=my-executable" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// RUN: %clang -### -fno-machine-profile-generate -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// GEN: "-cc1" +// GEN-SAME: "-mllvm" "-enable-machine-instrumentation" +// GEN-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fmachine-profile-generate -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// NOGEN-NOT: "-enable-machine-instrumentation" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-function-coverage %s 2>&1 | FileCheck %s --check-prefix FUNCCOV +// FUNCCOV: "-cc1" +// FUNCCOV-SAME: "-mllvm" "-enable-machine-function-coverage" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-block-coverage %s 2>&1 | FileCheck %s --check-prefix BLOCKCOV +// BLOCKCOV: "-cc1" +// BLOCKCOV-SAME: "-mllvm" "-enable-machine-block-coverage" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix FULL +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-call-graph %s 2>&1 | FileCheck %s --check-prefix FULL +// FULL: "-cc1" +// FULL-SAME: "-mllvm" "-enable-machine-call-graph" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-runtime-buffer=1024 %s 2>&1 | FileCheck %s --check-prefix RUNTIMEBUF +// RUNTIMEBUF: "-cc1" +// RUNTIMEBUF-SAME: "-mllvm" "-machine-profile-runtime-buffer=1024" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-function-group-count=22 -fmachine-profile-selected-function-group=11 %s 2>&1 | FileCheck %s --check-prefix GEN-GROUPS +// GEN-GROUPS: "-cc1" +// GEN-GROUPS-SAME: "-mllvm" "-machine-profile-function-group-count=22" +// GEN-GROUPS-SAME: "-mllvm" "-machine-profile-selected-function-group=11" Index: clang/test/CMakeLists.txt === --- clang/test/CMakeLists.txt +++ clang/test/CMakeLists.txt @@ -118,6 +118,7 @@ llvm-lto2 llvm-modextract llvm-nm +llvm-mipdata llvm-objcopy llvm-objdump llvm-profdata Index: clang/lib/Driver/ToolChains/Solaris.cpp === --- clang/lib/Driver/ToolChains/Solaris.cpp +++ clang/lib/Driver/ToolChains/Solaris.cpp @@ -149,6 +149,7 @@ CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); getToolChain().addProfileRTLibs(Args, CmdArgs); + getToolChain().addMachineProfileRTLibs(Args, CmdArgs); const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); C.addCommand(std::make_unique(JA, *this, ResponseFileSupport::None(), Index: clang/lib/Driver/ToolChains/NetBSD.cpp === --- clang/lib/Driver/ToolChains/NetBSD.cpp +++ clang/lib/Driver/ToolChains/NetBSD.cpp @@ -337,6 +337,7 @@ } ToolChain.addProfileRTLibs(Args, CmdArgs); + ToolChain.addMachineProfileRTLibs(Args, CmdArgs); const char *Exec = Args.MakeArgStr
[PATCH] D104088: Add clang frontend flags for MIP
ellis updated this revision to Diff 351604. ellis added a comment. Move llvm-strip logic into its own commit Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D104088/new/ https://reviews.llvm.org/D104088 Files: clang/include/clang/Driver/Options.td clang/include/clang/Driver/ToolChain.h clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/Darwin.h clang/lib/Driver/ToolChains/DragonFly.cpp clang/lib/Driver/ToolChains/FreeBSD.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp clang/lib/Driver/ToolChains/Fuchsia.h clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/Linux.h clang/lib/Driver/ToolChains/NetBSD.cpp clang/lib/Driver/ToolChains/Solaris.cpp clang/test/CMakeLists.txt clang/test/Driver/clang-mip-flags.c Index: clang/test/Driver/clang-mip-flags.c === --- /dev/null +++ clang/test/Driver/clang-mip-flags.c @@ -0,0 +1,44 @@ +// REQUIRES: clang-driver + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip %s 2>&1 | FileCheck %s --check-prefix USE +// USE: "-cc1" +// USE-SAME: "-mllvm" "-machine-profile-use=/path/to/profile.mip" +// USE-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -o my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -fmachine-profile-link-unit-name=my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// USE-OUTPUT: "-cc1" +// USE-OUTPUT-SAME: "-mllvm" "-link-unit-name=my-executable" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// RUN: %clang -### -fno-machine-profile-generate -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// GEN: "-cc1" +// GEN-SAME: "-mllvm" "-enable-machine-instrumentation" +// GEN-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fmachine-profile-generate -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// NOGEN-NOT: "-enable-machine-instrumentation" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-function-coverage %s 2>&1 | FileCheck %s --check-prefix FUNCCOV +// FUNCCOV: "-cc1" +// FUNCCOV-SAME: "-mllvm" "-enable-machine-function-coverage" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-block-coverage %s 2>&1 | FileCheck %s --check-prefix BLOCKCOV +// BLOCKCOV: "-cc1" +// BLOCKCOV-SAME: "-mllvm" "-enable-machine-block-coverage" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix FULL +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-call-graph %s 2>&1 | FileCheck %s --check-prefix FULL +// FULL: "-cc1" +// FULL-SAME: "-mllvm" "-enable-machine-call-graph" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-runtime-buffer=1024 %s 2>&1 | FileCheck %s --check-prefix RUNTIMEBUF +// RUNTIMEBUF: "-cc1" +// RUNTIMEBUF-SAME: "-mllvm" "-machine-profile-runtime-buffer=1024" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-function-group-count=22 -fmachine-profile-selected-function-group=11 %s 2>&1 | FileCheck %s --check-prefix GEN-GROUPS +// GEN-GROUPS: "-cc1" +// GEN-GROUPS-SAME: "-mllvm" "-machine-profile-function-group-count=22" +// GEN-GROUPS-SAME: "-mllvm" "-machine-profile-selected-function-group=11" Index: clang/test/CMakeLists.txt === --- clang/test/CMakeLists.txt +++ clang/test/CMakeLists.txt @@ -118,6 +118,7 @@ llvm-lto2 llvm-modextract llvm-nm +llvm-mipdata llvm-objcopy llvm-objdump llvm-profdata Index: clang/lib/Driver/ToolChains/Solaris.cpp === --- clang/lib/Driver/ToolChains/Solaris.cpp +++ clang/lib/Driver/ToolChains/Solaris.cpp @@ -149,6 +149,7 @@ CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); getToolChain().addProfileRTLibs(Args, CmdArgs); + getToolChain().addMachineProfileRTLibs(Args, CmdArgs); const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); C.addCommand(std::make_unique(JA, *this, ResponseFileSupport::None(), Index: clang/lib/Driver/ToolChains/NetBSD.cpp === --- clang/lib/Driver/ToolChains/NetBSD.cpp +++ clang/lib/Driver/ToolChains/NetBSD.cpp @@ -337,6 +337,7 @@ } ToolChain.addProfileRTLibs(Args, CmdArgs); + ToolChain.addMachineProfileRTLibs(Args, CmdArgs); const char *Exec = Args.MakeArgString(ToolChain.Get
[PATCH] D104088: Add clang frontend flags for MIP
jhenderson added inline comments. Comment at: llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp:59 + StringRef(Sec.Name).startswith(".zdebug") || + Sec.Name == ".gdb_index" || Sec.Name == "__llvm_mipmap"; } This doesn't look like it belongs as part of this commit? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D104088/new/ https://reviews.llvm.org/D104088 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D104088: Add clang frontend flags for MIP
ellis created this revision. Herald added subscribers: dang, phosek, mgorny, emaste. Herald added a reviewer: alexshap. Herald added a reviewer: rupprecht. Herald added a reviewer: jhenderson. ellis requested review of this revision. Herald added subscribers: llvm-commits, cfe-commits, MaskRay. Herald added projects: clang, LLVM. Add clang frontend flags for machine profiles. - `-fmachine-profile-generate` - Produce an instrumented binary - `-fmachine-profile-function-coverage` - Only profile function coverage - `-fmachine-profile-block-coverage` - Profile basic block coverage - `-fmachine-profile-link-unit-name=` - Specify a name to identify the current link unit - `-fno-machine-profile-runtime` - Do not link the MIP runtime - `-fno-machine-profile-dump` - Do not dump the raw profile data when the program exits - `-fmachine-profile-selected-function-group=`, `-fmachine-profile-function-group-count=` - Only instrument group `i` of `N` total groups of functions - `-fmachine-profile-use=` - Use the provided profile for optimization Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D104088 Files: clang/include/clang/Driver/Options.td clang/include/clang/Driver/ToolChain.h clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/Darwin.h clang/lib/Driver/ToolChains/DragonFly.cpp clang/lib/Driver/ToolChains/FreeBSD.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp clang/lib/Driver/ToolChains/Fuchsia.h clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/Linux.h clang/lib/Driver/ToolChains/NetBSD.cpp clang/lib/Driver/ToolChains/Solaris.cpp clang/test/CMakeLists.txt clang/test/Driver/clang-mip-flags.c llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp Index: llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp === --- llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp +++ llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp @@ -55,7 +55,8 @@ static bool isDebugSection(const SectionBase &Sec) { return StringRef(Sec.Name).startswith(".debug") || - StringRef(Sec.Name).startswith(".zdebug") || Sec.Name == ".gdb_index"; + StringRef(Sec.Name).startswith(".zdebug") || + Sec.Name == ".gdb_index" || Sec.Name == "__llvm_mipmap"; } static bool isDWOSection(const SectionBase &Sec) { Index: clang/test/Driver/clang-mip-flags.c === --- /dev/null +++ clang/test/Driver/clang-mip-flags.c @@ -0,0 +1,44 @@ +// REQUIRES: clang-driver + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip %s 2>&1 | FileCheck %s --check-prefix USE +// USE: "-cc1" +// USE-SAME: "-mllvm" "-machine-profile-use=/path/to/profile.mip" +// USE-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -o my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// RUN: %clang -### -fmachine-profile-use=/path/to/profile.mip -fmachine-profile-link-unit-name=my-executable %s 2>&1 | FileCheck %s --check-prefix USE-OUTPUT +// USE-OUTPUT: "-cc1" +// USE-OUTPUT-SAME: "-mllvm" "-link-unit-name=my-executable" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// RUN: %clang -### -fno-machine-profile-generate -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix GEN +// GEN: "-cc1" +// GEN-SAME: "-mllvm" "-enable-machine-instrumentation" +// GEN-SAME: "-mllvm" "-link-unit-name=a.out" + +// RUN: %clang -### %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// RUN: %clang -### -fmachine-profile-generate -fno-machine-profile-generate %s 2>&1 | FileCheck %s --check-prefix NOGEN +// NOGEN-NOT: "-enable-machine-instrumentation" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-function-coverage %s 2>&1 | FileCheck %s --check-prefix FUNCCOV +// FUNCCOV: "-cc1" +// FUNCCOV-SAME: "-mllvm" "-enable-machine-function-coverage" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-block-coverage %s 2>&1 | FileCheck %s --check-prefix BLOCKCOV +// BLOCKCOV: "-cc1" +// BLOCKCOV-SAME: "-mllvm" "-enable-machine-block-coverage" + +// RUN: %clang -### -fmachine-profile-generate %s 2>&1 | FileCheck %s --check-prefix FULL +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-call-graph %s 2>&1 | FileCheck %s --check-prefix FULL +// FULL: "-cc1" +// FULL-SAME: "-mllvm" "-enable-machine-call-graph" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-runtime-buffer=1024 %s 2>&1 | FileCheck %s --check-prefix RUNTIMEBUF +// RUNTIMEBUF: "-cc1" +// RUNTIMEBUF-SAME: "-mllvm" "-machine-profile-runtime-buffer=1024" + +// RUN: %clang -### -fmachine-profile-generate -fmachine-profile-funct