[PATCH] D124654: [AIX] Handling the label alignment of a global variable with its multiple aliases.
Esme Yi via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 29 21:30:30 PDT 2022
Esme added inline comments.
================
Comment at: llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp:3262
if (const ConstantArray *CVA = dyn_cast<ConstantArray>(CV))
- return emitGlobalConstantArray(DL, CVA, AP, BaseCV, Offset);
+ return emitGlobalConstantArray(DL, CVA, AP, BaseCV, Offset, AliasList);
----------------
shchenz wrote:
> No idea why my comments here is lost in my last post. I will re-post it.
>
> I tested some array and vector cases, I think current patch may not be able to handle them well on AIX. Could you please verify? As you are also handling array here, so do we plan to fix them all? Or we just want to fix `ConstantStruct` type?
>
> case 1: vector type, `ConstantDataSequential`
> ```
> @_MergedGlobals = global <2 x i64> <i64 12, i64 34>, align 4
> @var1 = alias i64, getelementptr inbounds (<2 x i64>, <2 x i64>* @_MergedGlobals, i32 0, i32 1)
>
> define void @foo(i64 %a1) {
> store i64 %a1, i64* getelementptr inbounds (<2 x i64>, <2 x i64>* @_MergedGlobals, i32 0, i32 1), align 4
> ret void
> }
> ```
>
> case 2: array type, `ConstantDataSequential`:
> ```
> @_MergedGlobals = global [2 x i64] [i64 12, i64 34], align 4
> @var1 = alias i64, getelementptr inbounds ([2 x i64], [2 x i64]* @_MergedGlobals, i32 0, i32 1)
>
> define void @foo(i64 %a1) {
> store i64 %a1, i64* getelementptr inbounds ([2 x i64], [2 x i64]* @_MergedGlobals, i32 0, i32 1), align 4
> ret void
> }
> ```
>
> case 3: array type, `ConstantArray`:
> ```
> %struct.B = type { i64 }
> @_MergedGlobals = global [2 x %struct.B] [%struct.B {i64 12}, %struct.B {i64 34}], align 4
> @var1 = alias %struct.B, getelementptr inbounds ([2 x %struct.B], [2 x %struct.B]* @_MergedGlobals, i32 0, i32 0)
>
> define void @foo(%struct.B %a1) {
> store %struct.B %a1, %struct.B* getelementptr inbounds ([2 x %struct.B], [2 x %struct.B]* @_MergedGlobals, i32 0, i32 1), align 4
> ret void
> }
> ```
Thanks for pointing this out!
I have added support for these types in the new revision.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D124654/new/
https://reviews.llvm.org/D124654
More information about the llvm-commits
mailing list