Re: r117741
>I noticed that the automake maintainers accepted your patch for > fixing the multilib issues in automake. However they also seemed to > indicate that there would be no more 1.9.x automake releases. >Is the r117741 svn checkin related to this issue? I ask because it > was unclear to me how the multilib issues with gcc could be resolved > until a new automake was released with the required patch (so that it > could be used to regenerate the necessary configure files in gcc > trunk). Thanks in advance for any clarifications. Hi, Not sure if you noticed, but automake-1.10 was released two days ago, on the 15th. The announcement made no mention of multilib issues in the summary, so you might have to dig through revision logs to hunt for the patch. >8 snip 8<- You can find the new release here: ftp://ftp.gnu.org/gnu/automake/automake-1.10.tar.gz ftp://ftp.gnu.org/gnu/automake/automake-1.10.tar.gz.sig ftp://ftp.gnu.org/gnu/automake/automake-1.10.tar.bz2 ftp://ftp.gnu.org/gnu/automake/automake-1.10.tar.bz2.sig ftp://sources.redhat.com/pub/automake/automake-1.10.tar.gz ftp://sources.redhat.com/pub/automake/automake-1.10.tar.gz.sig ftp://sources.redhat.com/pub/automake/automake-1.10.tar.bz2 ftp://sources.redhat.com/pub/automake/automake-1.10.tar.bz2.sig Finally, here are the MD5 checksums: 0e2e0f757f9e1e89b66033905860fded automake-1.10.tar.bz2 452163c32d061c53a7acc0e8c1b689ba automake-1.10.tar.gz >8 snip 8<- Fang
Re: regenerating reliably GCC configure files
> I am not sure to understand what is the *reliable* way to regenerate > GCC configure files from the real (human typed) master source files > (like Makefile.in, gcc/configure.ac, Makefile.tpl, etc...) > > I made some suggestions on the Wiki > > http://gcc.gnu.org/wiki/AboutGCCConfiguration > > > Again, feel free to edit the above page (and/or incorporate parts of > it into the documentation). Hi, My initial reaction is "Why title the page \"About GCC Configuration\"" when the first line says it's about something else. I recommend a title like "... Configure auto-generation" or "... regeneration". You can still explain the distinction in the introduction, since people still often mistake the procedures. Some links to download the required versions of the autotools might save some time for people getting started quickly. This looks like a good start so far. Fang
Re: regenerating reliably GCC configure files
> > > I made some suggestions on the Wiki > > > > > > http://gcc.gnu.org/wiki/AboutGCCConfiguration > > > > > > Again, feel free to edit the above page (and/or incorporate parts of > > > it into the documentation). Looks like it was relocated to: http://gcc.gnu.org/wiki/Regenerating_GCC_Configuration Fang
Re: build gcc with distcc
Hi, > > My question is: how to build gcc bootstrap with distcc correctly. > > I believe it is impossible in the general case. bootstrap means to > compile GCC source code with a GCC compiler just built from the same > source code. Hence, to distribute this compilation with distcc, you'll > need to send the (stage1 compiled) GCC binaries on the network, and > distcc is not able to send binary programs. (If you'll extend distcc > to send binary programs - a non trivial task -, you open a new can of > worms, and you'll need to tackle potential security issues). Not impossible, you'd just need to have the different machines see/mount the same file-system for starters. That would result in coherent binaries, no shipping required. I've done this on an ancient x86 FreeBSD cluster (8 to 16 machines) mounting a single file server before with no hiccups. (That was gcc-3.4.0, ccache 2.2, distcc 2.13, both old). > So a distributed build has to also distribute files, for example by > sharing a common distributed file system. OF course details are > complex. On a somewhat related note, I'd be interested to hear if ccache could be snuck into bootstrapping to speed up recompiles in the intermediate stages, especially with incremental changes. (Anyone tried this?) I've noted that ccache-ing only speeds up the first stage, as one would expect. There might be a subtle issue with ccache assuming that the compiler that created a cache-hit object did not change. I'm only aware of ccache verifying compiler versions (string compare) in the hit-check, which alone doesn't suffice to guarantee that the cache is (or should be) hit. *sigh* Bootstrapping on me 5+ yr. old dual-G4 takes quite a while, even with make -j2 (which helps a lot). Wish-list: gcj-ccache for classpath rebuild acceleration. Fang
Re: bootstrapping r118945 failed
Reported (and confirmed) here: http://gcc.gnu.org/bugzilla//show_bug.cgi?id=29879 > SVN revision: 118945 > Host: i686-pc-linux-gnu > > /home/daniel/svn-build/gcc-head/./gcc/xgcc > -B/home/daniel/svn-build/gcc-head/./g > cc/ -B/home/daniel/i686-pc-linux-gnu/gcc-svn//i686-pc-linux-gnu/bin/ > -B/home/dan > iel/i686-pc-linux-gnu/gcc-svn//i686-pc-linux-gnu/lib/ -isystem > /home/daniel/i686 > -pc-linux-gnu/gcc-svn//i686-pc-linux-gnu/include -isystem > /home/daniel/i686-pc-l > inux-gnu/gcc-svn//i686-pc-linux-gnu/sys-include -DHAVE_CONFIG_H -I. > -I/home/dani > el/svn/gcc/libgfortran -I. -iquote/home/daniel/svn/gcc/libgfortran/io > -I/home/da > niel/svn/gcc/libgfortran/../gcc > -I/home/daniel/svn/gcc/libgfortran/../gcc/config > -I../.././gcc -D_GNU_SOURCE -std=gnu99 -Wall -Wstrict-prototypes > -Wmissing-prot > otypes -Wold-style-definition -Wextra -Wwrite-strings -ftree-vectorize > -funroll- > loops -O2 -g -O2 -c /home/daniel/svn/gcc/libgfortran/generated/matmul_i4.c > -fPI > C -DPIC -o .libs/matmul_i4.o > /home/daniel/svn/gcc/libgfortran/generated/matmul_i4.c: In > function 'matmul_i4': > /home/daniel/svn/gcc/libgfortran/generated/matmul_i4.c:337: error: > verify_flow_i > nfo: Block 136 has loop_father, but there are no loops > /home/daniel/svn/gcc/libgfortran/generated/matmul_i4.c:337: error: > verify_flow_info: Block 135 has loop_father, but there are no loops > > [snipped 133 identical messages] > > /home/daniel/svn/gcc/libgfortran/generated/matmul_i4.c:337: error: > verify_flow_info: Block 2 has loop_father, but there are no loops > /home/daniel/svn/gcc/libgfortran/generated/matmul_i4.c:337: internal compiler > error: verify_flow_info failed > Please submit a full bug report, > with preprocessed source if appropriate. > See http://gcc.gnu.org/bugs.html> for instructions. > make[3]: *** [matmul_i4.lo] Error 1 > make[3]: Leaving directory > `/home/daniel/svn-build/gcc-head/i686-pc-linux-gnu/libgfortran' > make[2]: *** [all] Error 2 > make[2]: Leaving directory > `/home/daniel/svn-build/gcc-head/i686-pc-linux-gnu/libgfortran' > make[1]: *** [all-target-libgfortran] Error 2 > make[1]: Leaving directory `/home/daniel/svn-build/gcc-head'
Re: build gcc with distcc
> > There might be a subtle issue with ccache assuming that the compiler > > that created a cache-hit object did not change. I'm only aware of > > ccache verifying compiler versions (string compare) in the > > hit-check, which alone doesn't suffice to guarantee that the cache > > is (or should be) hit. > > No, it records the timestamp of the compiler driver. These would > always be different in a bootstrap run, so you would never get any > cache hits for second and third stage object files. Ah, wasn't sure that it did that, but thanks for pointing that out. Bummer. "No ccache for you!!!" Fang
Re: Cannot call pure virtual function from base class constructor.
Hi, I've found that this article explains very well why one *cannot* call a virtual function during construction (or destruction). http://www.artima.com/cppsource/nevercall.html HTH, Fang > I have created a base class who's constructor calls a pure virtual > function I derive this class, implement the function, compile and > receive this error message, "error: abstract virtual `IDXTYPE > DataSet::indexFxn(uint) [with DATA = float, IDXTYPE = > float]' called from constructor" > > Without context to my code basically reads, "error: abstract virtual > function called from constructor" > > I know that it would not make sense for the base class to call a pure > virtual function. However, this constructor is being called in > response to a derived class of the base being initialized who defines > the pure virtual function of the base. > > I can see how this error may happen if the constructor for the base > class is called before the derived class at which time the pointer to > the derived class' implementation of the base class' virtual function > is not initialized (I don't know for sure if this is the order of what > happens but it is my best educated guess). I don't see that this error > is necessary, unless the derived class does not implement the pure > virtual function of the base. Even if this were the case, the derived > class could initialize the pointer table with it's implementation for > the base class pure virtual function before the base class constructor > call to the pure virtual function? > > Is this behaviour a cause of the C++ standard or is it specific to GCC? David Fang Computer Systems Laboratory Electrical & Computer Engineering Cornell University http://www.csl.cornell.edu/~fang/ -- (2400 baud? Netscape 3.0?? lynx??? No problem!)
Re: Build snapshots according to a more regular schedule
> > > > Are 4.0 snapshots still necessary? I suspect they should be > > > > discontinued. > > > > > > 4.0 still seems to be regarded as an active branch. > > > > > > I don't mind closing it, myself. Does anybody think we should have a > > > 4.0.4 release? > > > > I'd like to see it closed. We have some bugs that are only open because > > they are targeted for 4.0.4 (fixed on all branches but 4_0). > > I'd like to see it closed, too, all Linux/BSD vendors I know of are either > still using 3.x or have switched to 4.1 already. Hi, User chiming in: before retiring 4.0, one would be more easily convinced to make a transition to 4.1+ if the regressions from 4.0 to 4.1 numbered fewer. In the database, I see only 79 (P3+) regressions in 4.1 that are not in 4.0 (using only summary matching). Will these get a bit more attention for the upcoming 4.1.2 release? http://gcc.gnu.org/bugzilla/query.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=4.1&known_to_fail_type=allwordssubstr&known_to_work_type=allwordssubstr&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&gcchost_type=allwordssubstr&gcchost=&gcctarget_type=allwordssubstr&gcctarget=&gccbuild_type=allwordssubstr&gccbuild=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=SUSPENDED&bug_status=WAITING&bug_status=REOPENED&priority=P1&priority=P2&priority=P3&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&query_based_on=4.1%20%5C%204.0%20regressions&negate0=1&field0-0-0=short_desc&type0-0-0=substring&value0-0-0=4.0&field0-1-0=noop&type0-1-0=noop&value0-1-0= Fang
Re: raising minimum version of Flex
> > > I think it's worth raising the minimum required version from 2.5.4 to > > > 2.5.31. > > > > I want to point out that Fedora Core 5 appears to still ship flex > > 2.5.4. At least, that is what flex --version reports. (I didn't > > bother to check this before.) I think we need a very strong reason to > > upgrade our requirements ahead of common distributions. We've already > > run into that problem with MPFR. > > For MPFR, everyone needs to have the latest installed to be able to > build gcc. That is not the case with flex. No-one needs flex at all to > build gcc, except gcc hackers who modify one of the (two or three?) > remaining flex files and regenerate the lexers. So you can't really > compare flex and MPFR this way. > > If flex 2.5.31 is already four years old, it doesn't seem unreasonable > to me to expect people to upgrade if their distribution ships with an > even older flex. To add another data point concerning flex, the C skeleton used by 2.5.33 is no longer warning-free, due to some signed/unsigned comparison, IIRC. (2.5.31 and earlier are OK.) I sent in an obvious patch to fix it and was turned down. If their "not-my-problem" policy persists, it will inconveniences projects that use a -Werror policy, which may adversly impact gcc bootstrapping, for example. From some perspectives, 2.5.31 could be a *maximum* version until that particular problem is fixed. (I've got other beef with flex 2.5.33 as well.) Maybe enough wheels squeak at them, they can be convinced to fix such problems that they consider insignificant? Fang
Re: GCC bootstrap mismatch on OS X 10.4
On Sun, Feb 13, 2011 at 05:27:37PM +, Jonathan Wakely wrote: On 13 February 2011 09:01, Csaba Raduly wrote: Any idea what could be the problem and how to fix it? Should I just run a simple "make"? Questions about using or building gcc should be sent to gcc-h...@gcc.gnu.org, not this list, please follow up there instead, thanks. I don't know if it will solve your problem, but yes, you just build gcc with 'make' these days, not 'make bootstrap' I suspect his problems will be solved by adding --with-dwarf2 to the configure options. We don't seem to have a specific PR for this but I This PR seems to match: :) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45248 One user has reported that --with-dwarf2 was enough to fix bootstrap. believe there are bootstrap comparision failures in libgomp for darwin8 using stabs. We don't get a lot of testing on darwin8 theses days since the regress Apple tester is now on darwin9 (plus this could be intel specific). Both Mike and Iain have access to darwin8 so we hopefully can get a PR opened. Jack ps I had suggested awhile back that we default darwin8 to dwarf2 but Mike thinks the dwarf2 support is too immature in the Xcode for darwin8 to safely do that. Fang David Fang http://www.csl.cornell.edu/~fang/ http://www.achronix.com/
Re: [PPL-devel] Parma Polyhedra Library 0.11.1
Great, thanks for providing these! Fang On 02/22/2011 03:00 AM, Jack Howarth wrote: The problems seems to stem from the absence of pre-generated files for... ppl-user-java-interface-0.11.1-html.tar.gz ppl-user-java-interface-0.11.1.pdf ppl-user-java-interface-0.11.1.ps.gz in the doc directory of the source tarball. The fink ppl9 package builds using --with-java="$JAVA_HOME" so that those missing files are autogenerated by make install. Can you post a new tarball with those missing files added? Hi Jack. You are right: this is indeed the problem. I have uploaded the missing files to the PPL 0.11 release directory. Please let us know if you have further problems. Cheers, Roberto David Fang http://www.csl.cornell.edu/~fang/ http://www.achronix.com/
testresults limit?
Hi, I'd like to post gcc testresults for 4.6.1 on powerpc-darwin8, but the length of my message (appx. 1MB due to large number of -flto failures) probably exceeds the mailing list's limit. What is this limit, and how would you recommend I prune the summary before re-sending it while keeping it meaningful? Fang -- David Fang http://www.csl.cornell.edu/~fang/
cachecc1 query
Hi, Has anyone used cachecc1 (http://cachecc1.sourceforge.net/) to cache gcc bootstraps of in recent years? The project looks rather stale, 2004. I would love to accelerate bootstraps of gcc rebuilds to test snapshots more frequently. Is there any interest in getting this to work? (I'm particularly interested in a darwin port, but would benefit from having it work on any modern platform.) Fang -- David Fang http://www.csl.cornell.edu/~fang/
Re: Call for testers: MPC 0.7 prerelease tarball
A prerelease tarball of the upcoming MPC 0.7 is available here: http://www.multiprecision.org/mpc/download/mpc-0.7-dev.tar.gz Hi, On powerpc-apple-darwin8 (32b): using mpfr-2.4.1, gmp-4.3.1 === All 45 tests passed === Target: powerpc-apple-darwin8 Configured with: /var/tmp/gcc/gcc-5370~2/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib --build=powerpc-apple-darwin8 --host=powerpc-apple-darwin8 --target=powerpc-apple-darwin8 Thread model: posix gcc version 4.0.1 (Apple Computer, Inc. build 5370) Apple Computer, Inc. version cctools-622.9~2, GNU assembler version 1.38 Fang David Fang http://www.csl.cornell.edu/~fang/ http://www.achronix.com/
Re: For some class F, I can declare a variable of type F::F, or F::F::F, etc.
We come across what seems to be a bug in gcc. If a class F has a public zero argument constructor, then we can declare a variable of type F::F, F::F::F, etc. For example, the following source file: // foo.cpp class F {}; F::F::F::F::F f; See: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11764 Still accepts-invalid with g++-4.3.2. compiles with out errors in g++. The result is as if f is declared with F f; This is the case with the stock/latest GCC in Debian GNU/Linux x86_64 (v.4.1.2) and in Cygwin (v.3.4.4). Is this the intended behavior? No. :) Fang David Fang Computer Systems Laboratory Electrical & Computer Engineering Cornell University http://www.csl.cornell.edu/~fang/ -- (2400 baud? Netscape 3.0?? lynx??? No problem!)
Re: Functional Purity
When categorising a functions purity i also would like to identify the cause of the impurity. In particular for a function that is impure i want to categorise the impurity cause as: * modifies global state * modifies a function parameter * modifies the object state (this is an extension of the function parameter on the "this" parameter) Hi, Sounds like you want to (at least): 1) automatically qualify every declaration (including parameters, member declarations, and member function declarations) with 'const'. 2) forbid the use of the '=' operator family (including +=, etc...) (might be redundant with #1) Does this accurately summarize your proposed analysis? As a crude start, maybe you could alter the syntax trees, and let the rest of compilation catch any resulting violations? The reason for posting this is to ask. Is there code in GCC that already does something "similar" in say one of the optimisation passes so i can get a look at how to get started on this? Fang David Fang Computer Systems Laboratory Electrical & Computer Engineering Cornell University http://www.csl.cornell.edu/~fang/ -- (2400 baud? Netscape 3.0?? lynx??? No problem!)
Re: operator=() issue
operator=() is private in ios_base. Using private inheritance of ios_base the program below fails in the constructor when '=' is used (but not during memory initialization). I don't understand why assignment is prohibited. art Program 1 fails # include using namespace std; class thing : private ios_base { ostream& xo; public: thing(ostream& y) : xo(y) { xo = y; } }; gcc.3.4.4 messaging x.cpp: In member function `std::basic_ios >& std::basic_ios >::operator=(const std::basic_ios >&)': /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/ios_base.h:784: error: `std::ios_base& std::ios_base::operator=(const std::ios_base&)' is private x.cpp:9: error: within this context std::ios_base was never meant to be copy-able/assign-able, this has nothing to do with public/private *inheritance*, since it is the members of the base that are private, and thus inaccessible to any derived classes. In your thing::thing ctor: "xo(y)" initializes the member *reference* (essentially taking the address of y), whereas "xo = y;" is assigning the *object* referenced by 'ox', which is not the same. This is why you hit the inaccessible assignment error. HTH, Fang David Fang http://www.csl.cornell.edu/~fang/ http://www.achronix.com/
Re: operator=() issue
One more thing to add ... Program 1 fails # include using namespace std; class thing : private ios_base { ostream& xo; public: thing(ostream& y) : xo(y) { xo = y; } }; gcc.3.4.4 messaging x.cpp: In member function `std::basic_ios >& std::basic_ios >::operator=(const std::basic_ios >&)': /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/ios_base.h:784: error: `std::ios_base& std::ios_base::operator=(const std::ios_base&)' is private x.cpp:9: error: within this context std::ios_base was never meant to be copy-able/assign-able, this has nothing to do with public/private *inheritance*, since it is the members of the base that are private, and thus inaccessible to any derived classes. In your thing::thing ctor: "xo(y)" initializes the member *reference* (essentially taking the address of y), whereas "xo = y;" is assigning the *object* referenced by 'ox', which is not the same. This is why you hit the inaccessible assignment error. The real problem is that you are assigning an ostream to an ostream, which is not allowed *in any context* because ostream ultimately derives from ios_base, which privatizes assignment. You are seeing this message about ios_base (misleading you to think it has to do with your thing class inheriting from ios_base) because the default assignment of class ostream (not explicitly defined) is invoking the default assignments of its base classes, including ios_base. This is more an issue of mis-using the standard ostream class. Fang David Fang http://www.csl.cornell.edu/~fang/ http://www.achronix.com/
Re: conversion of .cc 3.3.5 files to gcc 4.3.2
My c++ sourcefiles that compile with gcc 3.3.5 generate hundreds of errors if compiled with gcc 4.3.2. Where can I find guidelines on how to change my files? http://gcc.gnu.org/gcc-3.4/changes.html http://gcc.gnu.org/gcc-4.0/changes.html etc... under the C++ sections. In my experience, most C++ changes came from 3.4 and 4.0. Fang David Fang http://www.csl.cornell.edu/~fang/ http://www.achronix.com/
Re: gcc-4.4.0 Build Report: Success on Open Solaris 2008.11, x86_64
On Thu, Apr 30, 2009 at 7:30 AM, Tom Browder wrote: On Wed, Apr 29, 2009 at 18:28, Janis Johnson wrote: ... The preferred way to post test results is by running the script $SRC/contrib/test_summary from within the build directory. It produces a summary in the form of a script which will mail that summary to gcc-testresu...@gcc.gnu.org, where it will be archived Is there an alternative for systems without mail access? It will not execute the commands unless you pipe the script output to sh so you can copy and paste the output from the script into an email that you author by hand. Also, the end of the generated script attempts to move a bunch of files in the test area, so if you ship the script to another machine, you can skip that part. Fang David Fang http://www.csl.cornell.edu/~fang/ http://www.achronix.com/
Re: Using C++ in GCC is OK
For example, I think it goes without question that at this point we are limiting ourselves to C++98 (plus "long long" so that we have a 64-bit integer type); C++0x features should not be used. Using multiple inheritance, templates (other than when using the C++ standard library, e.g. std::list), or exceptions also seems overly aggressive to me. We should use features that are relatively easy for C programmers to understand and relatively hard for new C++ programmers to misuse. (For example, I think constructors and destructors are pretty easy and hard to misuse.) This sort of leads to questions about C++ libraries used by gcc: 1) is there interest in using libstdc++ (gcc's version) in whole or a subset? (which subset?) For example, I think it would be reasonable to use most standard containers. could be useful, but itself relies on function overloading for optimization in some places. Overloading in any form could be debatable, if you're being conservative about feature selection. 2) should there be a double standard w.r.t. std library use? Allowing a greater set of language features for the sake of using libstdc++, but a restricted set of C++ for non-libstdc++ libraries and data structures? iostreams, for example, uses multiple inheritance (even multiple virtual inheritance), should that be sufficient grounds for forbidding use of iostreams? Fang David Fang http://www.csl.cornell.edu/~fang/ http://www.achronix.com/
Re: GCC 4.5.2 Release Candidate available from gcc.gnu.org
Hi, Is there time to include the 4.5 backport patch for: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46170 (is fixed on trunk, a 4.5.0 regression, 4.4.3 branch regression) The comments indicate that the patch is good to go for 4.5, but I didn't see an entry log that it was actually committed. Fang A release candidate for GCC 4.5.2 is available from ftp://gcc.gnu.org/pub/gcc/snapshots/4.5.2-RC-20101208 and shortly its mirrors. It has been generated from SVN revision 167585. I have so far bootstrapped and tested the release candidate on x86_64-linux, bootstraps and tests on {i686,ia64,ppc,ppc64,s390,s390x}-linux are running. Please test it and report any issues to bugzilla. The branch remains frozen and all checkins until after the final release of GCC 4.5.2 require explicit RM approval. If all goes well, I'd like to release 4.5.2 early next week. Richard. David Fang http://www.csl.cornell.edu/~fang/ http://www.achronix.com/
Re: Successful built of 3.4.5, failing gctest from testsuite
otect/signals /bin/sh: line 1: 16525 Segmentation fault LD_LIBRARY_PATH=../../gcc $dir/$tst FAIL: gctest === 1 of 1 tests failed === make[3]: *** [check-TESTS] Error 1 make[3]: Leaving directory `/local/install/gcc/i686-pc-linux-gnu/boehm-gc' make[2]: *** [check-am] Error 2 make[2]: Leaving directory `/local/install/gcc/i686-pc-linux-gnu/boehm-gc' make[1]: *** [check-recursive] Error 1 make[1]: Target `check' not remade because of errors. make[1]: Leaving directory `/local/install/gcc/i686-pc-linux-gnu/boehm-gc' make: *** [check-target-boehm-gc] Error 2 make: Target `check' not remade because of errors. Does anybody know what went wrong, please? Cheers, Michal. --- end reference message David Fang Computer Systems Laboratory Electrical & Computer Engineering Cornell University http://www.csl.cornell.edu/~fang/ -- (2400 baud? Netscape 3.0?? lynx??? No problem!)
Re: Successful built of 3.4.5, failing gctest from testsuite
> Sounds like /bin/sh puked...What shell was that GCC configured with? > P.S. That looks to be a boehm-gc test that failed...which really > doesn't matter much (from an end-user perspective) unless you use GCJ... Hi, On the contrary, it wasn't /bin/sh that died, it was gcc that seg-faulted, and /bin/sh that forwarded the message. I realize that boehm-gc matters for gcj, which we, personally, don't use, however I could very well imagine that other developers using SUSE linux might be interested in a stable gcj. What I didn't mention before was that we ran that prerelease of g++-4.0.2 (20050901) on a set of basic template data structure tests our project, which produced wrong-code (by assertion failure) on a simple std::auto_ptr-like test (and everything that depended on the success of those features tested). This problem however, never manifested in any of the official releases, 4.0.0 through 4.0.2 --- it is senseless to report it against a prerelease. SUSE 10.0 developers might want to be aware of this if they are only using 4.0.2 (20050901 prerelease). David Fang
Re: Since r110852: Mainline broken for VAX (cc0 target)
> > And now: How do you actually find the PRs? I seem to wrongly use > > Bugzilla's search engine. I submitted "int_mode_for_mode" into the > > "Enter a bug # or some search terms" box of > > http://gcc.gnu.org/bugzilla/ , which didn't find anything. I don't > > really feel like wasting your time with doing my homework... > > Well I look at all bug reports that come in so I knew this one was > already filed. Other than that searching for int_mode_for_mode will > help. Also searching for cc0 can also find it too. I used to find Zarro Boogs, until I remembered to search for "ALL term_to_search_for". The keyword 'ALL' is kind of important. David Fang
Re: Question about use of C++ copy constructor
Hi, Didn't see a reply yet, so I'll chime in. The relevant text appears in gcc-3.4's release notes: "When binding an rvalue of class type to a reference, the copy constructor of the class must be accessible." PR 12226 seems to be the mother bug related to this (many dupes). Fang > foo.cc: In function ??void foo(const B&)??: > foo.cc:3: error: ??B::B(const B&)?? is private > foo.cc:13: error: within this context > > I don't understand why, as I don't see the copy constructor being used > anywhere. It seems to me this code should create a temporary for the > duration of the statement, and pass the temporary as a reference to > b.fn. This code compiles with icc with no errors. > > What is wrong with this code? > > class B { > private: > B(const B&); > void operator=(const B&); > > public: > B(); > void fn(const B &other) const; > }; > > void foo (const B& b) > { > b.fn(B()); > } >
Re: template class scoping rules
Hi, Since 3.4, (template-)dependent lookup has been changed to conform to the standard. In particular, from http://gcc.gnu.org/gcc-3.4/changes.html: "In a template definition, unqualified names will no longer find members of a dependent base." This allows lookups to be bound at template instantiation time. (Consider the case where Two is specialized after Three is defined, but before Three is instantiated.) Two is a dependent base of Three. Another way of qualifying the name to lookup is to use "this->m_Public". HTH Fang > test.cpp: In constructor 'Three::Three()': > test.cpp:20: error: 'm_Public' was not declared in this scope > > class One > { > public: > One(); > ~One(); > > public: > int m_Public; > }; > > template class Two : public One > { > public: > Two() {m_Public = 0;} > }; > > template class Three : public Two > { > public: > Three() {m_Public = 0;} > };
bugzilla confused?
Hi, I tried to add myself to the CC list of a PR (27397), but get the following error message: "You tried to change the Keywords field from ice-on-invalid-code, error-recovery, monitored to error-recovery, ice-on-invalid-code, monitored, but only the assignee or reporter of the bug, or a sufficiently empowered user may change that field." I did not, however, attempt to change any fields. The error message is strange in that it claims I reordered the first two keywords. This problem however does not occur with other PRs. Any clues? Fang
Re: 4.2 hasn't bootstrapped on powerpc-apple-darwin G5 machine for a very long time
> > Bradley Lucier writes: > Brad> 4.2 hasn't bootstrapped on powerpc-apple-darwin G5 machine for a very > Brad> long time. I'm seeing the same problem as > Brad> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27121 > Brad> It would be nice if this were remedied. I do try to test gcc > Brad> versions before release. > > For the time-being, you can bootstrap with --disable-multilib. > The real solution requires Apple to provide an updated cctools with a > working ld64. Hi, FWIW, the 20060415 mainline (4.2) snapshot bootstrapped for me, using odcctools-20060413 (odcctools-590.36od13). This machine is a dual G5 (ppc970) using OS X 10.3.9, and Apple's gcc-3.3 (build 1640). However, before building, I patched the following 2 files: In gcc/config/darwin.h: at: #define LINK_COMMAND_SPEC : replace:/usr/bin/libtool with: /path/to/odcctools/bin/libtool In libstdc++-v3/scripts/make_exports.pl (for OS X 10.3 only): replace:nm -P with: /path/to/odcctools/bin/nm -P (probably not necessary if this nm is already found first in path) Configure command (your paths may vary): ../configure --prefix=/Users/fang/local/gcc-4.2 \ --program-suffix=-4.2 \ --disable-nls \ --with-gmp=/sw \ --with-mpfr=/sw \ --infodir='${prefix}/share/info' \ --with-included-gettext \ --host=powerpc-apple-darwin`uname -r|cut -f1 -d.` \ `if test ! -f /usr/lib/libSystemStubs.a ; then echo -n "--with-as=/Users/fang/lib/odcctools/bin/as --with-ld=/Users/fang/lib/odcctools/bin/ld" ; fi` The default languages enabled are c,c++,java,fortran,objc according to configure. I also made sure all the odcctools came first in my path, a blunder I made earlier. GMP 4.1.4 and MPFR are installed in /sw. It might not hurt to add a few hints to http://gcc.gnu.org/install/specific.html#powerpc-x-darwin since I (and several other PR reporters) also had trouble bootstrapping 4.2 a while back. Many thanks to all who help maintain the powerpc-apple-darwin port. Fang
Re: GCC 4.3 Platform List
> On Wed, 2006-09-20 at 20:21 -0700, Andrew Pinski wrote: > > > i386-unknown-freebsd > > The last time a freebsd testresult was sent to the list from the > mainline was in May, maybe that is a sign that we should downgrade it to > secondary from primary. > > Thanks, > Andrew Pinski I've got an i386 FreeBSD 4.3 (a dinosaur) cluster around that I could conceivably use to fire up some testresults when I have time [1], if the said results are desired... :D Fang [1] I'm *hosed* until mid-October. (Some effort to build and install missing dependencies required...)
Re: If you had a month to improve gcc build parallelization, where would you begin?
Apart from parallelism, I wished the stage 2,3 compilations had a hook for ccache-ing to accelerate rebuilds. ccache is capable of detecting changes in the compiler binary (see CCACHE_COMPILERCHECK in man page) so when stage 1's result doesn't change, there's potential for cache-hitting in stage 2. I've done this with clang manual bootstraps, for example. Fang -- David Fang http://www.csl.cornell.edu/~fang/
Re: If you had a month to improve gcc build parallelization, where would you begin?
Quoting David Fang : Apart from parallelism, I wished the stage 2,3 compilations had a hook for ccache-ing Even better would be distcc, i.e. distribute the new compilers around a cluster so you don't need to have all your cores and DIMMS on the same motherboard to harness hugely massive parallelization. The same hook could be used for both, it would just be a command prefix variable, like "BOOT_CC_PREFIX". Or you could set CCACHE_PREFIX to call distcc from ccache as well. Fang -- David Fang
Re: c++0x concepts in gcc call
Will you allow people to call in as an observer, and not a participater? You beat me to the post! I'm primarily interested in listening in, or reading a transcript at the very least. Yes, as long as we have enough lines for full participants. Please note that I'll summarize this call in email afterward, so that mechanism will also be available to lurkers. Is there a chance of any sort of streaming audio broadcast instead of having to dial in? Fang David Fang Computer Systems Laboratory Electrical & Computer Engineering Cornell University http://www.csl.cornell.edu/~fang/ -- (2400 baud? Netscape 3.0?? lynx??? No problem!)
Re: I don't understand some of gcc-4.1-20070514
> > Dozens, literally, just browse the bug database. If you want to help, pick > > one of them and try to fix it. > > > How? > I can not browse http://gcc.gnu.org/bugzilla/ because has not the > 'browse' button. Ah, the joys of bugzilla. For 4.1 issues, you can go to GCC's front page and under Previous Release Series 4.1.2, click on Serious Regressions for a list (which is a bookmarked search). A bookmark to new reports over the past 7 days can be found: http://gcc.gnu.org/bugzilla/weekly-bug-summary.cgi which is "Weekly bug summary" from http://gcc.gnu.org/bugzilla/report.cgi With a bugzilla account, you can save searches, e.g.: http://gcc.gnu.org/bugzilla/buglist.cgi?cmdtype=runnamed&namedcmd=4.1%20%5C%204.0%20regressions (from my saved searches) is a list of regressions in 4.1 NOT present in 4.0. >From any bug-list-summary such as the above, you can click "Edit Search" for tweak an existing search as a starting point. Try finding all new bug reports opened in the last 21 days, or regressions in 4.2 that are not in 4.1 from the above examples and try more elaborate searches. I suggest playing around with the search interface until you're comfortable. Happy bug hunting! Fang
Re: I'm sorry, but this is unacceptable (union members and ctors)
> My general opinion is it serves no one to be regressive about extensions. > You can always advise against using them, and somewhere down the road, the > specs can always decide an extension is worth supporting more conservatively > or adding to a future spec altogether. > > It would be interesting for someone to try to make a practical argument that > is anything but a nest of technicalities, as to why ctors and unions > shouldn't be mixable. Hi, <$.02> It's not highly techinical to see the fundamental difficulty with mixing ctor/dtors and unions. At the core of C++ is the association with constructors as initialization actions at the beginning of an object's lifetime, and likewise destructors associate with actions take at the end of lifetime. C++ defines the actions precisely: PODs (including pointers) need no action, objects of classes invoke their (in-charge) destructors. >From this, it is evident that a union of PODs poses no problems. As soon as you have destructors, the language gives no automatic means of deciding which destructor (if applicable) to call. How would you make the compiler Do The Right Thing (TM)? Until unions are automatically tagged/embedded with type information, the language simply doesn't support proper destruction of non-trivial unions. You can find other dialects of C or C++ that do support this. Any dialect that adds these semantics cannot really be a trivial extension of C++. However, as others have hinted, it is not impossible to emulate tagged unions in C++, if you are willing to pay the bookkeeping overhead. (Surely you must know *somewhere* in your program what's what...) If you wrap your union in a class with a type enum, you can create a lookup-table/switch-case of member type destructors to invoke in the destructor of the wrapped class. Placement delete (counterpart of placement new) is used for in-place destruction. Some reinterpret_cast may come in handy if you're really into abusing the type system. > In the meantime, I've always intended to hack the bugger (in the always > bandied about GNU tradition) if I must. It bothers me though to think that > no one has charted this territory before. David Fang Computer Systems Laboratory Electrical & Computer Engineering Cornell University http://www.csl.cornell.edu/~fang/ -- (2400 baud? Netscape 3.0?? lynx??? No problem!)
Re: I'm sorry, but this is unacceptable (union members and ctors)
> On 6/16/07, michael.a <[EMAIL PROTECTED]> wrote: > > > > As for "placement new", from what I can find, it is unsafe to use with any > > memory that isn't part of the heap. > Huh? It can be used with stack variables, we have tests in the > testsuite where we use it with such. > > > As for the discussion of unions, placement new is way too much overhead. > > placement new has no overhead, that is by design. I literally mean > placement new does nothing except for changing the dynamic type and > calling the constructor. Where is the overhead there? I see unions > having more overhead than placement new as unions are not as well > optimized. ... And when the said constructor is trivial (e.g. for POD), then you pay nothing, zilch, nada. (same with placement delete) In C++, some things you write (od don't write) are merely abstractions for what should happen, which can represent 'nothing'. Only if you ask for pessimized code can you possibly pay function call overheads on de-inlined empty functions. Fang
Re: What is a regression?
I still think that is too strong a position. A good fraction of compiler time is spent bugging out user code.. one could even say the job of a compiler is not generating machine code, but telling programmers they're idiots :) Every compiler version I've tried has been telling me this for years. When can we expect some *positive* feedback from compilers? "Congratulations, your code is less of a spaghetti-mess than it was last revision, keep up the good work." I smell a request for enhancement... Fang
Re: ctor style cast vs c style cast
today i've run into this: if i cast a double value to an unsigned int using the C style cast when passing it to printf, it's fine. however, if i use the ctor style cast, i get a compile error. in theory, these two should do the same: create a temporary unsigned int, and assign the double to it after conversion, just the syntax is different. made a little test, see attachment. plain int's are ok, but when qualified with signed/unsigned the error occurs. Hi, I've run into this before, not sure if it's a bug, but what I do is use typedefs to work-around. (gcc has rejected your example on your error-marked lines for a long time) Try the following for kicks: typedef signed int sint; typedef unsigned intuint; typedef const int cint; typedef const sint csint; typedef const uint cuint; and replace them where you use ctor style initializations. David Fang Computer Systems Laboratory Electrical & Computer Engineering Cornell University http://www.csl.cornell.edu/~fang/ -- (2400 baud? Netscape 3.0?? lynx??? No problem!)