generate calls to rsSetObject inside .helper invoke functions

bug 18071147

Change-Id: I0ff00b3a86cd799cdb1eebcd1000b74070ee0cdf
diff --git a/lib/Core/Compiler.cpp b/lib/Core/Compiler.cpp
index 4b4b4b7..4a8d8bc 100644
--- a/lib/Core/Compiler.cpp
+++ b/lib/Core/Compiler.cpp
@@ -317,6 +317,14 @@
   return true;
 }
 
+bool Compiler::addInvokeHelperPass(llvm::PassManager &pPM) {
+  llvm::Triple arch(getTargetMachine().getTargetTriple());
+  if (arch.isArch64Bit()) {
+    pPM.add(createRSInvokeHelperPass());
+  }
+  return true;
+}
+
 bool Compiler::addExpandForEachPass(Script &pScript, llvm::PassManager &pPM) {
   // Script passed to RSCompiler must be a RSScript.
   RSScript &script = static_cast<RSScript &>(pScript);
@@ -331,6 +339,9 @@
 }
 
 bool Compiler::addCustomPasses(Script &pScript, llvm::PassManager &pPM) {
+  if (!addInvokeHelperPass(pPM))
+    return false;
+
   if (!addExpandForEachPass(pScript, pPM))
     return false;