Skip to content

Commit 230558e

Browse files
committed
[Clang][M68k] Use DefineStd for target-specific macros
Use `DefineStd` for target-specific macros such that GNU-style definitions can be correctly toggled. Differential Revision: https://reviews.llvm.org/D158698
1 parent 890f11d commit 230558e

File tree

2 files changed

+29
-35
lines changed

2 files changed

+29
-35
lines changed

clang/lib/Basic/Targets/M68k.cpp

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -80,36 +80,24 @@ void M68kTargetInfo::getTargetDefines(const LangOptions &Opts,
8080

8181
Builder.defineMacro("__m68k__");
8282

83-
Builder.defineMacro("mc68000");
84-
Builder.defineMacro("__mc68000");
85-
Builder.defineMacro("__mc68000__");
83+
DefineStd(Builder, "mc68000", Opts);
8684

8785
// For sub-architecture
8886
switch (CPU) {
8987
case CK_68010:
90-
Builder.defineMacro("mc68010");
91-
Builder.defineMacro("__mc68010");
92-
Builder.defineMacro("__mc68010__");
88+
DefineStd(Builder, "mc68010", Opts);
9389
break;
9490
case CK_68020:
95-
Builder.defineMacro("mc68020");
96-
Builder.defineMacro("__mc68020");
97-
Builder.defineMacro("__mc68020__");
91+
DefineStd(Builder, "mc68020", Opts);
9892
break;
9993
case CK_68030:
100-
Builder.defineMacro("mc68030");
101-
Builder.defineMacro("__mc68030");
102-
Builder.defineMacro("__mc68030__");
94+
DefineStd(Builder, "mc68030", Opts);
10395
break;
10496
case CK_68040:
105-
Builder.defineMacro("mc68040");
106-
Builder.defineMacro("__mc68040");
107-
Builder.defineMacro("__mc68040__");
97+
DefineStd(Builder, "mc68040", Opts);
10898
break;
10999
case CK_68060:
110-
Builder.defineMacro("mc68060");
111-
Builder.defineMacro("__mc68060");
112-
Builder.defineMacro("__mc68060__");
100+
DefineStd(Builder, "mc68060", Opts);
113101
break;
114102
default:
115103
break;

clang/test/Driver/m68k-macros.cpp

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,61 @@
44
// CHECK-MX881: #define __HAVE_68881__ 1
55
// CHECK-NOMX881-NOT: #define __HAVE_68881__ 1
66

7-
// RUN: %clang -target m68k-unknown-linux -m68000 -dM -E %s | FileCheck --check-prefixes=CHECK-MX,CHECK-NOMX881 %s
7+
// RUN: %clang -target m68k-unknown-linux -m68000 -std=c++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX,CHECK-NOMX881 %s
8+
// RUN: %clang -target m68k-unknown-linux -m68000 -std=gnu++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX,CHECK-MX-GNU,CHECK-NOMX881 %s
89
// RUN: %clang -target m68k-unknown-linux -m68000 -mhard-float -dM -E %s | FileCheck --check-prefix=CHECK-MX881 %s
910
// RUN: %clang -target m68k-unknown-linux -m68000 -m68881 -dM -E %s | FileCheck --check-prefix=CHECK-MX881 %s
1011
// CHECK-MX: #define __mc68000 1
1112
// CHECK-MX: #define __mc68000__ 1
12-
// CHECK-MX: #define mc68000 1
13+
// CHECK-MX-GNU: #define mc68000 1
1314

14-
// RUN: %clang -target m68k-unknown-linux -m68010 -dM -E %s | FileCheck --check-prefixes=CHECK-MX10,CHECK-NOMX881 %s
15+
// RUN: %clang -target m68k-unknown-linux -m68010 -std=c++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX10,CHECK-NOMX881 %s
16+
// RUN: %clang -target m68k-unknown-linux -m68010 -std=gnu++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX10,CHECK-MX10-GNU,CHECK-NOMX881 %s
1517
// RUN: %clang -target m68k-unknown-linux -m68010 -mhard-float -dM -E %s | FileCheck --check-prefix=CHECK-MX881 %s
1618
// RUN: %clang -target m68k-unknown-linux -m68010 -m68881 -dM -E %s | FileCheck --check-prefix=CHECK-MX881 %s
1719
// CHECK-MX10: #define __mc68000 1
1820
// CHECK-MX10: #define __mc68000__ 1
1921
// CHECK-MX10: #define __mc68010 1
2022
// CHECK-MX10: #define __mc68010__ 1
21-
// CHECK-MX10: #define mc68000 1
22-
// CHECK-MX10: #define mc68010 1
23+
// CHECK-MX10-GNU: #define mc68000 1
24+
// CHECK-MX10-GNU: #define mc68010 1
2325

24-
// RUN: %clang -target m68k-unknown-linux -m68020 -dM -E %s | FileCheck --check-prefixes=CHECK-MX20,CHECK-MX881 %s
26+
// RUN: %clang -target m68k-unknown-linux -m68020 -std=c++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX20,CHECK-MX881 %s
27+
// RUN: %clang -target m68k-unknown-linux -m68020 -std=gnu++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX20,CHECK-MX20-GNU,CHECK-MX881 %s
2528
// RUN: %clang -target m68k-unknown-linux -m68020 -msoft-float -dM -E %s | FileCheck --check-prefix=CHECK-NOMX881 %s
2629
// CHECK-MX20: #define __mc68000 1
2730
// CHECK-MX20: #define __mc68000__ 1
2831
// CHECK-MX20: #define __mc68020 1
2932
// CHECK-MX20: #define __mc68020__ 1
30-
// CHECK-MX20: #define mc68000 1
31-
// CHECK-MX20: #define mc68020 1
33+
// CHECK-MX20-GNU: #define mc68000 1
34+
// CHECK-MX20-GNU: #define mc68020 1
3235

33-
// RUN: %clang -target m68k-unknown-linux -m68030 -dM -E %s | FileCheck --check-prefixes=CHECK-MX30,CHECK-MX881 %s
36+
// RUN: %clang -target m68k-unknown-linux -m68030 -std=c++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX30,CHECK-MX881 %s
37+
// RUN: %clang -target m68k-unknown-linux -m68030 -std=gnu++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX30,CHECK-MX30-GNU,CHECK-MX881 %s
3438
// RUN: %clang -target m68k-unknown-linux -m68030 -msoft-float -dM -E %s | FileCheck --check-prefix=CHECK-NOMX881 %s
3539
// CHECK-MX30: #define __mc68000 1
3640
// CHECK-MX30: #define __mc68000__ 1
3741
// CHECK-MX30: #define __mc68030 1
3842
// CHECK-MX30: #define __mc68030__ 1
39-
// CHECK-MX30: #define mc68000 1
40-
// CHECK-MX30: #define mc68030 1
43+
// CHECK-MX30-GNU: #define mc68000 1
44+
// CHECK-MX30-GNU: #define mc68030 1
4145

42-
// RUN: %clang -target m68k-unknown-linux -m68040 -dM -E %s | FileCheck --check-prefixes=CHECK-MX40,CHECK-MX881 %s
46+
// RUN: %clang -target m68k-unknown-linux -m68040 -std=c++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX40,CHECK-MX881 %s
47+
// RUN: %clang -target m68k-unknown-linux -m68040 -std=gnu++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX40,CHECK-MX40-GNU,CHECK-MX881 %s
4348
// RUN: %clang -target m68k-unknown-linux -m68040 -msoft-float -dM -E %s | FileCheck --check-prefix=CHECK-NOMX881 %s
4449
// CHECK-MX40: #define __mc68000 1
4550
// CHECK-MX40: #define __mc68000__ 1
4651
// CHECK-MX40: #define __mc68040 1
4752
// CHECK-MX40: #define __mc68040__ 1
48-
// CHECK-MX40: #define mc68000 1
49-
// CHECK-MX40: #define mc68040 1
53+
// CHECK-MX40-GNU: #define mc68000 1
54+
// CHECK-MX40-GNU: #define mc68040 1
5055

51-
// RUN: %clang -target m68k-unknown-linux -m68060 -dM -E %s | FileCheck --check-prefixes=CHECK-MX60,CHECK-MX881 %s
56+
// RUN: %clang -target m68k-unknown-linux -m68060 -std=c++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX60,CHECK-MX881 %s
57+
// RUN: %clang -target m68k-unknown-linux -m68060 -std=gnu++11 -dM -E %s | FileCheck --check-prefixes=CHECK-MX60,CHECK-MX60-GNU,CHECK-MX881 %s
5258
// RUN: %clang -target m68k-unknown-linux -m68060 -msoft-float -dM -E %s | FileCheck --check-prefix=CHECK-NOMX881 %s
5359
// CHECK-MX60: #define __mc68000 1
5460
// CHECK-MX60: #define __mc68000__ 1
5561
// CHECK-MX60: #define __mc68060 1
5662
// CHECK-MX60: #define __mc68060__ 1
57-
// CHECK-MX60: #define mc68000 1
58-
// CHECK-MX60: #define mc68060 1
63+
// CHECK-MX60-GNU: #define mc68000 1
64+
// CHECK-MX60-GNU: #define mc68060 1

0 commit comments

Comments
 (0)