[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED Target Milestone|4.4.7 |4.5.0 --- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org 2012-03-13 13:04:23 UTC --- Fixed in 4.5+, 4.4 is no longer supported.
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Target Milestone|4.4.6 |4.4.7
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Target Milestone|4.4.5 |4.4.6
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
-- jakub at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|4.4.4 |4.4.5 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
-- jakub at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|4.4.3 |4.4.4 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
-- jakub at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|4.4.2 |4.4.3 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
-- jakub at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|4.4.1 |4.4.2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
-- jakub at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|4.4.0 |4.4.1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
--- Comment #8 from rguenth at gcc dot gnu dot org 2009-04-03 10:32 --- Fixed for 4.5.0. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|rguenth at gcc dot gnu dot |unassigned at gcc dot gnu |org |dot org Status|ASSIGNED|NEW Known to work|4.3.0 4.1.2 |4.3.0 4.1.2 4.5.0 Summary|[4.4/4.5 Regression] NVR in |[4.4 Regression] NVR in the |the front-end causes missed |front-end causes missed |optimization later on |optimization later on |(retval thought to alias |(retval thought to alias |arguments) |arguments) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
--- Comment #6 from rguenth at gcc dot gnu dot org 2009-01-05 11:19 --- Fixed on the alias-improvements branch: a f(a, a) (struct a g, struct a h) { long long int pretmp.24; bb 2: # .MEM_12 = VDEF .MEM_11(D) retval = *g; # VUSE .MEM_12 pretmp.24 = h-b; # .MEM_7 = VDEF .MEM_12 retval.b = [plus_expr] (pretmp.24 + retval.b) + pretmp.24 * 1023; # VUSE .MEM_7 return retval; } -- rguenth at gcc dot gnu dot org changed: What|Removed |Added BugsThisDependsOn||37696 Priority|P3 |P2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201
[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on (retval thought to alias arguments)
--- Comment #5 from pinskia at gcc dot gnu dot org 2008-12-31 21:11 --- Actually this testcase is regression because of the removal of SFTs. in 4.1-4.3, the loop did not exist. In fact I filed this bug right after SFTs were removed. The reason why it is considered addressable is because of: /* Return true if T is a GIMPLE variable whose address is not needed. */ bool is_gimple_non_addressable (tree t) { if (TREE_CODE (t) == SSA_NAME) t = SSA_NAME_VAR (t); return (is_gimple_variable (t) ! needs_to_live_in_memory (t)); } needs_to_live_in_memory is true because of return (TREE_ADDRESSABLE (t) || is_global_var (t) || (TREE_CODE (t) == RESULT_DECL aggregate_value_p (t, current_function_decl))); And aggregate_value_p is true because of: if (TREE_CODE (exp) == CALL_EXPR fndecl DECL_RESULT (fndecl) DECL_BY_REFERENCE (DECL_RESULT (fndecl))) return 1; DECL_BY_REFERENCE is true because this is a nonPOD. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Severity|enhancement |normal Known to fail||4.4.0 Known to work||4.3.0 4.1.2 Summary|NVR in the front-end causes |[4.4 Regression] NVR in the |missed optimization later on|front-end causes missed |(retval thought to alias |optimization later on |arguments) |(retval thought to alias ||arguments) Target Milestone|--- |4.4.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36201