Author: dgilmore
Date: 2011-05-18 19:11:16 -0400 (Wed, 18 May 2011)
New Revision: 3610

Modified:
   trunk/osprey/be/lno/fiz_fuse.cxx
   trunk/osprey/be/lno/fiz_fuse.h
Log:
This patch fixes a "use before defined" problem exposed by building
gamess with -Ofast -apo -IPA:noinline, which can cause a segmentation
fault in the compiler during LNO.

The failure signature is that a segmentation fault occurs in
IPA_WN_MAP_Get() when Any_Loop_In_SNL_Parallelizable() is called
with a bad depth argument which was derived from an uninitialized
_depth field in an instance of class SNL_INFO.

Currently when FIZ_FUSE_INFO::Build() adds an element to the _sln_info
array (element type is SNL_INFO) in an instance of FIZ_FUSE_INFO, only
the _type field of the element was initialized.  With this change all
of the elements are initialized.

Reviewed by Sun Chan.


Modified: trunk/osprey/be/lno/fiz_fuse.cxx
===================================================================
--- trunk/osprey/be/lno/fiz_fuse.cxx    2011-05-18 18:02:57 UTC (rev 3609)
+++ trunk/osprey/be/lno/fiz_fuse.cxx    2011-05-18 23:11:16 UTC (rev 3610)
@@ -262,11 +262,12 @@
   }
 }
 
-void FIZ_FUSE_INFO::Build(WN* root, BOOL all_loops) {
+void FIZ_FUSE_INFO::Build(WN* root, BOOL all_loops)
+{
 
   WN2INT *loop_table=CXX_NEW(WN2INT(1024,_mpool),_mpool);
   UINT snl_id=_snl_info.Newidx();
-  _snl_info[snl_id]._type=Invalid;
+  _snl_info[snl_id].Init();
 
   WN_ITER* wn_walker=WN_WALK_SCFIter(root);
   while (WN_WALK_SCFNext(wn_walker)) {

Modified: trunk/osprey/be/lno/fiz_fuse.h
===================================================================
--- trunk/osprey/be/lno/fiz_fuse.h      2011-05-18 18:02:57 UTC (rev 3609)
+++ trunk/osprey/be/lno/fiz_fuse.h      2011-05-18 23:11:16 UTC (rev 3610)
@@ -64,7 +64,8 @@
   SNL_TYPE     _type;
 public:
   friend class FIZ_FUSE_INFO;
-  SNL_INFO() { _depth=0; _wn=NULL; _type=Invalid; };
+  void Init(void) { _depth=0; _wn=NULL; _type=Invalid; };
+  SNL_INFO() { Init(); }
   ~SNL_INFO(){};
   SNL_INFO(WN* wn);
 };


------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its 
next-generation tools to help Windows* and Linux* C/C++ and Fortran 
developers boost performance applications - including clusters. 
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to