This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 11/01/13 14:21, Jason Merrill wrote:
Out of curiosity, how are OpenMP and Cilk+ for loops so different that they can't share a parsing function?
Ok, this changes everything for the better. I honestly can't think of a good reason why we can't share the parsing with OpenMP.
I have redesigned everything to share the parsing (both for the C and C++ FE's), thus making most of your review irrelevant (in a good way :)), with the exception of...
+/* Cilk Plus - #pragma simd [clause1 ... clauseN] + Operands like for OMP_FOR. */ +DEFTREECODE (CILK_SIMD, "cilk_simd", tcc_statement, 6)Could this just be a flag on OMP_SIMD?
The GF_OMP_FOR_* flags are set at gimplification, so unavailable before. I suppose I could rearrange all the calls within omp-low.c/etc to pass a flag, but it seems to work cleaner with a CILK_SIMD code.
Jakub: I did find an existing ICE in c_finish_omp_for for the following testcase on trunk:
int *a, *b; void foo() { #pragma simd for (const int ci=0; ci<1000; ++ci) a[ci] = b[ci]; }basically the following asserts will fail because the build_modify_expr preceding them can return error_mark_node for the above invalid testcase:
- gcc_assert (TREE_CODE (init) == MODIFY_EXPR); - gcc_assert (TREE_OPERAND (init, 0) == decl); I have fixed it by allowing error_mark_node.In the above testcase I also found that readonly_error() was diagnosing the wrong line and fixed it to accept a location. These are the only two functionality changes I believe I introduced, ahem...fixed.
Theoretically I should submit the above fix as a separate patch, but since I'm touching all this already...
Jason/Jakub: I have also left the abstractions I previously introduced (c_omp_for_incr_canonicalize_ptr() and cp_parser_omp_for_loop_init()) in my previous versions of this patch, since IMHO it cleans up these big functions. I can inline them back in, if you fell strongly about it.
Phew... much cleaner. How does this look?
Attachment:
curr
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |