[PATCH] i386: Define __ILP32__ and _ILP32 for all 32-bit targets

Gerald Pfeifer gerald@pfeifer.com
Thu May 7 22:58:43 GMT 2020


A user reported that gcc -m32 on x86-64 does not define __ILP32__ 
and I found the same on i686 (with gcc -x c -dM -E /dev/null).

The code has

      if (TARGET_X32)
        {
          cpp_define (parse_in, "_ILP32");
          cpp_define (parse_in, "__ILP32__");
        }

so -mx32 does define __ILP32__.  

This patch does the same for all "regular" 32-bit x86 targets.
Tested on i386-unknown-freebsd11.3 so far.

Okay?

Gerald


	* config/i386/i386-c.c (ix86_target_macros): Define _ILP32 and
	__ILP32__ for 32-bit targets.
---
 gcc/config/i386/i386-c.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c
index b46ebb289d2..891b2c68372 100644
--- a/gcc/config/i386/i386-c.c
+++ b/gcc/config/i386/i386-c.c
@@ -701,6 +701,8 @@ ix86_target_macros (void)
       cpp_assert (parse_in, "cpu=i386");
       cpp_assert (parse_in, "machine=i386");
       builtin_define_std ("i386");
+      cpp_define (parse_in, "_ILP32");
+      cpp_define (parse_in, "__ILP32__");
     }
 
   if (!TARGET_80387)
-- 
2.26.2


More information about the Gcc-patches mailing list