--- lib/Target/X86/X86Subtarget.cpp (revision 126022) +++ lib/Target/X86/X86Subtarget.cpp (working copy) @@ -344,7 +344,7 @@ // Stack alignment is 16 bytes on Darwin and Linux (both 32 and 64 bit) and // for all 64-bit targets. - if (isTargetDarwin() || isTargetLinux() || Is64Bit) + if (isTargetDarwin() || isTargetLinux() || isTargetSolaris() || Is64Bit) stackAlignment = 16; if (StackAlignment) --- lib/Target/X86/X86Subtarget.h (revision 126022) +++ lib/Target/X86/X86Subtarget.h (working copy) @@ -166,6 +166,7 @@ bool hasVectorUAMem() const { return HasVectorUAMem; } bool isTargetDarwin() const { return TargetTriple.getOS() == Triple::Darwin; } + bool isTargetSolaris() const { return TargetTriple.getOS() == Triple::Solaris; } // ELF is a reasonably sane default and the only other X86 targets we // support are Darwin and Windows. Just use "not those".