This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/41355] Type of ADDR_EXPR in CALL_EXPR not rebuilt when function is cloned



------- Comment #2 from hubicka at ucw dot cz  2010-07-05 19:02 -------
Subject: Re:  Type of ADDR_EXPR in CALL_EXPR
        not rebuilt when function is cloned

> It turns out that the problem is that when build_function_type_skip_args
> creates
> the new type, TYPE_POINTER_TO for the new type is still pointing to the old
> type.
> When gimple_call_set_fndecl is used to change the fndecl to one with less
> arguments, an ADDR_EXPR is built.  The type of the ADDR_EXPR is obtained from
> the
> TYPE_POINTER_TO field of the new type, and thus has type pointer-to-old-type
> rather than pointer-to-new-type.  I'm testing the following patch.  The idea
> here is that calling copy_node has no advantage.  In spite of the comment,

The conditional you removed is about case where METHOD_TYPE is passed and
"this" pointer
is not removed.  In this case we still want to produce METHOD_TYPE just with
args
adjusted.  I think this functionality should be preserved.

Are attributes attached to decl (not type) also copied?

Honza


-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]