--- a/gcc/config/i386/i386.c 2019-08-01 09:29:22.000000000 +0300 +++ b/gcc/config/i386/i386.c 2020-01-31 15:40:01.931932349 +0300 @@ -4382,6 +4382,25 @@ ix86_option_override_internal (bool main if (!opts_set->x_ix86_force_align_arg_pointer) opts->x_ix86_force_align_arg_pointer = STACK_REALIGN_DEFAULT; + /* 32-bit SSE need more align */ + if (!opts->x_ix86_force_align_arg_pointer + && !TARGET_64BIT_P(opts) && TARGET_SSE_P(opts) && !TARGET_SSE4A_P(opts) + && (opts->x_flag_vect_cost_model != VECT_COST_MODEL_CHEAP + || opts->x_flag_simd_cost_model != VECT_COST_MODEL_CHEAP)) + { + if (opts_set->x_ix86_force_align_arg_pointer) + { + if (!opts_set->x_flag_vect_cost_model) + opts_set->x_flag_vect_cost_model = VECT_COST_MODEL_CHEAP + if (!opts_set->x_flag_simd_cost_model) + opts_set->x_flag_vect_cost_model = VECT_COST_MODEL_CHEAP + } +#if ENABLE_STACKREALIGN_ABI_VIOLATION + else + opts->x_ix86_force_align_arg_pointer = 1; +#endif + } + ix86_default_incoming_stack_boundary = PREFERRED_STACK_BOUNDARY; /* Validate -mincoming-stack-boundary= value or default it to --- a/gcc/config/i386/t-i386 2019-01-14 13:47:09.000000000 +0300 +++ b/gcc/config/i386/t-i386 2020-01-31 15:41:32.300737121 +0300 @@ -18,1 +18,2 @@ # . + +TARGET_LIBGCC2_CFLAGS += -mno-stackrealign