C++: Non-virtual thunks to dtors no longer being emitted in comdat sections?

2011-01-07 Thread Dave Korn

Evening all,

  Something has changed in the last few weeks that has resulted in, as the
subject says, non-virtual thunks (in this case, all specifically to dtors, but
I don't know if that is relevant or mere accident) no longer being emitted as
comdat for i686-pc-cygwin; I haven't checked other targets.  Instead they are
emitted in the .text section - of every object file that includes the related
class definition header file.  Naturally this leads to multiple definition
errors at link-time(*).

  Can anyone think of a recent change which might have impacted on the way
these thunks are emitted?  Or alternatively point me at the responsible area
of the code for further debugging?

cheers,
  DaveK

-- 
(*) - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218


Re: Bug triage

2011-01-07 Thread Tony Poppleton
Thanks for the feedback.

> Moving the test case into an attachment won't be useful.  What would be
> useful is recasting the test case into a form which can be used in the
> gcc testsuite, if possible

Whilst I would like to be able to submit new test cases as I go, as
you (Ian) pointed out this may be too difficult for
missed-optimization bugs as I cannot confirm if the assembler is fixed
- I can only confirm if it shows the inefficiency as listed in the bug
description.  Anyway, I will see what I can manage.

Out of interest, is there a way of linking bugs in the bug database
with their test case in the gcc test-suite, and vice-versa?  There
doesn't appear to be a field for this in the bug report.

> > 5. Similarly, if I mark a bug as known to work in 4.5.2, will this
> > lead to it eventually being closed?

Just to clarify what Joseph was saying on this point, it seems that in
order to help close off any bugs, I would need to run the test on 4
versions of gcc; 4.3.5, 4.4.5, 4.5.2 and trunk (4.6.0), and confirm it
works for all of them.  What exact gcc code should I use for this?
 - the latest stable build for each version?
 - or, the latest code from each branch?
 - or, the latest snapshot release for each branch?

It seems to me there are pros and cons of each, so it isn't clear
which is the best one.  In particular, if I don't use a stable release
branch, then what version should I put for the "Known to fail/work"?
For example, if I use the trunk and I mark bugs as "Known to fail" in
"4.6.0", and the bug is eventually fixed before 4.6.0 is shipped, then
the field will be incorrectly set.

> There are very many UNCONFIRMED bugs.  If you can confirm that such a
> bug really is a bug in GCC and is still present on trunk, then moving it to
> NEW is useful.

Whilst I would like to be able to do this, as a first time contributor
to the project do I really have the authority to mark a bug as NEW?
Otherwise what is stopping the original reporter from just marking the
bug as NEW and effectively skipping the UNCONFIRMED state all
together?

I have a few more questions about the whole bug management process and
how I may contribute...

To take a random example, enhancement
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26902 has been open since
2006, it has a fairly comprehensive list of "known to fail" versions
(presumably versions that were current at the time), and it has
several comments.  However it remains in the UNCONFIRMED state, and
has never had the "Target Milestone" set.

I appreciate that optimizing inline asm may be a rare use case,
especially when it works without using inline asm (as per comments),
however it is a valid enhancement nonetheless (and presumably the
actual use case is more complicated than reported in the bug
description).

If I were to test this enhancement on the 4 versions of gcc and
confirm it is still an open enhancment, then should it be marked as
NEW, with a "Target Milestone" of 4.6.0, and the priority potentially
lowered to P4 or P5 (given it is rare and old)?

Regards,
Tony


Re: Bug triage

2011-01-07 Thread Joseph S. Myers
On Thu, 6 Jan 2011, Ian Lance Taylor wrote:

> > 5. Similarly, if I mark a bug as known to work in 4.5.2, will this
> > lead to it eventually being closed?
> 
> Yes, when the 4.4 release is closed, bugs known to work in 4.5 will be
> closed.

That's not how it works.  I did the last couple of branch closures (4.1 
and 4.2); I only went through the regression bugs or open bugs with a 
milestone on the closed branch, and for those bugs interpreted the bug log 
to determine whether they should be retargetted or closed.  For any other 
bug (i.e. any non-regression), if it works on 4.5 and trunk it should be 
closed, and if it works on 4.5 but not on trunk it should be marked as a 
regression.  So marking a bug as known to work in 4.5 is only useful if 
you also mark it as a regression in 4.6 (which of course means testing on 
trunk) (or, as the case may be, as a 4.3/4.4 regression from some older 
release that was fixed in 4.5 but may yet be fixed in 4.3/4.4).  If it 
works in 4.5 and is not a regression on trunk or an open branch, it should 
just be closed; we don't keep bugs open for things that work on trunk 
unless they are regressions in a release branch.

There are very many UNCONFIRMED bugs.  If you can confirm that such a bug 
really is a bug in GCC and is still present on trunk, then moving it to 
NEW is useful.

-- 
Joseph S. Myers
jos...@codesourcery.com


Re: Bug triage

2011-01-07 Thread Jonathan Wakely
On 7 January 2011 04:59, Tony Poppleton wrote:
> Hi,
>
> I would like to help with some gcc bug triage, and have a few
> questions about doing so.

Excellent, thanks for volunteering your time.

> For example, in cases where a bug doesn't have a test case as an
> attachment, but instead embedded in the description, would it be of
> use for me to create the attachment?

I can't speak for anyone else, but personally I prefer testcases
embedded in the description or comments, as long as they're a
reasonable size (20 or 30 lines is fine)

That lets me see the code without having to download the attachment,
which depending on the content-type might need to be saved and then I
have to open a terminal or file manager to open the file, just to see
what the test looks like.  If it's in a comment I can glance at it and
if I want to test it just copy and paste it into a terminal.


Re: Bug triage

2011-01-07 Thread Jakub Jelinek
On Thu, Jan 06, 2011 at 10:31:28PM -0800, Ian Lance Taylor wrote:
> > 2. A large number of bugs seem to not be targetted for any particular
> > release, e.g. of the 4389 open bugs, only 296 are listed as targetted
> > for 4.6.0.  Why is there such a discrepency?
> >
> > Incidentally, my main focus will be on these untargetted bugs rather
> > than on bugs that are already scheduled to be fixed.
> 
> For an open bug, a target of 4.6.0 means only that the bug is known to
> fail on current mainline.  It doesn't mean that the bug is more likely
> to be fixed for 4.6.0 than any other current bug.  At least, as far as I
> know; the release managers or bugmasters may have a better idea.

target field is mainly used for tracking the regressions (the canned queries
from gcc.gnu.org homepage).  For a regression (with [4.x/4.y/4.z Regression]
in the subject) it should be set to the next patchlevel version of the gcc
release in which we'd like it to be fixed, if it is decided that it won't be
fixed say in 4.4 because the fix is too invasive there, target will be changed
to 4.5.3 etc.

> > 3. If I mark a bug as known to fail in 4.5.2, will someone else then
> > schedule it to be fixed in 4.6.0?
> 
> No.  People choose bugs to work on based mainly on the priority and on
> whether the bug is a regression or not.  As far as I know people do not
> look at the target field.

The queries do though.

Jakub


Re: Unrecognized option '-Wl,-rpath' for jv-convert

2011-01-07 Thread Andrew Haley

On 01/06/2011 09:28 PM, Gerald Pfeifer wrote:

On Thu, 6 Jan 2011, Ralf Wildenhues wrote:

Could be libtool issue or lib-link.m4 one (or gcj one).  Can you send
   ./libtool --tag=GCJ --config
output?


I assume you mean from libjava in the build tree?  Attached.

(Note this is now x86_64-portbld-freebsd8.2, newer than the original
report, but the same failure.)


Does passing '-Wl,-rpath -Wl,/foo' to gcj work for a small example
program for you?


I played around, and modifying the failing command line (that is,
with all those -B, -L,... options) I still got the same failure.

Note, if I remove -Wl,-rpath from that invocation, the failure is
still the same, so that seems to come from gcj itself?


It looks as though the -rpath arg isn't being passed correctly.  I
just can't figure out why this should be different on bsd.

I think this just needs to be debugged.  It should be pretty obvious
what's happening.

Andrew.