Skip to content

Commit 9a2d602

Browse files
authored
[flang][AIX] Predefine __64BIT__ and _AIX macros (#138591)
1 parent db38cc2 commit 9a2d602

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

flang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1615,13 +1615,10 @@ void CompilerInvocation::setDefaultPredefinitions() {
16151615
}
16161616

16171617
llvm::Triple targetTriple{llvm::Triple(this->targetOpts.triple)};
1618-
if (targetTriple.isPPC()) {
1619-
// '__powerpc__' is a generic macro for any PowerPC cases. e.g. Max integer
1620-
// size.
1621-
fortranOptions.predefinitions.emplace_back("__powerpc__", "1");
1622-
}
16231618
if (targetTriple.isOSLinux()) {
16241619
fortranOptions.predefinitions.emplace_back("__linux__", "1");
1620+
} else if (targetTriple.isOSAIX()) {
1621+
fortranOptions.predefinitions.emplace_back("_AIX", "1");
16251622
}
16261623

16271624
switch (targetTriple.getArch()) {
@@ -1631,6 +1628,16 @@ void CompilerInvocation::setDefaultPredefinitions() {
16311628
fortranOptions.predefinitions.emplace_back("__x86_64__", "1");
16321629
fortranOptions.predefinitions.emplace_back("__x86_64", "1");
16331630
break;
1631+
case llvm::Triple::ArchType::ppc:
1632+
case llvm::Triple::ArchType::ppc64:
1633+
case llvm::Triple::ArchType::ppcle:
1634+
case llvm::Triple::ArchType::ppc64le:
1635+
// '__powerpc__' is a generic macro for any PowerPC.
1636+
fortranOptions.predefinitions.emplace_back("__powerpc__", "1");
1637+
if (targetTriple.isOSAIX() && targetTriple.isArch64Bit()) {
1638+
fortranOptions.predefinitions.emplace_back("__64BIT__", "1");
1639+
}
1640+
break;
16341641
}
16351642
}
16361643

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
11
! Test predefined macro for PowerPC architecture
22

3-
! RUN: %flang_fc1 -triple ppc64le-unknown-linux -cpp -E %s | FileCheck %s
3+
! RUN: %flang_fc1 -triple ppc64le-unknown-linux -cpp -E %s | FileCheck %s -check-prefix=CHECK-LINUX
4+
! RUN: %flang_fc1 -triple powerpc-unknown-aix -cpp -E %s | FileCheck %s -check-prefix=CHECK-AIX32
5+
! RUN: %flang_fc1 -triple powerpc64-unknown-aix -cpp -E %s | FileCheck %s -check-prefix=CHECK-AIX64
46
! REQUIRES: target=powerpc{{.*}}
57

6-
! CHECK: integer :: var1 = 1
7-
! CHECK: integer :: var2 = 1
8+
! CHECK-LINUX: integer :: var1 = 1
9+
! CHECK-LINUX: integer :: var2 = 1
10+
! CHECK-AIX32: integer :: var1 = 1
11+
! CHECK-AIX32: integer :: var2 = 1
12+
! CHECK-AIX32: integer :: var3 = __64BIT__
13+
! CHECK-AIX64: integer :: var1 = 1
14+
! CHECK-AIX64: integer :: var2 = 1
15+
! CHECK-AIX64: integer :: var3 = 1
816

917
#if defined(__linux__) && defined(__powerpc__)
1018
integer :: var1 = __powerpc__
1119
integer :: var2 = __linux__
20+
#elif defined(_AIX) && defined(__powerpc__)
21+
integer :: var1 = __powerpc__
22+
integer :: var2 = _AIX
23+
integer :: var3 = __64BIT__
1224
#endif
1325
end program

0 commit comments

Comments
 (0)