_Complex double c; _Complex double foo(void) { _Complex double *cp = &c; __real c = __imag c; return *cp; } has in alias1: foo () { complex double * cp; complex double D.1527; double D.1526; <bb 2>: cp_1 = &c; # VUSE <SFT.0_2>; D.1526_3 = IMAGPART_EXPR <c>; # SFT.1_5 = V_MUST_DEF <SFT.1_4>; REALPART_EXPR <c> = D.1526_3; # VUSE <SFT.1_5>; D.1527_6 = *cp_1; # <retval>_8 = V_MUST_DEF <<retval>_7>; <retval> = D.1527_6; # VUSE <<retval>_8>; return <retval>; } note how D.1527_6 = *cp_1; misses VUSE <SFT.0_2>
I'm working on a fix. find_func_aliases needs to handle complex types like AGGREGATE_TYPE_P types.
Subject: Bug 26439 Author: rguenth Date: Thu Feb 23 16:03:47 2006 New Revision: 111389 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=111389 Log: 2006-02-23 Richard Guenther <rguenther@suse.de> PR middle-end/26439 * tree-ssa-structalias.c (find_func_aliases): Handle complex types like aggregate types. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-structalias.c
Fixed.
Actually I could not reproduce this with "4.2.0 20060221"? Is it only with the patch to fix PR 26421?
Actually this looks like it is x86 specific. Please next time add the target if you think it is x86 specific and also pelase mention this was also using the C++ front-end.
Actually I cannot reproduce this with "4.2.0 20060218" either on x86? What were you doing to reproduce this?
(In reply to comment #6) > Actually I cannot reproduce this with "4.2.0 20060218" either on x86? What > were you doing to reproduce this? Or even the 20th.
Actually never mind I see the issue now but I still say this is a latent bug and not really my bug. And the patch is wrong anyways in general as most of those places really should have been testing something like var_can_have_subvars instead of AGGREGATE_TYPE_P anyways.