This can be compiled with ifort -c -qopenmp openmp_error.f90. The internal compiler error is caused by the if clause on the OpenMP parallel directive, and occurs when it is checking two variables (with .And. or .Or.). It doesn't matter that the variables are arguments...