diff --git a/src/compiler_llvm/compiler_llvm.cc b/src/compiler_llvm/compiler_llvm.cc
index f647c8b..b81bfdd 100644
--- a/src/compiler_llvm/compiler_llvm.cc
+++ b/src/compiler_llvm/compiler_llvm.cc
@@ -158,64 +158,7 @@
 #elif defined(ART_USE_QUICK_COMPILER)
   std::string methodName(PrettyMethod(oat_compilation_unit->GetDexMethodIndex(),
                                       *oat_compilation_unit->GetDexFile()));
-  if ((methodName.find("gdata2.AndroidGDataClient.createAndExecuteMethod") != std::string::npos)
-      || (methodName.find("hG.a") != std::string::npos)
-      || (methodName.find("hT.a(hV, java.lang.String, java.lang.String, java") != std::string::npos)
-      || (methodName.find("AndroidHttpTransport.exchange") != std::string::npos)
-      || (methodName.find("javax.crypto.Cipher.getCipher") != std::string::npos)
-      || (methodName.find("libcore.io.IoBridge.available") != std::string::npos)
-      || (methodName.find("gov.nist.javax.sip.message.SIPMessage.computeContentLength") != std::string::npos)
-      || (methodName.find("gov.nist.javax.sip.message.SIPMessage.encode") != std::string::npos)
-      || (methodName.find("android.appwidget.AppWidgetHostView.updateAppWidget") != std::string::npos)
-      || (methodName.find("android.content.SyncStorageEngine.readAccountInfoLocked") != std::string::npos)
-      || (methodName.find("android.view.AccessibilityInteractionController.findAccessibilityNodeInfosByTextUiThread") != std::string::npos)
-      || (methodName.find("android.webkit.BrowserFrame.downloadStart") != std::string::npos)
-      || (methodName.find("com.android.internal.os.ZygoteConnection.handleChildProc") != std::string::npos)
-      || (methodName.find("com.android.internal.widget.LockPatternUtils.passwordToHash") != std::string::npos)
-      || (methodName.find("com.android.internal.os.ZygoteConnection.runOnce") != std::string::npos)
-      || (methodName.find("com.google.android.gles_jni.GLImpl.allowIndirectBuffers") != std::string::npos)
-      || (methodName.find("com.google.android.mms.util.DrmConvertSession.convert") != std::string::npos)
-      || (methodName.find("com.android.server.BackupManagerService$PerformFullRestoreTask.readAppManifest") != std::string::npos)
-      || (methodName.find("com.android.server.BackupManagerService.bindToAgentSynchronous") != std::string::npos)
-      || (methodName.find("org.apache.xalan.templates.ElemElement.execute") != std::string::npos)
-      || (methodName.find("com.android.server.am.ActivityManagerService.getPackageForIntentSender") != std::string::npos)
-      || (methodName.find("com.android.server.am.ActivityManagerService.startNextMatchingActivity") != std::string::npos)
-      || (methodName.find("com.android.server.wm.WindowManagerService.viewServerWindowCommand") != std::string::npos)
-      || (methodName.find("org.apache.xml.serializer.OutputPropertiesFactory.getDefaultMethodProperties") != std::string::npos)
-      // APK
-      || (methodName.find("org.codehaus.jackson.map.ser.std.ObjectArraySerializer") != std::string::npos)
-      || (methodName.find("com.android.providers.downloads.DrmConvertSession.convert") != std::string::npos)
-      || (methodName.find("com.android.providers.downloads.DownloadThread.run") != std::string::npos)
-      || (methodName.find("com.android.calendar.AllInOneActivity.parseViewAction") != std::string::npos)
-      || (methodName.find("com.android.vcard.VCardEntryCommitter.pushIntoContentResolver") != std::string::npos)
-      || (methodName.find("com.google.android.apps.books.model.VolumeMetadata.earliestPossibleSegmentIndexForPosition") != std::string::npos)
-      || (methodName.find("com.google.android.auth.GoogleAuthSession.authenticate") != std::string::npos)
-      || (methodName.find("com.google.android.syncadapters.bookmarks.BookmarksSyncAdapter") != std::string::npos)
-      || (methodName.find("com.google.analytics.tracking.android.GoogleAnalytics.getTracker") != std::string::npos)
-      || (methodName.find("com.google.apps") != std::string::npos)
-      || (methodName.find("com.android.email.MessagingController.processPendingDeletesSynchronous") != std::string::npos)
-      || (methodName.find("com.google.android.gm.provider.MailEngine.getHttpClient") != std::string::npos)
-      || (methodName.find("com.google.android.gms.auth.login.GLSUser") != std::string::npos)
-      || (methodName.find("com.google.android.backup.BackupTransportService$1.nextRestorePackage") != std::string::npos)
-      || (methodName.find("com.google.earth.EarthActivity$1.run") != std::string::npos)
-      || (methodName.find("com.google.android.gsf") != std::string::npos)
-      || (methodName.find("com.google.googlenav.api.c.a") != std::string::npos)
-      || (methodName.find("com.google.android.music.sync.api.MusicApiClientImpl") != std::string::npos)
-      || (methodName.find("com.google.android.music.utils.MusicTagUtils.getGenreName") != std::string::npos)
-      || (methodName.find("com.google.android.finsky.billing.challenge.ClientLoginApi$2.onErrorResponse") != std::string::npos)
-      || (methodName.find("com.google.android.apps.plus") != std::string::npos)
-      || (methodName.find("com.android.settings.ApnEditor") != std::string::npos)
-      || (methodName.find("com.samsung.dmexthandler.PhoneDataService$1.getIPv6SettingsValue") != std::string::npos)
-      || (methodName.find("com.samsung.syncservice.SyncmlService.getClientPwd") != std::string::npos)
-      || (methodName.find("com.android.systemui.statusbar.BaseStatusBar.applyLegacyRowBackground") != std::string::npos)
-      || (methodName.find("com.tf") != std::string::npos)
-      || (methodName.find("com.google.android.searchcommon.util.JavaNetHttpHelper.extractCharset") != std::string::npos)
-      || (methodName.find("com.google.android.youtube.core.utils.Util.getAppVersionCode") != std::string::npos)
-      || (methodName.find("com.google.android.ytremote.backend.deviceauth.DeviceAuthenticator.encryptToken") != std::string::npos)
-      || (methodName.find("com.google.android.maps.KeyHelper.getSignatureFingerprint") != std::string::npos)
-      || (methodName.find("com.android.commands.content.Content$Command.execute") != std::string::npos)
-      || (methodName.find("com.android.uiautomator.core.InteractionController.getSystemLongPressTime") != std::string::npos)
-      ) {
+  if (insn_set_ == kX86) {
     // Use iceland
     UniquePtr<MethodCompiler> method_compiler(
         new MethodCompiler(cunit.get(), compiler_, oat_compilation_unit));
diff --git a/src/compiler_llvm/gbc_expander.cc b/src/compiler_llvm/gbc_expander.cc
index 471a125..dbedb27 100644
--- a/src/compiler_llvm/gbc_expander.cc
+++ b/src/compiler_llvm/gbc_expander.cc
@@ -455,7 +455,7 @@
     // Set insert point to current basic block.
     irb_.SetInsertPoint(bb_iter);
 
-    old_basic_block_ = bb_iter;
+    old_basic_block_ = bb_iter->getUniquePredecessor();
 
     // Rewrite the basic block
     RewriteBasicBlock(bb_iter);
@@ -3599,6 +3599,15 @@
                              irb_.getJIntTy());
     }
 
+    //==- Exception --------------------------------------------------------==//
+    case IntrinsicHelper::CatchTargets: {
+      llvm::SwitchInst* si = llvm::dyn_cast<llvm::SwitchInst>(call_inst.getNextNode());
+      CHECK(si != NULL);
+      irb_.CreateBr(si->getDefaultDest());
+      si->eraseFromParent();
+      return call_inst.getArgOperand(0);
+    }
+
     //==- Unknown Cases ----------------------------------------------------==//
     case IntrinsicHelper::MaxIntrinsicId:
     case IntrinsicHelper::UnknownId:
