[Bug c++/22252] [4.0/4.1 Regression] pragma interface/implementation still break synthesized methods
--- Comment #10 from mmitchel at gcc dot gnu dot org 2006-01-15 22:43 --- The claim in Comment #9 is that this is a 4.1 regression as well as a 4.0 regression, so I've udpated the subject line. It would be interesting to know if this affects mainline as well. -- mmitchel at gcc dot gnu dot org changed: What|Removed |Added Summary|[4.0 Regression] pragma |[4.0/4.1 Regression] pragma |interface/implementation|interface/implementation |still break synthesized |still break synthesized |methods |methods http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22252
[Bug c++/22252] [4.0/4.1 Regression] pragma interface/implementation still break synthesized methods
-- What|Removed |Added AssignedTo|unassigned at gcc dot gnu |mark at codesourcery dot com |dot org | Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22252
[Bug c++/22252] [4.0/4.1 Regression] pragma interface/implementation still break synthesized methods
-- What|Removed |Added Keywords||diagnostic Summary|pragma |[4.0/4.1 Regression] pragma |interface/implementation|interface/implementation |still break synthesized |still break synthesized |methods |methods Target Milestone|--- |4.0.2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22252
[Bug c++/22252] [4.0/4.1 Regression] pragma interface/implementation still break synthesized methods
--- Additional Comments From matz at suse dot de 2005-06-30 15:01 --- Andrew: that's not a diagnostic issue. While the diagnostic (the warning) indeed is wrong and misleading (and probably points to the underlying cause of this issue), the actual error I'm complaining about is the link error, due to not emitting an out-of-line copy of A::A() in a.cc as it would be required. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22252
[Bug c++/22252] [4.0/4.1 Regression] pragma interface/implementation still break synthesized methods
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-06-30 15:10 --- (In reply to comment #1) Yes which is why I did not confirm it yet because I did not look at fully. I just added the diagnostic keyword because it is still a wrong warning. I am adding wrong-code also. Reduced testcase: a.ii # 1 a.cc # 0 built-in # 1 command line # 1 a.cc #pragma implementation # 1 a.h 1 struct B { B(){}; ~B(){} }; #pragma interface struct A { B a; }; # 3 a.cc 2 use.ii # 1 use.cc # 0 built-in # 1 command line # 1 use.cc # 1 a.h 1 struct B { B(){}; ~B(){} }; #pragma interface struct A { B a; }; # 2 use.cc 2 A a; int main() {} -- What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed||1 Keywords||wrong-code Last reconfirmed|-00-00 00:00:00 |2005-06-30 15:10:43 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22252
[Bug c++/22252] [4.0/4.1 Regression] pragma interface/implementation still break synthesized methods
--- Additional Comments From matz at suse dot de 2005-06-30 15:23 --- Ah, I see. Note that you must compile the reduced testcase (thanks for that) with -O0, or with -fno-inline, otherwise the A::A ctor will be inlined in use.cc (making the warning about the non-availability of it even more funny ;-) ), and not lead to the link error. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22252