Chandler Carruth
fc187011be
[SDAG] Remove the reliance on MI's allocation strategy for
...
`MachineMemOperand` pointers attached to `MachineSDNodes` and instead
have the `SelectionDAG` fully manage the memory for this array.
Prior to this change, the memory management was deeply confusing here --
The way the MI was built relied on the `SelectionDAG` allocating memory
for these arrays of pointers using the `MachineFunction`'s allocator so
that the raw pointer to the array could be blindly copied into an
eventual `MachineInstr`. This creates a hard coupling between how
`MachineInstr`s allocate their array of `MachineMemOperand` pointers and
how the `MachineSDNode` does.
This change is motivated in large part by a change I am making to how
`MachineFunction` allocates these pointers, but it seems like a layering
improvement as well.
This would run the risk of increasing allocations overall, but I've
implemented an optimization that should avoid that by storing a single
`MachineMemOperand` pointer directly instead of allocating anything.
This is expected to be a net win because the vast majority of uses of
these only need a single pointer.
As a side-effect, this makes the API for updating a `MachineSDNode` and
a `MachineInstr` reasonably different which seems nice to avoid
unexpected coupling of these two layers. We can map between them, but we
shouldn't be *surprised* at where that occurs. =]
Differential Revision: https://reviews.llvm.org/D50680
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339740 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-14 23:30:32 +00:00
..
2018-06-21 19:38:56 +00:00
2018-06-28 23:47:12 +00:00
2018-06-28 23:47:12 +00:00
2018-07-10 20:07:22 +00:00
2018-05-01 15:54:18 +00:00
2018-08-01 12:12:01 +00:00
2018-06-26 19:10:00 +00:00
2018-08-07 07:28:46 +00:00
2018-02-13 18:00:25 +00:00
2017-08-08 23:53:55 +00:00
2018-07-10 14:03:41 +00:00
2018-07-11 20:59:01 +00:00
2017-07-12 23:06:18 +00:00
2018-06-21 18:36:04 +00:00
2018-07-11 20:59:01 +00:00
2018-07-20 09:05:08 +00:00
2018-07-11 20:59:01 +00:00
2018-08-01 19:57:34 +00:00
2018-08-02 08:33:31 +00:00
2018-08-02 08:33:31 +00:00
2018-07-25 17:02:11 +00:00
2018-08-01 15:04:36 +00:00
2017-03-10 19:39:07 +00:00
2018-05-01 15:54:18 +00:00
2018-07-27 06:04:40 +00:00
2018-07-13 22:16:03 +00:00
2018-07-20 09:05:08 +00:00
2018-07-10 22:09:33 +00:00
2018-08-05 14:53:08 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-08-01 01:31:30 +00:00
2018-07-30 12:16:58 +00:00
2018-07-13 22:16:03 +00:00
2018-07-13 21:05:14 +00:00
2018-06-23 03:05:39 +00:00
2018-06-23 03:05:39 +00:00
2018-06-28 23:47:12 +00:00
2018-08-14 23:30:32 +00:00
2018-08-10 19:20:17 +00:00
2018-08-03 18:27:52 +00:00
2018-07-24 02:19:20 +00:00
2018-07-11 20:59:01 +00:00
2018-05-14 12:53:11 +00:00
2017-11-04 17:37:43 +00:00
2018-06-20 19:45:40 +00:00
2018-07-11 20:59:01 +00:00
2018-07-28 12:34:25 +00:00
2018-05-18 21:35:00 +00:00
2018-07-11 20:59:01 +00:00
2018-07-20 09:05:08 +00:00
2018-07-20 09:05:08 +00:00
2018-05-01 15:54:18 +00:00
2018-05-01 15:54:18 +00:00
2018-05-22 02:03:23 +00:00
2017-07-06 20:57:05 +00:00
2018-07-11 20:59:01 +00:00
2018-06-13 17:31:51 +00:00
2018-06-11 16:50:49 +00:00
2018-05-25 17:46:24 +00:00
2018-07-11 20:59:01 +00:00
2017-10-12 18:59:54 +00:00
2017-06-08 19:25:21 +00:00
2018-08-11 00:51:54 +00:00
2018-03-01 21:25:25 +00:00
2018-03-01 19:27:10 +00:00
2018-05-22 02:03:23 +00:00
2018-07-11 20:59:01 +00:00
2018-06-28 23:47:12 +00:00
2018-05-14 12:53:11 +00:00
2018-06-21 13:37:45 +00:00
2018-08-07 07:28:46 +00:00
2018-08-07 07:28:46 +00:00
2018-07-16 10:02:41 +00:00
2018-07-11 20:59:01 +00:00
2017-11-01 19:12:38 +00:00
2018-05-01 15:54:18 +00:00
2018-06-28 23:47:12 +00:00
2018-07-11 20:59:01 +00:00
2018-06-04 21:23:21 +00:00
2018-05-01 15:54:18 +00:00
2018-06-28 23:47:12 +00:00
2018-05-01 16:10:38 +00:00
2018-06-21 13:36:01 +00:00
2017-12-07 10:40:31 +00:00
2018-07-10 20:07:22 +00:00
2018-06-22 08:39:52 +00:00
2018-07-11 20:59:01 +00:00
2018-06-04 14:45:20 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-05-14 12:53:11 +00:00
2018-07-11 20:59:01 +00:00
2017-11-20 14:35:53 +00:00
2018-05-14 12:53:11 +00:00
2018-04-30 19:08:16 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2017-01-28 18:13:08 +00:00
2018-08-01 12:12:01 +00:00
2018-07-20 09:05:08 +00:00
2018-07-11 20:59:01 +00:00
2018-05-24 20:02:01 +00:00
2018-06-28 23:47:12 +00:00
2018-07-11 20:59:01 +00:00
2018-05-01 15:54:18 +00:00
2018-06-28 23:47:12 +00:00
2018-06-28 23:47:12 +00:00
2017-06-06 11:49:48 +00:00
2017-08-01 19:54:18 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-06-28 23:47:12 +00:00
2018-06-28 23:47:12 +00:00
2018-08-01 18:36:07 +00:00
2018-08-01 18:36:07 +00:00
2016-07-22 17:01:25 +00:00
2016-07-22 17:01:25 +00:00
2018-07-11 20:59:01 +00:00
2018-05-01 15:54:18 +00:00
2018-05-13 10:04:48 +00:00
2018-06-28 23:47:12 +00:00
2018-06-28 23:47:12 +00:00
2018-06-28 23:47:12 +00:00
2018-06-28 23:47:12 +00:00
2018-07-11 20:59:01 +00:00
2018-06-28 23:47:12 +00:00
2016-06-10 02:18:02 +00:00
2018-07-11 20:59:01 +00:00
2018-06-04 21:23:21 +00:00
2018-07-11 20:59:01 +00:00
2018-06-21 13:36:01 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-08-02 23:31:32 +00:00
2018-08-12 08:44:25 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-07-30 09:23:59 +00:00
2018-07-16 10:21:36 +00:00
2018-07-11 20:59:01 +00:00
2018-07-30 09:23:59 +00:00
2018-07-30 09:23:59 +00:00
2018-08-01 20:13:58 +00:00
2018-08-12 08:42:46 +00:00
2017-04-04 16:34:39 +00:00
2018-08-14 23:30:32 +00:00
2018-08-06 22:10:26 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-07-20 09:05:08 +00:00
2018-06-21 18:36:04 +00:00
2018-05-22 02:03:23 +00:00
2018-05-01 15:54:18 +00:00
2018-07-16 10:02:41 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-07-11 20:59:01 +00:00
2018-07-10 17:31:32 +00:00
2018-07-26 19:47:51 +00:00
2018-07-11 20:59:01 +00:00
2018-06-15 15:15:46 +00:00
2018-04-05 13:11:36 +00:00
2018-07-20 21:20:36 +00:00
2018-07-11 20:59:01 +00:00
2018-04-06 15:48:39 +00:00
2018-04-09 13:10:33 +00:00
2016-09-23 09:08:07 +00:00
2016-11-10 16:02:37 +00:00
2018-06-27 15:33:33 +00:00
2018-08-01 20:13:58 +00:00
2018-08-07 21:54:37 +00:00
2018-08-01 01:31:30 +00:00
2018-03-16 15:40:27 +00:00
2018-03-26 13:56:53 +00:00