Skip to content

Commit c6a69d9

Browse files
committed
[flang][AIX] Predefine __64BIT__ and _AIX macros
1 parent e25ddf9 commit c6a69d9

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
@@ -1612,13 +1612,10 @@ void CompilerInvocation::setDefaultPredefinitions() {
16121612
}
16131613

16141614
llvm::Triple targetTriple{llvm::Triple(this->targetOpts.triple)};
1615-
if (targetTriple.isPPC()) {
1616-
// '__powerpc__' is a generic macro for any PowerPC cases. e.g. Max integer
1617-
// size.
1618-
fortranOptions.predefinitions.emplace_back("__powerpc__", "1");
1619-
}
16201615
if (targetTriple.isOSLinux()) {
16211616
fortranOptions.predefinitions.emplace_back("__linux__", "1");
1617+
} else if (targetTriple.isOSAIX()) {
1618+
fortranOptions.predefinitions.emplace_back("_AIX", "1");
16221619
}
16231620

16241621
switch (targetTriple.getArch()) {
@@ -1628,6 +1625,16 @@ void CompilerInvocation::setDefaultPredefinitions() {
16281625
fortranOptions.predefinitions.emplace_back("__x86_64__", "1");
16291626
fortranOptions.predefinitions.emplace_back("__x86_64", "1");
16301627
break;
1628+
case llvm::Triple::ArchType::ppc:
1629+
case llvm::Triple::ArchType::ppc64:
1630+
case llvm::Triple::ArchType::ppcle:
1631+
case llvm::Triple::ArchType::ppc64le:
1632+
// '__powerpc__' is a generic macro for any PowerPC.
1633+
fortranOptions.predefinitions.emplace_back("__powerpc__", "1");
1634+
if (targetTriple.isOSAIX() && targetTriple.isArch64Bit()) {
1635+
fortranOptions.predefinitions.emplace_back("__64BIT__", "1");
1636+
}
1637+
break;
16311638
}
16321639
}
16331640

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)