The interface to MPI_Bcast does not specify a assumed-shape-array dummy first argument. Consequently, as David points out, the compiler makes a contiguous temporary copy of the array section to pass to the routine. If using ifort, try the "-check arg_temp_created" compiler option to verify creation of temporary arrays.
I do similar things using ifort and it creates temporary arrays when necessary and it all works.