diff --git a/clang/lib/Basic/Targets/PPC.h b/clang/lib/Basic/Targets/PPC.h index 597508207ffbf..ad754462370f5 100644 --- a/clang/lib/Basic/Targets/PPC.h +++ b/clang/lib/Basic/Targets/PPC.h @@ -370,7 +370,6 @@ class LLVM_LIBRARY_VISIBILITY PPC32TargetInfo : public PPCTargetInfo { SizeType = UnsignedLong; PtrDiffType = SignedLong; IntPtrType = SignedLong; - SuitableAlign = 64; LongDoubleWidth = 64; LongDoubleAlign = DoubleAlign = 32; LongDoubleFormat = &llvm::APFloat::IEEEdouble(); @@ -409,7 +408,6 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public PPCTargetInfo { if (Triple.isOSAIX()) { // TODO: Set appropriate ABI for AIX platform. DataLayout = "E-m:a-i64:64-n32:64"; - SuitableAlign = 64; LongDoubleWidth = 64; LongDoubleAlign = DoubleAlign = 32; LongDoubleFormat = &llvm::APFloat::IEEEdouble(); diff --git a/clang/test/CodeGen/aix_alloca_align.c b/clang/test/CodeGen/aix_alloca_align.c new file mode 100644 index 0000000000000..e235abdd16309 --- /dev/null +++ b/clang/test/CodeGen/aix_alloca_align.c @@ -0,0 +1,19 @@ +// RUN: %clang_cc1 -triple=powerpc-ibm-aix-xcoff -S -emit-llvm < %s | \ +// RUN: FileCheck --check-prefix=32BIT %s + +// RUN: %clang_cc1 -triple=powerpc64-ibm-aix-xcoff -S -emit-llvm < %s | \ +// RUN: FileCheck --check-prefix=64BIT %s + +typedef __SIZE_TYPE__ size_t; +extern void *alloca(size_t __size) __attribute__((__nothrow__)); + +void foo() { + char *ptr1 = (char *)alloca(sizeof(char) * 9); + char *ptr2 = (char *)alloca(sizeof(char) * 32); +} + +// 32BIT: %0 = alloca i8, i32 9, align 16 +// 32BIT: %1 = alloca i8, i32 32, align 16 + +// 64BIT: %0 = alloca i8, i64 9, align 16 +// 64BIT: %1 = alloca i8, i64 32, align 16 diff --git a/clang/test/Preprocessor/init-ppc.c b/clang/test/Preprocessor/init-ppc.c index 275757631c6c6..aa0f8c97de126 100644 --- a/clang/test/Preprocessor/init-ppc.c +++ b/clang/test/Preprocessor/init-ppc.c @@ -398,7 +398,7 @@ // PPC-AIX:#define _LONG_LONG 1 // PPC-AIX-NOT:#define _LP64 1 // PPC-AIX:#define _POWER 1 -// PPC-AIX:#define __BIGGEST_ALIGNMENT__ 8 +// PPC-AIX:#define __BIGGEST_ALIGNMENT__ 16 // PPC-AIX:#define __BIG_ENDIAN__ 1 // PPC-AIX:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__ // PPC-AIX:#define __CHAR16_TYPE__ unsigned short diff --git a/clang/test/Preprocessor/init-ppc64.c b/clang/test/Preprocessor/init-ppc64.c index b553d07183ec3..dd965b86b879f 100644 --- a/clang/test/Preprocessor/init-ppc64.c +++ b/clang/test/Preprocessor/init-ppc64.c @@ -666,7 +666,7 @@ // PPC64-AIX:#define _LP64 1 // PPC64-AIX:#define _POWER 1 // PPC64-AIX:#define __64BIT__ 1 -// PPC64-AIX:#define __BIGGEST_ALIGNMENT__ 8 +// PPC64-AIX:#define __BIGGEST_ALIGNMENT__ 16 // PPC64-AIX:#define __BIG_ENDIAN__ 1 // PPC64-AIX:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__ // PPC64-AIX:#define __CHAR16_TYPE__ unsigned short