Commit 1711996
authored
[Clang][CodeGen] Do not set inbounds flag for struct GEP with null base pointers (#130734)
In the LLVM middle-end we want to fold `gep inbounds null, idx -> null`:
https://alive2.llvm.org/ce/z/5ZkPx-
This pattern is common in real-world programs
(dtcxzyw/llvm-opt-benchmark#55 (comment)).
Generally, it exists in some (actually) unreachable blocks, which is
introduced by JumpThreading.
However, some old-style offsetof macros are still widely used in
real-world C/C++ code (e.g., hwloc/slurm/luajit). To avoid breaking
existing code and inconvenience to downstream users, this patch removes
the inbounds flag from the struct gep if the base pointer is null.1 parent d14acb7 commit 1711996
File tree
5 files changed
+110
-13
lines changed- clang
- docs
- lib/CodeGen
- test
- CodeGenCXX
- CodeGen
5 files changed
+110
-13
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
45 | 52 | | |
46 | 53 | | |
47 | 54 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4772 | 4772 | | |
4773 | 4773 | | |
4774 | 4774 | | |
| 4775 | + | |
| 4776 | + | |
| 4777 | + | |
| 4778 | + | |
| 4779 | + | |
| 4780 | + | |
| 4781 | + | |
4775 | 4782 | | |
4776 | 4783 | | |
4777 | 4784 | | |
4778 | 4785 | | |
4779 | 4786 | | |
4780 | 4787 | | |
4781 | 4788 | | |
| 4789 | + | |
| 4790 | + | |
| 4791 | + | |
| 4792 | + | |
| 4793 | + | |
4782 | 4794 | | |
4783 | 4795 | | |
4784 | 4796 | | |
| |||
4800 | 4812 | | |
4801 | 4813 | | |
4802 | 4814 | | |
4803 | | - | |
| 4815 | + | |
4804 | 4816 | | |
4805 | 4817 | | |
4806 | 4818 | | |
| |||
4886 | 4898 | | |
4887 | 4899 | | |
4888 | 4900 | | |
4889 | | - | |
| 4901 | + | |
| 4902 | + | |
4890 | 4903 | | |
4891 | 4904 | | |
4892 | 4905 | | |
4893 | 4906 | | |
4894 | 4907 | | |
| 4908 | + | |
| 4909 | + | |
4895 | 4910 | | |
4896 | 4911 | | |
4897 | 4912 | | |
| |||
4900 | 4915 | | |
4901 | 4916 | | |
4902 | 4917 | | |
4903 | | - | |
| 4918 | + | |
4904 | 4919 | | |
4905 | | - | |
| 4920 | + | |
4906 | 4921 | | |
4907 | 4922 | | |
4908 | 4923 | | |
4909 | 4924 | | |
4910 | 4925 | | |
4911 | 4926 | | |
4912 | | - | |
| 4927 | + | |
4913 | 4928 | | |
4914 | 4929 | | |
4915 | 4930 | | |
| |||
4947 | 4962 | | |
4948 | 4963 | | |
4949 | 4964 | | |
4950 | | - | |
4951 | | - | |
| 4965 | + | |
| 4966 | + | |
4952 | 4967 | | |
4953 | 4968 | | |
4954 | 4969 | | |
| |||
4971 | 4986 | | |
4972 | 4987 | | |
4973 | 4988 | | |
4974 | | - | |
| 4989 | + | |
4975 | 4990 | | |
4976 | 4991 | | |
4977 | 4992 | | |
| |||
5084 | 5099 | | |
5085 | 5100 | | |
5086 | 5101 | | |
5087 | | - | |
| 5102 | + | |
5088 | 5103 | | |
5089 | 5104 | | |
5090 | 5105 | | |
| |||
5128 | 5143 | | |
5129 | 5144 | | |
5130 | 5145 | | |
5131 | | - | |
| 5146 | + | |
| 5147 | + | |
| 5148 | + | |
5132 | 5149 | | |
5133 | 5150 | | |
5134 | 5151 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4461 | 4461 | | |
4462 | 4462 | | |
4463 | 4463 | | |
4464 | | - | |
| 4464 | + | |
| 4465 | + | |
4465 | 4466 | | |
4466 | 4467 | | |
4467 | 4468 | | |
| |||
4558 | 4559 | | |
4559 | 4560 | | |
4560 | 4561 | | |
| 4562 | + | |
| 4563 | + | |
4561 | 4564 | | |
4562 | 4565 | | |
4563 | 4566 | | |
| |||
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 | | |
| |||
Lines changed: 71 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
19 | 89 | | |
20 | 90 | | |
21 | 91 | | |
| |||
0 commit comments