diff options
| author | Hubert Tong <hubert.reinterpretcast@gmail.com> | 2019-02-13 20:17:13 +0000 |
|---|---|---|
| committer | Hubert Tong <hubert.reinterpretcast@gmail.com> | 2019-02-13 20:17:13 +0000 |
| commit | 45195c873bc9fb97e7860167d030f58a93c21f39 (patch) | |
| tree | 7031e70085f141e1d307e988b32b555ce07514e8 /clang | |
| parent | fa533f21523485f8e6f7d21a552fa5ca1128d46d (diff) | |
| download | bcm5719-llvm-45195c873bc9fb97e7860167d030f58a93c21f39.tar.gz bcm5719-llvm-45195c873bc9fb97e7860167d030f58a93c21f39.zip | |
[PowerPC] Stop defining _ARCH_PWR6X on POWER7 and up
Summary:
The predefined macro `_ARCH_PWR6X` is associated with GCC's
`-mcpu=power6x` option, which enables generation of P6 "raw mode"
instructions such as `mftgpr`.
Later POWER processors build upon the "architected mode", not the raw
one. `_ARCH_PWR6X` should not be defined for these later processors.
Fixes PR#40236.
Reviewers: echristo, hfinkel, kbarton, nemanjai, wschmidt
Reviewed By: hfinkel
Subscribers: jsji, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D58128
llvm-svn: 353975
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Basic/Targets/PPC.h | 19 | ||||
| -rw-r--r-- | clang/test/Preprocessor/init.c | 14 |
2 files changed, 16 insertions, 17 deletions
diff --git a/clang/lib/Basic/Targets/PPC.h b/clang/lib/Basic/Targets/PPC.h index b168439c120..ecfc1bc1d4a 100644 --- a/clang/lib/Basic/Targets/PPC.h +++ b/clang/lib/Basic/Targets/PPC.h @@ -131,19 +131,18 @@ public: ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq) .Cases("power7", "pwr7", - ArchDefinePwr7 | ArchDefinePwr6x | ArchDefinePwr6 | - ArchDefinePwr5x | ArchDefinePwr5 | ArchDefinePwr4 | - ArchDefinePpcgr | ArchDefinePpcsq) + ArchDefinePwr7 | ArchDefinePwr6 | ArchDefinePwr5x | + ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr | + ArchDefinePpcsq) // powerpc64le automatically defaults to at least power8. .Cases("power8", "pwr8", "ppc64le", - ArchDefinePwr8 | ArchDefinePwr7 | ArchDefinePwr6x | - ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 | - ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq) + ArchDefinePwr8 | ArchDefinePwr7 | ArchDefinePwr6 | + ArchDefinePwr5x | ArchDefinePwr5 | ArchDefinePwr4 | + ArchDefinePpcgr | ArchDefinePpcsq) .Cases("power9", "pwr9", - ArchDefinePwr9 | ArchDefinePwr8 | ArchDefinePwr7 | - ArchDefinePwr6x | ArchDefinePwr6 | ArchDefinePwr5x | - ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr | - ArchDefinePpcsq) + ArchDefinePwr9 | ArchDefinePwr8 | ArchDefinePwr7 | + ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 | + ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq) .Default(ArchDefineNone); } return CPUKnown; diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index 366dc96aa51..16bfc3ac651 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -5991,7 +5991,7 @@ // PPC64LE:#define _ARCH_PWR5 1 // PPC64LE:#define _ARCH_PWR5X 1 // PPC64LE:#define _ARCH_PWR6 1 -// PPC64LE:#define _ARCH_PWR6X 1 +// PPC64LE-NOT:#define _ARCH_PWR6X 1 // PPC64LE:#define _ARCH_PWR7 1 // PPC64LE:#define _CALL_ELF 2 // PPC64LE:#define _LITTLE_ENDIAN 1 @@ -6331,7 +6331,7 @@ // PPCPWR7:#define _ARCH_PWR5 1 // PPCPWR7:#define _ARCH_PWR5X 1 // PPCPWR7:#define _ARCH_PWR6 1 -// PPCPWR7:#define _ARCH_PWR6X 1 +// PPCPWR7-NOT:#define _ARCH_PWR6X 1 // PPCPWR7:#define _ARCH_PWR7 1 // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power7 -fno-signed-char < /dev/null | FileCheck -match-full-lines -check-prefix PPCPOWER7 %s @@ -6344,7 +6344,7 @@ // PPCPOWER7:#define _ARCH_PWR5 1 // PPCPOWER7:#define _ARCH_PWR5X 1 // PPCPOWER7:#define _ARCH_PWR6 1 -// PPCPOWER7:#define _ARCH_PWR6X 1 +// PPCPOWER7-NOT:#define _ARCH_PWR6X 1 // PPCPOWER7:#define _ARCH_PWR7 1 // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr8 -fno-signed-char < /dev/null | FileCheck -match-full-lines -check-prefix PPCPWR8 %s @@ -6357,7 +6357,7 @@ // PPCPWR8:#define _ARCH_PWR5 1 // PPCPWR8:#define _ARCH_PWR5X 1 // PPCPWR8:#define _ARCH_PWR6 1 -// PPCPWR8:#define _ARCH_PWR6X 1 +// PPCPWR8-NOT:#define _ARCH_PWR6X 1 // PPCPWR8:#define _ARCH_PWR7 1 // PPCPWR8:#define _ARCH_PWR8 1 // @@ -6374,7 +6374,7 @@ // PPCPOWER8:#define _ARCH_PWR5 1 // PPCPOWER8:#define _ARCH_PWR5X 1 // PPCPOWER8:#define _ARCH_PWR6 1 -// PPCPOWER8:#define _ARCH_PWR6X 1 +// PPCPOWER8-NOT:#define _ARCH_PWR6X 1 // PPCPOWER8:#define _ARCH_PWR7 1 // PPCPOWER8:#define _ARCH_PWR8 1 // @@ -6388,7 +6388,7 @@ // PPCPWR9:#define _ARCH_PWR5 1 // PPCPWR9:#define _ARCH_PWR5X 1 // PPCPWR9:#define _ARCH_PWR6 1 -// PPCPWR9:#define _ARCH_PWR6X 1 +// PPCPWR9-NOT:#define _ARCH_PWR6X 1 // PPCPWR9:#define _ARCH_PWR7 1 // PPCPWR9:#define _ARCH_PWR9 1 // @@ -6402,7 +6402,7 @@ // PPCPOWER9:#define _ARCH_PWR5 1 // PPCPOWER9:#define _ARCH_PWR5X 1 // PPCPOWER9:#define _ARCH_PWR6 1 -// PPCPOWER9:#define _ARCH_PWR6X 1 +// PPCPOWER9-NOT:#define _ARCH_PWR6X 1 // PPCPOWER9:#define _ARCH_PWR7 1 // PPCPOWER9:#define _ARCH_PWR9 1 // |

