Hi, This patch removes the conversion of the arguments. As the arguments are already of the proper type, via the front ends, there's no need to the conversion. Furthermore, if the node is a 'const int', then the conversion function will create a node that can't be used as an argument to a gimple call.
Committed to gomp-4_0-branch. Jim
diff --git a/gcc/ChangeLog.gomp b/gcc/ChangeLog.gomp index 4d449b0..f2b6c4b 100644 --- a/gcc/ChangeLog.gomp +++ b/gcc/ChangeLog.gomp @@ -1,3 +1,7 @@ +2015-06-29 James Norris <jnor...@codesourcery.com> + + * omp-low.c (expand_omp_target): Remove unnecessary conversion. + 2015-06-26 Nathan Sidwell <nat...@codesourcery.com> * config/nvptx/nvptx.md (UNSPEC_ID): Rename to ... diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 5914fcf..24fac7c 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -10138,22 +10138,17 @@ expand_omp_target (struct omp_region *region) = fold_convert_loc (gimple_location (entry_stmt), integer_type_node, integer_one_node); /* ..., but if present, use the value specified by the respective - clause, making sure that are of the correct type. */ + clause. */ c = find_omp_clause (clauses, OMP_CLAUSE_NUM_GANGS); if (c) - t_num_gangs = fold_convert_loc (OMP_CLAUSE_LOCATION (c), - integer_type_node, - OMP_CLAUSE_NUM_GANGS_EXPR (c)); + t_num_gangs = OMP_CLAUSE_NUM_GANGS_EXPR (c); c = find_omp_clause (clauses, OMP_CLAUSE_NUM_WORKERS); if (c) - t_num_workers = fold_convert_loc (OMP_CLAUSE_LOCATION (c), - integer_type_node, - OMP_CLAUSE_NUM_WORKERS_EXPR (c)); + t_num_workers = OMP_CLAUSE_NUM_WORKERS_EXPR (c); c = find_omp_clause (clauses, OMP_CLAUSE_VECTOR_LENGTH); if (c) - t_vector_length = fold_convert_loc (OMP_CLAUSE_LOCATION (c), - integer_type_node, - OMP_CLAUSE_VECTOR_LENGTH_EXPR (c)); + t_vector_length = OMP_CLAUSE_VECTOR_LENGTH_EXPR (c); + args.quick_push (t_num_gangs); args.quick_push (t_num_workers); args.quick_push (t_vector_length);