[Bug c++/40036] Initializer incorrectly reordering arguments
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40036 Paolo Carlini changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID --- Comment #7 from Paolo Carlini 2012-01-19 23:29:17 UTC --- I don't see the point of keeping this open, frankly. If submitter has a compact testcase neatly showing an issue, please re-open.
[Bug c++/40036] Initializer incorrectly reordering arguments
--- Comment #6 from jwbates at mac dot com 2009-05-26 05:26 --- Update: after some restructuring, the problem still occurs when using the -g flag, but does not occur when the -O flag is used. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40036
[Bug c++/40036] Initializer incorrectly reordering arguments
--- Comment #5 from jwbates at mac dot com 2009-05-06 06:39 --- All of the uninitialized memory errors in valgrind appear to occur after I do the computation, when I'm just trying to print the results. I can convince myself that there's a good chance that the address swap is leaving big chunks of my real data out in the cold, beyond my control. I mean, if all of my data is sitting in my lhs, and that's being used as the rhs, then it won't get touched. And for what it's worth, when I run valgrind on a version compiled with icc, I get no memory errors. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40036
[Bug c++/40036] Initializer incorrectly reordering arguments
--- Comment #4 from pinskia at gcc dot gnu dot org 2009-05-06 06:08 --- hmm, valgrind says there are some uninitiated memory. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40036
[Bug c++/40036] Initializer incorrectly reordering arguments
--- Comment #3 from jwbates at mac dot com 2009-05-06 05:25 --- Not sure at all, as I have very little experience dealing with this kind of issue. To clarify one point of ambiguity: when I mentioned swapping the order of the arguments to match the correct evaluation behaviour. So, my constructor Expression(lhs, rhs) calls the initializer _potential(rhs, lhs), which is correct for my math. However, that's not the problem that I'm seeing. When I set the breakpoint at Expression(lhs, rhs) and check the locations, lhs is at 0x##6c, and rhs is at 0x##00 (or some such). When I step into _potential(p, other), I should expect p to be rhs and other to be lhs, so _potential(0x##00, 0x##6c), but what I see is _potential(0x##6c, 0x##00), which is pretty unambiguously incorrect. I'm perfectly willing to believe that my code is wrong, but I don't understand what kind of code I could write (or fail to write) that could lead to a direct call to an initializer with the argument addresses (but not the argument types) swapped. If there's any place else that I can look, or any potential workarounds I can try, I'll be happy to. It just looks, feels, and quacks like a bug to me. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40036
[Bug c++/40036] Initializer incorrectly reordering arguments
--- Comment #2 from pinskia at gcc dot gnu dot org 2009-05-06 05:02 --- Are you sure you are not running into unspecified behavior dealing with subexpression is computed without a sequence point? Because from your description you are running into that issue. As you mentioned you swapped around lhs and rhs and get the results you expect. And ICC produces a different result than GCC too. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40036
[Bug c++/40036] Initializer incorrectly reordering arguments
--- Comment #1 from jwbates at mac dot com 2009-05-06 04:09 --- Created an attachment (id=17806) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17806&action=view) output of g++ -save-temps -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40036