[v3] stamp-std-precompile

Benjamin Kosnik bkoz@redhat.com
Wed Feb 12 00:53:00 GMT 2003


This patch puts the preliminary pch bits into mainline libstdc++. Pre
compiled headers are not built by default, but can be made easily by
doing:

cd include
make stamp-std-precompile

However, things are not yet working. Oddly, making iosfwd.pch gets a
spurrious error about HAVE__BUILTIN_SIN. Also, the weird pragma
errors, already in GNATS.

New fails:

FAIL: 26_numerics/complex_value.cc (test for excess errors)
WARNING: 26_numerics/complex_value.cc compilation failed to produce executable
FAIL: 27_io/instantiations.cc (test for excess errors)
WARNING: 27_io/instantiations.cc compilation failed to produce executable

time for 'make check' with pch:
2506.113u 136.734s 46:35.61 94.5%	0+0k 0+0io 1479051pf+0w

without:
2517.154u 134.710s 49:21.78 89.5%	0+0k 0+0io 1475634pf+0w

No difference.

-benjamin

2003-02-11  Benjamin Kosnik  <bkoz@redhat.com>

	* include/Makefile.am (stamp-std-precompile): Add rule.
	* include/Makefile.in: Regenerated.

Index: include/Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/Makefile.am,v
retrieving revision 1.49
diff -c -p -r1.49 Makefile.am
*** include/Makefile.am	24 Jan 2003 16:32:11 -0000	1.49
--- include/Makefile.am	12 Feb 2003 00:03:43 -0000
*************** CXX = @glibcpp_CXX@
*** 31,36 ****
--- 31,105 ----
  glibcpp_srcdir=@glibcpp_srcdir@
  glibcpp_builddir=@glibcpp_builddir@
  
+ GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@
+ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
+ INCLUDES = -nostdinc++ $(GLIBCPP_INCLUDES) $(LIBSUPCXX_INCLUDES)
+ 
+ # Standard C++ includes.
+ std_srcdir = ${glibcpp_srcdir}/include/std
+ std_builddir = .
+ std_headers = \
+ 	${std_srcdir}/std_algorithm.h \
+ 	${std_srcdir}/std_bitset.h \
+ 	${std_srcdir}/std_complex.h \
+ 	${std_srcdir}/std_deque.h \
+ 	${std_srcdir}/std_fstream.h \
+ 	${std_srcdir}/std_functional.h \
+ 	${std_srcdir}/std_iomanip.h \
+ 	${std_srcdir}/std_ios.h \
+ 	${std_srcdir}/std_iosfwd.h \
+ 	${std_srcdir}/std_iostream.h \
+ 	${std_srcdir}/std_istream.h \
+ 	${std_srcdir}/std_iterator.h \
+ 	${std_srcdir}/std_limits.h \
+ 	${std_srcdir}/std_list.h \
+ 	${std_srcdir}/std_locale.h \
+ 	${std_srcdir}/std_map.h \
+ 	${std_srcdir}/std_memory.h \
+ 	${std_srcdir}/std_numeric.h \
+ 	${std_srcdir}/std_ostream.h \
+ 	${std_srcdir}/std_queue.h \
+ 	${std_srcdir}/std_set.h \
+ 	${std_srcdir}/std_sstream.h \
+ 	${std_srcdir}/std_stack.h \
+ 	${std_srcdir}/std_stdexcept.h \
+ 	${std_srcdir}/std_streambuf.h \
+ 	${std_srcdir}/std_string.h \
+ 	${std_srcdir}/std_utility.h \
+ 	${std_srcdir}/std_valarray.h \
+ 	${std_srcdir}/std_vector.h
+ # Renamed at build time. 
+ std_headers_rename = \
+ 	algorithm \
+ 	bitset \
+ 	complex \
+ 	deque \
+ 	fstream \
+ 	functional \
+ 	iomanip \
+ 	ios \
+ 	iosfwd \
+ 	iostream \
+ 	istream \
+ 	iterator \
+ 	limits \
+ 	list \
+ 	locale \
+ 	map \
+ 	memory \
+ 	numeric \
+ 	ostream \
+ 	queue \
+ 	set \
+ 	sstream \
+ 	stack \
+ 	stdexcept \
+ 	streambuf \
+ 	string \
+ 	utility \
+ 	valarray \
+ 	vector
+ 
  bits_srcdir = ${glibcpp_srcdir}/include/bits
  bits_builddir = ./bits
  bits_headers = \
*************** else
*** 241,311 ****
  c_compatibility_headers_extra = 
  endif
  
- 
- std_srcdir = ${glibcpp_srcdir}/include/std
- std_builddir = .
- std_headers = \
- 	${std_srcdir}/std_algorithm.h \
- 	${std_srcdir}/std_bitset.h \
- 	${std_srcdir}/std_complex.h \
- 	${std_srcdir}/std_deque.h \
- 	${std_srcdir}/std_fstream.h \
- 	${std_srcdir}/std_functional.h \
- 	${std_srcdir}/std_iomanip.h \
- 	${std_srcdir}/std_ios.h \
- 	${std_srcdir}/std_iosfwd.h \
- 	${std_srcdir}/std_iostream.h \
- 	${std_srcdir}/std_istream.h \
- 	${std_srcdir}/std_iterator.h \
- 	${std_srcdir}/std_limits.h \
- 	${std_srcdir}/std_list.h \
- 	${std_srcdir}/std_locale.h \
- 	${std_srcdir}/std_map.h \
- 	${std_srcdir}/std_memory.h \
- 	${std_srcdir}/std_numeric.h \
- 	${std_srcdir}/std_ostream.h \
- 	${std_srcdir}/std_queue.h \
- 	${std_srcdir}/std_set.h \
- 	${std_srcdir}/std_sstream.h \
- 	${std_srcdir}/std_stack.h \
- 	${std_srcdir}/std_stdexcept.h \
- 	${std_srcdir}/std_streambuf.h \
- 	${std_srcdir}/std_string.h \
- 	${std_srcdir}/std_utility.h \
- 	${std_srcdir}/std_valarray.h \
- 	${std_srcdir}/std_vector.h
- # Renamed at build time. 
- std_headers_rename = \
- 	algorithm \
- 	bitset \
- 	complex \
- 	deque \
- 	fstream \
- 	functional \
- 	iomanip \
- 	ios \
- 	iosfwd \
- 	iostream \
- 	istream \
- 	iterator \
- 	limits \
- 	list \
- 	locale \
- 	map \
- 	memory \
- 	numeric \
- 	ostream \
- 	queue \
- 	set \
- 	sstream \
- 	stack \
- 	stdexcept \
- 	streambuf \
- 	string \
- 	utility \
- 	valarray \
- 	vector
- 
  target_srcdir = ${glibcpp_srcdir}/@OS_INC_SRCDIR@
  target_builddir = ./${target_alias}/bits
  target_headers = \
--- 310,315 ----
*************** allstamps = \
*** 341,347 ****
  	stamp-std stamp-bits stamp-c_base stamp-c_compatibility \
  	stamp-backward stamp-ext stamp-target
  
- 
  # Here are the rules for building the headers
  all-local: ${target_builddir}/c++config.h ${thread_target_headers} ${allstamps}
  
--- 345,350 ----
*************** stamp-std: ${std_headers}
*** 359,364 ****
--- 362,373 ----
  	  echo `date` > stamp-std ;\
  	fi
  
+ stamp-std-precompile: stamp-std
+ 	for h in ${std_headers_rename}; do \
+ 	  $(CXX) -Winvalid-pch -x c++-header $(INCLUDES) $${h}; \
+ 	done; \
+ 	echo `date` > stamp-std-precompile
+ 
  stamp-bits: ${bits_headers}
  	@if [ ! -d "${bits_builddir}" ]; then \
  	  mkdir -p ${bits_builddir} ;\
*************** install-data-local:
*** 514,520 ****
  	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${target_builddir}; done
  
  # By adding these files here, automake will remove them for 'make clean'
! #CLEANFILES = ${allstamps} 
  
  # Stop implicit '.o' make rules from ever stomping on extensionless
  # headers, in the improbable case where some foolish, crack-addled
--- 523,529 ----
  	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${target_builddir}; done
  
  # By adding these files here, automake will remove them for 'make clean'
! CLEANFILES = *.pch stamp-std-precompile
  
  # Stop implicit '.o' make rules from ever stomping on extensionless
  # headers, in the improbable case where some foolish, crack-addled



More information about the Gcc-patches mailing list