[PATCH] D102610: Default stack alignment of x86 NaCl to 16 bytes

Fabian Sommer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon May 17 04:22:28 PDT 2021


fabiansommer created this revision.
Herald added subscribers: pengfei, hiraditya, dschuff.
fabiansommer requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

X86 NaCl generally requires the stack to be aligned to 16 bytes.
This change was already implemented in two downstream NaCl compilers
based on llvm.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D102610

Files:
  llvm/lib/Target/X86/X86Subtarget.cpp
  llvm/test/CodeGen/X86/stack-align2.ll


Index: llvm/test/CodeGen/X86/stack-align2.ll
===================================================================
--- llvm/test/CodeGen/X86/stack-align2.ll
+++ llvm/test/CodeGen/X86/stack-align2.ll
@@ -3,11 +3,13 @@
 ; RUN: llc < %s -mcpu=generic -mtriple=i386-netbsd | FileCheck %s -check-prefix=NETBSD-I386
 ; RUN: llc < %s -mcpu=generic -mtriple=i686-apple-darwin8 | FileCheck %s -check-prefix=DARWIN-I386
 ; RUN: llc < %s -mcpu=generic -mtriple=i386-pc-solaris2.11 | FileCheck %s -check-prefix=SOLARIS-I386
+; RUN: llc < %s -mcpu=generic -mtriple=i386-nacl | FileCheck %s -check-prefix=NACL-I386
 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux | FileCheck %s -check-prefix=LINUX-X86_64
 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-kfreebsd | FileCheck %s -check-prefix=KFREEBSD-X86_64
 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-netbsd | FileCheck %s -check-prefix=NETBSD-X86_64
 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-apple-darwin8 | FileCheck %s -check-prefix=DARWIN-X86_64
 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-pc-solaris2.11 | FileCheck %s -check-prefix=SOLARIS-X86_64
+; RUN: llc < %s -mcpu=generic -mtriple=x86_64-nacl | FileCheck %s -check-prefix=NACL-X86_64
 
 define i32 @test() nounwind {
 entry:
@@ -17,6 +19,7 @@
 ; LINUX-I386:     subl	$12, %esp
 ; KFREEBSD-I386:  subl	$12, %esp
 ; DARWIN-I386:    subl	$12, %esp
+; NACL-I386:      subl	$12, %esp
 ; NETBSD-I386-NOT:  subl	{{.*}}, %esp
 ; SOLARIS-I386-NOT: subl	{{.*}}, %esp
 
@@ -24,6 +27,8 @@
 ; LINUX-X86_64-NOT:  subq	{{.*}}, %rsp
 ; DARWIN-X86_64:     pushq %{{.*}}
 ; DARWIN-X86_64-NOT: subq	{{.*}}, %rsp
+; NACL-X86_64:       pushq %{{.*}}
+; NACL-X86_64-NOT:   subq	{{.*}}, %rsp
 ; NETBSD-X86_64:     pushq %{{.*}}
 ; NETBSD-X86_64-NOT: subq	{{.*}}, %rsp
 ; SOLARIS-X86_64:     pushq %{{.*}}
Index: llvm/lib/Target/X86/X86Subtarget.cpp
===================================================================
--- llvm/lib/Target/X86/X86Subtarget.cpp
+++ llvm/lib/Target/X86/X86Subtarget.cpp
@@ -265,13 +265,13 @@
     report_fatal_error("64-bit code requested on a subtarget that doesn't "
                        "support it!");
 
-  // Stack alignment is 16 bytes on Darwin, Linux, kFreeBSD and for all
+  // Stack alignment is 16 bytes on Darwin, Linux, kFreeBSD, NaCl, and for all
   // 64-bit targets.  On Solaris (32-bit), stack alignment is 4 bytes
   // following the i386 psABI, while on Illumos it is always 16 bytes.
   if (StackAlignOverride)
     stackAlignment = *StackAlignOverride;
   else if (isTargetDarwin() || isTargetLinux() || isTargetKFreeBSD() ||
-           In64BitMode)
+           isTargetNaCl() || In64BitMode)
     stackAlignment = Align(16);
 
   // Consume the vector width attribute or apply any target specific limit.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D102610.345829.patch
Type: text/x-patch
Size: 2747 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210517/b267082d/attachment.bin>


More information about the llvm-commits mailing list