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 middle-end/50628] [4.7 Regression] gfortran.fortran-torture/execute/entry_4.f fails


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

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jamborm at gcc dot gnu.org

--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-10-06 13:50:42 UTC ---
Looks like SRA messes up:

 f2 (integer(kind=4) * a)
 {
+  complex(kind=4) D.1794;
+  complex(kind=4) SR.5;
+  logical(kind=4) SR.4;
   integer(kind=4) D.1791;
   logical(kind=4) D.1790;
   union munion.0.f2 D.1789;
@@ -181,8 +79,11 @@

 <bb 5>:
   D.1789 = __result_master.0.f2;
-  __result = D.1789;
-  D.1779_2 = __result.f2;
+  SR.4_11 = __result_master.0.f2.e2;
+  D.1789.e2 = SR.4_11;
+  D.1794_12 = VIEW_CONVERT_EXPR<complex(kind=4)>(D.1789);
+  SR.5_14 = D.1794_12;
+  D.1779_2 = SR.5_14;
   return D.1779_2;

that looks like quite a stupit transform (the load and the store, using
logical(kind=4) which has the right size but precision 1 - and thus
truncates!)!

FRE then goes and does

   __result_master.0.f2.f2 = __complex__ (4.5e+1, 0.0);
   D.1808 = __result_master.0.f2;
   SR.7_12 = __result_master.0.f2.e2;
-  SR.4_6 = __result_master.0.f2.e2;
+  SR.4_6 = 0;
   SR.7_8 = SR.4_6;
   D.1808.e2 = SR.7_8;
   D.1802_7 = VIEW_CONVERT_EXPR<complex(kind=4)>(D.1808);

because it simply interprets bit zero of 4.5e+1.

Martin?


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