/** * osl_scop_idump function: * this function displays an osl_scop_t structure (*scop) into a * file (file, possibly stdout) in a way that trends to be understandable. It * includes an indentation level (level) in order to work with others * idump functions. * \param file The file where the information has to be printed. * \param scop The scop structure whose information has to be printed. * \param level Number of spaces before printing, for each line. */ void osl_scop_idump(FILE * file, osl_scop_p scop, int level) { int j, first = 1; // Go to the right level. for (j = 0; j < level; j++) fprintf(file, "|\t"); if (scop != NULL) fprintf(file, "+-- osl_scop_t\n"); else fprintf(file, "+-- NULL scop\n"); while (scop != NULL) { if (!first) { // Go to the right level. for (j = 0; j < level; j++) fprintf(file, "|\t"); fprintf(file, "| osl_scop_t\n"); } else first = 0; // A blank line. for (j = 0; j <= level+1; j++) fprintf(file, "|\t"); fprintf(file, "\n"); // Print the version. for (j = 0; j < level; j++) fprintf(file, "|\t"); fprintf(file, "|\tVersion: %d\n", scop->version); // A blank line. for (j = 0; j <= level+1; j++) fprintf(file, "|\t"); fprintf(file, "\n"); // Print the language. for (j = 0; j < level; j++) fprintf(file, "|\t"); fprintf(file, "|\tLanguage: %s\n", scop->language); // A blank line. for (j = 0; j <= level+1; j++) fprintf(file, "|\t"); fprintf(file, "\n"); // Print the context of the scop. osl_relation_idump(file, scop->context, level+1); // Print the parameters. osl_generic_idump(file, scop->parameters, level+1); // Print the statements. osl_statement_idump(file, scop->statement, level+1); // Print the registered extension interfaces. osl_interface_idump(file, scop->registry, level+1); // Print the extensions. osl_generic_idump(file, scop->extension, level+1); scop = scop->next; // Next line. if (scop != NULL) { for (j = 0; j <= level; j++) fprintf(file, "|\t"); fprintf(file, "V\n"); } } // The last line. for (j = 0; j <= level; j++) fprintf(file, "|\t"); fprintf(file, "\n"); }
/** * osl_dependence_idump function: * Displays a osl_dependence_p structure (dependence) into a file (file, * possibly stdout) in a way that trends to be understandable without falling * in a deep depression or, for the lucky ones, getting a headache... It * includes an indentation level (level) in order to work with others * idump functions. * - 18/09/2003: first version. */ void osl_dependence_idump(FILE* file, osl_dependence_p dependence, int level) { int j, first = 1; osl_statement_p tmp; if (dependence != NULL) { /* Go to the right level. */ for (j=0; j<level; j++) fprintf(file, "|\t"); fprintf(file, "+-- osl_dependence_p\n"); } else { for (j=0; j<level; j++) fprintf(file, "|\t"); fprintf(file, "+-- NULL dependence\n"); } while (dependence != NULL) { if (!first) { /* Go to the right level. */ for (j=0; j<level; j++) fprintf(file, "|\t"); fprintf(file, "| osl_dependence_p\n"); } else { first = 0; } /* A blank line. */ for (j=0; j<=level+1; j++) fprintf(file, "|\t"); fprintf(file, "\n"); /* Go to the right level and print the type. */ for (j=0; j<=level; j++) fprintf(file, "|\t"); fprintf(file, "Type: "); switch (dependence->type) { case OSL_UNDEFINED : fprintf(file, "UNSET\n"); break; case OSL_DEPENDENCE_RAW : fprintf(file, "RAW (flow)\n"); break; case OSL_DEPENDENCE_WAR : fprintf(file, "WAR (anti)\n"); break; case OSL_DEPENDENCE_WAW : fprintf(file, "WAW (output)\n"); break; case OSL_DEPENDENCE_RAR : fprintf(file, "RAR (input)\n"); break; case OSL_DEPENDENCE_RAW_SCALPRIV : fprintf(file, "RAW_SCALPRIV (scalar priv)\n"); break; default : fprintf(file, "unknown\n"); break; } /* A blank line. */ for (j=0; j<=level+1; j++) fprintf(file, "|\t"); fprintf(file, "\n"); /* Go to the right level and print the depth. */ for (j=0; j<=level; j++) fprintf(file, "|\t"); fprintf(file, "Depth: %d\n", dependence->depth); /* A blank line. */ for (j=0; j<=level+1; j++) fprintf(file, "|\t"); fprintf(file, "\n"); /* Ref source and target */ for (j=0; j<=level; j++) fprintf(file, "|\t"); fprintf(file, "Ref source: %d, Ref target: %d\n", dependence->ref_source, dependence->ref_target); /* A blank line. */ for (j=0; j<=level+1; j++) fprintf(file, "|\t"); fprintf(file, "\n"); /* Print the source statement. */ for (j=0; j<=level; j++) fprintf(file, "|\t"); fprintf(file, "Statement label: %d\n", dependence->label_source); tmp = dependence->stmt_source_ptr->next; dependence->stmt_source_ptr->next = NULL; osl_statement_idump(file, dependence->stmt_source_ptr, level+1); dependence->stmt_source_ptr->next = tmp; /* Print the target statement. */ for (j=0; j<=level; j++) fprintf(file, "|\t"); fprintf(file, "Target label: %d\n", dependence->label_target); tmp = dependence->stmt_target_ptr->next; dependence->stmt_target_ptr->next = NULL; osl_statement_idump(file, dependence->stmt_target_ptr, level+1); dependence->stmt_target_ptr->next = tmp; /* Print the dependence polyhedron. */ for (j=0; j<=level; j++) fprintf(file, "|\t"); fprintf(file, "%d %d %d %d %d %d %d %d\n", dependence->source_nb_output_dims_domain, dependence->source_nb_output_dims_access, dependence->target_nb_output_dims_domain, dependence->target_nb_output_dims_access, dependence->source_nb_local_dims_domain, dependence->source_nb_local_dims_access, dependence->target_nb_local_dims_domain, dependence->target_nb_local_dims_access); osl_relation_idump(file, dependence->domain, level+1); dependence = dependence->next; /* Next line. */ if (dependence != NULL) { for (j=0; j<=level; j++) fprintf(file, "|\t"); fprintf(file, "V\n"); } } /* The last line. */ for (j=0; j<=level; j++) fprintf(file, "|\t"); fprintf(file, "\n"); }