1/* { dg-do compile } */ 2 3#include <stdio.h> 4#include <stdlib.h> 5float 6read_next () 7{ 8 float *tmp; 9 float return_val; 10#pragma omp single copyprivate(tmp) 11 { 12 tmp = (float *) malloc (sizeof (float)); 13 } /* copies the pointer only */ 14#pragma omp master 15 { 16 scanf ("%f", tmp); 17 } 18#pragma omp barrier 19 return_val = *tmp; 20#pragma omp barrier 21#pragma omp single nowait 22 { 23 free (tmp); 24 } 25 return return_val; 26} 27