Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
0daa7ed9
Commit
0daa7ed9
authored
Mar 28, 2016
by
Alessandro Fanfarillo
Committed by
Alessandro Fanfarillo
Mar 28, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
STOP managed by external library when coarrays are used
From-SVN: r234502
parent
45733562
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
60 additions
and
3 deletions
+60
-3
gcc/fortran/ChangeLog
+8
-0
gcc/fortran/trans-decl.c
+14
-0
gcc/fortran/trans-stmt.c
+9
-3
gcc/fortran/trans.h
+2
-0
libgfortran/ChangeLog
+6
-0
libgfortran/caf/libcaf.h
+4
-0
libgfortran/caf/single.c
+17
-0
No files found.
gcc/fortran/ChangeLog
View file @
0daa7ed9
2016-03-28 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
* trans-decl.c (gfc_build_builtin_function_decls):
caf_stop_numeric and caf_stop_str definition.
* trans-stmt.c (gfc_trans_stop): invoke external functions
for stop and stop_str when coarrays are used.
* trans.h: extern for new functions.
2016-03-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/69043
...
...
gcc/fortran/trans-decl.c
View file @
0daa7ed9
...
...
@@ -137,6 +137,8 @@ tree gfor_fndecl_caf_sendget;
tree
gfor_fndecl_caf_sync_all
;
tree
gfor_fndecl_caf_sync_memory
;
tree
gfor_fndecl_caf_sync_images
;
tree
gfor_fndecl_caf_stop_str
;
tree
gfor_fndecl_caf_stop_numeric
;
tree
gfor_fndecl_caf_error_stop
;
tree
gfor_fndecl_caf_error_stop_str
;
tree
gfor_fndecl_caf_atomic_def
;
...
...
@@ -3550,6 +3552,18 @@ gfc_build_builtin_function_decls (void)
/* CAF's ERROR STOP doesn't return. */
TREE_THIS_VOLATILE
(
gfor_fndecl_caf_error_stop_str
)
=
1
;
gfor_fndecl_caf_stop_numeric
=
gfc_build_library_function_decl_with_spec
(
get_identifier
(
PREFIX
(
"caf_stop_numeric"
)),
".R."
,
void_type_node
,
1
,
gfc_int4_type_node
);
/* CAF's STOP doesn't return. */
TREE_THIS_VOLATILE
(
gfor_fndecl_caf_stop_numeric
)
=
1
;
gfor_fndecl_caf_stop_str
=
gfc_build_library_function_decl_with_spec
(
get_identifier
(
PREFIX
(
"caf_stop_str"
)),
".R."
,
void_type_node
,
2
,
pchar_type_node
,
gfc_int4_type_node
);
/* CAF's STOP doesn't return. */
TREE_THIS_VOLATILE
(
gfor_fndecl_caf_stop_str
)
=
1
;
gfor_fndecl_caf_atomic_def
=
gfc_build_library_function_decl_with_spec
(
get_identifier
(
PREFIX
(
"caf_atomic_define"
)),
"R..RW"
,
void_type_node
,
7
,
pvoid_type_node
,
size_type_node
,
integer_type_node
,
...
...
gcc/fortran/trans-stmt.c
View file @
0daa7ed9
...
...
@@ -635,7 +635,9 @@ gfc_trans_stop (gfc_code *code, bool error_stop)
?
(
flag_coarray
==
GFC_FCOARRAY_LIB
?
gfor_fndecl_caf_error_stop_str
:
gfor_fndecl_error_stop_string
)
:
gfor_fndecl_stop_string
,
:
(
flag_coarray
==
GFC_FCOARRAY_LIB
?
gfor_fndecl_caf_stop_str
:
gfor_fndecl_stop_string
),
2
,
build_int_cst
(
pchar_type_node
,
0
),
tmp
);
}
else
if
(
code
->
expr1
->
ts
.
type
==
BT_INTEGER
)
...
...
@@ -646,7 +648,9 @@ gfc_trans_stop (gfc_code *code, bool error_stop)
?
(
flag_coarray
==
GFC_FCOARRAY_LIB
?
gfor_fndecl_caf_error_stop
:
gfor_fndecl_error_stop_numeric
)
:
gfor_fndecl_stop_numeric_f08
,
1
,
:
(
flag_coarray
==
GFC_FCOARRAY_LIB
?
gfor_fndecl_caf_stop_numeric
:
gfor_fndecl_stop_numeric_f08
),
1
,
fold_convert
(
gfc_int4_type_node
,
se
.
expr
));
}
else
...
...
@@ -657,7 +661,9 @@ gfc_trans_stop (gfc_code *code, bool error_stop)
?
(
flag_coarray
==
GFC_FCOARRAY_LIB
?
gfor_fndecl_caf_error_stop_str
:
gfor_fndecl_error_stop_string
)
:
gfor_fndecl_stop_string
,
:
(
flag_coarray
==
GFC_FCOARRAY_LIB
?
gfor_fndecl_caf_stop_str
:
gfor_fndecl_stop_string
),
2
,
se
.
expr
,
se
.
string_length
);
}
...
...
gcc/fortran/trans.h
View file @
0daa7ed9
...
...
@@ -762,6 +762,8 @@ extern GTY(()) tree gfor_fndecl_caf_sendget;
extern
GTY
(())
tree
gfor_fndecl_caf_sync_all
;
extern
GTY
(())
tree
gfor_fndecl_caf_sync_memory
;
extern
GTY
(())
tree
gfor_fndecl_caf_sync_images
;
extern
GTY
(())
tree
gfor_fndecl_caf_stop_numeric
;
extern
GTY
(())
tree
gfor_fndecl_caf_stop_str
;
extern
GTY
(())
tree
gfor_fndecl_caf_error_stop
;
extern
GTY
(())
tree
gfor_fndecl_caf_error_stop_str
;
extern
GTY
(())
tree
gfor_fndecl_caf_atomic_def
;
...
...
libgfortran/ChangeLog
View file @
0daa7ed9
2016-03-28 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
* caf/libcaf.h: caf_stop_numeric and caf_stop_str prototype.
* caf/single.c: _gfortran_caf_stop_numeric and
_gfortran_caf_stop_str implementation.
2016-02-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/69456
...
...
libgfortran/caf/libcaf.h
View file @
0daa7ed9
...
...
@@ -105,6 +105,10 @@ void _gfortran_caf_sync_all (int *, char *, int);
void
_gfortran_caf_sync_memory
(
int
*
,
char
*
,
int
);
void
_gfortran_caf_sync_images
(
int
,
int
[],
int
*
,
char
*
,
int
);
void
_gfortran_caf_stop_numeric
(
int32_t
)
__attribute__
((
noreturn
));
void
_gfortran_caf_stop_str
(
const
char
*
,
int32_t
)
__attribute__
((
noreturn
));
void
_gfortran_caf_error_stop_str
(
const
char
*
,
int32_t
)
__attribute__
((
noreturn
));
void
_gfortran_caf_error_stop
(
int32_t
)
__attribute__
((
noreturn
));
...
...
libgfortran/caf/single.c
View file @
0daa7ed9
...
...
@@ -204,6 +204,23 @@ _gfortran_caf_sync_images (int count __attribute__ ((unused)),
*
stat
=
0
;
}
void
_gfortran_caf_stop_numeric
(
int32_t
stop_code
)
{
fprintf
(
stderr
,
"STOP %d
\n
"
,
stop_code
);
exit
(
0
);
}
void
_gfortran_caf_stop_str
(
const
char
*
string
,
int32_t
len
)
{
fputs
(
"STOP "
,
stderr
);
while
(
len
--
)
fputc
(
*
(
string
++
),
stderr
);
fputs
(
"
\n
"
,
stderr
);
exit
(
0
);
}
void
_gfortran_caf_error_stop_str
(
const
char
*
string
,
int32_t
len
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment