This repository was archived by the owner on Feb 21, 2026. It is now read-only.
Commit a44afb5
committed
[CIR] Implement non-virtual thunk generation for multiple inheritance
This patch implements complete support for generating non-virtual thunks
in ClangIR for multiple inheritance scenarios. Thunks are small adapter
functions that adjust the 'this' pointer and forward calls to the actual
target function when virtual functions are overridden in derived classes
with multiple base classes.
ghstack-source-id: a80ef29
Pull-Request: #20061 parent 42827ad commit a44afb5
File tree
15 files changed
+1012
-35
lines changed- clang
- lib/CIR/CodeGen
- test/CIR
- CodeGen
- Lowering
15 files changed
+1012
-35
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
234 | 234 | | |
235 | 235 | | |
236 | 236 | | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
237 | 255 | | |
238 | 256 | | |
239 | 257 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
765 | 765 | | |
766 | 766 | | |
767 | 767 | | |
768 | | - | |
769 | | - | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
770 | 772 | | |
771 | 773 | | |
772 | 774 | | |
| |||
1158 | 1160 | | |
1159 | 1161 | | |
1160 | 1162 | | |
1161 | | - | |
| 1163 | + | |
1162 | 1164 | | |
1163 | 1165 | | |
1164 | 1166 | | |
1165 | | - | |
| 1167 | + | |
1166 | 1168 | | |
1167 | 1169 | | |
1168 | 1170 | | |
| |||
1365 | 1367 | | |
1366 | 1368 | | |
1367 | 1369 | | |
1368 | | - | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
1369 | 1373 | | |
1370 | 1374 | | |
1371 | 1375 | | |
1372 | 1376 | | |
1373 | | - | |
| 1377 | + | |
| 1378 | + | |
1374 | 1379 | | |
1375 | 1380 | | |
1376 | 1381 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2131 | 2131 | | |
2132 | 2132 | | |
2133 | 2133 | | |
| 2134 | + | |
| 2135 | + | |
| 2136 | + | |
| 2137 | + | |
| 2138 | + | |
| 2139 | + | |
| 2140 | + | |
| 2141 | + | |
| 2142 | + | |
| 2143 | + | |
| 2144 | + | |
| 2145 | + | |
| 2146 | + | |
| 2147 | + | |
| 2148 | + | |
| 2149 | + | |
| 2150 | + | |
| 2151 | + | |
2134 | 2152 | | |
2135 | 2153 | | |
2136 | 2154 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
243 | 243 | | |
244 | 244 | | |
245 | 245 | | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
246 | 255 | | |
247 | 256 | | |
248 | 257 | | |
| |||
2144 | 2153 | | |
2145 | 2154 | | |
2146 | 2155 | | |
| 2156 | + | |
| 2157 | + | |
| 2158 | + | |
| 2159 | + | |
| 2160 | + | |
| 2161 | + | |
| 2162 | + | |
| 2163 | + | |
| 2164 | + | |
| 2165 | + | |
| 2166 | + | |
| 2167 | + | |
| 2168 | + | |
| 2169 | + | |
| 2170 | + | |
| 2171 | + | |
| 2172 | + | |
| 2173 | + | |
| 2174 | + | |
| 2175 | + | |
| 2176 | + | |
| 2177 | + | |
| 2178 | + | |
| 2179 | + | |
| 2180 | + | |
| 2181 | + | |
| 2182 | + | |
| 2183 | + | |
| 2184 | + | |
| 2185 | + | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
| 2189 | + | |
| 2190 | + | |
| 2191 | + | |
| 2192 | + | |
| 2193 | + | |
| 2194 | + | |
| 2195 | + | |
| 2196 | + | |
| 2197 | + | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
| 2205 | + | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
2147 | 2213 | | |
2148 | 2214 | | |
2149 | 2215 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
826 | 826 | | |
827 | 827 | | |
828 | 828 | | |
829 | | - | |
| 829 | + | |
830 | 830 | | |
831 | | - | |
832 | | - | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
833 | 835 | | |
834 | 836 | | |
835 | 837 | | |
836 | | - | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
837 | 845 | | |
838 | 846 | | |
839 | 847 | | |
| |||
2675 | 2683 | | |
2676 | 2684 | | |
2677 | 2685 | | |
| 2686 | + | |
| 2687 | + | |
| 2688 | + | |
| 2689 | + | |
| 2690 | + | |
2678 | 2691 | | |
2679 | 2692 | | |
2680 | 2693 | | |
| |||
2710 | 2723 | | |
2711 | 2724 | | |
2712 | 2725 | | |
2713 | | - | |
| 2726 | + | |
2714 | 2727 | | |
2715 | | - | |
2716 | | - | |
| 2728 | + | |
| 2729 | + | |
| 2730 | + | |
| 2731 | + | |
2717 | 2732 | | |
2718 | 2733 | | |
2719 | 2734 | | |
| |||
2739 | 2754 | | |
2740 | 2755 | | |
2741 | 2756 | | |
2742 | | - | |
| 2757 | + | |
| 2758 | + | |
| 2759 | + | |
| 2760 | + | |
| 2761 | + | |
| 2762 | + | |
2743 | 2763 | | |
| 2764 | + | |
2744 | 2765 | | |
2745 | 2766 | | |
2746 | 2767 | | |
| |||
3064 | 3085 | | |
3065 | 3086 | | |
3066 | 3087 | | |
3067 | | - | |
3068 | 3088 | | |
3069 | | - | |
| 3089 | + | |
| 3090 | + | |
| 3091 | + | |
3070 | 3092 | | |
3071 | 3093 | | |
3072 | 3094 | | |
| 3095 | + | |
| 3096 | + | |
| 3097 | + | |
| 3098 | + | |
| 3099 | + | |
| 3100 | + | |
| 3101 | + | |
3073 | 3102 | | |
3074 | 3103 | | |
3075 | 3104 | | |
3076 | 3105 | | |
3077 | 3106 | | |
3078 | 3107 | | |
3079 | | - | |
3080 | | - | |
| 3108 | + | |
3081 | 3109 | | |
3082 | 3110 | | |
3083 | 3111 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
680 | 680 | | |
681 | 681 | | |
682 | 682 | | |
683 | | - | |
684 | | - | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
685 | 686 | | |
686 | 687 | | |
687 | 688 | | |
| |||
760 | 761 | | |
761 | 762 | | |
762 | 763 | | |
763 | | - | |
764 | | - | |
| 764 | + | |
| 765 | + | |
765 | 766 | | |
766 | 767 | | |
767 | 768 | | |
| |||
0 commit comments