summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/c_loc_tests_2_funcs.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/c_loc_tests_2_funcs.c')
-rw-r--r--gcc/testsuite/gfortran.dg/c_loc_tests_2_funcs.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/c_loc_tests_2_funcs.c b/gcc/testsuite/gfortran.dg/c_loc_tests_2_funcs.c
new file mode 100644
index 000000000..d47ac81ae
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/c_loc_tests_2_funcs.c
@@ -0,0 +1,42 @@
+double fabs (double);
+
+typedef struct ctype
+{
+ int i;
+ double x;
+}ctype_t;
+
+int test_scalar_address(int *ptr)
+{
+ /* The value in Fortran should be initialized to 100. */
+ if(*ptr != 100)
+ return 0;
+ else
+ return 1;
+}
+
+int test_array_address(int *int_array, int num_elements)
+{
+ int i = 0;
+
+ for(i = 0; i < num_elements; i++)
+ /* Fortran will init all of the elements to 100; verify that here. */
+ if(int_array[i] != 100)
+ return 0;
+
+ /* all elements were equal to 100 */
+ return 1;
+}
+
+int test_type_address(ctype_t *type_ptr)
+{
+ /* i was set to 100 by Fortran */
+ if(type_ptr->i != 100)
+ return 0;
+
+ /* x was set to 1.0d0 by Fortran */
+ if(fabs(type_ptr->x - 1.0) > 0.00000000)
+ return 0;
+
+ return 1;
+}