[PATCH] D89910: [AIX] Let alloca return 16 bytes alignment
This revision was automatically updated to reflect the committed changes. Closed by commit rG05bef88eb3ec: [AIX] Let alloca return 16 bytes alignment (authored by Xiangling_L). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D89910/new/ https://reviews.llvm.org/D89910 Files: clang/lib/Basic/Targets/PPC.h clang/test/CodeGen/aix_alloca_align.c clang/test/Preprocessor/init-ppc.c clang/test/Preprocessor/init-ppc64.c Index: clang/test/Preprocessor/init-ppc64.c === --- clang/test/Preprocessor/init-ppc64.c +++ 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 Index: clang/test/Preprocessor/init-ppc.c === --- clang/test/Preprocessor/init-ppc.c +++ 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 Index: clang/test/CodeGen/aix_alloca_align.c === --- /dev/null +++ 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 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 = ::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 = ::APFloat::IEEEdouble(); Index: clang/test/Preprocessor/init-ppc64.c === --- clang/test/Preprocessor/init-ppc64.c +++ 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 Index: clang/test/Preprocessor/init-ppc.c === --- clang/test/Preprocessor/init-ppc.c +++ 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 Index: clang/test/CodeGen/aix_alloca_align.c === --- /dev/null +++ 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:
[PATCH] D89910: [AIX] Let alloca return 16 bytes alignment
hubert.reinterpretcast accepted this revision. hubert.reinterpretcast added a comment. This revision is now accepted and ready to land. LGTM; thanks! CHANGES SINCE LAST ACTION https://reviews.llvm.org/D89910/new/ https://reviews.llvm.org/D89910 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D89910: [AIX] Let alloca return 16 bytes alignment
Xiangling_L updated this revision to Diff 300043. Xiangling_L marked an inline comment as done. Xiangling_L added a comment. Add one case to the test; CHANGES SINCE LAST ACTION https://reviews.llvm.org/D89910/new/ https://reviews.llvm.org/D89910 Files: clang/lib/Basic/Targets/PPC.h clang/test/CodeGen/aix_alloca_align.c clang/test/Preprocessor/init-ppc.c clang/test/Preprocessor/init-ppc64.c Index: clang/test/Preprocessor/init-ppc64.c === --- clang/test/Preprocessor/init-ppc64.c +++ 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 Index: clang/test/Preprocessor/init-ppc.c === --- clang/test/Preprocessor/init-ppc.c +++ 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 Index: clang/test/CodeGen/aix_alloca_align.c === --- /dev/null +++ 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 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 = ::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 = ::APFloat::IEEEdouble(); Index: clang/test/Preprocessor/init-ppc64.c === --- clang/test/Preprocessor/init-ppc64.c +++ 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 Index: clang/test/Preprocessor/init-ppc.c === --- clang/test/Preprocessor/init-ppc.c +++ 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 Index: clang/test/CodeGen/aix_alloca_align.c === --- /dev/null +++ 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 Index:
[PATCH] D89910: [AIX] Let alloca return 16 bytes alignment
Xiangling_L marked an inline comment as done. Xiangling_L added inline comments. Comment at: clang/test/CodeGen/aix_alloca_align.c:11 +void foo() { + char *ptr1 = (char *)alloca(sizeof(char) * 9); +} hubert.reinterpretcast wrote: > I'm not entirely sure, but can we try for size 32 and see if we get 16? Sure, I will add this in. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D89910/new/ https://reviews.llvm.org/D89910 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D89910: [AIX] Let alloca return 16 bytes alignment
hubert.reinterpretcast added inline comments. Comment at: clang/test/CodeGen/aix_alloca_align.c:11 +void foo() { + char *ptr1 = (char *)alloca(sizeof(char) * 9); +} I'm not entirely sure, but can we try for size 32 and see if we get 16? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D89910/new/ https://reviews.llvm.org/D89910 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D89910: [AIX] Let alloca return 16 bytes alignment
Xiangling_L updated this revision to Diff 299975. Xiangling_L marked 3 inline comments as done. Xiangling_L added a comment. Fixed the testcase formatting issues; Fixed the `BIGGEST_ALIGNMENT` value in testcases; CHANGES SINCE LAST ACTION https://reviews.llvm.org/D89910/new/ https://reviews.llvm.org/D89910 Files: clang/lib/Basic/Targets/PPC.h clang/test/CodeGen/aix_alloca_align.c clang/test/Preprocessor/init-ppc.c clang/test/Preprocessor/init-ppc64.c Index: clang/test/Preprocessor/init-ppc64.c === --- clang/test/Preprocessor/init-ppc64.c +++ 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 Index: clang/test/Preprocessor/init-ppc.c === --- clang/test/Preprocessor/init-ppc.c +++ 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 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 __SIZE_TYPE__ 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 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 = ::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 = ::APFloat::IEEEdouble(); Index: clang/test/Preprocessor/init-ppc64.c === --- clang/test/Preprocessor/init-ppc64.c +++ 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 Index: clang/test/Preprocessor/init-ppc.c === --- clang/test/Preprocessor/init-ppc.c +++ 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 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 __SIZE_TYPE__ 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 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 =
[PATCH] D89910: [AIX] Let alloca return 16 bytes alignment
hubert.reinterpretcast added inline comments. Comment at: clang/test/CodeGen/aix_alloca_align.c:2 +// RUN: %clang_cc1 -triple=powerpc-ibm-aix-xcoff -S -emit-llvm < %s | \ +// RUN: FileCheck -check-prefix 32BIT %s + Minor nit: Use double-hyphen for long option and `=` instead of space between the option and the argument. Comment at: clang/test/CodeGen/aix_alloca_align.c:5 +// RUN: %clang_cc1 -triple=powerpc64-ibm-aix-xcoff -S -emit-llvm < %s | \ +// RUN: FileCheck -check-prefix 64BIT %s + Same comment. Comment at: clang/test/CodeGen/aix_alloca_align.c:7 + +typedef long unsigned int size_t; +extern void *alloca(size_t __size) __attribute__((__nothrow__)); Minor comment: Use `__SIZE_TYPE__`. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D89910/new/ https://reviews.llvm.org/D89910 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D89910: [AIX] Let alloca return 16 bytes alignment
Xiangling_L created this revision. Xiangling_L added reviewers: hubert.reinterpretcast, jasonliu, ZarkoCA. Herald added subscribers: cfe-commits, dexonsmith, kbarton, nemanjai. Herald added a project: clang. Xiangling_L requested review of this revision. On AIX, to support vector types, which should always be 16bytes aligned, we set `alloca` to return 16 bytes aligned memory space. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D89910 Files: clang/lib/Basic/Targets/PPC.h clang/test/CodeGen/aix_alloca_align.c 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 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 = ::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 = ::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 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 = ::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 = ::APFloat::IEEEdouble(); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits