Index: osprey/be/lno/minvariant.cxx
===================================================================
--- osprey/be/lno/minvariant.cxx        (revision 3756)
+++ osprey/be/lno/minvariant.cxx        (working copy)
@@ -1190,10 +1190,15 @@
       for (WN* wn = wn_first; wn != NULL; wn = WN_next(wn)) {
         if (WN_opcode(wn) == OPC_XPRAGMA
          && WN_pragma(wn) == WN_PRAGMA_REDUCTION
-         && WN_operator(WN_kid0(wn)) == OPR_ARRAY
-         && SYMBOL(WN_array_base(WN_kid0(wn)))
+         && WN_operator(WN_kid0(wn)) == OPR_ARRAY ) {
+          if (OPCODE_has_sym(WN_opcode(WN_array_base(WN_kid0(wn))))) {
+           if( SYMBOL(WN_array_base(WN_kid0(wn)))
                == SYMBOL(WN_array_base(p->Array))) {
-         return FALSE;
+               return FALSE;
+            }
+          } else {
+              return FALSE;
+          }
         }
       }
     }
Index: osprey/be/com/wn_mp.cxx
===================================================================
--- osprey/be/com/wn_mp.cxx     (revision 3756)
+++ osprey/be/com/wn_mp.cxx     (working copy)
@@ -12332,12 +12332,18 @@
              if (Identical_Pragmas(cur_node, wn))
                break;
            if (wn == NULL) {
-             WN_next(cur_node) = reduction_nodes;
-             reduction_nodes = cur_node;
+              if (WN_opcode(cur_node) != OPC_PRAGMA &&
+                  WN_operator(WN_kid0(cur_node)) == OPR_ARRAY &&
+                  OPCODE_has_sym(WN_opcode(WN_kid0(WN_kid0(cur_node)))) == 0) {
+                WN_DELETE_Tree ( cur_node );
+              } else {
+               WN_next(cur_node) = reduction_nodes;
+               reduction_nodes = cur_node;
              ++local_count;
              ++reduction_count;
              if (WN_opcode(cur_node) == OPC_PRAGMA)
                shared_table[shared_count++] = WN_st(cur_node);
+              }
            } else
              WN_DELETE_Tree ( cur_node );
            break;

