Fix run-test 044/064.

Change-Id: Iede43d149aa4712929a1cdc922e2eb2b2734fdd9
diff --git a/src/compiler_llvm/stub_compiler.cc b/src/compiler_llvm/stub_compiler.cc
index d14dd62..46c6f21 100644
--- a/src/compiler_llvm/stub_compiler.cc
+++ b/src/compiler_llvm/stub_compiler.cc
@@ -150,7 +150,24 @@
 
   llvm::Value* code_addr = irb_.CreateLoad(code_field_addr, kTBAAJRuntime);
 
-  llvm::Value* retval = irb_.CreateCall(code_addr, args);
+  llvm::CallInst* retval = irb_.CreateCall(code_addr, args);
+#if defined(ART_USE_QUICK_COMPILER)
+  for (size_t i = 1; i < shorty_size; ++i) {
+    switch(shorty[i]) {
+      case 'Z':
+      case 'C':
+        retval->addAttribute(i + (is_static ? 1 : 2), llvm::Attribute::ZExt);
+        break;
+
+      case 'B':
+      case 'S':
+        retval->addAttribute(i + (is_static ? 1 : 2), llvm::Attribute::SExt);
+        break;
+
+      default: break;
+    }
+  }
+#endif
 
   // Store the returned value
   if (shorty[0] != 'V') {
@@ -199,6 +216,21 @@
   llvm::Function* func =
     llvm::Function::Create(accurate_func_type, llvm::Function::ExternalLinkage,
                            func_name, module_);
+#if defined(ART_USE_QUICK_COMPILER)
+  switch(shorty[0]) {
+    case 'Z':
+    case 'C':
+      func->addAttribute(0, llvm::Attribute::ZExt);
+      break;
+
+    case 'B':
+    case 'S':
+      func->addAttribute(0, llvm::Attribute::SExt);
+      break;
+
+    default: break;
+  }
+#endif
 
   // Create basic block for the body of this function
   llvm::BasicBlock* block_body =