[PATCH] D63131: arm64_32: implement the desired ABI for the ILP32 triple.

Tim Northover via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 12 07:04:11 PST 2019


t.p.northover marked 6 inline comments as done.
t.p.northover added a comment.

Thanks, I've updated for most of the suggestions and committed it. I'll make the AArch64 naming changes separately if we decide to.



================
Comment at: clang/lib/Basic/Targets/AArch64.cpp:167
   // Target properties.
-  if (!getTriple().isOSWindows()) {
+  if (!getTriple().isOSWindows() && getTriple().isArch64Bit()) {
     Builder.defineMacro("_LP64");
----------------
jfb wrote:
> This might affect odd non-Darwin targets? Seems unlikely, but just asking since we have existence proof with Windows that stuff is weird. Admittedly they're untested if it affects them, so I think this is fine.
isArch64Bit is taken directly from Triple::aarch64/Triple::aarch64_32, so I think someone would have to be intentionally bringing up an aarch64_32 platform to be affected, in which case they probably want to be.


================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:5457
       // for AArch64, emit a warning and ignore the flag. Otherwise, add the
       // proper mllvm flags.
+      if (Triple.getArch() != llvm::Triple::aarch64 &&
----------------
jfb wrote:
> The comment isn't quite right anymore. Maybe don't say `AArch64` since the code is obvious about what it checks?
AArch64 is the official name of the 64-bit execution mode of ARM processors so I think it's still correct to say aarch64_32 is AArch64. Or were you referring to some other aspect of the comment?


================
Comment at: clang/lib/Sema/SemaChecking.cpp:5512
+  bool IsAArch64 = (TT.getArch() == llvm::Triple::aarch64 ||
+                    TT.getArch() == llvm::Triple::aarch64_32);
   bool IsWindows = TT.isOSWindows();
----------------
jfb wrote:
> This is now a weird variable name, since it's aarch64 maybe 32 but not be. Could you rename `IsAArch64`?
I think the same point about the comment above applies here. The Triple is the odd thing out here in distinguishing the two.


================
Comment at: clang/test/CodeGen/builtins-arm64.c:11
 
+#if __LP64__
 void *tp (void) {
----------------
jfb wrote:
> Why isn't this one supported?
It was an iOS version check, I've updated the triple instead.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63131/new/

https://reviews.llvm.org/D63131





More information about the cfe-commits mailing list