Bug 820686 - Remove code after MOZ_CRASH or MOZ_ASSUME_NOT_REACHED. r=(see below)
authorJustin Lebar <justin.lebar@gmail.com>
Fri, 28 Jun 2013 18:38:32 -0700
changeset 150035 5ecd26bc5274bb4e2831e6649fa8bb516f3c9bc2
parent 150034 1735d098ea863982696383cd25fbb6857e0d2f6f
child 150036 4df4f2767a69330a1d221abb71e9d0b993b6a973
push id382
push userakeybl@mozilla.com
push dateMon, 21 Oct 2013 21:47:13 +0000
treeherdermozilla-release@5f1868ee45cb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs820686
milestone25.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 820686 - Remove code after MOZ_CRASH or MOZ_ASSUME_NOT_REACHED. r=(see below) r=tbsaunde for accessible r=jmuizelaar for gfx r=waldo for js r=roc for layout r=glandium for mozglue r=jduell for netwerk r=khuey for everything else
accessible/src/atk/AccessibleWrap.cpp
caps/src/nsPrincipal.cpp
content/base/src/nsAttrValue.cpp
content/base/src/nsDocument.cpp
content/base/src/nsObjectLoadingContent.cpp
content/canvas/src/CanvasRenderingContext2D.cpp
content/canvas/src/WebGLContextGL.cpp
content/events/src/TextComposition.cpp
content/events/src/nsDOMMouseEvent.cpp
content/events/src/nsEventStateManager.cpp
content/events/src/nsIMEStateManager.cpp
content/html/document/src/nsHTMLContentSink.cpp
content/media/DOMMediaStream.cpp
content/media/MediaStreamGraph.cpp
content/media/encoder/MediaEncoder.cpp
content/media/encoder/OpusTrackEncoder.cpp
content/media/webaudio/MediaBufferDecoder.cpp
content/media/webspeech/recognition/SpeechRecognition.cpp
content/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp
dom/audiochannel/AudioChannelService.cpp
dom/base/nsDOMClassInfo.cpp
dom/base/nsScreen.cpp
dom/bindings/PrimitiveConversions.h
dom/bluetooth/ipc/BluetoothChild.cpp
dom/bluetooth/ipc/BluetoothParent.cpp
dom/bluetooth/ipc/BluetoothServiceChildProcess.cpp
dom/fm/FMRadio.cpp
dom/indexedDB/IDBDatabase.cpp
dom/indexedDB/OpenDatabaseHelper.cpp
dom/indexedDB/ipc/IndexedDBChild.cpp
dom/indexedDB/ipc/IndexedDBParent.cpp
dom/ipc/Blob.cpp
dom/ipc/ContentChild.cpp
dom/ipc/ContentParent.cpp
dom/ipc/StructuredCloneUtils.cpp
dom/mobilemessage/src/MmsMessage.cpp
dom/mobilemessage/src/MobileMessageCallback.cpp
dom/mobilemessage/src/MobileMessageCursorCallback.cpp
dom/mobilemessage/src/MobileMessageThread.cpp
dom/mobilemessage/src/SmsMessage.cpp
dom/mobilemessage/src/ipc/SmsChild.cpp
dom/mobilemessage/src/ipc/SmsParent.cpp
dom/network/src/TCPSocketParent.cpp
dom/power/PowerManagerService.cpp
dom/workers/XMLHttpRequest.cpp
extensions/cookie/nsPermissionManager.cpp
gfx/gl/GLContext.cpp
gfx/gl/GLContextProviderGLX.cpp
gfx/gl/GLScreenBuffer.cpp
gfx/gl/SharedSurface.h
gfx/gl/SharedSurfaceGL.cpp
gfx/gl/SurfaceStream.cpp
gfx/layers/Layers.h
gfx/layers/client/CompositableClient.h
gfx/layers/client/ContentClient.h
gfx/layers/composite/CompositableHost.cpp
gfx/layers/composite/TextureHost.cpp
gfx/layers/d3d10/CanvasLayerD3D10.cpp
gfx/layers/opengl/CanvasLayerOGL.cpp
gfx/layers/opengl/GLManager.cpp
gfx/layers/opengl/TextureHostOGL.cpp
gfx/thebes/gfxRect.h
hal/gonk/GonkDiskSpaceWatcher.cpp
hal/linux/LinuxPower.cpp
ipc/glue/FileDescriptor.cpp
ipc/glue/URIUtils.cpp
ipc/ril/Ril.cpp
js/public/RootingAPI.h
js/src/assembler/jit/ExecutableAllocator.h
js/src/builtin/Intl.cpp
js/src/builtin/TestingFunctions.cpp
js/src/ctypes/CTypes.cpp
js/src/frontend/BytecodeEmitter.cpp
js/src/frontend/ParseNode.cpp
js/src/frontend/Parser.cpp
js/src/gc/Statistics.cpp
js/src/gc/StoreBuffer.cpp
js/src/ion/AsmJS.cpp
js/src/ion/BaselineFrameInfo.cpp
js/src/ion/BaselineIC.cpp
js/src/ion/BaselineIC.h
js/src/ion/BaselineJIT.cpp
js/src/ion/CodeGenerator.cpp
js/src/ion/CompactBuffer.h
js/src/ion/ExecutionModeInlines.h
js/src/ion/FixedArityList.h
js/src/ion/Ion.cpp
js/src/ion/IonAnalysis.cpp
js/src/ion/IonBuilder.cpp
js/src/ion/IonCaches.cpp
js/src/ion/IonCaches.h
js/src/ion/IonFrames-inl.h
js/src/ion/IonFrames.cpp
js/src/ion/IonFrames.h
js/src/ion/IonMacroAssembler.cpp
js/src/ion/IonMacroAssembler.h
js/src/ion/IonTypes.h
js/src/ion/LIR-Common.h
js/src/ion/LIR.cpp
js/src/ion/LIR.h
js/src/ion/LiveRangeAllocator.cpp
js/src/ion/LiveRangeAllocator.h
js/src/ion/Lowering.cpp
js/src/ion/MIR.cpp
js/src/ion/MIR.h
js/src/ion/MOpcodes.h
js/src/ion/Snapshots.cpp
js/src/ion/StupidAllocator.cpp
js/src/ion/TypePolicy.cpp
js/src/ion/arm/Assembler-arm.cpp
js/src/ion/arm/BaselineIC-arm.cpp
js/src/ion/arm/CodeGenerator-arm.cpp
js/src/ion/arm/Lowering-arm.cpp
js/src/ion/arm/MacroAssembler-arm.cpp
js/src/ion/arm/Trampoline-arm.cpp
js/src/ion/shared/Assembler-shared.h
js/src/ion/shared/Assembler-x86-shared.cpp
js/src/ion/shared/Assembler-x86-shared.h
js/src/ion/shared/CodeGenerator-shared-inl.h
js/src/ion/shared/CodeGenerator-x86-shared.cpp
js/src/ion/shared/IonAssemblerBuffer.h
js/src/ion/shared/IonAssemblerBufferWithConstantPools.h
js/src/ion/x64/BaselineIC-x64.cpp
js/src/ion/x64/CodeGenerator-x64.cpp
js/src/ion/x64/Lowering-x64.cpp
js/src/ion/x64/MacroAssembler-x64.h
js/src/ion/x64/Trampoline-x64.cpp
js/src/ion/x86/BaselineIC-x86.cpp
js/src/ion/x86/MacroAssembler-x86.h
js/src/ion/x86/Trampoline-x86.cpp
js/src/jsanalyze.cpp
js/src/jsanalyze.h
js/src/jsanalyzeinlines.h
js/src/jsclone.cpp
js/src/jscntxtinlines.h
js/src/jsfun.cpp
js/src/jsgc.cpp
js/src/jsgcinlines.h
js/src/jsinfer.cpp
js/src/jsinferinlines.h
js/src/jsobjinlines.h
js/src/jsopcode.cpp
js/src/jsopcode.h
js/src/jsproxy.cpp
js/src/jsreflect.cpp
js/src/jsscript.cpp
js/src/jstypedarray.cpp
js/src/jstypedarray.h
js/src/jstypedarrayinlines.h
js/src/jsversion.h
js/src/jsworkers.cpp
js/src/shell/jsoptparse.cpp
js/src/vm/ForkJoin.cpp
js/src/vm/ObjectImpl.cpp
js/src/vm/ObjectImpl.h
js/src/vm/RegExpObject.cpp
js/src/vm/Stack-inl.h
js/src/vm/Stack.cpp
js/xpconnect/src/XPCJSRuntime.cpp
js/xpconnect/wrappers/WrapperFactory.cpp
js/xpconnect/wrappers/XrayWrapper.cpp
layout/base/nsCSSFrameConstructor.cpp
layout/generic/nsFlexContainerFrame.cpp
modules/libjar/nsJARProtocolHandler.cpp
modules/libpref/src/prefapi.cpp
netwerk/ipc/RemoteOpenFileChild.cpp
security/manager/ssl/src/ScopedNSSTypes.h
security/manager/ssl/src/nsUsageArrayHelper.cpp
toolkit/components/telemetry/Telemetry.cpp
toolkit/identity/IdentityCryptoService.cpp
widget/gonk/nsWindow.cpp
widget/gtk2/nsGtkKeyUtils.cpp
widget/os2/nsWindow.cpp
widget/windows/KeyboardLayout.cpp
widget/windows/nsTextStore.cpp
widget/xpwidgets/WidgetUtils.cpp
xpcom/ds/nsAtomTable.cpp
xpcom/glue/nsISupportsImpl.h
xpcom/glue/nsTArray.h
--- a/accessible/src/atk/AccessibleWrap.cpp
+++ b/accessible/src/atk/AccessibleWrap.cpp
@@ -676,17 +676,16 @@ getRoleCB(AtkObject *aAtkObj)
   case roles::geckoRole: \
     aAtkObj->role = atkRole; \
     break;
 
   switch (accWrap->Role()) {
 #include "RoleMap.h"
     default:
       MOZ_CRASH("Unknown role.");
-      aAtkObj->role = ATK_ROLE_UNKNOWN;
   };
 
 #undef ROLE
 
   return aAtkObj->role;
 }
 
 AtkAttributeSet*
--- a/caps/src/nsPrincipal.cpp
+++ b/caps/src/nsPrincipal.cpp
@@ -836,17 +836,16 @@ nsExpandedPrincipal::CheckMayLoad(nsIURI
 
   return NS_ERROR_DOM_BAD_URI;
 }
 
 NS_IMETHODIMP
 nsExpandedPrincipal::GetHashValue(uint32_t* result)
 {
   MOZ_CRASH("extended principal should never be used as key in a hash map");
-  return NS_ERROR_FAILURE;
 }
 
 NS_IMETHODIMP
 nsExpandedPrincipal::GetURI(nsIURI** aURI)
 {
   *aURI = nullptr;
   return NS_OK;
 }
--- a/content/base/src/nsAttrValue.cpp
+++ b/content/base/src/nsAttrValue.cpp
@@ -304,17 +304,16 @@ nsAttrValue::SetTo(const nsAttrValue& aO
     case eColor:
     {
       cont->mValue.mColor = otherCont->mValue.mColor;
       break;
     }
     case eCSSStyleRule:
     {
       MOZ_CRASH("These should be refcounted!");
-      break;
     }
     case eURL:
     {
       NS_ADDREF(cont->mValue.mURL = otherCont->mValue.mURL);
       break;
     }
     case eImage:
     {
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -8469,17 +8469,16 @@ nsDocument::MaybePreLoadImage(nsIURI* ur
     break;
   case CORS_ANONYMOUS:
     loadFlags |= imgILoader::LOAD_CORS_ANONYMOUS;
     break;
   case CORS_USE_CREDENTIALS:
     loadFlags |= imgILoader::LOAD_CORS_USE_CREDENTIALS;
     break;
   default:
-    /* should never happen */
     MOZ_CRASH("Unknown CORS mode!");
   }
 
   // Image not in cache - trigger preload
   nsRefPtr<imgRequestProxy> request;
   nsresult rv =
     nsContentUtils::LoadImage(uri,
                               this,
@@ -11143,18 +11142,17 @@ SizeOfStyleSheetsElementIncludingThis(ns
 
 size_t
 nsDocument::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
 {
   // This SizeOfExcludingThis() overrides the one from nsINode.  But
   // nsDocuments can only appear at the top of the DOM tree, and we use the
   // specialized DocSizeOfExcludingThis() in that case.  So this should never
   // be called.
-  MOZ_CRASH("nsDocument::SizeOfExcludingThis");
-  return 0;
+  MOZ_CRASH();
 }
 
 void
 nsDocument::DocSizeOfExcludingThis(nsWindowSizes* aWindowSizes) const
 {
   nsIDocument::DocSizeOfExcludingThis(aWindowSizes);
 
   for (nsIContent* node = nsINode::GetFirstChild();
--- a/content/base/src/nsObjectLoadingContent.cpp
+++ b/content/base/src/nsObjectLoadingContent.cpp
@@ -2989,17 +2989,16 @@ nsObjectLoadingContent::ShouldPlay(Fallb
 
   switch (enabledState) {
   case nsIPluginTag::STATE_ENABLED:
     return true;
   case nsIPluginTag::STATE_CLICKTOPLAY:
     return false;
   }
   MOZ_CRASH("Unexpected enabledState");
-  return false;
 }
 
 nsIDocument*
 nsObjectLoadingContent::GetContentDocument()
 {
   nsCOMPtr<nsIContent> thisContent =
     do_QueryInterface(static_cast<nsIImageLoadingContent*>(this));
 
--- a/content/canvas/src/CanvasRenderingContext2D.cpp
+++ b/content/canvas/src/CanvasRenderingContext2D.cpp
@@ -2633,17 +2633,17 @@ CanvasRenderingContext2D::DrawOrMeasureT
     // fall through; best we can do with the information available
   case TEXT_BASELINE_ALPHABETIC:
     anchorY = 0;
     break;
   case TEXT_BASELINE_BOTTOM:
     anchorY = -fontMetrics.emDescent;
     break;
   default:
-      MOZ_CRASH("unexpected TextBaseline");
+    MOZ_CRASH("unexpected TextBaseline");
   }
 
   processor.mPt.y += anchorY;
 
   // correct bounding box to get it to be the correct size/position
   processor.mBoundingBox.width = totalWidth;
   processor.mBoundingBox.MoveBy(processor.mPt);
 
--- a/content/canvas/src/WebGLContextGL.cpp
+++ b/content/canvas/src/WebGLContextGL.cpp
@@ -5505,26 +5505,23 @@ WebGLTexelFormat mozilla::GetWebGLTexelF
     if (format == LOCAL_GL_DEPTH_COMPONENT) {
         switch (type) {
             case LOCAL_GL_UNSIGNED_SHORT:
                 return WebGLTexelConversions::D16;
             case LOCAL_GL_UNSIGNED_INT:
                 return WebGLTexelConversions::D32;
             default:
                 MOZ_CRASH("Invalid WebGL texture format/type?");
-                return WebGLTexelConversions::BadFormat;
         }
     } else if (format == LOCAL_GL_DEPTH_STENCIL) {
         switch (type) {
             case LOCAL_GL_UNSIGNED_INT_24_8_EXT:
                 return WebGLTexelConversions::D24S8;
             default:
                 MOZ_CRASH("Invalid WebGL texture format/type?");
-                NS_ABORT_IF_FALSE(false, "Coding mistake?! Should never reach this point.");
-                return WebGLTexelConversions::BadFormat;
         }
     }
 
 
     if (type == LOCAL_GL_UNSIGNED_BYTE) {
         switch (format) {
             case LOCAL_GL_RGBA:
                 return WebGLTexelConversions::RGBA8;
--- a/content/events/src/TextComposition.cpp
+++ b/content/events/src/TextComposition.cpp
@@ -136,17 +136,16 @@ TextComposition::CompositionEventDispatc
       nsTextEvent textEvent(true, NS_TEXT_TEXT, mWidget);
       textEvent.theText = mData;
       nsIMEStateManager::DispatchCompositionEvent(mEventTarget, mPresContext,
                                                   &textEvent, &status, nullptr);
       break;
     }
     default:
       MOZ_CRASH("Unsupported event");
-      break;
   }
   return NS_OK;
 }
 
 /******************************************************************************
  * TextCompositionArray
  ******************************************************************************/
 
--- a/content/events/src/nsDOMMouseEvent.cpp
+++ b/content/events/src/nsDOMMouseEvent.cpp
@@ -137,17 +137,16 @@ nsDOMMouseEvent::InitMouseEvent(const ns
     case NS_MOUSE_SCROLL_EVENT:
     case NS_WHEEL_EVENT:
     case NS_DRAG_EVENT:
     case NS_SIMPLE_GESTURE_EVENT:
       static_cast<nsInputEvent*>(mEvent)->modifiers = modifiers;
       return NS_OK;
     default:
       MOZ_CRASH("There is no space to store the modifiers");
-      return NS_ERROR_FAILURE;
   }
 }
 
 already_AddRefed<nsDOMMouseEvent>
 nsDOMMouseEvent::Constructor(const mozilla::dom::GlobalObject& aGlobal,
                              const nsAString& aType,
                              const mozilla::dom::MouseEventInit& aParam,
                              mozilla::ErrorResult& aRv)
@@ -238,17 +237,16 @@ nsDOMMouseEvent::Buttons()
     case NS_MOUSE_EVENT:
     case NS_MOUSE_SCROLL_EVENT:
     case NS_WHEEL_EVENT:
     case NS_DRAG_EVENT:
     case NS_SIMPLE_GESTURE_EVENT:
       return static_cast<nsMouseEvent_base*>(mEvent)->buttons;
     default:
       MOZ_CRASH("Tried to get mouse buttons for non-mouse event!");
-      return 0;
   }
 }
 
 NS_IMETHODIMP
 nsDOMMouseEvent::GetRelatedTarget(nsIDOMEventTarget** aRelatedTarget)
 {
   NS_ENSURE_ARG_POINTER(aRelatedTarget);
   *aRelatedTarget = GetRelatedTarget().get();
--- a/content/events/src/nsEventStateManager.cpp
+++ b/content/events/src/nsEventStateManager.cpp
@@ -1491,17 +1491,16 @@ nsEventStateManager::DispatchCrossProces
     // Let the child process synthesize a mouse event if needed, and
     // ensure we don't synthesize one in this process.
     *aStatus = nsEventStatus_eConsumeNoDefault;
     nsTouchEvent* touchEvent = static_cast<nsTouchEvent*>(aEvent);
     return remote->SendRealTouchEvent(*touchEvent);
   }
   default: {
     MOZ_CRASH("Attempt to send non-whitelisted event?");
-    return false;
   }
   }
 }
 
 bool
 nsEventStateManager::IsRemoteTarget(nsIContent* target) {
   if (!target) {
     return false;
@@ -2516,17 +2515,16 @@ nsEventStateManager::DispatchLegacyMouse
       scrollDeltaX = aEvent->lineOrPageDeltaX;
       scrollDeltaY = aEvent->lineOrPageDeltaY;
       pixelDeltaX = RoundDown(aEvent->deltaX);
       pixelDeltaY = RoundDown(aEvent->deltaY);
       break;
 
     default:
       MOZ_CRASH("Invalid deltaMode value comes");
-      return;
   }
 
   // Send the legacy events in following order:
   // 1. Vertical scroll
   // 2. Vertical pixel scroll (even if #1 isn't consumed)
   // 3. Horizontal scroll (even if #1 and/or #2 are consumed)
   // 4. Horizontal pixel scroll (even if #3 isn't consumed)
 
@@ -2843,17 +2841,16 @@ nsEventStateManager::DoScrollText(nsIScr
     case nsIDOMWheelEvent::DOM_DELTA_PAGE:
       origin = nsGkAtoms::pages;
       break;
     case nsIDOMWheelEvent::DOM_DELTA_PIXEL:
       origin = nsGkAtoms::pixels;
       break;
     default:
       MOZ_CRASH("Invalid deltaMode value comes");
-      return;
   }
 
   // We shouldn't scroll more one page at once except when over one page scroll
   // is allowed for the event.
   nsSize pageSize = aScrollableFrame->GetPageScrollAmount();
   nsIntSize devPixelPageSize(pc->AppUnitsToDevPixels(pageSize.width),
                              pc->AppUnitsToDevPixels(pageSize.height));
   if (!WheelPrefs::GetInstance()->IsOverOnePageScrollAllowedX(aEvent) &&
@@ -2888,17 +2885,16 @@ nsEventStateManager::DoScrollText(nsIScr
     case widget::WheelEvent::SCROLL_ASYNCHRONOUSELY:
       mode = nsIScrollableFrame::NORMAL;
       break;
     case widget::WheelEvent::SCROLL_SMOOTHLY:
       mode = nsIScrollableFrame::SMOOTH;
       break;
     default:
       MOZ_CRASH("Invalid scrollType value comes");
-      return;
   }
 
   nsIntPoint overflow;
   aScrollableFrame->ScrollBy(actualDevPixelScrollAmount,
                              nsIScrollableFrame::DEVICE_PIXELS,
                              mode, &overflow, origin);
 
   if (!scrollFrameWeak.IsAlive()) {
--- a/content/events/src/nsIMEStateManager.cpp
+++ b/content/events/src/nsIMEStateManager.cpp
@@ -583,17 +583,16 @@ nsIMEStateManager::NotifyIME(Notificatio
     switch (aNotification) {
       case NOTIFY_IME_OF_CURSOR_POS_CHANGED:
         return aWidget->NotifyIME(aNotification);
       case REQUEST_TO_COMMIT_COMPOSITION:
       case REQUEST_TO_CANCEL_COMPOSITION:
         return composition ? aWidget->NotifyIME(aNotification) : NS_OK;
       default:
         MOZ_CRASH("Unsupported notification");
-        return NS_ERROR_INVALID_ARG;
     }
     MOZ_CRASH(
       "Failed to handle the notification for non-synthesized composition");
   }
 
   // If the composition is synthesized events for automated tests, we should
   // dispatch composition events for emulating the native composition behavior.
   // NOTE: The dispatched events are discarded if it's not safe to run script.
@@ -1045,17 +1044,16 @@ nsIMEStateManager::IsEditableIMEState(ns
     case widget::IMEState::ENABLED:
     case widget::IMEState::PASSWORD:
       return true;
     case widget::IMEState::PLUGIN:
     case widget::IMEState::DISABLED:
       return false;
     default:
       MOZ_CRASH("Unknown IME enable state");
-      return false;
   }
 }
 
 void
 nsIMEStateManager::DestroyTextStateManager()
 {
   if (!sTextStateObserver) {
     return;
--- a/content/html/document/src/nsHTMLContentSink.cpp
+++ b/content/html/document/src/nsHTMLContentSink.cpp
@@ -658,31 +658,27 @@ SinkContext::OpenContainer(const nsIPars
   if (mSink->IsMonolithicContainer(nodeType)) {
     mSink->mInMonolithicContainer++;
   }
 
   // Special handling for certain tags
   switch (nodeType) {
     case eHTMLTag_form:
       MOZ_CRASH("Must not use HTMLContentSink for forms.");
-      break;
 
     case eHTMLTag_frameset:
       MOZ_CRASH("Must not use HTMLContentSink for frames.");
-      break;
 
     case eHTMLTag_noembed:
     case eHTMLTag_noframes:
       MOZ_CRASH("Must not use HTMLContentSink for noembed/noframes.");
-      break;
 
     case eHTMLTag_script:
     case eHTMLTag_style:
       MOZ_CRASH("Must not use HTMLContentSink for styles and scripts.");
-      break;
 
     case eHTMLTag_button:
     case eHTMLTag_audio:
     case eHTMLTag_video:
       content->DoneCreatingElement();
       break;
 
     default:
@@ -779,41 +775,35 @@ SinkContext::CloseContainer(const nsHTML
 
   DidAddContent(content);
 
   // Special handling for certain tags
   switch (nodeType) {
   case eHTMLTag_noembed:
   case eHTMLTag_noframes:
     MOZ_CRASH("Must not use HTMLContentSink for noembed/noframes.");
-    break;
 
   case eHTMLTag_form:
     MOZ_CRASH("Must not use HTMLContentSink for forms.");
-    break;
 
   case eHTMLTag_video:
   case eHTMLTag_audio:
   case eHTMLTag_select:
   case eHTMLTag_textarea:
   case eHTMLTag_object:
   case eHTMLTag_applet:
   case eHTMLTag_title:
     content->DoneAddingChildren(HaveNotifiedForCurrentContent());
     break;
 
   case eHTMLTag_script:
     MOZ_CRASH("Must not use HTMLContentSink to run scripts.");
-    result = NS_ERROR_NOT_IMPLEMENTED;
-    break;
 
   case eHTMLTag_style:
     MOZ_CRASH("Must not use HTMLContentSink for styles.");
-    result = NS_ERROR_NOT_IMPLEMENTED;
-    break;
 
   default:
     break;
   }
 
   NS_IF_RELEASE(content);
 
 #ifdef DEBUG
@@ -851,18 +841,16 @@ SinkContext::AddLeaf(const nsIParserNode
 
       // Add new leaf to its parent
       AddLeaf(content);
 
       // Additional processing needed once the element is in the tree
       switch (nodeType) {
       case eHTMLTag_meta:
         MOZ_CRASH("Must not use HTMLContentSink for metas.");
-        rv = NS_ERROR_NOT_IMPLEMENTED;
-        break;
 
       case eHTMLTag_input:
         content->DoneCreatingElement();
         break;
 
       case eHTMLTag_menuitem:
         content->DoneCreatingElement();
         break;
@@ -1747,18 +1735,17 @@ HTMLContentSink::IsEnabled(int32_t aTag,
 NS_IMETHODIMP
 HTMLContentSink::OpenContainer(const nsIParserNode& aNode)
 {
   nsresult rv = NS_OK;
 
   switch (aNode.GetNodeType()) {
     case eHTMLTag_frameset:
       MOZ_CRASH("Must not use HTMLContentSink for frames.");
-      rv = NS_ERROR_NOT_IMPLEMENTED;
-      break;
+
     case eHTMLTag_head:
       rv = OpenHeadContext();
       if (NS_SUCCEEDED(rv)) {
         rv = AddAttributes(aNode, mHead, true, mHaveSeenHead);
         mHaveSeenHead = true;
       }
       break;
     case eHTMLTag_body:
@@ -1772,49 +1759,46 @@ HTMLContentSink::OpenContainer(const nsI
         if (!mNotifiedRootInsertion) {
           NotifyRootInsertion();
         }
         ProcessOfflineManifest(mRoot);
       }
       break;
     case eHTMLTag_form:
       MOZ_CRASH("Must not use HTMLContentSink for forms.");
-      rv = NS_ERROR_NOT_IMPLEMENTED;
-      break;
+
     default:
       rv = mCurrentContext->OpenContainer(aNode);
       break;
   }
 
   return rv;
 }
 
 NS_IMETHODIMP
 HTMLContentSink::CloseContainer(const eHTMLTags aTag)
 {
   nsresult rv = NS_OK;
 
   switch (aTag) {
     case eHTMLTag_frameset:
       MOZ_CRASH("Must not use HTMLContentSink for frames.");
-      rv = NS_ERROR_NOT_IMPLEMENTED;
-      break;
+
     case eHTMLTag_head:
       CloseHeadContext();
       break;
     case eHTMLTag_body:
       rv = CloseBody();
       break;
     case eHTMLTag_html:
       rv = CloseHTML();
       break;
     case eHTMLTag_form:
       MOZ_CRASH("Must not use HTMLContentSink for forms.");
-      rv = NS_ERROR_NOT_IMPLEMENTED;
-      break;
+
     default:
       rv = mCurrentContext->CloseContainer(aTag);
       break;
   }
 
   return rv;
 }
 
@@ -1827,20 +1811,18 @@ HTMLContentSink::CloseMalformedContainer
 NS_IMETHODIMP
 HTMLContentSink::AddLeaf(const nsIParserNode& aNode)
 {
   nsresult rv;
 
   nsHTMLTag nodeType = nsHTMLTag(aNode.GetNodeType());
   switch (nodeType) {
   case eHTMLTag_link:
-    rv = NS_ERROR_NOT_IMPLEMENTED;
     MOZ_CRASH("Must not use HTMLContentSink for links.");
 
-    break;
   default:
     rv = mCurrentContext->AddLeaf(aNode);
 
     break;
   }
 
   return rv;
 }
--- a/content/media/DOMMediaStream.cpp
+++ b/content/media/DOMMediaStream.cpp
@@ -251,17 +251,16 @@ DOMMediaStream::CreateDOMTrack(TrackID a
     mTrackTypesAvailable |= HINT_CONTENTS_AUDIO;
     break;
   case MediaSegment::VIDEO:
     track = new VideoStreamTrack(this, aTrackID);
     mTrackTypesAvailable |= HINT_CONTENTS_VIDEO;
     break;
   default:
     MOZ_CRASH("Unhandled track type");
-    return nullptr;
   }
   mTracks.AppendElement(track);
 
   CheckTracksAvailable();
 
   return track;
 }
 
--- a/content/media/MediaStreamGraph.cpp
+++ b/content/media/MediaStreamGraph.cpp
@@ -1833,17 +1833,16 @@ MediaStream::ApplyTrackDisabling(TrackID
          !i.IsEnded(); i.Next()) {
       VideoChunk& chunk = *i;
       chunk.SetForceBlack(true);
     }
     break;
   }
   default:
     MOZ_CRASH("Unknown track type");
-    break;
   }
 }
 
 void
 SourceMediaStream::DestroyImpl()
 {
   {
     MutexAutoLock lock(mMutex);
--- a/content/media/encoder/MediaEncoder.cpp
+++ b/content/media/encoder/MediaEncoder.cpp
@@ -229,14 +229,13 @@ MediaEncoder::GetEncodedData(nsTArray<ns
     case ENCODE_DONE:
       LOG("MediaEncoder has been shutdown.");
       mShutdown = true;
       reloop = false;
       break;
 
     default:
       MOZ_CRASH("Invalid encode state");
-      break;
     }
   }
 }
 
 }
--- a/content/media/encoder/OpusTrackEncoder.cpp
+++ b/content/media/encoder/OpusTrackEncoder.cpp
@@ -216,17 +216,16 @@ OpusTrackEncoder::GetHeader(nsTArray<uin
     mEncoderState = DATA;
     break;
   }
   case DATA:
     // No more headers.
     break;
   default:
     MOZ_CRASH("Invalid state");
-    break;
   }
   return NS_OK;
 }
 
 nsresult
 OpusTrackEncoder::GetEncodedTrack(nsTArray<uint8_t>* aOutput,
                                   int &aOutputDuration)
 {
--- a/content/media/webaudio/MediaBufferDecoder.cpp
+++ b/content/media/webaudio/MediaBufferDecoder.cpp
@@ -435,17 +435,16 @@ MediaDecodeTask::RunNextPhase()
   switch (mPhase) {
   case PhaseEnum::AllocateBuffer:
     MOZ_ASSERT(!NS_IsMainThread());
     NS_DispatchToMainThread(this);
     break;
   case PhaseEnum::Decode:
   case PhaseEnum::Done:
     MOZ_CRASH("Invalid phase Decode");
-    break;
   }
 }
 
 class AutoResampler {
 public:
   AutoResampler()
     : mResampler(nullptr)
   {}
--- a/content/media/webspeech/recognition/SpeechRecognition.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognition.cpp
@@ -190,17 +190,17 @@ SpeechRecognition::Transition(SpeechEven
           Reset();
           break;
         case EVENT_RECOGNITIONSERVICE_INTERMEDIATE_RESULT:
         case EVENT_RECOGNITIONSERVICE_FINAL_RESULT:
           DoNothing(aEvent);
           break;
         case EVENT_START:
           SR_LOG("STATE_STARTING: Unhandled event %s", GetName(aEvent));
-          MOZ_CRASH("");
+          MOZ_CRASH();
         case EVENT_COUNT:
           MOZ_CRASH("Invalid event EVENT_COUNT");
       }
       break;
     case STATE_ESTIMATING:
       switch (aEvent->mType) {
         case EVENT_AUDIO_DATA:
           WaitForEstimation(aEvent);
@@ -216,17 +216,17 @@ SpeechRecognition::Transition(SpeechEven
         case EVENT_RECOGNITIONSERVICE_ERROR:
           DoNothing(aEvent);
           break;
         case EVENT_AUDIO_ERROR:
           AbortError(aEvent);
           break;
         case EVENT_START:
           SR_LOG("STATE_ESTIMATING: Unhandled event %d", aEvent->mType);
-          MOZ_CRASH("");
+          MOZ_CRASH();
         case EVENT_COUNT:
           MOZ_CRASH("Invalid event EVENT_COUNT");
       }
       break;
     case STATE_WAITING_FOR_SPEECH:
       switch (aEvent->mType) {
         case EVENT_AUDIO_DATA:
           DetectSpeech(aEvent);
@@ -242,17 +242,17 @@ SpeechRecognition::Transition(SpeechEven
           break;
         case EVENT_RECOGNITIONSERVICE_INTERMEDIATE_RESULT:
         case EVENT_RECOGNITIONSERVICE_FINAL_RESULT:
         case EVENT_RECOGNITIONSERVICE_ERROR:
           DoNothing(aEvent);
           break;
         case EVENT_START:
           SR_LOG("STATE_STARTING: Unhandled event %s", GetName(aEvent));
-          MOZ_CRASH("");
+          MOZ_CRASH();
         case EVENT_COUNT:
           MOZ_CRASH("Invalid event EVENT_COUNT");
       }
       break;
     case STATE_RECOGNIZING:
       switch (aEvent->mType) {
         case EVENT_AUDIO_DATA:
           WaitForSpeechEnd(aEvent);
@@ -268,17 +268,17 @@ SpeechRecognition::Transition(SpeechEven
           AbortSilently(aEvent);
           break;
         case EVENT_RECOGNITIONSERVICE_FINAL_RESULT:
         case EVENT_RECOGNITIONSERVICE_INTERMEDIATE_RESULT:
           DoNothing(aEvent);
           break;
         case EVENT_START:
           SR_LOG("STATE_RECOGNIZING: Unhandled aEvent %s", GetName(aEvent));
-          MOZ_CRASH("");
+          MOZ_CRASH();
         case EVENT_COUNT:
           MOZ_CRASH("Invalid event EVENT_COUNT");
       }
       break;
     case STATE_WAITING_FOR_RESULT:
       switch (aEvent->mType) {
         case EVENT_STOP:
           DoNothing(aEvent);
@@ -294,17 +294,17 @@ SpeechRecognition::Transition(SpeechEven
           DoNothing(aEvent);
           break;
         case EVENT_ABORT:
           AbortSilently(aEvent);
           break;
         case EVENT_START:
         case EVENT_RECOGNITIONSERVICE_INTERMEDIATE_RESULT:
           SR_LOG("STATE_WAITING_FOR_RESULT: Unhandled aEvent %s", GetName(aEvent));
-          MOZ_CRASH("");
+          MOZ_CRASH();
         case EVENT_COUNT:
           MOZ_CRASH("Invalid event EVENT_COUNT");
       }
       break;
     case STATE_ABORTING:
       DoNothing(aEvent);
       break;
     case STATE_COUNT:
--- a/content/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp
+++ b/content/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp
@@ -44,17 +44,16 @@ PSpeechSynthesisRequestChild*
 SpeechSynthesisChild::AllocPSpeechSynthesisRequest(const nsString& aText,
                                                    const nsString& aLang,
                                                    const nsString& aUri,
                                                    const float& aVolume,
                                                    const float& aRate,
                                                    const float& aPitch)
 {
   MOZ_CRASH("Caller is supposed to manually construct a request!");
-  return nullptr;
 }
 
 bool
 SpeechSynthesisChild::DeallocPSpeechSynthesisRequest(PSpeechSynthesisRequestChild* aActor)
 {
   delete aActor;
   return true;
 }
@@ -145,25 +144,23 @@ SpeechTaskChild::SpeechTaskChild(SpeechS
 {
 }
 
 NS_IMETHODIMP
 SpeechTaskChild::Setup(nsISpeechTaskCallback* aCallback,
                        uint32_t aChannels, uint32_t aRate, uint8_t argc)
 {
   MOZ_CRASH("Should never be called from child");
-  return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 NS_IMETHODIMP
 SpeechTaskChild::SendAudio(const JS::Value& aData, const JS::Value& aLandmarks,
                            JSContext* aCx)
 {
   MOZ_CRASH("Should never be called from child");
-  return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 void
 SpeechTaskChild::Pause()
 {
   MOZ_ASSERT(mActor);
   mActor->SendPause();
 }
--- a/dom/audiochannel/AudioChannelService.cpp
+++ b/dom/audiochannel/AudioChannelService.cpp
@@ -564,10 +564,9 @@ AudioChannelService::GetInternalType(Aud
                : AUDIO_CHANNEL_INT_PUBLICNOTIFICATION;
 
     case AUDIO_CHANNEL_LAST:
     default:
       break;
   }
 
   MOZ_CRASH("unexpected audio channel type");
-  return AUDIO_CHANNEL_INT_LAST;
 }
--- a/dom/base/nsDOMClassInfo.cpp
+++ b/dom/base/nsDOMClassInfo.cpp
@@ -1812,28 +1812,25 @@ nsDOMClassInfo::Init()
                     "The number of items in sClassInfoData doesn't match the "
                     "number of nsIDOMClassInfo ID's, this is bad! Fix it!");
 
 #ifdef DEBUG
   for (size_t i = 0; i < eDOMClassInfoIDCount; i++) {
     if (!sClassInfoData[i].u.mConstructorFptr ||
         sClassInfoData[i].mDebugID != i) {
       MOZ_CRASH("Class info data out of sync, you forgot to update "
-                      "nsDOMClassInfo.h and nsDOMClassInfo.cpp! Fix this, "
-                      "mozilla will not work without this fixed!");
-      return NS_ERROR_NOT_INITIALIZED;
+                "nsDOMClassInfo.h and nsDOMClassInfo.cpp! Fix this, "
+                "mozilla will not work without this fixed!");
     }
   }
 
   for (size_t i = 0; i < eDOMClassInfoIDCount; i++) {
     if (!sClassInfoData[i].mInterfaces) {
       MOZ_CRASH("Class info data without an interface list! Fix this, "
-                      "mozilla will not work without this fixed!");
-
-      return NS_ERROR_NOT_INITIALIZED;
+                "mozilla will not work without this fixed!");
      }
    }
 #endif
 
   // Initialize static JSString's
   DefineStaticJSVals(cx);
 
   int32_t i;
@@ -2023,17 +2020,16 @@ nsDOMClassInfo::PostCreate(nsIXPConnectW
   return NS_ERROR_UNEXPECTED;
 }
 
 NS_IMETHODIMP
 nsDOMClassInfo::PostTransplant(nsIXPConnectWrappedNative *wrapper,
                                JSContext *cx, JSObject *obj)
 {
   MOZ_CRASH("nsDOMClassInfo::PostTransplant Don't call me!");
-  return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDOMClassInfo::AddProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
                             JSObject *obj, jsid id, jsval *vp,
                             bool *_retval)
 {
   NS_WARNING("nsDOMClassInfo::AddProperty Don't call me!");
--- a/dom/base/nsScreen.cpp
+++ b/dom/base/nsScreen.cpp
@@ -367,17 +367,16 @@ nsScreen::MozLockOrientation(const Seque
                                            mEventListener, /* useCapture = */ true);
       return true;
     }
   }
 
   // This is only for compilers that don't understand that the previous switch
   // will always return.
   MOZ_CRASH("unexpected lock orientation permission value");
-  return false;
 }
 
 void
 nsScreen::MozUnlockOrientation()
 {
   hal::UnlockScreenOrientation();
 }
 
--- a/dom/bindings/PrimitiveConversions.h
+++ b/dom/bindings/PrimitiveConversions.h
@@ -89,17 +89,16 @@ template<typename T>
 struct DisallowedConversion {
   typedef int jstype;
   typedef int intermediateType;
 
 private:
   static inline bool converter(JSContext* cx, JS::Handle<JS::Value> v,
                                jstype* retval) {
     MOZ_CRASH("This should never be instantiated!");
-    return false;
   }
 };
 
 struct PrimitiveConversionTraits_smallInt {
   // The output of JS::ToInt32 is determined as follows:
   //   1) The value is converted to a double
   //   2) Anything that's not a finite double returns 0
   //   3) The double is rounded towards zero to the nearest integer
--- a/dom/bluetooth/ipc/BluetoothChild.cpp
+++ b/dom/bluetooth/ipc/BluetoothChild.cpp
@@ -113,17 +113,16 @@ BluetoothChild::RecvNotificationsStopped
   Send__delete__(this);
   return true;
 }
 
 PBluetoothRequestChild*
 BluetoothChild::AllocPBluetoothRequest(const Request& aRequest)
 {
   MOZ_CRASH("Caller is supposed to manually construct a request!");
-  return nullptr;
 }
 
 bool
 BluetoothChild::DeallocPBluetoothRequest(PBluetoothRequestChild* aActor)
 {
   delete aActor;
   return true;
 }
--- a/dom/bluetooth/ipc/BluetoothParent.cpp
+++ b/dom/bluetooth/ipc/BluetoothParent.cpp
@@ -63,17 +63,16 @@ public:
     MOZ_ASSERT(NS_IsMainThread());
     mRequest = nullptr;
   }
 
   virtual bool
   ParseSuccessfulReply(JS::Value* aValue) MOZ_OVERRIDE
   {
     MOZ_CRASH("This should never be called!");
-    return false;
   }
 };
 
 /*******************************************************************************
  * BluetoothParent
  ******************************************************************************/
 
 BluetoothParent::BluetoothParent()
@@ -228,21 +227,19 @@ BluetoothParent::RecvPBluetoothRequestCo
     case Request::TConnectScoRequest:
       return actor->DoRequest(aRequest.get_ConnectScoRequest());
     case Request::TDisconnectScoRequest:
       return actor->DoRequest(aRequest.get_DisconnectScoRequest());
     case Request::TIsScoConnectedRequest:
       return actor->DoRequest(aRequest.get_IsScoConnectedRequest());
     default:
       MOZ_CRASH("Unknown type!");
-      return false;
   }
 
   MOZ_CRASH("Should never get here!");
-  return false;
 }
 
 PBluetoothRequestParent*
 BluetoothParent::AllocPBluetoothRequest(const Request& aRequest)
 {
   MOZ_ASSERT(mService);
   return new BluetoothRequestParent(mService);
 }
--- a/dom/bluetooth/ipc/BluetoothServiceChildProcess.cpp
+++ b/dom/bluetooth/ipc/BluetoothServiceChildProcess.cpp
@@ -190,34 +190,31 @@ BluetoothServiceChildProcess::RemoveDevi
 nsresult
 BluetoothServiceChildProcess::GetScoSocket(
                                     const nsAString& aObjectPath,
                                     bool aAuth,
                                     bool aEncrypt,
                                     mozilla::ipc::UnixSocketConsumer* aConsumer)
 {
   MOZ_CRASH("This should never be called!");
-  return NS_ERROR_FAILURE;
 }
 
 nsresult
 BluetoothServiceChildProcess::GetServiceChannel(const nsAString& aDeviceAddress,
                                                 const nsAString& aServiceUuid,
                                                 BluetoothProfileManagerBase* aManager)
 {
   MOZ_CRASH("This should never be called!");
-  return NS_ERROR_FAILURE;
 }
 
 bool
 BluetoothServiceChildProcess::UpdateSdpRecords(const nsAString& aDeviceAddress,
                                                BluetoothProfileManagerBase* aManager)
 {
   MOZ_CRASH("This should never be called!");
-  return false;
 }
 
 bool
 BluetoothServiceChildProcess::SetPinCodeInternal(
                                                 const nsAString& aDeviceAddress,
                                                 const nsAString& aPinCode,
                                                 BluetoothReplyRunnable* aRunnable)
 {
@@ -360,39 +357,34 @@ BluetoothServiceChildProcess::HandleShut
   }
   return NS_OK;
 }
 
 nsresult
 BluetoothServiceChildProcess::StartInternal()
 {
   MOZ_CRASH("This should never be called!");
-  return NS_ERROR_FAILURE;
 }
 
 nsresult
 BluetoothServiceChildProcess::StopInternal()
 {
   MOZ_CRASH("This should never be called!");
-  return NS_ERROR_FAILURE;
 }
 
 bool
 BluetoothServiceChildProcess::IsEnabledInternal()
 {
   MOZ_CRASH("This should never be called!");
-  return false;
 }
 
 bool
 BluetoothServiceChildProcess::IsConnected(uint16_t aProfileId)
 {
   MOZ_CRASH("This should never be called!");
-  return false;
 }
 
 nsresult
 BluetoothServiceChildProcess::SendSinkMessage(const nsAString& aDeviceAddresses,
                                               const nsAString& aMessage)
 {
   MOZ_CRASH("This should never be called!");
-  return NS_ERROR_FAILURE;
 }
--- a/dom/fm/FMRadio.cpp
+++ b/dom/fm/FMRadio.cpp
@@ -236,17 +236,16 @@ void FMRadio::Notify(const FMRadioOperat
     case FM_RADIO_OPERATION_DISABLE:
       DispatchTrustedEvent(RADIO_DIABLED_EVENT_NAME);
       break;
     case FM_RADIO_OPERATION_SEEK:
       DispatchTrustedEvent(RADIO_SEEK_COMPLETE_EVENT_NAME);
       break;
     default:
       MOZ_CRASH();
-      return;
   }
 }
 
 /* void canPlayChanged (in boolean canPlay); */
 NS_IMETHODIMP FMRadio::CanPlayChanged(bool canPlay)
 {
   nsCOMPtr<nsIAudioManager> audioManager =
     do_GetService(NS_AUDIOMANAGER_CONTRACTID);
--- a/dom/indexedDB/IDBDatabase.cpp
+++ b/dom/indexedDB/IDBDatabase.cpp
@@ -132,17 +132,16 @@ public:
     return Success_NotSent;
   }
 
   virtual nsresult UnpackResponseFromParentProcess(
                                             const ResponseValue& aResponseValue)
                                             MOZ_OVERRIDE
   {
     MOZ_CRASH("Should never get here!");
-    return NS_ERROR_UNEXPECTED;
   }
 
 private:
   // In-params.
   nsString mName;
   nsString mType;
 
   // Out-params.
@@ -865,17 +864,16 @@ NoRequestDatabaseHelper::SendResponseToC
   return Success_NotSent;
 }
 
 nsresult
 NoRequestDatabaseHelper::UnpackResponseFromParentProcess(
                                             const ResponseValue& aResponseValue)
 {
   MOZ_CRASH("Should never get here!");
-  return NS_ERROR_UNEXPECTED;
 }
 
 nsresult
 NoRequestDatabaseHelper::OnSuccess()
 {
   NS_ASSERTION(IndexedDatabaseManager::IsMainProcess(), "Wrong process!");
   return NS_OK;
 }
--- a/dom/indexedDB/OpenDatabaseHelper.cpp
+++ b/dom/indexedDB/OpenDatabaseHelper.cpp
@@ -1475,17 +1475,16 @@ protected:
     return Success_NotSent;
   }
 
   virtual nsresult UnpackResponseFromParentProcess(
                                             const ResponseValue& aResponseValue)
                                             MOZ_OVERRIDE
   {
     MOZ_CRASH("Should never get here!");
-    return NS_ERROR_UNEXPECTED;
   }
 
   uint64_t RequestedVersion() const
   {
     return mRequestedVersion;
   }
 
 private:
@@ -1555,17 +1554,16 @@ protected:
     return Success_NotSent;
   }
 
   virtual nsresult UnpackResponseFromParentProcess(
                                             const ResponseValue& aResponseValue)
                                             MOZ_OVERRIDE
   {
     MOZ_CRASH("Should never get here!");
-    return NS_ERROR_UNEXPECTED;
   }
 
 private:
   // In-params
   nsRefPtr<OpenDatabaseHelper> mOpenHelper;
   nsRefPtr<IDBOpenDBRequest> mOpenRequest;
   uint64_t mCurrentVersion;
   nsString mName;
--- a/dom/indexedDB/ipc/IndexedDBChild.cpp
+++ b/dom/indexedDB/ipc/IndexedDBChild.cpp
@@ -222,17 +222,16 @@ IndexedDBChild::DeallocPIndexedDBDatabas
   delete aActor;
   return true;
 }
 
 PIndexedDBDeleteDatabaseRequestChild*
 IndexedDBChild::AllocPIndexedDBDeleteDatabaseRequest(const nsString& aName)
 {
   MOZ_CRASH("Caller is supposed to manually construct a request!");
-  return NULL;
 }
 
 bool
 IndexedDBChild::DeallocPIndexedDBDeleteDatabaseRequest(
                                    PIndexedDBDeleteDatabaseRequestChild* aActor)
 {
   delete aActor;
   return true;
@@ -645,29 +644,27 @@ IndexedDBTransactionChild::RecvComplete(
       resultCode = aParams.get_AbortResult().errorCode();
       if (NS_SUCCEEDED(resultCode)) {
         resultCode = NS_ERROR_DOM_INDEXEDDB_ABORT_ERR;
       }
       break;
 
     default:
       MOZ_CRASH("Unknown union type!");
-      return false;
   }
 
   FireCompleteEvent(resultCode);
   return true;
 }
 
 PIndexedDBObjectStoreChild*
 IndexedDBTransactionChild::AllocPIndexedDBObjectStore(
                                     const ObjectStoreConstructorParams& aParams)
 {
   MOZ_CRASH("Caller is supposed to manually construct an object store!");
-  return NULL;
 }
 
 bool
 IndexedDBTransactionChild::DeallocPIndexedDBObjectStore(
                                              PIndexedDBObjectStoreChild* aActor)
 {
   delete aActor;
   return true;
@@ -756,33 +753,31 @@ IndexedDBObjectStoreChild::RecvPIndexedD
   return true;
 }
 
 PIndexedDBRequestChild*
 IndexedDBObjectStoreChild::AllocPIndexedDBRequest(
                                         const ObjectStoreRequestParams& aParams)
 {
   MOZ_CRASH("Caller is supposed to manually construct a request!");
-  return NULL;
 }
 
 bool
 IndexedDBObjectStoreChild::DeallocPIndexedDBRequest(
                                                  PIndexedDBRequestChild* aActor)
 {
   delete aActor;
   return false;
 }
 
 PIndexedDBIndexChild*
 IndexedDBObjectStoreChild::AllocPIndexedDBIndex(
                                           const IndexConstructorParams& aParams)
 {
   MOZ_CRASH("Caller is supposed to manually construct an index!");
-  return NULL;
 }
 
 bool
 IndexedDBObjectStoreChild::DeallocPIndexedDBIndex(PIndexedDBIndexChild* aActor)
 {
   delete aActor;
   return true;
 }
@@ -888,28 +883,26 @@ IndexedDBIndexChild::RecvPIndexedDBCurso
       rv = mIndex->OpenCursorFromChildProcess(request, direction, aParams.key(),
                                               aParams.objectKey(),
                                               getter_AddRefs(cursor));
       NS_ENSURE_SUCCESS(rv, false);
       break;
 
     default:
       MOZ_CRASH("Unknown union type!");
-      return false;
   }
 
   actor->SetCursor(cursor);
   return true;
 }
 
 PIndexedDBRequestChild*
 IndexedDBIndexChild::AllocPIndexedDBRequest(const IndexRequestParams& aParams)
 {
   MOZ_CRASH("Caller is supposed to manually construct a request!");
-  return NULL;
 }
 
 bool
 IndexedDBIndexChild::DeallocPIndexedDBRequest(PIndexedDBRequestChild* aActor)
 {
   delete aActor;
   return true;
 }
@@ -977,17 +970,16 @@ IndexedDBCursorChild::ActorDestroy(Actor
 #endif
   }
 }
 
 PIndexedDBRequestChild*
 IndexedDBCursorChild::AllocPIndexedDBRequest(const CursorRequestParams& aParams)
 {
   MOZ_CRASH("Caller is supposed to manually construct a request!");
-  return NULL;
 }
 
 bool
 IndexedDBCursorChild::DeallocPIndexedDBRequest(PIndexedDBRequestChild* aActor)
 {
   delete aActor;
   return true;
 }
@@ -1030,17 +1022,16 @@ IndexedDBRequestChildBase::Disconnect()
     }
   }
 }
 
 bool
 IndexedDBRequestChildBase::Recv__delete__(const ResponseValue& aResponse)
 {
   MOZ_CRASH("This should be overridden!");
-  return false;
 }
 
 /*******************************************************************************
  * IndexedDBObjectStoreRequestChild
  ******************************************************************************/
 
 IndexedDBObjectStoreRequestChild::IndexedDBObjectStoreRequestChild(
                                                  AsyncConnectionHelper* aHelper,
@@ -1089,17 +1080,16 @@ IndexedDBObjectStoreRequestChild::Recv__
       MOZ_ASSERT(mRequestType == ParamsUnionType::TCountParams);
       break;
     case ResponseValue::TOpenCursorResponse:
       MOZ_ASSERT(mRequestType == ParamsUnionType::TOpenCursorParams);
       break;
 
     default:
       MOZ_CRASH("Received invalid response parameters!");
-      return false;
   }
 
   nsresult rv = mHelper->OnParentProcessRequestComplete(aResponse);
   NS_ENSURE_SUCCESS(rv, false);
 
   return true;
 }
 
@@ -1148,17 +1138,16 @@ IndexedDBIndexRequestChild::Recv__delete
       break;
     case ResponseValue::TOpenCursorResponse:
       MOZ_ASSERT(mRequestType == ParamsUnionType::TOpenCursorParams ||
                  mRequestType == ParamsUnionType::TOpenKeyCursorParams);
       break;
 
     default:
       MOZ_CRASH("Received invalid response parameters!");
-      return false;
   }
 
   nsresult rv = mHelper->OnParentProcessRequestComplete(aResponse);
   NS_ENSURE_SUCCESS(rv, false);
 
   return true;
 }
 
@@ -1192,17 +1181,16 @@ IndexedDBCursorRequestChild::Recv__delet
     case ResponseValue::Tnsresult:
       break;
     case ResponseValue::TContinueResponse:
       MOZ_ASSERT(mRequestType == ParamsUnionType::TContinueParams);
       break;
 
     default:
       MOZ_CRASH("Received invalid response parameters!");
-      return false;
   }
 
   nsresult rv = mHelper->OnParentProcessRequestComplete(aResponse);
   NS_ENSURE_SUCCESS(rv, false);
 
   return true;
 }
 
@@ -1278,24 +1266,22 @@ IPCOpenDatabaseHelper::UnpackResponseFro
   NS_NOTREACHED("Should never get here!");
   return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;
 }
 
 AsyncConnectionHelper::ChildProcessSendResult
 IPCOpenDatabaseHelper::SendResponseToChildProcess(nsresult aResultCode)
 {
   MOZ_CRASH("Don't call me!");
-  return Error;
 }
 
 nsresult
 IPCOpenDatabaseHelper::DoDatabaseWork(mozIStorageConnection* aConnection)
 {
   MOZ_CRASH("Don't call me!");
-  return NS_ERROR_FAILURE;
 }
 
 nsresult
 IPCOpenDatabaseHelper::GetSuccessResult(JSContext* aCx, JS::MutableHandle<JS::Value> aVal)
 {
   return WrapNative(aCx, NS_ISUPPORTS_CAST(EventTarget*, mDatabase),
                     aVal);
 }
@@ -1307,24 +1293,22 @@ IPCSetVersionHelper::UnpackResponseFromP
   NS_NOTREACHED("Should never get here!");
   return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;
 }
 
 AsyncConnectionHelper::ChildProcessSendResult
 IPCSetVersionHelper::SendResponseToChildProcess(nsresult aResultCode)
 {
   MOZ_CRASH("Don't call me!");
-  return Error;
 }
 
 nsresult
 IPCSetVersionHelper::DoDatabaseWork(mozIStorageConnection* aConnection)
 {
   MOZ_CRASH("Don't call me!");
-  return NS_ERROR_FAILURE;
 }
 
 already_AddRefed<nsIDOMEvent>
 IPCSetVersionHelper::CreateSuccessEvent(mozilla::dom::EventTarget* aOwner)
 {
   return IDBVersionChangeEvent::CreateUpgradeNeeded(aOwner,
                                                     mOldVersion,
                                                     mRequestedVersion);
@@ -1339,31 +1323,28 @@ IPCSetVersionHelper::GetSuccessResult(JS
                     aVal);
 }
 
 nsresult
 IPCDeleteDatabaseHelper::UnpackResponseFromParentProcess(
                                             const ResponseValue& aResponseValue)
 {
   MOZ_CRASH("Don't call me!");
-  return NS_ERROR_FAILURE;
 }
 
 AsyncConnectionHelper::ChildProcessSendResult
 IPCDeleteDatabaseHelper::SendResponseToChildProcess(nsresult aResultCode)
 {
   MOZ_CRASH("Don't call me!");
-  return Error;
 }
 
 nsresult
 IPCDeleteDatabaseHelper::GetSuccessResult(JSContext* aCx, JS::MutableHandle<JS::Value> aVal)
 {
   aVal.setUndefined();
   return NS_OK;
 }
 
 nsresult
 IPCDeleteDatabaseHelper::DoDatabaseWork(mozIStorageConnection* aConnection)
 {
   MOZ_CRASH("Don't call me!");
-  return NS_ERROR_FAILURE;
 }
--- a/dom/indexedDB/ipc/IndexedDBParent.cpp
+++ b/dom/indexedDB/ipc/IndexedDBParent.cpp
@@ -306,17 +306,16 @@ IndexedDBDatabaseParent::HandleEvent(nsI
                                                 mOpenRequest))) {
     rv = HandleRequestEvent(aEvent, type);
     NS_ENSURE_SUCCESS(rv, rv);
 
     return NS_OK;
   }
 
   MOZ_CRASH("Unexpected message!");
-  return NS_ERROR_UNEXPECTED;
 }
 
 void
 IndexedDBDatabaseParent::Disconnect()
 {
   if (mDatabase) {
     mDatabase->DisconnectFromActorParent();
   }
@@ -506,17 +505,16 @@ IndexedDBDatabaseParent::HandleRequestEv
 
     databaseConcrete->SetActor(this);
     mDatabase = databaseConcrete;
 
     return NS_OK;
   }
 
   MOZ_CRASH("Unexpected message type!");
-  return NS_ERROR_UNEXPECTED;
 }
 
 nsresult
 IndexedDBDatabaseParent::HandleDatabaseEvent(nsIDOMEvent* aEvent,
                                              const nsAString& aType)
 {
   MOZ_ASSERT(mDatabase);
   MOZ_ASSERT(!aType.EqualsLiteral(ERROR_EVT_STR),
@@ -552,17 +550,16 @@ IndexedDBDatabaseParent::HandleDatabaseE
     if (!SendVersionChange(oldVersion, newVersion)) {
       return NS_ERROR_FAILURE;
     }
 
     return NS_OK;
   }
 
   MOZ_CRASH("Unexpected message type!");
-  return NS_ERROR_UNEXPECTED;
 }
 
 void
 IndexedDBDatabaseParent::ActorDestroy(ActorDestroyReason aWhy)
 {
   if (mDatabase) {
     mDatabase->SetActor(static_cast<IndexedDBDatabaseParent*>(NULL));
     mDatabase->Invalidate();
@@ -776,17 +773,16 @@ IndexedDBTransactionParent::RecvAllReque
 
   return true;
 }
 
 bool
 IndexedDBTransactionParent::RecvDeleteObjectStore(const nsString& aName)
 {
   MOZ_CRASH("Should be overridden, don't call me!");
-  return false;
 }
 
 bool
 IndexedDBTransactionParent::RecvPIndexedDBObjectStoreConstructor(
                                     PIndexedDBObjectStoreParent* aActor,
                                     const ObjectStoreConstructorParams& aParams)
 {
   if (IsDisconnected()) {
@@ -820,21 +816,19 @@ IndexedDBTransactionParent::RecvPIndexed
 
     objectStore->SetActor(actor);
     return true;
   }
 
   if (aParams.type() ==
       ObjectStoreConstructorParams::TCreateObjectStoreParams) {
     MOZ_CRASH("Should be overridden, don't call me!");
-    return false;
   }
 
   MOZ_CRASH("Unknown param type!");
-  return false;
 }
 
 PIndexedDBObjectStoreParent*
 IndexedDBTransactionParent::AllocPIndexedDBObjectStore(
                                     const ObjectStoreConstructorParams& aParams)
 {
   return new IndexedDBObjectStoreParent();
 }
@@ -1025,21 +1019,19 @@ IndexedDBCursorParent::RecvPIndexedDBReq
   }
 
   switch (aParams.type()) {
     case CursorRequestParams::TContinueParams:
       return actor->Continue(aParams.get_ContinueParams());
 
     default:
       MOZ_CRASH("Unknown type!");
-      return false;
   }
 
   MOZ_CRASH("Should never get here!");
-  return false;
 }
 
 PIndexedDBRequestParent*
 IndexedDBCursorParent::AllocPIndexedDBRequest(
                                              const CursorRequestParams& aParams)
 {
   MOZ_ASSERT(mCursor);
   return new IndexedDBCursorRequestParent(mCursor, aParams.type());
@@ -1082,17 +1074,16 @@ IndexedDBObjectStoreParent::ActorDestroy
     mObjectStore->SetActor(static_cast<IndexedDBObjectStoreParent*>(NULL));
   }
 }
 
 bool
 IndexedDBObjectStoreParent::RecvDeleteIndex(const nsString& aName)
 {
   MOZ_CRASH("Should be overridden, don't call me!");
-  return false;
 }
 
 bool
 IndexedDBObjectStoreParent::RecvPIndexedDBRequestConstructor(
                                         PIndexedDBRequestParent* aActor,
                                         const ObjectStoreRequestParams& aParams)
 {
   if (IsDisconnected()) {
@@ -1135,21 +1126,19 @@ IndexedDBObjectStoreParent::RecvPIndexed
     case ObjectStoreRequestParams::TCountParams:
       return actor->Count(aParams.get_CountParams());
 
     case ObjectStoreRequestParams::TOpenCursorParams:
       return actor->OpenCursor(aParams.get_OpenCursorParams());
 
     default:
       MOZ_CRASH("Unknown type!");
-      return false;
   }
 
   MOZ_CRASH("Should never get here!");
-  return false;
 }
 
 bool
 IndexedDBObjectStoreParent::RecvPIndexedDBIndexConstructor(
                                           PIndexedDBIndexParent* aActor,
                                           const IndexConstructorParams& aParams)
 {
   if (IsDisconnected()) {
@@ -1179,21 +1168,19 @@ IndexedDBObjectStoreParent::RecvPIndexed
     }
 
     index->SetActor(actor);
     return true;
   }
 
   if (aParams.type() == IndexConstructorParams::TCreateIndexParams) {
     MOZ_CRASH("Should be overridden, don't call me!");
-    return false;
   }
 
   MOZ_CRASH("Unknown param type!");
-  return false;
 }
 
 PIndexedDBRequestParent*
 IndexedDBObjectStoreParent::AllocPIndexedDBRequest(
                                         const ObjectStoreRequestParams& aParams)
 {
   return new IndexedDBObjectStoreRequestParent(mObjectStore, aParams.type());
 }
@@ -1221,17 +1208,16 @@ IndexedDBObjectStoreParent::DeallocPInde
   return true;
 }
 
 PIndexedDBCursorParent*
 IndexedDBObjectStoreParent::AllocPIndexedDBCursor(
                               const ObjectStoreCursorConstructorParams& aParams)
 {
   MOZ_CRASH("Caller is supposed to manually construct a cursor!");
-  return NULL;
 }
 
 bool
 IndexedDBObjectStoreParent::DeallocPIndexedDBCursor(
                                                  PIndexedDBCursorParent* aActor)
 {
   delete aActor;
   return true;
@@ -1411,21 +1397,19 @@ IndexedDBIndexParent::RecvPIndexedDBRequ
     case IndexRequestParams::TOpenCursorParams:
       return actor->OpenCursor(aParams.get_OpenCursorParams());
 
     case IndexRequestParams::TOpenKeyCursorParams:
       return actor->OpenKeyCursor(aParams.get_OpenKeyCursorParams());
 
     default:
       MOZ_CRASH("Unknown type!");
-      return false;
   }
 
   MOZ_CRASH("Should never get here!");
-  return false;
 }
 
 PIndexedDBRequestParent*
 IndexedDBIndexParent::AllocPIndexedDBRequest(const IndexRequestParams& aParams)
 {
   return new IndexedDBIndexRequestParent(mIndex, aParams.type());
 }
 
@@ -1436,17 +1420,16 @@ IndexedDBIndexParent::DeallocPIndexedDBR
   return true;
 }
 
 PIndexedDBCursorParent*
 IndexedDBIndexParent::AllocPIndexedDBCursor(
                                     const IndexCursorConstructorParams& aParams)
 {
   MOZ_CRASH("Caller is supposed to manually construct a cursor!");
-  return NULL;
 }
 
 bool
 IndexedDBIndexParent::DeallocPIndexedDBCursor(PIndexedDBCursorParent* aActor)
 {
   delete aActor;
   return true;
 }
@@ -1568,17 +1551,16 @@ IndexedDBObjectStoreRequestParent::GetAl
         IDBKeyRange::FromSerializedKeyRange(keyRangeUnion.get_KeyRange());
       break;
 
     case ipc::FIXME_Bug_521898_objectstore::OptionalKeyRange::Tvoid_t:
       break;
 
     default:
       MOZ_CRASH("Unknown param type!");
-      return false;
   }
 
   {
     AutoSetCurrentTransaction asct(mObjectStore->Transaction());
 
     nsresult rv = mObjectStore->GetAllInternal(keyRange, aParams.limit(),
                                                nullptr,
                                                getter_AddRefs(request));
@@ -1708,17 +1690,16 @@ IndexedDBObjectStoreRequestParent::Count
         IDBKeyRange::FromSerializedKeyRange(keyRangeUnion.get_KeyRange());
       break;
 
     case ipc::FIXME_Bug_521898_objectstore::OptionalKeyRange::Tvoid_t:
       break;
 
     default:
       MOZ_CRASH("Unknown param type!");
-      return false;
   }
 
   nsRefPtr<IDBRequest> request;
 
   {
     AutoSetCurrentTransaction asct(mObjectStore->Transaction());
 
     nsresult rv =
@@ -1748,17 +1729,16 @@ IndexedDBObjectStoreRequestParent::OpenC
         IDBKeyRange::FromSerializedKeyRange(keyRangeUnion.get_KeyRange());
       break;
 
     case ipc::FIXME_Bug_521898_objectstore::OptionalKeyRange::Tvoid_t:
       break;
 
     default:
       MOZ_CRASH("Unknown param type!");
-      return false;
   }
 
   size_t direction = static_cast<size_t>(aParams.direction());
 
   nsRefPtr<IDBRequest> request;
 
   {
     AutoSetCurrentTransaction asct(mObjectStore->Transaction());
@@ -1871,17 +1851,16 @@ IndexedDBIndexRequestParent::GetAll(cons
         IDBKeyRange::FromSerializedKeyRange(keyRangeUnion.get_KeyRange());
       break;
 
     case ipc::FIXME_Bug_521898_index::OptionalKeyRange::Tvoid_t:
       break;
 
     default:
       MOZ_CRASH("Unknown param type!");
-      return false;
   }
 
   {
     AutoSetCurrentTransaction asct(mIndex->ObjectStore()->Transaction());
 
     nsresult rv = mIndex->GetAllInternal(keyRange, aParams.limit(), nullptr,
                                          getter_AddRefs(request));
     NS_ENSURE_SUCCESS(rv, false);
@@ -1911,17 +1890,16 @@ IndexedDBIndexRequestParent::GetAllKeys(
         IDBKeyRange::FromSerializedKeyRange(keyRangeUnion.get_KeyRange());
       break;
 
     case ipc::FIXME_Bug_521898_index::OptionalKeyRange::Tvoid_t:
       break;
 
     default:
       MOZ_CRASH("Unknown param type!");
-      return false;
   }
 
   {
     AutoSetCurrentTransaction asct(mIndex->ObjectStore()->Transaction());
 
     nsresult rv = mIndex->GetAllKeysInternal(keyRange, aParams.limit(), nullptr,
                                              getter_AddRefs(request));
     NS_ENSURE_SUCCESS(rv, false);
@@ -1949,17 +1927,16 @@ IndexedDBIndexRequestParent::Count(const
         IDBKeyRange::FromSerializedKeyRange(keyRangeUnion.get_KeyRange());
       break;
 
     case ipc::FIXME_Bug_521898_index::OptionalKeyRange::Tvoid_t:
       break;
 
     default:
       MOZ_CRASH("Unknown param type!");
-      return false;
   }
 
   nsRefPtr<IDBRequest> request;
 
   {
     AutoSetCurrentTransaction asct(mIndex->ObjectStore()->Transaction());
 
     nsresult rv = mIndex->CountInternal(keyRange, nullptr,
@@ -1989,17 +1966,16 @@ IndexedDBIndexRequestParent::OpenCursor(
         IDBKeyRange::FromSerializedKeyRange(keyRangeUnion.get_KeyRange());
       break;
 
     case ipc::FIXME_Bug_521898_objectstore::OptionalKeyRange::Tvoid_t:
       break;
 
     default:
       MOZ_CRASH("Unknown param type!");
-      return false;
   }
 
   size_t direction = static_cast<size_t>(aParams.direction());
 
   nsRefPtr<IDBRequest> request;
 
   {
     AutoSetCurrentTransaction asct(mIndex->ObjectStore()->Transaction());
@@ -2031,17 +2007,16 @@ IndexedDBIndexRequestParent::OpenKeyCurs
         IDBKeyRange::FromSerializedKeyRange(keyRangeUnion.get_KeyRange());
       break;
 
     case ipc::FIXME_Bug_521898_objectstore::OptionalKeyRange::Tvoid_t:
       break;
 
     default:
       MOZ_CRASH("Unknown param type!");
-      return false;
   }
 
   size_t direction = static_cast<size_t>(aParams.direction());
 
   nsRefPtr<IDBRequest> request;
 
   {
     AutoSetCurrentTransaction asct(mIndex->ObjectStore()->Transaction());
@@ -2198,10 +2173,9 @@ IndexedDBDeleteDatabaseRequestParent::Se
  ******************************************************************************/
 
  NS_IMPL_ISUPPORTS1(WeakEventListenerBase, nsIDOMEventListener)
 
  NS_IMETHODIMP
  WeakEventListenerBase::HandleEvent(nsIDOMEvent* aEvent)
 {
   MOZ_CRASH("This must be overridden!");
-  return NS_ERROR_FAILURE;
 }
--- a/dom/ipc/Blob.cpp
+++ b/dom/ipc/Blob.cpp
@@ -86,17 +86,16 @@ public:
   }
 
   bool
   Deserialize(const InputStreamParams& aParams)
   {
     // See InputStreamUtils.cpp to see how deserialization of a
     // RemoteInputStream is special-cased.
     MOZ_CRASH("RemoteInputStream should never be deserialized");
-    return false;
   }
 
   void
   SetStream(nsIInputStream* aStream)
   {
     MOZ_ASSERT(NS_IsMainThread());
     MOZ_ASSERT(aStream);
 
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -842,41 +842,37 @@ ContentChild::DeallocPStorage(PStorageCh
     return true;
 }
 
 PBluetoothChild*
 ContentChild::AllocPBluetooth()
 {
 #ifdef MOZ_B2G_BT
     MOZ_CRASH("No one should be allocating PBluetoothChild actors");
-    return nullptr;
 #else
     MOZ_CRASH("No support for bluetooth on this platform!");
-    return nullptr;
 #endif
 }
 
 bool
 ContentChild::DeallocPBluetooth(PBluetoothChild* aActor)
 {
 #ifdef MOZ_B2G_BT
     delete aActor;
     return true;
 #else
     MOZ_CRASH("No support for bluetooth on this platform!");
-    return false;
 #endif
 }
 
 PSpeechSynthesisChild*
 ContentChild::AllocPSpeechSynthesis()
 {
 #ifdef MOZ_WEBSPEECH
     MOZ_CRASH("No one should be allocating PSpeechSynthesisChild actors");
-    return nullptr;
 #else
     return nullptr;
 #endif
 }
 
 bool
 ContentChild::DeallocPSpeechSynthesis(PSpeechSynthesisChild* aActor)
 {
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -1988,43 +1988,40 @@ ContentParent::AllocPBluetooth()
 {
 #ifdef MOZ_B2G_BT
     if (!AssertAppProcessPermission(this, "bluetooth")) {
         return nullptr;
     }
     return new mozilla::dom::bluetooth::BluetoothParent();
 #else
     MOZ_CRASH("No support for bluetooth on this platform!");
-    return nullptr;
 #endif
 }
 
 bool
 ContentParent::DeallocPBluetooth(PBluetoothParent* aActor)
 {
 #ifdef MOZ_B2G_BT
     delete aActor;
     return true;
 #else
     MOZ_CRASH("No support for bluetooth on this platform!");
-    return false;
 #endif
 }
 
 bool
 ContentParent::RecvPBluetoothConstructor(PBluetoothParent* aActor)
 {
 #ifdef MOZ_B2G_BT
     nsRefPtr<BluetoothService> btService = BluetoothService::Get();
     NS_ENSURE_TRUE(btService, false);
 
     return static_cast<BluetoothParent*>(aActor)->InitWithService(btService);
 #else
     MOZ_CRASH("No support for bluetooth on this platform!");
-    return false;
 #endif
 }
 
 PSpeechSynthesisParent*
 ContentParent::AllocPSpeechSynthesis()
 {
 #ifdef MOZ_WEBSPEECH
     return new mozilla::dom::SpeechSynthesisParent();
--- a/dom/ipc/StructuredCloneUtils.cpp
+++ b/dom/ipc/StructuredCloneUtils.cpp
@@ -43,22 +43,18 @@ Read(JSContext* aCx, JSStructuredCloneRe
     nsCOMPtr<nsIDOMFile> file = do_QueryInterface(closure->mBlobs[aData]);
     MOZ_ASSERT(file);
 
 #ifdef DEBUG
     {
       // File should not be mutable.
       nsCOMPtr<nsIMutable> mutableFile = do_QueryInterface(file);
       bool isMutable;
-      if (NS_FAILED(mutableFile->GetMutable(&isMutable))) {
-        MOZ_CRASH("GetMutable failed!");
-      }
-      else {
-        MOZ_ASSERT(!isMutable);
-      }
+      MOZ_ASSERT(NS_SUCCEEDED(mutableFile->GetMutable(&isMutable)));
+      MOZ_ASSERT(!isMutable);
     }
 #endif
 
     JS::Rooted<JS::Value> wrappedFile(aCx);
     JS::Rooted<JSObject*> global(aCx, JS_GetGlobalForScopeChain(aCx));
     nsresult rv = nsContentUtils::WrapNative(aCx, global, file,
                                              &NS_GET_IID(nsIDOMFile),
                                              wrappedFile.address());
@@ -76,22 +72,18 @@ Read(JSContext* aCx, JSStructuredCloneRe
     nsCOMPtr<nsIDOMBlob> blob = do_QueryInterface(closure->mBlobs[aData]);
     MOZ_ASSERT(blob);
 
 #ifdef DEBUG
     {
       // Blob should not be mutable.
       nsCOMPtr<nsIMutable> mutableBlob = do_QueryInterface(blob);
       bool isMutable;
-      if (NS_FAILED(mutableBlob->GetMutable(&isMutable))) {
-        MOZ_CRASH("GetMutable failed!");
-      }
-      else {
-        MOZ_ASSERT(!isMutable);
-      }
+      MOZ_ASSERT(NS_SUCCEEDED(mutableBlob->GetMutable(&isMutable)));
+      MOZ_ASSERT(!isMutable);
     }
 #endif
 
     JS::Rooted<JS::Value> wrappedBlob(aCx);
     JS::Rooted<JSObject*> global(aCx, JS_GetGlobalForScopeChain(aCx));
     nsresult rv = nsContentUtils::WrapNative(aCx, global, blob,
                                              &NS_GET_IID(nsIDOMBlob),
                                              wrappedBlob.address());
--- a/dom/mobilemessage/src/MmsMessage.cpp
+++ b/dom/mobilemessage/src/MmsMessage.cpp
@@ -362,17 +362,16 @@ MmsMessage::GetDelivery(nsAString& aDeli
       break;
     case eDeliveryState_NotDownloaded:
       aDelivery = DELIVERY_NOT_DOWNLOADED;
       break;
     case eDeliveryState_Unknown:
     case eDeliveryState_EndGuard:
     default:
       MOZ_CRASH("We shouldn't get any other delivery state!");
-      return NS_ERROR_UNEXPECTED;
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 MmsMessage::GetDeliveryStatus(JSContext* aCx, JS::Value* aDeliveryStatus)
 {
@@ -405,17 +404,16 @@ MmsMessage::GetDeliveryStatus(JSContext*
         statusStr = DELIVERY_STATUS_REJECTED;
         break;
       case eDeliveryStatus_Manual:
         statusStr = DELIVERY_STATUS_MANUAL;
         break;
       case eDeliveryStatus_EndGuard:
       default:
         MOZ_CRASH("We shouldn't get any other delivery status!");
-        return NS_ERROR_UNEXPECTED;
     }
     tempStrArray.AppendElement(statusStr);
   }
 
   JS::Rooted<JSObject*> deliveryStatusObj(aCx);
   nsresult rv = nsTArrayToJSArray(aCx, tempStrArray, deliveryStatusObj.address());
   NS_ENSURE_SUCCESS(rv, rv);
 
--- a/dom/mobilemessage/src/MobileMessageCallback.cpp
+++ b/dom/mobilemessage/src/MobileMessageCallback.cpp
@@ -88,17 +88,16 @@ MobileMessageCallback::NotifyError(int32
     case nsIMobileMessageCallback::NO_SIM_CARD_ERROR:
       mDOMRequest->FireError(NS_LITERAL_STRING("NoSimCardError"));
       break;
     case nsIMobileMessageCallback::RADIO_DISABLED_ERROR:
       mDOMRequest->FireError(NS_LITERAL_STRING("RadioDisabledError"));
       break;
     default: // SUCCESS_NO_ERROR is handled above.
       MOZ_CRASH("Should never get here!");
-      return NS_ERROR_FAILURE;
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 MobileMessageCallback::NotifyMessageSent(nsISupports *aMessage)
 {
--- a/dom/mobilemessage/src/MobileMessageCursorCallback.cpp
+++ b/dom/mobilemessage/src/MobileMessageCursorCallback.cpp
@@ -44,17 +44,16 @@ MobileMessageCursorCallback::NotifyCurso
     case nsIMobileMessageCallback::UNKNOWN_ERROR:
       cursor->FireError(NS_LITERAL_STRING("UnknownError"));
       break;
     case nsIMobileMessageCallback::INTERNAL_ERROR:
       cursor->FireError(NS_LITERAL_STRING("InternalError"));
       break;
     default: // SUCCESS_NO_ERROR is handled above.
       MOZ_CRASH("Should never get here!");
-      return NS_ERROR_FAILURE;
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 MobileMessageCursorCallback::NotifyCursorResult(nsISupports* aResult)
 {
--- a/dom/mobilemessage/src/MobileMessageThread.cpp
+++ b/dom/mobilemessage/src/MobileMessageThread.cpp
@@ -182,16 +182,15 @@ MobileMessageThread::GetLastMessageType(
       aLastMessageType = MESSAGE_TYPE_SMS;
       break;
     case eMessageType_MMS:
       aLastMessageType = MESSAGE_TYPE_MMS;
       break;
     case eMessageType_EndGuard:
     default:
       MOZ_CRASH("We shouldn't get any other message type!");
-      return NS_ERROR_UNEXPECTED;
   }
 
   return NS_OK;
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/mobilemessage/src/SmsMessage.cpp
+++ b/dom/mobilemessage/src/SmsMessage.cpp
@@ -174,17 +174,16 @@ SmsMessage::GetDelivery(nsAString& aDeli
       break;
     case eDeliveryState_Error:
       aDelivery = DELIVERY_ERROR;
       break;
     case eDeliveryState_Unknown:
     case eDeliveryState_EndGuard:
     default:
       MOZ_CRASH("We shouldn't get any other delivery state!");
-      return NS_ERROR_UNEXPECTED;
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 SmsMessage::GetDeliveryStatus(nsAString& aDeliveryStatus)
 {
@@ -199,17 +198,16 @@ SmsMessage::GetDeliveryStatus(nsAString&
       aDeliveryStatus = DELIVERY_STATUS_PENDING;
       break;
     case eDeliveryStatus_Error:
       aDeliveryStatus = DELIVERY_STATUS_ERROR;
       break;
     case eDeliveryStatus_EndGuard:
     default:
       MOZ_CRASH("We shouldn't get any other delivery status!");
-      return NS_ERROR_UNEXPECTED;
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 SmsMessage::GetSender(nsAString& aSender)
 {
@@ -247,17 +245,16 @@ SmsMessage::GetMessageClass(nsAString& a
     case eMessageClass_Class2:
       aMessageClass = MESSAGE_CLASS_CLASS_2;
       break;
     case eMessageClass_Class3:
       aMessageClass = MESSAGE_CLASS_CLASS_3;
       break;
     default:
       MOZ_CRASH("We shouldn't get any other message class!");
-      return NS_ERROR_UNEXPECTED;
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 SmsMessage::GetTimestamp(JSContext* cx, JS::Value* aDate)
 {
--- a/dom/mobilemessage/src/ipc/SmsChild.cpp
+++ b/dom/mobilemessage/src/ipc/SmsChild.cpp
@@ -26,17 +26,16 @@ CreateMessageFromMessageData(const Mobil
     case MobileMessageData::TMmsMessageData:
       message = new MmsMessage(aData.get_MmsMessageData());
       break;
     case MobileMessageData::TSmsMessageData:
       message = new SmsMessage(aData.get_SmsMessageData());
       break;
     default:
       MOZ_CRASH("Unexpected type of MobileMessageData");
-      return nullptr;
   }
 
   return message.forget();
 }
 
 void
 NotifyObserversWithMobileMessage(const char* aEventName,
                                  const MobileMessageData& aData)
@@ -109,31 +108,29 @@ SmsChild::RecvNotifyDeliveryErrorMessage
   NotifyObserversWithMobileMessage(kSmsDeliveryErrorObserverTopic, aData);
   return true;
 }
 
 PSmsRequestChild*
 SmsChild::AllocPSmsRequest(const IPCSmsRequest& aRequest)
 {
   MOZ_CRASH("Caller is supposed to manually construct a request!");
-  return nullptr;
 }
 
 bool
 SmsChild::DeallocPSmsRequest(PSmsRequestChild* aActor)
 {
   delete aActor;
   return true;
 }
 
 PMobileMessageCursorChild*
 SmsChild::AllocPMobileMessageCursor(const IPCMobileMessageCursor& aCursor)
 {
   MOZ_CRASH("Caller is supposed to manually construct a cursor!");
-  return nullptr;
 }
 
 bool
 SmsChild::DeallocPMobileMessageCursor(PMobileMessageCursorChild* aActor)
 {
   // MobileMessageCursorChild is refcounted, must not be freed manually.
   // Originally AddRefed in SendCursorRequest() in SmsIPCService.cpp.
   static_cast<MobileMessageCursorChild*>(aActor)->Release();
@@ -196,17 +193,16 @@ SmsRequestChild::Recv__delete__(const Me
     case MessageReply::TReplyMarkeMessageRead:
       mReplyRequest->NotifyMessageMarkedRead(aReply.get_ReplyMarkeMessageRead().read());
       break;
     case MessageReply::TReplyMarkeMessageReadFail:
       mReplyRequest->NotifyMarkMessageReadFailed(aReply.get_ReplyMarkeMessageReadFail().error());
       break;
     default:
       MOZ_CRASH("Received invalid response parameters!");
-      return false;
   }
 
   return true;
 }
 
 /*******************************************************************************
  * MobileMessageCursorChild
  ******************************************************************************/
@@ -239,17 +235,16 @@ MobileMessageCursorChild::RecvNotifyResu
     case MobileMessageCursorData::TSmsMessageData:
       result = new SmsMessage(aData.get_SmsMessageData());
       break;
     case MobileMessageCursorData::TThreadData:
       result = new MobileMessageThread(aData.get_ThreadData());
       break;
     default:
       MOZ_CRASH("Received invalid response parameters!");
-      return false;
   }
 
   mCursorCallback->NotifyCursorResult(result);
   return true;
 }
 
 bool
 MobileMessageCursorChild::Recv__delete__(const int32_t& aError)
--- a/dom/mobilemessage/src/ipc/SmsParent.cpp
+++ b/dom/mobilemessage/src/ipc/SmsParent.cpp
@@ -334,17 +334,16 @@ SmsParent::RecvPSmsRequestConstructor(PS
     case IPCSmsRequest::TGetMessageRequest:
       return actor->DoRequest(aRequest.get_GetMessageRequest());
     case IPCSmsRequest::TDeleteMessageRequest:
       return actor->DoRequest(aRequest.get_DeleteMessageRequest());
     case IPCSmsRequest::TMarkMessageReadRequest:
       return actor->DoRequest(aRequest.get_MarkMessageReadRequest());
     default:
       MOZ_CRASH("Unknown type!");
-      break;
   }
 
   return false;
 }
 
 PSmsRequestParent*
 SmsParent::AllocPSmsRequest(const IPCSmsRequest& aRequest)
 {
@@ -373,17 +372,16 @@ SmsParent::RecvPMobileMessageCursorConst
 
   switch (aRequest.type()) {
     case IPCMobileMessageCursor::TCreateMessageCursorRequest:
       return actor->DoRequest(aRequest.get_CreateMessageCursorRequest());
     case IPCMobileMessageCursor::TCreateThreadCursorRequest:
       return actor->DoRequest(aRequest.get_CreateThreadCursorRequest());
     default:
       MOZ_CRASH("Unknown type!");
-      break;
   }
 
   return false;
 }
 
 PMobileMessageCursorParent*
 SmsParent::AllocPMobileMessageCursor(const IPCMobileMessageCursor& aRequest)
 {
@@ -440,17 +438,16 @@ SmsRequestParent::DoRequest(const SendMe
         NS_WARNING("SmsRequestParent: Fail to build MMS params.");
         return true;
       }
       mmsService->Send(params, this);
     }
     break;
   default:
     MOZ_CRASH("Unknown type of SendMessageRequest!");
-    return false;
   }
   return true;
 }
 
 bool
 SmsRequestParent::DoRequest(const RetrieveMessageRequest& aRequest)
 {
   nsresult rv = NS_ERROR_FAILURE;
@@ -736,17 +733,16 @@ MobileMessageCursorParent::NotifyCursorR
   nsCOMPtr<nsIDOMMozMobileMessageThread> iThread = do_QueryInterface(aResult);
   if (iThread) {
     MobileMessageThread* thread = static_cast<MobileMessageThread*>(aResult);
     return SendNotifyResult(MobileMessageCursorData(thread->GetData()))
       ? NS_OK : NS_ERROR_FAILURE;
   }
 
   MOZ_CRASH("Received invalid response parameters!");
-  return NS_ERROR_FAILURE;
 }
 
 NS_IMETHODIMP
 MobileMessageCursorParent::NotifyCursorDone()
 {
   return NotifyCursorError(nsIMobileMessageCallback::SUCCESS_NO_ERROR);
 }
 
--- a/dom/network/src/TCPSocketParent.cpp
+++ b/dom/network/src/TCPSocketParent.cpp
@@ -108,17 +108,16 @@ TCPSocketParent::RecvData(const Sendable
 
     case SendableData::TnsString:
       rv = mIntermediary->SendString(aData.get_nsString());
       NS_ENSURE_SUCCESS(rv, true);
       break;
 
     default:
       MOZ_CRASH("unexpected SendableData type");
-      return false;
   }
   return true;
 }
 
 bool
 TCPSocketParent::RecvClose()
 {
   NS_ENSURE_TRUE(mSocket, true);
--- a/dom/power/PowerManagerService.cpp
+++ b/dom/power/PowerManagerService.cpp
@@ -115,28 +115,26 @@ PowerManagerService::SyncProfile()
 NS_IMETHODIMP
 PowerManagerService::Reboot()
 {
   StartForceQuitWatchdog(eHalShutdownMode_Reboot, mWatchdogTimeoutSecs);
   // To synchronize any unsaved user data before rebooting.
   SyncProfile();
   hal::Reboot();
   MOZ_CRASH("hal::Reboot() shouldn't return");
-  return NS_OK;
 }
 
 NS_IMETHODIMP
 PowerManagerService::PowerOff()
 {
   StartForceQuitWatchdog(eHalShutdownMode_PowerOff, mWatchdogTimeoutSecs);
   // To synchronize any unsaved user data before powering off.
   SyncProfile();
   hal::PowerOff();
   MOZ_CRASH("hal::PowerOff() shouldn't return");
-  return NS_OK;
 }
 
 NS_IMETHODIMP
 PowerManagerService::Restart()
 {
   // FIXME/bug 796826 this implementation is currently gonk-specific,
   // because it relies on the Gonk to initialize the Gecko processes to
   // restart B2G. It's better to do it here to have a real "restart".
@@ -149,17 +147,16 @@ PowerManagerService::Restart()
 
   // To synchronize any unsaved user data before restarting.
   SyncProfile();
 #ifdef XP_UNIX
   sync();
 #endif
   _exit(0);
   MOZ_CRASH("_exit() shouldn't return");
-  return NS_OK;
 }
 
 NS_IMETHODIMP
 PowerManagerService::AddWakeLockListener(nsIDOMMozWakeLockListener *aListener)
 {
   if (mWakeLockListeners.Contains(aListener))
     return NS_OK;
 
--- a/dom/workers/XMLHttpRequest.cpp
+++ b/dom/workers/XMLHttpRequest.cpp
@@ -259,17 +259,16 @@ ConvertStringToResponseType(const nsAStr
 
   for (size_t index = 0; index < ArrayLength(strings) - 1; index++) {
     if (aString.EqualsASCII(strings[index].value, strings[index].length)) {
       return static_cast<XMLHttpRequestResponseType>(index);
     }
   }
 
   MOZ_CRASH("Don't know anything about this response type!");
-  return XMLHttpRequestResponseType::_empty;
 }
 
 enum
 {
   STRING_abort = 0,
   STRING_error,
   STRING_load,
   STRING_loadstart,
--- a/extensions/cookie/nsPermissionManager.cpp
+++ b/extensions/cookie/nsPermissionManager.cpp
@@ -284,17 +284,16 @@ DeleteFromMozHostListener::
 DeleteFromMozHostListener(nsPermissionManager* aManager)
   : mManager(aManager)
 {
 }
 
 NS_IMETHODIMP DeleteFromMozHostListener::HandleResult(mozIStorageResultSet *)
 {
   MOZ_CRASH("Should not get any results");
-  return NS_OK;
 }
 
 NS_IMETHODIMP DeleteFromMozHostListener::HandleError(mozIStorageError *)
 {
   // Errors are handled in |HandleCompletion|
   return NS_OK;
 }
 
--- a/gfx/gl/GLContext.cpp
+++ b/gfx/gl/GLContext.cpp
@@ -1734,17 +1734,16 @@ GLContext::ReadPixelsIntoImageSurface(gf
         case gfxASurface::ImageFormatRGB16_565:
             destPixelSize = 2;
             destFormat = LOCAL_GL_RGB;
             destType = LOCAL_GL_UNSIGNED_SHORT_5_6_5_REV;
             break;
 
         default:
             MOZ_CRASH("Bad format.");
-            return;
     }
     MOZ_ASSERT(dest->Stride() == dest->Width() * destPixelSize);
 
     GLenum readFormat = destFormat;
     GLenum readType = destType;
     bool needsTempSurf = !GetActualReadFormats(this,
                                                destFormat, destType,
                                                readFormat, readType);
@@ -1768,17 +1767,16 @@ GLContext::ReadPixelsIntoImageSurface(gf
             case LOCAL_GL_RGB: {
                 MOZ_ASSERT(readPixelSize == 2);
                 MOZ_ASSERT(readType == LOCAL_GL_UNSIGNED_SHORT_5_6_5_REV);
                 readFormatGFX = gfxASurface::ImageFormatRGB16_565;
                 break;
             }
             default: {
                 MOZ_CRASH("Bad read format.");
-                return;
             }
         }
 
         switch (readType) {
             case LOCAL_GL_UNSIGNED_BYTE: {
                 MOZ_ASSERT(readFormat == LOCAL_GL_RGBA);
                 readPixelSize = 4;
                 break;
@@ -1790,17 +1788,16 @@ GLContext::ReadPixelsIntoImageSurface(gf
             }
             case LOCAL_GL_UNSIGNED_SHORT_5_6_5_REV: {
                 MOZ_ASSERT(readFormat == LOCAL_GL_RGB);
                 readPixelSize = 2;
                 break;
             }
             default: {
                 MOZ_CRASH("Bad read type.");
-                return;
             }
         }
 
         tempSurf = new gfxImageSurface(dest->GetSize(), readFormatGFX, false);
         readSurf = tempSurf;
     } else {
         readPixelSize = destPixelSize;
         readSurf = dest;
--- a/gfx/gl/GLContextProviderGLX.cpp
+++ b/gfx/gl/GLContextProviderGLX.cpp
@@ -103,17 +103,16 @@ GLXLibrary::EnsureInitialized(LibType li
 #ifdef __OpenBSD__
             libGLfilename = "libGL.so";
 #else
             libGLfilename = "libGL.so.1";
 #endif
             break;
         default:
             MOZ_CRASH("Invalid GLX library type.");
-            return false;
         }
 
         ScopedGfxFeatureReporter reporter(libGLfilename, forceFeatureReport);
         mOGLLibrary = PR_LoadLibrary(libGLfilename);
         if (!mOGLLibrary) {
             NS_WARNING("Couldn't load OpenGL shared library.");
             return false;
         }
--- a/gfx/gl/GLScreenBuffer.cpp
+++ b/gfx/gl/GLScreenBuffer.cpp
@@ -90,20 +90,17 @@ GLScreenBuffer::BindAsFramebuffer(GLCont
     case LOCAL_GL_READ_FRAMEBUFFER_EXT:
         if (!gl->HasExt_FramebufferBlit())
             NS_WARNING("READ_FRAMEBUFFER requested but unavailable.");
 
         gl->raw_fBindFramebuffer(LOCAL_GL_READ_FRAMEBUFFER_EXT, readFB);
         break;
 
     default:
-        // In case we got a bad target.
         MOZ_CRASH("Bad `target` for BindFramebuffer.");
-        gl->raw_fBindFramebuffer(target, 0);
-        break;
     }
 }
 
 void
 GLScreenBuffer::BindFB(GLuint fb)
 {
     GLuint drawFB = DrawFB();
     GLuint readFB = ReadFB();
@@ -573,17 +570,16 @@ ReadBuffer::Create(GLContext* gl,
     case AttachmentType::GLTexture:
         colorTex = surf->Texture();
         break;
     case AttachmentType::GLRenderbuffer:
         colorRB = surf->Renderbuffer();
         break;
     default:
         MOZ_CRASH("Unknown attachment type?");
-        return nullptr;
     }
     MOZ_ASSERT(colorTex || colorRB);
 
     GLuint fb = 0;
     gl->fGenFramebuffers(1, &fb);
     gl->AttachBuffersToFB(colorTex, colorRB, depthRB, stencilRB, fb);
 
     MOZ_ASSERT(gl->IsFramebufferComplete(fb));
@@ -623,17 +619,16 @@ ReadBuffer::Attach(SharedSurface_GL* sur
         case AttachmentType::GLTexture:
             colorTex = surf->Texture();
             break;
         case AttachmentType::GLRenderbuffer:
             colorRB = surf->Renderbuffer();
             break;
         default:
             MOZ_CRASH("Unknown attachment type?");
-            return;
         }
 
         mGL->AttachBuffersToFB(colorTex, colorRB, 0, 0, mFB);
         MOZ_ASSERT(mGL->IsFramebufferComplete(mFB));
     }
 
     mSurf = surf;
 }
--- a/gfx/gl/SharedSurface.h
+++ b/gfx/gl/SharedSurface.h
@@ -101,22 +101,20 @@ public:
         return mHasAlpha;
     }
 
 
     // For use when AttachType is correct.
     virtual GLuint Texture() const {
         MOZ_ASSERT(AttachType() == AttachmentType::GLTexture);
         MOZ_CRASH("Did you forget to override this function?");
-        return 0;
     }
 
     virtual GLuint Renderbuffer() const {
         MOZ_ASSERT(AttachType() == AttachmentType::GLRenderbuffer);
         MOZ_CRASH("Did you forget to override this function?");
-        return 0;
     }
 };
 
 } /* namespace gfx */
 } /* namespace mozilla */
 
 #endif /* SHARED_SURFACE_H_ */
--- a/gfx/gl/SharedSurfaceGL.cpp
+++ b/gfx/gl/SharedSurfaceGL.cpp
@@ -57,17 +57,16 @@ SharedSurface_GL::Copy(SharedSurface_GL*
         } else if (dest->AttachType() == AttachmentType::GLRenderbuffer) {
             GLuint destRB = dest->Renderbuffer();
             ScopedFramebufferForRenderbuffer destWrapper(gl, destRB);
 
             gl->BlitFramebufferToFramebuffer(0, destWrapper.FB(),
                                              src->Size(), dest->Size());
         } else {
             MOZ_CRASH("Unhandled dest->AttachType().");
-            return;
         }
 
         if (srcNeedsUnlock)
             src->UnlockProd();
 
         if (origNeedsRelock)
             origLocked->LockProd();
 
@@ -95,17 +94,16 @@ SharedSurface_GL::Copy(SharedSurface_GL*
         } else if (src->AttachType() == AttachmentType::GLRenderbuffer) {
             GLuint srcRB = src->Renderbuffer();
             ScopedFramebufferForRenderbuffer srcWrapper(gl, srcRB);
 
             gl->BlitFramebufferToFramebuffer(srcWrapper.FB(), 0,
                                              src->Size(), dest->Size());
         } else {
             MOZ_CRASH("Unhandled src->AttachType().");
-            return;
         }
 
         if (destNeedsUnlock)
             dest->UnlockProd();
 
         if (origNeedsRelock)
             origLocked->LockProd();
 
@@ -133,17 +131,16 @@ SharedSurface_GL::Copy(SharedSurface_GL*
 
             gl->BlitTextureToFramebuffer(srcTex, destWrapper.FB(),
                                          src->Size(), dest->Size());
 
             return;
         }
 
         MOZ_CRASH("Unhandled dest->AttachType().");
-        return;
     }
 
     if (src->AttachType() == AttachmentType::GLRenderbuffer) {
         GLuint srcRB = src->Renderbuffer();
         ScopedFramebufferForRenderbuffer srcWrapper(gl, srcRB);
 
         if (dest->AttachType() == AttachmentType::GLTexture) {
             GLuint destTex = dest->Texture();
@@ -160,21 +157,19 @@ SharedSurface_GL::Copy(SharedSurface_GL*
 
             gl->BlitFramebufferToFramebuffer(srcWrapper.FB(), destWrapper.FB(),
                                              src->Size(), dest->Size());
 
             return;
         }
 
         MOZ_CRASH("Unhandled dest->AttachType().");
-        return;
     }
 
     MOZ_CRASH("Unhandled src->AttachType().");
-    return;
 }
 
 void
 SharedSurface_GL::LockProd()
 {
     MOZ_ASSERT(!mIsLocked);
 
     LockProdImpl();
@@ -260,17 +255,16 @@ SharedSurface_Basic::Create(GLContext* g
             format = gfxASurface::ImageFormatRGB24;
         break;
     case LOCAL_GL_RGBA:
     case LOCAL_GL_RGBA8:
         format = gfxASurface::ImageFormatARGB32;
         break;
     default:
         MOZ_CRASH("Unhandled Tex format.");
-        return nullptr;
     }
     return new SharedSurface_Basic(gl, size, hasAlpha, format, tex);
 }
 
 SharedSurface_Basic::SharedSurface_Basic(GLContext* gl,
                                          const gfxIntSize& size,
                                          bool hasAlpha,
                                          gfxASurface::gfxImageFormat format,
--- a/gfx/gl/SurfaceStream.cpp
+++ b/gfx/gl/SurfaceStream.cpp
@@ -39,17 +39,16 @@ SurfaceStream::CreateForType(SurfaceStre
         case SurfaceStreamType::TripleBuffer_Copy:
             return new SurfaceStream_TripleBuffer_Copy(prevStream);
         case SurfaceStreamType::TripleBuffer_Async:
             return new SurfaceStream_TripleBuffer_Async(prevStream);
         case SurfaceStreamType::TripleBuffer:
             return new SurfaceStream_TripleBuffer(prevStream);
         default:
             MOZ_CRASH("Invalid Type.");
-            return nullptr;
     }
 }
 
 void
 SurfaceStream::New(SurfaceFactory* factory, const gfxIntSize& size,
                    SharedSurface*& surf)
 {
     MOZ_ASSERT(!surf);
--- a/gfx/layers/Layers.h
+++ b/gfx/layers/Layers.h
@@ -1773,23 +1773,23 @@ private:
  * Clients will usually want to Connect/Clear() on each transaction to
  * avoid difficulties managing memory across multiple layer subtrees.
  */
 class RefLayer : public ContainerLayer {
   friend class LayerManager;
 
 private:
   virtual void InsertAfter(Layer* aChild, Layer* aAfter)
-  { MOZ_CRASH("no"); }
+  { MOZ_CRASH(); }
 
   virtual void RemoveChild(Layer* aChild)
-  { MOZ_CRASH("no"); }
+  { MOZ_CRASH(); }
 
   virtual void RepositionChild(Layer* aChild, Layer* aAfter)
-  { MOZ_CRASH("no"); }
+  { MOZ_CRASH(); }
 
   using ContainerLayer::SetFrameMetrics;
 
 public:
   /**
    * CONSTRUCTION PHASE ONLY
    * Set the ID of the layer's referent.
    */
--- a/gfx/layers/client/CompositableClient.h
+++ b/gfx/layers/client/CompositableClient.h
@@ -69,17 +69,16 @@ public:
     MOZ_COUNT_CTOR(CompositableClient);
   }
 
   virtual ~CompositableClient();
 
   virtual TextureInfo GetTextureInfo() const
   {
     MOZ_CRASH("This method should be overridden");
-    return TextureInfo();
   }
 
   LayersBackend GetCompositorBackendType() const;
 
   TemporaryRef<TextureClient>
   CreateTextureClient(TextureClientType aTextureClientType);
 
   virtual void SetDescriptorFromReply(TextureIdentifier aTextureId,
--- a/gfx/layers/client/ContentClient.h
+++ b/gfx/layers/client/ContentClient.h
@@ -137,17 +137,16 @@ public:
                                                      uint32_t aFlags,
                                                      gfxASurface**) MOZ_OVERRIDE;
   virtual TemporaryRef<gfx::DrawTarget>
     CreateDTBuffer(ContentType aType, const nsIntRect& aRect, uint32_t aFlags);
 
   virtual TextureInfo GetTextureInfo() const MOZ_OVERRIDE
   {
     MOZ_CRASH("Should not be called on non-remote ContentClient");
-    return TextureInfo();
   }
 
 private:
   BasicLayerManager* mManager;
 };
 
 /**
  * A ContentClientRemote backed by a ThebesLayerBuffer.
--- a/gfx/layers/composite/CompositableHost.cpp
+++ b/gfx/layers/composite/CompositableHost.cpp
@@ -68,17 +68,16 @@ CompositableHost::Create(const TextureIn
   case BUFFER_CONTENT_DIRECT:
     result = new ContentHostDoubleBuffered(aTextureInfo);
     return result;
   case BUFFER_CONTENT_INC:
     result = new ContentHostIncremental(aTextureInfo);
     return result;
   default:
     MOZ_CRASH("Unknown CompositableType");
-    return nullptr;
   }
 }
 
 void
 CompositableHost::DumpTextureHost(FILE* aFile, TextureHost* aTexture)
 {
   if (!aTexture) {
     return;
--- a/gfx/layers/composite/TextureHost.cpp
+++ b/gfx/layers/composite/TextureHost.cpp
@@ -55,17 +55,16 @@ TextureHost::CreateTextureHost(SurfaceDe
                                     aTextureFlags);
 #endif
     case LAYERS_BASIC:
       return CreateBasicTextureHost(aDescriptorType,
                                     aTextureHostFlags,
                                     aTextureFlags);
     default:
       MOZ_CRASH("Couldn't create texture host");
-      return nullptr;
   }
 }
 
 
 TextureHost::TextureHost()
   : mFlags(0)
   , mBuffer(nullptr)
   , mFormat(gfx::FORMAT_UNKNOWN)
--- a/gfx/layers/d3d10/CanvasLayerD3D10.cpp
+++ b/gfx/layers/d3d10/CanvasLayerD3D10.cpp
@@ -166,17 +166,16 @@ CanvasLayerD3D10::UpdateSurface()
 
         mTexture->Unmap(0);
         mSRView = mUploadSRView;
         break;
       }
 
       default:
         MOZ_CRASH("Unhandled SharedSurfaceType.");
-        return;
     }
   } else if (mSurface) {
     RECT r;
     r.left = 0;
     r.top = 0;
     r.right = mBounds.width;
     r.bottom = mBounds.height;
 
--- a/gfx/layers/opengl/CanvasLayerOGL.cpp
+++ b/gfx/layers/opengl/CanvasLayerOGL.cpp
@@ -219,17 +219,16 @@ CanvasLayerOGL::UpdateSurface()
         }
         case SharedSurfaceType::GLTextureShare: {
           SharedSurface_GLTexture* textureSurf = SharedSurface_GLTexture::Cast(surf);
           mTexture = textureSurf->Texture();
           break;
         }
         default:
           MOZ_CRASH("Unacceptable SharedSurface type.");
-          return;
       }
     } else {
       nothingToShow = true;
     }
   } else if (mCanvasSurface) {
 #ifdef XP_MACOSX
     if (mDrawTarget && mDrawTarget->GetNativeSurface(gfx::NATIVE_SURFACE_CGCONTEXT_ACCELERATED)) {
       if (!mTexture) {
@@ -241,17 +240,16 @@ CanvasLayerOGL::UpdateSurface()
       }
       mDrawTarget->Flush();
       return;
     }
 #endif
     updatedSurface = mCanvasSurface;
   } else {
     MOZ_CRASH("Unhandled canvas layer type.");
-    return;
   }
 
   if (updatedSurface) {
     mOGLManager->MakeCurrent();
     mLayerProgram = gl()->UploadSurfaceToTexture(updatedSurface,
                                                  mBounds,
                                                  mUploadTexture,
                                                  true,//false,
--- a/gfx/layers/opengl/GLManager.cpp
+++ b/gfx/layers/opengl/GLManager.cpp
@@ -74,13 +74,12 @@ GLManager::CreateGLManager(LayerManager*
       return new GLManagerCompositor(static_cast<CompositorOGL*>(
         static_cast<LayerManagerComposite*>(aManager)->GetCompositor()));
     } else {
       return nullptr;
     }
   }
 
   MOZ_CRASH("Cannot create GLManager for non-GL layer manager");
-  return nullptr;
 }
 
 }
 }
--- a/gfx/layers/opengl/TextureHostOGL.cpp
+++ b/gfx/layers/opengl/TextureHostOGL.cpp
@@ -111,17 +111,16 @@ FormatFromShaderType(ShaderProgramType a
     case RGBXLayerProgramType:
       return FORMAT_R8G8B8X8;
     case BGRALayerProgramType:
       return FORMAT_B8G8R8A8;
     case BGRXLayerProgramType:
       return FORMAT_B8G8R8X8;
     default:
       MOZ_CRASH("Unsupported texture shader type");
-      return FORMAT_UNKNOWN;
   }
 }
 
 TextureImageTextureHostOGL::~TextureImageTextureHostOGL()
 {
   MOZ_COUNT_DTOR(TextureImageTextureHostOGL);
   if (mTexture && mTexture->InUpdate()) {
     mTexture->EndUpdate();
@@ -431,17 +430,16 @@ SurfaceStreamHostOGL::Lock()
     }
     case SharedSurfaceType::Basic: {
       toUpload = SharedSurface_Basic::Cast(sharedSurf)->GetData();
       MOZ_ASSERT(toUpload);
       break;
     }
     default:
       MOZ_CRASH("Invalid SharedSurface type.");
-      return false;
   }
 
   if (toUpload) {
     // mBounds seems to end up as (0,0,0,0) a lot, so don't use it?
     nsIntSize size(toUpload->GetSize());
     nsIntRect rect(nsIntPoint(0,0), size);
     nsIntRegion bounds(rect);
     mShaderProgram = mGL->UploadSurfaceToTexture(toUpload,
--- a/gfx/thebes/gfxRect.h
+++ b/gfx/thebes/gfxRect.h
@@ -91,27 +91,27 @@ struct gfxRect :
 
     gfxPoint CCWCorner(mozilla::css::Side side) const {
         switch (side) {
             case NS_SIDE_TOP: return TopLeft();
             case NS_SIDE_RIGHT: return TopRight();
             case NS_SIDE_BOTTOM: return BottomRight();
             case NS_SIDE_LEFT: return BottomLeft();
         }
-        MOZ_CRASH("Incomplet switch");
+        MOZ_CRASH("Incomplete switch");
     }
 
     gfxPoint CWCorner(mozilla::css::Side side) const {
         switch (side) {
             case NS_SIDE_TOP: return TopRight();
             case NS_SIDE_RIGHT: return BottomRight();
             case NS_SIDE_BOTTOM: return BottomLeft();
             case NS_SIDE_LEFT: return TopLeft();
         }
-        MOZ_CRASH("Incomplet switch");
+        MOZ_CRASH("Incomplete switch");
     }
 
     /* Conditions this border to Cairo's max coordinate space.
      * The caller can check IsEmpty() after Condition() -- if it's TRUE,
      * the caller can possibly avoid doing any extra rendering.
      */
     void Condition();
 
--- a/hal/gonk/GonkDiskSpaceWatcher.cpp
+++ b/hal/gonk/GonkDiskSpaceWatcher.cpp
@@ -70,17 +70,16 @@ public:
   ~GonkDiskSpaceWatcher() {};
 
   virtual void OnFileCanReadWithoutBlocking(int aFd);
 
   // We should never write to the fanotify fd.
   virtual void OnFileCanWriteWithoutBlocking(int aFd)
   {
     MOZ_CRASH("Must not write to fanotify fd");
-    MOZ_CRASH();
   }
 
   void DoStart();
   void DoStop();
 
 private:
   void NotifyUpdate();
 
--- a/hal/linux/LinuxPower.cpp
+++ b/hal/linux/LinuxPower.cpp
@@ -62,19 +62,17 @@ QuitHard(hal::ShutdownMode aMode)
       // If we can't SIGKILL our process group, something is badly
       // wrong.  Trying to deliver a catch-able signal to ourselves can
       // invoke signal handlers and might cause problems.  So try
       // _exit() and hope we go away.
       _exit(1);
       break;
     default:
       MOZ_CRASH();
-      break;
   }
-  MOZ_CRASH();
 }
 
 // Function to complusively shut down the system with a given mode when timeout.
 static void*
 ForceQuitWatchdog(void* aParamPtr)
 {
   watchdogParam_t* paramPtr = reinterpret_cast<watchdogParam_t*>(aParamPtr);
   if (paramPtr->timeoutSecs > 0 && paramPtr->timeoutSecs <= 30) {
--- a/ipc/glue/FileDescriptor.cpp
+++ b/ipc/glue/FileDescriptor.cpp
@@ -106,17 +106,16 @@ FileDescriptor::ShareTo(const FileDescri
       return base::FileDescriptor(newHandle, /* auto_close */ true);
     }
     NS_WARNING("Failed to duplicate file handle for other process!");
   }
   return base::FileDescriptor();
 #endif
 
   MOZ_CRASH("Must not get here!");
-  return PickleType();
 }
 
 // static
 bool
 FileDescriptor::IsValid(PlatformHandleType aHandle)
 {
   return aHandle != INVALID_HANDLE;
 }
--- a/ipc/glue/URIUtils.cpp
+++ b/ipc/glue/URIUtils.cpp
@@ -75,17 +75,17 @@ SerializeURI(nsIURI* aURI,
     if (scheme.EqualsASCII(entry.string, entry.length)) {
       allowed = true;
       break;
     }
   }
 
   if (!allowed) {
     MOZ_CRASH("All IPDL URIs must be serializable or an allowed "
-                    "scheme!");
+              "scheme!");
   }
 
   GenericURIParams params;
   if (NS_FAILED(aURI->GetSpec(params.spec())) ||
       NS_FAILED(aURI->GetOriginCharset(params.charset()))) {
     MOZ_CRASH("This must never fail!");
   }
 
--- a/ipc/ril/Ril.cpp
+++ b/ipc/ril/Ril.cpp
@@ -151,17 +151,16 @@ RilConnector::SetUp(int aFd)
     // Nothing to do here.
     return true;
 }
 
 void
 RilConnector::GetSocketAddr(const sockaddr_any& aAddr,
                             nsAString& aAddrStr)
 {
-    // Unused.
     MOZ_CRASH("This should never be called!");
 }
 
 } // anonymous namespace
 
 namespace mozilla {
 namespace ipc {
 
--- a/js/public/RootingAPI.h
+++ b/js/public/RootingAPI.h
@@ -884,22 +884,20 @@ template <typename T> class MaybeRooted<
 {
   public:
     typedef T HandleType;
     typedef FakeRooted<T> RootType;
     typedef FakeMutableHandle<T> MutableHandleType;
 
     static inline JS::Handle<T> toHandle(HandleType v) {
         MOZ_ASSUME_NOT_REACHED("Bad conversion");
-        return JS::Handle<T>::fromMarkedLocation(NULL);
     }
 
     static inline JS::MutableHandle<T> toMutableHandle(MutableHandleType v) {
         MOZ_ASSUME_NOT_REACHED("Bad conversion");
-        return JS::MutableHandle<T>::fromMarkedLocation(NULL);
     }
 };
 
 } /* namespace js */
 
 namespace JS {
 
 template <typename T> template <typename S>
--- a/js/src/assembler/jit/ExecutableAllocator.h
+++ b/js/src/assembler/jit/ExecutableAllocator.h
@@ -157,17 +157,17 @@ private:
         m_freePtr += n;
 
         switch (kind) {
           case ION_CODE:      m_ionCodeBytes      += n;        break;
           case BASELINE_CODE: m_baselineCodeBytes += n;        break;
           case ASMJS_CODE:    m_asmJSCodeBytes    += n;        break;
           case REGEXP_CODE:   m_regexpCodeBytes   += n;        break;
           case OTHER_CODE:    m_otherCodeBytes    += n;        break;
-          default:            MOZ_ASSUME_NOT_REACHED("bad code kind"); break;
+          default:            MOZ_ASSUME_NOT_REACHED("bad code kind");
         }
         return result;
     }
 
     size_t available() const {
         JS_ASSERT(m_end >= m_freePtr);
         return m_end - m_freePtr;
     }
--- a/js/src/builtin/Intl.cpp
+++ b/js/src/builtin/Intl.cpp
@@ -71,42 +71,37 @@ using icu::NumberingSystem;
  * and return error codes. Signatures adapted from ICU header files locid.h,
  * numsys.h, ucal.h, ucol.h, udat.h, udatpg.h, uenum.h, unum.h; see the ICU
  * directory for license.
  */
 
 static int32_t
 u_strlen(const UChar *s)
 {
-    MOZ_NOT_REACHED("u_strlen: Intl API disabled");
-    return 0;
+    MOZ_ASSUME_NOT_REACHED("u_strlen: Intl API disabled");
 }
 
 struct UEnumeration;
 
 static int32_t
 uenum_count(UEnumeration *en, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("uenum_count: Intl API disabled");
-    *status = U_UNSUPPORTED_ERROR;
-    return 0;
+    MOZ_ASSUME_NOT_REACHED("uenum_count: Intl API disabled");
 }
 
 static const char *
 uenum_next(UEnumeration *en, int32_t *resultLength, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("uenum_next: Intl API disabled");
-    *status = U_UNSUPPORTED_ERROR;
-    return NULL;
+    MOZ_ASSUME_NOT_REACHED("uenum_next: Intl API disabled");
 }
 
 static void
 uenum_close(UEnumeration *en)
 {
-    MOZ_NOT_REACHED("uenum_close: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("uenum_close: Intl API disabled");
 }
 
 struct UCollator;
 
 enum UColAttribute {
      UCOL_ALTERNATE_HANDLING,
      UCOL_CASE_FIRST,
      UCOL_CASE_LEVEL,
@@ -131,55 +126,55 @@ enum UCollationResult {
   UCOL_EQUAL = 0,
   UCOL_GREATER = 1,
   UCOL_LESS = -1
 };
 
 static int32_t
 ucol_countAvailable(void)
 {
-    MOZ_NOT_REACHED("ucol_countAvailable: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucol_countAvailable: Intl API disabled");
 }
 
 static const char *
 ucol_getAvailable(int32_t localeIndex)
 {
-    MOZ_NOT_REACHED("ucol_getAvailable: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucol_getAvailable: Intl API disabled");
 }
 
 static UCollator *
 ucol_open(const char *loc, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("ucol_open: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucol_open: Intl API disabled");
 }
 
 static void
 ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("ucol_setAttribute: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucol_setAttribute: Intl API disabled");
 }
 
 static UCollationResult
 ucol_strcoll(const UCollator *coll, const UChar *source, int32_t sourceLength,
              const UChar *target, int32_t targetLength)
 {
-    MOZ_NOT_REACHED("ucol_strcoll: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucol_strcoll: Intl API disabled");
 }
 
 static void
 ucol_close(UCollator *coll)
 {
-    MOZ_NOT_REACHED("ucol_close: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucol_close: Intl API disabled");
 }
 
 static UEnumeration *
 ucol_getKeywordValuesForLocale(const char *key, const char *locale, UBool commonlyUsed,
                                UErrorCode *status)
 {
-    MOZ_NOT_REACHED("ucol_getKeywordValuesForLocale: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucol_getKeywordValuesForLocale: Intl API disabled");
 }
 
 struct UParseError;
 struct UFieldPosition;
 typedef void *UNumberFormat;
 
 enum UNumberFormatStyle {
     UNUM_DECIMAL = 1,
@@ -206,195 +201,195 @@ enum UNumberFormatAttribute {
 
 enum UNumberFormatTextAttribute {
   UNUM_CURRENCY_CODE,
 };
 
 static int32_t
 unum_countAvailable(void)
 {
-    MOZ_NOT_REACHED("unum_countAvailable: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("unum_countAvailable: Intl API disabled");
 }
 
 static const char *
 unum_getAvailable(int32_t localeIndex)
 {
-    MOZ_NOT_REACHED("unum_getAvailable: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("unum_getAvailable: Intl API disabled");
 }
 
 static UNumberFormat *
 unum_open(UNumberFormatStyle style, const UChar *pattern, int32_t patternLength,
           const char *locale, UParseError *parseErr, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("unum_open: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("unum_open: Intl API disabled");
 }
 
 static void
 unum_setAttribute(UNumberFormat *fmt, UNumberFormatAttribute  attr, int32_t newValue)
 {
-    MOZ_NOT_REACHED("unum_setAttribute: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("unum_setAttribute: Intl API disabled");
 }
 
 static int32_t
 unum_formatDouble(const UNumberFormat *fmt, double number, UChar *result,
                   int32_t resultLength, UFieldPosition *pos, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("unum_formatDouble: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("unum_formatDouble: Intl API disabled");
 }
 
 static void
 unum_close(UNumberFormat *fmt)
 {
-    MOZ_NOT_REACHED("unum_close: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("unum_close: Intl API disabled");
 }
 
 static void
 unum_setTextAttribute(UNumberFormat *fmt, UNumberFormatTextAttribute tag, const UChar *newValue,
                       int32_t newValueLength, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("unum_setTextAttribute: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("unum_setTextAttribute: Intl API disabled");
 }
 
 class Locale {
   public:
     Locale(const char *language, const char *country = 0, const char *variant = 0,
            const char *keywordsAndValues = 0);
 };
 
 Locale::Locale(const char *language, const char *country, const char *variant,
                const char *keywordsAndValues)
 {
-    MOZ_NOT_REACHED("Locale::Locale: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("Locale::Locale: Intl API disabled");
 }
 
 class NumberingSystem {
   public:
     static NumberingSystem *createInstance(const Locale &inLocale, UErrorCode &status);
     const char *getName();
 };
 
 NumberingSystem *
 NumberingSystem::createInstance(const Locale &inLocale, UErrorCode &status)
 {
-    MOZ_NOT_REACHED("NumberingSystem::createInstance: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("NumberingSystem::createInstance: Intl API disabled");
 }
 
 const char *
 NumberingSystem::getName()
 {
-    MOZ_NOT_REACHED("NumberingSystem::getName: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("NumberingSystem::getName: Intl API disabled");
 }
 
 typedef void *UCalendar;
 
 enum UCalendarType {
   UCAL_TRADITIONAL,
   UCAL_DEFAULT = UCAL_TRADITIONAL,
   UCAL_GREGORIAN
 };
 
 static UCalendar *
 ucal_open(const UChar *zoneID, int32_t len, const char *locale,
           UCalendarType type, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("ucal_open: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucal_open: Intl API disabled");
 }
 
 static const char *
 ucal_getType(const UCalendar *cal, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("ucal_getType: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucal_getType: Intl API disabled");
 }
 
 static UEnumeration *
 ucal_getKeywordValuesForLocale(const char *key, const char *locale,
                                UBool commonlyUsed, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("ucal_getKeywordValuesForLocale: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucal_getKeywordValuesForLocale: Intl API disabled");
 }
 
 static void
 ucal_close(UCalendar *cal)
 {
-    MOZ_NOT_REACHED("ucal_close: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucal_close: Intl API disabled");
 }
 
 typedef void *UDateTimePatternGenerator;
 
 static UDateTimePatternGenerator *
 udatpg_open(const char *locale, UErrorCode *pErrorCode)
 {
-    MOZ_NOT_REACHED("udatpg_open: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("udatpg_open: Intl API disabled");
 }
 
 static int32_t
 udatpg_getBestPattern(UDateTimePatternGenerator *dtpg, const UChar *skeleton,
                       int32_t length, UChar *bestPattern, int32_t capacity,
                       UErrorCode *pErrorCode)
 {
-    MOZ_NOT_REACHED("udatpg_getBestPattern: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("udatpg_getBestPattern: Intl API disabled");
 }
 
 static void
 udatpg_close(UDateTimePatternGenerator *dtpg)
 {
-    MOZ_NOT_REACHED("udatpg_close: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("udatpg_close: Intl API disabled");
 }
 
 typedef void *UCalendar;
 typedef void *UDateFormat;
 
 enum UDateFormatStyle {
     UDAT_PATTERN = -2,
     UDAT_IGNORE = UDAT_PATTERN
 };
 
 static int32_t
 udat_countAvailable(void)
 {
-    MOZ_NOT_REACHED("udat_countAvailable: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("udat_countAvailable: Intl API disabled");
 }
 
 static const char *
 udat_getAvailable(int32_t localeIndex)
 {
-    MOZ_NOT_REACHED("udat_getAvailable: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("udat_getAvailable: Intl API disabled");
 }
 
 static UDateFormat *
 udat_open(UDateFormatStyle timeStyle, UDateFormatStyle dateStyle, const char *locale,
           const UChar *tzID, int32_t tzIDLength, const UChar *pattern,
           int32_t patternLength, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("udat_open: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("udat_open: Intl API disabled");
 }
 
 static const UCalendar *
 udat_getCalendar(const UDateFormat *fmt)
 {
-    MOZ_NOT_REACHED("udat_getCalendar: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("udat_getCalendar: Intl API disabled");
 }
 
 static void
 ucal_setGregorianChange(UCalendar *cal, UDate date, UErrorCode *pErrorCode)
 {
-    MOZ_NOT_REACHED("ucal_setGregorianChange: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("ucal_setGregorianChange: Intl API disabled");
 }
 
 static int32_t
 udat_format(const UDateFormat *format, UDate dateToFormat, UChar *result,
             int32_t resultLength, UFieldPosition *position, UErrorCode *status)
 {
-    MOZ_NOT_REACHED("udat_format: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("udat_format: Intl API disabled");
 }
 
 static void
 udat_close(UDateFormat *format)
 {
-    MOZ_NOT_REACHED("udat_close: Intl API disabled");
+    MOZ_ASSUME_NOT_REACHED("udat_close: Intl API disabled");
 }
 
 #endif
 
 
 /******************** Common to Intl constructors ********************/
 
 static bool
--- a/js/src/builtin/TestingFunctions.cpp
+++ b/js/src/builtin/TestingFunctions.cpp
@@ -485,17 +485,17 @@ GCState(JSContext *cx, unsigned argc, js
     gc::State globalState = cx->runtime()->gcIncrementalState;
     if (globalState == gc::NO_INCREMENTAL)
         state = "none";
     else if (globalState == gc::MARK)
         state = "mark";
     else if (globalState == gc::SWEEP)
         state = "sweep";
     else
-        MOZ_NOT_REACHED("Unobserveable global GC state");
+        MOZ_ASSUME_NOT_REACHED("Unobserveable global GC state");
 
     JSString *str = JS_NewStringCopyZ(cx, state);
     if (!str)
         return false;
     *vp = StringValue(str);
     return true;
 }
 
--- a/js/src/ctypes/CTypes.cpp
+++ b/js/src/ctypes/CTypes.cpp
@@ -2565,17 +2565,16 @@ ImplicitConvert(JSContext* cx,
       break;
     }
 
     return TypeError(cx, "struct", val);
   }
   case TYPE_void_t:
   case TYPE_function:
     MOZ_ASSUME_NOT_REACHED("invalid type");
-    return false;
   }
 
   return true;
 }
 
 // Convert jsval 'val' to a C binary representation of CType 'targetType',
 // storing the result in 'buffer'. This function is more forceful than
 // ImplicitConvert.
@@ -2638,17 +2637,16 @@ ExplicitConvert(JSContext* cx, HandleVal
   case TYPE_array:
   case TYPE_struct:
     // ImplicitConvert is sufficient. Re-throw the exception it generated.
     JS_SetPendingException(cx, ex);
     return false;
   case TYPE_void_t:
   case TYPE_function:
     MOZ_ASSUME_NOT_REACHED("invalid type");
-    return false;
   }
   return true;
 }
 
 // Given a CType 'typeObj', generate a string describing the C type declaration
 // corresponding to 'typeObj'. For instance, the CType constructed from
 // 'ctypes.int32_t.ptr.array(4).ptr.ptr' will result in the type string
 // 'int32_t*(**)[4]'.
@@ -2811,17 +2809,16 @@ BuildTypeSource(JSContext* cx,
     case ABI_STDCALL:
       AppendString(result, "ctypes.stdcall_abi, ");
       break;
     case ABI_WINAPI:
       AppendString(result, "ctypes.winapi_abi, ");
       break;
     case INVALID_ABI:
       MOZ_ASSUME_NOT_REACHED("invalid abi");
-      break;
     }
 
     // Recursively build the source string describing the function return and
     // argument types.
     BuildTypeSource(cx, fninfo->mReturnType, true, result);
 
     if (fninfo->mArgTypes.length() > 0) {
       AppendString(result, ", [");
@@ -3056,17 +3053,16 @@ BuildDataSource(JSContext* cx,
 
     if (isImplicit)
       AppendString(result, "}");
 
     break;
   }
   case TYPE_void_t:
     MOZ_ASSUME_NOT_REACHED("invalid type");
-    break;
   }
 
   return true;
 }
 
 /*******************************************************************************
 ** JSAPI callback function implementations
 *******************************************************************************/
@@ -5459,17 +5455,16 @@ FunctionType::BuildSymbolName(JSString* 
     // mangling is done.
     AppendString(result, name);
 #endif
     break;
   }
 
   case INVALID_ABI:
     MOZ_ASSUME_NOT_REACHED("invalid abi");
-    break;
   }
 }
 
 static FunctionInfo*
 NewFunctionInfo(JSContext* cx,
                 jsval abiType,
                 jsval returnType,
                 jsval* argTypes,
--- a/js/src/frontend/BytecodeEmitter.cpp
+++ b/js/src/frontend/BytecodeEmitter.cpp
@@ -1620,17 +1620,16 @@ CheckSideEffects(JSContext *cx, Bytecode
               case PNK_ELEM:
                 /* All these delete addressing modes have effects too. */
                 *answer = true;
                 return true;
               default:
                 return CheckSideEffects(cx, bce, pn2, answer);
             }
             MOZ_ASSUME_NOT_REACHED("We have a returning default case");
-            return false;
           }
 
           case PNK_TYPEOF:
           case PNK_VOID:
           case PNK_NOT:
           case PNK_BITNOT:
             if (pn->isOp(JSOP_NOT)) {
                 /* ! does not convert its operand via toString or valueOf. */
@@ -1644,17 +1643,16 @@ CheckSideEffects(JSContext *cx, Bytecode
              * effects. Of the remaining unary-arity node types, we can't
              * easily prove that the operand never denotes an object with a
              * toString or valueOf method.
              */
             *answer = true;
             return true;
         }
         MOZ_ASSUME_NOT_REACHED("We have a returning default case");
-        return false;
 
       case PN_NAME:
         /*
          * Take care to avoid trying to bind a label name (labels, both for
          * statements and property values in object initialisers, have pn_op
          * defaulted to JSOP_NOP).
          */
         if (pn->isKind(PNK_NAME) && !pn->isOp(JSOP_NOP)) {
--- a/js/src/frontend/ParseNode.cpp
+++ b/js/src/frontend/ParseNode.cpp
@@ -377,25 +377,23 @@ Parser<FullParseHandler>::cloneParseTree
     pn->setUsed(opn->isUsed());
 
     switch (pn->getArity()) {
 #define NULLCHECK(e)    JS_BEGIN_MACRO if (!(e)) return NULL; JS_END_MACRO
 
       case PN_CODE:
         if (pn->getKind() == PNK_MODULE) {
             MOZ_ASSUME_NOT_REACHED("module nodes cannot be cloned");
-            return NULL;
-        } else {
-            NULLCHECK(pn->pn_funbox =
-                      newFunctionBox(opn->pn_funbox->function(), pc, opn->pn_funbox->strict));
-            NULLCHECK(pn->pn_body = cloneParseTree(opn->pn_body));
-            pn->pn_cookie = opn->pn_cookie;
-            pn->pn_dflags = opn->pn_dflags;
-            pn->pn_blockid = opn->pn_blockid;
         }
+        NULLCHECK(pn->pn_funbox =
+                  newFunctionBox(opn->pn_funbox->function(), pc, opn->pn_funbox->strict));
+        NULLCHECK(pn->pn_body = cloneParseTree(opn->pn_body));
+        pn->pn_cookie = opn->pn_cookie;
+        pn->pn_dflags = opn->pn_dflags;
+        pn->pn_blockid = opn->pn_blockid;
         break;
 
       case PN_LIST:
         pn->makeEmpty();
         for (ParseNode *opn2 = opn->pn_head; opn2; opn2 = opn2->pn_next) {
             ParseNode *pn2;
             NULLCHECK(pn2 = cloneParseTree(opn2));
             pn->append(pn2);
--- a/js/src/frontend/Parser.cpp
+++ b/js/src/frontend/Parser.cpp
@@ -184,17 +184,16 @@ ParseContext<FullParseHandler>::define(J
         dn->pn_dflags |= (PND_LET | PND_BOUND);
         JS_ASSERT(dn->pn_cookie.level() == staticLevel); /* see bindLet */
         if (!decls_.addShadow(name, dn))
             return false;
         break;
 
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected kind");
-        break;
     }
 
     return true;
 }
 
 template <>
 bool
 ParseContext<SyntaxParseHandler>::define(JSContext *cx, HandlePropertyName name, Node pn,
@@ -3971,17 +3970,16 @@ Parser<FullParseHandler>::forStatement()
           case PNK_NAME:
             /* Beware 'for (arguments in ...)' with or without a 'var'. */
             pn2->markAsAssigned();
             break;
 
 #if JS_HAS_DESTRUCTURING
           case PNK_ASSIGN:
             MOZ_ASSUME_NOT_REACHED("forStatement TOK_ASSIGN");
-            break;
 
           case PNK_ARRAY:
           case PNK_OBJECT:
             if (versionNumber() == JSVERSION_1_7) {
                 /*
                  * Destructuring for-in requires [key, value] enumeration
                  * in JS1.7.
                  */
@@ -6652,17 +6650,16 @@ Parser<ParseHandler>::primaryExpr(TokenK
             if (op == JSOP_INITPROP) {
                 assignType = VALUE;
             } else if (op == JSOP_INITPROP_GETTER) {
                 assignType = GET;
             } else if (op == JSOP_INITPROP_SETTER) {
                 assignType = SET;
             } else {
                 MOZ_ASSUME_NOT_REACHED("bad opcode in object initializer");
-                assignType = VALUE; /* try to error early */
             }
 
             AtomIndexAddPtr p = seen.lookupForAdd(atom);
             if (p) {
                 jsatomid index = p.value();
                 AssignmentType oldAssignType = AssignmentType(index);
                 if ((oldAssignType & assignType) &&
                     (oldAssignType != VALUE || assignType != VALUE || pc->sc->needStrictChecks()))
--- a/js/src/gc/Statistics.cpp
+++ b/js/src/gc/Statistics.cpp
@@ -246,17 +246,17 @@ ExplainReason(JS::gcreason::Reason reaso
 {
     switch (reason) {
 #define SWITCH_REASON(name)                     \
         case JS::gcreason::name:                    \
           return #name;
         GCREASONS(SWITCH_REASON)
 
         default:
-          MOZ_NOT_REACHED("bad GC reason");
+          MOZ_ASSUME_NOT_REACHED("bad GC reason");
 #undef SWITCH_REASON
     }
 }
 
 static double
 t(int64_t t)
 {
     return double(t) / PRMJ_USEC_PER_MSEC;
--- a/js/src/gc/StoreBuffer.cpp
+++ b/js/src/gc/StoreBuffer.cpp
@@ -65,17 +65,17 @@ StoreBuffer::WholeCellEdges::mark(JSTrac
     if (kind <= JSTRACE_OBJECT) {
         MarkChildren(trc, static_cast<JSObject *>(tenured));
         return;
     }
 #ifdef JS_ION
     JS_ASSERT(kind == JSTRACE_IONCODE);
     static_cast<ion::IonCode *>(tenured)->trace(trc);
 #else
-    MOZ_NOT_REACHED("Only objects can be in the wholeCellBuffer if IonMonkey is disabled.");
+    MOZ_ASSUME_NOT_REACHED("Only objects can be in the wholeCellBuffer if IonMonkey is disabled.");
 #endif
 }
 
 /*** MonoTypeBuffer ***/
 
 /* How full we allow a store buffer to become before we request a MinorGC. */
 const static double HighwaterRatio = 7.0 / 8.0;
 
--- a/js/src/ion/AsmJS.cpp
+++ b/js/src/ion/AsmJS.cpp
@@ -408,33 +408,31 @@ class Type
           case Unsigned:
           case Intish:
             return MIRType_Int32;
           case Void:
           case Unknown:
             return MIRType_None;
         }
         MOZ_ASSUME_NOT_REACHED("Invalid Type");
-        return MIRType_None;
     }
 
     const char *toChars() const {
         switch (which_) {
           case Double:    return "double";
           case Doublish:  return "doublish";
           case Fixnum:    return "fixnum";
           case Int:       return "int";
           case Signed:    return "signed";
           case Unsigned:  return "unsigned";
           case Intish:    return "intish";
           case Void:      return "void";
           case Unknown:   return "unknown";
         }
         MOZ_ASSUME_NOT_REACHED("Invalid Type");
-        return "";
     }
 };
 
 // Represents the subset of Type that can be used as the return type of a
 // function.
 class RetType
 {
   public:
@@ -464,42 +462,39 @@ class RetType
     }
     AsmJSModule::ReturnType toModuleReturnType() const {
         switch (which_) {
           case Void: return AsmJSModule::Return_Void;
           case Signed: return AsmJSModule::Return_Int32;
           case Double: return AsmJSModule::Return_Double;
         }
         MOZ_ASSUME_NOT_REACHED("Unexpected return type");
-        return AsmJSModule::Return_Void;
     }
     MIRType toMIRType() const {
         switch (which_) {
           case Void: return MIRType_None;
           case Signed: return MIRType_Int32;
           case Double: return MIRType_Double;
         }
         MOZ_ASSUME_NOT_REACHED("Unexpected return type");
-        return MIRType_None;
     }
     bool operator==(RetType rhs) const { return which_ == rhs.which_; }
     bool operator!=(RetType rhs) const { return which_ != rhs.which_; }
 };
 
 // Implements <: (subtype) operator when the rhs is an RetType
 static inline bool
 operator<=(Type lhs, RetType rhs)
 {
     switch (rhs.which()) {
       case RetType::Signed: return lhs.isSigned();
       case RetType::Double: return lhs == Type::Double;
       case RetType::Void:   return lhs == Type::Void;
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected rhs type");
-    return false;
 }
 
 // Represents the subset of Type that can be used as a variable or
 // argument's type. Note: AsmJSCoercion and VarType are kept separate to
 // make very clear the signed/int distinction: a coercion may explicitly sign
 // an *expression* but, when stored as a variable, this signedness information
 // is explicitly thrown away by the asm.js type system. E.g., in
 //
@@ -563,17 +558,16 @@ class VarType
 static inline bool
 operator<=(Type lhs, VarType rhs)
 {
     switch (rhs.which()) {
       case VarType::Int:    return lhs.isInt();
       case VarType::Double: return lhs.isDouble();
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected rhs type");
-    return false;
 }
 
 // Passed from parent expressions to child expressions to indicate if and how
 // the child expression's result will be coerced. While most type checking
 // occurs bottom-up (with child expressions returning the type of the result
 // and parents checking these types), FFI calls naturally want to know the
 // parent's context to determine the appropriate result type. If a parent
 // passes NoCoercion to an FFI all, then the FFI's return type will be "Void"
@@ -767,17 +761,16 @@ TypedArrayLoadType(ArrayBufferView::View
       case ArrayBufferView::TYPE_UINT32:
         return Type::Intish;
       case ArrayBufferView::TYPE_FLOAT32:
       case ArrayBufferView::TYPE_FLOAT64:
         return Type::Doublish;
       default:;
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected array type");
-    return Type();
 }
 
 enum ArrayStoreEnum {
     ArrayStore_Intish,
     ArrayStore_Doublish
 };
 
 static ArrayStoreEnum
@@ -792,17 +785,16 @@ TypedArrayStoreType(ArrayBufferView::Vie
       case ArrayBufferView::TYPE_UINT32:
         return ArrayStore_Intish;
       case ArrayBufferView::TYPE_FLOAT32:
       case ArrayBufferView::TYPE_FLOAT64:
         return ArrayStore_Doublish;
       default:;
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected array type");
-    return ArrayStore_Doublish;
 }
 
 /*****************************************************************************/
 
 typedef Vector<PropertyName*,1> LabelVector;
 typedef Vector<MBasicBlock*,8> BlockVector;
 
 // ModuleCompiler encapsulates the compilation of an entire asm.js module. Over
@@ -3859,17 +3851,16 @@ IsValidIntMultiplyConstant(ParseNode *ex
         return false;
       case NumLit::BigUnsigned:
       case NumLit::Double:
       case NumLit::OutOfRangeInt:
         return false;
     }
 
     MOZ_ASSUME_NOT_REACHED("Bad literal");
-    return false;
 }
 
 static bool
 CheckMultiply(FunctionCompiler &f, ParseNode *star, MDefinition **def, Type *type)
 {
     JS_ASSERT(star->isKind(PNK_STAR));
     ParseNode *lhs = BinaryLeft(star);
     ParseNode *rhs = BinaryRight(star);
--- a/js/src/ion/BaselineFrameInfo.cpp
+++ b/js/src/ion/BaselineFrameInfo.cpp
@@ -44,17 +44,16 @@ FrameInfo::sync(StackValue *val)
       case StackValue::Register:
         masm.pushValue(val->reg());
         break;
       case StackValue::Constant:
         masm.pushValue(val->constant());
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Invalid kind");
-        break;
     }
 
     val->setStack();
 }
 
 void
 FrameInfo::syncStack(uint32_t uses)
 {
--- a/js/src/ion/BaselineIC.cpp
+++ b/js/src/ion/BaselineIC.cpp
@@ -1432,17 +1432,16 @@ DoTypeUpdateFallback(JSContext *cx, Base
             id = NameToId(ScopeCoordinateName(cx, script, pc));
         else
             id = NameToId(script->getName(pc));
         types::AddTypePropertyId(cx, obj, id, value);
         break;
       }
       default:
         MOZ_ASSUME_NOT_REACHED("Invalid stub");
-        return false;
     }
 
     return stub->addUpdateStubForValue(cx, script, obj, id, value);
 }
 
 typedef bool (*DoTypeUpdateFallbackFn)(JSContext *, BaselineFrame *, ICUpdatedStub *, HandleValue,
                                        HandleValue);
 const VMFunction DoTypeUpdateFallbackInfo =
@@ -2460,17 +2459,16 @@ DoBinaryArithFallback(JSContext *cx, Bas
       }
       case JSOP_URSH: {
         if (!UrshOperation(cx, script, pc, lhs, rhs, ret.address()))
             return false;
         break;
       }
       default:
         MOZ_ASSUME_NOT_REACHED("Unhandled baseline arith op");
-        return false;
     }
 
     if (ret.isDouble())
         stub->setSawDoubleResult();
 
     // Check to see if a new stub should be generated.
     if (stub->numOptimizedStubs() >= ICBinaryArith_Fallback::MAX_OPTIMIZED_STUBS) {
         // TODO: Discard all stubs in this IC and replace with inert megamorphic stub.
@@ -2779,17 +2777,16 @@ ICBinaryArith_Double::Compiler::generate
         masm.setupUnalignedABICall(2, R0.scratchReg());
         masm.passABIArg(FloatReg0);
         masm.passABIArg(FloatReg1);
         masm.callWithABI(JS_FUNC_TO_DATA_PTR(void *, NumberMod), MacroAssembler::DOUBLE);
         JS_ASSERT(ReturnFloatReg == FloatReg0);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected op");
-        return false;
     }
 
     masm.boxDouble(FloatReg0, R0);
     EmitReturnFromIC(masm);
 
     // Failure case - jump to next stub
     masm.bind(&failure);
     EmitStubGuardFailure(masm);
@@ -2860,17 +2857,16 @@ ICBinaryArith_BooleanWithInt32::Compiler
       case JSOP_BITAND: {
         masm.andPtr(rhsReg, lhsReg);
         masm.tagValue(JSVAL_TYPE_INT32, lhsReg, R0);
         EmitReturnFromIC(masm);
         break;
       }
       default:
        MOZ_ASSUME_NOT_REACHED("Unhandled op for BinaryArith_BooleanWithInt32.");
-       return false;
     }
 
     // Failure case - jump to next stub
     masm.bind(&failure);
     EmitStubGuardFailure(masm);
     return true;
 }
 
@@ -2923,17 +2919,16 @@ ICBinaryArith_DoubleWithInt32::Compiler:
       case JSOP_BITXOR:
         masm.xorPtr(intReg, intReg2);
         break;
       case JSOP_BITAND:
         masm.andPtr(intReg, intReg2);
         break;
       default:
        MOZ_ASSUME_NOT_REACHED("Unhandled op for BinaryArith_DoubleWithInt32.");
-       return false;
     }
     masm.tagValue(JSVAL_TYPE_INT32, intReg2, R0);
     EmitReturnFromIC(masm);
 
     // Failure case - jump to next stub
     masm.bind(&failure);
     EmitStubGuardFailure(masm);
     return true;
@@ -2965,17 +2960,16 @@ DoUnaryArithFallback(JSContext *cx, Base
         break;
       }
       case JSOP_NEG:
         if (!NegOperation(cx, script, pc, val, res))
             return false;
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected op");
-        return false;
     }
 
     if (res.isDouble())
         stub->setSawDoubleResult();
 
     if (stub->numOptimizedStubs() >= ICUnaryArith_Fallback::MAX_OPTIMIZED_STUBS) {
         // TODO: Discard/replace stubs.
         return true;
--- a/js/src/ion/BaselineIC.h
+++ b/js/src/ion/BaselineIC.h
@@ -540,17 +540,16 @@ class ICStub
 
     static const char *KindString(Kind k) {
         switch(k) {
 #define DEF_KIND_STR(kindName) case kindName: return #kindName;
             IC_STUB_KIND_LIST(DEF_KIND_STR)
 #undef DEF_KIND_STR
           default:
             MOZ_ASSUME_NOT_REACHED("Invalid kind.");
-            return "INVALID_KIND";
         }
     }
 
     enum Trait {
         Regular             = 0x0,
         Fallback            = 0x1,
         Monitored           = 0x2,
         MonitoredFallback   = 0x3,
--- a/js/src/ion/BaselineJIT.cpp
+++ b/js/src/ion/BaselineJIT.cpp
@@ -486,17 +486,16 @@ BaselineScript::icEntryFromPCOffset(uint
         if (icEntry(i).isForOp())
             return icEntry(i);
     }
     for (size_t i = mid+1; i < numICEntries() && icEntry(i).pcOffset() == pcOffset; i++) {
         if (icEntry(i).isForOp())
             return icEntry(i);
     }
     MOZ_ASSUME_NOT_REACHED("Invalid PC offset for IC entry.");
-    return icEntry(mid);
 }
 
 ICEntry &
 BaselineScript::icEntryFromPCOffset(uint32_t pcOffset, ICEntry *prevLookedUpEntry)
 {
     // Do a linear forward search from the last queried PC offset, or fallback to a
     // binary search if the last offset is too far away.
     if (prevLookedUpEntry && pcOffset >= prevLookedUpEntry->pcOffset() &&
@@ -632,17 +631,16 @@ BaselineScript::nativeCodeForPC(JSScript
                 *slotInfo = PCMappingSlotInfo(b & ~0x80);
             return method_->raw() + nativeOffset;
         }
 
         curPC += GetBytecodeLength(curPC);
     }
 
     MOZ_ASSUME_NOT_REACHED("Invalid pc");
-    return NULL;
 }
 
 jsbytecode *
 BaselineScript::pcForReturnOffset(JSScript *script, uint32_t nativeOffset)
 {
     JS_ASSERT(script->baselineScript() == this);
     JS_ASSERT(nativeOffset < method_->instructionsSize());
 
@@ -677,17 +675,16 @@ BaselineScript::pcForReturnOffset(JSScri
 
         if (curNativeOffset == nativeOffset)
             return curPC;
 
         curPC += GetBytecodeLength(curPC);
     }
 
     MOZ_ASSUME_NOT_REACHED("Invalid pc");
-    return NULL;
 }
 
 jsbytecode *
 BaselineScript::pcForReturnAddress(JSScript *script, uint8_t *nativeAddress)
 {
     JS_ASSERT(script->baselineScript() == this);
     JS_ASSERT(nativeAddress >= method_->raw());
     JS_ASSERT(nativeAddress < method_->raw() + method_->instructionsSize());
--- a/js/src/ion/CodeGenerator.cpp
+++ b/js/src/ion/CodeGenerator.cpp
@@ -3584,17 +3584,16 @@ CodeGenerator::visitBinaryV(LBinaryV *li
       case JSOP_MOD:
         return callVM(ModInfo, lir);
 
       case JSOP_URSH:
         return callVM(UrshInfo, lir);
 
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected binary op");
-        return false;
     }
 }
 
 typedef bool (*StringCompareFn)(JSContext *, HandleString, HandleString, JSBool *);
 static const VMFunction stringsEqualInfo =
     FunctionInfo<StringCompareFn>(ion::StringsEqual<true>);
 static const VMFunction stringsNotEqualInfo =
     FunctionInfo<StringCompareFn>(ion::StringsEqual<false>);
@@ -3732,17 +3731,16 @@ CodeGenerator::visitCompareVM(LCompareVM
           case JSOP_GT:
             return callVM(GtInfo, lir);
 
           case JSOP_GE:
             return callVM(GeInfo, lir);
 
           default:
             MOZ_ASSUME_NOT_REACHED("Unexpected compare op");
-            return false;
         }
 
       case ParallelExecution:
         switch (lir->mir()->jsop()) {
           case JSOP_EQ:
             return callVM(ParLooselyEqInfo, lir);
 
           case JSOP_STRICTEQ:
@@ -3763,17 +3761,16 @@ CodeGenerator::visitCompareVM(LCompareVM
           case JSOP_GT:
             return callVM(ParGtInfo, lir);
 
           case JSOP_GE:
             return callVM(ParGeInfo, lir);
 
           default:
             MOZ_ASSUME_NOT_REACHED("Unexpected compare op");
-            return false;
         }
     }
 
     MOZ_ASSUME_NOT_REACHED("Unexpected exec mode");
 }
 
 bool
 CodeGenerator::visitIsNullOrLikeUndefined(LIsNullOrLikeUndefined *lir)
@@ -6068,17 +6065,16 @@ CodeGenerator::visitBitOpV(LBitOpV *lir)
       case JSOP_LSH:
         return callVM(BitLhsInfo, lir);
       case JSOP_RSH:
         return callVM(BitRhsInfo, lir);
       default:
         break;
     }
     MOZ_ASSUME_NOT_REACHED("unexpected bitop");
-    return false;
 }
 
 class OutOfLineTypeOfV : public OutOfLineCodeBase<CodeGenerator>
 {
     LTypeOfV *ins_;
 
   public:
     OutOfLineTypeOfV(LTypeOfV *ins)
--- a/js/src/ion/CompactBuffer.h
+++ b/js/src/ion/CompactBuffer.h
@@ -38,17 +38,16 @@ class CompactBufferReader
             JS_ASSERT(shift < 32);
             byte = readByte();
             val |= (uint32_t(byte) >> 1) << shift;
             shift += 7;
             if (!(byte & 1))
                 return val;
         }
         MOZ_ASSUME_NOT_REACHED("unreachable");
-        return 0;
     }
 
   public:
     CompactBufferReader(const uint8_t *start, const uint8_t *end)
       : buffer_(start),
         end_(end)
     { }
     inline CompactBufferReader(const CompactBufferWriter &writer);
--- a/js/src/ion/ExecutionModeInlines.h
+++ b/js/src/ion/ExecutionModeInlines.h
@@ -15,28 +15,26 @@ namespace ion {
 static inline bool
 HasIonScript(JSScript *script, ExecutionMode cmode)
 {
     switch (cmode) {
       case SequentialExecution: return script->hasIonScript();
       case ParallelExecution: return script->hasParallelIonScript();
     }
     MOZ_ASSUME_NOT_REACHED("No such execution mode");
-    return false;
 }
 
 static inline IonScript *
 GetIonScript(JSScript *script, ExecutionMode cmode)
 {
     switch (cmode) {
       case SequentialExecution: return script->maybeIonScript();
       case ParallelExecution: return script->maybeParallelIonScript();
     }
     MOZ_ASSUME_NOT_REACHED("No such execution mode");
-    return NULL;
 }
 
 static inline void
 SetIonScript(JSScript *script, ExecutionMode cmode, IonScript *ionScript)
 {
     switch (cmode) {
       case SequentialExecution: script->setIonScript(ionScript); return;
       case ParallelExecution: script->setParallelIonScript(ionScript); return;
@@ -74,39 +72,36 @@ CanIonCompile(JSFunction *fun, Execution
 static inline bool
 CompilingOffThread(JSScript *script, ExecutionMode cmode)
 {
     switch (cmode) {
       case SequentialExecution: return script->isIonCompilingOffThread();
       case ParallelExecution: return script->isParallelIonCompilingOffThread();
     }
     MOZ_ASSUME_NOT_REACHED("No such execution mode");
-    return false;
 }
 
 static inline bool
 CompilingOffThread(HandleScript script, ExecutionMode cmode)
 {
     switch (cmode) {
       case SequentialExecution: return script->isIonCompilingOffThread();
       case ParallelExecution: return script->isParallelIonCompilingOffThread();
     }
     MOZ_ASSUME_NOT_REACHED("No such execution mode");
-    return false;
 }
 
 static inline types::CompilerOutput::Kind
 CompilerOutputKind(ExecutionMode cmode)
 {
     switch (cmode) {
       case SequentialExecution: return types::CompilerOutput::Ion;
       case ParallelExecution: return types::CompilerOutput::ParallelIon;
     }
     MOZ_ASSUME_NOT_REACHED("No such execution mode");
-    return types::CompilerOutput::Ion;
 }
 
 } // namespace ion
 } // namespace js
 
 #endif  // JS_ION
 
 #endif /* ion_ExecutionModeInlines_h */
--- a/js/src/ion/FixedArityList.h
+++ b/js/src/ion/FixedArityList.h
@@ -31,22 +31,18 @@ class FixedArityList
 };
 
 template <typename T>
 class FixedArityList<T, 0>
 {
   public:
     T &operator [](size_t index) {
         MOZ_ASSUME_NOT_REACHED("no items");
-        static T *operand = NULL;
-        return *operand;
     }
     const T &operator [](size_t index) const {
         MOZ_ASSUME_NOT_REACHED("no items");
-        static T *operand = NULL;
-        return *operand;
     }
 };
 
 } // namespace ion
 } // namespace js
 
 #endif /* ion_FixedArityList_h */
--- a/js/src/ion/Ion.cpp
+++ b/js/src/ion/Ion.cpp
@@ -815,32 +815,30 @@ IonScript::getSafepointIndex(uint32_t di
             guessDisp = table[guess].displacement();
             JS_ASSERT(guessDisp <= disp);
             if (guessDisp == disp)
                 return &table[guess];
         }
     }
 
     MOZ_ASSUME_NOT_REACHED("displacement not found.");
-    return NULL;
 }
 
 const OsiIndex *
 IonScript::getOsiIndex(uint32_t disp) const
 {
     for (const OsiIndex *it = osiIndices(), *end = osiIndices() + osiIndexEntries_;
          it != end;
          ++it)
     {
         if (it->returnPointDisplacement() == disp)
             return it;
     }
 
     MOZ_ASSUME_NOT_REACHED("Failed to find OSI point return address");
-    return NULL;
 }
 
 const OsiIndex *
 IonScript::getOsiIndex(uint8_t *retAddr) const
 {
     IonSpew(IonSpew_Invalidate, "IonScript %p has method %p raw %p", (void *) this, (void *)
             method(), method()->raw());
 
@@ -2001,17 +1999,16 @@ InvalidateActivation(FreeOp *fop, uint8_
             IonSpew(IonSpew_Invalidate, "#%d baseline stub frame @ %p", frameno, it.fp());
             break;
           case IonFrame_Rectifier:
             IonSpew(IonSpew_Invalidate, "#%d rectifier frame @ %p", frameno, it.fp());
             break;
           case IonFrame_Unwound_OptimizedJS:
           case IonFrame_Unwound_BaselineStub:
             MOZ_ASSUME_NOT_REACHED("invalid");
-            break;
           case IonFrame_Unwound_Rectifier:
             IonSpew(IonSpew_Invalidate, "#%d unwound rectifier frame @ %p", frameno, it.fp());
             break;
           case IonFrame_Osr:
             IonSpew(IonSpew_Invalidate, "#%d osr frame @ %p", frameno, it.fp());
             break;
           case IonFrame_Entry:
             IonSpew(IonSpew_Invalidate, "#%d entry frame @ %p", frameno, it.fp());
--- a/js/src/ion/IonAnalysis.cpp
+++ b/js/src/ion/IonAnalysis.cpp
@@ -566,17 +566,16 @@ TypeAnalyzer::replaceRedundantPhi(MPhi *
       case MIRType_Null:
         v = NullValue();
         break;
       case MIRType_Magic:
         v = MagicValue(JS_OPTIMIZED_ARGUMENTS);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected type");
-        return;
     }
     MConstant *c = MConstant::New(v);
     // The instruction pass will insert the box
     block->insertBefore(*(block->begin()), c);
     phi->replaceAllUsesWith(c);
 }
 
 bool
--- a/js/src/ion/IonBuilder.cpp
+++ b/js/src/ion/IonBuilder.cpp
@@ -1100,29 +1100,27 @@ IonBuilder::snoopControlFlow(JSOp op)
           case SRC_WHILE:
           case SRC_FOR_IN:
             // while (cond) { }
             return whileOrForInLoop(sn);
 
           default:
             // Hard assert for now - make an error later.
             MOZ_ASSUME_NOT_REACHED("unknown goto case");
-            break;
         }
         break;
       }
 
       case JSOP_TABLESWITCH:
         return tableSwitch(op, info().getNote(cx, pc));
 
       case JSOP_IFNE:
         // We should never reach an IFNE, it's a stopAt point, which will
         // trigger closing the loop.
         MOZ_ASSUME_NOT_REACHED("we should never reach an ifne!");
-        return ControlStatus_Error;
 
       default:
         break;
     }
     return ControlStatus_None;
 }
 
 bool
@@ -1401,17 +1399,16 @@ IonBuilder::inspectOpcode(JSOp op)
         return pushConstant(Int32Value(GET_UINT24(pc)));
 
       case JSOP_INT32:
         return pushConstant(Int32Value(GET_INT32(pc)));
 
       case JSOP_LOOPHEAD:
         // JSOP_LOOPHEAD is handled when processing the loop header.
         MOZ_ASSUME_NOT_REACHED("JSOP_LOOPHEAD outside loop");
-        return true;
 
       case JSOP_GETELEM:
       case JSOP_CALLELEM:
         return jsop_getelem();
 
       case JSOP_SETELEM:
         return jsop_setelem();
 
@@ -1603,17 +1600,16 @@ IonBuilder::processCfgEntry(CFGState &st
         return processAndOrEnd(state);
 
       case CFGState::LABEL:
         return processLabelEnd(state);
 
       default:
         MOZ_ASSUME_NOT_REACHED("unknown cfgstate");
     }
-    return ControlStatus_Error;
 }
 
 IonBuilder::ControlStatus
 IonBuilder::processIfEnd(CFGState &state)
 {
     if (current) {
         // Here, the false block is the join point. Create an edge from the
         // current block to the false block. Note that a RETURN opcode
@@ -2251,17 +2247,16 @@ IonBuilder::processSwitchBreak(JSOp op)
       case CFGState::TABLE_SWITCH:
         breaks = &state.tableswitch.breaks;
         break;
       case CFGState::COND_SWITCH_BODY:
         breaks = &state.condswitch.breaks;
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected switch state.");
-        return ControlStatus_Error;
     }
 
     *breaks = new DeferredEdge(current, *breaks);
 
     setCurrent(NULL);
     pc += js_CodeSpec[op].length;
     return processControlEnd();
 }
@@ -2328,17 +2323,16 @@ IonBuilder::maybeLoop(JSOp op, jssrcnote
             // for (; ; update?)
             if (SN_TYPE(sn) == SRC_FOR)
                 return forLoop(op, sn);
         }
         break;
 
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected opcode");
-        return ControlStatus_Error;
     }
 
     return ControlStatus_None;
 }
 
 void
 IonBuilder::assertValidLoopHeadOp(jsbytecode *pc)
 {
@@ -2359,17 +2353,16 @@ IonBuilder::assertValidLoopHeadOp(jsbyte
         jsbytecode *expected_ifne;
         switch (state.state) {
           case CFGState::DO_WHILE_LOOP_BODY:
             expected_ifne = state.loop.updateEnd;
             break;
 
           default:
             MOZ_ASSUME_NOT_REACHED("JSOP_LOOPHEAD unexpected source note");
-            return;
         }
 
         // Make sure this loop goes to the same ifne as the loop header's
         // source notes or GOTO.
         JS_ASSERT(ifne == expected_ifne);
     } else {
         JS_ASSERT(state.state != CFGState::DO_WHILE_LOOP_BODY);
     }
@@ -3142,17 +3135,16 @@ IonBuilder::jsop_ifeq(JSOp op)
 
         if (!cfgStack_.append(CFGState::IfElse(trueEnd, falseEnd, ifFalse)))
             return false;
         break;
       }
 
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected source note type");
-        break;
     }
 
     // Switch to parsing the true branch. Note that no PC update is needed,
     // it's the next instruction.
     setCurrentAndSpecializePhis(ifTrue);
 
     return true;
 }
@@ -3172,17 +3164,16 @@ IonBuilder::processReturn(JSOp op)
         current->add(ins);
         def = ins;
         break;
       }
 
       default:
         def = NULL;
         MOZ_ASSUME_NOT_REACHED("unknown return op");
-        break;
     }
 
     if (instrumentedProfiling())
         current->add(MFunctionBoundary::New(script(), MFunctionBoundary::Exit));
     MReturn *ret = MReturn::New(def);
     current->end(ret);
 
     if (!graph().addExit(current))
@@ -3262,17 +3253,16 @@ IonBuilder::jsop_bitop(JSOp op)
         break;
 
       case JSOP_URSH:
         ins = MUrsh::New(left, right);
         break;
 
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected bitop");
-        return false;
     }
 
     current->add(ins);
     ins->infer(inspector, pc);
 
     current->push(ins);
     if (ins->isEffectful() && !resumeAfter(ins))
         return false;
@@ -3320,17 +3310,16 @@ IonBuilder::jsop_binary(JSOp op, MDefini
         break;
 
       case JSOP_MOD:
         ins = MMod::New(left, right);
         break;
 
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected binary opcode");
-        return false;
     }
 
     bool overflowed = types::HasOperationOverflowed(script(), pc);
 
     current->add(ins);
     ins->infer(inspector, pc, overflowed);
     current->push(ins);
 
@@ -6083,17 +6072,16 @@ ion::TypeSetIncludes(types::TypeSet *typ
       case MIRType_Object:
         return types->unknownObject() || (inputTypes && inputTypes->isSubset(types));
 
       case MIRType_Value:
         return types->unknown() || (inputTypes && inputTypes->isSubset(types));
 
       default:
         MOZ_ASSUME_NOT_REACHED("Bad input type");
-        return false;
     }
 }
 
 // Whether a write of the given value may need a post-write barrier for GC purposes.
 bool
 ion::NeedsPostBarrier(CompileInfo &info, MDefinition *value)
 {
     return info.executionMode() != ParallelExecution && value->mightBeType(MIRType_Object);
@@ -6592,17 +6580,16 @@ IonBuilder::jsop_getelem_typed(int array
             knownType = allowDouble ? MIRType_Double : MIRType_Int32;
             break;
           case TypedArray::TYPE_FLOAT32:
           case TypedArray::TYPE_FLOAT64:
             knownType = MIRType_Double;
             break;
           default:
             MOZ_ASSUME_NOT_REACHED("Unknown typed array type");
-            return false;
         }
 
         // Get the length.
         MInstruction *length = getTypedArrayLength(obj);
         current->add(length);
 
         // Bounds check.
         id = addBoundsCheck(id, length);
@@ -6639,17 +6626,16 @@ IonBuilder::jsop_getelem_typed(int array
             break;
           case TypedArray::TYPE_FLOAT32:
           case TypedArray::TYPE_FLOAT64:
             if (allowDouble)
                 needsBarrier = false;
             break;
           default:
             MOZ_ASSUME_NOT_REACHED("Unknown typed array type");
-            return false;
         }
 
         // Assume we will read out-of-bound values. In this case the
         // bounds check will be part of the instruction, and the instruction
         // will always return a Value.
         MLoadTypedArrayElementHole *load =
             MLoadTypedArrayElementHole::New(obj, id, arrayType, allowDouble);
         current->add(load);
--- a/js/src/ion/IonCaches.cpp
+++ b/js/src/ion/IonCaches.cpp
@@ -2829,18 +2829,17 @@ IsCacheableScopeChain(JSObject *scopeCha
 
         scopeChain = &scopeChain->as<ScopeObject>().enclosingScope();
         if (!scopeChain) {
             IonSpew(IonSpew_InlineCaches, "Scope chain indirect hit");
             return false;
         }
     }
 
-    MOZ_ASSUME_NOT_REACHED("Shouldn't get here");
-    return false;
+    MOZ_ASSUME_NOT_REACHED();
 }
 
 JSObject *
 BindNameIC::update(JSContext *cx, size_t cacheIndex, HandleObject scopeChain)
 {
     AutoFlushCache afc ("BindNameCache");
 
     IonScript *ion = GetTopIonJSScript(cx)->ionScript();
--- a/js/src/ion/IonCaches.h
+++ b/js/src/ion/IonCaches.h
@@ -33,18 +33,17 @@ namespace ion {
 IONCACHE_KIND_LIST(FORWARD_DECLARE)
 #undef FORWARD_DECLARE
 
 class IonCacheVisitor
 {
   public:
 #define VISIT_INS(op)                                               \
     virtual bool visit##op##IC(CodeGenerator *codegen, op##IC *) {  \
-        MOZ_ASSUME_NOT_REACHED("NYI: " #op "IC");                           \
-        return false;                                               \
+        MOZ_ASSUME_NOT_REACHED("NYI: " #op "IC");                   \
     }
 
     IONCACHE_KIND_LIST(VISIT_INS)
 #undef VISIT_INS
 };
 
 // Common shared temporary state needed during codegen between the different
 // kinds of caches. Used by OutOfLineUpdateCache.
--- a/js/src/ion/IonFrames-inl.h
+++ b/js/src/ion/IonFrames-inl.h
@@ -44,17 +44,16 @@ SizeOfFramePrefix(FrameType type)
         return IonUnwoundRectifierFrameLayout::Size();
       case IonFrame_Exit:
         return IonExitFrameLayout::Size();
       case IonFrame_Osr:
         return IonOsrFrameLayout::Size();
       default:
         MOZ_ASSUME_NOT_REACHED("unknown frame type");
     }
-    return 0;
 }
 
 inline IonCommonFrameLayout *
 IonFrameIterator::current() const
 {
     return (IonCommonFrameLayout *)current_;
 }
 
--- a/js/src/ion/IonFrames.cpp
+++ b/js/src/ion/IonFrames.cpp
@@ -773,17 +773,16 @@ JitActivationIterator::jitStackRange(uin
     } else {
         IonExitFrameLayout *exitFrame = frames.exitFrame();
         IonExitFooterFrame *footer = exitFrame->footer();
         const VMFunction *f = footer->function();
         if (exitFrame->isWrapperExit() && f->outParam == Type_Handle) {
             switch (f->outParamRootType) {
               case VMFunction::RootNone:
                 MOZ_ASSUME_NOT_REACHED("Handle outparam must have root type");
-                break;
               case VMFunction::RootObject:
               case VMFunction::RootString:
               case VMFunction::RootPropertyName:
               case VMFunction::RootFunction:
               case VMFunction::RootCell:
                 // These are all handles to GCThing pointers.
                 min = reinterpret_cast<uintptr_t *>(footer->outParam<void *>());
                 break;
@@ -916,17 +915,16 @@ MarkIonExitFrame(JSTracer *trc, const Io
             break;
         }
     }
 
     if (f->outParam == Type_Handle) {
         switch (f->outParamRootType) {
           case VMFunction::RootNone:
             MOZ_ASSUME_NOT_REACHED("Handle outparam must have root type");
-            break;
           case VMFunction::RootObject:
             gc::MarkObjectRoot(trc, footer->outParam<JSObject *>(), "ion-vm-out");
             break;
           case VMFunction::RootString:
           case VMFunction::RootPropertyName:
             gc::MarkStringRoot(trc, footer->outParam<JSString *>(), "ion-vm-out");
             break;
           case VMFunction::RootFunction:
@@ -956,28 +954,26 @@ MarkJitActivation(JSTracer *trc, const J
           case IonFrame_BaselineStub:
             MarkBaselineStubFrame(trc, frames);
             break;
           case IonFrame_OptimizedJS:
             MarkIonJSFrame(trc, frames);
             break;
           case IonFrame_Unwound_OptimizedJS:
             MOZ_ASSUME_NOT_REACHED("invalid");
-            break;
           case IonFrame_Rectifier:
           case IonFrame_Unwound_Rectifier:
             break;
           case IonFrame_Osr:
             // The callee token will be marked by the callee JS frame;
             // otherwise, it does not need to be marked, since the frame is
             // dead.
             break;
           default:
             MOZ_ASSUME_NOT_REACHED("unexpected frame type");
-            break;
         }
     }
 }
 
 void
 MarkJitActivations(JSRuntime *rt, JSTracer *trc)
 {
     for (JitActivationIterator activations(rt); !activations.done(); ++activations)
@@ -1110,17 +1106,16 @@ SnapshotIterator::FromTypedPayload(JSVal
       case JSVAL_TYPE_BOOLEAN:
         return BooleanValue(!!payload);
       case JSVAL_TYPE_STRING:
         return StringValue(reinterpret_cast<JSString *>(payload));
       case JSVAL_TYPE_OBJECT:
         return ObjectValue(*reinterpret_cast<JSObject *>(payload));
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected type - needs payload");
-        return UndefinedValue();
     }
 }
 
 bool
 SnapshotIterator::slotReadable(const Slot &slot)
 {
     switch (slot.mode()) {
       case SnapshotReader::DOUBLE_REG:
@@ -1180,17 +1175,16 @@ SnapshotIterator::slotValue(const Slot &
       case SnapshotReader::JS_INT32:
         return Int32Value(slot.int32Value());
 
       case SnapshotReader::CONSTANT:
         return ionScript_->getConstant(slot.constantIndex());
 
       default:
         MOZ_ASSUME_NOT_REACHED("huh?");
-        return UndefinedValue();
     }
 }
 
 IonScript *
 IonFrameIterator::ionScript() const
 {
     JS_ASSERT(type() == IonFrame_OptimizedJS);
 
--- a/js/src/ion/IonFrames.h
+++ b/js/src/ion/IonFrames.h
@@ -86,17 +86,16 @@ ScriptFromCalleeToken(CalleeToken token)
       case CalleeToken_Script:
         return CalleeTokenToScript(token);
       case CalleeToken_Function:
         return CalleeTokenToFunction(token)->nonLazyScript();
       case CalleeToken_ParallelFunction:
         return CalleeTokenToParallelFunction(token)->nonLazyScript();
     }
     MOZ_ASSUME_NOT_REACHED("invalid callee token tag");
-    return NULL;
 }
 
 // In between every two frames lies a small header describing both frames. This
 // header, minimally, contains a returnAddress word and a descriptor word. The
 // descriptor describes the size and type of the previous frame, whereas the
 // returnAddress describes the address the newer frame (the callee) will return
 // to. The exact mechanism in which frames are laid out is architecture
 // dependent.
--- a/js/src/ion/IonMacroAssembler.cpp
+++ b/js/src/ion/IonMacroAssembler.cpp
@@ -303,17 +303,16 @@ MacroAssembler::loadFromTypedArray(int a
         if (arrayType == js::TypedArray::TYPE_FLOAT32)
             loadFloatAsDouble(src, dest.fpu());
         else
             loadDouble(src, dest.fpu());
         canonicalizeDouble(dest.fpu());
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Invalid typed array type");
-        break;
     }
 }
 
 template void MacroAssembler::loadFromTypedArray(int arrayType, const Address &src, AnyRegister dest,
                                                  Register temp, Label *fail);
 template void MacroAssembler::loadFromTypedArray(int arrayType, const BaseIndex &src, AnyRegister dest,
                                                  Register temp, Label *fail);
 
@@ -359,17 +358,16 @@ MacroAssembler::loadFromTypedArray(int a
         break;
       case TypedArray::TYPE_FLOAT32:
       case TypedArray::TYPE_FLOAT64:
         loadFromTypedArray(arrayType, src, AnyRegister(ScratchFloatReg), dest.scratchReg(), NULL);
         boxDouble(ScratchFloatReg, dest);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Invalid typed array type");
-        break;
     }
 }
 
 template void MacroAssembler::loadFromTypedArray(int arrayType, const Address &src, const ValueOperand &dest,
                                                  bool allowDouble, Register temp, Label *fail);
 template void MacroAssembler::loadFromTypedArray(int arrayType, const BaseIndex &src, const ValueOperand &dest,
                                                  bool allowDouble, Register temp, Label *fail);
 
@@ -1253,17 +1251,16 @@ MacroAssembler::convertValueToInt32(Valu
 }
 
 void
 MacroAssembler::PushEmptyRooted(VMFunction::RootType rootType)
 {
     switch (rootType) {
       case VMFunction::RootNone:
         MOZ_ASSUME_NOT_REACHED("Handle must have root type");
-        break;
       case VMFunction::RootObject:
       case VMFunction::RootString:
       case VMFunction::RootPropertyName:
       case VMFunction::RootFunction:
       case VMFunction::RootCell:
         Push(ImmWord((void *)NULL));
         break;
       case VMFunction::RootValue:
@@ -1274,17 +1271,16 @@ MacroAssembler::PushEmptyRooted(VMFuncti
 
 void
 MacroAssembler::popRooted(VMFunction::RootType rootType, Register cellReg,
                           const ValueOperand &valueReg)
 {
     switch (rootType) {
       case VMFunction::RootNone:
         MOZ_ASSUME_NOT_REACHED("Handle must have root type");
-        break;
       case VMFunction::RootObject:
       case VMFunction::RootString:
       case VMFunction::RootPropertyName:
       case VMFunction::RootFunction:
       case VMFunction::RootCell:
         Pop(cellReg);
         break;
       case VMFunction::RootValue:
--- a/js/src/ion/IonMacroAssembler.h
+++ b/js/src/ion/IonMacroAssembler.h
@@ -542,33 +542,31 @@ class MacroAssembler : public MacroAssem
             store16(value, dest);
             break;
           case TypedArray::TYPE_INT32:
           case TypedArray::TYPE_UINT32:
             store32(value, dest);
             break;
           default:
             MOZ_ASSUME_NOT_REACHED("Invalid typed array type");
-            break;
         }
     }
 
     template<typename S, typename T>
     void storeToTypedFloatArray(int arrayType, const S &value, const T &dest) {
         switch (arrayType) {
           case TypedArray::TYPE_FLOAT32:
             convertDoubleToFloat(value, ScratchFloatReg);
             storeFloat(ScratchFloatReg, dest);
             break;
           case TypedArray::TYPE_FLOAT64:
             storeDouble(value, dest);
             break;
           default:
             MOZ_ASSUME_NOT_REACHED("Invalid typed array type");
-            break;
         }
     }
 
     Register extractString(const Address &address, Register scratch) {
         return extractObject(address, scratch);
     }
     Register extractString(const ValueOperand &value, Register scratch) {
         return extractObject(value, scratch);
@@ -942,17 +940,16 @@ JSOpToDoubleCondition(JSOp op)
       case JSOP_LE:
         return Assembler::DoubleLessThanOrEqual;
       case JSOP_GT:
         return Assembler::DoubleGreaterThan;
       case JSOP_GE:
         return Assembler::DoubleGreaterThanOrEqual;
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected comparison operation");
-        return Assembler::DoubleEqual;
     }
 }
 
 // Note: the op may have been inverted during lowering (to put constants in a
 // position where they can be immediates), so it is important to use the
 // lir->jsop() instead of the mir->jsop() when it is present.
 static inline Assembler::Condition
 JSOpToCondition(JSOp op, bool isSigned)
@@ -970,17 +967,16 @@ JSOpToCondition(JSOp op, bool isSigned)
           case JSOP_LE:
             return Assembler::LessThanOrEqual;
           case JSOP_GT:
             return Assembler::GreaterThan;
           case JSOP_GE:
             return Assembler::GreaterThanOrEqual;
           default:
             MOZ_ASSUME_NOT_REACHED("Unrecognized comparison operation");
-            return Assembler::Equal;
         }
     } else {
         switch (op) {
           case JSOP_EQ:
           case JSOP_STRICTEQ:
             return Assembler::Equal;
           case JSOP_NE:
           case JSOP_STRICTNE:
@@ -990,17 +986,16 @@ JSOpToCondition(JSOp op, bool isSigned)
           case JSOP_LE:
             return Assembler::BelowOrEqual;
           case JSOP_GT:
             return Assembler::Above;
           case JSOP_GE:
             return Assembler::AboveOrEqual;
           default:
             MOZ_ASSUME_NOT_REACHED("Unrecognized comparison operation");
-            return Assembler::Equal;
         }
     }
 }
 
 typedef Vector<MIRType, 8> MIRTypeVector;
 
 class ABIArgIter
 {
--- a/js/src/ion/IonTypes.h
+++ b/js/src/ion/IonTypes.h
@@ -64,17 +64,16 @@ BailoutKindString(BailoutKind kind)
         return "Bailout_BoundsCheck";
       case Bailout_ShapeGuard:
         return "Bailout_ShapeGuard";
       case Bailout_CachedShapeGuard:
         return "Bailout_CachedShapeGuard";
       default:
         MOZ_ASSUME_NOT_REACHED("Invalid BailoutKind");
     }
-    return "INVALID_BAILOUT_KIND";
 }
 #endif
 
 // The ordering of this enumeration is important: Anything < Value is a
 // specialized type. Furthermore, anything < String has trivial conversion to
 // a number.
 enum MIRType
 {
@@ -114,17 +113,16 @@ MIRTypeFromValueType(JSValueType type)
       case JSVAL_TYPE_OBJECT:
         return MIRType_Object;
       case JSVAL_TYPE_MAGIC:
         return MIRType_Magic;
       case JSVAL_TYPE_UNKNOWN:
         return MIRType_Value;
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected jsval type");
-        return MIRType_None;
     }
 }
 
 static inline JSValueType
 ValueTypeFromMIRType(MIRType type)
 {
   switch (type) {
     case MIRType_Undefined:
@@ -182,17 +180,16 @@ StringFromMIRType(MIRType type)
     case MIRType_Elements:
       return "Elements";
     case MIRType_Pointer:
       return "Pointer";
     case MIRType_ForkJoinSlice:
       return "ForkJoinSlice";
     default:
       MOZ_ASSUME_NOT_REACHED("Unknown MIRType.");
-      return "";
   }
 }
 
 static inline bool
 IsNumberType(MIRType type)
 {
     return type == MIRType_Int32 || type == MIRType_Double;
 }
--- a/js/src/ion/LIR-Common.h
+++ b/js/src/ion/LIR-Common.h
@@ -4476,27 +4476,25 @@ class LPhi : public LInstruction
         JS_ASSERT(index < numOperands());
         inputs_[index] = a;
     }
     size_t numTemps() const {
         return 0;
     }
     LDefinition *getTemp(size_t index) {
         MOZ_ASSUME_NOT_REACHED("no temps");
-        return NULL;
     }
     void setTemp(size_t index, const LDefinition &temp) {
         MOZ_ASSUME_NOT_REACHED("no temps");
     }
     size_t numSuccessors() const {
         return 0;
     }
     MBasicBlock *getSuccessor(size_t i) const {
         MOZ_ASSUME_NOT_REACHED("no successors");
-        return NULL;
     }
     void setSuccessor(size_t i, MBasicBlock *) {
         MOZ_ASSUME_NOT_REACHED("no successors");
     }
 
     virtual void printInfo(FILE *fp) {
         printOperands(fp);
     }
@@ -4798,17 +4796,16 @@ class LAsmJSCall : public LInstruction
     void setTemp(size_t index, const LDefinition &a) {
         MOZ_ASSUME_NOT_REACHED("no temps");
     }
     size_t numSuccessors() const {
         return 0;
     }
     MBasicBlock *getSuccessor(size_t i) const {
         MOZ_ASSUME_NOT_REACHED("no successors");
-        return NULL;
     }
     void setSuccessor(size_t i, MBasicBlock *) {
         MOZ_ASSUME_NOT_REACHED("no successors");
     }
 };
 
 class LAsmJSCheckOverRecursed : public LInstructionHelper<0, 0, 0>
 {
--- a/js/src/ion/LIR.cpp
+++ b/js/src/ion/LIR.cpp
@@ -266,17 +266,16 @@ LAllocation::toString() const
       case LAllocation::DOUBLE_ARGUMENT:
         JS_snprintf(buf, sizeof(buf), "arg:%d", toArgument()->index());
         return buf;
       case LAllocation::USE:
         PrintUse(buf, sizeof(buf), toUse());
         return buf;
       default:
         MOZ_ASSUME_NOT_REACHED("what?");
-        return "???";
     }
 }
 #endif // DEBUG
 
 void
 LInstruction::printOperands(FILE *fp)
 {
     for (size_t i = 0; i < numOperands(); i++) {
--- a/js/src/ion/LIR.h
+++ b/js/src/ion/LIR.h
@@ -546,17 +546,16 @@ class LDefinition
             // need to change to ::OBJECT.
             return LDefinition::GENERAL;
           case MIRType_Pointer:
             return LDefinition::GENERAL;
           case MIRType_ForkJoinSlice:
             return LDefinition::GENERAL;
           default:
             MOZ_ASSUME_NOT_REACHED("unexpected type");
-            return LDefinition::GENERAL;
         }
     }
 };
 
 // Forward declarations of LIR types.
 #define LIROP(op) class L##op;
     LIR_OPCODE_LIST(LIROP)
 #undef LIROP
@@ -712,17 +711,17 @@ class LInstructionVisitor
     }
 
     LInstructionVisitor()
       : ins_(NULL),
         lastPC_(NULL)
     {}
 
   public:
-#define VISIT_INS(op) virtual bool visit##op(L##op *) { MOZ_ASSUME_NOT_REACHED("NYI: " #op); return false; }
+#define VISIT_INS(op) virtual bool visit##op(L##op *) { MOZ_ASSUME_NOT_REACHED("NYI: " #op); }
     LIR_OPCODE_LIST(VISIT_INS)
 #undef VISIT_INS
 };
 
 typedef InlineList<LInstruction>::iterator LInstructionIterator;
 typedef InlineList<LInstruction>::reverse_iterator LInstructionReverseIterator;
 
 class LPhi;
--- a/js/src/ion/LiveRangeAllocator.cpp
+++ b/js/src/ion/LiveRangeAllocator.cpp
@@ -26,17 +26,16 @@ Requirement::priority() const
       case Requirement::REGISTER:
         return 1;
 
       case Requirement::NONE:
         return 2;
 
       default:
         MOZ_ASSUME_NOT_REACHED("Unknown requirement kind.");
-        return -1;
     }
 }
 
 bool
 LiveInterval::Range::contains(const Range *other) const
 {
     Range pre, inside, post;
     intersect(other, &pre, &inside, &post);
--- a/js/src/ion/LiveRangeAllocator.h
+++ b/js/src/ion/LiveRangeAllocator.h
@@ -114,17 +114,16 @@ UseCompatibleWith(const LUse *use, LAllo
         return alloc.isRegister();
       case LUse::FIXED:
           // Fixed uses are handled using fixed intervals. The
           // UsePosition is only used as hint.
         return alloc.isRegister();
       default:
         MOZ_ASSUME_NOT_REACHED("Unknown use policy");
     }
-    return false;
 }
 
 #ifdef DEBUG
 
 static inline bool
 DefinitionCompatibleWith(LInstruction *ins, const LDefinition *def, LAllocation alloc)
 {
     if (ins->isPhi()) {
@@ -144,17 +143,16 @@ DefinitionCompatibleWith(LInstruction *i
         if (!alloc.isRegister() || !ins->numOperands())
             return false;
         return alloc == *ins->getOperand(def->getReusedInput());
       case LDefinition::PASSTHROUGH:
         return true;
       default:
         MOZ_ASSUME_NOT_REACHED("Unknown definition policy");
     }
-    return false;
 }
 
 #endif // DEBUG
 
 static inline LDefinition *
 FindReusingDefinition(LInstruction *ins, LAllocation *alloc)
 {
     for (size_t i = 0; i < ins->numDefs(); i++) {
--- a/js/src/ion/Lowering.cpp
+++ b/js/src/ion/Lowering.cpp
@@ -839,17 +839,16 @@ LIRGenerator::visitCompare(MCompare *com
         if (!useBoxAtStart(lir, LCompareV::LhsInput, left))
             return false;
         if (!useBoxAtStart(lir, LCompareV::RhsInput, right))
             return false;
         return define(lir, comp);
     }
 
     MOZ_ASSUME_NOT_REACHED("Unrecognized compare type.");
-    return false;
 }
 
 static void
 ReorderCommutative(MDefinition **lhsp, MDefinition **rhsp)
 {
     MDefinition *lhs = *lhsp;
     MDefinition *rhs = *rhsp;
 
@@ -1448,17 +1447,16 @@ LIRGenerator::visitToDouble(MToDouble *c
 
       case MIRType_Double:
         return redefine(convert, opd);
 
       default:
         // Objects might be effectful.
         // Strings are complicated - we don't handle them yet.
         MOZ_ASSUME_NOT_REACHED("unexpected type");
-        return false;
     }
 }
 
 bool
 LIRGenerator::visitToInt32(MToInt32 *convert)
 {
     MDefinition *opd = convert->input();
 
@@ -1495,17 +1493,16 @@ LIRGenerator::visitToInt32(MToInt32 *con
         return false;
 
       case MIRType_Undefined:
         IonSpew(IonSpew_Abort, "Undefined coerces to NaN, not int32_t.");
         return false;
 
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected type");
-        return false;
     }
 }
 
 bool
 LIRGenerator::visitTruncateToInt32(MTruncateToInt32 *truncate)
 {
     MDefinition *opd = truncate->input();
 
@@ -1528,31 +1525,29 @@ LIRGenerator::visitTruncateToInt32(MTrun
 
       case MIRType_Double:
         return lowerTruncateDToInt32(truncate);
 
       default:
         // Objects might be effectful.
         // Strings are complicated - we don't handle them yet.
         MOZ_ASSUME_NOT_REACHED("unexpected type");
-        return false;
     }
 }
 
 bool
 LIRGenerator::visitToString(MToString *ins)
 {
     MDefinition *opd = ins->input();
 
     switch (opd->type()) {
       case MIRType_Null:
       case MIRType_Undefined:
       case MIRType_Boolean:
         MOZ_ASSUME_NOT_REACHED("NYI: Lower MToString");
-        return false;
 
       case MIRType_Double: {
         LDoubleToString *lir = new LDoubleToString(useRegister(opd), temp());
 
         if (!define(lir, ins))
             return false;
         return assignSafepoint(lir, ins);
       }
@@ -1563,17 +1558,16 @@ LIRGenerator::visitToString(MToString *i
         if (!define(lir, ins))
             return false;
         return assignSafepoint(lir, ins);
       }
 
       default:
         // Objects might be effectful. (see ToPrimitive)
         MOZ_ASSUME_NOT_REACHED("unexpected type");
-        return false;
     }
 }
 
 bool
 LIRGenerator::visitRegExp(MRegExp *ins)
 {
     LRegExp *lir = new LRegExp();
     return defineReturn(lir, ins) && assignSafepoint(lir, ins);
@@ -1657,17 +1651,16 @@ LIRGenerator::visitLoadSlot(MLoadSlot *i
 {
     switch (ins->type()) {
       case MIRType_Value:
         return defineBox(new LLoadSlotV(useRegister(ins->slots())), ins);
 
       case MIRType_Undefined:
       case MIRType_Null:
         MOZ_ASSUME_NOT_REACHED("typed load must have a payload");
-        return false;
 
       default:
         return define(new LLoadSlotT(useRegister(ins->slots())), ins);
     }
 }
 
 bool
 LIRGenerator::visitFunctionEnvironment(MFunctionEnvironment *ins)
@@ -1903,17 +1896,16 @@ LIRGenerator::visitNot(MNot *ins)
         LNotV *lir = new LNotV(tempFloat(), temp0, temp1);
         if (!useBox(lir, LNotV::Input, op))
             return false;
         return define(lir, ins);
       }
 
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected MIRType.");
-        return false;
     }
 }
 
 bool
 LIRGenerator::visitBoundsCheck(MBoundsCheck *ins)
 {
     LInstruction *check;
     if (ins->minimum() || ins->maximum()) {
@@ -1972,17 +1964,16 @@ LIRGenerator::visitLoadElement(MLoadElem
                                                useRegisterOrConstant(ins->index()));
         if (ins->fallible() && !assignSnapshot(lir))
             return false;
         return defineBox(lir, ins);
       }
       case MIRType_Undefined:
       case MIRType_Null:
         MOZ_ASSUME_NOT_REACHED("typed load must have a payload");
-        return false;
 
       default:
       {
         LLoadElementT *lir = new LLoadElementT(useRegister(ins->elements()),
                                                useRegisterOrConstant(ins->index()));
         if (ins->fallible() && !assignSnapshot(lir))
             return false;
         return define(lir, ins);
@@ -2079,17 +2070,16 @@ LIRGenerator::visitArrayPopShift(MArrayP
       case MIRType_Value:
       {
         LArrayPopShiftV *lir = new LArrayPopShiftV(object, temp(), temp());
         return defineBox(lir, ins) && assignSafepoint(lir, ins);
       }
       case MIRType_Undefined:
       case MIRType_Null:
         MOZ_ASSUME_NOT_REACHED("typed load must have a payload");
-        return false;
 
       default:
       {
         LArrayPopShiftT *lir = new LArrayPopShiftT(object, temp(), temp());
         return define(lir, ins) && assignSafepoint(lir, ins);
       }
     }
 }
@@ -2175,17 +2165,16 @@ LIRGenerator::visitClampToUint8(MClampTo
         LClampVToUint8 *lir = new LClampVToUint8(tempFloat());
         if (!useBox(lir, LClampVToUint8::Input, in))
             return false;
         return assignSnapshot(lir) && define(lir, ins);
       }
 
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected type");
-        return false;
     }
 }
 
 bool
 LIRGenerator::visitLoadTypedArrayElementHole(MLoadTypedArrayElementHole *ins)
 {
     JS_ASSERT(ins->object()->type() == MIRType_Object);
     JS_ASSERT(ins->index()->type() == MIRType_Int32);
--- a/js/src/ion/MIR.cpp
+++ b/js/src/ion/MIR.cpp
@@ -112,17 +112,16 @@ EvaluateConstantOperands(MBinaryInstruct
       case MDefinition::Op_Div:
         ret.setNumber(NumberDiv(lhs.toNumber(), rhs.toNumber()));
         break;
       case MDefinition::Op_Mod:
         ret.setNumber(NumberMod(lhs.toNumber(), rhs.toNumber()));
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("NYI");
-        return NULL;
     }
 
     if (ins->type() != MIRTypeFromValue(ret)) {
         if (ptypeChange)
             *ptypeChange = true;
         return NULL;
     }
 
@@ -433,17 +432,16 @@ MConstant::printOpcode(FILE *fp)
       case MIRType_String:
         fprintf(fp, "string %p", (void *)value().toString());
         break;
       case MIRType_Magic:
         fprintf(fp, "magic");
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected type");
-        break;
     }
 }
 
 void
 MControlInstruction::printOpcode(FILE *fp)
 {
     MDefinition::printOpcode(fp);
     for (size_t j = 0; j < numSuccessors(); j++)
@@ -1482,17 +1480,16 @@ MCompare::inputType()
         return MIRType_String;
       case Compare_Object:
         return MIRType_Object;
       case Compare_Unknown:
       case Compare_Value:
         return MIRType_Value;
       default:
         MOZ_ASSUME_NOT_REACHED("No known conversion");
-        return MIRType_None;
     }
 }
 
 static inline bool
 MustBeUInt32(MDefinition *def, MDefinition **pwrapped)
 {
     if (def->isUrsh()) {
         *pwrapped = def->toUrsh()->getOperand(0);
@@ -1933,17 +1930,16 @@ MCompare::tryFold(bool *result)
           case MIRType_Int32:
           case MIRType_Double:
           case MIRType_String:
           case MIRType_Boolean:
             *result = (op == JSOP_NE || op == JSOP_STRICTNE);
             return true;
           default:
             MOZ_ASSUME_NOT_REACHED("Unexpected type");
-            return false;
         }
     }
 
     if (compareType_ == Compare_Boolean) {
         JS_ASSERT(op == JSOP_STRICTEQ || op == JSOP_STRICTNE);
         JS_ASSERT(rhs()->type() == MIRType_Boolean);
 
         switch (lhs()->type()) {
@@ -1955,20 +1951,18 @@ MCompare::tryFold(bool *result)
           case MIRType_Object:
           case MIRType_Null:
           case MIRType_Undefined:
             *result = (op == JSOP_STRICTNE);
             return true;
           case MIRType_Boolean:
             // Int32 specialization should handle this.
             MOZ_ASSUME_NOT_REACHED("Wrong specialization");
-            return false;
           default:
             MOZ_ASSUME_NOT_REACHED("Unexpected type");
-            return false;
         }
     }
 
     if (compareType_ == Compare_StrictString) {
         JS_ASSERT(op == JSOP_STRICTEQ || op == JSOP_STRICTNE);
         JS_ASSERT(rhs()->type() == MIRType_String);
 
         switch (lhs()->type()) {
@@ -1980,20 +1974,18 @@ MCompare::tryFold(bool *result)
           case MIRType_Object:
           case MIRType_Null:
           case MIRType_Undefined:
             *result = (op == JSOP_STRICTNE);
             return true;
           case MIRType_String:
             // Compare_String specialization should handle this.
             MOZ_ASSUME_NOT_REACHED("Wrong specialization");
-            return false;
           default:
             MOZ_ASSUME_NOT_REACHED("Unexpected type");
-            return false;
         }
     }
 
     return false;
 }
 
 bool
 MCompare::evaluateConstantOperands(bool *result)
@@ -2036,17 +2028,16 @@ MCompare::evaluateConstantOperands(bool 
             *result = (comp == 0);
             break;
           case JSOP_STRICTNE: // Fall through.
           case JSOP_NE:
             *result = (comp != 0);
             break;
           default:
             MOZ_ASSUME_NOT_REACHED("Unexpected op.");
-            return false;
         }
 
         return true;
     }
 
     if (compareType_ == Compare_UInt32) {
         uint32_t lhsUint = uint32_t(lhs.toInt32());
         uint32_t rhsUint = uint32_t(rhs.toInt32());
@@ -2069,17 +2060,16 @@ MCompare::evaluateConstantOperands(bool 
             *result = (lhsUint == rhsUint);
             break;
           case JSOP_NE:
           case JSOP_STRICTNE:
             *result = (lhsUint != rhsUint);
             break;
           default:
             MOZ_ASSUME_NOT_REACHED("Unexpected op.");
-            return false;
         }
 
         return true;
     }
 
     if (!lhs.isNumber() || !rhs.isNumber())
         return false;
 
--- a/js/src/ion/MIR.h
+++ b/js/src/ion/MIR.h
@@ -3455,17 +3455,16 @@ class MDiv : public MBinaryArithInstruct
     }
 
     MDefinition *foldsTo(bool useValueNumbers);
     void analyzeEdgeCasesForward();
     void analyzeEdgeCasesBackward();
 
     double getIdentity() {
         MOZ_ASSUME_NOT_REACHED("not used");
-        return 1;
     }
 
     bool canBeNegativeZero() {
         return canBeNegativeZero_;
     }
     void setCanBeNegativeZero(bool negativeZero) {
         canBeNegativeZero_ = negativeZero;
     }
@@ -3503,17 +3502,16 @@ class MMod : public MBinaryArithInstruct
             mod->setTruncated(true);
         return mod;
     }
 
     MDefinition *foldsTo(bool useValueNumbers);
 
     double getIdentity() {
         MOZ_ASSUME_NOT_REACHED("not used");
-        return 1;
     }
 
     bool fallible();
 
     void computeRange();
     bool truncate();
 };
 
--- a/js/src/ion/MOpcodes.h
+++ b/js/src/ion/MOpcodes.h
@@ -208,17 +208,17 @@ class MInstructionVisitor // interface i
 #define VISIT_INS(op) virtual bool visit##op(M##op *) = 0;
     MIR_OPCODE_LIST(VISIT_INS)
 #undef VISIT_INS
 };
 
 class MInstructionVisitorWithDefaults : public MInstructionVisitor
 {
   public:
-#define VISIT_INS(op) virtual bool visit##op(M##op *) { MOZ_ASSUME_NOT_REACHED("NYI: " #op); return false; }
+#define VISIT_INS(op) virtual bool visit##op(M##op *) { MOZ_ASSUME_NOT_REACHED("NYI: " #op); }
     MIR_OPCODE_LIST(VISIT_INS)
 #undef VISIT_INS
 };
 
 } // namespace ion
 } // namespace js
 
 #endif /* ion_MOpcodes_h */
--- a/js/src/ion/Snapshots.cpp
+++ b/js/src/ion/Snapshots.cpp
@@ -264,17 +264,16 @@ SnapshotReader::readSlot()
             slot.unknown_type_.value = Location::From(reader_.readSigned());
         }
         return slot;
 #endif
       }
     }
 
     MOZ_ASSUME_NOT_REACHED("huh?");
-    return Slot(JS_UNDEFINED);
 }
 
 SnapshotOffset
 SnapshotWriter::startSnapshot(uint32_t frameCount, BailoutKind kind, bool resumeAfter)
 {
     nframes_ = frameCount;
     framesWritten_ = 0;
 
@@ -374,17 +373,16 @@ ValTypeToString(JSValueType type)
       case JSVAL_TYPE_BOOLEAN:
         return "boolean";
       case JSVAL_TYPE_OBJECT:
         return "object";
       case JSVAL_TYPE_MAGIC:
         return "magic";
       default:
         MOZ_ASSUME_NOT_REACHED("no payload");
-        return "";
     }
 }
 
 void
 SnapshotWriter::addSlot(JSValueType type, const Register &reg)
 {
     IonSpew(IonSpew_Snapshots, "    slot %u: %s (%s)",
             slotsWritten_, ValTypeToString(type), reg.name());
--- a/js/src/ion/StupidAllocator.cpp
+++ b/js/src/ion/StupidAllocator.cpp
@@ -32,17 +32,16 @@ StupidAllocator::stackLocation(uint32_t 
 StupidAllocator::RegisterIndex
 StupidAllocator::registerIndex(AnyRegister reg)
 {
     for (size_t i = 0; i < registerCount; i++) {
         if (reg == registers[i].reg)
             return i;
     }
     MOZ_ASSUME_NOT_REACHED("Bad register");
-    return UINT32_MAX;
 }
 
 bool
 StupidAllocator::init()
 {
     if (!RegisterAllocator::init())
         return false;
 
--- a/js/src/ion/TypePolicy.cpp
+++ b/js/src/ion/TypePolicy.cpp
@@ -205,17 +205,16 @@ ComparePolicy::adjustInputs(MInstruction
           case MIRType_Object:
             replace = MUnbox::New(in, MIRType_Object, MUnbox::Infallible);
             break;
           case MIRType_String:
             replace = MUnbox::New(in, MIRType_String, MUnbox::Infallible);
             break;
           default:
             MOZ_ASSUME_NOT_REACHED("Unknown compare specialization");
-            return false;
         }
 
         def->block()->insertBefore(def, replace);
         def->replaceOperand(i, replace);
     }
 
     return true;
 }
@@ -487,17 +486,16 @@ StoreTypedArrayPolicy::adjustValueInput(
         value = MConstant::New(DoubleValue(js_NaN));
         ins->block()->insertBefore(ins, value->toInstruction());
         break;
       case MIRType_String:
         value = boxAt(ins, value);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected type");
-        break;
     }
 
     if (value != curValue) {
         ins->replaceOperand(valueOperand, value);
         curValue = value;
     }
 
     JS_ASSERT(value->type() == MIRType_Int32 ||
@@ -525,17 +523,16 @@ StoreTypedArrayPolicy::adjustValueInput(
       case TypedArray::TYPE_FLOAT64:
         if (value->type() != MIRType_Double) {
             value = MToDouble::New(value);
             ins->block()->insertBefore(ins, value->toInstruction());
         }
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Invalid array type");
-        break;
     }
 
     if (value != curValue) {
         ins->replaceOperand(valueOperand, value);
         curValue = value;
     }
     return true;
 }
--- a/js/src/ion/arm/Assembler-arm.cpp
+++ b/js/src/ion/arm/Assembler-arm.cpp
@@ -726,17 +726,16 @@ Assembler::getCF32Target(Iter *iter)
             offset = - offset;
         }
         uint32_t **ptr = (uint32_t **)&dataInst[offset + 8];
         return *ptr;
 
     }
 
     MOZ_ASSUME_NOT_REACHED("unsupported branch relocation");
-    return NULL;
 }
 
 uintptr_t
 Assembler::getPointer(uint8_t *instPtr)
 {
     InstructionIterator iter((Instruction*)instPtr);
     uintptr_t ret = (uintptr_t)getPtr32Target(&iter, NULL, NULL);
     return ret;
@@ -790,17 +789,16 @@ Assembler::getPtr32Target(Iter *start, R
         if (dest)
             *dest = toRD(*load);
         if (style)
             *style = L_LDR;
         uint32_t **ptr = (uint32_t **)&dataInst[offset + 8];
         return *ptr;
     }
     MOZ_ASSUME_NOT_REACHED("unsupported relocation");
-    return NULL;
 }
 
 static IonCode *
 CodeFromJump(InstructionIterator *jump)
 {
     uint8_t *target = (uint8_t *)Assembler::getCF32Target(jump);
     return IonCode::FromExecutable(target);
 }
@@ -1798,17 +1796,17 @@ Assembler::patchConstantPoolLoad(void* l
 }
 
 uint32_t
 Assembler::placeConstantPoolBarrier(int offset)
 {
     // BUG: 700526
     // this is still an active path, however, we do not hit it in the test
     // suite at all.
-    MOZ_NOT_REACHED("ARMAssembler holdover");
+    MOZ_ASSUME_NOT_REACHED("ARMAssembler holdover");
 #if 0
     offset = (offset - sizeof(ARMWord)) >> 2;
     ASSERT((offset <= BOFFSET_MAX && offset >= BOFFSET_MIN));
     return AL | B | (offset & BRANCH_MASK);
 #endif
 }
 
 // Control flow stuff:
@@ -2006,17 +2004,16 @@ Assembler::as_vnmul(VFPRegister vd, VFPR
     MOZ_ASSUME_NOT_REACHED("Feature NYI");
 }
 
 BufferOffset
 Assembler::as_vnmla(VFPRegister vd, VFPRegister vn, VFPRegister vm,
                   Condition c)
 {
     MOZ_ASSUME_NOT_REACHED("Feature NYI");
-    return BufferOffset();
 }
 
 BufferOffset
 Assembler::as_vnmls(VFPRegister vd, VFPRegister vn, VFPRegister vm,
                   Condition c)
 {
     MOZ_ASSUME_NOT_REACHED("Feature NYI");
     return BufferOffset();
--- a/js/src/ion/arm/BaselineIC-arm.cpp
+++ b/js/src/ion/arm/BaselineIC-arm.cpp
@@ -192,17 +192,16 @@ ICBinaryArith_Int32::Compiler::generateS
         } else {
             masm.j(Assembler::LessThan, &failure);
             // Move result for return.
             masm.mov(scratchReg, R0.payloadReg());
         }
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Unhandled op for BinaryArith_Int32.");
-        return false;
     }
 
     EmitReturnFromIC(masm);
 
     switch (op_) {
       case JSOP_MUL:
         masm.bind(&maybeNegZero);
 
@@ -244,17 +243,16 @@ ICUnaryArith_Int32::Compiler::generateSt
         // Guard against 0 and MIN_INT, both result in a double.
         masm.branchTest32(Assembler::Zero, R0.payloadReg(), Imm32(0x7fffffff), &failure);
 
         // Compile -x as 0 - x.
         masm.ma_rsb(R0.payloadReg(), Imm32(0), R0.payloadReg());
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected op");
-        return false;
     }
 
     EmitReturnFromIC(masm);
 
     masm.bind(&failure);
     EmitStubGuardFailure(masm);
     return true;
 }
--- a/js/src/ion/arm/CodeGenerator-arm.cpp
+++ b/js/src/ion/arm/CodeGenerator-arm.cpp
@@ -1065,17 +1065,16 @@ CodeGeneratorARM::visitMathD(LMathD *mat
       case JSOP_MUL:
         masm.ma_vmul(ToFloatRegister(src1), ToFloatRegister(src2), ToFloatRegister(output));
         break;
       case JSOP_DIV:
         masm.ma_vdiv(ToFloatRegister(src1), ToFloatRegister(src2), ToFloatRegister(output));
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected opcode");
-        return false;
     }
     return true;
 }
 
 bool
 CodeGeneratorARM::visitFloor(LFloor *lir)
 {
     FloatRegister input = ToFloatRegister(lir->input());
@@ -1699,24 +1698,22 @@ getBase(U *mir)
     }
     return InvalidReg;
 }
 
 bool
 CodeGeneratorARM::visitLoadTypedArrayElementStatic(LLoadTypedArrayElementStatic *ins)
 {
     MOZ_ASSUME_NOT_REACHED("NYI");
-    return true;
 }
 
 bool
 CodeGeneratorARM::visitStoreTypedArrayElementStatic(LStoreTypedArrayElementStatic *ins)
 {
     MOZ_ASSUME_NOT_REACHED("NYI");
-    return true;
 }
 
 bool
 CodeGeneratorARM::visitAsmJSLoadHeap(LAsmJSLoadHeap *ins)
 {
     const MAsmJSLoadHeap *mir = ins->mir();
     bool isSigned;
     int size;
--- a/js/src/ion/arm/Lowering-arm.cpp
+++ b/js/src/ion/arm/Lowering-arm.cpp
@@ -484,12 +484,11 @@ LIRGeneratorARM::lowerTruncateDToInt32(M
 
     return define(new LTruncateDToInt32(useRegister(opd), LDefinition::BogusTemp()), ins);
 }
 
 bool
 LIRGeneratorARM::visitStoreTypedArrayElementStatic(MStoreTypedArrayElementStatic *ins)
 {
     MOZ_ASSUME_NOT_REACHED("NYI");
-    return true;
 }
 
 //__aeabi_uidiv
--- a/js/src/ion/arm/MacroAssembler-arm.cpp
+++ b/js/src/ion/arm/MacroAssembler-arm.cpp
@@ -725,17 +725,16 @@ MacroAssemblerARM::ma_cmp(Register src1,
         as_cmp(src1, op.toOp2(), c);
         break;
       case Operand::MEM:
         ma_ldr(op, ScratchRegister);
         as_cmp(src1, O2Reg(ScratchRegister), c);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("trying to compare FP and integer registers");
-        break;
     }
 }
 void
 MacroAssemblerARM::ma_cmp(Register src1, Register src2, Condition c)
 {
     as_cmp(src1, O2Reg(src2), c);
 }
 
@@ -799,18 +798,16 @@ MacroAssemblerARM::ma_check_mul(Register
     
     if (cond == Overflow) {
         as_smull(ScratchRegister, dest, src1, src2);
         as_cmp(ScratchRegister, asr(dest, 31));
         return NotEqual;
     }
 
     MOZ_ASSUME_NOT_REACHED("Condition NYI");
-    return Always;
-
 }
 
 Assembler::Condition
 MacroAssemblerARM::ma_check_mul(Register src1, Imm32 imm, Register dest, Condition cond)
 {
     ma_mov(imm, ScratchRegister);
     if (cond == Equal || cond == NotEqual) {
         as_smull(ScratchRegister, dest, ScratchRegister, src1, SetCond);
@@ -819,17 +816,16 @@ MacroAssemblerARM::ma_check_mul(Register
     
     if (cond == Overflow) {
         as_smull(ScratchRegister, dest, ScratchRegister, src1);
         as_cmp(ScratchRegister, asr(dest, 31));
         return NotEqual;
     }
 
     MOZ_ASSUME_NOT_REACHED("Condition NYI");
-    return Always;
 }
 
 void
 MacroAssemblerARM::ma_mod_mask(Register src, Register dest, Register hold, int32_t shift)
 {
     // MATH:
     // We wish to compute x % (1<<y) - 1 for a known constant, y.
     // first, let b = (1<<y) and C = (1<<y)-1, then think of the 32 bit dividend as
--- a/js/src/ion/arm/Trampoline-arm.cpp
+++ b/js/src/ion/arm/Trampoline-arm.cpp
@@ -691,17 +691,16 @@ IonRuntime::generateVMWrapper(JSContext 
         // Called functions return bools, which are 0/false and non-zero/true
         masm.branch32(Assembler::Equal, r0, Imm32(0), &failure);
         break;
       case Type_ParallelResult:
         masm.branch32(Assembler::NotEqual, r0, Imm32(TP_SUCCESS), &failure);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("unknown failure kind");
-        break;
     }
 
     // Load the outparam and free any allocated stack.
     switch (f.outParam) {
       case Type_Handle:
         masm.popRooted(f.outParamRootType, ReturnReg, JSReturnOperand);
         break;
 
--- a/js/src/ion/shared/Assembler-shared.h
+++ b/js/src/ion/shared/Assembler-shared.h
@@ -59,17 +59,16 @@ ScaleFromElemWidth(int shift)
         return TimesTwo;
       case 4:
         return TimesFour;
       case 8:
         return TimesEight;
     }
 
     MOZ_ASSUME_NOT_REACHED("Invalid scale");
-    return TimesOne;
 }
 
 // Used for 32-bit immediates which do not require relocation.
 struct Imm32
 {
     int32_t value;
 
     explicit Imm32(int32_t value) : value(value)
@@ -82,17 +81,16 @@ struct Imm32
           case TimesTwo:
             return Imm32(1);
           case TimesFour:
             return Imm32(2);
           case TimesEight:
             return Imm32(3);
         };
         MOZ_ASSUME_NOT_REACHED("Invalid scale");
-        return Imm32(-1);
     }
 
     static inline Imm32 FactorOf(enum Scale s) {
         return Imm32(1 << ShiftOf(s).value);
     }
 };
 
 // Pointer-sized immediate.
--- a/js/src/ion/shared/Assembler-x86-shared.cpp
+++ b/js/src/ion/shared/Assembler-x86-shared.cpp
@@ -119,17 +119,16 @@ AssemblerX86Shared::InvertCondition(Cond
       case AboveOrEqual:
         return Below;
       case Below:
         return AboveOrEqual;
       case BelowOrEqual:
         return Above;
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected condition");
-        return Equal;
     }
 }
 
 void
 AutoFlushCache::update(uintptr_t newStart, size_t len)
 {
 }
 
--- a/js/src/ion/shared/Assembler-x86-shared.h
+++ b/js/src/ion/shared/Assembler-x86-shared.h
@@ -130,17 +130,16 @@ class AssemblerX86Shared
             return NaN_HandledByCond;
           case DoubleEqual:
             return NaN_IsFalse;
           case DoubleNotEqualOrUnordered:
             return NaN_IsTrue;
         }
 
         MOZ_ASSUME_NOT_REACHED("Unknown double condition");
-        return NaN_HandledByCond;
     }
 
     static void staticAsserts() {
         // DoubleConditionBits should not interfere with x86 condition codes.
         JS_STATIC_ASSERT(!((Equal | NotEqual | Above | AboveOrEqual | Below |
                             BelowOrEqual | Parity | NoParity) & DoubleConditionBits));
     }
 
--- a/js/src/ion/shared/CodeGenerator-shared-inl.h
+++ b/js/src/ion/shared/CodeGenerator-shared-inl.h
@@ -13,17 +13,16 @@ namespace ion {
 static inline int32_t
 ToInt32(const LAllocation *a)
 {
     if (a->isConstantValue())
         return a->toConstant()->toInt32();
     if (a->isConstantIndex())
         return a->toConstantIndex()->index();
     MOZ_ASSUME_NOT_REACHED("this is not a constant!");
-    return -1;
 }
 static inline double
 ToDouble(const LAllocation *a)
 {
     return a->toConstant()->toNumber();
 }
 
 static inline Register
--- a/js/src/ion/shared/CodeGenerator-x86-shared.cpp
+++ b/js/src/ion/shared/CodeGenerator-x86-shared.cpp
@@ -1134,17 +1134,16 @@ CodeGeneratorX86Shared::visitMathD(LMath
       case JSOP_MUL:
         masm.mulsd(rhs, lhs);
         break;
       case JSOP_DIV:
         masm.divsd(rhs, lhs);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("unexpected opcode");
-        return false;
     }
     return true;
 }
 
 bool
 CodeGeneratorX86Shared::visitFloor(LFloor *lir)
 {
     FloatRegister input = ToFloatRegister(lir->input());
--- a/js/src/ion/shared/IonAssemblerBuffer.h
+++ b/js/src/ion/shared/IonAssemblerBuffer.h
@@ -234,17 +234,16 @@ struct AssemblerBuffer
     BufferOffset nextOffset() const {
         if (tail != NULL)
             return BufferOffset(bufferSize + tail->size());
         else
             return BufferOffset(bufferSize);
     }
     BufferOffset prevOffset() const {
         MOZ_ASSUME_NOT_REACHED("Don't current record lastInstSize");
-        return BufferOffset(bufferSize + tail->nodeSize - lastInstSize);
     }
 
     // Break the instruction stream so we can go back and edit it at this point
     void perforate() {
         Slice *tmp = newSlice(LifoAlloc_);
         if (!tmp)
             m_oom = true;
         bufferSize += tail->size();
--- a/js/src/ion/shared/IonAssemblerBufferWithConstantPools.h
+++ b/js/src/ion/shared/IonAssemblerBufferWithConstantPools.h
@@ -1126,17 +1126,16 @@ struct AssemblerBufferWithConstantPool :
         }
         for (int idx = numPoolKinds-1; idx >= 0; idx--) {
             if (poolGroup[idx].other == realPool) {
                 return start + offset;
             }
             start = poolGroup[idx].other->addPoolSize(start);
         }
         MOZ_ASSUME_NOT_REACHED("Entry is not in a pool");
-        return -1;
     }
     void writePoolEntry(PoolEntry pe, uint8_t *buff) {
         size_t size = getPoolEntrySize(pe);
         uint8_t *entry = getPoolEntry(pe);
         memcpy(entry, buff, size);
     }
     void readPoolEntry(PoolEntry pe, uint8_t *buff) {
         size_t size = getPoolEntrySize(pe);
--- a/js/src/ion/x64/BaselineIC-x64.cpp
+++ b/js/src/ion/x64/BaselineIC-x64.cpp
@@ -176,17 +176,16 @@ ICBinaryArith_Int32::Compiler::generateS
             masm.boxDouble(ScratchFloatReg, R0);
         } else {
             masm.j(Assembler::Signed, &revertRegister);
             masm.boxValue(JSVAL_TYPE_INT32, ExtractTemp0, R0.valueReg());
         }
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Unhandled op in BinaryArith_Int32");
-        return false;
     }
 
     // Return from stub.
     EmitReturnFromIC(masm);
 
     if (op_ == JSOP_MUL) {
         masm.bind(&maybeNegZero);
 
@@ -226,17 +225,16 @@ ICUnaryArith_Int32::Compiler::generateSt
         break;
       case JSOP_NEG:
         // Guard against 0 and MIN_INT, both result in a double.
         masm.branchTest32(Assembler::Zero, R0.valueReg(), Imm32(0x7fffffff), &failure);
         masm.negl(R0.valueReg());
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected op");
-        return false;
     }
 
     masm.tagValue(JSVAL_TYPE_INT32, R0.valueReg(), R0);
 
     EmitReturnFromIC(masm);
 
     masm.bind(&failure);
     EmitStubGuardFailure(masm);
--- a/js/src/ion/x64/CodeGenerator-x64.cpp
+++ b/js/src/ion/x64/CodeGenerator-x64.cpp
@@ -53,17 +53,16 @@ FrameSizeClass::ClassLimit()
 {
     return FrameSizeClass(0);
 }
 
 uint32_t
 FrameSizeClass::frameSize() const
 {
     MOZ_ASSUME_NOT_REACHED("x64 does not use frame size classes");
-    return 0;
 }
 
 bool
 CodeGeneratorX64::visitValue(LValue *value)
 {
     LDefinition *reg = value->getDef(0);
     masm.moveValue(value->value(), ToRegister(reg));
     return true;
@@ -114,17 +113,16 @@ CodeGeneratorX64::visitUnbox(LUnbox *unb
           case MIRType_Object:
             cond = masm.testObject(Assembler::NotEqual, value);
             break;
           case MIRType_String:
             cond = masm.testString(Assembler::NotEqual, value);
             break;
           default:
             MOZ_ASSUME_NOT_REACHED("Given MIRType cannot be unboxed.");
-            return false;
         }
         if (!bailoutIf(cond, unbox->snapshot()))
             return false;
     }
 
     switch (mir->type()) {
       case MIRType_Int32:
         masm.unboxInt32(value, ToRegister(result));
@@ -135,17 +133,16 @@ CodeGeneratorX64::visitUnbox(LUnbox *unb
       case MIRType_Object:
         masm.unboxObject(value, ToRegister(result));
         break;
       case MIRType_String:
         masm.unboxString(value, ToRegister(result));
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Given MIRType cannot be unboxed.");
-        break;
     }
 
     return true;
 }
 
 bool
 CodeGeneratorX64::visitLoadSlotV(LLoadSlotV *load)
 {
@@ -385,24 +382,22 @@ CodeGeneratorX64::visitUInt32ToDouble(LU
     masm.convertUInt32ToDouble(ToRegister(lir->input()), ToFloatRegister(lir->output()));
     return true;
 }
 
 bool
 CodeGeneratorX64::visitLoadTypedArrayElementStatic(LLoadTypedArrayElementStatic *ins)
 {
     MOZ_ASSUME_NOT_REACHED("NYI");
-    return true;
 }
 
 bool
 CodeGeneratorX64::visitStoreTypedArrayElementStatic(LStoreTypedArrayElementStatic *ins)
 {
     MOZ_ASSUME_NOT_REACHED("NYI");
-    return true;
 }
 
 bool
 CodeGeneratorX64::visitAsmJSLoadHeap(LAsmJSLoadHeap *ins)
 {
     MAsmJSLoadHeap *mir = ins->mir();
     ArrayBufferView::ViewType vt = mir->viewType();
 
--- a/js/src/ion/x64/Lowering-x64.cpp
+++ b/js/src/ion/x64/Lowering-x64.cpp
@@ -174,10 +174,9 @@ LIRGeneratorX64::newLGetPropertyCacheT(M
 {
     return new LGetPropertyCacheT(useRegister(ins->object()), LDefinition::BogusTemp());
 }
 
 bool
 LIRGeneratorX64::visitStoreTypedArrayElementStatic(MStoreTypedArrayElementStatic *ins)
 {
     MOZ_ASSUME_NOT_REACHED("NYI");
-    return true;
 }
--- a/js/src/ion/x64/MacroAssembler-x64.h
+++ b/js/src/ion/x64/MacroAssembler-x64.h
@@ -91,17 +91,16 @@ class MacroAssemblerX64 : public MacroAs
             return Operand(Register::FromCode(base.base()), base.disp() + 4);
 
           case Operand::SCALE:
             return Operand(Register::FromCode(base.base()), Register::FromCode(base.index()),
                            base.scale(), base.disp() + 4);
 
           default:
             MOZ_ASSUME_NOT_REACHED("unexpected operand kind");
-            return base; // Silence GCC warning.
         }
     }
     static inline Operand ToUpper32(const Address &address) {
         return Operand(address.base, address.offset + 4);
     }
     static inline Operand ToUpper32(const BaseIndex &address) {
         return Operand(address.base, address.index, address.scale, address.offset + 4);
     }
--- a/js/src/ion/x64/Trampoline-x64.cpp
+++ b/js/src/ion/x64/Trampoline-x64.cpp
@@ -446,17 +446,16 @@ GenerateBailoutThunk(JSContext *cx, Macr
 
     masm.generateBailoutTail(rdx, r9);
 }
 
 IonCode *
 IonRuntime::generateBailoutTable(JSContext *cx, uint32_t frameClass)
 {
     MOZ_ASSUME_NOT_REACHED("x64 does not use bailout tables");
-    return NULL;
 }
 
 IonCode *
 IonRuntime::generateBailoutHandler(JSContext *cx)
 {
     MacroAssembler masm;
 
     GenerateBailoutThunk(cx, masm, NO_FRAME_SIZE_CLASS_ID);
@@ -558,17 +557,16 @@ IonRuntime::generateVMWrapper(JSContext 
                 break;
               case VMFunction::WordByRef:
                 masm.passABIArg(MoveOperand(argsBase, argDisp, MoveOperand::EFFECTIVE));
                 argDisp += sizeof(void *);
                 break;
               case VMFunction::DoubleByValue:
               case VMFunction::DoubleByRef:
                 MOZ_ASSUME_NOT_REACHED("NYI: x64 callVM should not be used with 128bits values.");
-                break;
             }
         }
     }
 
     // Copy the implicit outparam, if any.
     if (outReg != InvalidReg)
         masm.passABIArg(outReg);
 
@@ -584,17 +582,16 @@ IonRuntime::generateVMWrapper(JSContext 
         masm.testb(rax, rax);
         masm.j(Assembler::Zero, &failure);
         break;
       case Type_ParallelResult:
         masm.branchPtr(Assembler::NotEqual, rax, Imm32(TP_SUCCESS), &failure);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("unknown failure kind");
-        break;
     }
 
     // Load the outparam and free any allocated stack.
     switch (f.outParam) {
       case Type_Handle:
         masm.popRooted(f.outParamRootType, ReturnReg, JSReturnOperand);
         break;
 
--- a/js/src/ion/x86/BaselineIC-x86.cpp
+++ b/js/src/ion/x86/BaselineIC-x86.cpp
@@ -180,17 +180,16 @@ ICBinaryArith_Int32::Compiler::generateS
             masm.boxDouble(ScratchFloatReg, R0);
         } else {
             masm.j(Assembler::Signed, &revertRegister);
             masm.tagValue(JSVAL_TYPE_INT32, R0.payloadReg(), R0);
         }
         break;
       default:
        MOZ_ASSUME_NOT_REACHED("Unhandled op for BinaryArith_Int32.  ");
-       return false;
     }
 
     // Return.
     EmitReturnFromIC(masm);
 
     switch(op_) {
       case JSOP_MUL:
         masm.bind(&maybeNegZero);
@@ -242,17 +241,16 @@ ICUnaryArith_Int32::Compiler::generateSt
         break;
       case JSOP_NEG:
         // Guard against 0 and MIN_INT, both result in a double.
         masm.branchTest32(Assembler::Zero, R0.payloadReg(), Imm32(0x7fffffff), &failure);
         masm.negl(R0.payloadReg());
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected op");
-        return false;
     }
 
     EmitReturnFromIC(masm);
 
     masm.bind(&failure);
     EmitStubGuardFailure(masm);
     return true;
 }
--- a/js/src/ion/x86/MacroAssembler-x86.h
+++ b/js/src/ion/x86/MacroAssembler-x86.h
@@ -94,17 +94,16 @@ class MacroAssemblerX86 : public MacroAs
             return Operand(Register::FromCode(base.base()), base.disp() + sizeof(void *));
 
           case Operand::SCALE:
             return Operand(Register::FromCode(base.base()), Register::FromCode(base.index()),
                            base.scale(), base.disp() + sizeof(void *));
 
           default:
             MOZ_ASSUME_NOT_REACHED("unexpected operand kind");
-            return base; // Silence GCC warning.
         }
     }
     void moveValue(const Value &val, Register type, Register data) {
         jsval_layout jv = JSVAL_TO_IMPL(val);
         movl(Imm32(jv.s.tag), type);
         if (val.isMarkable())
             movl(ImmGCPtr(reinterpret_cast<gc::Cell *>(val.toGCThing())), data);
         else
--- a/js/src/ion/x86/Trampoline-x86.cpp
+++ b/js/src/ion/x86/Trampoline-x86.cpp
@@ -605,17 +605,16 @@ IonRuntime::generateVMWrapper(JSContext 
         masm.testb(eax, eax);
         masm.j(Assembler::Zero, &failure);
         break;
       case Type_ParallelResult:
         masm.branchPtr(Assembler::NotEqual, eax, Imm32(TP_SUCCESS), &failure);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("unknown failure kind");
-        break;
     }
 
     // Load the outparam and free any allocated stack.
     switch (f.outParam) {
       case Type_Handle:
         masm.popRooted(f.outParamRootType, ReturnReg, JSReturnOperand);
         break;
 
--- a/js/src/jsanalyze.cpp
+++ b/js/src/jsanalyze.cpp
@@ -2017,17 +2017,17 @@ SSAValue::print() const
             printf("write:%05u", varOffset());
         break;
 
       case PHI:
         printf("phi:%05u#%u", phiOffset(), phiSlot());
         break;
 
       default:
-        MOZ_NOT_REACHED("Bad kind");
+        MOZ_ASSUME_NOT_REACHED("Bad kind");
     }
 }
 
 void
 ScriptAnalysis::assertMatchingDebugMode()
 {
     JS_ASSERT(!!script_->compartment()->debugMode() == !!originalDebugMode_);
 }
--- a/js/src/jsanalyze.h
+++ b/js/src/jsanalyze.h
@@ -202,17 +202,16 @@ ReverseCompareOp(JSOp op)
         return JSOP_GE;
       case JSOP_EQ:
       case JSOP_NE:
       case JSOP_STRICTEQ:
       case JSOP_STRICTNE:
         return op;
       default:
         MOZ_ASSUME_NOT_REACHED("unrecognized op");
-        return op;
     }
 }
 
 static inline JSOp
 NegateCompareOp(JSOp op)
 {
     switch (op) {
       case JSOP_GT:
@@ -228,17 +227,16 @@ NegateCompareOp(JSOp op)
       case JSOP_NE:
         return JSOP_EQ;
       case JSOP_STRICTNE:
         return JSOP_STRICTEQ;
       case JSOP_STRICTEQ:
         return JSOP_STRICTNE;
       default:
         MOZ_ASSUME_NOT_REACHED("unrecognized op");
-        return op;
     }
 }
 
 static inline unsigned
 FollowBranch(JSContext *cx, JSScript *script, unsigned offset)
 {
     /*
      * Get the target offset of a branch. For GOTO opcodes implementing
@@ -291,17 +289,16 @@ static inline uint32_t GetBytecodeSlot(J
       case JSOP_SETLOCAL:
         return LocalSlot(script, GET_SLOTNO(pc));
 
       case JSOP_THIS:
         return ThisSlot();
 
       default:
         MOZ_ASSUME_NOT_REACHED("Bad slot opcode");
-        return 0;
     }
 }
 
 /* Slot opcodes which update SSA information. */
 static inline bool
 BytecodeUpdatesSlot(JSOp op)
 {
     return (op == JSOP_SETARG || op == JSOP_SETLOCAL);
--- a/js/src/jsanalyzeinlines.h
+++ b/js/src/jsanalyzeinlines.h
@@ -67,17 +67,16 @@ ScriptAnalysis::getValueTypes(const SSAV
              */
             return pushedTypes(v.varOffset(), 0);
         }
       case SSAValue::PHI:
         return &v.phiNode()->types;
       default:
         /* Cannot compute types for empty SSA values. */
         MOZ_ASSUME_NOT_REACHED("Bad SSA value");
-        return NULL;
     }
 }
 
 inline types::StackTypeSet *
 ScriptAnalysis::poppedTypes(uint32_t offset, uint32_t which)
 {
     return getValueTypes(poppedValue(offset, which));
 }
--- a/js/src/jsclone.cpp
+++ b/js/src/jsclone.cpp
@@ -923,17 +923,16 @@ JSStructuredCloneReader::readTypedArray(
       case TypedArray::TYPE_FLOAT64:
         obj = JS_NewFloat64ArrayWithBuffer(context(), buffer, byteOffset, nelems);
         break;
       case TypedArray::TYPE_UINT8_CLAMPED:
         obj = JS_NewUint8ClampedArrayWithBuffer(context(), buffer, byteOffset, nelems);
         break;
       default:
         MOZ_ASSUME_NOT_REACHED("unknown TypedArray type");
-        return false;
     }
 
     if (!obj)
         return false;
     vp->setObject(*obj);
 
     allObjs[placeholderIndex] = *vp;
 
@@ -966,17 +965,16 @@ bytesPerTypedArrayElement(uint32_t array
       case TypedArray::TYPE_INT32:
       case TypedArray::TYPE_UINT32:
       case TypedArray::TYPE_FLOAT32:
         return sizeof(uint32_t);
       case TypedArray::TYPE_FLOAT64:
         return sizeof(uint64_t);
       default:
         MOZ_ASSUME_NOT_REACHED("unknown TypedArray type");
-        return 0;
     }
 }
 
 /*
  * Read in the data for a structured clone version 1 ArrayBuffer, performing
  * endianness-conversion while reading.
  */
 bool
@@ -1003,17 +1001,16 @@ JSStructuredCloneReader::readV1ArrayBuff
       case TypedArray::TYPE_INT32:
       case TypedArray::TYPE_UINT32:
       case TypedArray::TYPE_FLOAT32:
         return in.readArray((uint32_t*) buffer.dataPointer(), nelems);
       case TypedArray::TYPE_FLOAT64:
         return in.readArray((uint64_t*) buffer.dataPointer(), nelems);
       default:
         MOZ_ASSUME_NOT_REACHED("unknown TypedArray type");
-        return false;
     }
 }
 
 bool
 JSStructuredCloneReader::startRead(Value *vp)
 {
     uint32_t tag, data;
 
--- a/js/src/jscntxtinlines.h
+++ b/js/src/jscntxtinlines.h
@@ -612,13 +612,12 @@ js::ThreadSafeContext::allowGC() const
     switch (contextKind_) {
       case Context_JS:
         return CanGC;
       case Context_ForkJoin:
         return NoGC;
       default:
         /* Silence warnings. */
         MOZ_ASSUME_NOT_REACHED("Bad context kind");
-        return NoGC;
     }
 }
 
 #endif /* jscntxtinlines_h */
--- a/js/src/jsfun.cpp
+++ b/js/src/jsfun.cpp
@@ -139,17 +139,16 @@ fun_getProperty(JSContext *cx, HandleObj
                 return false;
             }
         }
 
         return true;
     }
 
     MOZ_ASSUME_NOT_REACHED("fun_getProperty");
-    return false;
 }
 
 
 
 /* NB: no sentinels at ends -- use ArrayLength to bound loops.
  * Properties censored into [[ThrowTypeError]] in strict mode. */
 static const uint16_t poisonPillProps[] = {
     NAME_OFFSET(arguments),
@@ -1747,11 +1746,10 @@ JSObject::hasIdempotentProtoChain() cons
             return false;
 
         obj = obj->getProto();
         if (!obj)
             return true;
     }
 
     MOZ_ASSUME_NOT_REACHED("Should not get here");
-    return false;
 }
 
--- a/js/src/jsgc.cpp
+++ b/js/src/jsgc.cpp
@@ -455,17 +455,16 @@ FinalizeArenas(FreeOp *fop,
       case FINALIZE_EXTERNAL_STRING:
         return FinalizeTypedArenas<JSExternalString>(fop, src, dest, thingKind, budget);
       case FINALIZE_IONCODE:
 #ifdef JS_ION
         return FinalizeTypedArenas<ion::IonCode>(fop, src, dest, thingKind, budget);
 #endif
       default:
         MOZ_ASSUME_NOT_REACHED("Invalid alloc kind");
-        return true;
     }
 }
 
 static inline Chunk *
 AllocChunk(JSRuntime *rt)
 {
     return static_cast<Chunk *>(MapAlignedPages(rt, ChunkSize, ChunkSize));
 }
@@ -721,17 +720,16 @@ Chunk::findDecommittedArenaOffset()
     /* Note: lastFreeArenaOffset can be past the end of the list. */
     for (unsigned i = info.lastDecommittedArenaOffset; i < ArenasPerChunk; i++)
         if (decommittedArenas.get(i))
             return i;
     for (unsigned i = 0; i < info.lastDecommittedArenaOffset; i++)
         if (decommittedArenas.get(i))
             return i;
     MOZ_ASSUME_NOT_REACHED("No decommitted arenas found.");
-    return -1;
 }
 
 ArenaHeader *
 Chunk::fetchNextDecommittedArena()
 {
     JS_ASSERT(info.numArenasFreeCommitted == 0);
     JS_ASSERT(info.numArenasFree > 0);
 
@@ -3506,17 +3504,16 @@ RemoveFromGrayList(JSObject *wrapper)
         if (next == wrapper) {
             obj->setCrossCompartmentSlot(slot, ObjectOrNullValue(tail));
             return true;
         }
         obj = next;
     }
 
     MOZ_ASSUME_NOT_REACHED("object not found in gray link list");
-    return false;
 }
 
 static void
 ResetGrayList(JSCompartment *comp)
 {
     JSObject *src = comp->gcIncomingGrayPointers;
     while (src)
         src = NextIncomingCrossCompartmentPointer(src, true);
--- a/js/src/jsgcinlines.h
+++ b/js/src/jsgcinlines.h
@@ -147,17 +147,16 @@ GetGCKindSlots(AllocKind thingKind)
       case FINALIZE_OBJECT12:
       case FINALIZE_OBJECT12_BACKGROUND:
         return 12;
       case FINALIZE_OBJECT16:
       case FINALIZE_OBJECT16_BACKGROUND:
         return 16;
       default:
         MOZ_ASSUME_NOT_REACHED("Bad object finalize kind");
-        return 0;
     }
 }
 
 static inline size_t
 GetGCKindSlots(AllocKind thingKind, Class *clasp)
 {
     size_t nslots = GetGCKindSlots(thingKind);
 
--- a/js/src/jsinfer.cpp
+++ b/js/src/jsinfer.cpp
@@ -186,17 +186,16 @@ types::TypeString(Type type)
           case JSVAL_TYPE_DOUBLE:
             return "float";
           case JSVAL_TYPE_STRING:
             return "string";
           case JSVAL_TYPE_MAGIC:
             return "lazyargs";
           default:
             MOZ_ASSUME_NOT_REACHED("Bad type");
-            return "";
         }
     }
     if (type.isUnknown())
         return "unknown";
     if (type.isAnyObject())
         return " object";
 
     static char bufs[4][40];
--- a/js/src/jsinferinlines.h
+++ b/js/src/jsinferinlines.h
@@ -109,17 +109,16 @@ CompilerOutput::ion() const
 #ifdef JS_ION
     JS_ASSERT(isValid());
     switch (kind()) {
       case Ion: return script->ionScript();
       case ParallelIon: return script->parallelIonScript();
     }
 #endif
     MOZ_ASSUME_NOT_REACHED("Invalid kind of CompilerOutput");
-    return NULL;
 }
 
 inline bool
 CompilerOutput::isValid() const
 {
     if (!script)
         return false;
 
@@ -219,17 +218,16 @@ PrimitiveTypeFlag(JSValueType type)
       case JSVAL_TYPE_DOUBLE:
         return TYPE_FLAG_DOUBLE;
       case JSVAL_TYPE_STRING:
         return TYPE_FLAG_STRING;
       case JSVAL_TYPE_MAGIC:
         return TYPE_FLAG_LAZYARGS;
       default:
         MOZ_ASSUME_NOT_REACHED("Bad type");
-        return 0;
     }
 }
 
 inline JSValueType
 TypeFlagPrimitive(TypeFlags flags)
 {
     switch (flags) {
       case TYPE_FLAG_UNDEFINED:
@@ -243,17 +241,16 @@ TypeFlagPrimitive(TypeFlags flags)
       case TYPE_FLAG_DOUBLE:
         return JSVAL_TYPE_DOUBLE;
       case TYPE_FLAG_STRING:
         return JSVAL_TYPE_STRING;
       case TYPE_FLAG_LAZYARGS:
         return JSVAL_TYPE_MAGIC;
       default:
         MOZ_ASSUME_NOT_REACHED("Bad type");
-        return (JSValueType) 0;
     }
 }
 
 /*
  * Get the canonical representation of an id to use when doing inference.  This
  * maintains the constraint that if two different jsids map to the same property
  * in JS (e.g. 3 and "3"), they have the same type representation.
  */
@@ -494,17 +491,16 @@ GetClassForProtoKey(JSProtoKey key)
       case JSProto_DataView:
         return &DataViewObject::class_;
 
       case JSProto_ParallelArray:
         return &ParallelArrayObject::class_;
 
       default:
         MOZ_ASSUME_NOT_REACHED("Bad proto key");
-        return NULL;
     }
 }
 
 /*
  * Get the default 'new' object for a given standard class, per the currently
  * active global.
  */
 inline TypeObject *
@@ -1587,17 +1583,16 @@ TypeObject::getProperty(JSContext *cx, j
              */
             unsigned count = getPropertyCount();
             for (unsigned i = 0; i < count; i++) {
                 if (Property *prop = getProperty(i))
                     return &prop->types;
             }
 
             MOZ_ASSUME_NOT_REACHED("Missing property");
-            return NULL;
         }
     }
 
     HeapTypeSet *types = &(*pprop)->types;
     if (own)
         types->setOwnProperty(cx, false);
 
     return types;
--- a/js/src/jsobjinlines.h
+++ b/js/src/jsobjinlines.h
@@ -1262,17 +1262,16 @@ ObjectClassIs(HandleObject obj, ESClassV
       case ESClass_Number: return obj->is<NumberObject>();
       case ESClass_String: return obj->is<StringObject>();
       case ESClass_Boolean: return obj->is<BooleanObject>();
       case ESClass_RegExp: return obj->is<RegExpObject>();
       case ESClass_ArrayBuffer: return obj->is<ArrayBufferObject>();
       case ESClass_Date: return obj->is<DateObject>();
     }
     MOZ_ASSUME_NOT_REACHED("bad classValue");
-    return false;
 }
 
 inline bool
 IsObjectWithClass(const Value &v, ESClassValue classValue, JSContext *cx)
 {
     if (!v.isObject())
         return false;
     RootedObject obj(cx, &v.toObject());
--- a/js/src/jsopcode.cpp
+++ b/js/src/jsopcode.cpp
@@ -113,17 +113,16 @@ js_GetVariableBytecodeLength(jsbytecode 
         int32_t low = GET_JUMP_OFFSET(pc);
         pc += JUMP_OFFSET_LEN;
         int32_t high = GET_JUMP_OFFSET(pc);
         unsigned ncases = unsigned(high - low + 1);
         return 1 + 3 * JUMP_OFFSET_LEN + ncases * JUMP_OFFSET_LEN;
       }
       default:
         MOZ_ASSUME_NOT_REACHED("Unexpected op");
-        return 0;
     }
 }
 
 static uint32_t
 NumBlockSlots(JSScript *script, jsbytecode *pc)
 {
     JS_ASSERT(*pc == JSOP_ENTERBLOCK || *pc == JSOP_ENTERLET0 || *pc == JSOP_ENTERLET1);
     JS_STATIC_ASSERT(JSOP_ENTERBLOCK_LENGTH == JSOP_ENTERLET0_LENGTH);
@@ -246,24 +245,22 @@ PCCounts::countName(JSOp op, size_t whic
     if (accessOp(op)) {
         if (which < ACCESS_LIMIT)
             return countAccessNames[which - BASE_LIMIT];
         if (elementOp(op))
             return countElementNames[which - ACCESS_LIMIT];
         if (propertyOp(op))
             return countPropertyNames[which - ACCESS_LIMIT];
         MOZ_ASSUME_NOT_REACHED("bad op");
-        return NULL;
     }
 
     if (arithOp(op))
         return countArithNames[which - BASE_LIMIT];
 
     MOZ_ASSUME_NOT_REACHED("bad op");
-    return NULL;
 }
 
 #ifdef DEBUG
 
 #ifdef JS_ION
 void
 js::DumpIonScriptCounts(Sprinter *sp, ion::IonScriptCounts *ionCounts)
 {
--- a/js/src/jsopcode.h
+++ b/js/src/jsopcode.h
@@ -511,17 +511,16 @@ GetBytecodeInteger(jsbytecode *pc)
       case JSOP_ZERO:   return 0;
       case JSOP_ONE:    return 1;
       case JSOP_UINT16: return GET_UINT16(pc);
       case JSOP_UINT24: return GET_UINT24(pc);
       case JSOP_INT8:   return GET_INT8(pc);
       case JSOP_INT32:  return GET_INT32(pc);
       default:
         MOZ_ASSUME_NOT_REACHED("Bad op");
-        return 0;
     }
 }
 
 /*
  * Counts accumulated for a single opcode in a script. The counts tracked vary
  * between opcodes, and this structure ensures that counts are accessed in a
  * coherent fashion.
  */
--- a/js/src/jsproxy.cpp
+++ b/js/src/jsproxy.cpp
@@ -304,42 +304,42 @@ BaseProxyHandler::iterate(JSContext *cx,
     }
 
     return EnumeratedIdVectorToIterator(cx, proxy, flags, props, vp);
 }
 
 bool
 BaseProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args)
 {
-    MOZ_NOT_REACHED("callable proxies should implement call trap");
+    MOZ_ASSUME_NOT_REACHED("callable proxies should implement call trap");
 }
 
 bool
 BaseProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs &args)
 {
-    MOZ_NOT_REACHED("callable proxies should implement construct trap");
+    MOZ_ASSUME_NOT_REACHED("callable proxies should implement construct trap");
 }
 
 const char *
 BaseProxyHandler::className(JSContext *cx, HandleObject proxy)
 {
     return IsFunctionProxy(proxy) ? "Function" : "Object";
 }
 
 JSString *
 BaseProxyHandler::fun_toString(JSContext *cx, HandleObject proxy, unsigned indent)
 {
-    MOZ_NOT_REACHED("callable proxies should implement fun_toString trap");
+    MOZ_ASSUME_NOT_REACHED("callable proxies should implement fun_toString trap");
 }
 
 bool
 BaseProxyHandler::regexp_toShared(JSContext *cx, HandleObject proxy,
                                   RegExpGuard *g)
 {
-    MOZ_NOT_REACHED("This should have been a wrapped regexp");
+    MOZ_ASSUME_NOT_REACHED("This should have been a wrapped regexp");
 }
 
 bool
 BaseProxyHandler::defaultValue(JSContext *cx, HandleObject proxy, JSType hint,
                                MutableHandleValue vp)
 {
     return DefaultValue(cx, proxy, hint, vp);
 }
--- a/js/src/jsreflect.cpp
+++ b/js/src/jsreflect.cpp
@@ -109,17 +109,17 @@ typedef AutoValueVector NodeVector;
         if (!(expr)) {                                                                 \
             JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_BAD_PARSE_NODE);  \
             return false;                                                              \
         }                                                                              \
     JS_END_MACRO
 
 #define LOCAL_NOT_REACHED(expr)                                                        \
     JS_BEGIN_MACRO                                                                     \
-        MOZ_ASSUME_NOT_REACHED(expr);                                                          \
+        MOZ_ASSERT(false);                                                             \
         JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_BAD_PARSE_NODE);      \
         return false;                                                                  \
     JS_END_MACRO
 
 /*
  * Builder class that constructs JavaScript AST node objects. See:
  *
  *     https://developer.mozilla.org/en/SpiderMonkey/Parser_API
--- a/js/src/jsscript.cpp
+++ b/js/src/jsscript.cpp
@@ -376,17 +376,16 @@ FindBlockIndex(JSScript *script, StaticB
     HeapPtrObject *vector = objects->vector;
     unsigned length = objects->length;
     for (unsigned i = 0; i < length; ++i) {
         if (vector[i] == &block)
             return i;
     }
 
     MOZ_ASSUME_NOT_REACHED("Block not found");
-    return UINT32_MAX;
 }
 
 template<XDRMode mode>
 bool
 js::XDRScript(XDRState<mode> *xdr, HandleObject enclosingScope, HandleScript enclosingScript,
               HandleFunction fun, MutableHandleScript scriptp)
 {
     /* NB: Keep this in sync with CloneScript. */
--- a/js/src/jstypedarray.cpp
+++ b/js/src/jstypedarray.cpp
@@ -2447,17 +2447,17 @@ class TypedArrayTemplate
           }
           case TypedArray::TYPE_FLOAT64: {
             double *src = static_cast<double*>(viewData(tarray));
             for (unsigned i = 0; i < srclen; ++i)
                 *dest++ = NativeType(*src++);
             break;
           }
           default:
-            MOZ_NOT_REACHED("copyFrom with a TypedArray of unknown type");
+            MOZ_ASSUME_NOT_REACHED("copyFrom with a TypedArray of unknown type");
         }
 
         return true;
     }
 
     static bool
     copyFromWithOverlap(JSContext *cx, JSObject *self, JSObject *tarray, uint32_t offset)
     {
@@ -2525,17 +2525,16 @@ class TypedArrayTemplate
           case TypedArray::TYPE_FLOAT64: {
             double *src = (double*) srcbuf;
             for (unsigned i = 0; i < length(tarray); ++i)
                 *dest++ = NativeType(*src++);
             break;
           }
           default:
             MOZ_ASSUME_NOT_REACHED("copyFromWithOverlap with a TypedArray of unknown type");
-            break;
         }
 
         js_free(srcbuf);
         return true;
     }
 
     static JSObject *
     createBufferWithSizeAndCount(JSContext *cx, uint32_t count)
@@ -3869,17 +3868,16 @@ js::IsTypedArrayConstructor(const Value 
       case TypedArray::TYPE_FLOAT32:
         return IsNativeFunction(v, Float32Array::class_constructor);
       case TypedArray::TYPE_FLOAT64:
         return IsNativeFunction(v, Float64Array::class_constructor);
       case TypedArray::TYPE_UINT8_CLAMPED:
         return IsNativeFunction(v, Uint8ClampedArray::class_constructor);
     }
     MOZ_ASSUME_NOT_REACHED("unexpected typed array type");
-    return false;
 }
 
 bool
 js::IsTypedArrayBuffer(const Value &v)
 {
     return v.isObject() && v.toObject().is<ArrayBufferObject>();
 }
 
@@ -4027,17 +4025,16 @@ JS_GetArrayBufferViewType(JSObject *obj)
     if (!obj)
         return ArrayBufferView::TYPE_MAX;
 
     if (obj->isTypedArray())
         return static_cast<JSArrayBufferViewType>(TypedArray::type(obj));
     else if (obj->is<DataViewObject>())
         return ArrayBufferView::TYPE_DATAVIEW;
     MOZ_ASSUME_NOT_REACHED("invalid ArrayBufferView type");
-    return ArrayBufferView::TYPE_MAX;
 }
 
 JS_FRIEND_API(int8_t *)
 JS_GetInt8ArrayData(JSObject *obj)
 {
     obj = CheckedUnwrap(obj);
     if (!obj)
         return NULL;
--- a/js/src/jstypedarray.h
+++ b/js/src/jstypedarray.h
@@ -333,17 +333,16 @@ TypedArrayShift(ArrayBufferView::ViewTyp
       case ArrayBufferView::TYPE_UINT32:
       case ArrayBufferView::TYPE_FLOAT32:
         return 2;
       case ArrayBufferView::TYPE_FLOAT64:
         return 3;
       default:;
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected array type");
-    return 0;
 }
 
 class DataViewObject : public JSObject, public BufferView
 {
 public:
     static Class class_;
 
 private:
--- a/js/src/jstypedarrayinlines.h
+++ b/js/src/jstypedarrayinlines.h
@@ -152,17 +152,16 @@ TypedArray::slotWidth(int atype) {
     case js::TypedArray::TYPE_INT32:
     case js::TypedArray::TYPE_UINT32:
     case js::TypedArray::TYPE_FLOAT32:
         return 4;
     case js::TypedArray::TYPE_FLOAT64:
         return 8;
     default:
         MOZ_ASSUME_NOT_REACHED("invalid typed array type");
-        return 0;
     }
 }
 
 inline int
 TypedArray::slotWidth(JSObject *obj) {
     return slotWidth(type(obj));
 }
 
--- a/js/src/jsversion.h
+++ b/js/src/jsversion.h
@@ -56,12 +56,12 @@
 
 /* A kill-switch for bug 586842.  Embedders shouldn't touch this! */
 #define USE_NEW_OBJECT_REPRESENTATION 0
 
 #if USE_NEW_OBJECT_REPRESENTATION
 #  define NEW_OBJECT_REPRESENTATION_ONLY() ((void)0)
 #else
 #  define NEW_OBJECT_REPRESENTATION_ONLY() \
-     MOZ_NOT_REACHED("don't call this!  to be used in the new object representation")
+     MOZ_ASSUME_NOT_REACHED("don't call this!  to be used in the new object representation")
 #endif
 
 #endif /* jsversion_h */
--- a/js/src/jsworkers.cpp
+++ b/js/src/jsworkers.cpp
@@ -439,23 +439,23 @@ WorkerThread::threadLoop()
     }
 }
 
 #else /* JS_PARALLEL_COMPILATION */
 
 bool
 js::StartOffThreadAsmJSCompile(JSContext *cx, AsmJSParallelTask *asmData)
 {
-    MOZ_NOT_REACHED("Off thread compilation not available in non-THREADSAFE builds");
+    MOZ_ASSUME_NOT_REACHED("Off thread compilation not available in non-THREADSAFE builds");
 }
 
 bool
 js::StartOffThreadIonCompile(JSContext *cx, ion::IonBuilder *builder)
 {
-    MOZ_NOT_REACHED("Off thread compilation not available in non-THREADSAFE builds");
+    MOZ_ASSUME_NOT_REACHED("Off thread compilation not available in non-THREADSAFE builds");
 }
 
 void
 js::CancelOffThreadIonCompile(JSCompartment *compartment, JSScript *script)
 {
 }
 
 #endif /* JS_PARALLEL_COMPILATION */
--- a/js/src/shell/jsoptparse.cpp
+++ b/js/src/shell/jsoptparse.cpp
@@ -305,17 +305,16 @@ OptionParser::handleOption(Option *opt, 
         char *value = NULL;
         if (Result r = extractValue(argc, argv, i, &value))
             return r;
         StringArg arg(value, *i);
         return opt->asMultiStringOption()->strings.append(arg) ? Okay : Fail;
       }
       default:
         MOZ_ASSUME_NOT_REACHED("unhandled option kind");
-        return Fail;
     }
 }
 
 OptionParser::Result
 OptionParser::handleArg(size_t argc, char **argv, size_t *i, bool *optionsAllowed)
 {
     if (nextArgument >= arguments.length())
         return error("Too many arguments provided");
@@ -333,17 +332,16 @@ OptionParser::handleArg(size_t argc, cha
       case OptionKindMultiString:
       {
         /* Don't advance the next argument -- there can only be one (final) variadic argument. */
         StringArg value(argv[*i], *i);
         return arg->asMultiStringOption()->strings.append(value) ? Okay : Fail;
       }
       default:
         MOZ_ASSUME_NOT_REACHED("unhandled argument kind");
-        return Fail;
     }
 }
 
 OptionParser::Result
 OptionParser::parseArgs(int inputArgc, char **argv)
 {
     JS_ASSERT(inputArgc >= 0);
     size_t argc = inputArgc;
--- a/js/src/vm/ForkJoin.cpp
+++ b/js/src/vm/ForkJoin.cpp
@@ -77,51 +77,51 @@ bool
 ForkJoinSlice::InitializeTLS()
 {
     return true;
 }
 
 JSRuntime *
 ForkJoinSlice::runtime()
 {
-    MOZ_NOT_REACHED("Not THREADSAFE build");
+    MOZ_ASSUME_NOT_REACHED("Not THREADSAFE build");
 }
 
 bool
 ForkJoinSlice::check()
 {
-    MOZ_NOT_REACHED("Not THREADSAFE build");
+    MOZ_ASSUME_NOT_REACHED("Not THREADSAFE build");
 }
 
 void
 ForkJoinSlice::requestGC(JS::gcreason::Reason reason)
 {
-    MOZ_NOT_REACHED("Not THREADSAFE build");
+    MOZ_ASSUME_NOT_REACHED("Not THREADSAFE build");
 }
 
 void
 ForkJoinSlice::requestZoneGC(JS::Zone *zone, JS::gcreason::Reason reason)
 {
-    MOZ_NOT_REACHED("Not THREADSAFE build");
+    MOZ_ASSUME_NOT_REACHED("Not THREADSAFE build");
 }
 
 void
 ParallelBailoutRecord::setCause(ParallelBailoutCause cause,
                                 JSScript *outermostScript,
                                 JSScript *currentScript,
                                 jsbytecode *currentPc)
 {
-    MOZ_NOT_REACHED("Not THREADSAFE build");
+    MOZ_ASSUME_NOT_REACHED("Not THREADSAFE build");
 }
 
 void
 ParallelBailoutRecord::addTrace(JSScript *script,
                                 jsbytecode *pc)
 {
-    MOZ_NOT_REACHED("Not THREADSAFE build");
+    MOZ_ASSUME_NOT_REACHED("Not THREADSAFE build");
 }
 
 bool
 js::InSequentialOrExclusiveParallelSection()
 {
     return true;
 }
 
--- a/js/src/vm/ObjectImpl.cpp
+++ b/js/src/vm/ObjectImpl.cpp
@@ -381,17 +381,17 @@ DenseElementsHeader::getOwnElement(JSCon
 }
 
 bool
 SparseElementsHeader::getOwnElement(JSContext *cx, Handle<ObjectImpl*> obj, uint32_t index,
                                     unsigned resolveFlags, PropDesc *desc)
 {
     MOZ_ASSERT(this == &obj->elementsHeader());
 
-    MOZ_NOT_REACHED("NYI");
+    MOZ_ASSUME_NOT_REACHED("NYI");
 }
 
 template<typename T>
 static Value
 ElementToValue(const T &t)
 {
     return NumberValue(t);
 }
@@ -421,27 +421,27 @@ TypedElementsHeader<T>::getOwnElement(JS
 }
 
 bool
 ArrayBufferElementsHeader::getOwnElement(JSContext *cx, Handle<ObjectImpl*> obj, uint32_t index,
                                          unsigned resolveFlags, PropDesc *desc)
 {
     MOZ_ASSERT(this == &obj->elementsHeader());
 
-    MOZ_NOT_REACHED("NYI");
+    MOZ_ASSUME_NOT_REACHED("NYI");
 }
 
 bool
 SparseElementsHeader::defineElement(JSContext *cx, Handle<ObjectImpl*> obj, uint32_t index,
                                     const PropDesc &desc, bool shouldThrow, unsigned resolveFlags,
                                     bool *succeeded)
 {
     MOZ_ASSERT(this == &obj->elementsHeader());
 
-    MOZ_NOT_REACHED("NYI");
+    MOZ_ASSUME_NOT_REACHED("NYI");
 }
 
 bool
 DenseElementsHeader::defineElement(JSContext *cx, Handle<ObjectImpl*> obj, uint32_t index,
                                    const PropDesc &desc, bool shouldThrow, unsigned resolveFlags,
                                    bool *succeeded)
 {
     MOZ_ASSERT(this == &obj->elementsHeader());
@@ -562,17 +562,16 @@ js::GetOwnProperty(JSContext *cx, Handle
     NEW_OBJECT_REPRESENTATION_ONLY();
 
     JS_CHECK_RECURSION(cx, return false);
 
     Rooted<PropertyId> pid(cx, pid_);
 
     if (static_cast<JSObject *>(obj.get())->isProxy()) {
         MOZ_ASSUME_NOT_REACHED("NYI: proxy [[GetOwnProperty]]");
-        return false;
     }
 
     RootedShape shape(cx, obj->nativeLookup(cx, pid));
     if (!shape) {
         /* Not found: attempt to resolve it. */
         Class *clasp = obj->getClass();
         JSResolveOp resolve = clasp->resolve;
         if (resolve != JS_ResolveStub) {
@@ -605,17 +604,16 @@ js::GetOwnProperty(JSContext *cx, Handle
 
     if (shape->isAccessorDescriptor()) {
         *desc = PropDesc(shape->getterValue(), shape->setterValue(),
                          shape->enumerability(), shape->configurability());
         return true;
     }
 
     MOZ_ASSUME_NOT_REACHED("NYI: PropertyOp-based properties");
-    return false;
 }
 
 bool
 js::GetOwnElement(JSContext *cx, Handle<ObjectImpl*> obj, uint32_t index, unsigned resolveFlags,
                   PropDesc *desc)
 {
     ElementsHeader &header = obj->elementsHeader();
     switch (header.kind()) {
@@ -641,17 +639,16 @@ js::GetOwnElement(JSContext *cx, Handle<
         return header.asFloat32Elements().getOwnElement(cx, obj, index, resolveFlags, desc);
       case Float64Elements:
         return header.asFloat64Elements().getOwnElement(cx, obj, index, resolveFlags, desc);
       case ArrayBufferElements:
         return header.asArrayBufferElements().getOwnElement(cx, obj, index, resolveFlags, desc);
     }
 
     MOZ_ASSUME_NOT_REACHED("bad elements kind!");
-    return false;
 }
 
 bool
 js::GetProperty(JSContext *cx, Handle<ObjectImpl*> obj, Handle<ObjectImpl*> receiver,
                 Handle<PropertyId> pid, unsigned resolveFlags, MutableHandle<Value> vp)
 {
     NEW_OBJECT_REPRESENTATION_ONLY();
 
@@ -659,17 +656,16 @@ js::GetProperty(JSContext *cx, Handle<Ob
 
     Rooted<ObjectImpl*> current(cx, obj);
 
     do {
         MOZ_ASSERT(obj);
 
         if (Downcast(current)->isProxy()) {
             MOZ_ASSUME_NOT_REACHED("NYI: proxy [[GetP]]");
-            return false;
         }
 
         AutoPropDescRooter desc(cx);
         if (!GetOwnProperty(cx, current, pid, resolveFlags, &desc.getPropDesc()))
             return false;
 
         /* No property?  Recur or bottom out. */
         if (desc.isUndefined()) {
@@ -704,38 +700,35 @@ js::GetProperty(JSContext *cx, Handle<Ob
 
             bool ok = Invoke(cx, args);
             vp.set(args.rval());
             return ok;
         }
 
         /* Otherwise it's a PropertyOp-based property.  XXX handle this! */
         MOZ_ASSUME_NOT_REACHED("NYI: handle PropertyOp'd properties here");
-        return false;
     } while (false);
 
     MOZ_ASSUME_NOT_REACHED("buggy control flow");
-    return false;
 }
 
 bool
 js::GetElement(JSContext *cx, Handle<ObjectImpl*> obj, Handle<ObjectImpl*> receiver, uint32_t index,
                unsigned resolveFlags, Value *vp)
 {
     NEW_OBJECT_REPRESENTATION_ONLY();
 
     Rooted<ObjectImpl*> current(cx, obj);
 
     RootedValue getter(cx);
     do {
         MOZ_ASSERT(current);
 
         if (Downcast(current)->isProxy()) {
             MOZ_ASSUME_NOT_REACHED("NYI: proxy [[GetP]]");
-            return false;
         }
 
         PropDesc desc;
         if (!GetOwnElement(cx, current, index, resolveFlags, &desc))
             return false;
 
         /* No property?  Recur or bottom out. */
         if (desc.isUndefined()) {
@@ -771,37 +764,34 @@ js::GetElement(JSContext *cx, Handle<Obj
 
             bool ok = Invoke(cx, args);
             *vp = args.rval();
             return ok;
         }
 
         /* Otherwise it's a PropertyOp-based property.  XXX handle this! */
         MOZ_ASSUME_NOT_REACHED("NYI: handle PropertyOp'd properties here");
-        return false;
     } while (false);
 
     MOZ_ASSUME_NOT_REACHED("buggy control flow");
-    return false;
 }
 
 bool
 js::HasElement(JSContext *cx, Handle<ObjectImpl*> obj, uint32_t index, unsigned resolveFlags,
                bool *found)
 {
     NEW_OBJECT_REPRESENTATION_ONLY();
 
     Rooted<ObjectImpl*> current(cx, obj);
 
     do {
         MOZ_ASSERT(current);
 
         if (Downcast(current)->isProxy()) {
             MOZ_ASSUME_NOT_REACHED("NYI: proxy [[HasProperty]]");
-            return false;
         }
 
         PropDesc prop;
         if (!GetOwnElement(cx, current, index, resolveFlags, &prop))
             return false;
 
         if (!prop.isUndefined()) {
             *found = true;
@@ -812,17 +802,16 @@ js::HasElement(JSContext *cx, Handle<Obj
         if (current)
             continue;
 
         *found = false;
         return true;
     } while (false);
 
     MOZ_ASSUME_NOT_REACHED("buggy control flow");
-    return false;
 }
 
 bool
 js::DefineElement(JSContext *cx, Handle<ObjectImpl*> obj, uint32_t index, const PropDesc &desc,
                   bool shouldThrow, unsigned resolveFlags, bool *succeeded)
 {
     NEW_OBJECT_REPRESENTATION_ONLY();
 
@@ -862,37 +851,37 @@ js::DefineElement(JSContext *cx, Handle<
       case Float64Elements:
         return header.asFloat64Elements().defineElement(cx, obj, index, desc, shouldThrow,
                                                         resolveFlags, succeeded);
       case ArrayBufferElements:
         return header.asArrayBufferElements().defineElement(cx, obj, index, desc, shouldThrow,
                                                             resolveFlags, succeeded);
     }
 
-    MOZ_NOT_REACHED("bad elements kind!");
+    MOZ_ASSUME_NOT_REACHED("bad elements kind!");
 }
 
 bool
 SparseElementsHeader::setElement(JSContext *cx, Handle<ObjectImpl*> obj,
                                  Handle<ObjectImpl*> receiver, uint32_t index, const Value &v,
                                  unsigned resolveFlags, bool *succeeded)
 {
     MOZ_ASSERT(this == &obj->elementsHeader());
 
-    MOZ_NOT_REACHED("NYI");
+    MOZ_ASSUME_NOT_REACHED("NYI");
 }
 
 bool
 DenseElementsHeader::setElement(JSContext *cx, Handle<ObjectImpl*> obj,
                                 Handle<ObjectImpl*> receiver, uint32_t index, const Value &v,
                                 unsigned resolveFlags, bool *succeeded)
 {
     MOZ_ASSERT(this == &obj->elementsHeader());
 
-    MOZ_NOT_REACHED("NYI");
+    MOZ_ASSUME_NOT_REACHED("NYI");
 }
 
 template <typename T>
 bool
 TypedElementsHeader<T>::setElement(JSContext *cx, Handle<ObjectImpl*> obj,
                                    Handle<ObjectImpl*> receiver, uint32_t index, const Value &v,
                                    unsigned resolveFlags, bool *succeeded)
 {
@@ -957,17 +946,16 @@ js::SetElement(JSContext *cx, Handle<Obj
 
     MOZ_ASSERT(receiver);
 
     do {
         MOZ_ASSERT(current);
 
         if (Downcast(current)->isProxy()) {
             MOZ_ASSUME_NOT_REACHED("NYI: proxy [[SetP]]");
-            return false;
         }
 
         PropDesc ownDesc;
         if (!GetOwnElement(cx, current, index, resolveFlags, &ownDesc))
             return false;
 
         if (!ownDesc.isUndefined()) {
             if (ownDesc.isDataDescriptor()) {
@@ -1002,29 +990,27 @@ js::SetElement(JSContext *cx, Handle<Obj
                 args.setThis(ObjectValue(*current));
                 args[0] = v;
 
                 *succeeded = true;
                 return Invoke(cx, args);
             }
 
             MOZ_ASSUME_NOT_REACHED("NYI: setting PropertyOp-based property");
-            return false;
         }
 
         current = current->getProto();
         if (current)
             continue;
 
         PropDesc newDesc(v, PropDesc::Writable, PropDesc::Enumerable, PropDesc::Configurable);
         return DefineElement(cx, receiver, index, newDesc, false, resolveFlags, succeeded);
     } while (false);
 
     MOZ_ASSUME_NOT_REACHED("buggy control flow");
-    return false;
 }
 
 void
 AutoPropDescRooter::trace(JSTracer *trc)
 {
     gc::MarkValueRoot(trc, &propDesc.pd_, "AutoPropDescRooter pd");
     gc::MarkValueRoot(trc, &propDesc.value_, "AutoPropDescRooter value");
     gc::MarkValueRoot(trc, &propDesc.get_, "AutoPropDescRooter get");
--- a/js/src/vm/ObjectImpl.h
+++ b/js/src/vm/ObjectImpl.h
@@ -685,17 +685,17 @@ class TypedElementsHeader : public Eleme
   private:
     TypedElementsHeader(const TypedElementsHeader &other) MOZ_DELETE;
     void operator=(const TypedElementsHeader &other) MOZ_DELETE;
 };
 
 template<typename T> inline void
 TypedElementsHeader<T>::assign(uint32_t index, double d)
 {
-    MOZ_NOT_REACHED("didn't specialize for this element type");
+    MOZ_ASSUME_NOT_REACHED("didn't specialize for this element type");
 }
 
 template<> inline void
 TypedElementsHeader<uint8_clamped>::assign(uint32_t index, double d)
 {
     double i = ToInteger(d);
     uint8_t u = (i <= 0)
                 ? 0
@@ -1265,19 +1265,17 @@ class ObjectImpl : public gc::Cell
     }
     uint32_t getDenseCapacity() {
         JS_ASSERT(uninlinedIsNative());
         return getElementsHeader()->capacity;
     }
 
     bool makeElementsSparse(JSContext *cx) {
         NEW_OBJECT_REPRESENTATION_ONLY();
-
         MOZ_ASSUME_NOT_REACHED("NYI");
-        return false;
     }
 
     inline bool isProxy() const;
 
   protected:
 #ifdef DEBUG
     void checkShapeConsistency();
 #else
@@ -1394,19 +1392,17 @@ class ObjectImpl : public gc::Cell
         ConvertToSparse,
         Succeeded
     };
 
     DenseElementsResult ensureDenseElementsInitialized(JSContext *cx, uint32_t index,
                                                        uint32_t extra)
     {
         NEW_OBJECT_REPRESENTATION_ONLY();
-
         MOZ_ASSUME_NOT_REACHED("NYI");
-        return Failure;
     }
 
     /*
      * These functions are currently public for simplicity; in the long run
      * it may make sense to make at least some of them private.
      */
 
   public:
--- a/js/src/vm/RegExpObject.cpp
+++ b/js/src/vm/RegExpObject.cpp
@@ -400,17 +400,16 @@ RegExpShared::~RegExpShared()
 }
 
 void
 RegExpShared::reportYarrError(JSContext *cx, TokenStream *ts, ErrorCode error)
 {
     switch (error) {
       case JSC::Yarr::NoError:
         MOZ_ASSUME_NOT_REACHED("Called reportYarrError with value for no error");
-        return;
 #define COMPILE_EMSG(__code, __msg)                                                              \
       case JSC::Yarr::__code:                                                                    \
         if (ts)                                                                                  \
             ts->reportError(__msg);                                                              \
         else                                                                                     \
             JS_ReportErrorFlagsAndNumberUC(cx, JSREPORT_ERROR, js_GetErrorMessage, NULL, __msg); \
         return
       COMPILE_EMSG(PatternTooLarge, JSMSG_REGEXP_TOO_COMPLEX);
--- a/js/src/vm/Stack-inl.h
+++ b/js/src/vm/Stack-inl.h
@@ -606,17 +606,16 @@ AbstractFramePtr::isDebuggerFrame() cons
 {
     if (isStackFrame())
         return asStackFrame()->isDebuggerFrame();
 #ifdef JS_ION
     return asBaselineFrame()->isDebuggerFrame();
 #else
     MOZ_ASSUME_NOT_REACHED("Invalid frame");
 #endif
-    return false;
 }
 inline JSScript *
 AbstractFramePtr::script() const
 {
     if (isStackFrame())
         return asStackFrame()->script();
 #ifdef JS_ION
     return asBaselineFrame()->script();
--- a/js/src/vm/Stack.cpp
+++ b/js/src/vm/Stack.cpp
@@ -758,17 +758,16 @@ ScriptFrameIter::compartment() const
     switch (data_.state_) {
       case DONE:
         break;
       case SCRIPTED:
       case JIT:
         return data_.activations_.activation()->compartment();
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return NULL;
 }
 
 bool
 ScriptFrameIter::isFunctionFrame() const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -780,17 +779,16 @@ ScriptFrameIter::isFunctionFrame() const
         if (data_.ionFrames_.isBaselineJS())
             return data_.ionFrames_.isFunctionFrame();
         return ionInlineFrames_.isFunctionFrame();
 #else
         break;
 #endif
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return false;
 }
 
 bool
 ScriptFrameIter::isGlobalFrame() const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -802,17 +800,16 @@ ScriptFrameIter::isGlobalFrame() const
             return data_.ionFrames_.baselineFrame()->isGlobalFrame();
         JS_ASSERT(!script()->isForEval());
         return !script()->function();
 #else
         break;
 #endif
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return false;
 }
 
 bool
 ScriptFrameIter::isEvalFrame() const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -824,48 +821,45 @@ ScriptFrameIter::isEvalFrame() const
             return data_.ionFrames_.baselineFrame()->isEvalFrame();
         JS_ASSERT(!script()->isForEval());
         return false;
 #else
         break;
 #endif
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return false;
 }
 
 bool
 ScriptFrameIter::isNonEvalFunctionFrame() const
 {
     JS_ASSERT(!done());
     switch (data_.state_) {
       case DONE:
         break;
       case SCRIPTED:
         return interpFrame()->isNonEvalFunctionFrame();
       case JIT:
         return !isEvalFrame() && isFunctionFrame();
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return false;
 }
 
 bool
 ScriptFrameIter::isGeneratorFrame() const
 {
     switch (data_.state_) {
       case DONE:
         break;
       case SCRIPTED:
         return interpFrame()->isGeneratorFrame();
       case JIT:
         return false;
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return false;
 }
 
 bool
 ScriptFrameIter::isConstructing() const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -877,17 +871,16 @@ ScriptFrameIter::isConstructing() const
         return data_.ionFrames_.isConstructing();
 #else
         break;
 #endif        
       case SCRIPTED:
         return interpFrame()->isConstructing();
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return false;
 }
 
 AbstractFramePtr
 ScriptFrameIter::abstractFramePtr() const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -897,17 +890,16 @@ ScriptFrameIter::abstractFramePtr() cons
             return data_.ionFrames_.baselineFrame();
 #endif
         break;
       case SCRIPTED:
         JS_ASSERT(interpFrame());
         return AbstractFramePtr(interpFrame());
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return NullFramePtr();
 }
 
 void
 ScriptFrameIter::updatePcQuadratic()
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -968,17 +960,16 @@ ScriptFrameIter::callee() const
             return data_.ionFrames_.callee();
         JS_ASSERT(data_.ionFrames_.isOptimizedJS());
         return ionInlineFrames_.callee();
 #else
         break;
 #endif
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return NULL;
 }
 
 Value
 ScriptFrameIter::calleev() const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -988,17 +979,16 @@ ScriptFrameIter::calleev() const
       case JIT:
 #ifdef JS_ION
         return ObjectValue(*callee());
 #else
         break;
 #endif
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return Value();
 }
 
 unsigned
 ScriptFrameIter::numActualArgs() const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -1012,17 +1002,16 @@ ScriptFrameIter::numActualArgs() const
 
         JS_ASSERT(data_.ionFrames_.isBaselineJS());
         return data_.ionFrames_.numActualArgs();
 #else
         break;
 #endif
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return 0;
 }
 
 Value
 ScriptFrameIter::unaliasedActual(unsigned i, MaybeCheckAliasing checkAliasing) const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -1032,17 +1021,16 @@ ScriptFrameIter::unaliasedActual(unsigne
 #ifdef JS_ION
         JS_ASSERT(data_.ionFrames_.isBaselineJS());
         return data_.ionFrames_.baselineFrame()->unaliasedActual(i, checkAliasing);
 #else
         break;
 #endif
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return NullValue();
 }
 
 JSObject *
 ScriptFrameIter::scopeChain() const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -1053,17 +1041,16 @@ ScriptFrameIter::scopeChain() const
         return data_.ionFrames_.baselineFrame()->scopeChain();
 #else
         break;
 #endif
       case SCRIPTED:
         return interpFrame()->scopeChain();
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return NULL;
 }
 
 CallObject &
 ScriptFrameIter::callObj() const
 {
     JS_ASSERT(callee()->isHeavyweight());
 
     JSObject *pobj = scopeChain();
@@ -1084,17 +1071,16 @@ ScriptFrameIter::hasArgsObj() const
 #ifdef JS_ION
         JS_ASSERT(data_.ionFrames_.isBaselineJS());
         return data_.ionFrames_.baselineFrame()->hasArgsObj();
 #else
         break;
 #endif
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return false;
 }
 
 ArgumentsObject &
 ScriptFrameIter::argsObj() const
 {
     JS_ASSERT(hasArgsObj());
 
     switch (data_.state_) {
@@ -1106,17 +1092,16 @@ ScriptFrameIter::argsObj() const
         return data_.ionFrames_.baselineFrame()->argsObj();
 #else
         break;
 #endif
       case SCRIPTED:
         return interpFrame()->argsObj();
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return interpFrame()->argsObj();
 }
 
 bool
 ScriptFrameIter::computeThis() const
 {
     JS_ASSERT(!done());
     if (!isIon()) {
         JS_ASSERT(data_.cx_);
@@ -1138,17 +1123,16 @@ ScriptFrameIter::thisv() const
         return data_.ionFrames_.baselineFrame()->thisValue();
 #else
         break;
 #endif
       case SCRIPTED:
         return interpFrame()->thisValue();
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return NullValue();
 }
 
 Value
 ScriptFrameIter::returnValue() const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -1157,17 +1141,16 @@ ScriptFrameIter::returnValue() const
         if (data_.ionFrames_.isBaselineJS())
             return *data_.ionFrames_.baselineFrame()->returnValue();
 #endif
         break;
       case SCRIPTED:
         return interpFrame()->returnValue();
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return NullValue();
 }
 
 void
 ScriptFrameIter::setReturnValue(const Value &v)
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -1202,17 +1185,16 @@ ScriptFrameIter::numFrameSlots() const
         break;
 #endif
       }
       case SCRIPTED:
         JS_ASSERT(data_.interpFrames_.sp() >= interpFrame()->base());
         return data_.interpFrames_.sp() - interpFrame()->base();
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return 0;
 }
 
 Value
 ScriptFrameIter::frameSlotValue(size_t index) const
 {
     switch (data_.state_) {
       case DONE:
         break;
@@ -1228,17 +1210,16 @@ ScriptFrameIter::frameSlotValue(size_t i
         return *data_.ionFrames_.baselineFrame()->valueSlot(index);
 #else
         break;
 #endif
       case SCRIPTED:
           return interpFrame()->base()[index];
     }
     MOZ_ASSUME_NOT_REACHED("Unexpected state");
-    return NullValue();
 }
 
 #if defined(_MSC_VER)
 # pragma optimize("", on)
 #endif
 
 /*****************************************************************************/
 
@@ -1257,17 +1238,16 @@ bool
 AbstractFramePtr::hasPushedSPSFrame() const
 {
     if (isStackFrame())
         return asStackFrame()->hasPushedSPSFrame();
 #ifdef JS_ION
     return asBaselineFrame()->hasPushedSPSFrame();
 #else
     MOZ_ASSUME_NOT_REACHED("Invalid frame");
-    return false;
 #endif
 }
 
 #ifdef DEBUG
 void
 js::CheckLocalUnaliased(MaybeCheckAliasing checkAliasing, JSScript *script,
                         StaticBlockObject *maybeBlock, unsigned i)
 {
--- a/js/xpconnect/src/XPCJSRuntime.cpp
+++ b/js/xpconnect/src/XPCJSRuntime.cpp
@@ -288,17 +288,17 @@ bool CompartmentPrivate::TryParseLocatio
             return true;
 
         // Current chain item couldn't be parsed.
         // Don't forget whitespace in " -> "
         idx -= 1;
         // Strip current item and continue
         chain = Substring(chain, 0, idx);
     }
-    MOZ_NOT_REACHED("Chain parser loop does not terminate");
+    MOZ_ASSUME_NOT_REACHED("Chain parser loop does not terminate");
 }
 
 bool CompartmentPrivate::TryParseLocationURICandidate(const nsACString& uristr)
 {
     nsCOMPtr<nsIURI> uri;
     if (NS_FAILED(NS_NewURI(getter_AddRefs(uri), uristr)))
         return false;
 
--- a/js/xpconnect/wrappers/WrapperFactory.cpp
+++ b/js/xpconnect/wrappers/WrapperFactory.cpp
@@ -618,17 +618,17 @@ WrapperFactory::WrapForSameCompartmentXr
 
     // Select the appropriate proxy handler.
     Wrapper *wrapper = NULL;
     if (type == XrayForWrappedNative)
         wrapper = &SCPermissiveXrayXPCWN::singleton;
     else if (type == XrayForDOMObject)
         wrapper = &SCPermissiveXrayDOM::singleton;
     else
-        MOZ_NOT_REACHED("Bad Xray type");
+        MOZ_ASSUME_NOT_REACHED("Bad Xray type");
 
     // Make the Xray.
     JSObject *parent = JS_GetGlobalForObject(cx, obj);
     return Wrapper::New(cx, obj, NULL, parent, wrapper);
 }
 
 
 bool
--- a/js/xpconnect/wrappers/XrayWrapper.cpp
+++ b/js/xpconnect/wrappers/XrayWrapper.cpp
@@ -143,22 +143,22 @@ public:
     // properties.
     virtual bool resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper,
                                     HandleObject wrapper, HandleObject holder,
                                     HandleId id, JSPropertyDescriptor *desc, unsigned flags);
 
     static bool call(JSContext *cx, HandleObject wrapper,
                      const JS::CallArgs &args, js::Wrapper& baseInstance)
     {
-        MOZ_NOT_REACHED("Call trap currently implemented only for XPCWNs");
+        MOZ_ASSUME_NOT_REACHED("Call trap currently implemented only for XPCWNs");
     }
     static bool construct(JSContext *cx, HandleObject wrapper,
                           const JS::CallArgs &args, js::Wrapper& baseInstance)
     {
-        MOZ_NOT_REACHED("Call trap currently implemented only for XPCWNs");
+        MOZ_ASSUME_NOT_REACHED("Call trap currently implemented only for XPCWNs");
     }
 
     virtual void preserveWrapper(JSObject *target) = 0;
 
     JSObject* getExpandoObject(JSContext *cx, HandleObject target,
                                HandleObject consumer);
     JSObject* ensureExpandoObject(JSContext *cx, HandleObject wrapper,
                                   HandleObject target);
--- a/layout/base/nsCSSFrameConstructor.cpp
+++ b/layout/base/nsCSSFrameConstructor.cpp
@@ -9758,17 +9758,16 @@ nsCSSFrameConstructor::CreateNeededTable
         break;
       case eTypeTable:
         // Either colgroup or rowgroup, depending on what we're grouping.
         wrapperType = groupingParentType == eTypeColGroup ?
           eTypeColGroup : eTypeRowGroup;
         break;
       default:
         MOZ_CRASH("Colgroups should be suppresing non-col child items");
-        break;
     }
 
     const PseudoParentData& pseudoData = sPseudoParentData[wrapperType];
     nsIAtom* pseudoType = *pseudoData.mPseudoType;
     nsStyleContext* parentStyle = aParentFrame->StyleContext();
     nsIContent* parentContent = aParentFrame->GetContent();
 
     if (pseudoType == nsCSSAnonBoxes::table &&
--- a/layout/generic/nsFlexContainerFrame.cpp
+++ b/layout/generic/nsFlexContainerFrame.cpp
@@ -1896,18 +1896,16 @@ FlexboxAxisTracker::FlexboxAxisTracker(n
     case NS_STYLE_FLEX_DIRECTION_COLUMN:
       mMainAxis = blockDimension;
       break;
     case NS_STYLE_FLEX_DIRECTION_COLUMN_REVERSE:
       mMainAxis = GetReverseAxis(blockDimension);
       break;
     default:
       MOZ_CRASH("Unexpected computed value for 'flex-flow' property");
-      mMainAxis = inlineDimension;
-      break;
   }
 
   // Determine cross axis:
   // (This is set up so that a bogus |flexDirection| value will
   // give us blockDimension.
   if (flexDirection == NS_STYLE_FLEX_DIRECTION_COLUMN ||
       flexDirection == NS_STYLE_FLEX_DIRECTION_COLUMN_REVERSE) {
     mCrossAxis = inlineDimension;
--- a/modules/libjar/nsJARProtocolHandler.cpp
+++ b/modules/libjar/nsJARProtocolHandler.cpp
@@ -71,17 +71,16 @@ nsJARProtocolHandler::RemoteOpenFileInPr
                                            nsIRemoteOpenFileListener *aListener)
 {
     MOZ_ASSERT(NS_IsMainThread());
     MOZ_ASSERT(aRemoteFile);
     MOZ_ASSERT(aListener);
 
     if (IsMainProcess()) {
         MOZ_CRASH("Shouldn't be called in the main process!");
-        return false;
     }
 
     RemoteFileListenerArray *listeners;
     if (mRemoteFileListeners.Get(aRemoteFile, &listeners)) {
         listeners->AppendElement(aListener);
         return true;
     }
 
@@ -95,17 +94,16 @@ void
 nsJARProtocolHandler::RemoteOpenFileComplete(nsIHashable *aRemoteFile,
                                              nsresult aStatus)
 {
     MOZ_ASSERT(NS_IsMainThread());
     MOZ_ASSERT(aRemoteFile);
 
     if (IsMainProcess()) {
         MOZ_CRASH("Shouldn't be called in the main process!");
-        return;
     }
 
     RemoteFileListenerArray *tempListeners;
     if (!mRemoteFileListeners.Get(aRemoteFile, &tempListeners)) {
         return;
     }
 
     // Save the listeners in a stack array. The call to Remove() below will
--- a/modules/libpref/src/prefapi.cpp
+++ b/modules/libpref/src/prefapi.cpp
@@ -289,17 +289,16 @@ SetPrefValue(const char* aPrefName, cons
     case dom::PrefValue::Tint32_t:
         return PREF_SetIntPref(aPrefName, aValue.get_int32_t(),
                                setDefault);
     case dom::PrefValue::Tbool:
         return PREF_SetBoolPref(aPrefName, aValue.get_bool(),
                                 setDefault);
     default:
         MOZ_CRASH();
-        return NS_ERROR_FAILURE;
     }
 }
 
 nsresult
 pref_SetPref(const dom::PrefSetting& aPref)
 {
     const char* prefName = aPref.name().get();
     const dom::MaybePrefValue& defaultValue = aPref.defaultValue();
--- a/netwerk/ipc/RemoteOpenFileChild.cpp
+++ b/netwerk/ipc/RemoteOpenFileChild.cpp
@@ -199,20 +199,17 @@ void
 RemoteOpenFileChild::OnCachedFileDescriptor(const nsAString& aPath,
                                             const FileDescriptor& aFD)
 {
 #ifdef DEBUG
   if (!aPath.IsEmpty()) {
     MOZ_ASSERT(mFile);
 
     nsString path;
-    if (NS_FAILED(mFile->GetPath(path))) {
-      MOZ_CRASH("Couldn't get path from file!");
-    }
-
+    MOZ_ASSERT(NS_SUCCEEDED(mFile->GetPath(path)));
     MOZ_ASSERT(path == aPath, "Paths don't match!");
   }
 #endif
 
   HandleFileDescriptorAndNotifyListener(aFD, /* aFromRecvDelete */ false);
 }
 
 void
--- a/security/manager/ssl/src/ScopedNSSTypes.h
+++ b/security/manager/ssl/src/ScopedNSSTypes.h
@@ -48,17 +48,16 @@ uint8_t_ptr_cast(const char * p) { retur
 
 // IMPORTANT: This must be called immediately after the function that set the
 // error code. Prefer using MapSECStatus to this.
 inline nsresult
 PRErrorCode_to_nsresult(PRErrorCode error)
 {
   if (!error) {
     MOZ_CRASH("Function failed without calling PR_GetError");
-    return NS_ERROR_UNEXPECTED;
   }
 
   // From NSSErrorsService::GetXPCOMFromNSSError
   // XXX Don't make up nsresults, it's supposed to be an enum (bug 778113)
   return (nsresult)NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY,
                                              -1 * error);
 }
 
--- a/security/manager/ssl/src/nsUsageArrayHelper.cpp
+++ b/security/manager/ssl/src/nsUsageArrayHelper.cpp
@@ -64,17 +64,16 @@ nsUsageArrayHelper::check(uint32_t previ
                           SECCertificateUsage aCertUsage,
                           PRTime time,
                           CertVerifier::Flags flags,
                           uint32_t &aCounter,
                           PRUnichar **outUsages)
 {
   if (!aCertUsage) {
     MOZ_CRASH("caller should have supplied non-zero aCertUsage");
-    return nsIX509Cert::NOT_VERIFIED_UNKNOWN;
   }
 
   if (isFatalError(previousCheckResult)) {
       return previousCheckResult;
   }
 
   nsAutoCString typestr;
   switch (aCertUsage) {
@@ -111,17 +110,16 @@ nsUsageArrayHelper::check(uint32_t previ
   case certificateUsageStatusResponder:
     typestr = "VerifyStatusResponder";
     break;
   case certificateUsageAnyCA:
     typestr = "VerifyAnyCA";
     break;
   default:
     MOZ_CRASH("unknown cert usage passed to check()");
-    return nsIX509Cert::NOT_VERIFIED_UNKNOWN;
   }
 
   SECStatus rv = certVerifier->VerifyCert(mCert, aCertUsage,
                          time, nullptr /*XXX:wincx*/, flags);
 
   if (rv == SECSuccess) {
     typestr.Append(suffix);
     nsAutoString verifyDesc;
--- a/toolkit/components/telemetry/Telemetry.cpp
+++ b/toolkit/components/telemetry/Telemetry.cpp
@@ -667,17 +667,16 @@ JSHistogram_Snapshot(JSContext *cx, unsi
   case REFLECT_CORRUPT:
     JS_ReportError(cx, "Histogram is corrupt");
     return JS_FALSE;
   case REFLECT_OK:
     JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(snapshot));
     return JS_TRUE;
   default:
     MOZ_CRASH("unhandled reflection status");
-    return JS_FALSE;
   }
 }
 
 JSBool
 JSHistogram_Clear(JSContext *cx, unsigned argc, JS::Value *vp)
 {
   JSObject *obj = JS_THIS_OBJECT(cx, vp);
   if (!obj) {
--- a/toolkit/identity/IdentityCryptoService.cpp
+++ b/toolkit/identity/IdentityCryptoService.cpp
@@ -352,21 +352,19 @@ GenerateKeyPair(PK11SlotInfo * slot,
                                      PR_FALSE /*isPerm*/,
                                      PR_TRUE /*isSensitive*/,
                                      NULL /*&pwdata*/);
   if (!*privateKey) {
     MOZ_ASSERT(!*publicKey);
     return PRErrorCode_to_nsresult(PR_GetError());
   }
   if (!*publicKey) {
-	SECKEY_DestroyPrivateKey(*privateKey);
-	*privateKey = NULL;
-    MOZ_CRASH("PK11_GnerateKeyPair returned private key without public "
-                    "key");
-    return NS_ERROR_UNEXPECTED;
+	  SECKEY_DestroyPrivateKey(*privateKey);
+	  *privateKey = NULL;
+    MOZ_CRASH("PK11_GnerateKeyPair returned private key without public key");
   }
 
   return NS_OK;
 }
 
 
 MOZ_WARN_UNUSED_RESULT nsresult
 GenerateRSAKeyPair(PK11SlotInfo * slot,
@@ -464,17 +462,16 @@ KeyGenRunnable::Run()
         case rsaKey:
           mRv = GenerateRSAKeyPair(slot, &privk, &pubk);
           break;
         case dsaKey:
           mRv = GenerateDSAKeyPair(slot, &privk, &pubk);
           break;
         default:
           MOZ_CRASH("unknown key type");
-          mRv = NS_ERROR_UNEXPECTED;
         }
 
         PK11_FreeSlot(slot);
 
         if (NS_SUCCEEDED(mRv)) {
           MOZ_ASSERT(privk);
           MOZ_ASSERT(pubk);
 		  // mKeyPair will take over ownership of privk and pubk
--- a/widget/gonk/nsWindow.cpp
+++ b/widget/gonk/nsWindow.cpp
@@ -170,17 +170,16 @@ nsWindow::nsWindow()
             break;
         case nsIScreen::ROTATION_180_DEG:
             sRotationMatrix.Translate(gfxPoint(gScreenBounds.width,
                                                gScreenBounds.height));
             sRotationMatrix.Rotate(M_PI);
             break;
         default:
             MOZ_CRASH("Unknown rotation");
-            break;
         }
         sVirtualBounds = gScreenBounds;
 
         sScreenInitialized = true;
 
         nsAppShell::NotifyScreenInitialized();
 
         // This is a hack to force initialization of the compositor
@@ -843,17 +842,16 @@ ComputeOrientation(uint32_t aRotation, c
     case nsIScreen::ROTATION_180_DEG:
         return (naturallyPortrait ? eScreenOrientation_PortraitSecondary : 
                 eScreenOrientation_LandscapeSecondary);
     case nsIScreen::ROTATION_270_DEG:
         return (naturallyPortrait ? eScreenOrientation_LandscapeSecondary : 
                 eScreenOrientation_PortraitSecondary);
     default:
         MOZ_CRASH("Gonk screen must always have a known rotation");
-        return eScreenOrientation_None;
     }
 }
 
 /*static*/ uint32_t
 nsScreenGonk::GetRotation()
 {
     return sScreenRotation;
 }
--- a/widget/gtk2/nsGtkKeyUtils.cpp
+++ b/widget/gtk2/nsGtkKeyUtils.cpp
@@ -492,17 +492,16 @@ KeymapWrapper::InitBySystemSettings()
             case INDEX_LEVEL3:
                 modifier = LEVEL3;
                 break;
             case INDEX_LEVEL5:
                 modifier = LEVEL5;
                 break;
             default:
                 MOZ_CRASH("All indexes must be handled here");
-                break;
         }
         for (uint32_t j = 0; j < ArrayLength(mod); j++) {
             if (modifier == mod[j]) {
                 mModifierMasks[i] |= 1 << (j + 3);
             }
         }
     }
 
--- a/widget/os2/nsWindow.cpp
+++ b/widget/os2/nsWindow.cpp
@@ -2522,17 +2522,16 @@ PlatformToNSAttr(uint8_t aAttr)
     case CP_ATTR_TARGET_NOTCONVERTED:
       return NS_TEXTRANGE_SELECTEDRAWTEXT;
 
     case CP_ATTR_TARGET_CONVERTED:
       return NS_TEXTRANGE_SELECTEDCONVERTEDTEXT;
 
     default:
       MOZ_CRASH("unknown attribute");
-      return NS_TEXTRANGE_RAWINPUT;
   }
 }
 
 bool nsWindow::ImeConversionString(HIMI himi)
 {
   ULONG ulBufLen;
   // Get a buffer size
   ulBufLen = 0;
--- a/widget/windows/KeyboardLayout.cpp
+++ b/widget/windows/KeyboardLayout.cpp
@@ -493,17 +493,16 @@ NativeKey::NativeKey(nsWindowBase* aWidg
             break;
           case VK_SHIFT:
             // Neither left shift nor right shift is not an extended key,
             // let's use VK_LSHIFT for invalid scan code.
             mVirtualKeyCode = VK_LSHIFT;
             break;
           default:
             MOZ_CRASH("Unsupported mOriginalVirtualKeyCode");
-            break;
         }
         break;
       }
 
       NS_ASSERTION(!mVirtualKeyCode,
                    "mVirtualKeyCode has been computed already");
 
       // Otherwise, compute the virtual keycode with MapVirtualKeyEx().
@@ -530,34 +529,32 @@ NativeKey::NativeKey(nsWindowBase* aWidg
           if (mVirtualKeyCode != VK_LSHIFT && mVirtualKeyCode != VK_RSHIFT) {
             // Neither left shift nor right shift is not an extended key,
             // let's use VK_LSHIFT for invalid scan code.
             mVirtualKeyCode = VK_LSHIFT;
           }
           break;
         default:
           MOZ_CRASH("Unsupported mOriginalVirtualKeyCode");
-          break;
       }
       break;
     }
     case WM_CHAR:
     case WM_UNICHAR:
     case WM_SYSCHAR:
       // We cannot compute the virtual key code from WM_CHAR message on WinXP
       // if it's caused by an extended key.
       if (!canComputeVirtualKeyCodeFromScanCode) {
         break;
       }
       mVirtualKeyCode = mOriginalVirtualKeyCode =
         ComputeVirtualKeyCodeFromScanCodeEx();
       break;
     default:
       MOZ_CRASH("Unsupported message");
-      break;
   }
 
   if (!mVirtualKeyCode) {
     mVirtualKeyCode = mOriginalVirtualKeyCode;
   }
 
   mDOMKeyCode =
     keyboardLayout->ConvertNativeKeyCodeToDOMKeyCode(mOriginalVirtualKeyCode);
@@ -733,17 +730,16 @@ NativeKey::InitKeyEvent(nsKeyEvent& aKey
       // state of IME.
       aKeyEvent.mFlags.mDefaultPrevented =
         (mOriginalVirtualKeyCode == VK_MENU && mMsg.message != WM_SYSKEYUP);
       break;
     case NS_KEY_PRESS:
       break;
     default:
       MOZ_CRASH("Invalid event message");
-      break;
   }
 
   aKeyEvent.mKeyNameIndex = mKeyNameIndex;
   aKeyEvent.location = GetKeyLocation();
   aModKeyState.InitInputEvent(aKeyEvent);
 }
 
 bool
@@ -1065,17 +1061,16 @@ NativeKey::RemoveFollowingCharMessage() 
   if (mIsFakeCharMsg) {
     return mCharMsg;
   }
 
   MSG msg;
   if (!WinUtils::GetMessage(&msg, mMsg.hwnd,
                             mCharMsg.message, mCharMsg.message)) {
     MOZ_CRASH("We lost the following char message");
-    return mCharMsg;
   }
 
   MOZ_ASSERT(mCharMsg.message == msg.message &&
              mCharMsg.wParam == msg.wParam &&
              mCharMsg.lParam == msg.lParam);
 
   return mCharMsg;
 }
--- a/widget/windows/nsTextStore.cpp
+++ b/widget/windows/nsTextStore.cpp
@@ -1020,17 +1020,16 @@ nsTextStore::FlushPendingActions()
           static_cast<uint32_t>(action.mSelectionStart);
         selectionSet.mLength =
           static_cast<uint32_t>(action.mSelectionLength);
         selectionSet.mReversed = action.mSelectionReversed;
         break;
       }
       default:
         MOZ_CRASH("unexpected action type");
-        break;
     }
 
     if (mWidget && !mWidget->Destroyed()) {
       continue;
     }
 
     mComposition.EnsureLayoutChangeTimerStopped();
 
--- a/widget/xpwidgets/WidgetUtils.cpp
+++ b/widget/xpwidgets/WidgetUtils.cpp
@@ -26,14 +26,13 @@ ComputeTransformForRotation(const nsIntR
         transform.Rotate(M_PI);
         break;
     case ROTATION_270:
         transform.Translate(gfxPoint(0, aBounds.height));
         transform.Rotate(M_PI * 3 / 2);
         break;
     default:
         MOZ_CRASH("Unknown rotation");
-        break;
     }
     return transform;
 }
 
 } // namespace mozilla
--- a/xpcom/ds/nsAtomTable.cpp
+++ b/xpcom/ds/nsAtomTable.cpp
@@ -479,17 +479,16 @@ NS_SizeOfAtomTablesIncludingThis(MallocS
 }
 
 #define ATOM_HASHTABLE_INITIAL_SIZE  4096
 
 static void HandleOOM()
 {
   fputs("Out of memory allocating atom hashtable.\n", stderr);
   MOZ_CRASH();
-  MOZ_CRASH();
 }
 
 static inline void
 EnsureTableExists()
 {
   if (!gAtomTable.ops &&
       !PL_DHashTableInit(&gAtomTable, &AtomTableOps, 0,
                          sizeof(AtomTableEntry), ATOM_HASHTABLE_INITIAL_SIZE)) {
--- a/xpcom/glue/nsISupportsImpl.h
+++ b/xpcom/glue/nsISupportsImpl.h
@@ -62,17 +62,17 @@ private:
 
 #define NS_DECL_OWNINGTHREAD            nsAutoOwningThread _mOwningThread;
 #define NS_ASSERT_OWNINGTHREAD(_class) \
   NS_CheckThreadSafe(_mOwningThread.GetThread(), #_class " not thread-safe")
 #define NS_ASSERT_OWNINGTHREAD_AND_NOT_CCTHREAD(_class) \
   do { \
     if (NS_IsCycleCollectorThread()) { \
       MOZ_CRASH("Changing refcount of " #_class " object during Traverse is " \
-                      "not permitted!"); \
+                "not permitted!"); \
     } \
     else { \
       NS_ASSERT_OWNINGTHREAD(_class); \
     } \
   } while (0)
 
 #else // !DEBUG
 
--- a/xpcom/glue/nsTArray.h
+++ b/xpcom/glue/nsTArray.h
@@ -260,17 +260,16 @@ struct nsTArrayInfallibleAllocator : nsT
   static void SizeTooBig() {
     HandleOOM();
   }
 
 private:
   static void HandleOOM() {
     fputs("Out of memory allocating nsTArray buffer.\n", stderr);
     MOZ_CRASH();
-    MOZ_CRASH();
   }
 };
 
 #endif
 
 // nsTArray_base stores elements into the space allocated beyond
 // sizeof(*this).  This is done to minimize the size of the nsTArray
 // object when it is empty.