public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Martin Liška" <mliska@suse.cz>
To: gcc-patches@gcc.gnu.org
Subject: [PATCH] configure: add --disable-fix-includes
Date: Fri, 4 Feb 2022 13:52:57 +0100	[thread overview]
Message-ID: <417eca08-e1ad-538e-c39a-388e20e2fcca@suse.cz> (raw)

[-- Attachment #1: Type: text/plain, Size: 5097 bytes --]

Hello.

It seems to me that fixincludes is hardy unused feature for nowadays header
files and so I'm suggesting a developer option that can skip the fixing.

How is the feature used on other targets?

Right now, fixinclude takes about 11 seconds on my machine, where
it reads (and applies regexes) 130MB of header files.

The number of fixed headers is negligible without any significant
change. I'm attaching diff that I can see on my developer machine.

Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Ready to be installed?
Thanks,
Martin

fixincludes/ChangeLog:

	* fixinc.in: Add early exit.

gcc/ChangeLog:

	* Makefile.in: Support disable_fix_includes.
	* configure.ac: Add --disable-fix-includes.
	* configure: Regenerate.
---
  fixincludes/fixinc.in |  6 ++++++
  gcc/Makefile.in       |  6 ++++--
  gcc/configure         | 21 +++++++++++++++++++--
  gcc/configure.ac      |  6 ++++++
  4 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/fixincludes/fixinc.in b/fixincludes/fixinc.in
index 0c3066452c6..3ebcd346d41 100755
--- a/fixincludes/fixinc.in
+++ b/fixincludes/fixinc.in
@@ -63,6 +63,12 @@ else
    esac
  fi
  
+if test "x$DISABLE_FIX_INCLUDES" = "xyes"
+then
+  echo "Skipping fixincludes"
+  exit 0
+fi
+
  # Define what target system we're fixing.
  #
  if test -r ./Makefile; then
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 31ff95500c9..c77f1cc644d 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -401,6 +401,8 @@ PLUGINLIBS = @pluginlibs@
  
  enable_plugin = @enable_plugin@
  
+disable_fix_includes = @disable_fix_includes@
+
  # On MinGW plugin installation involves installing import libraries.
  ifeq ($(enable_plugin),yes)
    plugin_implib := $(if $(strip $(filter mingw%,$(host_os))),yes,no)
@@ -3248,8 +3250,8 @@ stmp-fixinc: gsyslimits.h macro_list fixinc_list \
  	    chmod a+rx $${fix_dir} || true; \
  	    (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \
  	      SHELL='$(SHELL)'; MACRO_LIST=`${PWD_COMMAND}`/macro_list ; \
-	      gcc_dir=`${PWD_COMMAND}` ; \
-	      export TARGET_MACHINE srcdir SHELL MACRO_LIST && \
+	      gcc_dir=`${PWD_COMMAND}` ; DISABLE_FIX_INCLUDES=${disable_fix_includes} \
+	      export TARGET_MACHINE srcdir SHELL MACRO_LIST DISABLE_FIX_INCLUDES && \
  	      cd $(build_objdir)/fixincludes && \
  	      $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \
  	        $(BUILD_SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \
diff --git a/gcc/configure b/gcc/configure
index bd4d4721868..843ab02bfa3 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -839,6 +839,7 @@ with_float
  with_cpu
  enable_multiarch
  enable_multilib
+disable_fix_includes
  coverage_flags
  valgrind_command
  valgrind_path_defines
@@ -958,6 +959,7 @@ enable_werror_always
  enable_checking
  enable_coverage
  enable_gather_detailed_mem_stats
+enable_disable_fix_includes
  enable_valgrind_annotations
  enable_multilib
  enable_multiarch
@@ -1688,6 +1690,7 @@ Optional Features:
                            Values are opt, noopt, default is noopt
    --enable-gather-detailed-mem-stats
                            enable detailed memory allocation stats gathering
+  --disable-fix-includes  skip fixing of includes
    --enable-valgrind-annotations
                            enable valgrind runtime interaction
    --enable-multilib       enable library support for multiple ABIs
@@ -7780,6 +7783,20 @@ cat >>confdefs.h <<_ACEOF
  _ACEOF
  
  
+# Check whether --enable-disable-fix-includes was given.
+if test "${enable_disable_fix_includes+set}" = set; then :
+  enableval=$enable_disable_fix_includes;
+else
+  disable_fix_includes=yes
+fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define FIX_INCLUDES $disable_fix_includes
+_ACEOF
+
+
+
  # Check whether --enable-valgrind-annotations was given.
  if test "${enable_valgrind_annotations+set}" = set; then :
    enableval=$enable_valgrind_annotations;
@@ -19659,7 +19676,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
-#line 19662 "configure"
+#line 19679 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
@@ -19765,7 +19782,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
-#line 19768 "configure"
+#line 19785 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 1171c946e6e..6015e403aa9 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -842,6 +842,12 @@ gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else
  AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
  [Define to enable detailed memory allocation stats gathering.])
  
+AC_ARG_ENABLE(disable-fix-includes,
+[AS_HELP_STRING([--disable-fix-includes],
+		[skip fixing of includes])], [],
+[disable_fix_includes=yes])
+AC_SUBST(disable_fix_includes)
+
  AC_ARG_ENABLE(valgrind-annotations,
  [AS_HELP_STRING([--enable-valgrind-annotations],
  		[enable valgrind runtime interaction])], [],
-- 
2.35.1

[-- Attachment #2: fixincludes.diff --]
[-- Type: text/x-patch, Size: 9082 bytes --]

--- /usr/include/X11/Xw32defs.h	2022-01-07 13:52:15.000000000 +0100
+++ include-fixed/X11/Xw32defs.h	2022-02-04 07:55:06.956493417 +0100
@@ -1,7 +1,16 @@
 #ifndef _XW32DEFS_H
 # define  _XW32DEFS_H
 
-# ifdef __GNUC__ /* mingw is more close to unix than msvc */
+# ifdef __GNUC__ /* mingw is more close to __unix__ than msvc */
 #  if !defined(__daddr_t_defined)
 typedef char *caddr_t;
 #  endif
--- /usr/include/boost/predef/os/unix.h	2022-01-07 16:20:53.000000000 +0100
+++ include-fixed/boost/predef/os/unix.h	2022-02-04 07:55:06.564496142 +0100
@@ -1,3 +1,12 @@
 /*
 Copyright Rene Rivera 2008-2015
 Distributed under the Boost Software License, Version 1.0.
@@ -29,7 +38,7 @@
 
 #define BOOST_OS_UNIX BOOST_VERSION_NUMBER_NOT_AVAILABLE
 
-#if defined(unix) || defined(__unix) || \
+#if defined(__unix__) || defined(__unix) || \
     defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE)
 #   undef BOOST_OS_UNIX
 #   define BOOST_OS_UNIX BOOST_VERSION_NUMBER_AVAILABLE
--- /usr/include/schily/prototyp.h	2022-01-07 15:51:33.000000000 +0100
+++ include-fixed/schily/prototyp.h	2022-02-04 07:55:04.260512155 +0100
@@ -1,3 +1,12 @@
 /*
  *	Definitions for dealing with ANSI / KR C-Compilers
@@ -54,7 +63,7 @@
 #		if	__STDC__				/* ANSI C */
 #			define	PROTOTYPES
 #		endif
-#		if	defined(sun) && __STDC__ - 0 == 0	/* Sun C */
+#		if	defined(sun) &&  !defined(__STRICT_ANSI__)	/* Sun C */
 #			define	PROTOTYPES
 #		endif
 #	endif
--- /usr/include/schily/mconfig.h	2022-01-07 15:51:33.000000000 +0100
+++ include-fixed/schily/mconfig.h	2022-02-04 07:55:04.244512265 +0100
@@ -1,3 +1,12 @@
 /*
  *	definitions for machine configuration
@@ -106,7 +115,7 @@
 #	define	IS_GCC_WIN32
 #	define	IS_CYGWIN
 
-#if	defined(unix) || defined(_X86)
+#if	defined(__unix__) || defined(_X86)
 #	define	IS_CYGWIN_1
 #endif
 #endif
--- /usr/include/nss3/secport.h	2022-01-26 21:37:21.000000000 +0100
+++ include-fixed/nss3/secport.h	2022-02-04 07:55:04.232512351 +0100
@@ -1,3 +1,12 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -33,7 +42,7 @@
 #endif
 #endif
 
-#ifdef unix
+#ifdef __unix__
 #ifndef XP_UNIX
 #define XP_UNIX
 #endif
--- /usr/include/msgpack/predef/os/unix.h	2019-07-04 06:36:12.000000000 +0200
+++ include-fixed/msgpack/predef/os/unix.h	2022-02-04 07:55:03.136519966 +0100
@@ -1,3 +1,12 @@
 Copyright Rene Rivera 2008-2015
 Distributed under the Boost Software License, Version 1.0.
@@ -28,7 +37,7 @@
 
 #define MSGPACK_OS_UNIX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
 
-#if defined(unix) || defined(__unix) || \
+#if defined(__unix__) || defined(__unix) || \
     defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE)
 #   undef MSGPACK_OS_UNIX
 #   define MSGPACK_OS_UNIX MSGPACK_VERSION_NUMBER_AVAILABLE
--- /usr/include/msgpack/predef/os/linux.h	2019-07-04 06:36:12.000000000 +0200
+++ include-fixed/msgpack/predef/os/linux.h	2022-02-04 07:55:03.136519966 +0100
@@ -1,3 +1,12 @@
 Copyright Rene Rivera 2008-2015
 Distributed under the Boost Software License, Version 1.0.
@@ -27,7 +36,7 @@
 #define MSGPACK_OS_LINUX MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
 
 #if !defined(MSGPACK_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(linux) || defined(__linux) \
+    defined(__linux__) || defined(__linux) \
     )
 #   undef MSGPACK_OS_LINUX
 #   define MSGPACK_OS_LINUX MSGPACK_VERSION_NUMBER_AVAILABLE
--- /usr/include/msgpack/sysdep.h	2020-02-19 10:21:46.000000000 +0100
+++ include-fixed/msgpack/sysdep.h	2022-02-04 07:55:03.124520052 +0100
@@ -1,3 +1,12 @@
  * MessagePack system dependencies
  *
@@ -87,7 +96,7 @@
 #elif defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
 
 #include <arpa/inet.h>  /* __BYTE_ORDER */
-#   if defined(linux)
+#   if defined(__linux__)
 #       include <byteswap.h>
 #   endif
 
@@ -99,7 +108,7 @@
 
 #if MSGPACK_ENDIAN_LITTLE_BYTE
 
-#   if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
+#   if defined(__unix__) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
 #       define _msgpack_be16(x) ntohs((uint16_t)x)
 #   else
 #       if defined(ntohs)
@@ -113,7 +122,7 @@
 #        endif
 #   endif
 
-#   if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
+#   if defined(__unix__) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
 #       define _msgpack_be32(x) ntohl((uint32_t)x)
 #   else
 #       if defined(ntohl)
--- /usr/include/msgpack/vrefbuffer.h	2020-02-19 10:21:46.000000000 +0100
+++ include-fixed/msgpack/vrefbuffer.h	2022-02-04 07:55:03.124520052 +0100
@@ -1,3 +1,12 @@
  * MessagePack for C zero-copy buffer implementation
  *
@@ -13,7 +22,7 @@
 #include "zone.h"
 #include <stdlib.h>
 
-#if defined(unix) || defined(__unix) || defined(__linux__) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__QNX__) || defined(__QNXTO__) || defined(__HAIKU__)
+#if defined(__unix__) || defined(__unix) || defined(__linux__) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__QNX__) || defined(__QNXTO__) || defined(__HAIKU__)
 #include <sys/uio.h>
 #else
 struct iovec {
--- /usr/include/xorg/compiler.h	2022-01-07 20:21:20.000000000 +0100
+++ include-fixed/xorg/compiler.h	2022-02-04 07:55:02.816522192 +0100
@@ -1,3 +1,12 @@
  * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
  *
@@ -936,7 +945,7 @@
 #endif                          /* arch madness */
 
 #else                           /* !GNUC */
-#if defined(__STDC__) && (__STDC__ == 1)
+#if defined(__STDC__) && ( defined(__STRICT_ANSI__))
 #ifndef asm
 #define asm __asm
 #endif
--- /usr/include/xorg/edid.h	2022-01-07 20:21:20.000000000 +0100
+++ include-fixed/xorg/edid.h	2022-02-04 07:55:02.812522221 +0100
@@ -1,3 +1,12 @@
  * edid.h: defines to parse an EDID block
  *
@@ -336,7 +345,7 @@
 #define ADD_DUMMY 0x10
 
 #define _NEXT_DT_MD_SECTION(x) (x = (x + DET_TIMING_INFO_LEN))
-#define NEXT_DT_MD_SECTION _NEXT_DT_MD_SECTION(c)
+#define NEXT_DT_MD_SECTION _NEXT_DT_MD_SECTION('c')
 
 #endif                          /* _PARSE_EDID_ */
 
--- /usr/include/smbios_c/config/suffix.h	2022-01-07 18:58:09.000000000 +0100
+++ include-fixed/smbios_c/config/suffix.h	2022-02-04 07:55:01.748529615 +0100
@@ -1,3 +1,12 @@
 
 //  (C) Copyright John Maddock 2001 - 2003.
@@ -178,7 +187,7 @@
 #     define LIBSMBIOS_C_STDLIB "Unknown ISO standard library"
 #  endif
 #  ifndef LIBSMBIOS_C_PLATFORM
-#     if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \
+#     if defined(__unix__) || defined(__unix) || defined(_XOPEN_SOURCE) \
          || defined(_POSIX_SOURCE)
 #        define LIBSMBIOS_C_PLATFORM "Generic Unix"
 #     else
--- /usr/include/zutil.h	2022-01-07 13:52:59.000000000 +0100
+++ include-fixed/zutil.h	2022-02-04 07:55:06.592495947 +0100
@@ -1,3 +1,12 @@
  * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
@@ -86,7 +95,7 @@
 #  define OS_CODE  0x00
 #  ifndef Z_SOLO
 #    if defined(__TURBOC__) || defined(__BORLANDC__)
-#      if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
+#      if ( defined(__STRICT_ANSI__)) && (defined(__LARGE__) || defined(__COMPACT__))
          /* Allow compilation with ANSI keywords only enabled */
          void _Cdecl farfree( void *block );
          void *_Cdecl farmalloc( unsigned long nbytes );
--- /usr/include/slang.h	2022-01-02 16:15:25.000000000 +0100
+++ include-fixed/slang.h	2022-02-04 07:55:04.780508542 +0100
@@ -1,3 +1,12 @@
 #define DAVIS_SLANG_H_
 /* -*- mode: C; mode: fold; -*- */
@@ -43,7 +52,7 @@
 # endif
 #endif /* __watcomc__ */
 
-#if defined(unix) || defined(__unix)
+#if defined(__unix__) || defined(__unix)
 # ifndef __unix__
 #  define __unix__ 1
 # endif
--- /usr/include/libv4lconvert.h	2022-01-07 17:40:48.000000000 +0100
+++ include-fixed/libv4lconvert.h	2022-02-04 07:55:03.332518604 +0100
@@ -1,3 +1,12 @@
 #             (C) 2008 Hans de Goede <hdegoede@redhat.com>
 
@@ -22,7 +31,7 @@
 /* These headers are not needed by us, but by linux/videodev2.h,
    which is broken on some systems and doesn't include them itself :( */
 
-#ifdef linux
+#ifdef __linux__
 #include <sys/time.h>
 #include <linux/types.h>
 #include <linux/ioctl.h>
--- /usr/include/libv4l1-videodev.h	2022-01-07 17:40:50.000000000 +0100
+++ include-fixed/libv4l1-videodev.h	2022-02-04 07:55:02.224526305 +0100
@@ -1,8 +1,17 @@
 #ifndef __LINUX_VIDEODEV_H
 #define __LINUX_VIDEODEV_H
 
-#ifdef linux
+#ifdef __linux__
 #include <linux/ioctl.h>
 #endif
 
--- /usr/include/pthread.h	2022-01-07 13:57:55.000000000 +0100
+++ include-fixed/pthread.h	2022-02-04 07:55:01.684530061 +0100
@@ -1,3 +1,12 @@
    This file is part of the GNU C Library.
 
@@ -770,7 +779,7 @@
 #else
 # define __sigsetjmp_cancel(env, savemask) \
   __sigsetjmp ((struct __jmp_buf_tag *) (void *) (env), (savemask))
-extern int __sigsetjmp (struct __jmp_buf_tag __env[1],
+extern int __sigsetjmp (struct __jmp_buf_tag *__env,
 			int __savemask) __THROWNL;
 #endif
 

             reply	other threads:[~2022-02-04 12:52 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-04 12:52 Martin Liška [this message]
2022-02-04 13:07 ` Rainer Orth
2022-02-04 13:25   ` Richard Biener
2022-02-04 13:30     ` Jakub Jelinek
2022-02-04 15:01       ` Martin Liška
2022-02-04 15:22       ` Martin Liška
2022-02-05  2:26         ` Allan McRae
2022-02-28  8:36           ` Martin Liška
2022-02-04 15:02   ` Martin Liška
2022-05-09  9:03 Martin Liška
2022-05-09  9:31 ` Andreas Schwab
2022-05-09 21:14 ` Joseph Myers
2022-05-11 10:55   ` Martin Liška
2022-05-11 11:00     ` Rainer Orth
2022-05-11 11:15       ` Martin Liška
2022-05-11 11:31         ` Rainer Orth
2022-05-11 11:58           ` Martin Liška
2022-05-11 12:48             ` Andreas Schwab
2022-05-11 14:50               ` Martin Liška
2022-05-20 12:42                 ` Alexandre Oliva

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=417eca08-e1ad-538e-c39a-388e20e2fcca@suse.cz \
    --to=mliska@suse.cz \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).