resolved conflicts for merge of f46fa664 to master

Change-Id: I073ac3c0f95b3da9567e54c1fc8e8b1b0d69e33f
diff --git a/lib/ExecutionEngine/Compiler.cpp b/lib/ExecutionEngine/Compiler.cpp
index 5895057..58a49c5 100644
--- a/lib/ExecutionEngine/Compiler.cpp
+++ b/lib/ExecutionEngine/Compiler.cpp
@@ -274,7 +274,7 @@
   std::vector<const char*> ExportSymbols;
 
   // Defaults to maximum optimization level from MetadataExtractor.
-  int OptimizationLevel = ME.getOptimizationLevel();
+  uint32_t OptimizationLevel = ME.getOptimizationLevel();
 
   if (OptimizationLevel == 0) {
     CodeGenOptLevel = llvm::CodeGenOpt::None;
diff --git a/lib/ExecutionEngine/Script.cpp b/lib/ExecutionEngine/Script.cpp
index 445d075..87d6e1d 100644
--- a/lib/ExecutionEngine/Script.cpp
+++ b/lib/ExecutionEngine/Script.cpp
@@ -17,6 +17,7 @@
 #include "Script.h"
 
 #include "Config.h"
+#include "bcinfo/BitcodeWrapper.h"
 
 #include "MCCacheReader.h"
 #include "MCCacheWriter.h"
@@ -95,6 +96,10 @@
     return 1;
   }
 
+  bcinfo::BitcodeWrapper wrapper(bitcode, bitcodeSize);
+  mCompilerVersion = wrapper.getCompilerVersion();
+  mOptimizationLevel = wrapper.getOptimizationLevel();
+
   mSourceList[idx] = SourceInfo::createFromBuffer(resName,
                                                   bitcode, bitcodeSize,
                                                   flags);
diff --git a/lib/ExecutionEngine/Script.h b/lib/ExecutionEngine/Script.h
index 16a453c..0560f55 100644
--- a/lib/ExecutionEngine/Script.h
+++ b/lib/ExecutionEngine/Script.h
@@ -98,10 +98,15 @@
     BCCSymbolLookupFn mpExtSymbolLookupFn;
     void *mpExtSymbolLookupFnContext;
 
+    uint32_t mCompilerVersion;
+    uint32_t mOptimizationLevel;
+
   public:
     Script() : mErrorCode(BCC_NO_ERROR), mStatus(ScriptStatus::Unknown),
-               mObjectType(ScriptObject::Unknown), mIsContextSlotNotAvail(false),
-               mpExtSymbolLookupFn(NULL), mpExtSymbolLookupFnContext(NULL) {
+               mObjectType(ScriptObject::Unknown),
+               mIsContextSlotNotAvail(false),
+               mpExtSymbolLookupFn(NULL), mpExtSymbolLookupFnContext(NULL),
+               mCompilerVersion(0), mOptimizationLevel(3) {
       Compiler::GlobalInitialization();
 
       mSourceList[0] = NULL;
@@ -164,6 +169,13 @@
 
     void *lookup(const char *name);
 
+    uint32_t getCompilerVersion() const {
+      return mCompilerVersion;
+    }
+
+    uint32_t getOptimizationLevel() const {
+      return mOptimizationLevel;
+    }
 
     size_t getExportVarCount() const;
 
diff --git a/lib/ExecutionEngine/ScriptCompiled.h b/lib/ExecutionEngine/ScriptCompiled.h
index d945024..5c442c7 100644
--- a/lib/ExecutionEngine/ScriptCompiled.h
+++ b/lib/ExecutionEngine/ScriptCompiled.h
@@ -91,6 +91,13 @@
 
     void *lookup(const char *name);
 
+    uint32_t getCompilerVersion() const {
+      return mpOwner->getCompilerVersion();
+    }
+
+    uint32_t getOptimizationLevel() const {
+      return mpOwner->getOptimizationLevel();
+    }
 
     size_t getExportVarCount() const {
       return mExportVars.size();