Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: src/IceClFlags.cpp

Issue 1255303004: Add -reorder-basic-blocks option and fix nop insertion (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: minor fix Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/IceClFlags.cpp
diff --git a/src/IceClFlags.cpp b/src/IceClFlags.cpp
index cbacd8bfad540facb3dfb4b97631960a84c1a915..272d36ce575923d8d00ce4ddc9d3bc695d45c86f 100644
--- a/src/IceClFlags.cpp
+++ b/src/IceClFlags.cpp
@@ -288,6 +288,12 @@ cl::opt<uint32_t> RandomizeAndPoolImmediatesThreshold(
cl::desc("The threshold for immediates randomization and pooling"),
cl::init(0xffff));
+// Command line option for turning on basic block shuffling.
+cl::opt<bool> ReorderBasicBlocks(
+ "reorder-basic-blocks",
+ cl::desc("Shuffle the layout of basic blocks in each functions"),
+ cl::init(false));
+
// Command line option for turning on function layout reordering.
cl::opt<bool> ReorderFunctions(
"reorder-functions",
@@ -345,6 +351,7 @@ void ClFlags::resetClFlags(ClFlags &OutFlags) {
OutFlags.PhiEdgeSplit = false;
OutFlags.RandomNopInsertion = false;
OutFlags.RandomRegAlloc = false;
+ OutFlags.ReorderBasicBlocks = false;
OutFlags.ReorderFunctions = false;
OutFlags.ReorderGlobalVariables = false;
OutFlags.ReorderPooledConstants = false;
@@ -403,8 +410,17 @@ void ClFlags::getParsedClFlags(ClFlags &OutFlags) {
OutFlags.setOptLevel(::OLevel);
OutFlags.setPhiEdgeSplit(::EnablePhiEdgeSplit);
OutFlags.setRandomSeed(::RandomSeed);
+ OutFlags.setRandomizeAndPoolImmediatesOption(
+ ::RandomizeAndPoolImmediatesOption);
+ OutFlags.setRandomizeAndPoolImmediatesThreshold(
+ ::RandomizeAndPoolImmediatesThreshold);
+ OutFlags.setReorderFunctionsWindowSize(::ReorderFunctionsWindowSize);
+ OutFlags.setShouldReorderBasicBlocks(::ReorderBasicBlocks);
OutFlags.setShouldDoNopInsertion(::ShouldDoNopInsertion);
OutFlags.setShouldRandomizeRegAlloc(::RandomizeRegisterAllocation);
+ OutFlags.setShouldReorderFunctions(::ReorderFunctions);
+ OutFlags.setShouldReorderGlobalVariables(::ReorderGlobalVariables);
+ OutFlags.setShouldReorderPooledConstants(::ReorderPooledConstants);
OutFlags.setSkipUnimplemented(::SkipUnimplemented);
OutFlags.setSubzeroTimingEnabled(::SubzeroTimingEnabled);
OutFlags.setTargetArch(::TargetArch);
@@ -420,22 +436,6 @@ void ClFlags::getParsedClFlags(ClFlags &OutFlags) {
OutFlags.setMaxNopsPerInstruction(::MaxNopsPerInstruction);
OutFlags.setNopProbabilityAsPercentage(::NopProbabilityAsPercentage);
OutFlags.setVerbose(VMask);
-
- // Set for immediates randomization or pooling option.
- OutFlags.setRandomizeAndPoolImmediatesOption(
- ::RandomizeAndPoolImmediatesOption);
- OutFlags.setRandomizeAndPoolImmediatesThreshold(
- ::RandomizeAndPoolImmediatesThreshold);
-
- // Set for function reordering options.
- OutFlags.setShouldReorderFunctions(::ReorderFunctions);
- OutFlags.setReorderFunctionsWindowSize(::ReorderFunctionsWindowSize);
-
- // Set for global variable reordering option.
- OutFlags.setShouldReorderGlobalVariables(::ReorderGlobalVariables);
-
- // Set for pooled constant reordering option.
- OutFlags.setShouldReorderPooledConstants(::ReorderPooledConstants);
}
void ClFlags::getParsedClFlagsExtra(ClFlagsExtra &OutFlagsExtra) {

Powered by Google App Engine
This is Rietveld 408576698