@@ -750,7 +750,18 @@ pdl_error pdl_make_trans_mutual(pdl_trans *trans)
750750 for (i = vtable -> nparents ; i < vtable -> npdls ; i ++ ) pdls [i ] = pdls [i + nchildren ];
751751 PDLDEBUG_f (printf ("make_trans_mutual after copy converted " );pdl_dump_trans_fixspace (trans ,0 ));
752752 PDL_TR_CHKMAGIC (trans );
753- char disable_back = 0 ;
753+ char disable_back = 0 , inputs_bad = 0 ;
754+ for (i = 0 ; i < npdls ; i ++ ) {
755+ pdl * pdl = pdls [i ];
756+ if ((vtable -> par_flags [i ] & (PDL_PARAM_ISOUT |PDL_PARAM_ISTEMP )) ||
757+ !(pdl -> state & PDL_BADVAL )) continue ;
758+ inputs_bad = trans -> bvalflag = 1 ;
759+ break ;
760+ }
761+ if (trans -> bvalflag && (vtable -> flags & PDL_TRANS_BADIGNORE )) {
762+ pdl_pdl_warn ("WARNING: %s does not handle bad values" , vtable -> name );
763+ trans -> bvalflag = 0 ; /* but still return true */
764+ }
754765 PDL_err = pdl_trans_flow_null_checks (trans , & disable_back );
755766 if (PDL_err .error ) {
756767 PDL_ACCUMERROR (PDL_err , pdl_trans_finaldestroy (trans ));
@@ -786,6 +797,9 @@ pdl_error pdl_make_trans_mutual(pdl_trans *trans)
786797 if (PDL_BITFIELD_ISSET (wasnull , i ))
787798 child -> state = (child -> state & ~PDL_NOMYDIMS ) | PDL_MYDIMS_TRANS ;
788799 }
800+ if (inputs_bad )
801+ for (i = nparents ; i < npdls ; i ++ )
802+ pdls [i ]-> state |= PDL_BADVAL ;
789803 if (!dataflow ) {
790804 PDL_ACCUMERROR (PDL_err , pdl__ensure_trans (trans , PDL_PARENTDIMSCHANGED , 0 , 0 ));
791805 if (PDL_err .error )
@@ -1312,22 +1326,7 @@ pdl_error pdl_type_coerce(pdl_trans *trans) {
13121326}
13131327
13141328char pdl_trans_badflag_from_inputs (pdl_trans * trans ) {
1315- PDL_Indx i ;
1316- pdl_transvtable * vtable = trans -> vtable ;
1317- pdl * * pdls = trans -> pdls ;
1318- char retval = 0 ;
1319- for (i = 0 ; i < vtable -> npdls ; i ++ ) {
1320- pdl * pdl = pdls [i ];
1321- if ((vtable -> par_flags [i ] & (PDL_PARAM_ISOUT |PDL_PARAM_ISTEMP )) ||
1322- !(pdl -> state & PDL_BADVAL )) continue ;
1323- trans -> bvalflag = retval = 1 ;
1324- break ;
1325- }
1326- if (retval && (vtable -> flags & PDL_TRANS_BADIGNORE )) {
1327- pdl_pdl_warn ("WARNING: %s does not handle bad values" , vtable -> name );
1328- trans -> bvalflag = 0 ; /* but still return true */
1329- }
1330- return retval ;
1329+ return 0 ; /* CORE21 get rid */
13311330}
13321331
13331332pdl_error pdl_trans_check_pdls (pdl_trans * trans ) {
0 commit comments