Ulrich Weigand
c80aad901b
[SystemZ] Fix ABI for i128 argument and return types
...
According to the SystemZ ABI, 128-bit integer types should be
passed and returned via implicit reference. However, this is
not currently implemented at the LLVM IR level for the i128
type. This does not matter when compiling C/C++ code, since
clang will implement the implicit reference itself.
However, it turns out that when calling libgcc helper routines
operating on 128-bit integers, LLVM will use i128 argument and
return value types; the resulting code is not compatible with
the ABI used in libgcc, leading to crashes (see PR26559).
This should be simple to fix, except that i128 currently is not
even a legal type for the SystemZ back end. Therefore, common
code will already split arguments and return values into multiple
parts. The bulk of this patch therefore consists of detecting
such parts, and correctly handling passing via implicit reference
of a value split into multiple parts. If at some time in the
future, i128 becomes a legal type, this code can be removed again.
This fixes PR26559.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261325 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-19 14:10:21 +00:00
..
2015-03-02 19:34:11 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-11-28 11:02:32 +00:00
2015-11-28 13:05:49 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-10-01 18:12:28 +00:00
2015-10-01 18:12:28 +00:00
2015-10-01 18:12:28 +00:00
2015-11-18 14:59:00 +00:00
2015-11-18 14:59:00 +00:00
2015-08-13 13:37:06 +00:00
2016-02-19 14:10:21 +00:00
2016-02-19 14:10:21 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-10-10 07:14:24 +00:00
2015-10-10 07:20:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-03-31 12:56:33 +00:00
2015-11-21 13:25:07 +00:00
2015-10-01 18:12:28 +00:00
2015-10-01 18:12:28 +00:00
2015-02-27 21:17:42 +00:00
2015-10-26 15:03:07 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-10-26 15:03:32 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-10-20 15:05:54 +00:00
2015-10-01 18:12:28 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-09-21 17:35:45 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-10-26 15:03:41 +00:00
2015-02-27 19:29:02 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-10-01 18:12:28 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-09-21 17:35:45 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:28:34 +00:00
2015-04-01 12:51:43 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-08-15 13:27:30 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-03-31 12:52:27 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-10-26 15:03:49 +00:00
2015-02-27 21:17:42 +00:00
2015-03-31 12:52:27 +00:00
2015-02-27 21:17:42 +00:00
2015-03-30 13:46:59 +00:00
2015-10-29 16:13:55 +00:00
2015-12-16 18:04:06 +00:00
2016-02-01 18:31:19 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-10-29 16:13:55 +00:00
2015-02-27 21:17:42 +00:00
2015-11-19 05:56:52 +00:00
2015-02-27 21:17:42 +00:00
2015-11-19 05:56:52 +00:00
2015-11-19 05:56:52 +00:00
2015-11-19 05:56:52 +00:00
2015-11-19 05:56:52 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-03-31 12:58:17 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-10-29 08:28:35 +00:00
2015-02-27 21:17:42 +00:00
2015-11-19 05:56:52 +00:00
2015-02-18 09:13:27 +00:00
2015-02-18 09:13:27 +00:00
2015-02-18 09:13:27 +00:00
2015-02-18 09:13:27 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:29:21 +00:00
2015-08-28 17:31:28 +00:00
2015-08-28 17:31:28 +00:00
2015-08-13 13:37:06 +00:00
2015-08-13 13:37:06 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:33:37 +00:00
2015-05-05 19:34:10 +00:00
2015-05-05 19:31:09 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:32:57 +00:00
2015-05-05 19:32:57 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:32:57 +00:00
2015-05-05 19:32:57 +00:00
2015-05-05 19:32:57 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-09-15 14:27:46 +00:00
2015-10-08 17:46:59 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:25:42 +00:00
2015-10-21 07:39:47 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00