Re: If you had a month to improve gcc build parallelization, where would you begin?

2013-04-03 Thread David Fang
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?

2013-04-03 Thread David Fang

Quoting David Fang f...@csl.cornell.edu:

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



cachecc1 query

2011-07-13 Thread David Fang

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/



testresults limit?

2011-07-06 Thread David Fang

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/



Re: [PPL-devel] Parma Polyhedra Library 0.11.1

2011-02-22 Thread David Fang

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/



Re: GCC bootstrap mismatch on OS X 10.4

2011-02-14 Thread David Fang



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: GCC 4.5.2 Release Candidate available from gcc.gnu.org

2010-12-08 Thread David Fang

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: Using C++ in GCC is OK

2010-05-31 Thread David Fang

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::listX), 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.  algorithm 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: Call for testers: MPC 0.7 prerelease tarball

2009-09-04 Thread David Fang

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: gcc-4.4.0 Build Report: Success on Open Solaris 2008.11, x86_64

2009-04-30 Thread David Fang

On Thu, Apr 30, 2009 at 7:30 AM, Tom Browder tom.brow...@gmail.com wrote:

On Wed, Apr 29, 2009 at 18:28, Janis Johnson janis...@us.ibm.com 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: conversion of .cc 3.3.5 files to gcc 4.3.2

2009-04-28 Thread David Fang

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: operator=() issue

2009-04-10 Thread David Fang
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 ostream

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_ioschar, std::char_traitschar  std::basic_ioschar, 
std::char_traitschar ::operator=(const std::basic_ioschar, std::char_traitschar )':
/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

2009-04-10 Thread David Fang

One more thing to add ...


Program 1 fails
# include ostream

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_ioschar, std::char_traitschar  
std::basic_ioschar, std::char_traitschar ::operator=(const 
std::basic_ioschar, std::char_traitschar )':
/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: Functional Purity

2008-11-28 Thread David Fang

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: For some class F, I can declare a variable of type F::F, or F::F::F, etc.

2008-10-12 Thread David Fang
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: c++0x concepts in gcc call

2008-01-22 Thread David Fang

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: ctor style cast vs c style cast

2007-12-13 Thread David Fang

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!)


Re: What is a regression?

2007-10-23 Thread David Fang

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: I'm sorry, but this is unacceptable (union members and ctors)

2007-06-16 Thread David Fang
 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: I'm sorry, but this is unacceptable (union members and ctors)

2007-06-15 Thread David Fang
 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.
/$.02

 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 don't understand some of gcc-4.1-20070514

2007-05-18 Thread David Fang
  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=runnamednamedcmd=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: raising minimum version of Flex

2007-01-21 Thread David Fang
   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: Build snapshots according to a more regular schedule

2007-01-05 Thread David Fang
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=advancedshort_desc_type=allwordssubstrshort_desc=4.1known_to_fail_type=allwordssubstrknown_to_work_type=allwordssubstrlong_desc_type=allwordssubstrlong_desc=bug_file_loc_type=allwordssubstrbug_file_loc=gcchost_type=allwordssubstrgcchost=gcctarget_type=allwordssubstrgcctarget=gccbuild_type=allwordssubstrgccbuild=keywords_type=allwordskeywords=bug_status=UNCONFIRMEDbug_status=NEWbug_status=ASSIGNEDbug_status=SUSPENDEDbug_status=WAITINGbug_status=REOPENEDpriority=P1priority=P2priority=P3emailtype1=substringemail1=emailtype2=substringemail2=bugidtype=includebug_id=votes=chfieldfrom=chfieldto=Nowchfieldvalue=query_based_on=4.1%20%5C%204.0%20regressionsnegate0=1field0-0-0=short_desctype0-0-0=substringvalue0-0-0=4.0field0-1-0=nooptype0-1-0=noopvalue0-1-0=

Fang




Re: Cannot call pure virtual function from base class constructor.

2006-11-25 Thread David Fang
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
 DataSetDATA, IDXTYPE::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 gcc with distcc

2006-11-19 Thread David Fang
  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: build gcc with distcc

2006-11-17 Thread David Fang
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

2006-11-17 Thread David Fang
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 URL: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: regenerating reliably GCC configure files

2006-11-16 Thread David Fang
   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: regenerating reliably GCC configure files

2006-11-15 Thread David Fang
 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,
feedback
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.
/feedback

Fang



Re: r117741

2006-10-17 Thread David Fang
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: GCC 4.3 Platform List

2006-09-20 Thread David Fang
 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: 4.2 hasn't bootstrapped on powerpc-apple-darwin G5 machine for a very long time

2006-05-03 Thread David Fang
  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




bugzilla confused?

2006-05-02 Thread David Fang
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: template class scoping rules

2006-03-14 Thread David Fang
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 Twofoo is specialized after ThreeT is
defined, but before Threefoo is instantiated.)

TwoT is a dependent base of ThreeT.  Another way of qualifying the
name to lookup is to use this-m_Public.

HTH

Fang


 test.cpp: In constructor 'ThreeT::Three()':
 test.cpp:20: error: 'm_Public' was not declared in this scope

 class One
 {
 public:
   One();
   ~One();

 public:
   int m_Public;
 };

 template class T class Two : public One
 {
 public:
   Two() {m_Public = 0;}
 };

 template class T class Three : public TwoT
 {
 public:
   Three() {m_Public = 0;}
 };




Re: Question about use of C++ copy constructor

2006-03-13 Thread David Fang
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: Since r110852: Mainline broken for VAX (cc0 target)

2006-02-12 Thread David Fang
  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: Successful built of 3.4.5, failing gctest from testsuite

2006-01-29 Thread David Fang
 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!)