winegcc: Force stack alignment on all x86 platforms.
authorAlexandre Julliard <julliard@winehq.org>
Mon, 16 Nov 2015 13:52:41 +0000 (22:52 +0900)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 16 Nov 2015 13:52:41 +0000 (22:52 +0900)
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
tools/winegcc/winegcc.c

index ad139f5c4ce065e4b361f3e7a2ba6d0ba501ccba..ee5ac6befbfd3290709a555f9645d401b2a00a7d 100644 (file)
@@ -548,47 +548,34 @@ static void compile(struct options* opts, const char* lang)
 
     if (gcc_defs)
     {
-        int fastcall_done = 0;
-        if (opts->target_cpu == CPU_x86_64)
+        switch (opts->target_cpu)
         {
+        case CPU_x86_64:
             strarray_add(comp_args, "-D__stdcall=__attribute__((ms_abi))");
             strarray_add(comp_args, "-D__cdecl=__attribute__((ms_abi))");
             strarray_add(comp_args, "-D_stdcall=__attribute__((ms_abi))");
             strarray_add(comp_args, "-D_cdecl=__attribute__((ms_abi))");
             strarray_add(comp_args, "-D__fastcall=__attribute__((ms_abi))");
             strarray_add(comp_args, "-D_fastcall=__attribute__((ms_abi))");
-            fastcall_done = 1;
-        }
-        else if (opts->target_platform == PLATFORM_APPLE)
-        {
-            /* Mac OS X uses a 16-byte aligned stack and not a 4-byte one */
+            break;
+        case CPU_x86:
             strarray_add(comp_args, "-D__stdcall=__attribute__((__stdcall__)) __attribute__((__force_align_arg_pointer__))");
             strarray_add(comp_args, "-D__cdecl=__attribute__((__cdecl__)) __attribute__((__force_align_arg_pointer__))");
             strarray_add(comp_args, "-D_stdcall=__attribute__((__stdcall__)) __attribute__((__force_align_arg_pointer__))");
             strarray_add(comp_args, "-D_cdecl=__attribute__((__cdecl__)) __attribute__((__force_align_arg_pointer__))");
-        }
-        else if (opts->target_cpu == CPU_ARM || opts->target_cpu == CPU_ARM64)
-        {
+            strarray_add(comp_args, "-D__fastcall=__attribute__((__fastcall__))");
+            strarray_add(comp_args, "-D_fastcall=__attribute__((__fastcall__))");
+            break;
+        case CPU_ARM:
+        case CPU_ARM64:
+        case CPU_POWERPC:
             strarray_add(comp_args, "-D__stdcall=");
             strarray_add(comp_args, "-D__cdecl=");
             strarray_add(comp_args, "-D_stdcall=");
             strarray_add(comp_args, "-D_cdecl=");
             strarray_add(comp_args, "-D__fastcall=");
             strarray_add(comp_args, "-D_fastcall=");
-            fastcall_done = 1;
-        }
-        else
-        {
-            strarray_add(comp_args, "-D__stdcall=__attribute__((__stdcall__))");
-            strarray_add(comp_args, "-D__cdecl=__attribute__((__cdecl__))");
-            strarray_add(comp_args, "-D_stdcall=__attribute__((__stdcall__))");
-            strarray_add(comp_args, "-D_cdecl=__attribute__((__cdecl__))");
-        }
-
-       if (!fastcall_done)
-        {
-            strarray_add(comp_args, "-D__fastcall=__attribute__((__fastcall__))");
-            strarray_add(comp_args, "-D_fastcall=__attribute__((__fastcall__))");
+            break;
         }
        strarray_add(comp_args, "-D__declspec(x)=__declspec_##x");
        strarray_add(comp_args, "-D__declspec_align(x)=__attribute__((aligned(x)))");