| Index: src/IceClFlags.h
 | 
| diff --git a/src/IceClFlags.h b/src/IceClFlags.h
 | 
| index 6fcbbbb9b5cac706191f594f8df8c0b3b4ee49a1..1133f8ccc9eecc1ed63ee89589e6e6b2037ff17f 100644
 | 
| --- a/src/IceClFlags.h
 | 
| +++ b/src/IceClFlags.h
 | 
| @@ -14,7 +14,7 @@
 | 
|  #ifndef SUBZERO_SRC_ICECLFLAGS_H
 | 
|  #define SUBZERO_SRC_ICECLFLAGS_H
 | 
|  
 | 
| -#include "IceTypes.def"
 | 
| +#include "IceTypes.h"
 | 
|  
 | 
|  namespace Ice {
 | 
|  
 | 
| @@ -30,15 +30,18 @@ public:
 | 
|          DecorateAsm(false), DisableInternal(false), DisableIRGeneration(false),
 | 
|          DisableTranslation(false), DumpStats(false), FunctionSections(false),
 | 
|          GenerateUnitTestMessages(false), PhiEdgeSplit(false),
 | 
| +        RandomNopInsertion(false), RandomRegAlloc(false),
 | 
|          SubzeroTimingEnabled(false), TimeEachFunction(false),
 | 
|          UseSandboxing(false),
 | 
| -        // FileType field
 | 
| -        OutFileType(FT_Iasm),
 | 
| +        // Enum and integer fields
 | 
| +        Opt(Opt_m1), OutFileType(FT_Iasm), RandomMaxNopsPerInstruction(0),
 | 
| +        RandomNopProbabilityAsPercentage(0), TArch(TargetArch_NUM),
 | 
| +        VMask(IceV_None),
 | 
|          // IceString fields.
 | 
| -        DefaultFunctionPrefix(""), DefaultGlobalPrefix(""), TimingFocusOn(""),
 | 
| -        TranslateOnly(""), VerboseFocusOn(""),
 | 
| -        // size_t fields.
 | 
| -        NumTranslationThreads(0) {}
 | 
| +        DefaultFunctionPrefix(""), DefaultGlobalPrefix(""), TestPrefix(""),
 | 
| +        TimingFocusOn(""), TranslateOnly(""), VerboseFocusOn(""),
 | 
| +        // size_t and 64-bit fields.
 | 
| +        NumTranslationThreads(0), RandomSeed(0) {}
 | 
|  
 | 
|    // bool accessors.
 | 
|  
 | 
| @@ -87,6 +90,12 @@ public:
 | 
|    bool getPhiEdgeSplit() const { return PhiEdgeSplit; }
 | 
|    void setPhiEdgeSplit(bool NewValue) { PhiEdgeSplit = NewValue; }
 | 
|  
 | 
| +  bool shouldDoNopInsertion() const { return RandomNopInsertion; }
 | 
| +  void setShouldDoNopInsertion(bool NewValue) { RandomNopInsertion = NewValue; }
 | 
| +
 | 
| +  bool shouldRandomizeRegAlloc() const { return RandomRegAlloc; }
 | 
| +  void setShouldRandomizeRegAlloc(bool NewValue) { RandomRegAlloc = NewValue; }
 | 
| +
 | 
|    bool getSubzeroTimingEnabled() const { return SubzeroTimingEnabled; }
 | 
|    void setSubzeroTimingEnabled(bool NewValue) {
 | 
|      SubzeroTimingEnabled = NewValue;
 | 
| @@ -98,10 +107,36 @@ public:
 | 
|    bool getUseSandboxing() const { return UseSandboxing; }
 | 
|    void setUseSandboxing(bool NewValue) { UseSandboxing = NewValue; }
 | 
|  
 | 
| -  // FileType accessor.
 | 
| +  // Enum and integer accessors.
 | 
| +  OptLevel getOptLevel() const { return Opt; }
 | 
| +  void setOptLevel(OptLevel NewValue) { Opt = NewValue; }
 | 
| +
 | 
|    FileType getOutFileType() const { return OutFileType; }
 | 
|    void setOutFileType(FileType NewValue) { OutFileType = NewValue; }
 | 
|  
 | 
| +  int getMaxNopsPerInstruction() const { return RandomMaxNopsPerInstruction; }
 | 
| +  void setMaxNopsPerInstruction(int NewValue) {
 | 
| +    RandomMaxNopsPerInstruction = NewValue;
 | 
| +  }
 | 
| +
 | 
| +  int getNopProbabilityAsPercentage() const {
 | 
| +    return RandomNopProbabilityAsPercentage;
 | 
| +  }
 | 
| +  void setNopProbabilityAsPercentage(int NewValue) {
 | 
| +    RandomNopProbabilityAsPercentage = NewValue;
 | 
| +  }
 | 
| +
 | 
| +  TargetArch getTargetArch() const { return TArch; }
 | 
| +  void setTargetArch(TargetArch NewValue) { TArch = NewValue; }
 | 
| +
 | 
| +  TargetInstructionSet getTargetInstructionSet() const { return TInstrSet; }
 | 
| +  void setTargetInstructionSet(TargetInstructionSet NewValue) {
 | 
| +    TInstrSet = NewValue;
 | 
| +  }
 | 
| +
 | 
| +  VerboseMask getVerbose() const { return ALLOW_DUMP ? VMask : IceV_None; }
 | 
| +  void setVerbose(VerboseMask NewValue) { VMask = NewValue; }
 | 
| +
 | 
|    // IceString accessors.
 | 
|  
 | 
|    const IceString &getDefaultFunctionPrefix() const {
 | 
| @@ -118,6 +153,9 @@ public:
 | 
|      DefaultGlobalPrefix = NewValue;
 | 
|    }
 | 
|  
 | 
| +  const IceString &getTestPrefix() const { return TestPrefix; }
 | 
| +  void setTestPrefix(const IceString &NewValue) { TestPrefix = NewValue; }
 | 
| +
 | 
|    const IceString &getTimingFocusOn() const { return TimingFocusOn; }
 | 
|    void setTimingFocusOn(const IceString &NewValue) { TimingFocusOn = NewValue; }
 | 
|  
 | 
| @@ -129,7 +167,7 @@ public:
 | 
|      VerboseFocusOn = NewValue;
 | 
|    }
 | 
|  
 | 
| -  // size_t accessors.
 | 
| +  // size_t and 64-bit accessors.
 | 
|  
 | 
|    size_t getNumTranslationThreads() const { return NumTranslationThreads; }
 | 
|    bool isSequential() const { return NumTranslationThreads == 0; }
 | 
| @@ -137,6 +175,9 @@ public:
 | 
|      NumTranslationThreads = NewValue;
 | 
|    }
 | 
|  
 | 
| +  uint64_t getRandomSeed() const { return RandomSeed; }
 | 
| +  void setRandomSeed(size_t NewValue) { RandomSeed = NewValue; }
 | 
| +
 | 
|  private:
 | 
|    bool AllowErrorRecovery;
 | 
|    bool AllowUninitializedGlobals;
 | 
| @@ -149,19 +190,29 @@ private:
 | 
|    bool FunctionSections;
 | 
|    bool GenerateUnitTestMessages;
 | 
|    bool PhiEdgeSplit;
 | 
| +  bool RandomNopInsertion;
 | 
| +  bool RandomRegAlloc;
 | 
|    bool SubzeroTimingEnabled;
 | 
|    bool TimeEachFunction;
 | 
|    bool UseSandboxing;
 | 
|  
 | 
| +  OptLevel Opt;
 | 
|    FileType OutFileType;
 | 
| +  int RandomMaxNopsPerInstruction;
 | 
| +  int RandomNopProbabilityAsPercentage;
 | 
| +  TargetArch TArch;
 | 
| +  TargetInstructionSet TInstrSet;
 | 
| +  VerboseMask VMask;
 | 
|  
 | 
|    IceString DefaultFunctionPrefix;
 | 
|    IceString DefaultGlobalPrefix;
 | 
| +  IceString TestPrefix;
 | 
|    IceString TimingFocusOn;
 | 
|    IceString TranslateOnly;
 | 
|    IceString VerboseFocusOn;
 | 
|  
 | 
|    size_t NumTranslationThreads; // 0 means completely sequential
 | 
| +  uint64_t RandomSeed;
 | 
|  };
 | 
|  
 | 
|  } // end of namespace Ice
 | 
| 
 |