mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 10:46:06 +00:00

SystemZ prefers to align all global variables to two bytes, which is implemented by setting the TargetInfo member MinGlobalAlign. However, for compatibility with existing compilers this should *not* change the ABI alignment value as retrieved via __alignof__, which it currently does. This patch fixes the issue by having ASTContext::getDeclAlign ignore the MinGlobalAlign setting in the ForAlignof case. Since SystemZ is the only platform setting MinGlobalAlign, this should cause no change for any other target. llvm-svn: 235395
18 lines
392 B
C
18 lines
392 B
C
// RUN: %clang_cc1 -triple s390x-linux-gnu -fsyntax-only -verify %s
|
|
// expected-no-diagnostics
|
|
|
|
// SystemZ prefers to align all global variables to two bytes,
|
|
// but this should *not* be reflected in the ABI alignment as
|
|
// retrieved via __alignof__.
|
|
|
|
struct test {
|
|
signed char a;
|
|
};
|
|
|
|
char c;
|
|
struct test s;
|
|
|
|
int chk1[__alignof__(c) == 1 ? 1 : -1];
|
|
int chk2[__alignof__(s) == 1 ? 1 : -1];
|
|
|