diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,24 @@
+## 9.0.0 (2019-09-06)
+
+* Support GHC 8.8
+* Update to LLVM 9.0
+  * Note that this is the last LLVM release that supports the current
+    OrcJIT APIs and `llvm-hs` does not yet have bindings for OrcJIT
+    V2. If you are interested in working on that please get in
+    touch. See https://github.com/llvm-hs/llvm-hs/issues/276 for more
+    details.
+  * The `sanitizeAddresses` field from `MachineCodeOptions` has been
+    removed following a change in LLVM.
+  * The `MemorySanitizer` now has two new options `kernel` and
+    `recover` matching the options in LLVM.
+
+
+## 8.1.0
+
+* Change `withHostTargetMachine` to accept the code model, relocation model,
+  and optimization level as arguments. The old behaviour is available
+  under the name `withHostTargetMachineDefault`.
+
 ## 8.0.0 (2019-03-10)
 
 * Upgrade to LLVM 8
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -41,10 +41,10 @@
 #endif
 
 llvmVersion :: Version
-llvmVersion = mkVersion [8,0]
+llvmVersion = mkVersion [9,0]
 
--- Ordered by decreasing specificty so we will prefer llvm-config-8.0
--- over llvm-config-8 over llvm-config.
+-- Ordered by decreasing specificty so we will prefer llvm-config-9.0
+-- over llvm-config-9 over llvm-config.
 llvmConfigNames :: [String]
 llvmConfigNames = reverse versionedConfigs ++ ["llvm-config"]
   where
diff --git a/llvm-hs.cabal b/llvm-hs.cabal
--- a/llvm-hs.cabal
+++ b/llvm-hs.cabal
@@ -1,5 +1,5 @@
 name: llvm-hs
-version: 8.0.0
+version: 9.0.0
 license: BSD3
 license-file: LICENSE
 author: Anthony Cowley, Stephen Diehl, Moritz Kiefer <moritz.kiefer@purelyfunctional.org>, Benjamin S. Scarlet
@@ -42,13 +42,13 @@
   test/debug_metadata_4.ll
   test/debug_metadata_5.ll
   test/main_return_38.c
-tested-with: GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.4
+tested-with: GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5
 extra-source-files: CHANGELOG.md
 
 source-repository head
   type: git
   location: git://github.com/llvm-hs/llvm-hs.git
-  branch: llvm-8
+  branch: llvm-9
 
 flag shared-llvm
   description: link against llvm shared rather than static library
@@ -79,7 +79,7 @@
     template-haskell >= 2.5.0.0,
     containers >= 0.4.2.1,
     array >= 0.4.0.0,
-    llvm-hs-pure == 8.0.*
+    llvm-hs-pure == 9.0.*
   hs-source-dirs: src
   default-extensions:
     NoImplicitPrelude
diff --git a/src/Control/Monad/Trans/AnyCont.hs b/src/Control/Monad/Trans/AnyCont.hs
--- a/src/Control/Monad/Trans/AnyCont.hs
+++ b/src/Control/Monad/Trans/AnyCont.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE
-  RankNTypes
+  CPP, RankNTypes
   #-}
 module Control.Monad.Trans.AnyCont where
 
@@ -21,7 +21,9 @@
 instance Monad m => Monad (AnyContT m) where
   AnyContT f >>= k = AnyContT $ f >>= unAnyContT . k
   return a = AnyContT $ return a
+#if !(MIN_VERSION_base(4,13,0))
   fail s = AnyContT (ContT (\_ -> Cont.fail s))
+#endif
 
 instance MonadFail m => MonadFail (AnyContT m) where
   fail s = AnyContT (ContT (\_ -> Fail.fail s))
diff --git a/src/LLVM/CodeModel.hs b/src/LLVM/CodeModel.hs
--- a/src/LLVM/CodeModel.hs
+++ b/src/LLVM/CodeModel.hs
@@ -1,4 +1,4 @@
--- | Relocations, used in specifying TargetMachine
+-- | Code model, used in specifying TargetMachine
 module LLVM.CodeModel where
 
 import LLVM.Prelude
diff --git a/src/LLVM/Internal/Attribute.hs b/src/LLVM/Internal/Attribute.hs
--- a/src/LLVM/Internal/Attribute.hs
+++ b/src/LLVM/Internal/Attribute.hs
@@ -55,6 +55,7 @@
       A.PA.Nest -> FFI.parameterAttributeKindNest
       A.PA.ReadOnly -> FFI.parameterAttributeKindReadOnly
       A.PA.ReadNone -> FFI.parameterAttributeKindReadNone
+      A.PA.ImmArg -> FFI.parameterAttributeKindImmArg
       A.PA.InAlloca -> FFI.parameterAttributeKindInAlloca
       A.PA.NonNull -> FFI.parameterAttributeKindNonNull
       A.PA.Returned -> FFI.parameterAttributeKindReturned
@@ -149,6 +150,7 @@
           [parameterAttributeKindP|Returned|] -> return A.PA.Returned
           [parameterAttributeKindP|SwiftSelf|] -> return A.PA.SwiftSelf
           [parameterAttributeKindP|SwiftError|] -> return A.PA.SwiftError
+          [parameterAttributeKindP|ImmArg|] -> return A.PA.ImmArg
           _ -> error $ "unhandled parameter attribute enum value: " ++ show enum
 
 instance DecodeM DecodeAST A.FA.FunctionAttribute FFI.FunctionAttribute where
diff --git a/src/LLVM/Internal/FFI/Attribute.h b/src/LLVM/Internal/FFI/Attribute.h
--- a/src/LLVM/Internal/FFI/Attribute.h
+++ b/src/LLVM/Internal/FFI/Attribute.h
@@ -16,6 +16,7 @@
 	macro(Convergent,F,F,T)                           \
 	macro(Dereferenceable,T,T,F)                      \
 	macro(DereferenceableOrNull,T,T,F)                \
+    macro(ImmArg,T,F,F)                               \
 	macro(InAlloca,T,F,F)                             \
 	macro(InReg,T,T,F)                                \
 	macro(InaccessibleMemOnly,F,F,T) \
@@ -30,11 +31,13 @@
 	macro(NoCapture,T,F,F)                            \
     macro(NoCfCheck,F,F,T)                            \
 	macro(NoDuplicate,F,F,T)                          \
+	macro(NoFree,F,F,T)                               \
 	macro(NoImplicitFloat,F,F,T)                      \
 	macro(NoInline,F,F,T)                             \
 	macro(NoRecurse,F,F,T)                            \
 	macro(NoRedZone,F,F,T)                            \
 	macro(NoReturn,F,F,T)                             \
+	macro(NoSync,F,F,T)                               \
 	macro(NoUnwind,F,F,T)                             \
 	macro(NonLazyBind,F,F,T)                          \
 	macro(NonNull,T,T,F)                              \
@@ -49,6 +52,7 @@
 	macro(SafeStack,F,F,T)                            \
 	macro(SanitizeAddress,F,F,T)                      \
     macro(SanitizeHWAddress,F,F,T)                    \
+    macro(SanitizeMemTag,F,F,T)                       \
 	macro(SanitizeMemory,F,F,T)                       \
 	macro(SanitizeThread,F,F,T)                       \
     macro(ShadowCallStack,F,F,T)                      \
@@ -63,6 +67,7 @@
 	macro(SwiftError,T,F,F)                           \
 	macro(SwiftSelf,T,F,F)                            \
 	macro(UWTable,F,F,T)                              \
+	macro(WillReturn,F,F,T)                           \
 	macro(WriteOnly,T,F,T)                            \
 	macro(ZExt,T,T,F)                                 \
 	macro(EndAttrKinds,F,F,F)
diff --git a/src/LLVM/Internal/FFI/MetadataC.cpp b/src/LLVM/Internal/FFI/MetadataC.cpp
--- a/src/LLVM/Internal/FFI/MetadataC.cpp
+++ b/src/LLVM/Internal/FFI/MetadataC.cpp
@@ -340,15 +340,15 @@
     return cast_or_null<MDTuple>(dt->getRawElements());
 }
 
-DITypeRef LLVM_Hs_DICompositeTypeGetVTableHolder(DICompositeType *dt) {
+DIType* LLVM_Hs_DICompositeTypeGetVTableHolder(DICompositeType *dt) {
     return dt->getVTableHolder();
 }
 
-DITypeRef LLVM_Hs_DICompositeTypeGetBaseType(DICompositeType *dt) {
+DIType* LLVM_Hs_DICompositeTypeGetBaseType(DICompositeType *dt) {
     return dt->getBaseType();
 }
 
-DITypeRef LLVM_Hs_DIDerivedTypeGetBaseType(DIDerivedType *dt) {
+DIType* LLVM_Hs_DIDerivedTypeGetBaseType(DIDerivedType *dt) {
     return dt->getBaseType();
 }
 
@@ -507,7 +507,7 @@
 }
 
 DIType* LLVM_Hs_DISubprogram_GetContainingType(DISubprogram* p) {
-    return p->getContainingType().resolve();
+    return p->getContainingType();
 }
 
 DICompileUnit* LLVM_Hs_DISubprogram_GetUnit(DISubprogram* p) {
@@ -588,7 +588,7 @@
 }
 
 DIType* LLVM_Hs_DIVariable_GetType(DIVariable* v) {
-    return v->getType().resolve();
+    return v->getType();
 }
 
 uint32_t LLVM_Hs_DIVariable_GetAlignInBits(DIVariable* v) {
@@ -745,7 +745,7 @@
 }
 
 DIType* LLVM_Hs_DITemplateParameter_GetType(DITemplateParameter* p) {
-    return p->getType().resolve();
+    return p->getType();
 }
 
 // DITemplateTypeParameter
@@ -821,7 +821,7 @@
 }
 
 DINode* LLVM_Hs_DIImportedEntity_GetEntity(DIImportedEntity* e) {
-    return e->getEntity().resolve();
+    return e->getEntity();
 }
 
 MDString* LLVM_Hs_DIImportedEntity_GetName(DIImportedEntity* e) {
@@ -877,7 +877,7 @@
 }
 
 DIType* LLVM_Hs_DIObjCProperty_GetType(DIObjCProperty* o) {
-    return o->getType().resolve();
+    return o->getType();
 }
 
 // DIModule
diff --git a/src/LLVM/Internal/FFI/OrcJITC.cpp b/src/LLVM/Internal/FFI/OrcJITC.cpp
--- a/src/LLVM/Internal/FFI/OrcJITC.cpp
+++ b/src/LLVM/Internal/FFI/OrcJITC.cpp
@@ -1,3 +1,7 @@
+// We ignore deprecations until we get around to updating to the new OrcJIT API
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+
 #include "llvm/Support/Error.h"
 
 #include "LLVM/Internal/FFI/ErrorHandling.hpp"
diff --git a/src/LLVM/Internal/FFI/PassManagerC.cpp b/src/LLVM/Internal/FFI/PassManagerC.cpp
--- a/src/LLVM/Internal/FFI/PassManagerC.cpp
+++ b/src/LLVM/Internal/FFI/PassManagerC.cpp
@@ -9,6 +9,7 @@
 #include "llvm/Transforms/IPO/PassManagerBuilder.h"
 #include "llvm/Transforms/Vectorize.h"
 #include "llvm/Transforms/Instrumentation.h"
+#include "llvm/Transforms/Instrumentation/AddressSanitizer.h"
 #include "llvm/Transforms/Instrumentation/BoundsChecking.h"
 #include "llvm/Transforms/Instrumentation/MemorySanitizer.h"
 #include "llvm/Transforms/Instrumentation/ThreadSanitizer.h"
@@ -146,14 +147,16 @@
 void LLVM_Hs_AddAddressSanitizerModulePass(
 	LLVMPassManagerRef PM
 ) {
-	unwrap(PM)->add(createAddressSanitizerModulePass());
+	unwrap(PM)->add(createModuleAddressSanitizerLegacyPassPass());
 }
 
 void LLVM_Hs_AddMemorySanitizerPass(
 	LLVMPassManagerRef PM,
-	LLVMBool trackOrigins
+	LLVMBool trackOrigins,
+    LLVMBool recover,
+    LLVMBool kernel
 ) {
-	unwrap(PM)->add(createMemorySanitizerLegacyPassPass(trackOrigins));
+	unwrap(PM)->add(createMemorySanitizerLegacyPassPass({trackOrigins, recover, kernel}));
 }
 
 void LLVM_Hs_AddThreadSanitizerPass(
diff --git a/src/LLVM/Internal/FFI/ShortByteString.hs b/src/LLVM/Internal/FFI/ShortByteString.hs
--- a/src/LLVM/Internal/FFI/ShortByteString.hs
+++ b/src/LLVM/Internal/FFI/ShortByteString.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 module LLVM.Internal.FFI.ShortByteString
   ( packCString
   , packCStringLen
@@ -5,8 +6,12 @@
   , useAsCStringLen
   ) where
 
-import LLVM.Prelude
 
+
+#if MIN_VERSION_bytestring(0,10,9)
+import Data.ByteString.Short
+#else
+import LLVM.Prelude
 import Data.ByteString.Internal (c_strlen)
 import Data.ByteString.Short.Internal
 import qualified Data.ByteString.Short as ByteString
@@ -14,6 +19,7 @@
 import Foreign.Marshal.Alloc
 import Foreign.Storable
 
+
 {-# INLINABLE packCString #-}
 packCString :: CString -> IO ShortByteString
 packCString cstr = do
@@ -42,3 +48,4 @@
      copyToPtr bs 0 buf (fromIntegral l)
      action (buf, l)
  where l = ByteString.length bs
+#endif
diff --git a/src/LLVM/Internal/FFI/Target.h b/src/LLVM/Internal/FFI/Target.h
--- a/src/LLVM/Internal/FFI/Target.h
+++ b/src/LLVM/Internal/FFI/Target.h
@@ -54,7 +54,6 @@
 } LLVM_Hs_TargetOptionFlag;
 
 #define LLVM_HS_FOR_EACH_MC_TARGET_OPTION_FLAG(macro)  \
-  macro(SanitizeAddress)                                \
   macro(MCRelaxAll)                                     \
   macro(MCNoExecStack)                                  \
   macro(MCFatalWarnings)                                \
diff --git a/src/LLVM/Internal/Operand.hs b/src/LLVM/Internal/Operand.hs
--- a/src/LLVM/Internal/Operand.hs
+++ b/src/LLVM/Internal/Operand.hs
@@ -78,7 +78,15 @@
           A.IntroducedVirtual -> 1 `shiftL` 18
           A.BitField -> 1 `shiftL` 19
           A.NoReturn -> 1 `shiftL` 20
-          A.MainSubprogram -> 1 `shiftL` 21
+          A.ArgumentNotModified -> 1 `shiftL` 21
+          A.TypePassByValue -> 1 `shiftL` 22
+          A.TypePassByReference -> 1 `shiftL` 23
+          A.EnumClass -> 1 `shiftL` 24
+          A.Thunk -> 1 `shiftL` 25
+          A.NonTrivial -> 1 `shiftL` 26
+          A.BigEndian -> 1 `shiftL` 27
+          A.LittleEndian -> 1 `shiftL` 28
+          A.AllCallsDescribed -> 1 `shiftL` 29
 
 instance Applicative m => DecodeM m [A.DIFlag] FFI.DIFlags where
   decodeM (FFI.DIFlags f) =
@@ -119,7 +127,15 @@
         , A.IntroducedVirtual
         , A.BitField
         , A.NoReturn
-        , A.MainSubprogram
+        , A.ArgumentNotModified
+        , A.TypePassByValue
+        , A.TypePassByReference
+        , A.EnumClass
+        , A.Thunk
+        , A.NonTrivial
+        , A.BigEndian
+        , A.LittleEndian
+        , A.AllCallsDescribed
         ]
 
 instance DecodeM DecodeAST A.Operand (Ptr FFI.Value) where
diff --git a/src/LLVM/Internal/Target.hs b/src/LLVM/Internal/Target.hs
--- a/src/LLVM/Internal/Target.hs
+++ b/src/LLVM/Internal/Target.hs
@@ -11,6 +11,7 @@
 
 import Control.Monad.AnyCont
 import Control.Monad.Catch
+import Control.Monad.Fail (MonadFail)
 import Control.Monad.IO.Class
 import Control.Monad.Trans.Except
 
@@ -124,7 +125,7 @@
 instance EncodeM e ByteString es => EncodeM e (Map CPUFeature Bool) es where
   encodeM = encodeM . ByteString.intercalate "," . map (\(CPUFeature f, enabled) -> (if enabled then "+" else "-") <> f) . Map.toList
 
-instance (Monad d, DecodeM d ByteString es) => DecodeM d (Map CPUFeature Bool) es where
+instance (MonadFail d, DecodeM d ByteString es) => DecodeM d (Map CPUFeature Bool) es where
   decodeM es = do
     s <- decodeM es
     let flag = do
@@ -203,7 +204,6 @@
 pokeMachineCodeOptions :: TO.MachineCodeOptions -> MCTargetOptions -> IO ()
 pokeMachineCodeOptions hOpts (MCTargetOptions cOpts) =
   mapM_ (\(c, ha) -> FFI.setMCTargetOptionFlag cOpts c =<< encodeM (ha hOpts)) [
-    (FFI.mcTargetOptionFlagSanitizeAddress, TO.sanitizeAddresses),
     (FFI.mcTargetOptionFlagMCRelaxAll, TO.relaxAll),
     (FFI.mcTargetOptionFlagMCNoExecStack, TO.noExecutableStack),
     (FFI.mcTargetOptionFlagMCFatalWarnings, TO.fatalWarnings),
@@ -279,8 +279,6 @@
 peekMachineCodeOptions :: MCTargetOptions -> IO TO.MachineCodeOptions
 peekMachineCodeOptions (MCTargetOptions tOpts) = do
   let gof = decodeM <=< FFI.getMCTargetOptionsFlag tOpts
-  sanitizeAddresses
-    <- gof FFI.mcTargetOptionFlagSanitizeAddress
   relaxAll
     <- gof FFI.mcTargetOptionFlagMCRelaxAll
   noExecutableStack
@@ -406,16 +404,37 @@
 initializeAllTargets :: IO ()
 initializeAllTargets = FFI.initializeAllTargets
 
--- | Bracket creation and destruction of a 'TargetMachine' configured for the host
-withHostTargetMachine :: (TargetMachine -> IO a) -> IO a
-withHostTargetMachine f = do
+-- | Bracket creation and destruction of a 'TargetMachine' configured for the host.
+--
+-- This function infers and fills the properties of the host machine
+-- (architecture, CPU type, operating system etc.) to construct
+-- a 'TargetMachine' value, but other parameters of 'TargetMachine' (the
+-- code model, relocation model, and optimization level) have to be
+-- provided by the user. For instance, for the JIT-compiled code that you
+-- want to dynamically load you probably want to use the 'Reloc.PIC'
+-- relocation model.
+withHostTargetMachine
+  :: Reloc.Model
+  -> CodeModel.Model
+  -> CodeGenOpt.Level
+  -> (TargetMachine -> IO a) -> IO a
+withHostTargetMachine relocModel codeModel codeGenOpt f = do
   initializeAllTargets
   triple <- getProcessTargetTriple
   cpu <- getHostCPUName
   features <- getHostCPUFeatures
   (target, _) <- lookupTarget Nothing triple
   withTargetOptions $ \options ->
-    withTargetMachine target triple cpu features options Reloc.Default CodeModel.Default CodeGenOpt.Default f
+    withTargetMachine target triple cpu features options relocModel codeModel codeGenOpt f
+
+-- | Like 'withHostTargetMachine', but assumes the default values for the
+-- relocation model, code model, and optimization level ('Reloc.Default',
+-- 'CodeModel.Default', 'CodeGenOpt.Default' respectively).
+--
+-- Note that the 'Reloc.Default' relocation model __is not__ suitable for
+-- JIT compilation; use 'withHostTargetMachine' and 'Reloc.PIC' instead.
+withHostTargetMachineDefault :: (TargetMachine -> IO a) -> IO a
+withHostTargetMachineDefault f = withHostTargetMachine Reloc.Default CodeModel.Default CodeGenOpt.Default f
 
 -- | <http://llvm.org/docs/doxygen/html/classllvm_1_1TargetLibraryInfo.html>
 newtype TargetLibraryInfo = TargetLibraryInfo (Ptr FFI.TargetLibraryInfo)
diff --git a/src/LLVM/Target.hs b/src/LLVM/Target.hs
--- a/src/LLVM/Target.hs
+++ b/src/LLVM/Target.hs
@@ -7,7 +7,7 @@
    Target, TargetMachine, TargetLowering,
    CPUFeature(..),
    withTargetOptions, peekTargetOptions, pokeTargetOptions,
-   withTargetMachine, withHostTargetMachine, targetMachineOptions,
+   withTargetMachine, withHostTargetMachine, withHostTargetMachineDefault, targetMachineOptions,
    getTargetLowering,
    getTargetMachineTriple, getDefaultTargetTriple, getProcessTargetTriple, getHostCPUName, getHostCPUFeatures,
    getTargetMachineDataLayout, initializeNativeTarget, initializeAllTargets,
diff --git a/src/LLVM/Target/Options.hs b/src/LLVM/Target/Options.hs
--- a/src/LLVM/Target/Options.hs
+++ b/src/LLVM/Target/Options.hs
@@ -101,7 +101,6 @@
 
 -- | <http://llvm.org/doxygen/classllvm_1_1MCTargetOptions.html>
 data MachineCodeOptions = MachineCodeOptions {
-  sanitizeAddresses :: Bool,
   relaxAll :: Bool,
   noExecutableStack :: Bool,
   fatalWarnings :: Bool,
diff --git a/src/LLVM/Transforms.hs b/src/LLVM/Transforms.hs
--- a/src/LLVM/Transforms.hs
+++ b/src/LLVM/Transforms.hs
@@ -97,7 +97,9 @@
   | AddressSanitizer
   | AddressSanitizerModule
   | MemorySanitizer {
-      trackOrigins :: Bool
+      trackOrigins :: Bool,
+      recover :: Bool,
+      kernel :: Bool
     }
   | ThreadSanitizer
   | BoundsChecking
@@ -136,7 +138,9 @@
 -- | Defaults for 'MemorySanitizer'.
 defaultMemorySanitizer :: Pass
 defaultMemorySanitizer = MemorySanitizer {
-  trackOrigins = False
+  trackOrigins = False,
+  recover = False,
+  kernel = False
 }
 
 -- | Defaults for 'ThreadSanitizer'.
diff --git a/test/LLVM/Test/Instructions.hs b/test/LLVM/Test/Instructions.hs
--- a/test/LLVM/Test/Instructions.hs
+++ b/test/LLVM/Test/Instructions.hs
@@ -737,7 +737,6 @@
        \source_filename = \"<string>\"\n\
        \\n\
        \define void @0() {\n\
-       \; <label>:0:\n\
        \  switch i16 2, label %foo [\n\
        \    i16 0, label %0\n\
        \    i16 2, label %foo\n\
@@ -790,7 +789,7 @@
        \  %1 = load i8*, i8** @0\n\
        \  indirectbr i8* %1, [label %2]\n\
        \\n\
-       \; <label>:2:                                      ; preds = %0\n\
+       \2:                                                ; preds = %0\n\
        \  ret void\n\
        \}\n"
      ), (
diff --git a/test/LLVM/Test/Instrumentation.hs b/test/LLVM/Test/Instrumentation.hs
--- a/test/LLVM/Test/Instrumentation.hs
+++ b/test/LLVM/Test/Instrumentation.hs
@@ -39,7 +39,7 @@
   moduleAST mIn'
 
 ast = do
- dl <- withHostTargetMachine getTargetMachineDataLayout
+ dl <- withHostTargetMachineDefault getTargetMachineDataLayout
  triple <- liftIO getDefaultTargetTriple
  return $ Module "<string>" "<string>" (Just dl) (Just triple) [
   -- This function is needed for AddressSanitizerModule
@@ -149,7 +149,7 @@
     testCase n $ do
       triple <- getProcessTargetTriple 
       withTargetLibraryInfo triple $ \tli -> do
-        dl <- withHostTargetMachine getTargetMachineDataLayout
+        dl <- withHostTargetMachineDefault getTargetMachineDataLayout
         ast <- ast
         ast' <- instrument (defaultPassSetSpec { transforms = [p], dataLayout = Just dl, targetLibraryInfo = Just tli }) ast
         let names ast = [ n | GlobalDefinition d <- moduleDefinitions ast, Name n <- return (G.name d) ]
diff --git a/test/LLVM/Test/Metadata.hs b/test/LLVM/Test/Metadata.hs
--- a/test/LLVM/Test/Metadata.hs
+++ b/test/LLVM/Test/Metadata.hs
@@ -479,7 +479,15 @@
           , A.IntroducedVirtual
           , A.BitField
           , A.NoReturn
-          , A.MainSubprogram
+          , A.ArgumentNotModified
+          , A.TypePassByValue
+          , A.TypePassByReference
+          , A.EnumClass
+          , A.Thunk
+          , A.NonTrivial
+          , A.BigEndian
+          , A.LittleEndian
+          , A.AllCallsDescribed
           ]
       ]
 
@@ -525,7 +533,15 @@
       , A.IntroducedVirtual
       , A.BitField
       , A.NoReturn
-      , A.MainSubprogram
+      , A.ArgumentNotModified
+      , A.TypePassByValue
+      , A.TypePassByReference
+      , A.EnumClass
+      , A.Thunk
+      , A.NonTrivial
+      , A.BigEndian
+      , A.LittleEndian
+      , A.AllCallsDescribed
       ]
 
 roundtripDISubprogram :: TestTree
diff --git a/test/LLVM/Test/ObjectCode.hs b/test/LLVM/Test/ObjectCode.hs
--- a/test/LLVM/Test/ObjectCode.hs
+++ b/test/LLVM/Test/ObjectCode.hs
@@ -24,7 +24,7 @@
         withContext $ \ctx ->
           withSystemTempFile "foo" $ \objFile handle -> do
             hClose handle
-            withHostTargetMachine $ \machine ->
+            withHostTargetMachineDefault $ \machine ->
               withModuleFromLLVMAssembly ctx ll $ \mdl -> do
                 obj <- moduleObject machine mdl
                 _ <- writeObjectToFile machine (File objFile) mdl
diff --git a/test/LLVM/Test/OrcJIT.hs b/test/LLVM/Test/OrcJIT.hs
--- a/test/LLVM/Test/OrcJIT.hs
+++ b/test/LLVM/Test/OrcJIT.hs
@@ -27,6 +27,9 @@
 import qualified LLVM.Internal.OrcJIT.CompileLayer as CL
 import qualified LLVM.Internal.OrcJIT.LinkingLayer as LL
 import LLVM.Target
+import qualified LLVM.Relocation as Reloc
+import qualified LLVM.CodeModel as CodeModel
+import qualified LLVM.CodeGenOpt as CodeGenOpt
 
 testModule :: ByteString
 testModule =
@@ -76,7 +79,7 @@
     testCase "eager compilation" $ do
       resolvers <- newIORef Map.empty
       withTestModule $ \mod ->
-        withHostTargetMachine $ \tm ->
+        withHostTargetMachine Reloc.PIC CodeModel.Default CodeGenOpt.Default $ \tm ->
         withExecutionSession $ \es ->
         withObjectLinkingLayer es (\k -> fmap (\rs -> rs Map.! k) (readIORef resolvers)) $ \linkingLayer ->
         withIRCompileLayer linkingLayer tm $ \compileLayer -> do
@@ -100,7 +103,7 @@
       passmanagerSuccessful <- newIORef False
       resolvers <- newIORef Map.empty
       withTestModule $ \mod ->
-        withHostTargetMachine $ \tm ->
+        withHostTargetMachine Reloc.PIC CodeModel.Default CodeGenOpt.Default $ \tm ->
         withExecutionSession $ \es ->
         withObjectLinkingLayer es (\k -> fmap (\rs -> rs Map.! k) (readIORef resolvers)) $ \linkingLayer ->
         withIRCompileLayer linkingLayer tm $ \compileLayer ->
@@ -121,7 +124,7 @@
       let getResolver k = fmap (Map.! k) (readIORef resolvers)
           setResolver k r = modifyIORef' resolvers (Map.insert k r)
       withTestModule $ \mod ->
-        withHostTargetMachine $ \tm -> do
+        withHostTargetMachine Reloc.PIC CodeModel.Default CodeGenOpt.Default $ \tm -> do
           triple <- getTargetMachineTriple tm
           withExecutionSession $ \es ->
             withObjectLinkingLayer es getResolver $ \linkingLayer ->
diff --git a/test/LLVM/Test/Target.hs b/test/LLVM/Test/Target.hs
--- a/test/LLVM/Test/Target.hs
+++ b/test/LLVM/Test/Target.hs
@@ -88,7 +88,6 @@
 
 instance Arbitrary MachineCodeOptions where
   arbitrary = do
-    sanitizeAddresses <- arbitrary
     relaxAll <- arbitrary
     noExecutableStack <- arbitrary
     fatalWarnings <- arbitrary
diff --git a/test/debug_metadata_3.ll b/test/debug_metadata_3.ll
--- a/test/debug_metadata_3.ll
+++ b/test/debug_metadata_3.ll
@@ -797,7 +797,7 @@
   %27 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %20, i64 1, !dbg !4580
   %28 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %21, i64 1, !dbg !4581
   call void @llvm.dbg.value(metadata %"struct.std::pair"* %28, metadata !4531, metadata !DIExpression()), !dbg !4534
-  br label %19, !dbg !4582, !llvm.loop !4583
+  br label %19, !dbg !4582
 
 ; <label>:29:                                     ; preds = %19
   %30 = lshr i64 %12, 3, !dbg !4535
@@ -848,7 +848,7 @@
   %41 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %34, i64 1, !dbg !4621
   %42 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %35, i64 1, !dbg !4622
   call void @llvm.dbg.value(metadata %"struct.std::pair"* %42, metadata !4531, metadata !DIExpression()), !dbg !4602
-  br label %33, !dbg !4623, !llvm.loop !4583
+  br label %33, !dbg !4623
 
 ; <label>:43:                                     ; preds = %33
   %44 = ptrtoint %"struct.std::pair"* %10 to i64, !dbg !4603
@@ -1065,10 +1065,10 @@
 !57 = !DIDerivedType(tag: DW_TAG_typedef, name: "pointer", scope: !50, file: !49, line: 86, baseType: !58)
 !58 = !DIDerivedType(tag: DW_TAG_typedef, name: "pointer", scope: !60, file: !59, line: 59, baseType: !69)
 !59 = !DIFile(filename: "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/ext/alloc_traits.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
-!60 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__alloc_traits<std::allocator<std::pair<int, int> >, std::pair<int, int> >", scope: !5, file: !59, line: 50, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !61, templateParams: !231, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaISt4pairIiiEES2_EE")
+!60 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__alloc_traits<std::allocator<std::pair<int, int> >, std::pair<int, int> >", scope: !5, file: !59, line: 50, size: 8, flags: DIFlagTypePassByValue, elements: !61, templateParams: !231, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaISt4pairIiiEES2_EE")
 !61 = !{!62, !217, !220, !224, !227, !228, !229, !230}
 !62 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !60, baseType: !63, extraData: i32 0)
-!63 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<std::pair<int, int> > >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !65, templateParams: !215, identifier: "_ZTSSt16allocator_traitsISaISt4pairIiiEEE")
+!63 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<std::pair<int, int> > >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue, elements: !65, templateParams: !215, identifier: "_ZTSSt16allocator_traitsISaISt4pairIiiEEE")
 !64 = !DIFile(filename: "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/bits/alloc_traits.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
 !65 = !{!66, !199, !203, !206, !212}
 !66 = !DISubprogram(name: "allocate", linkageName: "_ZNSt16allocator_traitsISaISt4pairIiiEEE8allocateERS2_m", scope: !63, file: !64, line: 435, type: !67, isLocal: false, isDefinition: false, scopeLine: 435, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true)
@@ -1080,7 +1080,7 @@
 !72 = !DIFile(filename: "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/bits/stl_pair.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
 !73 = !{!74, !95, !96, !97, !103, !107, !123, !132}
 !74 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !71, baseType: !75, flags: DIFlagPrivate, extraData: i32 0)
-!75 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "__pair_base<int, int>", scope: !13, file: !72, line: 190, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !76, templateParams: !91, identifier: "_ZTSSt11__pair_baseIiiE")
+!75 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "__pair_base<int, int>", scope: !13, file: !72, line: 190, size: 8, flags: DIFlagTypePassByValue, elements: !76, templateParams: !91, identifier: "_ZTSSt11__pair_baseIiiE")
 !76 = !{!77, !81, !82, !87}
 !77 = !DISubprogram(name: "__pair_base", scope: !75, file: !72, line: 194, type: !78, isLocal: false, isDefinition: false, scopeLine: 194, flags: DIFlagPrototyped, isOptimized: true)
 !78 = !DISubroutineType(types: !79)
@@ -1118,7 +1118,7 @@
 !110 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !71, size: 64)
 !111 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !113, file: !112, line: 1970, baseType: !101)
 !112 = !DIFile(filename: "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/type_traits", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
-!113 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, const std::pair<int, int> &, const std::__nonesuch_no_braces &>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !115, identifier: "_ZTSSt11conditionalILb1ERKSt4pairIiiERKSt20__nonesuch_no_bracesE")
+!113 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, const std::pair<int, int> &, const std::__nonesuch_no_braces &>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !115, identifier: "_ZTSSt11conditionalILb1ERKSt4pairIiiERKSt20__nonesuch_no_bracesE")
 !114 = !{}
 !115 = !{!116, !118, !119}
 !116 = !DITemplateValueParameter(name: "_Cond", type: !117, value: i8 1)
@@ -1132,7 +1132,7 @@
 !124 = !DISubroutineType(types: !125)
 !125 = !{!110, !100, !126}
 !126 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !127, file: !112, line: 1970, baseType: !106)
-!127 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, std::pair<int, int> &&, std::__nonesuch_no_braces &&>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !128, identifier: "_ZTSSt11conditionalILb1EOSt4pairIiiEOSt20__nonesuch_no_bracesE")
+!127 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, std::pair<int, int> &&, std::__nonesuch_no_braces &&>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !128, identifier: "_ZTSSt11conditionalILb1EOSt4pairIiiEOSt20__nonesuch_no_bracesE")
 !128 = !{!116, !129, !130}
 !129 = !DITemplateTypeParameter(name: "_Iftrue", type: !106)
 !130 = !DITemplateTypeParameter(name: "_Iffalse", type: !131)
@@ -1305,7 +1305,7 @@
 !297 = !DISubprogram(name: "_M_create_storage", linkageName: "_ZNSt12_Vector_baseISt4pairIiiESaIS1_EE17_M_create_storageEm", scope: !50, file: !49, line: 309, type: !275, isLocal: false, isDefinition: false, scopeLine: 309, flags: DIFlagPrivate | DIFlagPrototyped, isOptimized: true)
 !298 = !{!187, !216}
 !299 = !DIDerivedType(tag: DW_TAG_typedef, name: "other", scope: !300, file: !59, line: 117, baseType: !301)
-!300 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "rebind<std::pair<int, int> >", scope: !60, file: !59, line: 116, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !186, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaISt4pairIiiEES2_E6rebindIS2_EE")
+!300 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "rebind<std::pair<int, int> >", scope: !60, file: !59, line: 116, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !186, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaISt4pairIiiEES2_E6rebindIS2_EE")
 !301 = !DIDerivedType(tag: DW_TAG_typedef, name: "rebind_alloc<std::pair<int, int> >", scope: !63, file: !64, line: 422, baseType: !140)
 !302 = !DIDerivedType(tag: DW_TAG_typedef, name: "_Link_type", scope: !303, file: !12, line: 465, baseType: !550)
 !303 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >", scope: !13, file: !12, line: 444, size: 384, flags: DIFlagTypePassByReference, elements: !304, templateParams: !983, identifier: "_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE")
@@ -1316,11 +1316,11 @@
 !308 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !306, baseType: !309, extraData: i32 0)
 !309 = !DIDerivedType(tag: DW_TAG_typedef, name: "_Node_allocator", scope: !303, file: !12, line: 447, baseType: !310)
 !310 = !DIDerivedType(tag: DW_TAG_typedef, name: "other", scope: !311, file: !59, line: 117, baseType: !529)
-!311 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "rebind<std::_Rb_tree_node<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >", scope: !312, file: !59, line: 116, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !461, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EES9_E6rebindISt13_Rb_tree_nodeIS9_EEE")
-!312 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__alloc_traits<std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >", scope: !5, file: !59, line: 50, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !313, templateParams: !459, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EES9_EE")
+!311 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "rebind<std::_Rb_tree_node<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >", scope: !312, file: !59, line: 116, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !461, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EES9_E6rebindISt13_Rb_tree_nodeIS9_EEE")
+!312 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__alloc_traits<std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >", scope: !5, file: !59, line: 50, size: 8, flags: DIFlagTypePassByValue, elements: !313, templateParams: !459, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EES9_EE")
 !313 = !{!314, !447, !450, !454, !455, !456, !457, !458}
 !314 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !312, baseType: !315, extraData: i32 0)
-!315 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !316, templateParams: !445, identifier: "_ZTSSt16allocator_traitsISaISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEE")
+!315 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue, elements: !316, templateParams: !445, identifier: "_ZTSSt16allocator_traitsISaISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEE")
 !316 = !{!317, !430, !433, !436, !442}
 !317 = !DISubprogram(name: "allocate", linkageName: "_ZNSt16allocator_traitsISaISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEE8allocateERS9_m", scope: !315, file: !64, line: 435, type: !318, isLocal: false, isDefinition: false, scopeLine: 435, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true)
 !318 = !DISubroutineType(types: !319)
@@ -1330,7 +1330,7 @@
 !322 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >", scope: !13, file: !72, line: 208, size: 512, flags: DIFlagTypePassByReference, elements: !323, templateParams: !376, identifier: "_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_E")
 !323 = !{!324, !345, !346, !347, !353, !357, !366, !373}
 !324 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !322, baseType: !325, flags: DIFlagPrivate, extraData: i32 0)
-!325 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "__pair_base<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >", scope: !13, file: !72, line: 190, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !326, templateParams: !341, identifier: "_ZTSSt11__pair_baseIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_E")
+!325 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "__pair_base<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >", scope: !13, file: !72, line: 190, size: 8, flags: DIFlagTypePassByValue, elements: !326, templateParams: !341, identifier: "_ZTSSt11__pair_baseIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_E")
 !326 = !{!327, !331, !332, !337}
 !327 = !DISubprogram(name: "__pair_base", scope: !325, file: !72, line: 194, type: !328, isLocal: false, isDefinition: false, scopeLine: 194, flags: DIFlagPrototyped, isOptimized: true)
 !328 = !DISubroutineType(types: !329)
@@ -1367,7 +1367,7 @@
 !359 = !{!360, !350, !361}
 !360 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !322, size: 64)
 !361 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !362, file: !112, line: 1975, baseType: !120)
-!362 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<false, const std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > &, const std::__nonesuch_no_braces &>", scope: !13, file: !112, line: 1974, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !363, identifier: "_ZTSSt11conditionalILb0ERKSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ERKSt20__nonesuch_no_bracesE")
+!362 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<false, const std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > &, const std::__nonesuch_no_braces &>", scope: !13, file: !112, line: 1974, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !363, identifier: "_ZTSSt11conditionalILb0ERKSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ERKSt20__nonesuch_no_bracesE")
 !363 = !{!364, !365, !119}
 !364 = !DITemplateValueParameter(name: "_Cond", type: !117, value: i8 0)
 !365 = !DITemplateTypeParameter(name: "_Iftrue", type: !351)
@@ -1375,7 +1375,7 @@
 !367 = !DISubroutineType(types: !368)
 !368 = !{!360, !350, !369}
 !369 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !370, file: !112, line: 1975, baseType: !131)
-!370 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<false, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > &&, std::__nonesuch_no_braces &&>", scope: !13, file: !112, line: 1974, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !371, identifier: "_ZTSSt11conditionalILb0EOSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EOSt20__nonesuch_no_bracesE")
+!370 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<false, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > &&, std::__nonesuch_no_braces &&>", scope: !13, file: !112, line: 1974, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !371, identifier: "_ZTSSt11conditionalILb0EOSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EOSt20__nonesuch_no_bracesE")
 !371 = !{!364, !372, !130}
 !372 = !DITemplateTypeParameter(name: "_Iftrue", type: !356)
 !373 = !DISubprogram(name: "swap", linkageName: "_ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_E4swapERS7_", scope: !322, file: !72, line: 424, type: !374, isLocal: false, isDefinition: false, scopeLine: 424, flags: DIFlagPrototyped, isOptimized: true)
@@ -1468,10 +1468,10 @@
 !460 = !DITemplateTypeParameter(type: !322)
 !461 = !{!462}
 !462 = !DITemplateTypeParameter(name: "_Tp", type: !463)
-!463 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_Rb_tree_node<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >", scope: !13, file: !12, line: 216, size: 768, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !464, templateParams: !527, identifier: "_ZTSSt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EE")
+!463 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_Rb_tree_node<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >", scope: !13, file: !12, line: 216, size: 768, flags: DIFlagTypePassByValue, elements: !464, templateParams: !527, identifier: "_ZTSSt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EE")
 !464 = !{!465, !485, !518, !522}
 !465 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !463, baseType: !466, extraData: i32 0)
-!466 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_Rb_tree_node_base", scope: !13, file: !12, line: 101, size: 256, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !467, identifier: "_ZTSSt18_Rb_tree_node_base")
+!466 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_Rb_tree_node_base", scope: !13, file: !12, line: 101, size: 256, flags: DIFlagTypePassByValue, elements: !467, identifier: "_ZTSSt18_Rb_tree_node_base")
 !467 = !{!468, !469, !472, !473, !474, !477, !483, !484}
 !468 = !DIDerivedType(tag: DW_TAG_member, name: "_M_color", scope: !466, file: !12, line: 106, baseType: !11, size: 32)
 !469 = !DIDerivedType(tag: DW_TAG_member, name: "_M_parent", scope: !466, file: !12, line: 107, baseType: !470, size: 64, offset: 64)
@@ -1491,7 +1491,7 @@
 !483 = !DISubprogram(name: "_S_maximum", linkageName: "_ZNSt18_Rb_tree_node_base10_S_maximumEPS_", scope: !466, file: !12, line: 126, type: !475, isLocal: false, isDefinition: false, scopeLine: 126, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true)
 !484 = !DISubprogram(name: "_S_maximum", linkageName: "_ZNSt18_Rb_tree_node_base10_S_maximumEPKS_", scope: !466, file: !12, line: 133, type: !478, isLocal: false, isDefinition: false, scopeLine: 133, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true)
 !485 = !DIDerivedType(tag: DW_TAG_member, name: "_M_storage", scope: !463, file: !12, line: 231, baseType: !486, size: 512, offset: 256)
-!486 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__aligned_membuf<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >", scope: !5, file: !487, line: 47, size: 512, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !488, templateParams: !418, identifier: "_ZTSN9__gnu_cxx16__aligned_membufISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEE")
+!486 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__aligned_membuf<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >", scope: !5, file: !487, line: 47, size: 512, flags: DIFlagTypePassByValue, elements: !488, templateParams: !418, identifier: "_ZTSN9__gnu_cxx16__aligned_membufISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEE")
 !487 = !DIFile(filename: "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/ext/aligned_buffer.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
 !488 = !{!489, !494, !498, !503, !507, !512, !515}
 !489 = !DIDerivedType(tag: DW_TAG_member, name: "_M_storage", scope: !486, file: !487, line: 54, baseType: !490, size: 512, align: 64)
@@ -1591,11 +1591,11 @@
 !583 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_Rb_tree_key_compare<std::less<std::__cxx11::basic_string<char> > >", scope: !13, file: !12, line: 142, size: 8, flags: DIFlagTypePassByReference, elements: !584, templateParams: !620, identifier: "_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE")
 !584 = !{!585, !603, !607, !611, !616}
 !585 = !DIDerivedType(tag: DW_TAG_member, name: "_M_key_compare", scope: !583, file: !12, line: 144, baseType: !586, size: 8)
-!586 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "less<std::__cxx11::basic_string<char> >", scope: !13, file: !587, line: 381, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !588, templateParams: !601, identifier: "_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE")
+!586 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "less<std::__cxx11::basic_string<char> >", scope: !13, file: !587, line: 381, size: 8, flags: DIFlagTypePassByValue, elements: !588, templateParams: !601, identifier: "_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE")
 !587 = !DIFile(filename: "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/bits/stl_function.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
 !588 = !{!589, !595}
 !589 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !586, baseType: !590, extraData: i32 0)
-!590 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "binary_function<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, bool>", scope: !13, file: !587, line: 118, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !591, identifier: "_ZTSSt15binary_functionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_bE")
+!590 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "binary_function<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, bool>", scope: !13, file: !587, line: 118, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !591, identifier: "_ZTSSt15binary_functionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_bE")
 !591 = !{!592, !593, !594}
 !592 = !DITemplateTypeParameter(name: "_Arg1", type: !31)
 !593 = !DITemplateTypeParameter(name: "_Arg2", type: !31)
@@ -1750,7 +1750,7 @@
 !742 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "pair<std::_Rb_tree_node_base *, std::_Rb_tree_node_base *>", scope: !13, file: !72, line: 208, size: 128, flags: DIFlagTypePassByValue, elements: !743, templateParams: !794, identifier: "_ZTSSt4pairIPSt18_Rb_tree_node_baseS1_E")
 !743 = !{!744, !764, !765, !766, !772, !776, !784, !791}
 !744 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !742, baseType: !745, flags: DIFlagPrivate, extraData: i32 0)
-!745 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "__pair_base<std::_Rb_tree_node_base *, std::_Rb_tree_node_base *>", scope: !13, file: !72, line: 190, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !746, templateParams: !761, identifier: "_ZTSSt11__pair_baseIPSt18_Rb_tree_node_baseS1_E")
+!745 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "__pair_base<std::_Rb_tree_node_base *, std::_Rb_tree_node_base *>", scope: !13, file: !72, line: 190, size: 8, flags: DIFlagTypePassByValue, elements: !746, templateParams: !761, identifier: "_ZTSSt11__pair_baseIPSt18_Rb_tree_node_baseS1_E")
 !746 = !{!747, !751, !752, !757}
 !747 = !DISubprogram(name: "__pair_base", scope: !745, file: !72, line: 194, type: !748, isLocal: false, isDefinition: false, scopeLine: 194, flags: DIFlagPrototyped, isOptimized: true)
 !748 = !DISubroutineType(types: !749)
@@ -1786,14 +1786,14 @@
 !778 = !{!779, !769, !780}
 !779 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !742, size: 64)
 !780 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !781, file: !112, line: 1970, baseType: !770)
-!781 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, const std::pair<std::_Rb_tree_node_base *, std::_Rb_tree_node_base *> &, const std::__nonesuch_no_braces &>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !782, identifier: "_ZTSSt11conditionalILb1ERKSt4pairIPSt18_Rb_tree_node_baseS2_ERKSt20__nonesuch_no_bracesE")
+!781 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, const std::pair<std::_Rb_tree_node_base *, std::_Rb_tree_node_base *> &, const std::__nonesuch_no_braces &>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !782, identifier: "_ZTSSt11conditionalILb1ERKSt4pairIPSt18_Rb_tree_node_baseS2_ERKSt20__nonesuch_no_bracesE")
 !782 = !{!116, !783, !119}
 !783 = !DITemplateTypeParameter(name: "_Iftrue", type: !770)
 !784 = !DISubprogram(name: "operator=", linkageName: "_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EaSEOS2_", scope: !742, file: !72, line: 389, type: !785, isLocal: false, isDefinition: false, scopeLine: 389, flags: DIFlagPrototyped, isOptimized: true)
 !785 = !DISubroutineType(types: !786)
 !786 = !{!779, !769, !787}
 !787 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !788, file: !112, line: 1970, baseType: !775)
-!788 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, std::pair<std::_Rb_tree_node_base *, std::_Rb_tree_node_base *> &&, std::__nonesuch_no_braces &&>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !789, identifier: "_ZTSSt11conditionalILb1EOSt4pairIPSt18_Rb_tree_node_baseS2_EOSt20__nonesuch_no_bracesE")
+!788 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, std::pair<std::_Rb_tree_node_base *, std::_Rb_tree_node_base *> &&, std::__nonesuch_no_braces &&>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !789, identifier: "_ZTSSt11conditionalILb1EOSt4pairIPSt18_Rb_tree_node_baseS2_EOSt20__nonesuch_no_bracesE")
 !789 = !{!116, !790, !130}
 !790 = !DITemplateTypeParameter(name: "_Iftrue", type: !775)
 !791 = !DISubprogram(name: "swap", linkageName: "_ZNSt4pairIPSt18_Rb_tree_node_baseS1_E4swapERS2_", scope: !742, file: !72, line: 424, type: !792, isLocal: false, isDefinition: false, scopeLine: 424, flags: DIFlagPrototyped, isOptimized: true)
@@ -1956,7 +1956,7 @@
 !948 = !DISubroutineType(types: !949)
 !949 = !{null, !663, !862, !950}
 !950 = !DIDerivedType(tag: DW_TAG_typedef, name: "true_type", scope: !13, file: !112, line: 75, baseType: !951)
-!951 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "integral_constant<bool, true>", scope: !13, file: !112, line: 57, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !952, templateParams: !962, identifier: "_ZTSSt17integral_constantIbLb1EE")
+!951 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "integral_constant<bool, true>", scope: !13, file: !112, line: 57, size: 8, flags: DIFlagTypePassByValue, elements: !952, templateParams: !962, identifier: "_ZTSSt17integral_constantIbLb1EE")
 !952 = !{!953, !955, !961}
 !953 = !DIDerivedType(tag: DW_TAG_member, name: "value", scope: !951, file: !112, line: 59, baseType: !954, flags: DIFlagStaticMember, extraData: i1 true)
 !954 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !117)
@@ -1974,7 +1974,7 @@
 !966 = !DISubroutineType(types: !967)
 !967 = !{null, !663, !862, !968}
 !968 = !DIDerivedType(tag: DW_TAG_typedef, name: "false_type", scope: !13, file: !112, line: 78, baseType: !969)
-!969 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "integral_constant<bool, false>", scope: !13, file: !112, line: 57, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !970, templateParams: !979, identifier: "_ZTSSt17integral_constantIbLb0EE")
+!969 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "integral_constant<bool, false>", scope: !13, file: !112, line: 57, size: 8, flags: DIFlagTypePassByValue, elements: !970, templateParams: !979, identifier: "_ZTSSt17integral_constantIbLb0EE")
 !970 = !{!971, !972, !978}
 !971 = !DIDerivedType(tag: DW_TAG_member, name: "value", scope: !969, file: !112, line: 59, baseType: !954, flags: DIFlagStaticMember, extraData: i1 false)
 !972 = !DISubprogram(name: "operator bool", linkageName: "_ZNKSt17integral_constantIbLb0EEcvbEv", scope: !969, file: !112, line: 62, type: !973, isLocal: false, isDefinition: false, scopeLine: 62, flags: DIFlagPrototyped, isOptimized: true)
@@ -2004,10 +2004,10 @@
 !996 = !DIDerivedType(tag: DW_TAG_member, name: "_M_start", scope: !993, file: !49, line: 91, baseType: !997, size: 64)
 !997 = !DIDerivedType(tag: DW_TAG_typedef, name: "pointer", scope: !990, file: !49, line: 86, baseType: !998)
 !998 = !DIDerivedType(tag: DW_TAG_typedef, name: "pointer", scope: !999, file: !59, line: 59, baseType: !1007)
-!999 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__alloc_traits<std::allocator<std::__cxx11::basic_string<char> >, std::__cxx11::basic_string<char> >", scope: !5, file: !59, line: 50, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !1000, templateParams: !1088, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES6_EE")
+!999 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__alloc_traits<std::allocator<std::__cxx11::basic_string<char> >, std::__cxx11::basic_string<char> >", scope: !5, file: !59, line: 50, size: 8, flags: DIFlagTypePassByValue, elements: !1000, templateParams: !1088, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES6_EE")
 !1000 = !{!1001, !1076, !1079, !1083, !1084, !1085, !1086, !1087}
 !1001 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !999, baseType: !1002, extraData: i32 0)
-!1002 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<std::__cxx11::basic_string<char> > >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !1003, templateParams: !1074, identifier: "_ZTSSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE")
+!1002 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<std::__cxx11::basic_string<char> > >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue, elements: !1003, templateParams: !1074, identifier: "_ZTSSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE")
 !1003 = !{!1004, !1059, !1062, !1065, !1071}
 !1004 = !DISubprogram(name: "allocate", linkageName: "_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE8allocateERS6_m", scope: !1002, file: !64, line: 435, type: !1005, isLocal: false, isDefinition: false, scopeLine: 435, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true)
 !1005 = !DISubroutineType(types: !1006)
@@ -2162,14 +2162,14 @@
 !1154 = !DISubprogram(name: "_M_create_storage", linkageName: "_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_create_storageEm", scope: !990, file: !49, line: 309, type: !1132, isLocal: false, isDefinition: false, scopeLine: 309, flags: DIFlagPrivate | DIFlagPrototyped, isOptimized: true)
 !1155 = !{!602, !1075}
 !1156 = !DIDerivedType(tag: DW_TAG_typedef, name: "other", scope: !1157, file: !59, line: 117, baseType: !1158)
-!1157 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "rebind<std::__cxx11::basic_string<char> >", scope: !999, file: !59, line: 116, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !601, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES6_E6rebindIS6_EE")
+!1157 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "rebind<std::__cxx11::basic_string<char> >", scope: !999, file: !59, line: 116, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !601, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES6_E6rebindIS6_EE")
 !1158 = !DIDerivedType(tag: DW_TAG_typedef, name: "rebind_alloc<std::__cxx11::basic_string<char> >", scope: !1002, file: !64, line: 422, baseType: !1011)
 !1159 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_type", scope: !31, file: !30, line: 88, baseType: !1160)
 !1160 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_type", scope: !1161, file: !59, line: 61, baseType: !1184)
-!1161 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__alloc_traits<std::allocator<char>, char>", scope: !5, file: !59, line: 50, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !1162, templateParams: !1206, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaIcEcEE")
+!1161 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__alloc_traits<std::allocator<char>, char>", scope: !5, file: !59, line: 50, size: 8, flags: DIFlagTypePassByValue, elements: !1162, templateParams: !1206, identifier: "_ZTSN9__gnu_cxx14__alloc_traitsISaIcEcEE")
 !1162 = !{!1163, !1192, !1197, !1201, !1202, !1203, !1204, !1205}
 !1163 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !1161, baseType: !1164, extraData: i32 0)
-!1164 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<char> >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !1165, templateParams: !1190, identifier: "_ZTSSt16allocator_traitsISaIcEE")
+!1164 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<char> >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue, elements: !1165, templateParams: !1190, identifier: "_ZTSSt16allocator_traitsISaIcEE")
 !1165 = !{!1166, !1175, !1178, !1181, !1187}
 !1166 = !DISubprogram(name: "allocate", linkageName: "_ZNSt16allocator_traitsISaIcEE8allocateERS0_m", scope: !1164, file: !64, line: 435, type: !1167, isLocal: false, isDefinition: false, scopeLine: 435, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true)
 !1167 = !DISubroutineType(types: !1168)
@@ -2216,7 +2216,7 @@
 !1208 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !1209, size: 64)
 !1209 = !DIDerivedType(tag: DW_TAG_typedef, name: "char_type", scope: !1211, file: !1210, line: 277, baseType: !1171)
 !1210 = !DIFile(filename: "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/bits/char_traits.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
-!1211 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "char_traits<char>", scope: !13, file: !1210, line: 275, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !1212, templateParams: !1258, identifier: "_ZTSSt11char_traitsIcE")
+!1211 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "char_traits<char>", scope: !13, file: !1210, line: 275, size: 8, flags: DIFlagTypePassByValue, elements: !1212, templateParams: !1258, identifier: "_ZTSSt11char_traitsIcE")
 !1212 = !{!1213, !1219, !1222, !1223, !1227, !1230, !1233, !1236, !1237, !1240, !1246, !1249, !1252, !1255}
 !1213 = !DISubprogram(name: "assign", linkageName: "_ZNSt11char_traitsIcE6assignERcRKc", scope: !1211, file: !1210, line: 284, type: !1214, isLocal: false, isDefinition: false, scopeLine: 284, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true)
 !1214 = !DISubroutineType(types: !1215)
@@ -2484,7 +2484,7 @@
 !1476 = !DIDerivedType(tag: DW_TAG_typedef, name: "reference", scope: !1461, file: !879, line: 776, baseType: !1477)
 !1477 = !DIDerivedType(tag: DW_TAG_typedef, name: "reference", scope: !1479, file: !1478, line: 184, baseType: !110)
 !1478 = !DIFile(filename: "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/bits/stl_iterator_base_types.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
-!1479 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "iterator_traits<std::pair<int, int> *>", scope: !13, file: !1478, line: 178, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !1480, identifier: "_ZTSSt15iterator_traitsIPSt4pairIiiEE")
+!1479 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "iterator_traits<std::pair<int, int> *>", scope: !13, file: !1478, line: 178, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !1480, identifier: "_ZTSSt15iterator_traitsIPSt4pairIiiEE")
 !1480 = !{!1481}
 !1481 = !DITemplateTypeParameter(name: "_Iterator", type: !70)
 !1482 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !1483, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
@@ -2544,7 +2544,7 @@
 !1536 = !{!1537, !1532}
 !1537 = !DIDerivedType(tag: DW_TAG_typedef, name: "reference", scope: !1518, file: !879, line: 1026, baseType: !1538)
 !1538 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !1539, file: !112, line: 1970, baseType: !106)
-!1539 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, std::pair<int, int> &&, std::pair<int, int> &>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !1540, identifier: "_ZTSSt11conditionalILb1EOSt4pairIiiERS1_E")
+!1539 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "conditional<true, std::pair<int, int> &&, std::pair<int, int> &>", scope: !13, file: !112, line: 1969, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !1540, identifier: "_ZTSSt11conditionalILb1EOSt4pairIiiERS1_E")
 !1540 = !{!116, !129, !1541}
 !1541 = !DITemplateTypeParameter(name: "_Iffalse", type: !110)
 !1542 = !DISubprogram(name: "operator->", linkageName: "_ZNKSt13move_iteratorIPSt4pairIiiEEptEv", scope: !1518, file: !879, line: 1050, type: !1543, isLocal: false, isDefinition: false, scopeLine: 1050, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
@@ -2651,7 +2651,7 @@
 !1643 = !DIFile(filename: "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/cstdlib", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
 !1644 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !13, entity: !1645, file: !1643, line: 128)
 !1645 = !DIDerivedType(tag: DW_TAG_typedef, name: "ldiv_t", file: !1636, line: 70, baseType: !1646)
-!1646 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1636, line: 66, size: 128, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !1647, identifier: "_ZTS6ldiv_t")
+!1646 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1636, line: 66, size: 128, flags: DIFlagTypePassByValue, elements: !1647, identifier: "_ZTS6ldiv_t")
 !1647 = !{!1648, !1649}
 !1648 = !DIDerivedType(tag: DW_TAG_member, name: "quot", scope: !1646, file: !1636, line: 68, baseType: !1504, size: 64)
 !1649 = !DIDerivedType(tag: DW_TAG_member, name: "rem", scope: !1646, file: !1636, line: 69, baseType: !1504, size: 64, offset: 64)
@@ -2786,7 +2786,7 @@
 !1778 = !{!93, !1170, !1727}
 !1779 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !5, entity: !1780, file: !1643, line: 200)
 !1780 = !DIDerivedType(tag: DW_TAG_typedef, name: "lldiv_t", file: !1636, line: 80, baseType: !1781)
-!1781 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1636, line: 76, size: 128, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !1782, identifier: "_ZTS7lldiv_t")
+!1781 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1636, line: 76, size: 128, flags: DIFlagTypePassByValue, elements: !1782, identifier: "_ZTS7lldiv_t")
 !1782 = !{!1783, !1785}
 !1783 = !DIDerivedType(tag: DW_TAG_member, name: "quot", scope: !1781, file: !1636, line: 78, baseType: !1784, size: 64)
 !1784 = !DIBasicType(name: "long long int", size: 64, encoding: DW_ATE_signed)
@@ -2960,11 +2960,11 @@
 !1952 = !DIFile(filename: "/usr/include/bits/types/mbstate_t.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
 !1953 = !DIDerivedType(tag: DW_TAG_typedef, name: "__mbstate_t", file: !1954, line: 21, baseType: !1955)
 !1954 = !DIFile(filename: "/usr/include/bits/types/__mbstate_t.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
-!1955 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1954, line: 13, size: 64, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !1956, identifier: "_ZTS11__mbstate_t")
+!1955 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1954, line: 13, size: 64, flags: DIFlagTypePassByValue, elements: !1956, identifier: "_ZTS11__mbstate_t")
 !1956 = !{!1957, !1958}
 !1957 = !DIDerivedType(tag: DW_TAG_member, name: "__count", scope: !1955, file: !1954, line: 15, baseType: !93, size: 32)
 !1958 = !DIDerivedType(tag: DW_TAG_member, name: "__value", scope: !1955, file: !1954, line: 20, baseType: !1959, size: 32, offset: 32)
-!1959 = distinct !DICompositeType(tag: DW_TAG_union_type, scope: !1955, file: !1954, line: 16, size: 32, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !1960, identifier: "_ZTSN11__mbstate_tUt_E")
+!1959 = distinct !DICompositeType(tag: DW_TAG_union_type, scope: !1955, file: !1954, line: 16, size: 32, flags: DIFlagTypePassByValue, elements: !1960, identifier: "_ZTSN11__mbstate_tUt_E")
 !1960 = !{!1961, !1962}
 !1961 = !DIDerivedType(tag: DW_TAG_member, name: "__wch", scope: !1959, file: !1954, line: 18, baseType: !6, size: 32)
 !1962 = !DIDerivedType(tag: DW_TAG_member, name: "__wchb", scope: !1959, file: !1954, line: 19, baseType: !1963, size: 32)
@@ -3064,7 +3064,7 @@
 !2056 = !DISubroutineType(types: !2057)
 !2057 = !{!93, !1989, !1772, !2058}
 !2058 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !2059, size: 64)
-!2059 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__va_list_tag", file: !1, size: 192, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !2060, identifier: "_ZTS13__va_list_tag")
+!2059 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__va_list_tag", file: !1, size: 192, flags: DIFlagTypePassByValue, elements: !2060, identifier: "_ZTS13__va_list_tag")
 !2060 = !{!2061, !2062, !2063, !2064}
 !2061 = !DIDerivedType(tag: DW_TAG_member, name: "gp_offset", scope: !2059, file: !1, baseType: !6, size: 32)
 !2062 = !DIDerivedType(tag: DW_TAG_member, name: "fp_offset", scope: !2059, file: !1, baseType: !6, size: 32, offset: 32)
@@ -3905,7 +3905,7 @@
 !2897 = !DISubprogram(name: "truncl", scope: !2571, file: !2571, line: 302, type: !2640, isLocal: false, isDefinition: false, flags: DIFlagPrototyped, isOptimized: true)
 !2898 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !2899, entity: !2900, file: !2902, line: 178)
 !2899 = !DINamespace(name: "JS", scope: null)
-!2900 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Ok", scope: !20, file: !2901, line: 26, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, identifier: "_ZTSN7mozilla2OkE")
+!2900 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Ok", scope: !20, file: !2901, line: 26, size: 8, flags: DIFlagTypePassByValue, elements: !114, identifier: "_ZTSN7mozilla2OkE")
 !2901 = !DIFile(filename: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/dist/include/mozilla/Result.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
 !2902 = !DIFile(filename: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/dist/include/js/Result.h", directory: "/home/firefox/firefox/mozilla-unified/obj-opt-x86_64-pc-linux-gnu/widget")
 !2903 = !{i32 2, !"Dwarf Version", i32 4}
@@ -4412,11 +4412,11 @@
 !3404 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !3405, size: 64)
 !3405 = !DIDerivedType(tag: DW_TAG_typedef, name: "Pointer", scope: !3325, file: !3326, line: 193, baseType: !3406)
 !3406 = !DIDerivedType(tag: DW_TAG_typedef, name: "Type", scope: !3407, file: !3326, line: 57, baseType: !3410)
-!3407 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "PointerType<base::LaunchOptions::ForkDelegate, mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate> >", scope: !19, file: !3326, line: 55, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !3408, identifier: "_ZTSN7mozilla6detail11PointerTypeIN4base13LaunchOptions12ForkDelegateENS_13DefaultDeleteIS4_EEEE")
+!3407 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "PointerType<base::LaunchOptions::ForkDelegate, mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate> >", scope: !19, file: !3326, line: 55, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !3408, identifier: "_ZTSN7mozilla6detail11PointerTypeIN4base13LaunchOptions12ForkDelegateENS_13DefaultDeleteIS4_EEEE")
 !3408 = !{!3349, !3409}
 !3409 = !DITemplateTypeParameter(name: "D", type: !3335)
 !3410 = !DIDerivedType(tag: DW_TAG_typedef, name: "Type", scope: !3411, file: !3326, line: 51, baseType: !3346)
-!3411 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "PointerTypeImpl<base::LaunchOptions::ForkDelegate, mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate>, false>", scope: !19, file: !3326, line: 50, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !3412, identifier: "_ZTSN7mozilla6detail15PointerTypeImplIN4base13LaunchOptions12ForkDelegateENS_13DefaultDeleteIS4_EELb0EEE")
+!3411 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "PointerTypeImpl<base::LaunchOptions::ForkDelegate, mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate>, false>", scope: !19, file: !3326, line: 50, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !3412, identifier: "_ZTSN7mozilla6detail15PointerTypeImplIN4base13LaunchOptions12ForkDelegateENS_13DefaultDeleteIS4_EELb0EEE")
 !3412 = !{!3349, !3409, !3413}
 !3413 = !DITemplateValueParameter(type: !117, value: i8 0)
 !3414 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !3325, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
@@ -4447,7 +4447,7 @@
 !3439 = !DISubroutineType(types: !3440)
 !3440 = !{null, !3414, !3405, !3441}
 !3441 = !DIDerivedType(tag: DW_TAG_typedef, name: "Type", scope: !3442, file: !25, line: 1232, baseType: !3370)
-!3442 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Conditional<false, mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate>, const mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate> &>", scope: !20, file: !25, line: 1231, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !3443, identifier: "_ZTSN7mozilla11ConditionalILb0ENS_13DefaultDeleteIN4base13LaunchOptions12ForkDelegateEEERKS5_EE")
+!3442 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Conditional<false, mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate>, const mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate> &>", scope: !20, file: !25, line: 1231, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !3443, identifier: "_ZTSN7mozilla11ConditionalILb0ENS_13DefaultDeleteIN4base13LaunchOptions12ForkDelegateEEERKS5_EE")
 !3443 = !{!3444, !3445, !3446}
 !3444 = !DITemplateValueParameter(name: "Condition", type: !117, value: i8 0)
 !3445 = !DITemplateTypeParameter(name: "A", type: !3335)
@@ -4457,7 +4457,7 @@
 !3449 = !{null, !3414, !3405, !3450}
 !3450 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !3451, size: 64)
 !3451 = !DIDerivedType(tag: DW_TAG_typedef, name: "Type", scope: !3452, file: !25, line: 864, baseType: !3335)
-!3452 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "RemoveReference<mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate> >", scope: !20, file: !25, line: 863, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !3453, identifier: "_ZTSN7mozilla15RemoveReferenceINS_13DefaultDeleteIN4base13LaunchOptions12ForkDelegateEEEEE")
+!3452 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "RemoveReference<mozilla::DefaultDelete<base::LaunchOptions::ForkDelegate> >", scope: !20, file: !25, line: 863, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !3453, identifier: "_ZTSN7mozilla15RemoveReferenceINS_13DefaultDeleteIN4base13LaunchOptions12ForkDelegateEEEEE")
 !3453 = !{!3454}
 !3454 = !DITemplateTypeParameter(name: "T", type: !3335)
 !3455 = !DISubprogram(name: "UniquePtr", scope: !3325, file: !3326, line: 253, type: !3456, isLocal: false, isDefinition: false, scopeLine: 253, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
@@ -4479,7 +4479,7 @@
 !3471 = !DISubroutineType(types: !3472)
 !3472 = !{!3473, !3420}
 !3473 = !DIDerivedType(tag: DW_TAG_typedef, name: "Type", scope: !3474, file: !25, line: 894, baseType: !3477)
-!3474 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "AddLvalueReferenceHelper<base::LaunchOptions::ForkDelegate, mozilla::detail::TIsNotVoid>", scope: !19, file: !25, line: 893, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !3475, identifier: "_ZTSN7mozilla6detail24AddLvalueReferenceHelperIN4base13LaunchOptions12ForkDelegateELNS0_8VoidnessE1EEE")
+!3474 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "AddLvalueReferenceHelper<base::LaunchOptions::ForkDelegate, mozilla::detail::TIsNotVoid>", scope: !19, file: !25, line: 893, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !3475, identifier: "_ZTSN7mozilla6detail24AddLvalueReferenceHelperIN4base13LaunchOptions12ForkDelegateELNS0_8VoidnessE1EEE")
 !3475 = !{!3349, !3476}
 !3476 = !DITemplateValueParameter(name: "V", type: !24, value: i32 1)
 !3477 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !3347, size: 64)
@@ -4520,7 +4520,7 @@
 !3512 = !DIDerivedType(tag: DW_TAG_member, name: "mValue", scope: !3509, file: !3510, line: 154, baseType: !3513, size: 64)
 !3513 = !DIDerivedType(tag: DW_TAG_typedef, name: "Resource", scope: !3509, file: !3510, line: 70, baseType: !3514)
 !3514 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !3515, file: !3508, line: 72, baseType: !2354)
-!3515 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "ScopedCloseFileTraits", scope: !20, file: !3508, line: 71, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !3516, identifier: "_ZTSN7mozilla21ScopedCloseFileTraitsE")
+!3515 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "ScopedCloseFileTraits", scope: !20, file: !3508, line: 71, size: 8, flags: DIFlagTypePassByValue, elements: !3516, identifier: "_ZTSN7mozilla21ScopedCloseFileTraitsE")
 !3516 = !{!3517, !3520}
 !3517 = !DISubprogram(name: "empty", linkageName: "_ZN7mozilla21ScopedCloseFileTraits5emptyEv", scope: !3515, file: !3508, line: 73, type: !3518, isLocal: false, isDefinition: false, scopeLine: 73, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true)
 !3518 = !DISubroutineType(types: !3519)
@@ -5041,7 +5041,7 @@
 !4033 = !DILocation(line: 71, column: 16, scope: !4028, inlinedAt: !4032)
 !4034 = !DILocalVariable(name: "__a", arg: 1, scope: !4035, file: !64, line: 486, type: !4042)
 !4035 = distinct !DISubprogram(name: "destroy<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >", linkageName: "_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEEE7destroyIS9_EEvRSB_PT_", scope: !4036, file: !64, line: 486, type: !4061, isLocal: false, isDefinition: true, scopeLine: 487, flags: DIFlagPrototyped, isOptimized: true, unit: !0, templateParams: !4064, declaration: !4063, retainedNodes: !4066)
-!4036 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > > >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !4037, templateParams: !4059, identifier: "_ZTSSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEEE")
+!4036 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > > >", scope: !13, file: !64, line: 384, size: 8, flags: DIFlagTypePassByValue, elements: !4037, templateParams: !4059, identifier: "_ZTSSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEEE")
 !4037 = !{!4038, !4044, !4047, !4050, !4056}
 !4038 = !DISubprogram(name: "allocate", linkageName: "_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEEE8allocateERSB_m", scope: !4036, file: !64, line: 435, type: !4039, isLocal: false, isDefinition: false, scopeLine: 435, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true)
 !4039 = !DISubroutineType(types: !4040)
@@ -5175,7 +5175,7 @@
 !4167 = !DILocation(line: 304, column: 4, scope: !4144, inlinedAt: !4141)
 !4168 = !DILocation(line: 287, column: 7, scope: !4129)
 !4169 = distinct !DISubprogram(name: "__destroy<std::__cxx11::basic_string<char> *>", linkageName: "_ZNSt12_Destroy_auxILb0EE9__destroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvT_S9_", scope: !4170, file: !3851, line: 105, type: !3865, isLocal: false, isDefinition: true, scopeLine: 106, flags: DIFlagPrototyped, isOptimized: true, unit: !0, templateParams: !3869, declaration: !4172, retainedNodes: !4173)
-!4170 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_Destroy_aux<false>", scope: !13, file: !3851, line: 101, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !4171, identifier: "_ZTSSt12_Destroy_auxILb0EE")
+!4170 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_Destroy_aux<false>", scope: !13, file: !3851, line: 101, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !4171, identifier: "_ZTSSt12_Destroy_auxILb0EE")
 !4171 = !{!3413}
 !4172 = !DISubprogram(name: "__destroy<std::__cxx11::basic_string<char> *>", linkageName: "_ZNSt12_Destroy_auxILb0EE9__destroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvT_S9_", scope: !4170, file: !3851, line: 105, type: !3865, isLocal: false, isDefinition: false, scopeLine: 105, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true, templateParams: !3869)
 !4173 = !{!4174, !4175}
@@ -5206,10 +5206,10 @@
 !4198 = distinct !DISubprogram(name: "_M_range_initialize<const std::__cxx11::basic_string<char> *>", linkageName: "_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE19_M_range_initializeIPKS5_EEvT_SB_St20forward_iterator_tag", scope: !2924, file: !49, line: 1462, type: !4199, isLocal: false, isDefinition: true, scopeLine: 1464, flags: DIFlagPrototyped, isOptimized: true, unit: !0, templateParams: !4206, declaration: !4205, retainedNodes: !4208)
 !4199 = !DISubroutineType(types: !4200)
 !4200 = !{null, !2930, !1038, !1038, !4201}
-!4201 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "forward_iterator_tag", scope: !13, file: !1478, line: 95, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !4202, identifier: "_ZTSSt20forward_iterator_tag")
+!4201 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "forward_iterator_tag", scope: !13, file: !1478, line: 95, size: 8, flags: DIFlagTypePassByValue, elements: !4202, identifier: "_ZTSSt20forward_iterator_tag")
 !4202 = !{!4203}
 !4203 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !4201, baseType: !4204, extraData: i32 0)
-!4204 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "input_iterator_tag", scope: !13, file: !1478, line: 89, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, identifier: "_ZTSSt18input_iterator_tag")
+!4204 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "input_iterator_tag", scope: !13, file: !1478, line: 89, size: 8, flags: DIFlagTypePassByValue, elements: !114, identifier: "_ZTSSt18input_iterator_tag")
 !4205 = !DISubprogram(name: "_M_range_initialize<const std::__cxx11::basic_string<char> *>", linkageName: "_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE19_M_range_initializeIPKS5_EEvT_SB_St20forward_iterator_tag", scope: !2924, file: !49, line: 1462, type: !4199, isLocal: false, isDefinition: false, scopeLine: 1462, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true, templateParams: !4206)
 !4206 = !{!4207}
 !4207 = !DITemplateTypeParameter(name: "_ForwardIterator", type: !1038)
@@ -5229,7 +5229,7 @@
 !4221 = !DISubroutineType(types: !4222)
 !4222 = !{!4223, !1038, !1038}
 !4223 = !DIDerivedType(tag: DW_TAG_typedef, name: "difference_type", scope: !4224, file: !1478, line: 193, baseType: !1503)
-!4224 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "iterator_traits<const std::__cxx11::basic_string<char> *>", scope: !13, file: !1478, line: 189, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !4225, identifier: "_ZTSSt15iterator_traitsIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE")
+!4224 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "iterator_traits<const std::__cxx11::basic_string<char> *>", scope: !13, file: !1478, line: 189, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !4225, identifier: "_ZTSSt15iterator_traitsIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE")
 !4225 = !{!4226}
 !4226 = !DITemplateTypeParameter(name: "_Iterator", type: !1038)
 !4227 = !{!4218, !4228}
@@ -5243,10 +5243,10 @@
 !4235 = distinct !DISubprogram(name: "__distance<const std::__cxx11::basic_string<char> *>", linkageName: "_ZSt10__distanceIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_St26random_access_iterator_tag", scope: !13, file: !4220, line: 98, type: !4236, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: true, unit: !0, templateParams: !4247, retainedNodes: !4244)
 !4236 = !DISubroutineType(types: !4237)
 !4237 = !{!4223, !1038, !1038, !4238}
-!4238 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "random_access_iterator_tag", scope: !13, file: !1478, line: 103, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !4239, identifier: "_ZTSSt26random_access_iterator_tag")
+!4238 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "random_access_iterator_tag", scope: !13, file: !1478, line: 103, size: 8, flags: DIFlagTypePassByValue, elements: !4239, identifier: "_ZTSSt26random_access_iterator_tag")
 !4239 = !{!4240}
 !4240 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !4238, baseType: !4241, extraData: i32 0)
-!4241 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "bidirectional_iterator_tag", scope: !13, file: !1478, line: 99, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !4242, identifier: "_ZTSSt26bidirectional_iterator_tag")
+!4241 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "bidirectional_iterator_tag", scope: !13, file: !1478, line: 99, size: 8, flags: DIFlagTypePassByValue, elements: !4242, identifier: "_ZTSSt26bidirectional_iterator_tag")
 !4242 = !{!4243}
 !4243 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !4241, baseType: !4201, extraData: i32 0)
 !4244 = !{!4234, !4245, !4246}
@@ -5342,7 +5342,7 @@
 !4334 = !DILocation(line: 111, column: 9, scope: !4312)
 !4335 = !DILocation(line: 111, column: 2, scope: !4312)
 !4336 = distinct !DISubprogram(name: "__uninit_copy<const std::__cxx11::basic_string<char> *, std::__cxx11::basic_string<char> *>", linkageName: "_ZNSt20__uninitialized_copyILb0EE13__uninit_copyIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS7_EET0_T_SC_SB_", scope: !4337, file: !4262, line: 76, type: !4276, isLocal: false, isDefinition: true, scopeLine: 78, flags: DIFlagPrototyped, isOptimized: true, unit: !0, templateParams: !4282, declaration: !4340, retainedNodes: !4341)
-!4337 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__uninitialized_copy<false>", scope: !13, file: !4262, line: 72, size: 8, flags: DIFlagTypePassByValue | DIFlagTrivial, elements: !114, templateParams: !4338, identifier: "_ZTSSt20__uninitialized_copyILb0EE")
+!4337 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__uninitialized_copy<false>", scope: !13, file: !4262, line: 72, size: 8, flags: DIFlagTypePassByValue, elements: !114, templateParams: !4338, identifier: "_ZTSSt20__uninitialized_copyILb0EE")
 !4338 = !{!4339}
 !4339 = !DITemplateValueParameter(name: "_TrivialValueTypes", type: !117, value: i8 0)
 !4340 = !DISubprogram(name: "__uninit_copy<const std::__cxx11::basic_string<char> *, std::__cxx11::basic_string<char> *>", linkageName: "_ZNSt20__uninitialized_copyILb0EE13__uninit_copyIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS7_EET0_T_SC_SB_", scope: !4337, file: !4262, line: 76, type: !4276, isLocal: false, isDefinition: false, scopeLine: 76, flags: DIFlagPrototyped | DIFlagStaticMember, isOptimized: true, templateParams: !4282)
diff --git a/test/debug_metadata_4.ll b/test/debug_metadata_4.ll
# file too large to diff: test/debug_metadata_4.ll
diff --git a/test/debug_metadata_5.ll b/test/debug_metadata_5.ll
# file too large to diff: test/debug_metadata_5.ll
