diff options
author | Kelvin Li <kkwli@users.noreply.github.com> | 2024-08-06 18:23:05 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-06 18:23:05 -0400 |
commit | ce2a3d9042c95630f12b790bf201c4daf8941afb (patch) | |
tree | 89caa9e2b163bc97ae8a117698178d734a275649 /llvm/lib/CodeGen/PrologEpilogInserter.cpp | |
parent | e7efa323be30dcb604847159817f6c67c657f1a5 (diff) | |
download | llvm-ce2a3d9042c95630f12b790bf201c4daf8941afb.zip llvm-ce2a3d9042c95630f12b790bf201c4daf8941afb.tar.gz llvm-ce2a3d9042c95630f12b790bf201c4daf8941afb.tar.bz2 |
[flang] Match the type of the element size in the box in getValueFromBox (#100512)
Currently, `%17 = fir.box_elesize %16 :
(!fir.class<!fir.ptr<!fir.type<_QFTt{a:i32,b:i32}>>>) -> i32`
is translated to
```
%4 = getelementptr { ptr, i64, i32, i8, i8, i8, i8, ptr, [1 x i64] }, ptr %1, i32 0, i32 1
%5 = load i32, ptr %4, align 4
```
The type of the element size is `i64`. The load essentially truncates
the value and yields incorrect result in the big endian environment. The
problem occurs in the `storage_size` intrinsic on a polymorphic
variable.
Diffstat (limited to 'llvm/lib/CodeGen/PrologEpilogInserter.cpp')
0 files changed, 0 insertions, 0 deletions