[OpenMP] use -fopenmp in a new front end
charfi asma
charfiasma@yahoo.fr
Mon Feb 21 14:03:00 GMT 2011
Hello,
I built a new gcc front end
I would like to use the -fopenmp options when compiling my source file
I could use the C front end options like -S -fdump-tree-all -O*, .... but when I
use -fopenmp I get this error:
uml1: warning: command line option ‘-fopenmp’ is valid for
C/C++/Fortran/ObjC/ObjC++ but not for [enabled by default]
this is my lang-specs.h:
{".uml", "@uml", 0, 1, 0},
{"@uml", "uml1 %i %(invoke_as)", 0, 1, 0},
{"@uml", "uml1 %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}",
0, 1, 0},
I added the fopenmp option to my lang.opt file as fortran fe does (as suggested
in ...........)
but I always get the same warning expect that my fe language name is added to
the list of fe
that enable the use of fopenmp
uml1: warning: command line option ‘-fopenmp’ is valid for
C/C++/Fortran/ObjC/ObjC++/uml but not for [enabled by default]
there is also an error in my front end comes from the compiler implementation
itself.
In my new front end, I tried to build the Generic form correspending to #pragma
omp parallel
I get the gimplified expression as provided by c++ front end
here is my gimple
main ()
gimple_bind <
<unnamed-signed:32> D.28;
struct MyClass x;
gimple_omp_parallel <
BODY <
gimple_bind <
gimple_call <MyOperation1, NULL, &x>
gimple_call <MyOperation2, NULL, &x>
>
>
CLAUSES < shared(x) >, NULL, NULL
>
gimple_assign <integer_cst, D.28, 0, NULL>
gimple_return <D.28>
>
MyOperation2 (struct MyClass * this)
gimple_bind <
gimple_assign <integer_cst, this->MyAttribute2, 15, NULL>
gimple_return <NULL>
>
MyOperation1 (struct MyClass * this)
gimple_bind <
gimple_assign <integer_cst, this->MyAttribute1, 10, NULL>
gimple_return <NULL>
>
but it does not contain the built-in function (as gimple generated from c++ fe)
<built-in> (struct .omp_data_s.0 * .omp_data_i)
{
struct MyClass c [value-expr: *.omp_data_i->c];
struct MyClass * D.1788;
struct MyClass * D.1787;
struct MyClass * D.1786;
struct MyClass * D.1785;
<bb 5>:
<bb 3>:
gimple_assign <component_ref, D.1785, .omp_data_i->c, NULL>
....
}
one of the reason is that my flag_openmp is always null, even if I specify
-fopenmp while compiling.
i,e: when my front end calls the execute_lower_omp(void) it does nothing
execute_lower_omp (void)
{
gimple_seq body;
/* This pass always runs, to provide PROP_gimple_lomp.
But there is nothing to do unless -fopenmp is given. */
if (flag_openmp == 0)
return 0;
....
}
any idea to change fe flag_openmp value ?
thank you very much.
Asma
More information about the Gcc-help
mailing list