| Issue |
55522
|
| Summary |
Regression: huge .rodata section generated because of constant vector of bool.
|
| Labels |
new issue
|
| Assignees |
|
| Reporter |
gwenzek
|
Given the simple .ll file `@0 = internal constant <4 x i1> <i1 true, i1 false, i1 true, i1 false>`,
LLVM 14 will generate an object file with 4Gb of rodata
```
$ rm reduced.o ; cat reduced.ll && ~/Downloads/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/llc --filetype=obj reduced.ll && size -A reduced.o
@0 = internal constant <4 x i1> <i1 true, i1 false, i1 true, i1 false>
reduced.o :
section size addr
.text 0 0
.rodata 4294967297 0
.note.GNU-stack 0 0
Total 4294967297
```
If I try with vector of i8, I correctly obtain 4 bytes of rodata.
```
$ rm reduced.o ; cat reduced.ll && ~/Downloads/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/llc --filetype=obj reduced.ll && size -A reduced.o
@0 = internal constant <4 x i8> <i8 1, i8 0, i8 1, i8 0>
reduced.o :
section size addr
.text 0 0
.rodata 4 0
.note.GNU-stack 0 0
Total 4
```
Vectors of i2, and i4 also generate the same issue.
This seems to be a regression from LLVM 13 where this was working fine (I believe the warning is just because my .ll is too dry).
```
rm reduced.o ; cat reduced.ll && ~/Downloads/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04/bin/llc --filetype=obj reduced.ll && size -A reduced.o
@0 = internal constant <4 x i1> <i1 true, i1 false, i1 true, i1 false>
~Downloads/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04/bin/llc: /lib64/libtinfo.so.5: no version information available (required by ~/Downloads/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04/bin/llc)
reduced.o :
section size addr
.text 0 0
.rodata 4 0
.note.GNU-stack 0 0
Total 4
```
I've tried searching for similar issue but without success.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs