https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84992
Bug ID: 84992 Summary: [openacc] function static var in parallel Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: vries at gcc dot gnu.org Target Milestone: --- When compiling this openacc testcase: .... #include <stdio.h> int main (void) { int n[1]; n[0] = 3; #pragma acc parallel copy(n) { static const int test[] = {1,2,3,4}; n[0] = test[n[0]]; } printf ("n: %d\n", n[0]); return 0; } ... we run into an ICE: ... lto1: internal compiler error: in input_varpool_node, at lto-cgraph.c:1424^M ... We've reported the ICE at PR84592, where we use a slightly more complicated example. But the first question here is: is this a valid openacc program? Given that function static variables are not supported in functions to which a routine directive applies, are function static variables supported in parallel regions, or not? If not, we should emit a proper error message. If so, we should implement the required semantics.