diff --git a/src/android/AudioPlayer_to_android.cpp b/src/android/AudioPlayer_to_android.cpp
index e361dcb..23411b0 100644
--- a/src/android/AudioPlayer_to_android.cpp
+++ b/src/android/AudioPlayer_to_android.cpp
@@ -117,9 +117,9 @@
          case ANDROID_UNINITIALIZED:
              *pObjState = ANDROID_PREPARING;
              ap->prepare();
-             // intended fall through
+             FALLTHROUGH_INTENDED;
          case ANDROID_PREPARING:
-             // intended fall through
+             FALLTHROUGH_INTENDED;
          case ANDROID_READY:
              ap->play();
              break;
@@ -1064,6 +1064,7 @@
             // checkDataFormat() already checked representation
             df_representation = &df_pcm->representation;
             } // SL_ANDROID_DATAFORMAT_PCM_EX - fall through to next test.
+            FALLTHROUGH_INTENDED;
         case SL_DATAFORMAT_PCM: {
             // checkDataFormat() already did generic checks, now do the Android-specific checks
             const SLDataFormat_PCM *df_pcm = (const SLDataFormat_PCM *) pAudioSrc->pFormat;
@@ -1360,6 +1361,7 @@
     case android::AudioTrack::EVENT_LOOP_END:
     case android::AudioTrack::EVENT_STREAM_END:
         // These are unexpected so fall through
+        FALLTHROUGH_INTENDED;
     default:
         // FIXME where does the notification of SL_PLAYEVENT_HEADMOVING fit?
         SL_LOGE("Encountered unknown AudioTrack event %d for CAudioPlayer %p", event,
@@ -1598,7 +1600,7 @@
             break;
         }
         pAudioPlayer->mPerformanceMode = ANDROID_PERFORMANCE_MODE_LATENCY_EFFECTS;
-        /* FALL THROUGH */
+        FALLTHROUGH_INTENDED;
     case ANDROID_PERFORMANCE_MODE_LATENCY_EFFECTS:
         if ((flags & AUDIO_OUTPUT_FLAG_FAST) == 0) {
             pAudioPlayer->mPerformanceMode = ANDROID_PERFORMANCE_MODE_NONE;
@@ -1962,14 +1964,16 @@
 
     case AUDIOPLAYER_FROM_PCM_BUFFERQUEUE: // intended fall-throughk, both types of players
                                            //   use the TrackPlayerBase for playback
+        FALLTHROUGH_INTENDED;
     case AUDIOPLAYER_FROM_URIFD:
         if (pAudioPlayer->mTrackPlayer != 0) {
             pAudioPlayer->mTrackPlayer->destroy();
         }
-
-        // intended fall-through
-    case AUDIOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE:    // intended fall-through
-    case AUDIOPLAYER_FROM_URIFD_TO_PCM_BUFFERQUEUE: // intended fall-through
+        FALLTHROUGH_INTENDED;
+    case AUDIOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE:
+        FALLTHROUGH_INTENDED;
+    case AUDIOPLAYER_FROM_URIFD_TO_PCM_BUFFERQUEUE:
+        FALLTHROUGH_INTENDED;
     case AUDIOPLAYER_FROM_ADTS_ABQ_TO_PCM_BUFFERQUEUE:
         pAudioPlayer->mAPlayer.clear();
         break;
@@ -2262,8 +2266,10 @@
         }
         break;
 
-    case AUDIOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE:     // intended fall-through
-    case AUDIOPLAYER_FROM_URIFD_TO_PCM_BUFFERQUEUE:  // intended fall-through
+    case AUDIOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE:
+        FALLTHROUGH_INTENDED;
+    case AUDIOPLAYER_FROM_URIFD_TO_PCM_BUFFERQUEUE:
+        FALLTHROUGH_INTENDED;
     case AUDIOPLAYER_FROM_ADTS_ABQ_TO_PCM_BUFFERQUEUE:
         // FIXME report and use the return code to the lock mechanism, which is where play state
         //   changes are updated (see object_unlock_exclusive_attributes())
@@ -2337,7 +2343,8 @@
     CAudioPlayer *ap = (CAudioPlayer *)pPlayItf->mThis;
     switch (ap->mAndroidObjType) {
 
-      case AUDIOPLAYER_FROM_URIFD:  // intended fall-through
+      case AUDIOPLAYER_FROM_URIFD:
+        FALLTHROUGH_INTENDED;
       case AUDIOPLAYER_FROM_URIFD_TO_PCM_BUFFERQUEUE: {
         int32_t durationMsec = ANDROID_UNKNOWN_TIME;
         if (ap->mAPlayer != 0) {
@@ -2522,6 +2529,7 @@
       } break;
     case AUDIOPLAYER_FROM_ADTS_ABQ_TO_PCM_BUFFERQUEUE:
       // nothing to do here, fall through
+      FALLTHROUGH_INTENDED;
     default:
       break;
     }
diff --git a/src/android/AudioRecorder_to_android.cpp b/src/android/AudioRecorder_to_android.cpp
index 38e50bf..4e2f31d 100644
--- a/src/android/AudioRecorder_to_android.cpp
+++ b/src/android/AudioRecorder_to_android.cpp
@@ -245,6 +245,7 @@
             // checkDataFormat() already checked representation
             df_representation = &df_pcm->representation;
         } // SL_ANDROID_DATAFORMAT_PCM_EX - fall through to next test.
+            FALLTHROUGH_INTENDED;
         case SL_DATAFORMAT_PCM: {
             const SLDataFormat_PCM *df_pcm = (const SLDataFormat_PCM *) pAudioSnk->pFormat;
             // checkDataFormat already checked sample rate, channels, and mask
@@ -618,7 +619,7 @@
             break;
         }
         ar->mPerformanceMode = ANDROID_PERFORMANCE_MODE_LATENCY_EFFECTS;
-        /* FALL THROUGH */
+        FALLTHROUGH_INTENDED;
     case ANDROID_PERFORMANCE_MODE_LATENCY_EFFECTS:
         if ((flags & AUDIO_INPUT_FLAG_FAST) == 0) {
             ar->mPerformanceMode = ANDROID_PERFORMANCE_MODE_NONE;
diff --git a/src/android/MediaPlayer_to_android.cpp b/src/android/MediaPlayer_to_android.cpp
index 7d8d1af..5b150f4 100644
--- a/src/android/MediaPlayer_to_android.cpp
+++ b/src/android/MediaPlayer_to_android.cpp
@@ -334,7 +334,8 @@
         }
     } break;
 
-    case XA_DATALOCATOR_URI: // intended fall-through
+    case XA_DATALOCATOR_URI:
+        FALLTHROUGH_INTENDED;
     case XA_DATALOCATOR_ANDROIDFD:
         break;
 
@@ -378,11 +379,13 @@
     case XA_DATALOCATOR_ANDROIDBUFFERQUEUE:
         mp->mAndroidObjType = AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE;
         break;
-    case XA_DATALOCATOR_URI: // intended fall-through
+    case XA_DATALOCATOR_URI:
+        FALLTHROUGH_INTENDED;
     case SL_DATALOCATOR_ANDROIDFD:
         mp->mAndroidObjType = AUDIOVIDEOPLAYER_FROM_URIFD;
         break;
-    case XA_DATALOCATOR_ADDRESS: // intended fall-through
+    case XA_DATALOCATOR_ADDRESS:
+        FALLTHROUGH_INTENDED;
     default:
         mp->mAndroidObjType = INVALID_TYPE;
         SL_LOGE("Unable to create MediaPlayer for data source locator 0x%x", sourceLocator);
@@ -446,7 +449,8 @@
         }
         }
         break;
-    case INVALID_TYPE: // intended fall-through
+    case INVALID_TYPE:
+        FALLTHROUGH_INTENDED;
     default:
         SL_LOGE("Unable to realize MediaPlayer, invalid internal Android object type");
         result = XA_RESULT_PARAMETER_INVALID;
@@ -534,7 +538,8 @@
         }
     } break;
 
-    case AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE: // intended fall-through
+    case AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE:
+        FALLTHROUGH_INTENDED;
     default:
         *pDurMsec = XA_TIME_UNKNOWN;
         break;
@@ -551,7 +556,8 @@
 
     switch (avp->mAndroidObjType) {
 
-    case AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE: // intended fall-through
+    case AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE:
+        FALLTHROUGH_INTENDED;
     case AUDIOVIDEOPLAYER_FROM_URIFD: {
         int pos = ANDROID_UNKNOWN_TIME;
         if (avp->mAVPlayer != 0) {
@@ -631,9 +637,9 @@
          case ANDROID_UNINITIALIZED:
              *pObjState = ANDROID_PREPARING;
              gp->prepare();
-             // intended fall through
+             FALLTHROUGH_INTENDED;
          case ANDROID_PREPARING:
-             // intended fall through
+             FALLTHROUGH_INTENDED;
          case ANDROID_READY:
              gp->play();
              break;
@@ -663,7 +669,8 @@
             mp->mAVPlayer->seek(posMsec);
         }
         break;
-      case AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE: // intended fall-through
+      case AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE:
+        FALLTHROUGH_INTENDED;
       default: {
           result = XA_RESULT_FEATURE_UNSUPPORTED;
       }
@@ -683,7 +690,8 @@
             mp->mAVPlayer->loop(loopEnable);
         }
         break;
-      case AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE: // intended fall-through
+      case AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE:
+        FALLTHROUGH_INTENDED;
       default: {
           result = XA_RESULT_FEATURE_UNSUPPORTED;
       }
@@ -746,7 +754,7 @@
             result = SL_RESULT_SUCCESS;
             } break;
         case NATIVE_WINDOW_FRAMEBUFFER:              // FramebufferNativeWindow
-            // fall through
+            FALLTHROUGH_INTENDED;
         default:
             SL_LOGE("ANativeWindow * %p has unknown or unsupported concrete type %d",
                     nativeWindow, value);
diff --git a/src/data.cpp b/src/data.cpp
index ace2862..fc6dffc 100644
--- a/src/data.cpp
+++ b/src/data.cpp
@@ -364,6 +364,7 @@
                 break;
             }
             // SL_ANDROID_DATAFORMAT_PCM_EX - fall through to next test.
+            FALLTHROUGH_INTENDED;
         case SL_DATAFORMAT_PCM:
             pDataFormat->mPCM = *(SLDataFormat_PCM *)pFormat;
             do {
@@ -790,7 +791,7 @@
     // Per the spec, the pFormat field is ignored in some cases
     case SL_DATALOCATOR_IODEVICE:
         myDataSrc.pFormat = NULL;
-        // fall through
+        FALLTHROUGH_INTENDED;
     case SL_DATALOCATOR_NULL:
     case SL_DATALOCATOR_MIDIBUFFERQUEUE:
         allowedDataFormatMask &= DATAFORMAT_MASK_NULL;
@@ -872,7 +873,7 @@
     case SL_DATALOCATOR_OUTPUTMIX:
     case XA_DATALOCATOR_NATIVEDISPLAY:
         myDataSink.pFormat = NULL;
-        // fall through
+        FALLTHROUGH_INTENDED;
     case SL_DATALOCATOR_NULL:
     case SL_DATALOCATOR_MIDIBUFFERQUEUE:
         allowedDataFormatMask &= DATAFORMAT_MASK_NULL;
diff --git a/src/itf/I3DDoppler.cpp b/src/itf/I3DDoppler.cpp
index 8a20f81..174bd75 100644
--- a/src/itf/I3DDoppler.cpp
+++ b/src/itf/I3DDoppler.cpp
@@ -81,7 +81,7 @@
                 break;
             case CARTESIAN_UNKNOWN_SPHERICAL_SET:
                 thiz->mVelocityActive = CARTESIAN_REQUESTED_SPHERICAL_SET;
-                // fall through
+                FALLTHROUGH_INTENDED;
             case CARTESIAN_REQUESTED_SPHERICAL_SET:
                 // matched by cond_broadcast in case multiple requesters
 #if 0
diff --git a/src/itf/I3DLocation.cpp b/src/itf/I3DLocation.cpp
index c0eff3b..d323232 100644
--- a/src/itf/I3DLocation.cpp
+++ b/src/itf/I3DLocation.cpp
@@ -87,7 +87,7 @@
                 break;
             case CARTESIAN_UNKNOWN_SPHERICAL_SET:
                 thiz->mLocationActive = CARTESIAN_REQUESTED_SPHERICAL_SET;
-                // fall through
+                FALLTHROUGH_INTENDED;
             case CARTESIAN_REQUESTED_SPHERICAL_SET:
                 // matched by cond_broadcast in case multiple requesters
 #if 0
@@ -134,7 +134,7 @@
                 break;
             case CARTESIAN_UNKNOWN_SPHERICAL_SET:
                 thiz->mLocationActive = CARTESIAN_REQUESTED_SPHERICAL_SET;
-                // fall through
+                FALLTHROUGH_INTENDED;
             case CARTESIAN_REQUESTED_SPHERICAL_SET:
                 // matched by cond_broadcast in case multiple requesters
 #if 0
diff --git a/src/itf/I3DMacroscopic.cpp b/src/itf/I3DMacroscopic.cpp
index feb91e2..01da236 100644
--- a/src/itf/I3DMacroscopic.cpp
+++ b/src/itf/I3DMacroscopic.cpp
@@ -170,7 +170,7 @@
                 break;
             case ANGLES_SET_VECTORS_UNKNOWN:
                 thiz->mOrientationActive = ANGLES_SET_VECTORS_REQUESTED;
-                // fall through
+                FALLTHROUGH_INTENDED;
             case ANGLES_SET_VECTORS_REQUESTED:
                 // matched by cond_broadcast in case multiple requesters
 #if 0
diff --git a/src/itf/IDeviceVolume.cpp b/src/itf/IDeviceVolume.cpp
index bd9f0be..58e10ff 100644
--- a/src/itf/IDeviceVolume.cpp
+++ b/src/itf/IDeviceVolume.cpp
@@ -55,7 +55,7 @@
     case DEVICE_ID_HEADSET:
     case DEVICE_ID_HANDSFREE:
         deviceID = SL_DEFAULTDEVICEID_AUDIOOUTPUT;
-        // fall through
+        FALLTHROUGH_INTENDED;
     case SL_DEFAULTDEVICEID_AUDIOINPUT:
     case SL_DEFAULTDEVICEID_AUDIOOUTPUT:
         {
@@ -87,7 +87,7 @@
         case DEVICE_ID_HEADSET:
         case DEVICE_ID_HANDSFREE:
             deviceID = SL_DEFAULTDEVICEID_AUDIOOUTPUT;
-            // fall through
+            FALLTHROUGH_INTENDED;
         case SL_DEFAULTDEVICEID_AUDIOINPUT:
         case SL_DEFAULTDEVICEID_AUDIOOUTPUT:
             {
diff --git a/src/itf/IObject.cpp b/src/itf/IObject.cpp
index adcc4b2..da88845 100644
--- a/src/itf/IObject.cpp
+++ b/src/itf/IObject.cpp
@@ -534,7 +534,7 @@
             break;
         case predestroy_error:
             SL_LOGE("Object::Destroy(%p) not allowed", thiz);
-            // fall through
+            FALLTHROUGH_INTENDED;
         case predestroy_again:
             object_unlock_exclusive(thiz);
             // unfortunately Destroy doesn't return a result
@@ -601,7 +601,7 @@
             }
             *interfaceStateP = INTERFACE_INITIALIZED;
             }
-            // fall through
+            FALLTHROUGH_INTENDED;
         case INTERFACE_INITIALIZED:
             {
             VoidHook deinit = MPH_init_table[x->mMPH].mDeinit;
diff --git a/src/itf/IPlay.cpp b/src/itf/IPlay.cpp
index 8e44463..acee3ff 100644
--- a/src/itf/IPlay.cpp
+++ b/src/itf/IPlay.cpp
@@ -61,7 +61,7 @@
                     // note that USE_OUTPUTMIXEXT does not support ATTR_ABQ_ENQUEUE
                     attr |= ATTR_BQ_ENQUEUE;
                 }
-                // fall through
+                FALLTHROUGH_INTENDED;
 
             case (SL_PLAYSTATE_STOPPED  << 2) | SL_PLAYSTATE_PAUSED:
             case (SL_PLAYSTATE_PLAYING  << 2) | SL_PLAYSTATE_PAUSED:
diff --git a/src/sles_allinclusive.h b/src/sles_allinclusive.h
index ede6210..0e6d09a 100644
--- a/src/sles_allinclusive.h
+++ b/src/sles_allinclusive.h
@@ -400,6 +400,14 @@
 extern void audioPlayerTransportUpdate(CAudioPlayer *audioPlayer);
 #endif
 
+#ifndef FALLTHROUGH_INTENDED
+#ifdef __clang__
+#define FALLTHROUGH_INTENDED [[clang::fallthrough]]
+#else
+#define FALLTHROUGH_INTENDED
+#endif // __clang__
+#endif // FALLTHROUGH_INTENDED
+
 extern SLresult IBufferQueue_Enqueue(SLBufferQueueItf self, const void *pBuffer, SLuint32 size);
 extern SLresult IBufferQueue_Clear(SLBufferQueueItf self);
 extern SLresult IBufferQueue_RegisterCallback(SLBufferQueueItf self,
