File tree Expand file tree Collapse file tree 3 files changed +30
-8
lines changed Expand file tree Collapse file tree 3 files changed +30
-8
lines changed Original file line number Diff line number Diff line change @@ -1333,21 +1333,22 @@ void CompilerInvocation::setDefaultPredefinitions() {
1333
1333
}
1334
1334
1335
1335
llvm::Triple targetTriple{llvm::Triple (this ->targetOpts .triple )};
1336
+ if (targetTriple.isPPC ()) {
1337
+ // '__powerpc__' is a generic macro for any PowerPC cases. e.g. Max integer
1338
+ // size.
1339
+ fortranOptions.predefinitions .emplace_back (" __powerpc__" , " 1" );
1340
+ }
1341
+ if (targetTriple.isOSLinux ()) {
1342
+ fortranOptions.predefinitions .emplace_back (" __linux__" , " 1" );
1343
+ }
1344
+
1336
1345
switch (targetTriple.getArch ()) {
1337
1346
default :
1338
1347
break ;
1339
1348
case llvm::Triple::ArchType::x86_64:
1340
1349
fortranOptions.predefinitions .emplace_back (" __x86_64__" , " 1" );
1341
1350
fortranOptions.predefinitions .emplace_back (" __x86_64" , " 1" );
1342
1351
break ;
1343
- case llvm::Triple::ArchType::ppc:
1344
- case llvm::Triple::ArchType::ppcle:
1345
- case llvm::Triple::ArchType::ppc64:
1346
- case llvm::Triple::ArchType::ppc64le:
1347
- // '__powerpc__' is a generic macro for any PowerPC cases. e.g. Max integer
1348
- // size.
1349
- fortranOptions.predefinitions .emplace_back (" __powerpc__" , " 1" );
1350
- break ;
1351
1352
}
1352
1353
}
1353
1354
Original file line number Diff line number Diff line change @@ -58,9 +58,17 @@ module iso_c_binding
58
58
c_int_least8_t = c_int8_t, &
59
59
c_int_fast8_t = c_int8_t, &
60
60
c_int_least16_t = c_int16_t, &
61
+ #if defined(__linux__) && defined(__powerpc__)
62
+ c_int_fast16_t = c_long, &
63
+ #else
61
64
c_int_fast16_t = c_int16_t, &
65
+ #endif
62
66
c_int_least32_t = c_int32_t, &
67
+ #if defined(__linux__) && defined(__powerpc__)
68
+ c_int_fast32_t = c_long, &
69
+ #else
63
70
c_int_fast32_t = c_int32_t, &
71
+ #endif
64
72
c_int_least64_t = c_int64_t, &
65
73
c_int_fast64_t = c_int64_t, &
66
74
c_int_least128_t = c_int128_t, &
Original file line number Diff line number Diff line change
1
+ ! Test predefined macro for PowerPC architecture
2
+
3
+ ! RUN: %flang_fc1 -triple ppc64le-unknown-linux -cpp -E %s | FileCheck %s
4
+ ! REQUIRES: target=powerpc{{.*}}
5
+
6
+ ! CHECK: integer :: var1 = 1
7
+ ! CHECK: integer :: var2 = 1
8
+
9
+ #if defined(__linux__) && defined(__powerpc__)
10
+ integer :: var1 = __powerpc__
11
+ integer :: var2 = __linux__
12
+ #endif
13
+ end program
You can’t perform that action at this time.
0 commit comments