Commit 7474a51
Gabor Horvath
[cxx-interop] Avoid copies when accessing pointee
Previously, we would get two copies, one accessing the pointee and one
when we pass the pointee as a method as the implicit self argument.
These copies are unsafe as they might introduce slicing. When
addressable paramaters features are enabled, we no longer make these
copies for the standard STL types. Custom smart pointers can replicate
this by making the lifetime dependency between the implicit object
parameter and the returned reference of operator* explicit via a
lifetime annotation.
rdar://154213694&128293252&1126904821 parent a28515e commit 7474a51
File tree
7 files changed
+147
-9
lines changed- lib/ClangImporter
- test/Interop/Cxx
- class/method
- stdlib
- Inputs
7 files changed
+147
-9
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4097 | 4097 | | |
4098 | 4098 | | |
4099 | 4099 | | |
4100 | | - | |
| 4100 | + | |
| 4101 | + | |
4101 | 4102 | | |
4102 | 4103 | | |
4103 | 4104 | | |
| |||
4145 | 4146 | | |
4146 | 4147 | | |
4147 | 4148 | | |
| 4149 | + | |
| 4150 | + | |
| 4151 | + | |
| 4152 | + | |
| 4153 | + | |
| 4154 | + | |
| 4155 | + | |
| 4156 | + | |
| 4157 | + | |
| 4158 | + | |
| 4159 | + | |
| 4160 | + | |
| 4161 | + | |
| 4162 | + | |
| 4163 | + | |
| 4164 | + | |
| 4165 | + | |
| 4166 | + | |
| 4167 | + | |
| 4168 | + | |
| 4169 | + | |
| 4170 | + | |
| 4171 | + | |
| 4172 | + | |
| 4173 | + | |
| 4174 | + | |
| 4175 | + | |
| 4176 | + | |
4148 | 4177 | | |
4149 | 4178 | | |
4150 | 4179 | | |
| |||
4163 | 4192 | | |
4164 | 4193 | | |
4165 | 4194 | | |
| 4195 | + | |
| 4196 | + | |
| 4197 | + | |
| 4198 | + | |
| 4199 | + | |
| 4200 | + | |
| 4201 | + | |
| 4202 | + | |
4166 | 4203 | | |
4167 | 4204 | | |
4168 | 4205 | | |
4169 | 4206 | | |
| 4207 | + | |
4170 | 4208 | | |
4171 | 4209 | | |
4172 | 4210 | | |
| |||
4189 | 4227 | | |
4190 | 4228 | | |
4191 | 4229 | | |
4192 | | - | |
4193 | | - | |
4194 | | - | |
4195 | | - | |
| 4230 | + | |
4196 | 4231 | | |
4197 | 4232 | | |
4198 | 4233 | | |
| |||
4271 | 4306 | | |
4272 | 4307 | | |
4273 | 4308 | | |
4274 | | - | |
| 4309 | + | |
4275 | 4310 | | |
4276 | 4311 | | |
4277 | 4312 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1679 | 1679 | | |
1680 | 1680 | | |
1681 | 1681 | | |
| 1682 | + | |
1682 | 1683 | | |
1683 | 1684 | | |
1684 | 1685 | | |
| |||
1761 | 1762 | | |
1762 | 1763 | | |
1763 | 1764 | | |
| 1765 | + | |
| 1766 | + | |
| 1767 | + | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + | |
| 1771 | + | |
| 1772 | + | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
| 1776 | + | |
| 1777 | + | |
| 1778 | + | |
| 1779 | + | |
| 1780 | + | |
| 1781 | + | |
1764 | 1782 | | |
1765 | 1783 | | |
1766 | 1784 | | |
| |||
1772 | 1790 | | |
1773 | 1791 | | |
1774 | 1792 | | |
| 1793 | + | |
1775 | 1794 | | |
1776 | 1795 | | |
1777 | 1796 | | |
| |||
1782 | 1801 | | |
1783 | 1802 | | |
1784 | 1803 | | |
1785 | | - | |
| 1804 | + | |
1786 | 1805 | | |
1787 | | - | |
| 1806 | + | |
1788 | 1807 | | |
1789 | 1808 | | |
1790 | 1809 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
69 | 84 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
0 commit comments