------- Additional Comments From gdr at integrable-solutions dot net  
2004-11-26 03:16 -------
Subject: Re:  [3.3/3.4/4.0 regression] -Wsynth warning in <complex>

"bangerth at dealii dot org" <[EMAIL PROTECTED]> writes:

| I am not an expert in ABI questions, but in my naive world constructors 
| are somewhat different than regular functions if they are declared 
| inline (and synthesized constructors always are): 

The issue is not taking the address of the copy constructor, but the
change in calling convention.  It you declare a copy consttuctor, you
change the ABI in the sense that the compiler is now forced to pass 
everything in stack, where it used to pass it in register.

| - you can't take the address of a constructor 
| - (old) code linked against a new libstdc++ with a new constructor would  
|   be fine since the old synthesized constructor had been inlined 

No, it won't because on plateforms where they are expecting the result
of a complex<>-returning function to come in register they will get
garbage. 

The diagnostic is nonsensical.  The fix is to fix the diagnostic, not
to paper over the problem.

-- Gaby


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18644

Reply via email to