2010-04-14 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / mini-x86.c
index 19115016538ced801ab764722e7cff5fe385ab4f..4f2715a6f4849a95b341b1b28342e3198bc7587c 100644 (file)
@@ -1224,7 +1224,11 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
                        break;
                case ArgOnStack:
                        if (MONO_TYPE_ISSTRUCT (t)) {
-                               linfo->args [i].storage = LLVMArgVtypeByVal;
+                               if (mono_class_value_size (mono_class_from_mono_type (t), NULL) == 0)
+                               /* LLVM seems to allocate argument space for empty structures too */
+                                       linfo->args [i].storage = LLVMArgNone;
+                               else
+                                       linfo->args [i].storage = LLVMArgVtypeByVal;
                        } else {
                                linfo->args [i].storage = LLVMArgInIReg;
                                if (t->byref) {