Sean Fertile
509132b368
Represent runtime preemption in the IR.
...
Currently we do not represent runtime preemption in the IR, which has several
drawbacks:
1) The semantics of GlobalValues differ depending on the object file format
you are targeting (as well as the relocation-model and -fPIE value).
2) We have no way of disabling inlining of run time interposable functions,
since in the IR we only know if a function is link-time interposable.
Because of this llvm cannot support elf-interposition semantics.
3) In LTO builds of executables we will have extra knowledge that a symbol
resolved to a local definition and can't be preemptable, but have no way to
propagate that knowledge through the compiler.
This patch adds preemptability specifiers to the IR with the following meaning:
dso_local --> means the compiler may assume the symbol will resolve to a
definition within the current linkage unit and the symbol may be accessed
directly even if the definition is not within this compilation unit.
dso_preemptable --> means that the compiler must assume the GlobalValue may be
replaced with a definition from outside the current linkage unit at runtime.
To ease transitioning dso_preemptable is treated as a 'default' in that
low-level codegen will still do the same checks it did previously to see if a
symbol should be accessed indirectly. Eventually when IR producers emit the
specifiers on all Globalvalues we can change dso_preemptable to mean 'always
access indirectly', and remove the current logic.
Differential Revision: https://reviews.llvm.org/D20217
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316668 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-26 15:00:26 +00:00
..
2017-08-03 17:11:41 +00:00
2014-08-19 21:08:27 +00:00
2014-08-19 21:08:27 +00:00
2014-08-19 21:08:27 +00:00
2014-02-26 12:06:36 +00:00
2015-10-10 14:18:36 +00:00
2015-02-27 21:17:42 +00:00
2017-07-11 22:23:00 +00:00
2017-07-11 22:23:00 +00:00
2017-07-11 22:23:00 +00:00
2014-08-19 21:08:27 +00:00
2013-07-26 04:16:55 +00:00
2017-04-28 20:25:27 +00:00
2016-03-16 23:17:54 +00:00
2016-03-03 10:08:02 +00:00
2016-03-03 10:08:02 +00:00
2014-08-19 21:08:27 +00:00
2014-02-26 12:06:36 +00:00
2014-08-19 21:08:27 +00:00
2014-02-26 12:06:36 +00:00
2016-01-29 05:55:09 +00:00
2016-01-29 05:55:09 +00:00
2014-08-19 21:08:27 +00:00
2014-02-26 12:06:36 +00:00
2014-08-19 21:08:27 +00:00
2014-12-01 21:04:44 +00:00
2013-12-22 07:51:53 +00:00
2015-02-27 21:17:42 +00:00
2013-09-09 19:14:35 +00:00
2014-08-19 21:08:27 +00:00
2014-03-11 10:48:52 +00:00
2015-04-28 04:30:29 +00:00
2015-04-28 04:30:29 +00:00
2017-07-17 20:05:19 +00:00
2015-10-27 21:17:06 +00:00
2017-07-17 20:05:19 +00:00
2015-10-27 21:17:06 +00:00
2017-07-17 20:05:19 +00:00
2016-03-16 05:43:03 +00:00
2017-07-17 20:05:19 +00:00
2016-09-09 17:24:31 +00:00
2017-07-17 20:05:19 +00:00
2017-03-17 17:53:26 +00:00
2017-09-13 21:40:59 +00:00
2017-09-13 21:40:59 +00:00
2017-09-29 09:51:22 +00:00
2015-02-27 19:29:02 +00:00
2014-09-23 08:48:01 +00:00
2014-09-23 08:48:01 +00:00
2014-09-23 08:48:01 +00:00
2016-04-15 15:57:41 +00:00
2017-09-12 21:50:41 +00:00
2015-08-03 17:26:41 +00:00
2015-05-21 20:37:30 +00:00
2017-09-21 23:14:52 +00:00
2017-09-21 23:14:52 +00:00
2017-08-23 20:31:27 +00:00
2017-04-18 01:21:53 +00:00
2017-09-21 23:14:55 +00:00
2017-09-21 23:14:55 +00:00
2017-06-14 13:14:38 +00:00
2017-06-14 13:14:38 +00:00
2017-08-23 20:31:27 +00:00
2016-12-20 02:09:43 +00:00
2017-08-30 18:06:51 +00:00
2017-02-08 17:44:43 +00:00
2017-08-30 18:06:51 +00:00
2017-02-07 17:35:41 +00:00
2016-10-26 08:34:19 +00:00
2016-10-26 08:34:19 +00:00
2016-04-12 15:51:23 +00:00
2016-04-12 15:51:23 +00:00
2017-04-28 22:25:46 +00:00
2016-11-03 19:42:02 +00:00
2016-04-15 15:57:41 +00:00
2016-04-15 15:57:41 +00:00
2017-02-07 17:35:41 +00:00
2016-04-24 06:52:01 +00:00
2015-02-25 01:10:03 +00:00
2015-02-25 01:10:03 +00:00
2017-10-26 15:00:26 +00:00
2014-08-19 21:08:27 +00:00
2015-07-10 12:52:00 +00:00
2014-08-19 21:08:27 +00:00
2015-02-27 21:17:42 +00:00
2014-12-15 19:07:53 +00:00
2014-12-08 00:41:39 +00:00
2014-08-19 21:08:27 +00:00
2013-12-15 11:50:45 +00:00
2017-05-11 12:28:08 +00:00
2015-09-11 03:22:04 +00:00
2014-09-23 08:48:01 +00:00
2015-10-26 18:37:00 +00:00
2014-08-19 21:08:27 +00:00
2017-09-07 01:33:52 +00:00
2016-07-04 08:01:29 +00:00
2016-07-04 08:01:29 +00:00
2016-11-16 21:44:45 +00:00
2015-01-19 15:16:06 +00:00
2013-12-01 10:16:35 +00:00
2015-09-11 03:22:04 +00:00
2014-05-07 22:57:20 +00:00
2016-12-28 22:30:28 +00:00
2016-12-28 22:30:28 +00:00
2016-12-28 22:30:28 +00:00
2016-12-28 22:30:28 +00:00
2014-12-15 19:07:53 +00:00
2017-07-11 22:23:00 +00:00
2014-03-02 15:26:36 +00:00
2015-03-13 18:20:45 +00:00
2016-12-28 22:30:28 +00:00
2016-03-29 05:25:17 +00:00
2016-03-27 23:17:54 +00:00
2014-12-15 19:07:53 +00:00
2014-12-11 23:02:24 +00:00
2014-12-15 19:07:53 +00:00
2015-06-17 20:52:32 +00:00
2014-09-23 08:48:01 +00:00
2017-07-06 17:56:01 +00:00
2017-07-06 17:56:01 +00:00
2016-11-29 21:55:09 +00:00
2016-11-16 21:44:45 +00:00
2010-10-28 15:57:30 +00:00
2015-09-11 03:22:04 +00:00
2014-05-16 19:35:39 +00:00
2016-04-26 05:59:08 +00:00
2015-09-24 23:34:52 +00:00
2015-06-16 20:03:39 +00:00
2015-02-25 01:10:03 +00:00
2014-03-27 12:08:23 +00:00
2015-07-02 16:22:40 +00:00
2014-08-19 21:08:27 +00:00
2017-06-04 08:21:58 +00:00
2015-08-31 18:00:30 +00:00
2014-08-19 21:08:27 +00:00
2016-02-10 21:55:02 +00:00
2014-08-19 21:08:27 +00:00
2015-11-19 05:56:52 +00:00
2014-09-23 08:48:01 +00:00
2017-08-04 16:00:58 +00:00
2015-10-27 21:17:06 +00:00
2014-09-23 08:48:01 +00:00
2014-09-23 08:48:01 +00:00
2017-08-04 16:00:58 +00:00
2017-08-04 16:00:58 +00:00
2017-09-01 16:24:02 +00:00
2016-09-20 23:07:17 +00:00
2017-08-04 16:00:58 +00:00
2017-08-04 16:00:58 +00:00
2017-08-04 16:00:58 +00:00
2017-08-04 16:00:58 +00:00
2017-08-04 16:00:58 +00:00
2017-04-17 17:51:36 +00:00
2017-08-04 16:00:58 +00:00
2017-06-27 23:50:11 +00:00
2016-08-12 13:53:02 +00:00
2016-04-27 13:28:35 +00:00
2017-01-05 14:32:16 +00:00
2016-12-21 23:03:45 +00:00
2017-02-10 22:29:38 +00:00
2016-12-21 23:03:45 +00:00
2017-08-23 20:31:27 +00:00
2017-07-28 20:21:02 +00:00
2017-02-01 22:45:09 +00:00
2017-02-01 22:45:09 +00:00
2014-08-19 21:08:27 +00:00
2014-05-17 21:00:22 +00:00
2017-07-19 00:09:54 +00:00
2017-07-19 00:09:54 +00:00
2017-06-12 20:10:48 +00:00
2015-02-27 21:17:42 +00:00
2014-06-25 15:41:39 +00:00
2017-09-15 21:12:14 +00:00
2017-03-08 23:55:44 +00:00
2017-03-08 23:55:44 +00:00
2017-10-06 18:06:59 +00:00
2016-07-01 02:41:21 +00:00
2016-07-01 02:41:21 +00:00
2016-04-15 15:57:41 +00:00
2015-11-05 22:03:56 +00:00
2014-12-15 19:07:53 +00:00
2015-09-10 16:02:24 +00:00
2015-09-11 03:22:04 +00:00
2014-08-19 21:08:27 +00:00
2014-03-02 15:26:36 +00:00
2014-08-19 21:08:27 +00:00
2014-02-26 12:06:36 +00:00
2014-08-19 21:08:27 +00:00
2013-12-08 11:35:09 +00:00
2015-09-17 20:12:00 +00:00
2014-08-19 21:08:27 +00:00
2014-06-13 14:24:07 +00:00
2015-01-20 05:58:07 +00:00
2015-01-20 05:58:07 +00:00