OpenMP scopes variables declared within a parallel construct as private. A default(none) clause on a #pragma omp parallel for directive causes the compiler to flag variables not scoped explicitly.
Since there is no serial_loop directive, mixing automatic and explicit OpenMP parallelization may have different effects: some loops may be automatically parallelized that would not have been with legacy C directives.
Because OpenMP provides a richer parallelism model, it is often possible to get better performance by redesigning the parallelism strategies of a program that uses legacy C directives to take advantage of these features.