Index: lib/Target/Mips/MipsSubtarget.h =================================================================== --- lib/Target/Mips/MipsSubtarget.h +++ lib/Target/Mips/MipsSubtarget.h @@ -295,7 +295,9 @@ // really use them if in addition we are in mips16 mode static bool useConstantIslands(); - unsigned stackAlignment() const { return hasMips64() ? 16 : 8; } + unsigned stackAlignment() const { + return isABI_N32() || isABI_N64() ? 16 : 8; + } // Grab relocation model Reloc::Model getRelocationModel() const; Index: test/CodeGen/Mips/stack-alignment.ll =================================================================== --- test/CodeGen/Mips/stack-alignment.ll +++ test/CodeGen/Mips/stack-alignment.ll @@ -1,9 +1,11 @@ ; RUN: llc -march=mipsel < %s | FileCheck %s -check-prefix=32 ; RUN: llc -march=mipsel -mattr=+fp64 < %s | FileCheck %s -check-prefix=32 +; RUN: llc -march=mips64el -mcpu=mips3 < %s | FileCheck %s -check-prefix=64 +; RUN: llc -march=mips64el -mcpu=mips4 < %s | FileCheck %s -check-prefix=64 ; RUN: llc -march=mips64el -mcpu=mips64 < %s | FileCheck %s -check-prefix=64 ; 32: addiu $sp, $sp, -8 -; 64: addiu $sp, $sp, -16 +; 64: daddiu $sp, $sp, -16 define i32 @foo1() #0 { entry: