compiler behavior