------- Comment #3 from jakub at gcc dot gnu dot org 2008-01-03 15:01 ------- Additionally, pass_tree_profile is executed multiple times with -fopenmp, e.g. on void foo (int i) { #pragma omp parallel if (i > 2) bar (i + 1); else if (i < -2) bar (i / 2); else bar (i * 2); } (which compiles) profile counters are added before omp expansion and once again for the child function. Is there a reason why pass_tree_profile can't run after pass_cleanup_cfg/pass_init_datastructures/pass_expand_omp? If it can't be moved, could it at least skip all edges in omp parallel regions? Or if it is not thread safe, just disable pass_tree_profile if flag_openmp...
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34610