Index: clang/lib/Basic/Targets/PPC.h =================================================================== --- clang/lib/Basic/Targets/PPC.h +++ clang/lib/Basic/Targets/PPC.h @@ -370,7 +370,6 @@ SizeType = UnsignedLong; PtrDiffType = SignedLong; IntPtrType = SignedLong; - SuitableAlign = 64; LongDoubleWidth = 64; LongDoubleAlign = DoubleAlign = 32; LongDoubleFormat = &llvm::APFloat::IEEEdouble(); @@ -409,7 +408,6 @@ 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(); Index: clang/test/CodeGen/aix_alloca_align.c =================================================================== --- /dev/null +++ clang/test/CodeGen/aix_alloca_align.c @@ -0,0 +1,15 @@ +// 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 long unsigned int size_t; +extern void *alloca(size_t __size) __attribute__((__nothrow__)); + +void foo() { + char *ptr1 = (char *)alloca(sizeof(char) * 9); +} + +// 32BIT: %0 = alloca i8, i32 9, align 16 +// 64BIT: %0 = alloca i8, i64 9, align 16