Ok. Thanks Kai
2018-03-11 23:29 GMT+01:00 Martin Storsjö <mar...@martin.st>: > This attribute is available since GCC 4.2. > > The previous trick of using inline assembly for overriding the stack > pointer behind the compiler's back isn't guaranteed to work. > > This fixes stack alignment on llvm/clang. > > Signed-off-by: Martin Storsjö <mar...@martin.st> > --- > mingw-w64-crt/crt/crtexe.c | 16 +++++----------- > 1 file changed, 5 insertions(+), 11 deletions(-) > > diff --git a/mingw-w64-crt/crt/crtexe.c b/mingw-w64-crt/crt/crtexe.c > index 4542bfe..e390074 100644 > --- a/mingw-w64-crt/crt/crtexe.c > +++ b/mingw-w64-crt/crt/crtexe.c > @@ -221,6 +221,11 @@ int mainCRTStartup (void) > } > > static > +#if defined(__i386__) || defined(_X86_) > +/* We need to make sure that we align the stack to 16 bytes for the sake of > SSE > + opts in main or in functions called main. */ > +__attribute__((force_align_arg_pointer)) > +#endif > __declspec(noinline) int > __tmainCRTStartup (void) > { > @@ -229,17 +234,6 @@ __tmainCRTStartup (void) > WINBOOL inDoubleQuote = FALSE; > memset (&StartupInfo, 0, sizeof (STARTUPINFO)); > > -#if defined(__i386__) || defined(_X86_) > - /* We need to make sure that this function is build with frame-pointer > - and that we align the stack to 16 bytes for the sake of SSE ops in main > - or in functions inlined into main. */ > - lpszCommandLine = (_TCHAR *) alloca (32); > - memset (lpszCommandLine, 0xcc, 32); > -#ifdef __GNUC__ > - asm __volatile__ ("andl $-16, %%esp" : : : "%esp"); > -#endif > -#endif /* defined(__i386__) || defined(_X86_) */ > - > if (mingw_app_type) > GetStartupInfo (&StartupInfo); > { > -- > 2.7.4 > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Mingw-w64-public mailing list > Mingw-w64-public@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public