[llvm] 5a288fa - [DebugInfo] Convert most tests to opaque pointers (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 13 07:09:34 PST 2022


Author: Nikita Popov
Date: 2022-12-13T16:08:09+01:00
New Revision: 5a288fa32e0c91b211e39f3e370255916902f898

URL: https://github.com/llvm/llvm-project/commit/5a288fa32e0c91b211e39f3e370255916902f898
DIFF: https://github.com/llvm/llvm-project/commit/5a288fa32e0c91b211e39f3e370255916902f898.diff

LOG: [DebugInfo] Convert most tests to opaque pointers (NFC)

Added: 
    

Modified: 
    llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll
    llvm/test/DebugInfo/AArch64/coalescing.ll
    llvm/test/DebugInfo/AArch64/constant-dbgloc.ll
    llvm/test/DebugInfo/AArch64/dbg-value-i8.ll
    llvm/test/DebugInfo/AArch64/eh_frame_personality.ll
    llvm/test/DebugInfo/AArch64/inlined-argument.ll
    llvm/test/DebugInfo/AArch64/ir-outliner.ll
    llvm/test/DebugInfo/AArch64/pr40709.ll
    llvm/test/DebugInfo/AArch64/struct_by_value.ll
    llvm/test/DebugInfo/AArch64/tls-at-location.ll
    llvm/test/DebugInfo/ARM/PR26163.ll
    llvm/test/DebugInfo/ARM/constant-dbgloc.ll
    llvm/test/DebugInfo/ARM/entry-value-multi-byte-expr.ll
    llvm/test/DebugInfo/ARM/illegal-fragment.ll
    llvm/test/DebugInfo/ARM/lowerbdgdeclare_vla.ll
    llvm/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll
    llvm/test/DebugInfo/ARM/salvage-debug-info.ll
    llvm/test/DebugInfo/ARM/sdag-split-arg.ll
    llvm/test/DebugInfo/ARM/selectiondag-deadcode.ll
    llvm/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll
    llvm/test/DebugInfo/ARM/split-complex.ll
    llvm/test/DebugInfo/ARM/sroa-complex.ll
    llvm/test/DebugInfo/BPF/extern-void.ll
    llvm/test/DebugInfo/COFF/AArch64/arm64-register-variables.ll
    llvm/test/DebugInfo/COFF/ARMNT/arm-register-variables.ll
    llvm/test/DebugInfo/COFF/array-odr-violation.ll
    llvm/test/DebugInfo/COFF/asan-module-ctor.ll
    llvm/test/DebugInfo/COFF/asan-module-without-functions.ll
    llvm/test/DebugInfo/COFF/class-options-common.ll
    llvm/test/DebugInfo/COFF/comdat.ll
    llvm/test/DebugInfo/COFF/cpp-mangling.ll
    llvm/test/DebugInfo/COFF/defer-complete-type.ll
    llvm/test/DebugInfo/COFF/enum-co.ll
    llvm/test/DebugInfo/COFF/fortran-basic.ll
    llvm/test/DebugInfo/COFF/fortran-contained-proc.ll
    llvm/test/DebugInfo/COFF/fpo-argsize.ll
    llvm/test/DebugInfo/COFF/fpo-funclet.ll
    llvm/test/DebugInfo/COFF/fpo-realign-alloca.ll
    llvm/test/DebugInfo/COFF/fpo-realign-vframe.ll
    llvm/test/DebugInfo/COFF/fpo-shrink-wrap.ll
    llvm/test/DebugInfo/COFF/fpo-stack-protect.ll
    llvm/test/DebugInfo/COFF/frameproc-flags.ll
    llvm/test/DebugInfo/COFF/global_visibility.ll
    llvm/test/DebugInfo/COFF/globals.ll
    llvm/test/DebugInfo/COFF/inheritance.ll
    llvm/test/DebugInfo/COFF/inlining-files.ll
    llvm/test/DebugInfo/COFF/inlining-header.ll
    llvm/test/DebugInfo/COFF/inlining-levels.ll
    llvm/test/DebugInfo/COFF/inlining-padding.ll
    llvm/test/DebugInfo/COFF/inlining-same-name.ll
    llvm/test/DebugInfo/COFF/inlining.ll
    llvm/test/DebugInfo/COFF/integer-128.ll
    llvm/test/DebugInfo/COFF/lambda.ll
    llvm/test/DebugInfo/COFF/lexicalblock.ll
    llvm/test/DebugInfo/COFF/line-zero.ll
    llvm/test/DebugInfo/COFF/lines-bb-start.ll
    llvm/test/DebugInfo/COFF/lines-difile.ll
    llvm/test/DebugInfo/COFF/local-variable-gap.ll
    llvm/test/DebugInfo/COFF/local-variables.ll
    llvm/test/DebugInfo/COFF/numeric-leaves.ll
    llvm/test/DebugInfo/COFF/parameter-order.ll
    llvm/test/DebugInfo/COFF/parent-type-scopes.ll
    llvm/test/DebugInfo/COFF/pgo.ll
    llvm/test/DebugInfo/COFF/pieces.ll
    llvm/test/DebugInfo/COFF/pr28747.ll
    llvm/test/DebugInfo/COFF/pr37492.ll
    llvm/test/DebugInfo/COFF/purge-typedef-udts.ll
    llvm/test/DebugInfo/COFF/register-variables.ll
    llvm/test/DebugInfo/COFF/retained-types.ll
    llvm/test/DebugInfo/COFF/scopes.ll
    llvm/test/DebugInfo/COFF/static-methods.ll
    llvm/test/DebugInfo/COFF/synthetic.ll
    llvm/test/DebugInfo/COFF/typedef.ll
    llvm/test/DebugInfo/COFF/types-array-advanced.ll
    llvm/test/DebugInfo/COFF/types-array.ll
    llvm/test/DebugInfo/COFF/types-calling-conv.ll
    llvm/test/DebugInfo/COFF/types-integer-old.ll
    llvm/test/DebugInfo/COFF/types-method-ref-qualifiers.ll
    llvm/test/DebugInfo/COFF/types-non-virtual-methods.ll
    llvm/test/DebugInfo/COFF/types-ptr-to-member.ll
    llvm/test/DebugInfo/COFF/types-recursive-struct.ll
    llvm/test/DebugInfo/COFF/types-recursive-unnamed.ll
    llvm/test/DebugInfo/COFF/types-std-nullptr-t.ll
    llvm/test/DebugInfo/COFF/udts-fixpoint.ll
    llvm/test/DebugInfo/COFF/udts.ll
    llvm/test/DebugInfo/COFF/unnamed.ll
    llvm/test/DebugInfo/COFF/vframe-csr.ll
    llvm/test/DebugInfo/COFF/vframe-fpo.ll
    llvm/test/DebugInfo/COFF/virtual-method-kinds.ll
    llvm/test/DebugInfo/COFF/vtable-optzn-array.ll
    llvm/test/DebugInfo/COFF/x87-registers.ll
    llvm/test/DebugInfo/Generic/2010-05-03-DisableFramePtr.ll
    llvm/test/DebugInfo/Generic/2010-05-03-OriginDIE.ll
    llvm/test/DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll
    llvm/test/DebugInfo/Generic/2010-10-01-crash.ll
    llvm/test/DebugInfo/Generic/DICommonBlock.ll
    llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/roundtrip.ll
    llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/verify.ll
    llvm/test/DebugInfo/Generic/block-asan.ll
    llvm/test/DebugInfo/Generic/callsite-attr-invalid.ll
    llvm/test/DebugInfo/Generic/constant-pointers.ll
    llvm/test/DebugInfo/Generic/containing-type-extension.ll
    llvm/test/DebugInfo/Generic/cross-cu-inlining-ranges.ll
    llvm/test/DebugInfo/Generic/cross-cu-inlining.ll
    llvm/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll
    llvm/test/DebugInfo/Generic/cross-cu-linkonce.ll
    llvm/test/DebugInfo/Generic/cu-range-hole.ll
    llvm/test/DebugInfo/Generic/cu-ranges.ll
    llvm/test/DebugInfo/Generic/dbg-value-lower-linenos.ll
    llvm/test/DebugInfo/Generic/dead-argument-order.ll
    llvm/test/DebugInfo/Generic/debug-info-always-inline.ll
    llvm/test/DebugInfo/Generic/debug-info-qualifiers.ll
    llvm/test/DebugInfo/Generic/debug-label-inline.ll
    llvm/test/DebugInfo/Generic/debug-label-mi.ll
    llvm/test/DebugInfo/Generic/debug-label-opt.ll
    llvm/test/DebugInfo/Generic/debug-label.ll
    llvm/test/DebugInfo/Generic/debug-names-hash-collisions.ll
    llvm/test/DebugInfo/Generic/debug-names-many-cu.ll
    llvm/test/DebugInfo/Generic/debug-names-one-cu.ll
    llvm/test/DebugInfo/Generic/debug-names-two-cu.ll
    llvm/test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll
    llvm/test/DebugInfo/Generic/discriminated-union.ll
    llvm/test/DebugInfo/Generic/dwarf-public-names.ll
    llvm/test/DebugInfo/Generic/enum-types.ll
    llvm/test/DebugInfo/Generic/global-sra-array.ll
    llvm/test/DebugInfo/Generic/global-sra-single-member.ll
    llvm/test/DebugInfo/Generic/global-sra-struct-fwd-decl.ll
    llvm/test/DebugInfo/Generic/global-sra-struct-zero-length.ll
    llvm/test/DebugInfo/Generic/global-sra-struct.ll
    llvm/test/DebugInfo/Generic/incorrect-variable-debugloc.ll
    llvm/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll
    llvm/test/DebugInfo/Generic/indvar-discriminator.ll
    llvm/test/DebugInfo/Generic/inheritance.ll
    llvm/test/DebugInfo/Generic/inline-debug-info-multiret.ll
    llvm/test/DebugInfo/Generic/inline-debug-info.ll
    llvm/test/DebugInfo/Generic/inline-no-debug-info.ll
    llvm/test/DebugInfo/Generic/inline-scopes.ll
    llvm/test/DebugInfo/Generic/instcombine-phi.ll
    llvm/test/DebugInfo/Generic/linear-dbg-value.ll
    llvm/test/DebugInfo/Generic/mainsubprogram.ll
    llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-1.ll
    llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-2.ll
    llvm/test/DebugInfo/Generic/member-order.ll
    llvm/test/DebugInfo/Generic/mldst-motion-dbg.ll
    llvm/test/DebugInfo/Generic/namespace.ll
    llvm/test/DebugInfo/Generic/namespace_inline_function_definition.ll
    llvm/test/DebugInfo/Generic/pr40628.ll
    llvm/test/DebugInfo/Generic/recursive_inlining.ll
    llvm/test/DebugInfo/Generic/restrict.ll
    llvm/test/DebugInfo/Generic/sroa-larger.ll
    llvm/test/DebugInfo/Generic/sroa-samesize.ll
    llvm/test/DebugInfo/Generic/store-tail-merge.ll
    llvm/test/DebugInfo/Generic/tu-composite.ll
    llvm/test/DebugInfo/Generic/two-cus-from-same-file.ll
    llvm/test/DebugInfo/Generic/typedef.ll
    llvm/test/DebugInfo/Generic/unconditional-branch.ll
    llvm/test/DebugInfo/Generic/univariant-discriminated-union.ll
    llvm/test/DebugInfo/Generic/varargs.ll
    llvm/test/DebugInfo/Generic/version.ll
    llvm/test/DebugInfo/Generic/virtual-index.ll
    llvm/test/DebugInfo/Generic/volatile-alloca.ll
    llvm/test/DebugInfo/WebAssembly/dbgvalue.ll
    llvm/test/DebugInfo/WebAssembly/debugtest-opt.ll
    llvm/test/DebugInfo/X86/2010-04-13-PubType.ll
    llvm/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll
    llvm/test/DebugInfo/X86/2011-12-16-BadStructRef.ll
    llvm/test/DebugInfo/X86/DIExpr-const-folding.ll
    llvm/test/DebugInfo/X86/DIModuleContext.ll
    llvm/test/DebugInfo/X86/DW_AT_byte_size.ll
    llvm/test/DebugInfo/X86/DW_AT_deleted.ll
    llvm/test/DebugInfo/X86/DW_AT_linkage_name.ll
    llvm/test/DebugInfo/X86/DW_AT_location-reference.ll
    llvm/test/DebugInfo/X86/DW_AT_object_pointer.ll
    llvm/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
    llvm/test/DebugInfo/X86/FrameIndexExprs.ll
    llvm/test/DebugInfo/X86/InlinedFnLocalVar.ll
    llvm/test/DebugInfo/X86/LLVM_implicit_pointer.ll
    llvm/test/DebugInfo/X86/PR26148.ll
    llvm/test/DebugInfo/X86/accel-tables.ll
    llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll
    llvm/test/DebugInfo/X86/align_c11.ll
    llvm/test/DebugInfo/X86/align_cpp11.ll
    llvm/test/DebugInfo/X86/align_objc.ll
    llvm/test/DebugInfo/X86/aligned_stack_var.ll
    llvm/test/DebugInfo/X86/arange-and-stub.ll
    llvm/test/DebugInfo/X86/arange.ll
    llvm/test/DebugInfo/X86/arguments.ll
    llvm/test/DebugInfo/X86/array.ll
    llvm/test/DebugInfo/X86/array2.ll
    llvm/test/DebugInfo/X86/assumed_size_array.ll
    llvm/test/DebugInfo/X86/attr-btf_tag-typedef.ll
    llvm/test/DebugInfo/X86/bbjoin.ll
    llvm/test/DebugInfo/X86/block-capture.ll
    llvm/test/DebugInfo/X86/byvalstruct.ll
    llvm/test/DebugInfo/X86/codegenprep-addrsink.ll
    llvm/test/DebugInfo/X86/coff_debug_info_type.ll
    llvm/test/DebugInfo/X86/coff_relative_names.ll
    llvm/test/DebugInfo/X86/concrete_out_of_line.ll
    llvm/test/DebugInfo/X86/constant-loclist.ll
    llvm/test/DebugInfo/X86/cu-ranges-odr.ll
    llvm/test/DebugInfo/X86/cu-ranges.ll
    llvm/test/DebugInfo/X86/dbg-abstract-vars-g-gmlt.ll
    llvm/test/DebugInfo/X86/dbg-addr-dse.ll
    llvm/test/DebugInfo/X86/dbg-addr.ll
    llvm/test/DebugInfo/X86/dbg-byval-parameter.ll
    llvm/test/DebugInfo/X86/dbg-declare-alloca.ll
    llvm/test/DebugInfo/X86/dbg-declare-arg.ll
    llvm/test/DebugInfo/X86/dbg-declare-inalloca.ll
    llvm/test/DebugInfo/X86/dbg-declare.ll
    llvm/test/DebugInfo/X86/dbg-file-name.ll
    llvm/test/DebugInfo/X86/dbg-prolog-end.ll
    llvm/test/DebugInfo/X86/dbg-rust-valid-enum-as-scope.ll
    llvm/test/DebugInfo/X86/dbg-subrange.ll
    llvm/test/DebugInfo/X86/dbg-val-list-dangling.ll
    llvm/test/DebugInfo/X86/dbg-value-const-byref.ll
    llvm/test/DebugInfo/X86/dbg-value-dag-combine.ll
    llvm/test/DebugInfo/X86/dbg-value-dropped-instcombine.ll
    llvm/test/DebugInfo/X86/dbg-value-frame-index-2.ll
    llvm/test/DebugInfo/X86/dbg-value-frame-index.ll
    llvm/test/DebugInfo/X86/dbg-value-funcarg2.ll
    llvm/test/DebugInfo/X86/dbg-value-inlined-parameter.ll
    llvm/test/DebugInfo/X86/dbg-value-isel.ll
    llvm/test/DebugInfo/X86/dbg-value-list-dag-combine.ll
    llvm/test/DebugInfo/X86/dbg-value-location.ll
    llvm/test/DebugInfo/X86/dbg-value-range.ll
    llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll
    llvm/test/DebugInfo/X86/dbg-value-terminator.ll
    llvm/test/DebugInfo/X86/dbg-value-transfer-order.ll
    llvm/test/DebugInfo/X86/dbg-vector-size.ll
    llvm/test/DebugInfo/X86/dbg_value_direct.ll
    llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
    llvm/test/DebugInfo/X86/dead-store-elimination-marks-undef.ll
    llvm/test/DebugInfo/X86/debug-info-auto-return.ll
    llvm/test/DebugInfo/X86/debug-info-block-captured-self.ll
    llvm/test/DebugInfo/X86/debug-info-producer-with-flags.ll
    llvm/test/DebugInfo/X86/debug-info-static-member.ll
    llvm/test/DebugInfo/X86/debug-info-template-align.ll
    llvm/test/DebugInfo/X86/debug-info-template-parameter.ll
    llvm/test/DebugInfo/X86/debug-names-split-dwarf.ll
    llvm/test/DebugInfo/X86/debug-ranges-offset.ll
    llvm/test/DebugInfo/X86/debugger-tune.ll
    llvm/test/DebugInfo/X86/decl-derived-member.ll
    llvm/test/DebugInfo/X86/deleted-bit-piece.ll
    llvm/test/DebugInfo/X86/dimodule-external-fortran.ll
    llvm/test/DebugInfo/X86/discriminator.ll
    llvm/test/DebugInfo/X86/discriminator3.ll
    llvm/test/DebugInfo/X86/distringtype.ll
    llvm/test/DebugInfo/X86/disubprogram-trampoline.ll
    llvm/test/DebugInfo/X86/double-declare.ll
    llvm/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll
    llvm/test/DebugInfo/X86/dwarf-aranges.ll
    llvm/test/DebugInfo/X86/dwarf-callsite-related-attrs.ll
    llvm/test/DebugInfo/X86/dwarf-linkage-names.ll
    llvm/test/DebugInfo/X86/dwarf-mem-barrier.ll
    llvm/test/DebugInfo/X86/dwarf-no-source-loc.ll
    llvm/test/DebugInfo/X86/dwarf-public-names.ll
    llvm/test/DebugInfo/X86/dwarf-pubnames-split.ll
    llvm/test/DebugInfo/X86/dwarfdump-DIImportedEntity_elements.ll
    llvm/test/DebugInfo/X86/dwarfdump-allocatedExp.ll
    llvm/test/DebugInfo/X86/dwarfdump-allocatedVar.ll
    llvm/test/DebugInfo/X86/dwarfdump-associatedExp.ll
    llvm/test/DebugInfo/X86/dwarfdump-associatedVar.ll
    llvm/test/DebugInfo/X86/dwarfdump-generic_subrange.ll
    llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_const.ll
    llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_count.ll
    llvm/test/DebugInfo/X86/dwarfdump-over.ll
    llvm/test/DebugInfo/X86/dwarfdump-rankConst.ll
    llvm/test/DebugInfo/X86/dwarfdump-rankExp.ll
    llvm/test/DebugInfo/X86/dwarfdump-signed_const.ll
    llvm/test/DebugInfo/X86/earlydup-crash.ll
    llvm/test/DebugInfo/X86/elf-names.ll
    llvm/test/DebugInfo/X86/ending-run.ll
    llvm/test/DebugInfo/X86/fi-expr.ll
    llvm/test/DebugInfo/X86/fi-piece.ll
    llvm/test/DebugInfo/X86/fission-ranges.ll
    llvm/test/DebugInfo/X86/float_const.ll
    llvm/test/DebugInfo/X86/formal_parameter.ll
    llvm/test/DebugInfo/X86/frame-register.ll
    llvm/test/DebugInfo/X86/generate-odr-hash.ll
    llvm/test/DebugInfo/X86/global-expression.ll
    llvm/test/DebugInfo/X86/global-sra-fp80-array.ll
    llvm/test/DebugInfo/X86/global-sra-fp80-struct.ll
    llvm/test/DebugInfo/X86/global-sra-struct-fit-segment.ll
    llvm/test/DebugInfo/X86/gnu-names.ll
    llvm/test/DebugInfo/X86/gnu-public-names.ll
    llvm/test/DebugInfo/X86/implicit_value-double.ll
    llvm/test/DebugInfo/X86/implicit_value-float.ll
    llvm/test/DebugInfo/X86/inline-member-function.ll
    llvm/test/DebugInfo/X86/inline-seldag-test.ll
    llvm/test/DebugInfo/X86/inlined-indirect-value.ll
    llvm/test/DebugInfo/X86/instcombine-demanded-bits-salvage.ll
    llvm/test/DebugInfo/X86/instcombine-instrinsics.ll
    llvm/test/DebugInfo/X86/instr-ref-dbg-declare.ll
    llvm/test/DebugInfo/X86/instr-ref-dyn-alloca-win32.ll
    llvm/test/DebugInfo/X86/instr-ref-dyn-alloca.ll
    llvm/test/DebugInfo/X86/instr-ref-eh-landing-pad.ll
    llvm/test/DebugInfo/X86/instr-ref-framereg-read.ll
    llvm/test/DebugInfo/X86/instr-ref-ir-reg-read.ll
    llvm/test/DebugInfo/X86/instr-ref-opt-bisect.ll
    llvm/test/DebugInfo/X86/instr-ref-opt-levels.ll
    llvm/test/DebugInfo/X86/instr-ref-sdag-empty-vreg.ll
    llvm/test/DebugInfo/X86/instr-ref-selectiondag.ll
    llvm/test/DebugInfo/X86/invalid-prologue-end.ll
    llvm/test/DebugInfo/X86/invalidated-dbg-value-is-undef.ll
    llvm/test/DebugInfo/X86/isel-cse-line.ll
    llvm/test/DebugInfo/X86/lexical-block-file-inline.ll
    llvm/test/DebugInfo/X86/lexical_block.ll
    llvm/test/DebugInfo/X86/licm-undef-dbg-value.ll
    llvm/test/DebugInfo/X86/line-info.ll
    llvm/test/DebugInfo/X86/live-debug-values-remove-range.ll
    llvm/test/DebugInfo/X86/live-debug-values.ll
    llvm/test/DebugInfo/X86/machinecse-wrongdebug-hoist.ll
    llvm/test/DebugInfo/X86/missing-abstract-variable.ll
    llvm/test/DebugInfo/X86/multiple-at-const-val.ll
    llvm/test/DebugInfo/X86/no-entry-values-with-O0.ll
    llvm/test/DebugInfo/X86/nodebug_with_debug_loc.ll
    llvm/test/DebugInfo/X86/nophysreg.ll
    llvm/test/DebugInfo/X86/noreturn_cpp11.ll
    llvm/test/DebugInfo/X86/objc-fwd-decl.ll
    llvm/test/DebugInfo/X86/objc-property-void.ll
    llvm/test/DebugInfo/X86/objc_direct.ll
    llvm/test/DebugInfo/X86/op_deref.ll
    llvm/test/DebugInfo/X86/parameters.ll
    llvm/test/DebugInfo/X86/pr28270.ll
    llvm/test/DebugInfo/X86/pr34545.ll
    llvm/test/DebugInfo/X86/pr40427.ll
    llvm/test/DebugInfo/X86/pr45181.ll
    llvm/test/DebugInfo/X86/range_reloc_base.ll
    llvm/test/DebugInfo/X86/reference-argument.ll
    llvm/test/DebugInfo/X86/rnglists_base_attr.ll
    llvm/test/DebugInfo/X86/rvalue-ref.ll
    llvm/test/DebugInfo/X86/safestack-byval.ll
    llvm/test/DebugInfo/X86/sret.ll
    llvm/test/DebugInfo/X86/sroa-after-inlining.ll
    llvm/test/DebugInfo/X86/sroasplit-1.ll
    llvm/test/DebugInfo/X86/sroasplit-2.ll
    llvm/test/DebugInfo/X86/sroasplit-3.ll
    llvm/test/DebugInfo/X86/sroasplit-4.ll
    llvm/test/DebugInfo/X86/sroasplit-5.ll
    llvm/test/DebugInfo/X86/sroasplit-dbg-declare.ll
    llvm/test/DebugInfo/X86/stack-args.ll
    llvm/test/DebugInfo/X86/stack-value-dwarf2.ll
    llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
    llvm/test/DebugInfo/X86/subrange-type.ll
    llvm/test/DebugInfo/X86/template.ll
    llvm/test/DebugInfo/X86/this-stack_value.ll
    llvm/test/DebugInfo/X86/tls.ll
    llvm/test/DebugInfo/X86/tu-to-non-named-type.ll
    llvm/test/DebugInfo/X86/tu-to-non-tu.ll
    llvm/test/DebugInfo/X86/type_units_with_addresses.ll
    llvm/test/DebugInfo/X86/union-const.ll
    llvm/test/DebugInfo/X86/vla-dependencies.ll
    llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def-2.ll
    llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll b/llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll
index fd44580bd762a..0ee313d88866e 100644
--- a/llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll
+++ b/llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll
@@ -21,33 +21,29 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
 target triple = "aarch64-apple-ios"
 
 %struct.B = type { %struct.A }
-%struct.A = type { i32 (...)** }
+%struct.A = type { ptr }
 
- at _ZTV1B = external unnamed_addr constant [4 x i8*]
+ at _ZTV1B = external unnamed_addr constant [4 x ptr]
 
 ; Function Attrs: nounwind
-define %struct.B* @_ZN1BC2Ev(%struct.B* %this) unnamed_addr #0 align 2 !dbg !28 {
+define ptr @_ZN1BC2Ev(ptr %this) unnamed_addr #0 align 2 !dbg !28 {
 entry:
-  tail call void @llvm.dbg.value(metadata %struct.B* %this, metadata !30, metadata !38), !dbg !39
-  %0 = getelementptr inbounds %struct.B, %struct.B* %this, i64 0, i32 0, !dbg !40
-  %call = tail call %struct.A* @_ZN1AC2Ev(%struct.A* %0) #3, !dbg !40
-  %1 = getelementptr inbounds %struct.B, %struct.B* %this, i64 0, i32 0, i32 0, !dbg !40
-  store i32 (...)** bitcast (i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @_ZTV1B, i64 0, i64 2) to i32 (...)**), i32 (...)*** %1, align 8, !dbg !40, !tbaa !41
-  ret %struct.B* %this, !dbg !40
+  tail call void @llvm.dbg.value(metadata ptr %this, metadata !30, metadata !38), !dbg !39
+  %call = tail call ptr @_ZN1AC2Ev(ptr %this) #3, !dbg !40
+  store ptr getelementptr inbounds ([4 x ptr], ptr @_ZTV1B, i64 0, i64 2), ptr %this, align 8, !dbg !40, !tbaa !41
+  ret ptr %this, !dbg !40
 }
 
-declare %struct.A* @_ZN1AC2Ev(%struct.A*)
+declare ptr @_ZN1AC2Ev(ptr)
 
 ; Function Attrs: nounwind
-define %struct.B* @_ZN1BC1Ev(%struct.B* %this) unnamed_addr #0 align 2 !dbg !32 {
+define ptr @_ZN1BC1Ev(ptr %this) unnamed_addr #0 align 2 !dbg !32 {
 entry:
-  tail call void @llvm.dbg.value(metadata %struct.B* %this, metadata !34, metadata !38), !dbg !44
-  tail call void @llvm.dbg.value(metadata %struct.B* %this, metadata !45, metadata !38) #3, !dbg !47
-  %0 = getelementptr inbounds %struct.B, %struct.B* %this, i64 0, i32 0, !dbg !48
-  %call.i = tail call %struct.A* @_ZN1AC2Ev(%struct.A* %0) #3, !dbg !48
-  %1 = getelementptr inbounds %struct.B, %struct.B* %this, i64 0, i32 0, i32 0, !dbg !48
-  store i32 (...)** bitcast (i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @_ZTV1B, i64 0, i64 2) to i32 (...)**), i32 (...)*** %1, align 8, !dbg !48, !tbaa !41
-  ret %struct.B* %this, !dbg !46
+  tail call void @llvm.dbg.value(metadata ptr %this, metadata !34, metadata !38), !dbg !44
+  tail call void @llvm.dbg.value(metadata ptr %this, metadata !45, metadata !38) #3, !dbg !47
+  %call.i = tail call ptr @_ZN1AC2Ev(ptr %this) #3, !dbg !48
+  store ptr getelementptr inbounds ([4 x ptr], ptr @_ZTV1B, i64 0, i64 2), ptr %this, align 8, !dbg !48, !tbaa !41
+  ret ptr %this, !dbg !46
 }
 
 ; Function Attrs: nounwind readnone

diff  --git a/llvm/test/DebugInfo/AArch64/coalescing.ll b/llvm/test/DebugInfo/AArch64/coalescing.ll
index c39f8841948e0..c71e32aabe0a2 100644
--- a/llvm/test/DebugInfo/AArch64/coalescing.ll
+++ b/llvm/test/DebugInfo/AArch64/coalescing.ll
@@ -1,7 +1,7 @@
 ; RUN: llc -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
 ;
 ; Generated at -Os from:
-; void *foo(void *dst);
+; ptr foo(ptr dst);
 ; void start() {
 ;   unsigned size;
 ;   foo(&size);
@@ -17,9 +17,8 @@ target triple = "arm64-apple-ios"
 define void @_Z5startv() #0 !dbg !4 {
 entry:
   %size = alloca i32, align 4
-  %0 = bitcast i32* %size to i8*, !dbg !15
-  %call = call i8* @_Z3fooPv(i8* %0) #3, !dbg !15
-  call void @llvm.dbg.value(metadata i32* %size, metadata !10, metadata !16), !dbg !17
+  %call = call ptr @_Z3fooPv(ptr %size) #3, !dbg !15
+  call void @llvm.dbg.value(metadata ptr %size, metadata !10, metadata !16), !dbg !17
 
   ; The *location* of the variable should be $sp+12. This tells the debugger to
   ; look up its value in [$sp+12].
@@ -32,7 +31,7 @@ entry:
 }
 
 ; Function Attrs: optsize
-declare i8* @_Z3fooPv(i8*) #1
+declare ptr @_Z3fooPv(ptr) #1
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, metadata, metadata) #2

diff  --git a/llvm/test/DebugInfo/AArch64/constant-dbgloc.ll b/llvm/test/DebugInfo/AArch64/constant-dbgloc.ll
index c55de8ad8b5fa..1281123360bff 100644
--- a/llvm/test/DebugInfo/AArch64/constant-dbgloc.ll
+++ b/llvm/test/DebugInfo/AArch64/constant-dbgloc.ll
@@ -16,7 +16,7 @@ target triple = "aarch64--linux-gnueabihf"
 define i32 @main() !dbg !4 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   ret i32 -1, !dbg !11
 }
 

diff  --git a/llvm/test/DebugInfo/AArch64/dbg-value-i8.ll b/llvm/test/DebugInfo/AArch64/dbg-value-i8.ll
index 6f9af80be7b5f..1532c111959e4 100644
--- a/llvm/test/DebugInfo/AArch64/dbg-value-i8.ll
+++ b/llvm/test/DebugInfo/AArch64/dbg-value-i8.ll
@@ -7,19 +7,19 @@ target triple = "aarch64"
 ; When ISel promotes the result of i8 add, the attached dbg.value shouldn't be dropped.
 ; CHECK: DBG_VALUE
 ; Function Attrs: nounwind
-define dso_local i32 @bar(i32*, i32) local_unnamed_addr #0 !dbg !10 {
+define dso_local i32 @bar(ptr, i32) local_unnamed_addr #0 !dbg !10 {
   %3 = trunc i32 %1 to i8, !dbg !20
   %4 = add i8 %3, 97, !dbg !20
   call void @llvm.dbg.value(metadata i8 %4, metadata !17, metadata !DIExpression()), !dbg !21
   %5 = zext i8 %4 to i32, !dbg !22
-  tail call void @foo1(i32* %0, i32 %5) #2, !dbg !23
-  tail call void @foo2(i32* %0, i8 %4) #2, !dbg !24
+  tail call void @foo1(ptr %0, i32 %5) #2, !dbg !23
+  tail call void @foo2(ptr %0, i8 %4) #2, !dbg !24
   ret i32 undef, !dbg !25
 }
 
-declare dso_local void @foo1(i32*, i32) local_unnamed_addr 
+declare dso_local void @foo1(ptr, i32) local_unnamed_addr 
 
-declare dso_local void @foo2(i32*, i8) local_unnamed_addr 
+declare dso_local void @foo2(ptr, i8) local_unnamed_addr 
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1

diff  --git a/llvm/test/DebugInfo/AArch64/eh_frame_personality.ll b/llvm/test/DebugInfo/AArch64/eh_frame_personality.ll
index ae5401b58fbf3..912ebf176e3c7 100644
--- a/llvm/test/DebugInfo/AArch64/eh_frame_personality.ll
+++ b/llvm/test/DebugInfo/AArch64/eh_frame_personality.ll
@@ -5,13 +5,13 @@ declare i32 @__gxx_personality_v0(...)
 
 declare void @bar()
 
-define i64 @foo(i64 %lhs, i64 %rhs) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define i64 @foo(i64 %lhs, i64 %rhs) personality ptr @__gxx_personality_v0 {
   invoke void @bar() to label %end unwind label %clean
 end:
  ret i64 0
 
 clean:
-  %tst = landingpad { i8*, i32 } cleanup
+  %tst = landingpad { ptr, i32 } cleanup
   ret i64 42
 }
 

diff  --git a/llvm/test/DebugInfo/AArch64/inlined-argument.ll b/llvm/test/DebugInfo/AArch64/inlined-argument.ll
index 4fb7663fa49b4..3850d8f21d234 100644
--- a/llvm/test/DebugInfo/AArch64/inlined-argument.ll
+++ b/llvm/test/DebugInfo/AArch64/inlined-argument.ll
@@ -10,12 +10,7 @@
 ; Generated from:
 ; typedef struct t *t_t;
 ; extern unsigned int enable;
-; struct t {
-;   struct q {
-;     struct q *next;
-;     unsigned long long resource;
-;   } * s;
-; } * tt;
+; struct t ptr tt;
 ; static unsigned long find(t_t t, unsigned long long resource) {
 ;   struct q *q;
 ;   q = t->s;
@@ -37,40 +32,38 @@ source_filename = "inlined-arg.c"
 target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
 target triple = "arm64-apple-ios5.0.0"
 
-%struct.t = type { %struct.q* }
-%struct.q = type { %struct.q*, i64 }
+%struct.t = type { ptr }
+%struct.q = type { ptr, i64 }
 
- at tt = common local_unnamed_addr global %struct.t* null, align 8, !dbg !0
+ at tt = common local_unnamed_addr global ptr null, align 8, !dbg !0
 
 ; Function Attrs: norecurse nounwind readonly ssp uwtable
-define i32 @g(%struct.t* nocapture readonly %t, i64 %r) local_unnamed_addr !dbg !21 {
+define i32 @g(ptr nocapture readonly %t, i64 %r) local_unnamed_addr !dbg !21 {
 entry:
-  call void @llvm.dbg.value(metadata %struct.t* %t, metadata !27, metadata !DIExpression()), !dbg !30
+  call void @llvm.dbg.value(metadata ptr %t, metadata !27, metadata !DIExpression()), !dbg !30
   call void @llvm.dbg.value(metadata i64 %r, metadata !28, metadata !DIExpression()), !dbg !31
-  call void @llvm.dbg.value(metadata %struct.t* %t, metadata !32, metadata !DIExpression()), !dbg !39
+  call void @llvm.dbg.value(metadata ptr %t, metadata !32, metadata !DIExpression()), !dbg !39
   call void @llvm.dbg.value(metadata i64 %r, metadata !37, metadata !DIExpression()), !dbg !41
-  %s.i = getelementptr inbounds %struct.t, %struct.t* %t, i64 0, i32 0, !dbg !42
-  %q.05.i = load %struct.q*, %struct.q** %s.i, align 8, !dbg !43, !tbaa !44
-  call void @llvm.dbg.value(metadata %struct.q* %q.05.i, metadata !38, metadata !DIExpression()), !dbg !48
-  %tobool6.i = icmp eq %struct.q* %q.05.i, null, !dbg !49
+  %q.05.i = load ptr, ptr %t, align 8, !dbg !43, !tbaa !44
+  call void @llvm.dbg.value(metadata ptr %q.05.i, metadata !38, metadata !DIExpression()), !dbg !48
+  %tobool6.i = icmp eq ptr %q.05.i, null, !dbg !49
   br i1 %tobool6.i, label %find.exit, label %while.body.i, !dbg !49
 
 while.body.i:                                     ; preds = %entry, %if.end.i
-  %q.07.i = phi %struct.q* [ %q.0.i, %if.end.i ], [ %q.05.i, %entry ]
-  %resource1.i = getelementptr inbounds %struct.q, %struct.q* %q.07.i, i64 0, i32 1, !dbg !50
-  %0 = load i64, i64* %resource1.i, align 8, !dbg !50, !tbaa !53
+  %q.07.i = phi ptr [ %q.0.i, %if.end.i ], [ %q.05.i, %entry ]
+  %resource1.i = getelementptr inbounds %struct.q, ptr %q.07.i, i64 0, i32 1, !dbg !50
+  %0 = load i64, ptr %resource1.i, align 8, !dbg !50, !tbaa !53
   %cmp.i = icmp eq i64 %0, %r, !dbg !56
   br i1 %cmp.i, label %find.exit, label %if.end.i, !dbg !57
 
 if.end.i:                                         ; preds = %while.body.i
-  %next.i = getelementptr inbounds %struct.q, %struct.q* %q.07.i, i64 0, i32 0, !dbg !58
-  %q.0.i = load %struct.q*, %struct.q** %next.i, align 8, !dbg !43, !tbaa !44
-  call void @llvm.dbg.value(metadata %struct.q* %q.0.i, metadata !38, metadata !DIExpression()), !dbg !48
-  %tobool.i = icmp eq %struct.q* %q.0.i, null, !dbg !49
+  %q.0.i = load ptr, ptr %q.07.i, align 8, !dbg !43, !tbaa !44
+  call void @llvm.dbg.value(metadata ptr %q.0.i, metadata !38, metadata !DIExpression()), !dbg !48
+  %tobool.i = icmp eq ptr %q.0.i, null, !dbg !49
   br i1 %tobool.i, label %find.exit, label %while.body.i, !dbg !49, !llvm.loop !59
 
 find.exit:                                        ; preds = %while.body.i, %if.end.i, %entry
-  call void @llvm.dbg.value(metadata %struct.q* undef, metadata !29, metadata !DIExpression()), !dbg !61
+  call void @llvm.dbg.value(metadata ptr undef, metadata !29, metadata !DIExpression()), !dbg !61
   ret i32 undef, !dbg !62
 }
 

diff  --git a/llvm/test/DebugInfo/AArch64/ir-outliner.ll b/llvm/test/DebugInfo/AArch64/ir-outliner.ll
index 8b500d9ebec4e..bcf76ab827d9f 100644
--- a/llvm/test/DebugInfo/AArch64/ir-outliner.ll
+++ b/llvm/test/DebugInfo/AArch64/ir-outliner.ll
@@ -30,19 +30,19 @@
 define void @outline_debug1() !dbg !6 {
 entry:
   %a = alloca i32, align 4, !dbg !17
-  call void @llvm.dbg.value(metadata i32* %a, metadata !9, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.value(metadata ptr %a, metadata !9, metadata !DIExpression()), !dbg !17
   %b = alloca i32, align 4, !dbg !18
-  call void @llvm.dbg.value(metadata i32* %b, metadata !11, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %b, metadata !11, metadata !DIExpression()), !dbg !18
   %c = alloca i32, align 4, !dbg !19
-  call void @llvm.dbg.value(metadata i32* %c, metadata !12, metadata !DIExpression()), !dbg !19
-  store i32 2, i32* %a, align 4, !dbg !20
-  store i32 3, i32* %b, align 4, !dbg !21
-  store i32 4, i32* %c, align 4, !dbg !22
-  %al = load i32, i32* %a, align 4, !dbg !23
+  call void @llvm.dbg.value(metadata ptr %c, metadata !12, metadata !DIExpression()), !dbg !19
+  store i32 2, ptr %a, align 4, !dbg !20
+  store i32 3, ptr %b, align 4, !dbg !21
+  store i32 4, ptr %c, align 4, !dbg !22
+  %al = load i32, ptr %a, align 4, !dbg !23
   call void @llvm.dbg.value(metadata i32 %al, metadata !13, metadata !DIExpression()), !dbg !23
-  %bl = load i32, i32* %b, align 4, !dbg !24
+  %bl = load i32, ptr %b, align 4, !dbg !24
   call void @llvm.dbg.value(metadata i32 %bl, metadata !15, metadata !DIExpression()), !dbg !24
-  %cl = load i32, i32* %c, align 4, !dbg !25
+  %cl = load i32, ptr %c, align 4, !dbg !25
   call void @llvm.dbg.value(metadata i32 %cl, metadata !16, metadata !DIExpression()), !dbg !25
   ret void, !dbg !26
 }
@@ -50,19 +50,19 @@ entry:
 define void @outline_debug2() !dbg !27 {
 entry:
   %a = alloca i32, align 4, !dbg !35
-  call void @llvm.dbg.value(metadata i32* %a, metadata !29, metadata !DIExpression()), !dbg !35
+  call void @llvm.dbg.value(metadata ptr %a, metadata !29, metadata !DIExpression()), !dbg !35
   %b = alloca i32, align 4, !dbg !36
-  call void @llvm.dbg.value(metadata i32* %b, metadata !30, metadata !DIExpression()), !dbg !36
+  call void @llvm.dbg.value(metadata ptr %b, metadata !30, metadata !DIExpression()), !dbg !36
   %c = alloca i32, align 4, !dbg !37
-  call void @llvm.dbg.value(metadata i32* %c, metadata !31, metadata !DIExpression()), !dbg !37
-  store i32 2, i32* %a, align 4, !dbg !38
-  store i32 3, i32* %b, align 4, !dbg !39
-  store i32 4, i32* %c, align 4, !dbg !40
-  %al = load i32, i32* %a, align 4, !dbg !41
+  call void @llvm.dbg.value(metadata ptr %c, metadata !31, metadata !DIExpression()), !dbg !37
+  store i32 2, ptr %a, align 4, !dbg !38
+  store i32 3, ptr %b, align 4, !dbg !39
+  store i32 4, ptr %c, align 4, !dbg !40
+  %al = load i32, ptr %a, align 4, !dbg !41
   call void @llvm.dbg.value(metadata i32 %al, metadata !32, metadata !DIExpression()), !dbg !41
-  %bl = load i32, i32* %b, align 4, !dbg !42
+  %bl = load i32, ptr %b, align 4, !dbg !42
   call void @llvm.dbg.value(metadata i32 %bl, metadata !33, metadata !DIExpression()), !dbg !42
-  %cl = load i32, i32* %c, align 4, !dbg !43
+  %cl = load i32, ptr %c, align 4, !dbg !43
   call void @llvm.dbg.value(metadata i32 %cl, metadata !34, metadata !DIExpression()), !dbg !43
   ret void, !dbg !44
 }
@@ -125,34 +125,34 @@ attributes #0 = { nounwind readnone speculatable willreturn }
 ; IRDEBUG-LABEL: @outline_debug1(
 ; IRDEBUG-NEXT:  entry:
 ; IRDEBUG-NEXT:    [[A:%.*]] = alloca i32, align 4, !dbg [[DBG17:![0-9]+]]
-; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata i32* [[A]], metadata [[META9:![0-9]+]], metadata !DIExpression()), !dbg [[DBG17]]
+; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata ptr [[A]], metadata [[META9:![0-9]+]], metadata !DIExpression()), !dbg [[DBG17]]
 ; IRDEBUG-NEXT:    [[B:%.*]] = alloca i32, align 4, !dbg [[DBG18:![0-9]+]]
-; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata i32* [[B]], metadata [[META11:![0-9]+]], metadata !DIExpression()), !dbg [[DBG18]]
+; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata ptr [[B]], metadata [[META11:![0-9]+]], metadata !DIExpression()), !dbg [[DBG18]]
 ; IRDEBUG-NEXT:    [[C:%.*]] = alloca i32, align 4, !dbg [[DBG19:![0-9]+]]
-; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata i32* [[C]], metadata [[META12:![0-9]+]], metadata !DIExpression()), !dbg [[DBG19]]
-; IRDEBUG-NEXT:    call void @outlined_ir_func_0(i32* [[A]], i32* [[B]], i32* [[C]]), !dbg [[DBG20:![0-9]+]]
+; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata ptr [[C]], metadata [[META12:![0-9]+]], metadata !DIExpression()), !dbg [[DBG19]]
+; IRDEBUG-NEXT:    call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[C]]), !dbg [[DBG20:![0-9]+]]
 ; IRDEBUG-NEXT:    ret void, !dbg [[DBG21:![0-9]+]]
 ;
 ;
 ; IRDEBUG-LABEL: @outline_debug2(
 ; IRDEBUG-NEXT:  entry:
 ; IRDEBUG-NEXT:    [[A:%.*]] = alloca i32, align 4, !dbg [[DBG30:![0-9]+]]
-; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata i32* [[A]], metadata [[META24:![0-9]+]], metadata !DIExpression()), !dbg [[DBG30]]
+; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata ptr [[A]], metadata [[META24:![0-9]+]], metadata !DIExpression()), !dbg [[DBG30]]
 ; IRDEBUG-NEXT:    [[B:%.*]] = alloca i32, align 4, !dbg [[DBG31:![0-9]+]]
-; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata i32* [[B]], metadata [[META25:![0-9]+]], metadata !DIExpression()), !dbg [[DBG31]]
+; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata ptr [[B]], metadata [[META25:![0-9]+]], metadata !DIExpression()), !dbg [[DBG31]]
 ; IRDEBUG-NEXT:    [[C:%.*]] = alloca i32, align 4, !dbg [[DBG32:![0-9]+]]
-; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata i32* [[C]], metadata [[META26:![0-9]+]], metadata !DIExpression()), !dbg [[DBG32]]
-; IRDEBUG-NEXT:    call void @outlined_ir_func_0(i32* [[A]], i32* [[B]], i32* [[C]]), !dbg [[DBG33:![0-9]+]]
+; IRDEBUG-NEXT:    call void @llvm.dbg.value(metadata ptr [[C]], metadata [[META26:![0-9]+]], metadata !DIExpression()), !dbg [[DBG32]]
+; IRDEBUG-NEXT:    call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[C]]), !dbg [[DBG33:![0-9]+]]
 ; IRDEBUG-NEXT:    ret void, !dbg [[DBG34:![0-9]+]]
 ;
 ;
-; IRDEBUG: @outlined_ir_func_0(i32* [[TMP0:%.*]], i32* [[TMP1:%.*]], i32*  [[TMP2:%.*]])
+; IRDEBUG: @outlined_ir_func_0(ptr [[TMP0:%.*]], ptr [[TMP1:%.*]], ptr  [[TMP2:%.*]])
 ; IRDEBUG:       entry_to_outline:
-; IRDEBUG-NEXT:    store i32 2, i32* [[TMP0]], align 4
-; IRDEBUG-NEXT:    store i32 3, i32* [[TMP1]], align 4
-; IRDEBUG-NEXT:    store i32 4, i32* [[TMP2]], align 4
-; IRDEBUG-NEXT:    [[AL:%.*]] = load i32, i32* [[TMP0]], align 4
-; IRDEBUG-NEXT:    [[BL:%.*]] = load i32, i32* [[TMP1]], align 4
-; IRDEBUG-NEXT:    [[CL:%.*]] = load i32, i32* [[TMP2]], align 4
+; IRDEBUG-NEXT:    store i32 2, ptr [[TMP0]], align 4
+; IRDEBUG-NEXT:    store i32 3, ptr [[TMP1]], align 4
+; IRDEBUG-NEXT:    store i32 4, ptr [[TMP2]], align 4
+; IRDEBUG-NEXT:    [[AL:%.*]] = load i32, ptr [[TMP0]], align 4
+; IRDEBUG-NEXT:    [[BL:%.*]] = load i32, ptr [[TMP1]], align 4
+; IRDEBUG-NEXT:    [[CL:%.*]] = load i32, ptr [[TMP2]], align 4
 ; IRDEBUG-NEXT:    br label [[ENTRY_AFTER_OUTLINE_EXITSTUB:%.*]]
 ;

diff  --git a/llvm/test/DebugInfo/AArch64/pr40709.ll b/llvm/test/DebugInfo/AArch64/pr40709.ll
index 0b3b3a39a5db5..7d744366f3af4 100644
--- a/llvm/test/DebugInfo/AArch64/pr40709.ll
+++ b/llvm/test/DebugInfo/AArch64/pr40709.ll
@@ -8,15 +8,15 @@
 %struct.mystruct = type { double, double, double, double, double }
 
 @.str = private unnamed_addr constant [5 x i8] c"%llu\00", align 1
-define dso_local void @foo(%struct.mystruct* %ms) !dbg !9 {
+define dso_local void @foo(ptr %ms) !dbg !9 {
 entry:
-  call void @llvm.dbg.declare(metadata %struct.mystruct* %ms, metadata !21, metadata !DIExpression()), !dbg !22
-  %0 = ptrtoint %struct.mystruct* %ms to i64, !dbg !23
-  %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i64 %0), !dbg !24
+  call void @llvm.dbg.declare(metadata ptr %ms, metadata !21, metadata !DIExpression()), !dbg !22
+  %0 = ptrtoint ptr %ms to i64, !dbg !23
+  %call = call i32 (ptr, ...) @printf(ptr @.str, i64 %0), !dbg !24
   ret void, !dbg !25
 }
 declare void @llvm.dbg.declare(metadata, metadata, metadata)
-declare dso_local i32 @printf(i8*, ...)
+declare dso_local i32 @printf(ptr, ...)
 
 
 !llvm.dbg.cu = !{!0}

diff  --git a/llvm/test/DebugInfo/AArch64/struct_by_value.ll b/llvm/test/DebugInfo/AArch64/struct_by_value.ll
index e1de17df8b6bf..a6f08a89b437d 100644
--- a/llvm/test/DebugInfo/AArch64/struct_by_value.ll
+++ b/llvm/test/DebugInfo/AArch64/struct_by_value.ll
@@ -32,11 +32,10 @@ target triple = "arm64-apple-ios3.0.0"
 %struct.five = type { i32, i32, i32, i32, i32 }
 
 ; Function Attrs: nounwind ssp
-define i32 @return_five_int(%struct.five* %f) #0 !dbg !4 {
+define i32 @return_five_int(ptr %f) #0 !dbg !4 {
 entry:
-  call void @llvm.dbg.declare(metadata %struct.five* %f, metadata !17, metadata !DIExpression(DW_OP_deref)), !dbg !18
-  %a = getelementptr inbounds %struct.five, %struct.five* %f, i32 0, i32 0, !dbg !19
-  %0 = load i32, i32* %a, align 4, !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %f, metadata !17, metadata !DIExpression(DW_OP_deref)), !dbg !18
+  %0 = load i32, ptr %f, align 4, !dbg !19
   ret i32 %0, !dbg !19
 }
 

diff  --git a/llvm/test/DebugInfo/AArch64/tls-at-location.ll b/llvm/test/DebugInfo/AArch64/tls-at-location.ll
index e0cbe4123e241..20a0afb789771 100644
--- a/llvm/test/DebugInfo/AArch64/tls-at-location.ll
+++ b/llvm/test/DebugInfo/AArch64/tls-at-location.ll
@@ -9,7 +9,7 @@
 ; Function Attrs: noinline nounwind optnone
 define i32 @foo() #0 !dbg !11 {
 entry:
-  %0 = load i32, i32* @var, align 4, !dbg !14
+  %0 = load i32, ptr @var, align 4, !dbg !14
   ret i32 %0, !dbg !15
 }
 

diff  --git a/llvm/test/DebugInfo/ARM/PR26163.ll b/llvm/test/DebugInfo/ARM/PR26163.ll
index daa07c7a3fe2b..b96ac76474185 100644
--- a/llvm/test/DebugInfo/ARM/PR26163.ll
+++ b/llvm/test/DebugInfo/ARM/PR26163.ll
@@ -26,7 +26,7 @@
 ; 	int tv_usec;
 ; };
 ;
-; void *memset(void *, int, size_t);
+; ptr memset(ptr, int, size_t);
 ; void foo(void);
 ;
 ; static void
@@ -62,7 +62,7 @@ declare void @foo()
 define i32 @parse_config_file() !dbg !4 {
 entry:
   tail call void @llvm.dbg.value(metadata i32 0, metadata !15, metadata !26), !dbg !27
-  tail call void @llvm.dbg.declare(metadata %struct.timeval* undef, metadata !16, metadata !26), !dbg !29
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !16, metadata !26), !dbg !29
   tail call void @llvm.dbg.value(metadata i64 0, metadata !16, metadata !30), !dbg !29
   tail call void @llvm.dbg.value(metadata i32 0, metadata !16, metadata !31), !dbg !29
   tail call void @foo() #3, !dbg !32

diff  --git a/llvm/test/DebugInfo/ARM/constant-dbgloc.ll b/llvm/test/DebugInfo/ARM/constant-dbgloc.ll
index 5994ce5154b14..c3b65ff6e19d5 100644
--- a/llvm/test/DebugInfo/ARM/constant-dbgloc.ll
+++ b/llvm/test/DebugInfo/ARM/constant-dbgloc.ll
@@ -16,7 +16,7 @@ target triple = "armv7--linux-gnueabihf"
 define i32 @main() !dbg !4 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   ret i32 -1, !dbg !11
 }
 

diff  --git a/llvm/test/DebugInfo/ARM/entry-value-multi-byte-expr.ll b/llvm/test/DebugInfo/ARM/entry-value-multi-byte-expr.ll
index 243e28357be7e..55cae153ee52e 100644
--- a/llvm/test/DebugInfo/ARM/entry-value-multi-byte-expr.ll
+++ b/llvm/test/DebugInfo/ARM/entry-value-multi-byte-expr.ll
@@ -50,7 +50,7 @@ entry:
   call void @llvm.dbg.value(metadata double %a, metadata !17, metadata !DIExpression()), !dbg !19
   call void @llvm.dbg.value(metadata double %b, metadata !18, metadata !DIExpression()), !dbg !19
   %add = fadd double %a, %b, !dbg !20
-  store double %add, double* @global, align 8, !dbg !20
+  store double %add, ptr @global, align 8, !dbg !20
   tail call arm_aapcs_vfpcc void @clobber(), !dbg !21
   ret i32 1, !dbg !22
 }

diff  --git a/llvm/test/DebugInfo/ARM/illegal-fragment.ll b/llvm/test/DebugInfo/ARM/illegal-fragment.ll
index 90cdd9c239a8c..494cdee0c68be 100644
--- a/llvm/test/DebugInfo/ARM/illegal-fragment.ll
+++ b/llvm/test/DebugInfo/ARM/illegal-fragment.ll
@@ -8,10 +8,10 @@ target triple = "thumbv7s-apple-ios5.0.0"
 %struct.vm_object = type { i64 }
 
 ; Function Attrs: nounwind ssp
-define void @f(%struct.vm_object* %object, i64* nocapture readonly %start) local_unnamed_addr #0 !dbg !11 {
+define void @f(ptr %object, ptr nocapture readonly %start) local_unnamed_addr #0 !dbg !11 {
 entry:
-  tail call void @llvm.dbg.value(metadata %struct.vm_object* %object, metadata !21, metadata !DIExpression()), !dbg !27
-  tail call void @llvm.dbg.value(metadata i64* %start, metadata !22, metadata !DIExpression()), !dbg !28
+  tail call void @llvm.dbg.value(metadata ptr %object, metadata !21, metadata !DIExpression()), !dbg !27
+  tail call void @llvm.dbg.value(metadata ptr %start, metadata !22, metadata !DIExpression()), !dbg !28
   tail call void @llvm.dbg.value(metadata i64 %0, metadata !25, metadata !DIExpression()), !dbg !29
   tail call void @llvm.dbg.value(metadata i64 %0, metadata !26, metadata !DIExpression(DW_OP_constu, 4096, DW_OP_minus, DW_OP_stack_value)), !dbg !30
   ; This debug value cannot safely be split into two 32-bit pieces.
@@ -20,7 +20,7 @@ entry:
   br i1 undef, label %for.end, label %for.body.lr.ph, !dbg !31
 
 for.body.lr.ph:                                   ; preds = %entry
-  %0 = load i64, i64* %start, align 4, !dbg !33
+  %0 = load i64, ptr %start, align 4, !dbg !33
   br label %for.body, !dbg !31
 
 for.body:                                         ; preds = %for.body, %for.body.lr.ph
@@ -28,7 +28,7 @@ for.body:                                         ; preds = %for.body, %for.body
   %head_size.09 = phi i32 [ undef, %for.body.lr.ph ], [ %sub2, %for.body ]
   %offset.010 = add i64 %offset.010.in, -4096
   tail call void @llvm.dbg.value(metadata i32 %head_size.09, metadata !23, metadata !DIExpression()), !dbg !30
-  %call = tail call i32 bitcast (i32 (...)* @use to i32 (i64, %struct.vm_object*)*)(i64 %offset.010, %struct.vm_object* %object) #2, !dbg !34
+  %call = tail call i32 @use(i64 %offset.010, ptr %object) #2, !dbg !34
   %sub2 = add i32 %head_size.09, -4096, !dbg !37
   tail call void @llvm.dbg.value(metadata i64 %offset.010, metadata !26, metadata !DIExpression(DW_OP_constu, 4096, DW_OP_minus, DW_OP_stack_value)), !dbg !29
   tail call void @llvm.dbg.value(metadata i32 %sub2, metadata !23, metadata !DIExpression()), !dbg !30

diff  --git a/llvm/test/DebugInfo/ARM/lowerbdgdeclare_vla.ll b/llvm/test/DebugInfo/ARM/lowerbdgdeclare_vla.ll
index 51d3b3975775d..0b3375d511ebf 100644
--- a/llvm/test/DebugInfo/ARM/lowerbdgdeclare_vla.ll
+++ b/llvm/test/DebugInfo/ARM/lowerbdgdeclare_vla.ll
@@ -23,13 +23,13 @@ entry:
   %conv = fptosi float %r to i32, !dbg !23
   tail call void @llvm.dbg.declare(metadata i32 %conv, metadata !12, metadata !DIExpression()), !dbg !23
   %vla = alloca float, i32 %conv, align 4, !dbg !24
-  tail call void @llvm.dbg.declare(metadata float* %vla, metadata !14, metadata !DIExpression(DW_OP_deref)), !dbg !24
+  tail call void @llvm.dbg.declare(metadata ptr %vla, metadata !14, metadata !DIExpression(DW_OP_deref)), !dbg !24
 ; The VLA alloca should be described by a dbg.declare:
-; CHECK: call void @llvm.dbg.declare(metadata float* %vla, metadata ![[VLA:.*]], metadata {{.*}})
+; CHECK: call void @llvm.dbg.declare(metadata ptr %vla, metadata ![[VLA:.*]], metadata {{.*}})
 ; The VLA alloca and following store into the array should not be lowered to like this:
 ; CHECK-NOT:  call void @llvm.dbg.value(metadata float %r, metadata ![[VLA]])
 ; the backend interprets this as "vla has the location of %r".
-  store float %r, float* %vla, align 4, !dbg !25, !tbaa !26
+  store float %r, ptr %vla, align 4, !dbg !25, !tbaa !26
   tail call void @llvm.dbg.value(metadata i32 0, metadata !18, metadata !DIExpression()), !dbg !30
   %cmp8 = icmp sgt i32 %conv, 0, !dbg !30
   br i1 %cmp8, label %for.body, label %for.end, !dbg !30
@@ -37,17 +37,17 @@ entry:
 for.body:                                         ; preds = %entry, %for.body.for.body_crit_edge
   %0 = phi float [ %.pre, %for.body.for.body_crit_edge ], [ %r, %entry ]
   %i.09 = phi i32 [ %inc, %for.body.for.body_crit_edge ], [ 0, %entry ]
-  %arrayidx2 = getelementptr inbounds float, float* %vla, i32 %i.09, !dbg !31
+  %arrayidx2 = getelementptr inbounds float, ptr %vla, i32 %i.09, !dbg !31
   %div = fdiv float %0, %r, !dbg !31
-  store float %div, float* %arrayidx2, align 4, !dbg !31, !tbaa !26
+  store float %div, ptr %arrayidx2, align 4, !dbg !31, !tbaa !26
   %inc = add nsw i32 %i.09, 1, !dbg !30
   tail call void @llvm.dbg.value(metadata i32 %inc, metadata !18, metadata !DIExpression()), !dbg !30
   %exitcond = icmp eq i32 %inc, %conv, !dbg !30
   br i1 %exitcond, label %for.end, label %for.body.for.body_crit_edge, !dbg !30
 
 for.body.for.body_crit_edge:                      ; preds = %for.body
-  %arrayidx2.phi.trans.insert = getelementptr inbounds float, float* %vla, i32 %inc
-  %.pre = load float, float* %arrayidx2.phi.trans.insert, align 4, !dbg !31, !tbaa !26
+  %arrayidx2.phi.trans.insert = getelementptr inbounds float, ptr %vla, i32 %inc
+  %.pre = load float, ptr %arrayidx2.phi.trans.insert, align 4, !dbg !31, !tbaa !26
   br label %for.body, !dbg !30
 
 for.end:                                          ; preds = %for.body, %entry

diff  --git a/llvm/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll b/llvm/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll
index 472810beec321..d21f1bf5bd905 100644
--- a/llvm/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll
+++ b/llvm/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll
@@ -22,8 +22,8 @@ target triple = "armv7--linux-gnueabihf"
 ; Function Attrs: nounwind
 define void @proc() #0 !dbg !13 {
 entry:
-  store i8 65, i8* @ch, align 1, !dbg !17
-  store i32 0, i32* @b, align 4, !dbg !18
+  store i8 65, ptr @ch, align 1, !dbg !17
+  store i32 0, ptr @b, align 4, !dbg !18
   ret void, !dbg !19
 }
 

diff  --git a/llvm/test/DebugInfo/ARM/salvage-debug-info.ll b/llvm/test/DebugInfo/ARM/salvage-debug-info.ll
index 15f6a8ac1a824..3717abada42e1 100644
--- a/llvm/test/DebugInfo/ARM/salvage-debug-info.ll
+++ b/llvm/test/DebugInfo/ARM/salvage-debug-info.ll
@@ -24,35 +24,34 @@ target triple = "thumbv7k-apple-ios10.0.0"
 ; Function Attrs: nounwind ssp uwtable
 define void @f() local_unnamed_addr #0 !dbg !16 {
 entry:
-  %0 = load i32, i32* @p, align 4, !dbg !25
+  %0 = load i32, ptr @p, align 4, !dbg !25
   %tobool = icmp eq i32 %0, 0, !dbg !25
   br i1 %tobool, label %if.end, label %if.then, !dbg !26
 
 if.then:                                          ; preds = %entry
-  %1 = inttoptr i32 %0 to %struct.info*, !dbg !27
-  tail call void @llvm.dbg.value(metadata %struct.info* %1, metadata !22, metadata !DIExpression()), !dbg !28
+  %1 = inttoptr i32 %0 to ptr, !dbg !27
+  tail call void @llvm.dbg.value(metadata ptr %1, metadata !22, metadata !DIExpression()), !dbg !28
   ; CHECK: call void @llvm.dbg.value(metadata i32 %0, metadata !22, metadata !DIExpression())
   tail call void @llvm.dbg.value(metadata i32 0, metadata !20, metadata !DIExpression()), !dbg !29
-  %2 = load i32, i32* @n, align 4, !dbg !30
+  %2 = load i32, ptr @n, align 4, !dbg !30
   %cmp5 = icmp eq i32 %2, 0, !dbg !33
   br i1 %cmp5, label %if.end, label %for.body.preheader, !dbg !34
 
 for.body.preheader:                               ; preds = %if.then
   ; CHECK: for.body.preheader:
-  ; CHECK:   %2 = inttoptr i32 %0 to %struct.info*
+  ; CHECK:   %2 = inttoptr i32 %0 to ptr
   br label %for.body, !dbg !35
 
 for.body:                                         ; preds = %for.body.preheader, %for.body
-  %lsr.iv = phi %struct.info* [ %1, %for.body.preheader ], [ %scevgep, %for.body ]
+  %lsr.iv = phi ptr [ %1, %for.body.preheader ], [ %scevgep, %for.body ]
   %i.06 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]
-  %lsr.iv7 = bitcast %struct.info* %lsr.iv to i64*
   tail call void @llvm.dbg.value(metadata i32 %i.06, metadata !20, metadata !DIExpression()), !dbg !29
-  %3 = load i64, i64* %lsr.iv7, align 8, !dbg !35
-  %call = tail call i32 bitcast (i32 (...)* @use to i32 (i64)*)(i64 %3) #3, !dbg !36
+  %3 = load i64, ptr %lsr.iv, align 8, !dbg !35
+  %call = tail call i32 @use(i64 %3) #3, !dbg !36
   %inc = add nuw i32 %i.06, 1, !dbg !37
   tail call void @llvm.dbg.value(metadata i32 %inc, metadata !20, metadata !DIExpression()), !dbg !29
-  %4 = load i32, i32* @n, align 4, !dbg !30
-  %scevgep = getelementptr %struct.info, %struct.info* %lsr.iv, i32 1, !dbg !33
+  %4 = load i32, ptr @n, align 4, !dbg !30
+  %scevgep = getelementptr %struct.info, ptr %lsr.iv, i32 1, !dbg !33
   %cmp = icmp ult i32 %inc, %4, !dbg !33
   br i1 %cmp, label %for.body, label %if.end.loopexit, !dbg !34, !llvm.loop !38
 

diff  --git a/llvm/test/DebugInfo/ARM/sdag-split-arg.ll b/llvm/test/DebugInfo/ARM/sdag-split-arg.ll
index 17f340a069024..9699c102c0b76 100644
--- a/llvm/test/DebugInfo/ARM/sdag-split-arg.ll
+++ b/llvm/test/DebugInfo/ARM/sdag-split-arg.ll
@@ -22,7 +22,7 @@ define i64 @_Z3foox(i64 returned) local_unnamed_addr #0 !dbg !13 {
   ; CHECK: @DEBUG_VALUE: foo:offset <- [DW_OP_LLVM_fragment 0 32] $r5
   ; CHECK: @DEBUG_VALUE: foo:offset <- [DW_OP_LLVM_fragment 32 32] $r4
 
-  %2 = load i64, i64* @g, align 8, !dbg !19, !tbaa !21
+  %2 = load i64, ptr @g, align 8, !dbg !19, !tbaa !21
   %3 = icmp eq i64 %2, %0, !dbg !19
   br i1 %3, label %5, label %4, !dbg !25
 

diff  --git a/llvm/test/DebugInfo/ARM/selectiondag-deadcode.ll b/llvm/test/DebugInfo/ARM/selectiondag-deadcode.ll
index ca0cb3486dd78..a65c850822e66 100644
--- a/llvm/test/DebugInfo/ARM/selectiondag-deadcode.ll
+++ b/llvm/test/DebugInfo/ARM/selectiondag-deadcode.ll
@@ -1,7 +1,7 @@
 ; RUN: llc -filetype=asm < %s | FileCheck %s
 target triple = "thumbv7-apple-ios7.0.0"
 %class.Matrix3.0.6.10 = type { [9 x float] }
-define arm_aapcscc void @_Z9GetMatrixv(%class.Matrix3.0.6.10* noalias nocapture sret(%class.Matrix3.0.6.10) %agg.result) #0 !dbg !39 {
+define arm_aapcscc void @_Z9GetMatrixv(ptr noalias nocapture sret(%class.Matrix3.0.6.10) %agg.result) #0 !dbg !39 {
   %fmul = fmul float undef, undef
   %fadd = fadd float %fmul, %fmul
   %fadd2 = fadd float %fadd, %fmul
@@ -17,8 +17,8 @@ _ZN7Vector39NormalizeEv.exit:                     ; preds = %1, %0
   ; and SelectionDAGISel crashes.  It should definitely not
   ; crash. Drop the dbg_value instead.
   ; CHECK-NOT: "matrix"
-  tail call void @llvm.dbg.declare(metadata %class.Matrix3.0.6.10* %agg.result, metadata !45, metadata !DIExpression())
-  %2 = getelementptr inbounds %class.Matrix3.0.6.10, %class.Matrix3.0.6.10* %agg.result, i32 0, i32 0, i32 8
+  tail call void @llvm.dbg.declare(metadata ptr %agg.result, metadata !45, metadata !DIExpression())
+  %2 = getelementptr inbounds %class.Matrix3.0.6.10, ptr %agg.result, i32 0, i32 0, i32 8
   ret void
 }
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1

diff  --git a/llvm/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll b/llvm/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll
index af76c88935350..bcfba68baa88f 100644
--- a/llvm/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll
+++ b/llvm/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll
@@ -17,16 +17,16 @@ define i32 @main() !dbg !4 {
 entry:
   %retval = alloca i32, align 4
   %x = alloca i32, align 4
-  store i32 0, i32* %retval
-  call void @llvm.dbg.declare(metadata i32* %x, metadata !10, metadata !11), !dbg !12
-  store i32 0, i32* %x, align 4, !dbg !12
-  %0 = load i32, i32* %x, align 4, !dbg !13
+  store i32 0, ptr %retval
+  call void @llvm.dbg.declare(metadata ptr %x, metadata !10, metadata !11), !dbg !12
+  store i32 0, ptr %x, align 4, !dbg !12
+  %0 = load i32, ptr %x, align 4, !dbg !13
   %cmp = icmp sgt i32 %0, 0, !dbg !15
   br i1 %cmp, label %if.then, label %if.end, !dbg !16
 
 if.then:                                          ; preds = %entry
-  %1 = load i32, i32* %x, align 4, !dbg !17
-  store i32 %1, i32* %retval, !dbg !18
+  %1 = load i32, ptr %x, align 4, !dbg !17
+  store i32 %1, ptr %retval, !dbg !18
   br label %return, !dbg !18
 
 if.end:                                           ; preds = %entry
@@ -37,15 +37,15 @@ if.end:                                           ; preds = %entry
 ; The backend performs the store to %retval first, for some reason.
 ; CHECK-NEXT: .loc    1 7 5
 ; CHECK-NEXT: str     r0, [sp, #4]
-  store i32 -1, i32* %x, align 4, !dbg !19
+  store i32 -1, ptr %x, align 4, !dbg !19
 
 ; CHECK-NEXT: .loc    1 6 7
 ; CHECK-NEXT: str     r0, [sp]
-  store i32 -1, i32* %retval, !dbg !20
+  store i32 -1, ptr %retval, !dbg !20
   br label %return, !dbg !20
 
 return:                                           ; preds = %if.end, %if.then
-  %2 = load i32, i32* %retval, !dbg !21
+  %2 = load i32, ptr %retval, !dbg !21
   ret i32 %2, !dbg !21
 }
 

diff  --git a/llvm/test/DebugInfo/ARM/split-complex.ll b/llvm/test/DebugInfo/ARM/split-complex.ll
index 5ac25c5e9b56f..8ac5d4f0aaba6 100644
--- a/llvm/test/DebugInfo/ARM/split-complex.ll
+++ b/llvm/test/DebugInfo/ARM/split-complex.ll
@@ -7,7 +7,7 @@
 ; Function Attrs: nounwind readnone
 define arm_aapcscc void @f([2 x i64] %c.coerce) #0 !dbg !4 {
 entry:
-  tail call void @llvm.dbg.declare(metadata { double, double }* undef, metadata !14, metadata !15), !dbg !16
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !14, metadata !15), !dbg !16
   ; The target has no native double type.
   ; SROA split the complex value into two i64 values.
   ; CHECK: DW_TAG_formal_parameter

diff  --git a/llvm/test/DebugInfo/ARM/sroa-complex.ll b/llvm/test/DebugInfo/ARM/sroa-complex.ll
index ab0b2aa96cf9d..7e81e488d59ea 100644
--- a/llvm/test/DebugInfo/ARM/sroa-complex.ll
+++ b/llvm/test/DebugInfo/ARM/sroa-complex.ll
@@ -9,18 +9,17 @@ target triple = "thumbv7-apple-unknown-macho"
 define arm_aapcscc void @f([2 x i64] %c.coerce) #0 !dbg !4 {
 entry:
   %c = alloca { double, double }, align 8
-  %0 = bitcast { double, double }* %c to [2 x i64]*
-  store [2 x i64] %c.coerce, [2 x i64]* %0, align 8
-  call void @llvm.dbg.declare(metadata { double, double }* %c, metadata !14, metadata !15), !dbg !16
-  %c.realp = getelementptr inbounds { double, double }, { double, double }* %c, i32 0, i32 0, !dbg !17
-  %c.imagp = getelementptr inbounds { double, double }, { double, double }* %c, i32 0, i32 1, !dbg !17
-  store double 0.000000e+00, double* %c.realp, align 8, !dbg !17
+  store [2 x i64] %c.coerce, ptr %c, align 8
+  call void @llvm.dbg.declare(metadata ptr %c, metadata !14, metadata !15), !dbg !16
+  %c.realp = getelementptr inbounds { double, double }, ptr %c, i32 0, i32 0, !dbg !17
+  %c.imagp = getelementptr inbounds { double, double }, ptr %c, i32 0, i32 1, !dbg !17
+  store double 0.000000e+00, ptr %c.realp, align 8, !dbg !17
   ; SROA will split the complex double into two double values.
   ; Test that debug info for both values survives:
   ; CHECK: call void @llvm.dbg.value(metadata double 0.000000e+00,
   ; CHECK-SAME:                      metadata ![[C:[^,]*]],
   ; CHECK-SAME:                      metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64))
-  store double 0.000000e+00, double* %c.imagp, align 8, !dbg !17
+  store double 0.000000e+00, ptr %c.imagp, align 8, !dbg !17
   ; CHECK: call void @llvm.dbg.value(metadata double 0.000000e+00,
   ; CHECK-SAME:                      metadata ![[C]],
   ; CHECK-SAME:                      metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64))

diff  --git a/llvm/test/DebugInfo/BPF/extern-void.ll b/llvm/test/DebugInfo/BPF/extern-void.ll
index 3bf8e27623e76..71da00c8b8322 100644
--- a/llvm/test/DebugInfo/BPF/extern-void.ll
+++ b/llvm/test/DebugInfo/BPF/extern-void.ll
@@ -3,14 +3,14 @@
 ;
 ; Source code:
 ;   extern void bla1;
-;   void *test1() {
-;     void *x = &bla1;
+;   ptr test1() {
+;     ptr x = &bla1;
 ;     return x;
 ;   }
 ;
 ;   extern const void bla2;
-;   const void *test2() {
-;     const void *x = &bla2;
+;   const ptr test2() {
+;     const ptr x = &bla2;
 ;     return x;
 ;   }
 ; Compilation flag:
@@ -20,17 +20,17 @@
 @bla2 = external dso_local constant i8, align 1, !dbg !6
 
 ; Function Attrs: norecurse nounwind readnone
-define dso_local nonnull i8* @test1() local_unnamed_addr #0 !dbg !13 {
+define dso_local nonnull ptr @test1() local_unnamed_addr #0 !dbg !13 {
 entry:
-  call void @llvm.dbg.value(metadata i8* @bla1, metadata !18, metadata !DIExpression()), !dbg !19
-  ret i8* @bla1, !dbg !20
+  call void @llvm.dbg.value(metadata ptr @bla1, metadata !18, metadata !DIExpression()), !dbg !19
+  ret ptr @bla1, !dbg !20
 }
 
 ; Function Attrs: norecurse nounwind readnone
-define dso_local nonnull i8* @test2() local_unnamed_addr #0 !dbg !21 {
+define dso_local nonnull ptr @test2() local_unnamed_addr #0 !dbg !21 {
 entry:
-  call void @llvm.dbg.value(metadata i8* @bla2, metadata !26, metadata !DIExpression()), !dbg !27
-  ret i8* @bla2, !dbg !28
+  call void @llvm.dbg.value(metadata ptr @bla2, metadata !26, metadata !DIExpression()), !dbg !27
+  ret ptr @bla2, !dbg !28
 }
 
 ; CHECK:        .quad bla1

diff  --git a/llvm/test/DebugInfo/COFF/AArch64/arm64-register-variables.ll b/llvm/test/DebugInfo/COFF/AArch64/arm64-register-variables.ll
index c02eea5da5041..834e8f4ce7fed 100644
--- a/llvm/test/DebugInfo/COFF/AArch64/arm64-register-variables.ll
+++ b/llvm/test/DebugInfo/COFF/AArch64/arm64-register-variables.ll
@@ -48,29 +48,29 @@ entry:
   %a = alloca i32, align 4
   %b = alloca i32, align 4
   %c = alloca i32, align 4
-  store i32 %p, i32* %p.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %p.addr, metadata !15, metadata !DIExpression()), !dbg !16
-  %0 = load i32, i32* %p.addr, align 4, !dbg !17
+  store i32 %p, ptr %p.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !15, metadata !DIExpression()), !dbg !16
+  %0 = load i32, ptr %p.addr, align 4, !dbg !17
   %tobool = icmp ne i32 %0, 0, !dbg !17
   br i1 %tobool, label %if.then, label %if.else, !dbg !17
 
 if.then:                                          ; preds = %entry
-  call void @llvm.dbg.declare(metadata i32* %a, metadata !18, metadata !DIExpression()), !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !18, metadata !DIExpression()), !dbg !21
   %call = call i32 @getint(), !dbg !21
-  store i32 %call, i32* %a, align 4, !dbg !21
-  call void @llvm.dbg.declare(metadata i32* %b, metadata !22, metadata !DIExpression()), !dbg !23
-  %1 = load i32, i32* %a, align 4, !dbg !23
+  store i32 %call, ptr %a, align 4, !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !22, metadata !DIExpression()), !dbg !23
+  %1 = load i32, ptr %a, align 4, !dbg !23
   %call1 = call i32 @inlineinc(i32 %1), !dbg !23
-  store i32 %call1, i32* %b, align 4, !dbg !23
-  %2 = load i32, i32* %b, align 4, !dbg !24
+  store i32 %call1, ptr %b, align 4, !dbg !23
+  %2 = load i32, ptr %b, align 4, !dbg !24
   call void @putint(i32 %2), !dbg !24
   br label %if.end, !dbg !25
 
 if.else:                                          ; preds = %entry
-  call void @llvm.dbg.declare(metadata i32* %c, metadata !26, metadata !DIExpression()), !dbg !28
+  call void @llvm.dbg.declare(metadata ptr %c, metadata !26, metadata !DIExpression()), !dbg !28
   %call2 = call i32 @getint(), !dbg !28
-  store i32 %call2, i32* %c, align 4, !dbg !28
-  %3 = load i32, i32* %c, align 4, !dbg !29
+  store i32 %call2, ptr %c, align 4, !dbg !28
+  %3 = load i32, ptr %c, align 4, !dbg !29
   call void @putint(i32 %3), !dbg !29
   br label %if.end, !dbg !30
 
@@ -88,16 +88,16 @@ define internal i32 @inlineinc(i32 %a) #0 !dbg !32 {
 entry:
   %a.addr = alloca i32, align 4
   %b = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !35, metadata !DIExpression()), !dbg !36
-  call void @llvm.dbg.declare(metadata i32* %b, metadata !37, metadata !DIExpression()), !dbg !38
-  %0 = load i32, i32* %a.addr, align 4, !dbg !38
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !35, metadata !DIExpression()), !dbg !36
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !37, metadata !DIExpression()), !dbg !38
+  %0 = load i32, ptr %a.addr, align 4, !dbg !38
   %add = add nsw i32 %0, 1, !dbg !38
-  store i32 %add, i32* %b, align 4, !dbg !38
-  %1 = load volatile i32, i32* @x, align 4, !dbg !39
+  store i32 %add, ptr %b, align 4, !dbg !38
+  %1 = load volatile i32, ptr @x, align 4, !dbg !39
   %inc = add nsw i32 %1, 1, !dbg !39
-  store volatile i32 %inc, i32* @x, align 4, !dbg !39
-  %2 = load i32, i32* %b, align 4, !dbg !40
+  store volatile i32 %inc, ptr @x, align 4, !dbg !39
+  %2 = load i32, ptr %b, align 4, !dbg !40
   ret i32 %2, !dbg !40
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/ARMNT/arm-register-variables.ll b/llvm/test/DebugInfo/COFF/ARMNT/arm-register-variables.ll
index 781a4c65abc90..1eb8dff00e589 100644
--- a/llvm/test/DebugInfo/COFF/ARMNT/arm-register-variables.ll
+++ b/llvm/test/DebugInfo/COFF/ARMNT/arm-register-variables.ll
@@ -64,29 +64,29 @@ entry:
   %a = alloca i32, align 4
   %b = alloca i32, align 4
   %c = alloca i32, align 4
-  store i32 %p, i32* %p.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %p.addr, metadata !17, metadata !DIExpression()), !dbg !18
-  %0 = load i32, i32* %p.addr, align 4, !dbg !19
+  store i32 %p, ptr %p.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !17, metadata !DIExpression()), !dbg !18
+  %0 = load i32, ptr %p.addr, align 4, !dbg !19
   %tobool = icmp ne i32 %0, 0, !dbg !19
   br i1 %tobool, label %if.then, label %if.else, !dbg !19
 
 if.then:                                          ; preds = %entry
-  call void @llvm.dbg.declare(metadata i32* %a, metadata !20, metadata !DIExpression()), !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !20, metadata !DIExpression()), !dbg !23
   %call = call arm_aapcs_vfpcc i32 @getint(), !dbg !23
-  store i32 %call, i32* %a, align 4, !dbg !23
-  call void @llvm.dbg.declare(metadata i32* %b, metadata !24, metadata !DIExpression()), !dbg !25
-  %1 = load i32, i32* %a, align 4, !dbg !25
+  store i32 %call, ptr %a, align 4, !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !24, metadata !DIExpression()), !dbg !25
+  %1 = load i32, ptr %a, align 4, !dbg !25
   %call1 = call arm_aapcs_vfpcc i32 @inlineinc(i32 %1), !dbg !25
-  store i32 %call1, i32* %b, align 4, !dbg !25
-  %2 = load i32, i32* %b, align 4, !dbg !26
+  store i32 %call1, ptr %b, align 4, !dbg !25
+  %2 = load i32, ptr %b, align 4, !dbg !26
   call arm_aapcs_vfpcc void @putint(i32 %2), !dbg !26
   br label %if.end, !dbg !27
 
 if.else:                                          ; preds = %entry
-  call void @llvm.dbg.declare(metadata i32* %c, metadata !28, metadata !DIExpression()), !dbg !30
+  call void @llvm.dbg.declare(metadata ptr %c, metadata !28, metadata !DIExpression()), !dbg !30
   %call2 = call arm_aapcs_vfpcc i32 @getint(), !dbg !30
-  store i32 %call2, i32* %c, align 4, !dbg !30
-  %3 = load i32, i32* %c, align 4, !dbg !31
+  store i32 %call2, ptr %c, align 4, !dbg !30
+  %3 = load i32, ptr %c, align 4, !dbg !31
   call arm_aapcs_vfpcc void @putint(i32 %3), !dbg !31
   br label %if.end, !dbg !32
 
@@ -104,16 +104,16 @@ define internal arm_aapcs_vfpcc i32 @inlineinc(i32 %a) !dbg !34 {
 entry:
   %a.addr = alloca i32, align 4
   %b = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !37, metadata !DIExpression()), !dbg !38
-  call void @llvm.dbg.declare(metadata i32* %b, metadata !39, metadata !DIExpression()), !dbg !40
-  %0 = load i32, i32* %a.addr, align 4, !dbg !40
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !37, metadata !DIExpression()), !dbg !38
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !39, metadata !DIExpression()), !dbg !40
+  %0 = load i32, ptr %a.addr, align 4, !dbg !40
   %add = add nsw i32 %0, 1, !dbg !40
-  store i32 %add, i32* %b, align 4, !dbg !40
-  %1 = load volatile i32, i32* @x, align 4, !dbg !41
+  store i32 %add, ptr %b, align 4, !dbg !40
+  %1 = load volatile i32, ptr @x, align 4, !dbg !41
   %inc = add nsw i32 %1, 1, !dbg !41
-  store volatile i32 %inc, i32* @x, align 4, !dbg !41
-  %2 = load i32, i32* %b, align 4, !dbg !42
+  store volatile i32 %inc, ptr @x, align 4, !dbg !41
+  %2 = load i32, ptr %b, align 4, !dbg !42
   ret i32 %2, !dbg !42
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/array-odr-violation.ll b/llvm/test/DebugInfo/COFF/array-odr-violation.ll
index dc97b62b4c89c..0283515c269bc 100644
--- a/llvm/test/DebugInfo/COFF/array-odr-violation.ll
+++ b/llvm/test/DebugInfo/COFF/array-odr-violation.ll
@@ -50,7 +50,7 @@ target triple = "x86_64-pc-windows-msvc19.10.24728"
 define void @"\01?fn1@@YAXXZ"() #0 !dbg !21 {
 entry:
   %a = alloca [1 x %union.YYSTYPE.0], align 1
-  call void @llvm.dbg.declare(metadata [1 x %union.YYSTYPE.0]* %a, metadata !24, metadata !29), !dbg !30
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !24, metadata !29), !dbg !30
   ret void, !dbg !30
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/asan-module-ctor.ll b/llvm/test/DebugInfo/COFF/asan-module-ctor.ll
index d1879bf981cf4..49c30e9886545 100644
--- a/llvm/test/DebugInfo/COFF/asan-module-ctor.ll
+++ b/llvm/test/DebugInfo/COFF/asan-module-ctor.ll
@@ -21,7 +21,7 @@
 target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32"
 target triple = "i686-pc-win32"
 
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @asan.module_ctor, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @asan.module_ctor, ptr null }]
 
 ; Function Attrs: nounwind sanitize_address
 define i32 @foo() #0 !dbg !4 {

diff  --git a/llvm/test/DebugInfo/COFF/asan-module-without-functions.ll b/llvm/test/DebugInfo/COFF/asan-module-without-functions.ll
index f009e30155862..b5cfe88c131f2 100644
--- a/llvm/test/DebugInfo/COFF/asan-module-without-functions.ll
+++ b/llvm/test/DebugInfo/COFF/asan-module-without-functions.ll
@@ -14,15 +14,15 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32"
 target triple = "i686-pc-win32"
 
 @c = global { i8, [63 x i8] } { i8 42, [63 x i8] zeroinitializer }, align 32
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @asan.module_ctor, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @asan.module_ctor, ptr null }]
 @___asan_gen_ = private constant [7 x i8] c"asan.c\00", align 1
 @___asan_gen_1 = private unnamed_addr constant [2 x i8] c"c\00", align 1
- at 0 = internal global [1 x { i32, i32, i32, i32, i32, i32 }] [{ i32, i32, i32, i32, i32, i32 } { i32 ptrtoint ({ i8, [63 x i8] }* @c to i32), i32 1, i32 64, i32 ptrtoint ([2 x i8]* @___asan_gen_1 to i32), i32 ptrtoint ([7 x i8]* @___asan_gen_ to i32), i32 0 }]
- at llvm.global_dtors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @asan.module_dtor, i8* null }]
+ at 0 = internal global [1 x { i32, i32, i32, i32, i32, i32 }] [{ i32, i32, i32, i32, i32, i32 } { i32 ptrtoint (ptr @c to i32), i32 1, i32 64, i32 ptrtoint (ptr @___asan_gen_1 to i32), i32 ptrtoint (ptr @___asan_gen_ to i32), i32 0 }]
+ at llvm.global_dtors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @asan.module_dtor, ptr null }]
 
 define internal void @asan.module_ctor() {
   call void @__asan_init_v3()
-  call void @__asan_register_globals(i32 ptrtoint ([1 x { i32, i32, i32, i32, i32, i32 }]* @0 to i32), i32 1)
+  call void @__asan_register_globals(i32 ptrtoint (ptr @0 to i32), i32 1)
   ret void
 }
 
@@ -37,7 +37,7 @@ declare void @__asan_register_globals(i32, i32)
 declare void @__asan_unregister_globals(i32, i32)
 
 define internal void @asan.module_dtor() {
-  call void @__asan_unregister_globals(i32 ptrtoint ([1 x { i32, i32, i32, i32, i32, i32 }]* @0 to i32), i32 1)
+  call void @__asan_unregister_globals(i32 ptrtoint (ptr @0 to i32), i32 1)
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/class-options-common.ll b/llvm/test/DebugInfo/COFF/class-options-common.ll
index b50c5555c2066..903824722b0cc 100644
--- a/llvm/test/DebugInfo/COFF/class-options-common.ll
+++ b/llvm/test/DebugInfo/COFF/class-options-common.ll
@@ -692,15 +692,14 @@ target triple = "x86_64-pc-windows-msvc19.15.26729"
 @"?b@@3UBar@@A" = dso_local global %struct.Bar zeroinitializer, align 4, !dbg !6
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local i8 @"?Func_EmptyClass@@YA?AVEmptyClass@@AEAV1@@Z"(%class.EmptyClass* dereferenceable(1) %arg) #0 !dbg !30 {
+define dso_local i8 @"?Func_EmptyClass@@YA?AVEmptyClass@@AEAV1@@Z"(ptr dereferenceable(1) %arg) #0 !dbg !30 {
 entry:
   %retval = alloca %class.EmptyClass, align 1
-  %arg.addr = alloca %class.EmptyClass*, align 8
-  store %class.EmptyClass* %arg, %class.EmptyClass** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.EmptyClass** %arg.addr, metadata !35, metadata !DIExpression()), !dbg !36
-  %0 = load %class.EmptyClass*, %class.EmptyClass** %arg.addr, align 8, !dbg !36
-  %coerce.dive = getelementptr inbounds %class.EmptyClass, %class.EmptyClass* %retval, i32 0, i32 0, !dbg !36
-  %1 = load i8, i8* %coerce.dive, align 1, !dbg !36
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !35, metadata !DIExpression()), !dbg !36
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !36
+  %1 = load i8, ptr %retval, align 1, !dbg !36
   ret i8 %1, !dbg !36
 }
 
@@ -708,98 +707,96 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local void @"?Func_ExplicitCtorClass@@YA?AVExplicitCtorClass@@AEAV1@@Z"(%class.ExplicitCtorClass* noalias sret(%class.ExplicitCtorClass) %agg.result, %class.ExplicitCtorClass* dereferenceable(1) %arg) #0 !dbg !37 {
+define dso_local void @"?Func_ExplicitCtorClass@@YA?AVExplicitCtorClass@@AEAV1@@Z"(ptr noalias sret(%class.ExplicitCtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !37 {
 entry:
-  %arg.addr = alloca %class.ExplicitCtorClass*, align 8
-  store %class.ExplicitCtorClass* %arg, %class.ExplicitCtorClass** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.ExplicitCtorClass** %arg.addr, metadata !47, metadata !DIExpression()), !dbg !48
-  %0 = load %class.ExplicitCtorClass*, %class.ExplicitCtorClass** %arg.addr, align 8, !dbg !48
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !47, metadata !DIExpression()), !dbg !48
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !48
   ret void, !dbg !48
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local void @"?Func_DefaultedCtorClass@@YA?AVDefaultedCtorClass@@AEAV1@@Z"(%class.DefaultedCtorClass* noalias sret(%class.DefaultedCtorClass) %agg.result, %class.DefaultedCtorClass* dereferenceable(1) %arg) #0 !dbg !49 {
+define dso_local void @"?Func_DefaultedCtorClass@@YA?AVDefaultedCtorClass@@AEAV1@@Z"(ptr noalias sret(%class.DefaultedCtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !49 {
 entry:
-  %arg.addr = alloca %class.DefaultedCtorClass*, align 8
-  store %class.DefaultedCtorClass* %arg, %class.DefaultedCtorClass** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.DefaultedCtorClass** %arg.addr, metadata !59, metadata !DIExpression()), !dbg !60
-  %0 = load %class.DefaultedCtorClass*, %class.DefaultedCtorClass** %arg.addr, align 8, !dbg !60
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !59, metadata !DIExpression()), !dbg !60
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !60
   ret void, !dbg !60
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local void @"?Func_DefaultArgumentCtorClass@@YA?AVDefaultArgumentCtorClass@@AEAV1@@Z"(%class.DefaultArgumentCtorClass* noalias sret(%class.DefaultArgumentCtorClass) %agg.result, %class.DefaultArgumentCtorClass* dereferenceable(1) %arg) #0 !dbg !61 {
+define dso_local void @"?Func_DefaultArgumentCtorClass@@YA?AVDefaultArgumentCtorClass@@AEAV1@@Z"(ptr noalias sret(%class.DefaultArgumentCtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !61 {
 entry:
-  %arg.addr = alloca %class.DefaultArgumentCtorClass*, align 8
-  store %class.DefaultArgumentCtorClass* %arg, %class.DefaultArgumentCtorClass** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.DefaultArgumentCtorClass** %arg.addr, metadata !71, metadata !DIExpression()), !dbg !72
-  %0 = load %class.DefaultArgumentCtorClass*, %class.DefaultArgumentCtorClass** %arg.addr, align 8, !dbg !72
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !71, metadata !DIExpression()), !dbg !72
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !72
   ret void, !dbg !72
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local void @"?Func_UserDtorClass@@YA?AVUserDtorClass@@AEAV1@@Z"(%class.UserDtorClass* noalias sret(%class.UserDtorClass) %agg.result, %class.UserDtorClass* dereferenceable(1) %arg) #0 !dbg !73 {
+define dso_local void @"?Func_UserDtorClass@@YA?AVUserDtorClass@@AEAV1@@Z"(ptr noalias sret(%class.UserDtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !73 {
 entry:
-  %arg.addr = alloca %class.UserDtorClass*, align 8
-  store %class.UserDtorClass* %arg, %class.UserDtorClass** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.UserDtorClass** %arg.addr, metadata !83, metadata !DIExpression()), !dbg !84
-  %0 = load %class.UserDtorClass*, %class.UserDtorClass** %arg.addr, align 8, !dbg !84
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !83, metadata !DIExpression()), !dbg !84
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !84
   ret void, !dbg !84
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local void @"?Func_DefaultedDtorClass@@YA?AVDefaultedDtorClass@@AEAV1@@Z"(%class.DefaultedDtorClass* noalias sret(%class.DefaultedDtorClass) %agg.result, %class.DefaultedDtorClass* dereferenceable(1) %arg) #0 !dbg !85 {
+define dso_local void @"?Func_DefaultedDtorClass@@YA?AVDefaultedDtorClass@@AEAV1@@Z"(ptr noalias sret(%class.DefaultedDtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !85 {
 entry:
-  %arg.addr = alloca %class.DefaultedDtorClass*, align 8
-  store %class.DefaultedDtorClass* %arg, %class.DefaultedDtorClass** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.DefaultedDtorClass** %arg.addr, metadata !95, metadata !DIExpression()), !dbg !96
-  %0 = load %class.DefaultedDtorClass*, %class.DefaultedDtorClass** %arg.addr, align 8, !dbg !96
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !95, metadata !DIExpression()), !dbg !96
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !96
   ret void, !dbg !96
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local void @"?Func_AClass@@YA?AVAClass@@AEAV1@@Z"(%class.AClass* noalias sret(%class.AClass) %agg.result, %class.AClass* dereferenceable(1) %arg) #0 !dbg !97 {
+define dso_local void @"?Func_AClass@@YA?AVAClass@@AEAV1@@Z"(ptr noalias sret(%class.AClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !97 {
 entry:
-  %arg.addr = alloca %class.AClass*, align 8
-  store %class.AClass* %arg, %class.AClass** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.AClass** %arg.addr, metadata !104, metadata !DIExpression()), !dbg !105
-  %0 = load %class.AClass*, %class.AClass** %arg.addr, align 8, !dbg !105
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !104, metadata !DIExpression()), !dbg !105
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !105
   ret void, !dbg !105
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local i8 @"?Func_BClass@@YA?AVBClass@@AEAV1@@Z"(%class.BClass* dereferenceable(1) %arg) #0 !dbg !106 {
+define dso_local i8 @"?Func_BClass@@YA?AVBClass@@AEAV1@@Z"(ptr dereferenceable(1) %arg) #0 !dbg !106 {
 entry:
   %retval = alloca %class.BClass, align 1
-  %arg.addr = alloca %class.BClass*, align 8
-  store %class.BClass* %arg, %class.BClass** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.BClass** %arg.addr, metadata !113, metadata !DIExpression()), !dbg !114
-  %0 = load %class.BClass*, %class.BClass** %arg.addr, align 8, !dbg !114
-  %coerce.dive = getelementptr inbounds %class.BClass, %class.BClass* %retval, i32 0, i32 0, !dbg !114
-  %1 = load i8, i8* %coerce.dive, align 1, !dbg !114
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !113, metadata !DIExpression()), !dbg !114
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !114
+  %1 = load i8, ptr %retval, align 1, !dbg !114
   ret i8 %1, !dbg !114
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local i8 @"?Func_AStruct@@YA?AUAStruct@@AEAU1@@Z"(%struct.AStruct* dereferenceable(1) %arg) #0 !dbg !115 {
+define dso_local i8 @"?Func_AStruct@@YA?AUAStruct@@AEAU1@@Z"(ptr dereferenceable(1) %arg) #0 !dbg !115 {
 entry:
   %retval = alloca %struct.AStruct, align 1
-  %arg.addr = alloca %struct.AStruct*, align 8
-  store %struct.AStruct* %arg, %struct.AStruct** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.AStruct** %arg.addr, metadata !120, metadata !DIExpression()), !dbg !121
-  %0 = load %struct.AStruct*, %struct.AStruct** %arg.addr, align 8, !dbg !121
-  %coerce.dive = getelementptr inbounds %struct.AStruct, %struct.AStruct* %retval, i32 0, i32 0, !dbg !121
-  %1 = load i8, i8* %coerce.dive, align 1, !dbg !121
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !120, metadata !DIExpression()), !dbg !121
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !121
+  %1 = load i8, ptr %retval, align 1, !dbg !121
   ret i8 %1, !dbg !121
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local void @"?Func_BStruct@@YA?AUBStruct@@AEAU1@@Z"(%struct.BStruct* noalias sret(%struct.BStruct) %agg.result, %struct.BStruct* dereferenceable(1) %arg) #0 !dbg !122 {
+define dso_local void @"?Func_BStruct@@YA?AUBStruct@@AEAU1@@Z"(ptr noalias sret(%struct.BStruct) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !122 {
 entry:
-  %arg.addr = alloca %struct.BStruct*, align 8
-  store %struct.BStruct* %arg, %struct.BStruct** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.BStruct** %arg.addr, metadata !132, metadata !DIExpression()), !dbg !133
-  %0 = load %struct.BStruct*, %struct.BStruct** %arg.addr, align 8, !dbg !133
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !132, metadata !DIExpression()), !dbg !133
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !133
   ret void, !dbg !133
 }
 
@@ -807,30 +804,29 @@ entry:
 define dso_local void @"?S@@YAXXZ"() #0 !dbg !134 {
 entry:
   %s = alloca %struct.ComplexStruct, align 1
-  call void @llvm.dbg.declare(metadata %struct.ComplexStruct* %s, metadata !137, metadata !DIExpression()), !dbg !142
+  call void @llvm.dbg.declare(metadata ptr %s, metadata !137, metadata !DIExpression()), !dbg !142
   ret void, !dbg !143
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local i8 @"?Func_AUnion@@YA?ATAUnion@@AEAT1@@Z"(%union.AUnion* dereferenceable(1) %arg) #0 !dbg !144 {
+define dso_local i8 @"?Func_AUnion@@YA?ATAUnion@@AEAT1@@Z"(ptr dereferenceable(1) %arg) #0 !dbg !144 {
 entry:
   %retval = alloca %union.AUnion, align 1
-  %arg.addr = alloca %union.AUnion*, align 8
-  store %union.AUnion* %arg, %union.AUnion** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %union.AUnion** %arg.addr, metadata !149, metadata !DIExpression()), !dbg !150
-  %0 = load %union.AUnion*, %union.AUnion** %arg.addr, align 8, !dbg !150
-  %coerce.dive = getelementptr inbounds %union.AUnion, %union.AUnion* %retval, i32 0, i32 0, !dbg !150
-  %1 = load i8, i8* %coerce.dive, align 1, !dbg !150
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !149, metadata !DIExpression()), !dbg !150
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !150
+  %1 = load i8, ptr %retval, align 1, !dbg !150
   ret i8 %1, !dbg !150
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local void @"?Func_BUnion@@YA?ATBUnion@@AEAT1@@Z"(%union.BUnion* noalias sret(%union.BUnion) %agg.result, %union.BUnion* dereferenceable(1) %arg) #0 !dbg !151 {
+define dso_local void @"?Func_BUnion@@YA?ATBUnion@@AEAT1@@Z"(ptr noalias sret(%union.BUnion) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !151 {
 entry:
-  %arg.addr = alloca %union.BUnion*, align 8
-  store %union.BUnion* %arg, %union.BUnion** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata %union.BUnion** %arg.addr, metadata !161, metadata !DIExpression()), !dbg !162
-  %0 = load %union.BUnion*, %union.BUnion** %arg.addr, align 8, !dbg !162
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !161, metadata !DIExpression()), !dbg !162
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !162
   ret void, !dbg !162
 }
 
@@ -838,7 +834,7 @@ entry:
 define dso_local void @"?U@@YAXXZ"() #0 !dbg !163 {
 entry:
   %c = alloca %union.ComplexUnion, align 4
-  call void @llvm.dbg.declare(metadata %union.ComplexUnion* %c, metadata !164, metadata !DIExpression()), !dbg !172
+  call void @llvm.dbg.declare(metadata ptr %c, metadata !164, metadata !DIExpression()), !dbg !172
   ret void, !dbg !173
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/comdat.ll b/llvm/test/DebugInfo/COFF/comdat.ll
index 3f9bb48ae25c7..841630c087ad3 100644
--- a/llvm/test/DebugInfo/COFF/comdat.ll
+++ b/llvm/test/DebugInfo/COFF/comdat.ll
@@ -64,9 +64,9 @@ $f = comdat any
 ; Function Attrs: norecurse nounwind uwtable
 define void @bar() #0 !dbg !7 {
 entry:
-  %0 = load volatile i32, i32* @x, align 4, !dbg !10, !tbaa !11
+  %0 = load volatile i32, ptr @x, align 4, !dbg !10, !tbaa !11
   %inc = add nsw i32 %0, 1, !dbg !10
-  store volatile i32 %inc, i32* @x, align 4, !dbg !10, !tbaa !11
+  store volatile i32 %inc, ptr @x, align 4, !dbg !10, !tbaa !11
   ret void, !dbg !15
 }
 
@@ -78,17 +78,17 @@ entry:
 }
 
 ; Function Attrs: inlinehint noinline nounwind uwtable
-define linkonce_odr void @f(i32 %c) #2 comdat personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*) !dbg !22 {
+define linkonce_odr void @f(i32 %c) #2 comdat personality ptr @__C_specific_handler !dbg !22 {
 entry:
   tail call void @llvm.dbg.value(metadata i32 %c, metadata !26, metadata !27), !dbg !28
-  %0 = load volatile i32, i32* @x, align 4, !dbg !29, !tbaa !11
+  %0 = load volatile i32, ptr @x, align 4, !dbg !29, !tbaa !11
   %inc = add nsw i32 %0, 1, !dbg !29
-  store volatile i32 %inc, i32* @x, align 4, !dbg !29, !tbaa !11
+  store volatile i32 %inc, ptr @x, align 4, !dbg !29, !tbaa !11
   %tobool = icmp eq i32 %c, 0, !dbg !30
   br i1 %tobool, label %if.else, label %if.then, !dbg !32
 
 if.then:                                          ; preds = %entry
-  invoke void bitcast (void (...)* @foo to void ()*)() #6
+  invoke void @foo() #6
           to label %invoke.cont unwind label %ehcleanup, !dbg !33
 
 invoke.cont:                                      ; preds = %if.then
@@ -105,20 +105,20 @@ if.else:                                          ; preds = %entry
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %invoke.cont
-  %2 = load volatile i32, i32* @x, align 4, !dbg !39, !tbaa !11
+  %2 = load volatile i32, ptr @x, align 4, !dbg !39, !tbaa !11
   %inc1 = add nsw i32 %2, 1, !dbg !39
-  store volatile i32 %inc1, i32* @x, align 4, !dbg !39, !tbaa !11
+  store volatile i32 %inc1, ptr @x, align 4, !dbg !39, !tbaa !11
   ret void, !dbg !40
 }
 
 ; Function Attrs: nounwind
 define internal fastcc void @"\01?fin$0 at 0@f@@"() unnamed_addr #3 comdat($f) !dbg !41 {
 entry:
-  tail call void @llvm.dbg.value(metadata i8* null, metadata !44, metadata !27), !dbg !48
+  tail call void @llvm.dbg.value(metadata ptr null, metadata !44, metadata !27), !dbg !48
   tail call void @llvm.dbg.value(metadata i8 0, metadata !46, metadata !27), !dbg !48
-  %0 = load volatile i32, i32* @x, align 4, !dbg !49, !tbaa !11
+  %0 = load volatile i32, ptr @x, align 4, !dbg !49, !tbaa !11
   %inc = add nsw i32 %0, 1, !dbg !49
-  store volatile i32 %inc, i32* @x, align 4, !dbg !49, !tbaa !11
+  store volatile i32 %inc, ptr @x, align 4, !dbg !49, !tbaa !11
   ret void, !dbg !51
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/cpp-mangling.ll b/llvm/test/DebugInfo/COFF/cpp-mangling.ll
index 558a27f5c7283..09a0d92b610c2 100644
--- a/llvm/test/DebugInfo/COFF/cpp-mangling.ll
+++ b/llvm/test/DebugInfo/COFF/cpp-mangling.ll
@@ -45,9 +45,9 @@ $"??6S@@QAEXH at Z" = comdat any
 define i32 @"\01?bar at foo@@YAHH at Z"(i32 %x) #0 !dbg !6 {
 entry:
   %x.addr = alloca i32, align 4
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !11, metadata !12), !dbg !13
-  %0 = load i32, i32* %x.addr, align 4, !dbg !14
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !11, metadata !12), !dbg !13
+  %0 = load i32, ptr %x.addr, align 4, !dbg !14
   %mul = mul nsw i32 %0, 2, !dbg !15
   ret i32 %mul, !dbg !16
 }
@@ -62,13 +62,13 @@ entry:
 }
 
 ; Function Attrs: nounwind
-define linkonce_odr void @"??6S@@QAEXH at Z"(%struct.S* nonnull dereferenceable(1) %this, i32 %i) #0 !dbg !31 {
+define linkonce_odr void @"??6S@@QAEXH at Z"(ptr nonnull dereferenceable(1) %this, i32 %i) #0 !dbg !31 {
 entry:
   %i.addr = alloca i32, align 4
-  %this.addr = alloca %struct.S*, align 4
-  store i32 %i, i32* %i.addr, align 4
-  store %struct.S* %this, %struct.S** %this.addr, align 4
-  %this1 = load %struct.S*, %struct.S** %this.addr, align 4
+  %this.addr = alloca ptr, align 4
+  store i32 %i, ptr %i.addr, align 4
+  store ptr %this, ptr %this.addr, align 4
+  %this1 = load ptr, ptr %this.addr, align 4
   ret void, !dbg !32
 }
 
@@ -101,7 +101,7 @@ attributes #1 = { nounwind readnone }
 !19 = !{null}
 !20 = !{!21, !22}
 !21 = !DITemplateTypeParameter(name: "T", type: !10)
-!22 = !DITemplateValueParameter(type: !23, value: i32 (i32)* @"\01?bar at foo@@YAHH at Z")
+!22 = !DITemplateValueParameter(type: !23, value: ptr @"\01?bar at foo@@YAHH at Z")
 !23 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !8, size: 32, align: 32)
 !24 = !DILocation(line: 4, column: 17, scope: !17)
 !25 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !1, line: 7, size: 8, flags: DIFlagTypePassByValue, elements: !26, identifier: ".?AUS@@")

diff  --git a/llvm/test/DebugInfo/COFF/defer-complete-type.ll b/llvm/test/DebugInfo/COFF/defer-complete-type.ll
index 67b4f2844b78a..012b234affa5f 100644
--- a/llvm/test/DebugInfo/COFF/defer-complete-type.ll
+++ b/llvm/test/DebugInfo/COFF/defer-complete-type.ll
@@ -154,20 +154,18 @@ source_filename = "t.cpp"
 target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-windows-msvc19.0.23918"
 
-%struct.A = type { %struct.B* }
+%struct.A = type { ptr }
 %struct.B = type { i32 }
 
 ; Function Attrs: nounwind uwtable
-define i32 @"\01?f@@YAHPEAUA@@@Z"(%struct.A* %p) #0 !dbg !7 {
+define i32 @"\01?f@@YAHPEAUA@@@Z"(ptr %p) #0 !dbg !7 {
 entry:
-  %p.addr = alloca %struct.A*, align 8
-  store %struct.A* %p, %struct.A** %p.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.A** %p.addr, metadata !19, metadata !20), !dbg !21
-  %0 = load %struct.A*, %struct.A** %p.addr, align 8, !dbg !22
-  %b = getelementptr inbounds %struct.A, %struct.A* %0, i32 0, i32 0, !dbg !23
-  %1 = load %struct.B*, %struct.B** %b, align 8, !dbg !23
-  %b1 = getelementptr inbounds %struct.B, %struct.B* %1, i32 0, i32 0, !dbg !24
-  %2 = load i32, i32* %b1, align 4, !dbg !24
+  %p.addr = alloca ptr, align 8
+  store ptr %p, ptr %p.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !19, metadata !20), !dbg !21
+  %0 = load ptr, ptr %p.addr, align 8, !dbg !22
+  %1 = load ptr, ptr %0, align 8, !dbg !23
+  %2 = load i32, ptr %1, align 4, !dbg !24
   ret i32 %2, !dbg !25
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/enum-co.ll b/llvm/test/DebugInfo/COFF/enum-co.ll
index b6cb10baaf748..4ccfaae511fc2 100644
--- a/llvm/test/DebugInfo/COFF/enum-co.ll
+++ b/llvm/test/DebugInfo/COFF/enum-co.ll
@@ -90,13 +90,13 @@ target triple = "x86_64-pc-windows-msvc19.15.26729"
 %"union.Func()::Struct::Union" = type { i8 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local i32 @"?Func_Enum@@YA?AW4Enum@@AEAW41@@Z"(i32* dereferenceable(4) %arg) #0 !dbg !30 {
+define dso_local i32 @"?Func_Enum@@YA?AW4Enum@@AEAW41@@Z"(ptr dereferenceable(4) %arg) #0 !dbg !30 {
 entry:
-  %arg.addr = alloca i32*, align 8
-  store i32* %arg, i32** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata i32** %arg.addr, metadata !34, metadata !DIExpression()), !dbg !35
-  %0 = load i32*, i32** %arg.addr, align 8, !dbg !35
-  %1 = load i32, i32* %0, align 4, !dbg !35
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !34, metadata !DIExpression()), !dbg !35
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !35
+  %1 = load i32, ptr %0, align 4, !dbg !35
   ret i32 %1, !dbg !35
 }
 
@@ -104,13 +104,13 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local i32 @"?Func_EnumClass@@YA?AW4EnumClass@@AEAW41@@Z"(i32* dereferenceable(4) %arg) #0 !dbg !36 {
+define dso_local i32 @"?Func_EnumClass@@YA?AW4EnumClass@@AEAW41@@Z"(ptr dereferenceable(4) %arg) #0 !dbg !36 {
 entry:
-  %arg.addr = alloca i32*, align 8
-  store i32* %arg, i32** %arg.addr, align 8
-  call void @llvm.dbg.declare(metadata i32** %arg.addr, metadata !40, metadata !DIExpression()), !dbg !41
-  %0 = load i32*, i32** %arg.addr, align 8, !dbg !41
-  %1 = load i32, i32* %0, align 4, !dbg !41
+  %arg.addr = alloca ptr, align 8
+  store ptr %arg, ptr %arg.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !40, metadata !DIExpression()), !dbg !41
+  %0 = load ptr, ptr %arg.addr, align 8, !dbg !41
+  %1 = load i32, ptr %0, align 4, !dbg !41
   ret i32 %1, !dbg !41
 }
 
@@ -119,8 +119,8 @@ define dso_local void @"?Func@@YAXXZ"() #0 !dbg !14 {
 entry:
   %SE = alloca i32, align 4
   %S = alloca %struct.Struct, align 1
-  call void @llvm.dbg.declare(metadata i32* %SE, metadata !42, metadata !DIExpression()), !dbg !43
-  call void @llvm.dbg.declare(metadata %struct.Struct* %S, metadata !44, metadata !DIExpression()), !dbg !45
+  call void @llvm.dbg.declare(metadata ptr %SE, metadata !42, metadata !DIExpression()), !dbg !43
+  call void @llvm.dbg.declare(metadata ptr %S, metadata !44, metadata !DIExpression()), !dbg !45
   ret void, !dbg !46
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/fortran-basic.ll b/llvm/test/DebugInfo/COFF/fortran-basic.ll
index 96f3af3ebda96..f4732e9b103f9 100644
--- a/llvm/test/DebugInfo/COFF/fortran-basic.ll
+++ b/llvm/test/DebugInfo/COFF/fortran-basic.ll
@@ -77,23 +77,23 @@ target triple = "x86_64-pc-windows-msvc"
 define void @MAIN__() #0 !dbg !3 {
 alloca_0:
   %"$io_ctx" = alloca [6 x i64], align 8
-  %strlit_fetch.1 = load [6 x i8], [6 x i8]* @strlit, align 1, !dbg !39
-  %func_result = call i32 @for_set_reentrancy(i32* @0), !dbg !39
-  store i32 1, i32* getelementptr inbounds ([10 x i32], [10 x i32]* @"ARRAY$ARRAY1", i32 0, i32 0), align 1, !dbg !40
-  store i32 2, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @"ARRAY$ARRAY2", i32 0, i32 0), align 1, !dbg !41
-  store double 8.000000e+00, double* bitcast ([18 x i8]* @COM to double*), align 1, !dbg !42
-  store i32 -1, i32* bitcast (i8* getelementptr inbounds ([18 x i8], [18 x i8]* @COM, i32 0, i64 8) to i32*), align 1, !dbg !43
-  call void @llvm.for.cpystr.i64.i64.i64(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @COM, i32 0, i64 12), i64 6, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @strlit, i32 0, i32 0), i64 3, i64 0, i1 false), !dbg !44
+  %strlit_fetch.1 = load [6 x i8], ptr @strlit, align 1, !dbg !39
+  %func_result = call i32 @for_set_reentrancy(ptr @0), !dbg !39
+  store i32 1, ptr @"ARRAY$ARRAY1", align 1, !dbg !40
+  store i32 2, ptr @"ARRAY$ARRAY2", align 1, !dbg !41
+  store double 8.000000e+00, ptr @COM, align 1, !dbg !42
+  store i32 -1, ptr getelementptr inbounds ([18 x i8], ptr @COM, i32 0, i64 8), align 1, !dbg !43
+  call void @llvm.for.cpystr.i64.i64.i64(ptr getelementptr inbounds ([18 x i8], ptr @COM, i32 0, i64 12), i64 6, ptr @strlit, i64 3, i64 0, i1 false), !dbg !44
   ret void, !dbg !45
 }
 
-declare i32 @for_set_reentrancy(i32* nocapture readonly)
+declare i32 @for_set_reentrancy(ptr nocapture readonly)
 
 ; Function Attrs: nounwind readnone speculatable
-declare i32* @llvm.intel.subscript.p0i32.i64.i64.p0i32.i64(i8, i64, i64, i32*, i64) #1
+declare ptr @llvm.intel.subscript.p0.i64.i64.p0.i64(i8, i64, i64, ptr, i64) #1
 
 ; Function Attrs: argmemonly nofree nosync nounwind willreturn
-declare void @llvm.for.cpystr.i64.i64.i64(i8* noalias nocapture writeonly, i64, i8* noalias nocapture readonly, i64, i64, i1 immarg) #2
+declare void @llvm.for.cpystr.i64.i64.i64(ptr noalias nocapture writeonly, i64, ptr noalias nocapture readonly, i64, i64, i1 immarg) #2
 
 attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="none" "intel-lang"="fortran" "min-legal-vector-width"="0" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" }
 attributes #1 = { nounwind readnone speculatable }

diff  --git a/llvm/test/DebugInfo/COFF/fortran-contained-proc.ll b/llvm/test/DebugInfo/COFF/fortran-contained-proc.ll
index eb76801862773..f8b66aae212e7 100644
--- a/llvm/test/DebugInfo/COFF/fortran-contained-proc.ll
+++ b/llvm/test/DebugInfo/COFF/fortran-contained-proc.ll
@@ -34,39 +34,39 @@ source_filename = "tr1.f90"
 target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-windows-msvc"
 
-@"IF_TEST$A" = internal global i32* null, align 8, !dbg !0
+@"IF_TEST$A" = internal global ptr null, align 8, !dbg !0
 @0 = internal unnamed_addr constant i32 65536
 @1 = internal unnamed_addr constant i32 2
 
 ; Function Attrs: nounwind uwtable
 define void @MAIN__() local_unnamed_addr #0 !dbg !2 {
 alloca_0:
-  %func_result = tail call i32 @for_set_fpe_(i32* nonnull @0) #4, !dbg !22
-  %func_result2 = tail call i32 @for_set_reentrancy(i32* nonnull @1) #4, !dbg !22
-  %func_result4 = tail call i32 @for_alloc_allocatable(i64 4, i8** bitcast (i32** @"IF_TEST$A" to i8**), i32 262144) #4, !dbg !23
-  %"IF_TEST$A_fetch.1" = load i32*, i32** @"IF_TEST$A", align 8, !dbg !24, !tbaa !25
-  call void @llvm.dbg.declare(metadata i32* %"IF_TEST$A_fetch.1", metadata !29, metadata !DIExpression()), !dbg !33
+  %func_result = tail call i32 @for_set_fpe_(ptr nonnull @0) #4, !dbg !22
+  %func_result2 = tail call i32 @for_set_reentrancy(ptr nonnull @1) #4, !dbg !22
+  %func_result4 = tail call i32 @for_alloc_allocatable(i64 4, ptr @"IF_TEST$A", i32 262144) #4, !dbg !23
+  %"IF_TEST$A_fetch.1" = load ptr, ptr @"IF_TEST$A", align 8, !dbg !24, !tbaa !25
+  call void @llvm.dbg.declare(metadata ptr %"IF_TEST$A_fetch.1", metadata !29, metadata !DIExpression()), !dbg !33
   call void @llvm.dbg.value(metadata i32 1, metadata !32, metadata !DIExpression()), !dbg !35
-  store i32 1, i32* %"IF_TEST$A_fetch.1", align 1, !dbg !36, !tbaa !37, !alias.scope !41
+  store i32 1, ptr %"IF_TEST$A_fetch.1", align 1, !dbg !36, !tbaa !37, !alias.scope !41
   ret void, !dbg !44
 }
 
 ; Function Attrs: mustprogress nofree norecurse nosync nounwind uwtable willreturn writeonly
-define void @IF_TEST_ip_SUB(i32* noalias nocapture dereferenceable(4) %AA) local_unnamed_addr #1 !dbg !30 {
+define void @IF_TEST_ip_SUB(ptr noalias nocapture dereferenceable(4) %AA) local_unnamed_addr #1 !dbg !30 {
 alloca_1:
-  call void @llvm.dbg.declare(metadata i32* %AA, metadata !29, metadata !DIExpression()), !dbg !45
+  call void @llvm.dbg.declare(metadata ptr %AA, metadata !29, metadata !DIExpression()), !dbg !45
   call void @llvm.dbg.value(metadata i32 1, metadata !32, metadata !DIExpression()), !dbg !46
-  store i32 1, i32* %AA, align 1, !dbg !47, !tbaa !37
+  store i32 1, ptr %AA, align 1, !dbg !47, !tbaa !37
   ret void, !dbg !48
 }
 
-declare i32 @for_set_fpe_(i32* nocapture readonly) local_unnamed_addr
+declare i32 @for_set_fpe_(ptr nocapture readonly) local_unnamed_addr
 
 ; Function Attrs: nofree
-declare i32 @for_set_reentrancy(i32* nocapture readonly) local_unnamed_addr #2
+declare i32 @for_set_reentrancy(ptr nocapture readonly) local_unnamed_addr #2
 
 ; Function Attrs: nofree
-declare i32 @for_alloc_allocatable(i64, i8** nocapture, i32) local_unnamed_addr #2
+declare i32 @for_alloc_allocatable(i64, ptr nocapture, i32) local_unnamed_addr #2
 
 ; Function Attrs: mustprogress nofree nosync nounwind readnone speculatable willreturn
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #3

diff  --git a/llvm/test/DebugInfo/COFF/fpo-argsize.ll b/llvm/test/DebugInfo/COFF/fpo-argsize.ll
index eb2f87601d475..82eedd95564bb 100644
--- a/llvm/test/DebugInfo/COFF/fpo-argsize.ll
+++ b/llvm/test/DebugInfo/COFF/fpo-argsize.ll
@@ -58,12 +58,12 @@ target triple = "i386-pc-windows-msvc19.11.25508"
 define void @cdecl1(i32 %a) #0 !dbg !8 {
 entry:
   %a.addr = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !12, metadata !DIExpression()), !dbg !13
-  %0 = load i32, i32* %a.addr, align 4, !dbg !14
-  %1 = load i32, i32* @g, align 4, !dbg !15
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !12, metadata !DIExpression()), !dbg !13
+  %0 = load i32, ptr %a.addr, align 4, !dbg !14
+  %1 = load i32, ptr @g, align 4, !dbg !15
   %add = add nsw i32 %1, %0, !dbg !15
-  store i32 %add, i32* @g, align 4, !dbg !15
+  store i32 %add, ptr @g, align 4, !dbg !15
   ret void, !dbg !16
 }
 
@@ -75,16 +75,16 @@ define void @cdecl2(i32 %a, i32 %b) #0 !dbg !17 {
 entry:
   %b.addr = alloca i32, align 4
   %a.addr = alloca i32, align 4
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !20, metadata !DIExpression()), !dbg !21
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !22, metadata !DIExpression()), !dbg !23
-  %0 = load i32, i32* %a.addr, align 4, !dbg !24
-  %1 = load i32, i32* %b.addr, align 4, !dbg !25
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !20, metadata !DIExpression()), !dbg !21
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !22, metadata !DIExpression()), !dbg !23
+  %0 = load i32, ptr %a.addr, align 4, !dbg !24
+  %1 = load i32, ptr %b.addr, align 4, !dbg !25
   %add = add nsw i32 %0, %1, !dbg !26
-  %2 = load i32, i32* @g, align 4, !dbg !27
+  %2 = load i32, ptr @g, align 4, !dbg !27
   %add1 = add nsw i32 %2, %add, !dbg !27
-  store i32 %add1, i32* @g, align 4, !dbg !27
+  store i32 %add1, ptr @g, align 4, !dbg !27
   ret void, !dbg !28
 }
 
@@ -94,20 +94,20 @@ entry:
   %c.addr = alloca i32, align 4
   %b.addr = alloca i32, align 4
   %a.addr = alloca i32, align 4
-  store i32 %c, i32* %c.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %c.addr, metadata !32, metadata !DIExpression()), !dbg !33
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !34, metadata !DIExpression()), !dbg !35
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !36, metadata !DIExpression()), !dbg !37
-  %0 = load i32, i32* %a.addr, align 4, !dbg !38
-  %1 = load i32, i32* %b.addr, align 4, !dbg !39
+  store i32 %c, ptr %c.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %c.addr, metadata !32, metadata !DIExpression()), !dbg !33
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !34, metadata !DIExpression()), !dbg !35
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !36, metadata !DIExpression()), !dbg !37
+  %0 = load i32, ptr %a.addr, align 4, !dbg !38
+  %1 = load i32, ptr %b.addr, align 4, !dbg !39
   %add = add nsw i32 %0, %1, !dbg !40
-  %2 = load i32, i32* %c.addr, align 4, !dbg !41
+  %2 = load i32, ptr %c.addr, align 4, !dbg !41
   %add1 = add nsw i32 %add, %2, !dbg !42
-  %3 = load i32, i32* @g, align 4, !dbg !43
+  %3 = load i32, ptr @g, align 4, !dbg !43
   %add2 = add nsw i32 %3, %add1, !dbg !43
-  store i32 %add2, i32* @g, align 4, !dbg !43
+  store i32 %add2, ptr @g, align 4, !dbg !43
   ret void, !dbg !44
 }
 
@@ -115,12 +115,12 @@ entry:
 define x86_fastcallcc void @"\01 at fastcall1@4"(i32 inreg %a) #0 !dbg !45 {
 entry:
   %a.addr = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !47, metadata !DIExpression()), !dbg !48
-  %0 = load i32, i32* %a.addr, align 4, !dbg !49
-  %1 = load i32, i32* @g, align 4, !dbg !50
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !47, metadata !DIExpression()), !dbg !48
+  %0 = load i32, ptr %a.addr, align 4, !dbg !49
+  %1 = load i32, ptr @g, align 4, !dbg !50
   %add = add nsw i32 %1, %0, !dbg !50
-  store i32 %add, i32* @g, align 4, !dbg !50
+  store i32 %add, ptr @g, align 4, !dbg !50
   ret void, !dbg !51
 }
 
@@ -129,16 +129,16 @@ define x86_fastcallcc void @"\01 at fastcall2@8"(i32 inreg %a, i32 inreg %b) #0 !db
 entry:
   %b.addr = alloca i32, align 4
   %a.addr = alloca i32, align 4
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !54, metadata !DIExpression()), !dbg !55
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !56, metadata !DIExpression()), !dbg !57
-  %0 = load i32, i32* %a.addr, align 4, !dbg !58
-  %1 = load i32, i32* %b.addr, align 4, !dbg !59
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !54, metadata !DIExpression()), !dbg !55
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !56, metadata !DIExpression()), !dbg !57
+  %0 = load i32, ptr %a.addr, align 4, !dbg !58
+  %1 = load i32, ptr %b.addr, align 4, !dbg !59
   %add = add nsw i32 %0, %1, !dbg !60
-  %2 = load i32, i32* @g, align 4, !dbg !61
+  %2 = load i32, ptr @g, align 4, !dbg !61
   %add1 = add nsw i32 %2, %add, !dbg !61
-  store i32 %add1, i32* @g, align 4, !dbg !61
+  store i32 %add1, ptr @g, align 4, !dbg !61
   ret void, !dbg !62
 }
 
@@ -148,20 +148,20 @@ entry:
   %c.addr = alloca i32, align 4
   %b.addr = alloca i32, align 4
   %a.addr = alloca i32, align 4
-  store i32 %c, i32* %c.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %c.addr, metadata !65, metadata !DIExpression()), !dbg !66
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !67, metadata !DIExpression()), !dbg !68
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !69, metadata !DIExpression()), !dbg !70
-  %0 = load i32, i32* %a.addr, align 4, !dbg !71
-  %1 = load i32, i32* %b.addr, align 4, !dbg !72
+  store i32 %c, ptr %c.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %c.addr, metadata !65, metadata !DIExpression()), !dbg !66
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !67, metadata !DIExpression()), !dbg !68
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !69, metadata !DIExpression()), !dbg !70
+  %0 = load i32, ptr %a.addr, align 4, !dbg !71
+  %1 = load i32, ptr %b.addr, align 4, !dbg !72
   %add = add nsw i32 %0, %1, !dbg !73
-  %2 = load i32, i32* %c.addr, align 4, !dbg !74
+  %2 = load i32, ptr %c.addr, align 4, !dbg !74
   %add1 = add nsw i32 %add, %2, !dbg !75
-  %3 = load i32, i32* @g, align 4, !dbg !76
+  %3 = load i32, ptr @g, align 4, !dbg !76
   %add2 = add nsw i32 %3, %add1, !dbg !76
-  store i32 %add2, i32* @g, align 4, !dbg !76
+  store i32 %add2, ptr @g, align 4, !dbg !76
   ret void, !dbg !77
 }
 
@@ -169,12 +169,12 @@ entry:
 define x86_stdcallcc void @"\01_stdcall1 at 4"(i32 %a) #0 !dbg !78 {
 entry:
   %a.addr = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !80, metadata !DIExpression()), !dbg !81
-  %0 = load i32, i32* %a.addr, align 4, !dbg !82
-  %1 = load i32, i32* @g, align 4, !dbg !83
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !80, metadata !DIExpression()), !dbg !81
+  %0 = load i32, ptr %a.addr, align 4, !dbg !82
+  %1 = load i32, ptr @g, align 4, !dbg !83
   %add = add nsw i32 %1, %0, !dbg !83
-  store i32 %add, i32* @g, align 4, !dbg !83
+  store i32 %add, ptr @g, align 4, !dbg !83
   ret void, !dbg !84
 }
 
@@ -183,16 +183,16 @@ define x86_stdcallcc void @"\01_stdcall2 at 8"(i32 %a, i32 %b) #0 !dbg !85 {
 entry:
   %b.addr = alloca i32, align 4
   %a.addr = alloca i32, align 4
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !87, metadata !DIExpression()), !dbg !88
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !89, metadata !DIExpression()), !dbg !90
-  %0 = load i32, i32* %a.addr, align 4, !dbg !91
-  %1 = load i32, i32* %b.addr, align 4, !dbg !92
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !87, metadata !DIExpression()), !dbg !88
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !89, metadata !DIExpression()), !dbg !90
+  %0 = load i32, ptr %a.addr, align 4, !dbg !91
+  %1 = load i32, ptr %b.addr, align 4, !dbg !92
   %add = add nsw i32 %0, %1, !dbg !93
-  %2 = load i32, i32* @g, align 4, !dbg !94
+  %2 = load i32, ptr @g, align 4, !dbg !94
   %add1 = add nsw i32 %2, %add, !dbg !94
-  store i32 %add1, i32* @g, align 4, !dbg !94
+  store i32 %add1, ptr @g, align 4, !dbg !94
   ret void, !dbg !95
 }
 
@@ -202,86 +202,86 @@ entry:
   %c.addr = alloca i32, align 4
   %b.addr = alloca i32, align 4
   %a.addr = alloca i32, align 4
-  store i32 %c, i32* %c.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %c.addr, metadata !98, metadata !DIExpression()), !dbg !99
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !100, metadata !DIExpression()), !dbg !101
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !102, metadata !DIExpression()), !dbg !103
-  %0 = load i32, i32* %a.addr, align 4, !dbg !104
-  %1 = load i32, i32* %b.addr, align 4, !dbg !105
+  store i32 %c, ptr %c.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %c.addr, metadata !98, metadata !DIExpression()), !dbg !99
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !100, metadata !DIExpression()), !dbg !101
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !102, metadata !DIExpression()), !dbg !103
+  %0 = load i32, ptr %a.addr, align 4, !dbg !104
+  %1 = load i32, ptr %b.addr, align 4, !dbg !105
   %add = add nsw i32 %0, %1, !dbg !106
-  %2 = load i32, i32* %c.addr, align 4, !dbg !107
+  %2 = load i32, ptr %c.addr, align 4, !dbg !107
   %add1 = add nsw i32 %add, %2, !dbg !108
-  %3 = load i32, i32* @g, align 4, !dbg !109
+  %3 = load i32, ptr @g, align 4, !dbg !109
   %add2 = add nsw i32 %3, %add1, !dbg !109
-  store i32 %add2, i32* @g, align 4, !dbg !109
+  store i32 %add2, ptr @g, align 4, !dbg !109
   ret void, !dbg !110
 }
 
 ; Function Attrs: noinline nounwind optnone
-define x86_thiscallcc void @"\01?thiscall1 at Foo@@QAEXH at Z"(%struct.Foo* %this, i32 %a) #0 align 2 !dbg !111 {
+define x86_thiscallcc void @"\01?thiscall1 at Foo@@QAEXH at Z"(ptr %this, i32 %a) #0 align 2 !dbg !111 {
 entry:
   %a.addr = alloca i32, align 4
-  %this.addr = alloca %struct.Foo*, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !124, metadata !DIExpression()), !dbg !125
-  store %struct.Foo* %this, %struct.Foo** %this.addr, align 4
-  call void @llvm.dbg.declare(metadata %struct.Foo** %this.addr, metadata !126, metadata !DIExpression()), !dbg !128
-  %this1 = load %struct.Foo*, %struct.Foo** %this.addr, align 4
-  %0 = load i32, i32* %a.addr, align 4, !dbg !129
-  %1 = load i32, i32* @g, align 4, !dbg !130
+  %this.addr = alloca ptr, align 4
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !124, metadata !DIExpression()), !dbg !125
+  store ptr %this, ptr %this.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !126, metadata !DIExpression()), !dbg !128
+  %this1 = load ptr, ptr %this.addr, align 4
+  %0 = load i32, ptr %a.addr, align 4, !dbg !129
+  %1 = load i32, ptr @g, align 4, !dbg !130
   %add = add nsw i32 %1, %0, !dbg !130
-  store i32 %add, i32* @g, align 4, !dbg !130
+  store i32 %add, ptr @g, align 4, !dbg !130
   ret void, !dbg !131
 }
 
 ; Function Attrs: noinline nounwind optnone
-define x86_thiscallcc void @"\01?thiscall2 at Foo@@QAEXHH at Z"(%struct.Foo* %this, i32 %a, i32 %b) #0 align 2 !dbg !132 {
+define x86_thiscallcc void @"\01?thiscall2 at Foo@@QAEXHH at Z"(ptr %this, i32 %a, i32 %b) #0 align 2 !dbg !132 {
 entry:
   %b.addr = alloca i32, align 4
   %a.addr = alloca i32, align 4
-  %this.addr = alloca %struct.Foo*, align 4
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !133, metadata !DIExpression()), !dbg !134
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !135, metadata !DIExpression()), !dbg !136
-  store %struct.Foo* %this, %struct.Foo** %this.addr, align 4
-  call void @llvm.dbg.declare(metadata %struct.Foo** %this.addr, metadata !137, metadata !DIExpression()), !dbg !138
-  %this1 = load %struct.Foo*, %struct.Foo** %this.addr, align 4
-  %0 = load i32, i32* %a.addr, align 4, !dbg !139
-  %1 = load i32, i32* %b.addr, align 4, !dbg !140
+  %this.addr = alloca ptr, align 4
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !133, metadata !DIExpression()), !dbg !134
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !135, metadata !DIExpression()), !dbg !136
+  store ptr %this, ptr %this.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !137, metadata !DIExpression()), !dbg !138
+  %this1 = load ptr, ptr %this.addr, align 4
+  %0 = load i32, ptr %a.addr, align 4, !dbg !139
+  %1 = load i32, ptr %b.addr, align 4, !dbg !140
   %add = add nsw i32 %0, %1, !dbg !141
-  %2 = load i32, i32* @g, align 4, !dbg !142
+  %2 = load i32, ptr @g, align 4, !dbg !142
   %add2 = add nsw i32 %2, %add, !dbg !142
-  store i32 %add2, i32* @g, align 4, !dbg !142
+  store i32 %add2, ptr @g, align 4, !dbg !142
   ret void, !dbg !143
 }
 
 ; Function Attrs: noinline nounwind optnone
-define x86_thiscallcc void @"\01?thiscall3 at Foo@@QAEXHHH at Z"(%struct.Foo* %this, i32 %a, i32 %b, i32 %c) #0 align 2 !dbg !144 {
+define x86_thiscallcc void @"\01?thiscall3 at Foo@@QAEXHHH at Z"(ptr %this, i32 %a, i32 %b, i32 %c) #0 align 2 !dbg !144 {
 entry:
   %c.addr = alloca i32, align 4
   %b.addr = alloca i32, align 4
   %a.addr = alloca i32, align 4
-  %this.addr = alloca %struct.Foo*, align 4
-  store i32 %c, i32* %c.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %c.addr, metadata !145, metadata !DIExpression()), !dbg !146
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !147, metadata !DIExpression()), !dbg !148
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !149, metadata !DIExpression()), !dbg !150
-  store %struct.Foo* %this, %struct.Foo** %this.addr, align 4
-  call void @llvm.dbg.declare(metadata %struct.Foo** %this.addr, metadata !151, metadata !DIExpression()), !dbg !152
-  %this1 = load %struct.Foo*, %struct.Foo** %this.addr, align 4
-  %0 = load i32, i32* %a.addr, align 4, !dbg !153
-  %1 = load i32, i32* %b.addr, align 4, !dbg !154
+  %this.addr = alloca ptr, align 4
+  store i32 %c, ptr %c.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %c.addr, metadata !145, metadata !DIExpression()), !dbg !146
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !147, metadata !DIExpression()), !dbg !148
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !149, metadata !DIExpression()), !dbg !150
+  store ptr %this, ptr %this.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !151, metadata !DIExpression()), !dbg !152
+  %this1 = load ptr, ptr %this.addr, align 4
+  %0 = load i32, ptr %a.addr, align 4, !dbg !153
+  %1 = load i32, ptr %b.addr, align 4, !dbg !154
   %add = add nsw i32 %0, %1, !dbg !155
-  %2 = load i32, i32* %c.addr, align 4, !dbg !156
+  %2 = load i32, ptr %c.addr, align 4, !dbg !156
   %add2 = add nsw i32 %add, %2, !dbg !157
-  %3 = load i32, i32* @g, align 4, !dbg !158
+  %3 = load i32, ptr @g, align 4, !dbg !158
   %add3 = add nsw i32 %3, %add2, !dbg !158
-  store i32 %add3, i32* @g, align 4, !dbg !158
+  store i32 %add3, ptr @g, align 4, !dbg !158
   ret void, !dbg !159
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/fpo-funclet.ll b/llvm/test/DebugInfo/COFF/fpo-funclet.ll
index ea28ddcb4e4f6..302c4a23b7d6c 100644
--- a/llvm/test/DebugInfo/COFF/fpo-funclet.ll
+++ b/llvm/test/DebugInfo/COFF/fpo-funclet.ll
@@ -37,7 +37,7 @@ source_filename = "t.cpp"
 target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
 target triple = "i386-pc-windows-msvc19.11.25508"
 
-define void @"\01?f@@YAXXZ"() local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) !dbg !8 {
+define void @"\01?f@@YAXXZ"() local_unnamed_addr #0 personality ptr @__CxxFrameHandler3 !dbg !8 {
 entry:
   invoke void @"\01?g@@YAXXZ"()
           to label %try.cont unwind label %catch.dispatch, !dbg !11
@@ -46,7 +46,7 @@ catch.dispatch:                                   ; preds = %entry
   %0 = catchswitch within none [label %catch] unwind to caller, !dbg !13
 
 catch:                                            ; preds = %catch.dispatch
-  %1 = catchpad within %0 [i8* null, i32 64, i8* null], !dbg !13
+  %1 = catchpad within %0 [ptr null, i32 64, ptr null], !dbg !13
   call void @"\01?g@@YAXXZ"() [ "funclet"(token %1) ], !dbg !14
   catchret from %1 to label %try.cont, !dbg !16
 

diff  --git a/llvm/test/DebugInfo/COFF/fpo-realign-alloca.ll b/llvm/test/DebugInfo/COFF/fpo-realign-alloca.ll
index 4c4ad7abd1671..d8b3d35f87cb7 100644
--- a/llvm/test/DebugInfo/COFF/fpo-realign-alloca.ll
+++ b/llvm/test/DebugInfo/COFF/fpo-realign-alloca.ll
@@ -1,10 +1,10 @@
 ; RUN: llc < %s | FileCheck %s
 
 ; C source:
-; void usethings(double *, void *p);
+; void usethings(ptr, ptr p);
 ; int realign_and_alloca(int n) {
 ;   double d = 0;
-;   void *p = __builtin_alloca(n);
+;   ptr p = __builtin_alloca(n);
 ;   usethings(&d, p);
 ;   return 0;
 ; }
@@ -44,25 +44,24 @@ define i32 @realign_and_alloca(i32 %n) local_unnamed_addr #0 !dbg !8 {
 entry:
   %d = alloca double, align 8
   tail call void @llvm.dbg.value(metadata i32 %n, metadata !13, metadata !DIExpression()), !dbg !18
-  %0 = bitcast double* %d to i8*, !dbg !19
-  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %0) #4, !dbg !19
+  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %d) #4, !dbg !19
   tail call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !14, metadata !DIExpression()), !dbg !20
-  store double 0.000000e+00, double* %d, align 8, !dbg !20, !tbaa !21
-  %1 = alloca i8, i32 %n, align 16, !dbg !25
-  tail call void @llvm.dbg.value(metadata i8* %1, metadata !16, metadata !DIExpression()), !dbg !26
-  tail call void @llvm.dbg.value(metadata double* %d, metadata !14, metadata !DIExpression()), !dbg !20
-  call void @usethings(double* nonnull %d, i8* nonnull %1) #4, !dbg !27
-  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %0) #4, !dbg !28
+  store double 0.000000e+00, ptr %d, align 8, !dbg !20, !tbaa !21
+  %0 = alloca i8, i32 %n, align 16, !dbg !25
+  tail call void @llvm.dbg.value(metadata ptr %0, metadata !16, metadata !DIExpression()), !dbg !26
+  tail call void @llvm.dbg.value(metadata ptr %d, metadata !14, metadata !DIExpression()), !dbg !20
+  call void @usethings(ptr nonnull %d, ptr nonnull %0) #4, !dbg !27
+  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %d) #4, !dbg !28
   ret i32 0, !dbg !29
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1
 
-declare void @usethings(double*, i8*) local_unnamed_addr #2
+declare void @usethings(ptr, ptr) local_unnamed_addr #2
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, metadata, metadata) #3

diff  --git a/llvm/test/DebugInfo/COFF/fpo-realign-vframe.ll b/llvm/test/DebugInfo/COFF/fpo-realign-vframe.ll
index 29e0e6adab377..0a032a8a5bfa5 100644
--- a/llvm/test/DebugInfo/COFF/fpo-realign-vframe.ll
+++ b/llvm/test/DebugInfo/COFF/fpo-realign-vframe.ll
@@ -14,7 +14,7 @@
 ; struct Foo {
 ;   int x = 42;
 ;   int __declspec(noinline) foo();
-;   void __declspec(noinline) bar(int *a, int *b, double *c);
+;   void __declspec(noinline) bar(int *a, int *b, ptr c);
 ; };
 ; int Foo::foo() {
 ;   int a = 1;
@@ -24,7 +24,7 @@
 ;   x += (int)force_alignment;
 ;   return x;
 ; }
-; void Foo::bar(int *a, int *b, double *c) {
+; void Foo::bar(int *a, int *b, ptr c) {
 ;   __debugbreak();
 ;   *c += *a + *b;
 ; }
@@ -36,7 +36,7 @@
 
 ; More reduced C code to generate this IR:
 ; int getval(void);
-; void usevals(int *, int *, double *);
+; void usevals(int *, int *, ptr);
 ; int realign_with_csrs(int x) {
 ;   int a = getval();
 ;   double __declspec(align(8)) force_alignment = 0.42;
@@ -158,36 +158,34 @@ entry:
   %x.addr = alloca i32, align 4
   %a = alloca i32, align 4
   %force_alignment = alloca double, align 8
-  store i32 %x, i32* %x.addr, align 4, !tbaa !17
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !13, metadata !DIExpression()), !dbg !21
-  %0 = bitcast i32* %a to i8*, !dbg !22
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0) #4, !dbg !22
-  call void @llvm.dbg.declare(metadata i32* %a, metadata !14, metadata !DIExpression()), !dbg !22
+  store i32 %x, ptr %x.addr, align 4, !tbaa !17
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !13, metadata !DIExpression()), !dbg !21
+  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %a) #4, !dbg !22
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !14, metadata !DIExpression()), !dbg !22
   %call = tail call i32 @getval() #4, !dbg !22
-  store i32 %call, i32* %a, align 4, !dbg !22, !tbaa !17
-  %1 = bitcast double* %force_alignment to i8*, !dbg !23
-  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %1) #4, !dbg !23
-  call void @llvm.dbg.declare(metadata double* %force_alignment, metadata !15, metadata !DIExpression()), !dbg !23
-  store double 4.200000e-01, double* %force_alignment, align 8, !dbg !23, !tbaa !24
-  call void @usevals(i32* nonnull %a, i32* nonnull %x.addr, double* nonnull %force_alignment) #4, !dbg !26
-  %2 = load i32, i32* %x.addr, align 4, !dbg !27, !tbaa !17
-  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %1) #4, !dbg !28
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0) #4, !dbg !28
-  ret i32 %2, !dbg !27
+  store i32 %call, ptr %a, align 4, !dbg !22, !tbaa !17
+  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %force_alignment) #4, !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %force_alignment, metadata !15, metadata !DIExpression()), !dbg !23
+  store double 4.200000e-01, ptr %force_alignment, align 8, !dbg !23, !tbaa !24
+  call void @usevals(ptr nonnull %a, ptr nonnull %x.addr, ptr nonnull %force_alignment) #4, !dbg !26
+  %0 = load i32, ptr %x.addr, align 4, !dbg !27, !tbaa !17
+  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %force_alignment) #4, !dbg !28
+  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %a) #4, !dbg !28
+  ret i32 %0, !dbg !27
 }
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2
 
 declare dso_local i32 @getval() local_unnamed_addr #3
 
-declare dso_local void @usevals(i32*, i32*, double*) local_unnamed_addr #3
+declare dso_local void @usevals(ptr, ptr, ptr) local_unnamed_addr #3
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2
 
 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pentium4" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone speculatable }

diff  --git a/llvm/test/DebugInfo/COFF/fpo-shrink-wrap.ll b/llvm/test/DebugInfo/COFF/fpo-shrink-wrap.ll
index 033097af5f9ec..9c6fb8aa6d2cf 100644
--- a/llvm/test/DebugInfo/COFF/fpo-shrink-wrap.ll
+++ b/llvm/test/DebugInfo/COFF/fpo-shrink-wrap.ll
@@ -97,7 +97,7 @@ entry:
   %c.addr = alloca i32, align 4
   tail call void @llvm.dbg.value(metadata i32 %d, metadata !13, metadata !DIExpression()), !dbg !19
   tail call void @llvm.dbg.value(metadata i32 %c, metadata !14, metadata !DIExpression()), !dbg !20
-  store i32 %c, i32* %c.addr, align 4, !tbaa !21
+  store i32 %c, ptr %c.addr, align 4, !tbaa !21
   tail call void @llvm.dbg.value(metadata i32 %b, metadata !15, metadata !DIExpression()), !dbg !25
   tail call void @llvm.dbg.value(metadata i32 %a, metadata !16, metadata !DIExpression()), !dbg !26
   %cmp = icmp slt i32 %a, %b, !dbg !27
@@ -110,8 +110,8 @@ for.cond:                                         ; preds = %for.cond.preheader,
   %i.0 = phi i32 [ %inc, %for.cond ], [ %c, %for.cond.preheader ]
   call void @llvm.dbg.value(metadata i32 %i.0, metadata !17, metadata !DIExpression()), !dbg !32
   %cmp1 = icmp slt i32 %i.0, %d, !dbg !30
-  call void @llvm.dbg.value(metadata i32* %c.addr, metadata !14, metadata !DIExpression()), !dbg !20
-  %call = call i32 @doSomething(i32* nonnull %c.addr) #3, !dbg !33
+  call void @llvm.dbg.value(metadata ptr %c.addr, metadata !14, metadata !DIExpression()), !dbg !20
+  %call = call i32 @doSomething(ptr nonnull %c.addr) #3, !dbg !33
   %inc = add nsw i32 %i.0, 1, !dbg !34
   call void @llvm.dbg.value(metadata i32 %inc, metadata !17, metadata !DIExpression()), !dbg !32
   br i1 %cmp1, label %for.cond, label %return, !dbg !35, !llvm.loop !36
@@ -121,7 +121,7 @@ return:                                           ; preds = %for.cond, %entry
   ret i32 %retval.0, !dbg !38
 }
 
-declare i32 @doSomething(i32*) local_unnamed_addr #1
+declare i32 @doSomething(ptr) local_unnamed_addr #1
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, metadata, metadata) #2

diff  --git a/llvm/test/DebugInfo/COFF/fpo-stack-protect.ll b/llvm/test/DebugInfo/COFF/fpo-stack-protect.ll
index 6b5103a1d3dce..566d36e87d2b6 100644
--- a/llvm/test/DebugInfo/COFF/fpo-stack-protect.ll
+++ b/llvm/test/DebugInfo/COFF/fpo-stack-protect.ll
@@ -43,19 +43,17 @@ define i32 @ssp(i32 returned %a) local_unnamed_addr #0 !dbg !8 {
 entry:
   %arr = alloca [4 x i32], align 4
   tail call void @llvm.dbg.value(metadata i32 %a, metadata !13, metadata !DIExpression()), !dbg !18
-  %0 = bitcast [4 x i32]* %arr to i8*, !dbg !19
-  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %0) #4, !dbg !19
-  tail call void @llvm.dbg.declare(metadata [4 x i32]* %arr, metadata !14, metadata !DIExpression()), !dbg !20
-  %arrayinit.begin = getelementptr inbounds [4 x i32], [4 x i32]* %arr, i32 0, i32 0, !dbg !21
-  store i32 %a, i32* %arrayinit.begin, align 4, !dbg !21, !tbaa !22
-  %arrayinit.element = getelementptr inbounds [4 x i32], [4 x i32]* %arr, i32 0, i32 1, !dbg !21
-  store i32 %a, i32* %arrayinit.element, align 4, !dbg !21, !tbaa !22
-  %arrayinit.element1 = getelementptr inbounds [4 x i32], [4 x i32]* %arr, i32 0, i32 2, !dbg !21
-  store i32 %a, i32* %arrayinit.element1, align 4, !dbg !21, !tbaa !22
-  %arrayinit.element2 = getelementptr inbounds [4 x i32], [4 x i32]* %arr, i32 0, i32 3, !dbg !21
-  store i32 %a, i32* %arrayinit.element2, align 4, !dbg !21, !tbaa !22
-  call void @escape(i32* nonnull %arrayinit.begin) #4, !dbg !26
-  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %0) #4, !dbg !27
+  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %arr) #4, !dbg !19
+  tail call void @llvm.dbg.declare(metadata ptr %arr, metadata !14, metadata !DIExpression()), !dbg !20
+  store i32 %a, ptr %arr, align 4, !dbg !21, !tbaa !22
+  %arrayinit.element = getelementptr inbounds [4 x i32], ptr %arr, i32 0, i32 1, !dbg !21
+  store i32 %a, ptr %arrayinit.element, align 4, !dbg !21, !tbaa !22
+  %arrayinit.element1 = getelementptr inbounds [4 x i32], ptr %arr, i32 0, i32 2, !dbg !21
+  store i32 %a, ptr %arrayinit.element1, align 4, !dbg !21, !tbaa !22
+  %arrayinit.element2 = getelementptr inbounds [4 x i32], ptr %arr, i32 0, i32 3, !dbg !21
+  store i32 %a, ptr %arrayinit.element2, align 4, !dbg !21, !tbaa !22
+  call void @escape(ptr nonnull %arr) #4, !dbg !26
+  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %arr) #4, !dbg !27
   ret i32 %a, !dbg !28
 }
 
@@ -63,12 +61,12 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2
 
-declare void @escape(i32*) local_unnamed_addr #3
+declare void @escape(ptr) local_unnamed_addr #3
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1

diff  --git a/llvm/test/DebugInfo/COFF/frameproc-flags.ll b/llvm/test/DebugInfo/COFF/frameproc-flags.ll
index 3057ac8cd2d65..9f571b8e70e33 100644
--- a/llvm/test/DebugInfo/COFF/frameproc-flags.ll
+++ b/llvm/test/DebugInfo/COFF/frameproc-flags.ll
@@ -6,7 +6,7 @@
 
 ; extern "C" {
 ;
-; void *_alloca(size_t);
+; ptr_alloca(size_t);
 ; struct __declspec(align(16)) _jmp_buf_str {
 ;   unsigned __int64 Part[2];
 ; };
@@ -117,9 +117,8 @@ entry:
   call void @llvm.dbg.value(metadata i32 %n, metadata !29, metadata !DIExpression()), !dbg !31
   %mul = shl i32 %n, 2, !dbg !32
   %0 = alloca i8, i32 %mul, align 16, !dbg !32
-  %1 = bitcast i8* %0 to i32*, !dbg !32
-  call void @llvm.dbg.value(metadata i32* %1, metadata !30, metadata !DIExpression()), !dbg !32
-  call void @use_intptr(i32* nonnull %1), !dbg !33
+  call void @llvm.dbg.value(metadata ptr %0, metadata !30, metadata !DIExpression()), !dbg !32
+  call void @use_intptr(ptr nonnull %0), !dbg !33
   ret void, !dbg !34
 }
 
@@ -127,22 +126,22 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2
 
-declare dso_local void @use_intptr(i32*) local_unnamed_addr #3
+declare dso_local void @use_intptr(ptr) local_unnamed_addr #3
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2
 
 define dso_local void @call_setjmp(i32 %n) local_unnamed_addr #0 !dbg !35 {
 entry:
   call void @llvm.dbg.value(metadata i32 %n, metadata !37, metadata !DIExpression()), !dbg !38
-  %0 = call i32 (i8*, i32, ...) @_setjmp3(i8* bitcast ([16 x %struct._jmp_buf_str]* @g_jbuf to i8*), i32 0) #4, !dbg !39
+  %0 = call i32 (ptr, i32, ...) @_setjmp3(ptr @g_jbuf, i32 0) #4, !dbg !39
   %tobool = icmp eq i32 %0, 0, !dbg !39
   br i1 %tobool, label %if.then, label %if.end, !dbg !39
 
 if.then:                                          ; preds = %entry
-  call void @use_intptr(i32* null), !dbg !40
+  call void @use_intptr(ptr null), !dbg !40
   br label %if.end, !dbg !40
 
 if.end:                                           ; preds = %entry, %if.then
@@ -150,7 +149,7 @@ if.end:                                           ; preds = %entry, %if.then
 }
 
 ; Function Attrs: returns_twice
-declare dso_local i32 @_setjmp3(i8*, i32, ...) local_unnamed_addr #4
+declare dso_local i32 @_setjmp3(ptr, i32, ...) local_unnamed_addr #4
 
 ; Function Attrs: nounwind
 define dso_local void @use_inlineasm() local_unnamed_addr #5 !dbg !43 {
@@ -159,7 +158,7 @@ entry:
   ret void, !dbg !48
 }
 
-define dso_local void @cpp_eh() local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) !dbg !49 {
+define dso_local void @cpp_eh() local_unnamed_addr #0 personality ptr @__CxxFrameHandler3 !dbg !49 {
 entry:
   invoke void @may_throw()
           to label %try.cont unwind label %catch.dispatch, !dbg !50
@@ -168,7 +167,7 @@ catch.dispatch:                                   ; preds = %entry
   %0 = catchswitch within none [label %catch] unwind to caller, !dbg !52
 
 catch:                                            ; preds = %catch.dispatch
-  %1 = catchpad within %0 [i8* null, i32 64, i8* null], !dbg !52
+  %1 = catchpad within %0 [ptr null, i32 64, ptr null], !dbg !52
   catchret from %1 to label %try.cont, !dbg !53
 
 try.cont:                                         ; preds = %entry, %catch
@@ -180,9 +179,9 @@ declare dso_local void @may_throw() local_unnamed_addr #3
 declare dso_local i32 @__CxxFrameHandler3(...)
 
 ; Function Attrs: norecurse nounwind readnone
-define dso_local nonnull i32 (i32, i32)* @use_inline() local_unnamed_addr #6 !dbg !56 {
+define dso_local nonnull ptr @use_inline() local_unnamed_addr #6 !dbg !56 {
 entry:
-  ret i32 (i32, i32)* @"?is_marked_inline@@YAHHH at Z", !dbg !62
+  ret ptr @"?is_marked_inline@@YAHHH at Z", !dbg !62
 }
 
 ; Function Attrs: inlinehint nounwind readnone
@@ -194,10 +193,10 @@ entry:
   ret i32 %add, !dbg !68
 }
 
-define dso_local void @seh() #0 personality i8* bitcast (i32 (...)* @_except_handler3 to i8*) !dbg !69 {
+define dso_local void @seh() #0 personality ptr @_except_handler3 !dbg !69 {
 entry:
   %__exception_code = alloca i32, align 4
-  call void (...) @llvm.localescape(i32* nonnull %__exception_code)
+  call void (...) @llvm.localescape(ptr nonnull %__exception_code)
   invoke void @may_throw() #12
           to label %__try.cont unwind label %catch.dispatch, !dbg !70
 
@@ -205,7 +204,7 @@ catch.dispatch:                                   ; preds = %entry
   %0 = catchswitch within none [label %__except.ret] unwind to caller, !dbg !72
 
 __except.ret:                                     ; preds = %catch.dispatch
-  %1 = catchpad within %0 [i8* bitcast (i32 ()* @"?filt$0 at 0@seh@@" to i8*)], !dbg !72
+  %1 = catchpad within %0 [ptr @"?filt$0 at 0@seh@@"], !dbg !72
   catchret from %1 to label %__try.cont, !dbg !72
 
 __try.cont:                                       ; preds = %entry, %__except.ret
@@ -215,28 +214,26 @@ __try.cont:                                       ; preds = %entry, %__except.re
 ; Function Attrs: nounwind
 define internal i32 @"?filt$0 at 0@seh@@"() #8 !dbg !74 {
 entry:
-  %0 = tail call i8* @llvm.frameaddress(i32 1)
-  %1 = tail call i8* @llvm.eh.recoverfp(i8* bitcast (void ()* @seh to i8*), i8* %0)
-  %2 = tail call i8* @llvm.localrecover(i8* bitcast (void ()* @seh to i8*), i8* %1, i32 0)
-  %__exception_code = bitcast i8* %2 to i32*
-  %3 = getelementptr inbounds i8, i8* %0, i32 -20, !dbg !76
-  %4 = bitcast i8* %3 to { i32*, i8* }**, !dbg !76
-  %5 = load { i32*, i8* }*, { i32*, i8* }** %4, align 4, !dbg !76
-  %6 = getelementptr inbounds { i32*, i8* }, { i32*, i8* }* %5, i32 0, i32 0, !dbg !76
-  %7 = load i32*, i32** %6, align 4, !dbg !76
-  %8 = load i32, i32* %7, align 4, !dbg !76
-  store i32 %8, i32* %__exception_code, align 4, !dbg !76
+  %0 = tail call ptr @llvm.frameaddress(i32 1)
+  %1 = tail call ptr @llvm.eh.recoverfp(ptr @seh, ptr %0)
+  %2 = tail call ptr @llvm.localrecover(ptr @seh, ptr %1, i32 0)
+  %3 = getelementptr inbounds i8, ptr %0, i32 -20, !dbg !76
+  %4 = load ptr, ptr %3, align 4, !dbg !76
+  %5 = getelementptr inbounds { ptr, ptr }, ptr %4, i32 0, i32 0, !dbg !76
+  %6 = load ptr, ptr %5, align 4, !dbg !76
+  %7 = load i32, ptr %6, align 4, !dbg !76
+  store i32 %7, ptr %2, align 4, !dbg !76
   ret i32 1, !dbg !76
 }
 
 ; Function Attrs: nounwind readnone
-declare i8* @llvm.frameaddress(i32) #9
+declare ptr @llvm.frameaddress(i32) #9
 
 ; Function Attrs: nounwind readnone
-declare i8* @llvm.eh.recoverfp(i8*, i8*) #9
+declare ptr @llvm.eh.recoverfp(ptr, ptr) #9
 
 ; Function Attrs: nounwind readnone
-declare i8* @llvm.localrecover(i8*, i8*, i32) #9
+declare ptr @llvm.localrecover(ptr, ptr, i32) #9
 
 declare dso_local i32 @_except_handler3(...)
 
@@ -253,18 +250,16 @@ entry:
 define dso_local void @stack_guard() local_unnamed_addr #0 !dbg !81 {
 entry:
   %arr = alloca [12 x i32], align 4
-  %0 = bitcast [12 x i32]* %arr to i8*, !dbg !87
-  call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %0) #10, !dbg !87
-  call void @llvm.dbg.declare(metadata [12 x i32]* %arr, metadata !83, metadata !DIExpression()), !dbg !87
-  call void @llvm.memset.p0i8.i32(i8* nonnull align 4 %0, i8 0, i32 48, i1 false), !dbg !87
-  %arrayidx = getelementptr inbounds [12 x i32], [12 x i32]* %arr, i32 0, i32 0, !dbg !88
-  call void @use_intptr(i32* nonnull %arrayidx), !dbg !88
-  call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %0) #10, !dbg !89
+  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %arr) #10, !dbg !87
+  call void @llvm.dbg.declare(metadata ptr %arr, metadata !83, metadata !DIExpression()), !dbg !87
+  call void @llvm.memset.p0.i32(ptr nonnull align 4 %arr, i8 0, i32 48, i1 false), !dbg !87
+  call void @use_intptr(ptr nonnull %arr), !dbg !88
+  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %arr) #10, !dbg !89
   ret void, !dbg !89
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1) #2
+declare void @llvm.memset.p0.i32(ptr nocapture writeonly, i8, i32, i1) #2
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1

diff  --git a/llvm/test/DebugInfo/COFF/global_visibility.ll b/llvm/test/DebugInfo/COFF/global_visibility.ll
index fcb5239b8538d..8da374d3a0752 100644
--- a/llvm/test/DebugInfo/COFF/global_visibility.ll
+++ b/llvm/test/DebugInfo/COFF/global_visibility.ll
@@ -143,10 +143,10 @@ $"?comdat_int@?$A at I@@2IA" = comdat any
 ; Function Attrs: noinline optnone uwtable
 define dso_local void @"?foo@@YAXXZ"() #0 !dbg !8 {
 entry:
-  %0 = load i32, i32* @"?nested_int@?1??foo@@YAXXZ at 4HA", align 4, !dbg !45
-  store i32 %0, i32* @"?local_int@?1??foo@@YAXXZ at 4HA", align 4, !dbg !45
+  %0 = load i32, ptr @"?nested_int@?1??foo@@YAXXZ at 4HA", align 4, !dbg !45
+  store i32 %0, ptr @"?local_int@?1??foo@@YAXXZ at 4HA", align 4, !dbg !45
   %call = call i32 @"?set@?$A at H@@SAHH at Z"(i32 42), !dbg !47
-  store i32 %call, i32* @"?local_int@?1??foo@@YAXXZ at 4HA", align 4, !dbg !47
+  store i32 %call, ptr @"?local_int@?1??foo@@YAXXZ at 4HA", align 4, !dbg !47
   ret void, !dbg !48
 }
 
@@ -155,24 +155,24 @@ define linkonce_odr dso_local i32 @"?set@?$A at H@@SAHH at Z"(i32 %value) #1 comdat al
 entry:
   %value.addr = alloca i32, align 4
   %r = alloca i32, align 4
-  store i32 %value, i32* %value.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %value.addr, metadata !50, metadata !DIExpression()), !dbg !51
-  call void @llvm.dbg.declare(metadata i32* %r, metadata !52, metadata !DIExpression()), !dbg !53
-  %0 = load i32, i32* @"?comdat_int@?$A at H@@2HA", align 4, !dbg !53
-  store i32 %0, i32* %r, align 4, !dbg !53
-  %1 = load i32, i32* %value.addr, align 4, !dbg !54
-  store i32 %1, i32* @"?comdat_int@?$A at H@@2HA", align 4, !dbg !54
-  %2 = load i32, i32* %r, align 4, !dbg !55
+  store i32 %value, ptr %value.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %value.addr, metadata !50, metadata !DIExpression()), !dbg !51
+  call void @llvm.dbg.declare(metadata ptr %r, metadata !52, metadata !DIExpression()), !dbg !53
+  %0 = load i32, ptr @"?comdat_int@?$A at H@@2HA", align 4, !dbg !53
+  store i32 %0, ptr %r, align 4, !dbg !53
+  %1 = load i32, ptr %value.addr, align 4, !dbg !54
+  store i32 %1, ptr @"?comdat_int@?$A at H@@2HA", align 4, !dbg !54
+  %2 = load i32, ptr %r, align 4, !dbg !55
   ret i32 %2, !dbg !55
 }
 
 ; Function Attrs: noinline optnone uwtable
 define dso_local void @"?bar@@YAXXZ"() #0 !dbg !16 {
 entry:
-  %0 = load i32, i32* @"?nested_int@?1??bar@@YAXXZ at 4HA", align 4, !dbg !56
-  store i32 %0, i32* @"?local_int@?1??bar@@YAXXZ at 4HA", align 4, !dbg !56
+  %0 = load i32, ptr @"?nested_int@?1??bar@@YAXXZ at 4HA", align 4, !dbg !56
+  store i32 %0, ptr @"?local_int@?1??bar@@YAXXZ at 4HA", align 4, !dbg !56
   %call = call i32 @"?set@?$A at I@@SAII at Z"(i32 42), !dbg !58
-  store i32 %call, i32* @"?local_int@?1??bar@@YAXXZ at 4HA", align 4, !dbg !58
+  store i32 %call, ptr @"?local_int@?1??bar@@YAXXZ at 4HA", align 4, !dbg !58
   ret void, !dbg !59
 }
 
@@ -181,14 +181,14 @@ define linkonce_odr dso_local i32 @"?set@?$A at I@@SAII at Z"(i32 %value) #1 comdat al
 entry:
   %value.addr = alloca i32, align 4
   %r = alloca i32, align 4
-  store i32 %value, i32* %value.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %value.addr, metadata !61, metadata !DIExpression()), !dbg !62
-  call void @llvm.dbg.declare(metadata i32* %r, metadata !63, metadata !DIExpression()), !dbg !64
-  %0 = load i32, i32* @"?comdat_int@?$A at I@@2IA", align 4, !dbg !64
-  store i32 %0, i32* %r, align 4, !dbg !64
-  %1 = load i32, i32* %value.addr, align 4, !dbg !65
-  store i32 %1, i32* @"?comdat_int@?$A at I@@2IA", align 4, !dbg !65
-  %2 = load i32, i32* %r, align 4, !dbg !66
+  store i32 %value, ptr %value.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %value.addr, metadata !61, metadata !DIExpression()), !dbg !62
+  call void @llvm.dbg.declare(metadata ptr %r, metadata !63, metadata !DIExpression()), !dbg !64
+  %0 = load i32, ptr @"?comdat_int@?$A at I@@2IA", align 4, !dbg !64
+  store i32 %0, ptr %r, align 4, !dbg !64
+  %1 = load i32, ptr %value.addr, align 4, !dbg !65
+  store i32 %1, ptr @"?comdat_int@?$A at I@@2IA", align 4, !dbg !65
+  %2 = load i32, ptr %r, align 4, !dbg !66
   ret i32 %2, !dbg !66
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/globals.ll b/llvm/test/DebugInfo/COFF/globals.ll
index 65771d04e15e9..2724b99dc14be 100644
--- a/llvm/test/DebugInfo/COFF/globals.ll
+++ b/llvm/test/DebugInfo/COFF/globals.ll
@@ -326,7 +326,7 @@ $"?DataStatic at Data@foo@@2HA" = comdat any
 
 @"?first@@3HA" = dso_local global i32 0, align 4, !dbg !0
 @"?comdat@?$A at X@@2HB" = linkonce_odr dso_local constant i32 3, comdat, align 4, !dbg !17
-@"?middle@@3PEBHEB" = dso_local thread_local global i32* @"?comdat@?$A at X@@2HB", align 8, !dbg !24
+@"?middle@@3PEBHEB" = dso_local thread_local global ptr @"?comdat@?$A at X@@2HB", align 8, !dbg !24
 @"?globalTLS at foo@@3HA" = dso_local thread_local global i32 4, align 4, !dbg !27
 @"?justGlobal at foo@@3HA" = dso_local global i32 6, align 4, !dbg !29
 @"?last@@3HA" = dso_local global i32 0, align 4, !dbg !31
@@ -340,37 +340,35 @@ define dso_local i32 @"?bar@@YAHXZ"() #0 !dbg !54 {
 entry:
   %D = alloca %"struct.foo::Data", align 4
   %L = alloca %struct.Local, align 4
-  call void @llvm.dbg.declare(metadata %"struct.foo::Data"* %D, metadata !57, metadata !DIExpression()), !dbg !58
-  %call = call %"struct.foo::Data"* @"??0Data at foo@@QEAA at XZ"(%"struct.foo::Data"* %D) #2, !dbg !58
-  call void @llvm.dbg.declare(metadata %struct.Local* %L, metadata !59, metadata !DIExpression()), !dbg !64
-  %call1 = call %struct.Local* @"??0Local@?1??bar@@YAHXZ at QEAA@XZ"(%struct.Local* %L) #2, !dbg !64
-  %0 = load i32, i32* @"?globalStatic at foo@@3HA", align 4, !dbg !65
-  %1 = load i32, i32* @"?globalTLS at foo@@3HA", align 4, !dbg !65
+  call void @llvm.dbg.declare(metadata ptr %D, metadata !57, metadata !DIExpression()), !dbg !58
+  %call = call ptr @"??0Data at foo@@QEAA at XZ"(ptr %D) #2, !dbg !58
+  call void @llvm.dbg.declare(metadata ptr %L, metadata !59, metadata !DIExpression()), !dbg !64
+  %call1 = call ptr @"??0Local@?1??bar@@YAHXZ at QEAA@XZ"(ptr %L) #2, !dbg !64
+  %0 = load i32, ptr @"?globalStatic at foo@@3HA", align 4, !dbg !65
+  %1 = load i32, ptr @"?globalTLS at foo@@3HA", align 4, !dbg !65
   %add = add nsw i32 %0, %1, !dbg !65
-  %2 = load i32, i32* @"?staticTLS at foo@@3HA", align 4, !dbg !65
+  %2 = load i32, ptr @"?staticTLS at foo@@3HA", align 4, !dbg !65
   %add2 = add nsw i32 %add, %2, !dbg !65
-  %3 = load i32, i32* @"?justGlobal at foo@@3HA", align 4, !dbg !65
+  %3 = load i32, ptr @"?justGlobal at foo@@3HA", align 4, !dbg !65
   %add3 = add nsw i32 %add2, %3, !dbg !65
-  %4 = load i32, i32* @"?globalStatic at foo@@3HA", align 4, !dbg !65
+  %4 = load i32, ptr @"?globalStatic at foo@@3HA", align 4, !dbg !65
   %add4 = add nsw i32 %add3, %4, !dbg !65
   %add5 = add nsw i32 %add4, 8, !dbg !65
   %add6 = add nsw i32 %add5, 9, !dbg !65
-  %5 = load i32, i32* @"?DataStaticTLS at Data@foo@@2HA", align 4, !dbg !65
+  %5 = load i32, ptr @"?DataStaticTLS at Data@foo@@2HA", align 4, !dbg !65
   %add7 = add nsw i32 %add6, %5, !dbg !65
-  %DataGlobal = getelementptr inbounds %"struct.foo::Data", %"struct.foo::Data"* %D, i32 0, i32 0, !dbg !65
-  %6 = load i32, i32* %DataGlobal, align 4, !dbg !65
+  %6 = load i32, ptr %D, align 4, !dbg !65
   %add8 = add nsw i32 %add7, %6, !dbg !65
-  %7 = load i32, i32* @"?DataStatic at Data@foo@@2HA", align 4, !dbg !65
+  %7 = load i32, ptr @"?DataStatic at Data@foo@@2HA", align 4, !dbg !65
   %add9 = add nsw i32 %add8, %7, !dbg !65
   %add10 = add nsw i32 %add9, 14, !dbg !65
-  %DataConstVal = getelementptr inbounds %"struct.foo::Data", %"struct.foo::Data"* %D, i32 0, i32 1, !dbg !65
-  %8 = load i32, i32* %DataConstVal, align 4, !dbg !65
+  %DataConstVal = getelementptr inbounds %"struct.foo::Data", ptr %D, i32 0, i32 1, !dbg !65
+  %8 = load i32, ptr %DataConstVal, align 4, !dbg !65
   %add11 = add nsw i32 %add10, %8, !dbg !65
-  %LocalGlobal = getelementptr inbounds %struct.Local, %struct.Local* %L, i32 0, i32 0, !dbg !65
-  %9 = load i32, i32* %LocalGlobal, align 4, !dbg !65
+  %9 = load i32, ptr %L, align 4, !dbg !65
   %add12 = add nsw i32 %add11, %9, !dbg !65
-  %LocalConstVal = getelementptr inbounds %struct.Local, %struct.Local* %L, i32 0, i32 1, !dbg !65
-  %10 = load i32, i32* %LocalConstVal, align 4, !dbg !65
+  %LocalConstVal = getelementptr inbounds %struct.Local, ptr %L, i32 0, i32 1, !dbg !65
+  %10 = load i32, ptr %LocalConstVal, align 4, !dbg !65
   %add13 = add nsw i32 %add12, %10, !dbg !65
   ret i32 %add13, !dbg !65
 }
@@ -379,31 +377,29 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define linkonce_odr dso_local %"struct.foo::Data"* @"??0Data at foo@@QEAA at XZ"(%"struct.foo::Data"* returned %this) unnamed_addr #0 comdat align 2 !dbg !66 {
+define linkonce_odr dso_local ptr @"??0Data at foo@@QEAA at XZ"(ptr returned %this) unnamed_addr #0 comdat align 2 !dbg !66 {
 entry:
-  %this.addr = alloca %"struct.foo::Data"*, align 8
-  store %"struct.foo::Data"* %this, %"struct.foo::Data"** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %"struct.foo::Data"** %this.addr, metadata !71, metadata !DIExpression()), !dbg !73
-  %this1 = load %"struct.foo::Data"*, %"struct.foo::Data"** %this.addr, align 8
-  %DataGlobal = getelementptr inbounds %"struct.foo::Data", %"struct.foo::Data"* %this1, i32 0, i32 0, !dbg !74
-  store i32 12, i32* %DataGlobal, align 4, !dbg !74
-  %DataConstVal = getelementptr inbounds %"struct.foo::Data", %"struct.foo::Data"* %this1, i32 0, i32 1, !dbg !74
-  store i32 15, i32* %DataConstVal, align 4, !dbg !74
-  ret %"struct.foo::Data"* %this1, !dbg !74
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !71, metadata !DIExpression()), !dbg !73
+  %this1 = load ptr, ptr %this.addr, align 8
+  store i32 12, ptr %this1, align 4, !dbg !74
+  %DataConstVal = getelementptr inbounds %"struct.foo::Data", ptr %this1, i32 0, i32 1, !dbg !74
+  store i32 15, ptr %DataConstVal, align 4, !dbg !74
+  ret ptr %this1, !dbg !74
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define internal %struct.Local* @"??0Local@?1??bar@@YAHXZ at QEAA@XZ"(%struct.Local* returned %this) unnamed_addr #0 align 2 !dbg !75 {
+define internal ptr @"??0Local@?1??bar@@YAHXZ at QEAA@XZ"(ptr returned %this) unnamed_addr #0 align 2 !dbg !75 {
 entry:
-  %this.addr = alloca %struct.Local*, align 8
-  store %struct.Local* %this, %struct.Local** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.Local** %this.addr, metadata !80, metadata !DIExpression()), !dbg !82
-  %this1 = load %struct.Local*, %struct.Local** %this.addr, align 8
-  %LocalGlobal = getelementptr inbounds %struct.Local, %struct.Local* %this1, i32 0, i32 0, !dbg !83
-  store i32 12, i32* %LocalGlobal, align 4, !dbg !83
-  %LocalConstVal = getelementptr inbounds %struct.Local, %struct.Local* %this1, i32 0, i32 1, !dbg !83
-  store i32 15, i32* %LocalConstVal, align 4, !dbg !83
-  ret %struct.Local* %this1, !dbg !83
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !80, metadata !DIExpression()), !dbg !82
+  %this1 = load ptr, ptr %this.addr, align 8
+  store i32 12, ptr %this1, align 4, !dbg !83
+  %LocalConstVal = getelementptr inbounds %struct.Local, ptr %this1, i32 0, i32 1, !dbg !83
+  store i32 15, ptr %LocalConstVal, align 4, !dbg !83
+  ret ptr %this1, !dbg !83
 }
 
 attributes #0 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }

diff  --git a/llvm/test/DebugInfo/COFF/inheritance.ll b/llvm/test/DebugInfo/COFF/inheritance.ll
index ca1a5c21860b7..e31d6ef8678d5 100644
--- a/llvm/test/DebugInfo/COFF/inheritance.ll
+++ b/llvm/test/DebugInfo/COFF/inheritance.ll
@@ -75,11 +75,11 @@ target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-windows-msvc19.12.25835"
 
 %struct.D = type { %struct.B.base, %struct.C.base, i32, [4 x i8], %struct.A }
-%struct.B.base = type { i32 (...)**, i32*, i32 }
-%struct.C.base = type { i32 (...)**, i32*, i32 }
+%struct.B.base = type { ptr, ptr, i32 }
+%struct.C.base = type { ptr, ptr, i32 }
 %struct.A = type { i32 }
-%struct.B = type { i32 (...)**, i32*, i32, [4 x i8], %struct.A }
-%struct.C = type { i32 (...)**, i32*, i32, [4 x i8], %struct.A }
+%struct.B = type { ptr, ptr, i32, [4 x i8], %struct.A }
+%struct.C = type { ptr, ptr, i32, [4 x i8], %struct.A }
 
 $"?get at B@@UEAAHXZ" = comdat any
 
@@ -93,30 +93,30 @@ $"??_7D@@6BB@@@" = comdat any
 
 $"??_7D@@6BC@@@" = comdat any
 
-@"?d@@3UD@@A" = dso_local local_unnamed_addr global %struct.D { %struct.B.base { i32 (...)** bitcast ({ [2 x i8*] }* @"??_7D@@6BB@@@" to i32 (...)**), i32* getelementptr inbounds ([2 x i32], [2 x i32]* @"??_8D@@7BB@@@", i32 0, i32 0), i32 0 }, %struct.C.base { i32 (...)** bitcast ({ [1 x i8*] }* @"??_7D@@6BC@@@" to i32 (...)**), i32* getelementptr inbounds ([2 x i32], [2 x i32]* @"??_8D@@7BC@@@", i32 0, i32 0), i32 0 }, i32 0, [4 x i8] zeroinitializer, %struct.A zeroinitializer }, align 8, !dbg !0
+@"?d@@3UD@@A" = dso_local local_unnamed_addr global %struct.D { %struct.B.base { ptr @"??_7D@@6BB@@@", ptr @"??_8D@@7BB@@@", i32 0 }, %struct.C.base { ptr @"??_7D@@6BC@@@", ptr @"??_8D@@7BC@@@", i32 0 }, i32 0, [4 x i8] zeroinitializer, %struct.A zeroinitializer }, align 8, !dbg !0
 @"??_8D@@7BB@@@" = linkonce_odr unnamed_addr constant [2 x i32] [i32 -8, i32 48], comdat
 @"??_8D@@7BC@@@" = linkonce_odr unnamed_addr constant [2 x i32] [i32 -8, i32 24], comdat
-@"??_7D@@6BB@@@" = linkonce_odr unnamed_addr constant { [2 x i8*] } { [2 x i8*] [i8* bitcast (i32 (%struct.B*)* @"?get at B@@UEAAHXZ" to i8*), i8* bitcast (void (%struct.D*)* @"?f at D@@UEAAXXZ" to i8*)] }, comdat
-@"??_7D@@6BC@@@" = linkonce_odr unnamed_addr constant { [1 x i8*] } { [1 x i8*] [i8* bitcast (i32 (%struct.C*)* @"?get at C@@UEAAHXZ" to i8*)] }, comdat
- at llvm.global_ctors = appending global [0 x { i32, void ()*, i8* }] zeroinitializer
+@"??_7D@@6BB@@@" = linkonce_odr unnamed_addr constant { [2 x ptr] } { [2 x ptr] [ptr @"?get at B@@UEAAHXZ", ptr @"?f at D@@UEAAXXZ"] }, comdat
+@"??_7D@@6BC@@@" = linkonce_odr unnamed_addr constant { [1 x ptr] } { [1 x ptr] [ptr @"?get at C@@UEAAHXZ"] }, comdat
+ at llvm.global_ctors = appending global [0 x { i32, ptr, ptr }] zeroinitializer
 
 ; Function Attrs: nounwind uwtable
-define linkonce_odr dso_local i32 @"?get at B@@UEAAHXZ"(%struct.B* %this) unnamed_addr #0 comdat align 2 !dbg !46 {
+define linkonce_odr dso_local i32 @"?get at B@@UEAAHXZ"(ptr %this) unnamed_addr #0 comdat align 2 !dbg !46 {
 entry:
-  call void @llvm.dbg.value(metadata %struct.B* %this, metadata !48, metadata !DIExpression()), !dbg !50
-  %b = getelementptr inbounds %struct.B, %struct.B* %this, i64 0, i32 2, !dbg !51
-  %0 = load i32, i32* %b, align 8, !dbg !51, !tbaa !52
+  call void @llvm.dbg.value(metadata ptr %this, metadata !48, metadata !DIExpression()), !dbg !50
+  %b = getelementptr inbounds %struct.B, ptr %this, i64 0, i32 2, !dbg !51
+  %0 = load i32, ptr %b, align 8, !dbg !51, !tbaa !52
   ret i32 %0, !dbg !51
 }
 
-declare dso_local void @"?f at D@@UEAAXXZ"(%struct.D*) unnamed_addr #1
+declare dso_local void @"?f at D@@UEAAXXZ"(ptr) unnamed_addr #1
 
 ; Function Attrs: nounwind uwtable
-define linkonce_odr dso_local i32 @"?get at C@@UEAAHXZ"(%struct.C* %this) unnamed_addr #0 comdat align 2 !dbg !57 {
+define linkonce_odr dso_local i32 @"?get at C@@UEAAHXZ"(ptr %this) unnamed_addr #0 comdat align 2 !dbg !57 {
 entry:
-  call void @llvm.dbg.value(metadata %struct.C* %this, metadata !59, metadata !DIExpression()), !dbg !61
-  %c = getelementptr inbounds %struct.C, %struct.C* %this, i64 0, i32 2, !dbg !62
-  %0 = load i32, i32* %c, align 8, !dbg !62, !tbaa !63
+  call void @llvm.dbg.value(metadata ptr %this, metadata !59, metadata !DIExpression()), !dbg !61
+  %c = getelementptr inbounds %struct.C, ptr %this, i64 0, i32 2, !dbg !62
+  %0 = load i32, ptr %c, align 8, !dbg !62, !tbaa !63
   ret i32 %0, !dbg !62
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/inlining-files.ll b/llvm/test/DebugInfo/COFF/inlining-files.ll
index 6b50be90ea2fb..9678219eca380 100644
--- a/llvm/test/DebugInfo/COFF/inlining-files.ll
+++ b/llvm/test/DebugInfo/COFF/inlining-files.ll
@@ -50,24 +50,24 @@ target triple = "x86_64-pc-windows-msvc18.0.0"
 ; Function Attrs: norecurse nounwind uwtable
 define void @f() #0 !dbg !12 {
 entry:
-  %0 = load volatile i32, i32* @x, align 4, !dbg !15, !tbaa !16
+  %0 = load volatile i32, ptr @x, align 4, !dbg !15, !tbaa !16
   %inc = add nsw i32 %0, 1, !dbg !15
-  store volatile i32 %inc, i32* @x, align 4, !dbg !15, !tbaa !16
-  %1 = load volatile i32, i32* @x, align 4, !dbg !20, !tbaa !16
+  store volatile i32 %inc, ptr @x, align 4, !dbg !15, !tbaa !16
+  %1 = load volatile i32, ptr @x, align 4, !dbg !20, !tbaa !16
   %inc.i = add nsw i32 %1, 1, !dbg !20
-  store volatile i32 %inc.i, i32* @x, align 4, !dbg !20, !tbaa !16
-  %2 = load volatile i32, i32* @x, align 4, !dbg !23, !tbaa !16
+  store volatile i32 %inc.i, ptr @x, align 4, !dbg !20, !tbaa !16
+  %2 = load volatile i32, ptr @x, align 4, !dbg !23, !tbaa !16
   %inc1.i = add nsw i32 %2, 1, !dbg !23
-  store volatile i32 %inc1.i, i32* @x, align 4, !dbg !23, !tbaa !16
-  %3 = load volatile i32, i32* @x, align 4, !dbg !26, !tbaa !16
+  store volatile i32 %inc1.i, ptr @x, align 4, !dbg !23, !tbaa !16
+  %3 = load volatile i32, ptr @x, align 4, !dbg !26, !tbaa !16
   %inc2.i = add nsw i32 %3, 1, !dbg !26
-  store volatile i32 %inc2.i, i32* @x, align 4, !dbg !26, !tbaa !16
-  %4 = load volatile i32, i32* @x, align 4, !dbg !27, !tbaa !16
+  store volatile i32 %inc2.i, ptr @x, align 4, !dbg !26, !tbaa !16
+  %4 = load volatile i32, ptr @x, align 4, !dbg !27, !tbaa !16
   %inc3.i = add nsw i32 %4, 1, !dbg !27
-  store volatile i32 %inc3.i, i32* @x, align 4, !dbg !27, !tbaa !16
-  %5 = load volatile i32, i32* @x, align 4, !dbg !29, !tbaa !16
+  store volatile i32 %inc3.i, ptr @x, align 4, !dbg !27, !tbaa !16
+  %5 = load volatile i32, ptr @x, align 4, !dbg !29, !tbaa !16
   %inc1 = add nsw i32 %5, 1, !dbg !29
-  store volatile i32 %inc1, i32* @x, align 4, !dbg !29, !tbaa !16
+  store volatile i32 %inc1, ptr @x, align 4, !dbg !29, !tbaa !16
   ret void, !dbg !30
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/inlining-header.ll b/llvm/test/DebugInfo/COFF/inlining-header.ll
index 3eca5a032f5c4..bead300d6988d 100644
--- a/llvm/test/DebugInfo/COFF/inlining-header.ll
+++ b/llvm/test/DebugInfo/COFF/inlining-header.ll
@@ -110,22 +110,22 @@ target triple = "x86_64-pc-windows-msvc19.0.24210"
 ; Function Attrs: norecurse nounwind uwtable
 define i32 @main() local_unnamed_addr #0 !dbg !12 {
 entry:
-  %0 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !15, !tbaa !16
+  %0 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !15, !tbaa !16
   %add = add nsw i32 %0, 1, !dbg !15
-  store volatile i32 %add, i32* @"\01?x@@3HC", align 4, !dbg !15, !tbaa !16
-  %1 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !20, !tbaa !16
+  store volatile i32 %add, ptr @"\01?x@@3HC", align 4, !dbg !15, !tbaa !16
+  %1 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !20, !tbaa !16
   %add.i = add nsw i32 %1, 2, !dbg !20
-  store volatile i32 %add.i, i32* @"\01?x@@3HC", align 4, !dbg !20, !tbaa !16
-  %2 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !25, !tbaa !16
+  store volatile i32 %add.i, ptr @"\01?x@@3HC", align 4, !dbg !20, !tbaa !16
+  %2 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !25, !tbaa !16
   %add.i.i = add nsw i32 %2, 3, !dbg !25
-  store volatile i32 %add.i.i, i32* @"\01?x@@3HC", align 4, !dbg !25, !tbaa !16
-  %3 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !29, !tbaa !16
+  store volatile i32 %add.i.i, ptr @"\01?x@@3HC", align 4, !dbg !25, !tbaa !16
+  %3 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !29, !tbaa !16
   %add1.i = add nsw i32 %3, 2, !dbg !29
-  store volatile i32 %add1.i, i32* @"\01?x@@3HC", align 4, !dbg !29, !tbaa !16
-  %4 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !30, !tbaa !16
+  store volatile i32 %add1.i, ptr @"\01?x@@3HC", align 4, !dbg !29, !tbaa !16
+  %4 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !30, !tbaa !16
   %add1 = add nsw i32 %4, 1, !dbg !30
-  store volatile i32 %add1, i32* @"\01?x@@3HC", align 4, !dbg !30, !tbaa !16
-  %5 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !31, !tbaa !16
+  store volatile i32 %add1, ptr @"\01?x@@3HC", align 4, !dbg !30, !tbaa !16
+  %5 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !31, !tbaa !16
   ret i32 %5, !dbg !32
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/inlining-levels.ll b/llvm/test/DebugInfo/COFF/inlining-levels.ll
index 72190d4b2e4b4..70195e5371f5f 100644
--- a/llvm/test/DebugInfo/COFF/inlining-levels.ll
+++ b/llvm/test/DebugInfo/COFF/inlining-levels.ll
@@ -47,9 +47,9 @@ target triple = "x86_64-pc-windows-msvc18.0.0"
 ; Function Attrs: norecurse nounwind uwtable
 define i32 @main() #0 !dbg !12 {
 entry:
-  %0 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !15, !tbaa !24
+  %0 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !15, !tbaa !24
   %inc.i.i.i = add nsw i32 %0, 1, !dbg !15
-  store volatile i32 %inc.i.i.i, i32* @"\01?x@@3HC", align 4, !dbg !15, !tbaa !24
+  store volatile i32 %inc.i.i.i, ptr @"\01?x@@3HC", align 4, !dbg !15, !tbaa !24
   ret i32 0, !dbg !28
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/inlining-padding.ll b/llvm/test/DebugInfo/COFF/inlining-padding.ll
index b29e97f235a21..afe899db310cc 100644
--- a/llvm/test/DebugInfo/COFF/inlining-padding.ll
+++ b/llvm/test/DebugInfo/COFF/inlining-padding.ll
@@ -57,10 +57,10 @@ target triple = "x86_64-pc-windows-msvc"
 ; Function Attrs: norecurse nounwind
 define i32 @main() #0 !dbg !6 {
 entry:
-  store volatile i32 0, i32* @x, align 4, !dbg !11, !tbaa !16
-  store volatile i32 0, i32* @x, align 4, !dbg !20, !tbaa !16
-  store volatile i32 0, i32* @x, align 4, !dbg !23, !tbaa !16
-  store volatile i32 0, i32* @x, align 4, !dbg !26, !tbaa !16
+  store volatile i32 0, ptr @x, align 4, !dbg !11, !tbaa !16
+  store volatile i32 0, ptr @x, align 4, !dbg !20, !tbaa !16
+  store volatile i32 0, ptr @x, align 4, !dbg !23, !tbaa !16
+  store volatile i32 0, ptr @x, align 4, !dbg !26, !tbaa !16
   ret i32 0, !dbg !29
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/inlining-same-name.ll b/llvm/test/DebugInfo/COFF/inlining-same-name.ll
index 5267b47877574..da3cabcb2bf8d 100644
--- a/llvm/test/DebugInfo/COFF/inlining-same-name.ll
+++ b/llvm/test/DebugInfo/COFF/inlining-same-name.ll
@@ -34,9 +34,9 @@
 target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-windows-msvc"
 
-define void @main(i32* %i.i) !dbg !16 {
-  store volatile i32 3, i32* %i.i, !dbg !6
-  store volatile i32 3, i32* %i.i, !dbg !19
+define void @main(ptr %i.i) !dbg !16 {
+  store volatile i32 3, ptr %i.i, !dbg !6
+  store volatile i32 3, ptr %i.i, !dbg !19
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/inlining.ll b/llvm/test/DebugInfo/COFF/inlining.ll
index a3c0da76166fa..de0d78936a0dc 100644
--- a/llvm/test/DebugInfo/COFF/inlining.ll
+++ b/llvm/test/DebugInfo/COFF/inlining.ll
@@ -206,41 +206,40 @@ target triple = "x86_64-pc-windows-msvc18.0.0"
 define void @"\01?baz@@YAXXZ"() #0 !dbg !4 {
 entry:
   %y.i.i = alloca i32, align 4
-  %0 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !12, !tbaa !13
+  %0 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !12, !tbaa !13
   %add = add nsw i32 %0, 6, !dbg !12
-  store volatile i32 %add, i32* @"\01?x@@3HC", align 4, !dbg !12, !tbaa !13
-  %1 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !17, !tbaa !13
+  store volatile i32 %add, ptr @"\01?x@@3HC", align 4, !dbg !12, !tbaa !13
+  %1 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !17, !tbaa !13
   %add.i = add nsw i32 %1, 4, !dbg !17
-  store volatile i32 %add.i, i32* @"\01?x@@3HC", align 4, !dbg !17, !tbaa !13
-  %2 = bitcast i32* %y.i.i to i8*, !dbg !19
-  call void @llvm.lifetime.start(i64 4, i8* %2) #2, !dbg !19
-  store i32 1, i32* %y.i.i, align 4, !dbg !21, !tbaa !13
-  %3 = ptrtoint i32* %y.i.i to i64, !dbg !22
-  %4 = trunc i64 %3 to i32, !dbg !22
-  %5 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !23, !tbaa !13
-  %add.i.i = add nsw i32 %5, %4, !dbg !23
-  store volatile i32 %add.i.i, i32* @"\01?x@@3HC", align 4, !dbg !23, !tbaa !13
-  %6 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !24, !tbaa !13
-  %add1.i.i = add nsw i32 %6, 2, !dbg !24
-  store volatile i32 %add1.i.i, i32* @"\01?x@@3HC", align 4, !dbg !24, !tbaa !13
-  %7 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !25, !tbaa !13
-  %add2.i.i = add nsw i32 %7, 3, !dbg !25
-  store volatile i32 %add2.i.i, i32* @"\01?x@@3HC", align 4, !dbg !25, !tbaa !13
-  call void @llvm.lifetime.end(i64 4, i8* %2) #2, !dbg !26
-  %8 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !27, !tbaa !13
-  %add1.i = add nsw i32 %8, 5, !dbg !27
-  store volatile i32 %add1.i, i32* @"\01?x@@3HC", align 4, !dbg !27, !tbaa !13
-  %9 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !28, !tbaa !13
-  %add1 = add nsw i32 %9, 7, !dbg !28
-  store volatile i32 %add1, i32* @"\01?x@@3HC", align 4, !dbg !28, !tbaa !13
+  store volatile i32 %add.i, ptr @"\01?x@@3HC", align 4, !dbg !17, !tbaa !13
+  call void @llvm.lifetime.start(i64 4, ptr %y.i.i) #2, !dbg !19
+  store i32 1, ptr %y.i.i, align 4, !dbg !21, !tbaa !13
+  %2 = ptrtoint ptr %y.i.i to i64, !dbg !22
+  %3 = trunc i64 %2 to i32, !dbg !22
+  %4 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !23, !tbaa !13
+  %add.i.i = add nsw i32 %4, %3, !dbg !23
+  store volatile i32 %add.i.i, ptr @"\01?x@@3HC", align 4, !dbg !23, !tbaa !13
+  %5 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !24, !tbaa !13
+  %add1.i.i = add nsw i32 %5, 2, !dbg !24
+  store volatile i32 %add1.i.i, ptr @"\01?x@@3HC", align 4, !dbg !24, !tbaa !13
+  %6 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !25, !tbaa !13
+  %add2.i.i = add nsw i32 %6, 3, !dbg !25
+  store volatile i32 %add2.i.i, ptr @"\01?x@@3HC", align 4, !dbg !25, !tbaa !13
+  call void @llvm.lifetime.end(i64 4, ptr %y.i.i) #2, !dbg !26
+  %7 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !27, !tbaa !13
+  %add1.i = add nsw i32 %7, 5, !dbg !27
+  store volatile i32 %add1.i, ptr @"\01?x@@3HC", align 4, !dbg !27, !tbaa !13
+  %8 = load volatile i32, ptr @"\01?x@@3HC", align 4, !dbg !28, !tbaa !13
+  %add1 = add nsw i32 %8, 7, !dbg !28
+  store volatile i32 %add1, ptr @"\01?x@@3HC", align 4, !dbg !28, !tbaa !13
   ret void, !dbg !29
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start(i64, ptr nocapture) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end(i64, ptr nocapture) #1
 
 attributes #0 = { norecurse nounwind uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { argmemonly nounwind }

diff  --git a/llvm/test/DebugInfo/COFF/integer-128.ll b/llvm/test/DebugInfo/COFF/integer-128.ll
index 56b56198de00d..57ebdcc144af6 100644
--- a/llvm/test/DebugInfo/COFF/integer-128.ll
+++ b/llvm/test/DebugInfo/COFF/integer-128.ll
@@ -60,28 +60,25 @@ target triple = "x86_64-unknown-windows-gnu"
 define dso_local <2 x i64> @_Z2t1v() #0 !dbg !23 {
 entry:
   %retval = alloca i128, align 16
-  store i128 18446744073709551616, i128* %retval, align 16, !dbg !27
-  %0 = bitcast i128* %retval to <2 x i64>*, !dbg !27
-  %1 = load <2 x i64>, <2 x i64>* %0, align 16, !dbg !27
-  ret <2 x i64> %1, !dbg !27
+  store i128 18446744073709551616, ptr %retval, align 16, !dbg !27
+  %0 = load <2 x i64>, ptr %retval, align 16, !dbg !27
+  ret <2 x i64> %0, !dbg !27
 }
 
 ; Function Attrs: mustprogress noinline nounwind optnone
 define dso_local <2 x i64> @_Z2t2v() #0 !dbg !28 {
 entry:
   %retval = alloca i128, align 16
-  store i128 -18446744073709551616, i128* %retval, align 16, !dbg !31
-  %0 = bitcast i128* %retval to <2 x i64>*, !dbg !31
-  %1 = load <2 x i64>, <2 x i64>* %0, align 16, !dbg !31
-  ret <2 x i64> %1, !dbg !31
+  store i128 -18446744073709551616, ptr %retval, align 16, !dbg !31
+  %0 = load <2 x i64>, ptr %retval, align 16, !dbg !31
+  ret <2 x i64> %0, !dbg !31
 }
 
 ; Function Attrs: mustprogress noinline nounwind optnone
 define dso_local i8 @_Z2t3v() #1 !dbg !32 {
 entry:
   %retval = alloca %struct.test, align 1
-  %coerce.dive = getelementptr inbounds %struct.test, %struct.test* %retval, i32 0, i32 0, !dbg !41
-  %0 = load i8, i8* %coerce.dive, align 1, !dbg !41
+  %0 = load i8, ptr %retval, align 1, !dbg !41
   ret i8 %0, !dbg !41
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/lambda.ll b/llvm/test/DebugInfo/COFF/lambda.ll
index 611c651d9708a..7b575a7b07aad 100644
--- a/llvm/test/DebugInfo/COFF/lambda.ll
+++ b/llvm/test/DebugInfo/COFF/lambda.ll
@@ -60,25 +60,24 @@ target triple = "i686-pc-windows-msvc19.0.24210"
 %class.anon = type { i32 }
 
 ; Function Attrs: noinline norecurse optnone
-define dso_local i32 @main(i32 %argc, i8** %argv, i8** %arge) #0 !dbg !8 {
+define dso_local i32 @main(i32 %argc, ptr %argv, ptr %arge) #0 !dbg !8 {
 entry:
   %retval = alloca i32, align 4
-  %arge.addr = alloca i8**, align 4
-  %argv.addr = alloca i8**, align 4
+  %arge.addr = alloca ptr, align 4
+  %argv.addr = alloca ptr, align 4
   %argc.addr = alloca i32, align 4
   %Lambda = alloca %class.anon, align 4
-  store i32 0, i32* %retval, align 4
-  store i8** %arge, i8*** %arge.addr, align 4
-  call void @llvm.dbg.declare(metadata i8*** %arge.addr, metadata !15, metadata !DIExpression()), !dbg !16
-  store i8** %argv, i8*** %argv.addr, align 4
-  call void @llvm.dbg.declare(metadata i8*** %argv.addr, metadata !17, metadata !DIExpression()), !dbg !16
-  store i32 %argc, i32* %argc.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %argc.addr, metadata !18, metadata !DIExpression()), !dbg !16
-  call void @llvm.dbg.declare(metadata %class.anon* %Lambda, metadata !19, metadata !DIExpression()), !dbg !28
-  %0 = getelementptr inbounds %class.anon, %class.anon* %Lambda, i32 0, i32 0, !dbg !28
-  %1 = load i32, i32* %argc.addr, align 4, !dbg !28
-  store i32 %1, i32* %0, align 4, !dbg !28
-  %call = call x86_thiscallcc i32 @"??R<lambda_0>@?0??main@@9 at QBE@H at Z"(%class.anon* %Lambda, i32 0), !dbg !29
+  store i32 0, ptr %retval, align 4
+  store ptr %arge, ptr %arge.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %arge.addr, metadata !15, metadata !DIExpression()), !dbg !16
+  store ptr %argv, ptr %argv.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !17, metadata !DIExpression()), !dbg !16
+  store i32 %argc, ptr %argc.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !18, metadata !DIExpression()), !dbg !16
+  call void @llvm.dbg.declare(metadata ptr %Lambda, metadata !19, metadata !DIExpression()), !dbg !28
+  %0 = load i32, ptr %argc.addr, align 4, !dbg !28
+  store i32 %0, ptr %Lambda, align 4, !dbg !28
+  %call = call x86_thiscallcc i32 @"??R<lambda_0>@?0??main@@9 at QBE@H at Z"(ptr %Lambda, i32 0), !dbg !29
   ret i32 %call, !dbg !29
 }
 
@@ -86,20 +85,19 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: noinline nounwind optnone
-define internal x86_thiscallcc i32 @"??R<lambda_0>@?0??main@@9 at QBE@H at Z"(%class.anon* %this, i32 %count) #2 align 2 !dbg !30 {
+define internal x86_thiscallcc i32 @"??R<lambda_0>@?0??main@@9 at QBE@H at Z"(ptr %this, i32 %count) #2 align 2 !dbg !30 {
 entry:
   %count.addr = alloca i32, align 4
-  %this.addr = alloca %class.anon*, align 4
-  store i32 %count, i32* %count.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %count.addr, metadata !31, metadata !DIExpression()), !dbg !32
-  store %class.anon* %this, %class.anon** %this.addr, align 4
-  call void @llvm.dbg.declare(metadata %class.anon** %this.addr, metadata !33, metadata !DIExpression()), !dbg !35
-  %this1 = load %class.anon*, %class.anon** %this.addr, align 4
-  %0 = getelementptr inbounds %class.anon, %class.anon* %this1, i32 0, i32 0, !dbg !32
-  %1 = load i32, i32* %0, align 4, !dbg !32
-  %2 = load i32, i32* %count.addr, align 4, !dbg !32
-  %cmp = icmp eq i32 %1, %2, !dbg !32
-  %3 = zext i1 %cmp to i64, !dbg !32
+  %this.addr = alloca ptr, align 4
+  store i32 %count, ptr %count.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %count.addr, metadata !31, metadata !DIExpression()), !dbg !32
+  store ptr %this, ptr %this.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !33, metadata !DIExpression()), !dbg !35
+  %this1 = load ptr, ptr %this.addr, align 4
+  %0 = load i32, ptr %this1, align 4, !dbg !32
+  %1 = load i32, ptr %count.addr, align 4, !dbg !32
+  %cmp = icmp eq i32 %0, %1, !dbg !32
+  %2 = zext i1 %cmp to i64, !dbg !32
   %cond = select i1 %cmp, i32 1, i32 0, !dbg !32
   ret i32 %cond, !dbg !32
 }

diff  --git a/llvm/test/DebugInfo/COFF/lexicalblock.ll b/llvm/test/DebugInfo/COFF/lexicalblock.ll
index 4f6aa6569a2f6..40dd8f894252c 100644
--- a/llvm/test/DebugInfo/COFF/lexicalblock.ll
+++ b/llvm/test/DebugInfo/COFF/lexicalblock.ll
@@ -102,10 +102,10 @@ target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
 target triple = "i686-pc-windows-msvc"
 
 ; Function Attrs: norecurse nounwind
-define i32 @main(i32 %argc, i8** %argv) #0 !dbg !8 {
+define i32 @main(i32 %argc, ptr %argv) #0 !dbg !8 {
 entry:
   %retval = alloca i32, align 4
-  %argv.addr = alloca i8**, align 4
+  %argv.addr = alloca ptr, align 4
   %argc.addr = alloca i32, align 4
   %localA = alloca i32, align 4
   %localB = alloca i32, align 4
@@ -115,91 +115,75 @@ entry:
   %localF = alloca i32, align 4
   %localG = alloca i32, align 4
   %localH = alloca i32, align 4
-  store i32 0, i32* %retval, align 4
-  store i8** %argv, i8*** %argv.addr, align 4, !tbaa !37
-  call void @llvm.dbg.declare(metadata i8*** %argv.addr, metadata !17, metadata !DIExpression()), !dbg !41
-  store i32 %argc, i32* %argc.addr, align 4, !tbaa !42
-  call void @llvm.dbg.declare(metadata i32* %argc.addr, metadata !18, metadata !DIExpression()), !dbg !41
-  %0 = bitcast i32* %localA to i8*, !dbg !44
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #4, !dbg !44
-  call void @llvm.dbg.declare(metadata i32* %localA, metadata !19, metadata !DIExpression()), !dbg !44
-  store i32 1, i32* %localA, align 4, !dbg !44, !tbaa !42
-  %1 = bitcast i32* %localB to i8*, !dbg !45
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #4, !dbg !45
-  call void @llvm.dbg.declare(metadata i32* %localB, metadata !20, metadata !DIExpression()), !dbg !45
-  store i32 2, i32* %localB, align 4, !dbg !45, !tbaa !42
-  %2 = load i32, i32* %argc.addr, align 4, !dbg !46, !tbaa !42
-  %cmp = icmp ne i32 %2, 1, !dbg !46
+  store i32 0, ptr %retval, align 4
+  store ptr %argv, ptr %argv.addr, align 4, !tbaa !37
+  call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !17, metadata !DIExpression()), !dbg !41
+  store i32 %argc, ptr %argc.addr, align 4, !tbaa !42
+  call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !18, metadata !DIExpression()), !dbg !41
+  call void @llvm.lifetime.start.p0(i64 4, ptr %localA) #4, !dbg !44
+  call void @llvm.dbg.declare(metadata ptr %localA, metadata !19, metadata !DIExpression()), !dbg !44
+  store i32 1, ptr %localA, align 4, !dbg !44, !tbaa !42
+  call void @llvm.lifetime.start.p0(i64 4, ptr %localB) #4, !dbg !45
+  call void @llvm.dbg.declare(metadata ptr %localB, metadata !20, metadata !DIExpression()), !dbg !45
+  store i32 2, ptr %localB, align 4, !dbg !45, !tbaa !42
+  %0 = load i32, ptr %argc.addr, align 4, !dbg !46, !tbaa !42
+  %cmp = icmp ne i32 %0, 1, !dbg !46
   %conv = zext i1 %cmp to i32, !dbg !46
   %tobool = icmp ne i32 %conv, 0, !dbg !46
   br i1 %tobool, label %if.then, label %if.end, !dbg !46, !prof !47
 
 if.then:                                          ; preds = %entry
-  %3 = bitcast i32* %localC to i8*, !dbg !48
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* %3) #4, !dbg !48
-  call void @llvm.dbg.declare(metadata i32* %localC, metadata !22, metadata !DIExpression()), !dbg !48
-  store i32 3, i32* %localC, align 4, !dbg !48, !tbaa !42
-  %4 = bitcast i32* %localC to i8*, !dbg !49
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* %4) #4, !dbg !49
+  call void @llvm.lifetime.start.p0(i64 4, ptr %localC) #4, !dbg !48
+  call void @llvm.dbg.declare(metadata ptr %localC, metadata !22, metadata !DIExpression()), !dbg !48
+  store i32 3, ptr %localC, align 4, !dbg !48, !tbaa !42
+  call void @llvm.lifetime.end.p0(i64 4, ptr %localC) #4, !dbg !49
   br label %if.end, !dbg !49
 
 if.end:                                           ; preds = %if.then, %entry
-  %5 = bitcast i32* %localB to i8*, !dbg !50
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* %5) #4, !dbg !50
-  %6 = bitcast i32* %localD to i8*, !dbg !51
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* %6) #4, !dbg !51
-  call void @llvm.dbg.declare(metadata i32* %localD, metadata !25, metadata !DIExpression()), !dbg !51
-  store i32 4, i32* %localD, align 4, !dbg !51, !tbaa !42
-  %7 = load i32, i32* %localD, align 4, !dbg !52, !tbaa !42
-  store i32 %7, i32* %localA, align 4, !dbg !52, !tbaa !42
-  %8 = bitcast i32* %localD to i8*, !dbg !53
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* %8) #4, !dbg !53
-  %9 = bitcast i32* %localE to i8*, !dbg !54
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* %9) #4, !dbg !54
-  call void @llvm.dbg.declare(metadata i32* %localE, metadata !27, metadata !DIExpression()), !dbg !54
-  store i32 5, i32* %localE, align 4, !dbg !54, !tbaa !42
-  %10 = load i32, i32* %localE, align 4, !dbg !55, !tbaa !42
-  store i32 %10, i32* %localA, align 4, !dbg !55, !tbaa !42
-  %11 = bitcast i32* %localE to i8*, !dbg !56
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* %11) #4, !dbg !56
-  %12 = bitcast i32* %localF to i8*, !dbg !57
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* %12) #4, !dbg !57
-  call void @llvm.dbg.declare(metadata i32* %localF, metadata !30, metadata !DIExpression()), !dbg !57
-  store i32 6, i32* %localF, align 4, !dbg !57, !tbaa !42
-  %13 = load i32, i32* %localF, align 4, !dbg !58, !tbaa !42
-  store i32 %13, i32* %localA, align 4, !dbg !58, !tbaa !42
-  %14 = bitcast i32* %localG to i8*, !dbg !59
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* %14) #4, !dbg !59
-  call void @llvm.dbg.declare(metadata i32* %localG, metadata !32, metadata !DIExpression()), !dbg !59
-  store i32 7, i32* %localG, align 4, !dbg !59, !tbaa !42
-  %15 = load i32, i32* %localG, align 4, !dbg !60, !tbaa !42
-  store i32 %15, i32* %localA, align 4, !dbg !60, !tbaa !42
-  %16 = bitcast i32* %localG to i8*, !dbg !61
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* %16) #4, !dbg !61
-  %17 = bitcast i32* %localF to i8*, !dbg !62
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* %17) #4, !dbg !62
-  %18 = load i32, i32* %localA, align 4, !dbg !63, !tbaa !42
-  %cmp1 = icmp eq i32 %18, 7, !dbg !63
+  call void @llvm.lifetime.end.p0(i64 4, ptr %localB) #4, !dbg !50
+  call void @llvm.lifetime.start.p0(i64 4, ptr %localD) #4, !dbg !51
+  call void @llvm.dbg.declare(metadata ptr %localD, metadata !25, metadata !DIExpression()), !dbg !51
+  store i32 4, ptr %localD, align 4, !dbg !51, !tbaa !42
+  %1 = load i32, ptr %localD, align 4, !dbg !52, !tbaa !42
+  store i32 %1, ptr %localA, align 4, !dbg !52, !tbaa !42
+  call void @llvm.lifetime.end.p0(i64 4, ptr %localD) #4, !dbg !53
+  call void @llvm.lifetime.start.p0(i64 4, ptr %localE) #4, !dbg !54
+  call void @llvm.dbg.declare(metadata ptr %localE, metadata !27, metadata !DIExpression()), !dbg !54
+  store i32 5, ptr %localE, align 4, !dbg !54, !tbaa !42
+  %2 = load i32, ptr %localE, align 4, !dbg !55, !tbaa !42
+  store i32 %2, ptr %localA, align 4, !dbg !55, !tbaa !42
+  call void @llvm.lifetime.end.p0(i64 4, ptr %localE) #4, !dbg !56
+  call void @llvm.lifetime.start.p0(i64 4, ptr %localF) #4, !dbg !57
+  call void @llvm.dbg.declare(metadata ptr %localF, metadata !30, metadata !DIExpression()), !dbg !57
+  store i32 6, ptr %localF, align 4, !dbg !57, !tbaa !42
+  %3 = load i32, ptr %localF, align 4, !dbg !58, !tbaa !42
+  store i32 %3, ptr %localA, align 4, !dbg !58, !tbaa !42
+  call void @llvm.lifetime.start.p0(i64 4, ptr %localG) #4, !dbg !59
+  call void @llvm.dbg.declare(metadata ptr %localG, metadata !32, metadata !DIExpression()), !dbg !59
+  store i32 7, ptr %localG, align 4, !dbg !59, !tbaa !42
+  %4 = load i32, ptr %localG, align 4, !dbg !60, !tbaa !42
+  store i32 %4, ptr %localA, align 4, !dbg !60, !tbaa !42
+  call void @llvm.lifetime.end.p0(i64 4, ptr %localG) #4, !dbg !61
+  call void @llvm.lifetime.end.p0(i64 4, ptr %localF) #4, !dbg !62
+  %5 = load i32, ptr %localA, align 4, !dbg !63, !tbaa !42
+  %cmp1 = icmp eq i32 %5, 7, !dbg !63
   br i1 %cmp1, label %if.then2, label %if.end3, !dbg !63
 
 if.then2:                                         ; preds = %if.end
-  %19 = bitcast i32* %localH to i8*, !dbg !64
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* %19) #4, !dbg !64
-  call void @llvm.dbg.declare(metadata i32* %localH, metadata !34, metadata !DIExpression()), !dbg !64
-  store i32 8, i32* %localH, align 4, !dbg !64, !tbaa !42
-  %20 = load i32, i32* %localH, align 4, !dbg !65, !tbaa !42
-  store i32 %20, i32* %localA, align 4, !dbg !65, !tbaa !42
-  %21 = bitcast i32* %localH to i8*, !dbg !66
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* %21) #4, !dbg !66
+  call void @llvm.lifetime.start.p0(i64 4, ptr %localH) #4, !dbg !64
+  call void @llvm.dbg.declare(metadata ptr %localH, metadata !34, metadata !DIExpression()), !dbg !64
+  store i32 8, ptr %localH, align 4, !dbg !64, !tbaa !42
+  %6 = load i32, ptr %localH, align 4, !dbg !65, !tbaa !42
+  store i32 %6, ptr %localA, align 4, !dbg !65, !tbaa !42
+  call void @llvm.lifetime.end.p0(i64 4, ptr %localH) #4, !dbg !66
   br label %if.end3, !dbg !66
 
 if.end3:                                          ; preds = %if.then2, %if.end
-  %22 = load i32, i32* %localA, align 4, !dbg !67, !tbaa !42
-  %cmp4 = icmp ne i32 %22, 8, !dbg !67
-  %23 = zext i1 %cmp4 to i64, !dbg !67
+  %7 = load i32, ptr %localA, align 4, !dbg !67, !tbaa !42
+  %cmp4 = icmp ne i32 %7, 8, !dbg !67
+  %8 = zext i1 %cmp4 to i64, !dbg !67
   %cond = select i1 %cmp4, i32 -1, i32 0, !dbg !67
-  %24 = bitcast i32* %localA to i8*, !dbg !68
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* %24) #4, !dbg !68
+  call void @llvm.lifetime.end.p0(i64 4, ptr %localA) #4, !dbg !68
   ret i32 %cond, !dbg !67
 }
 
@@ -207,13 +191,13 @@ if.end3:                                          ; preds = %if.then2, %if.end
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2
 
 ; Function Attrs: nounwind readnone
 declare i32 @llvm.expect.i32(i32, i32) #3
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2
 
 attributes #0 = { norecurse nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone speculatable }

diff  --git a/llvm/test/DebugInfo/COFF/line-zero.ll b/llvm/test/DebugInfo/COFF/line-zero.ll
index 3d34345645186..59f2dcadc730b 100644
--- a/llvm/test/DebugInfo/COFF/line-zero.ll
+++ b/llvm/test/DebugInfo/COFF/line-zero.ll
@@ -32,11 +32,10 @@ target triple = "x86_64-pc-windows-msvc19.22.27905"
 define dso_local i32 @main() local_unnamed_addr #0 !dbg !8 {
 entry:
   %x = alloca i32, align 4
-  %x.0.x.0..sroa_cast = bitcast i32* %x to i8*, !dbg !15
-  call void @llvm.dbg.declare(metadata i32* %x, metadata !13, metadata !DIExpression()), !dbg !15
-  store volatile i32 1, i32* %x, align 4, !dbg !16, !tbaa !17
-  store volatile i32 2, i32* %x, align 4, !dbg !21, !tbaa !17
-  store volatile i32 3, i32* %x, align 4, !dbg !22, !tbaa !17
+  call void @llvm.dbg.declare(metadata ptr %x, metadata !13, metadata !DIExpression()), !dbg !15
+  store volatile i32 1, ptr %x, align 4, !dbg !16, !tbaa !17
+  store volatile i32 2, ptr %x, align 4, !dbg !21, !tbaa !17
+  store volatile i32 3, ptr %x, align 4, !dbg !22, !tbaa !17
   ret i32 0, !dbg !23
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/lines-bb-start.ll b/llvm/test/DebugInfo/COFF/lines-bb-start.ll
index 4fb9234240938..9ff112cf7ae7c 100644
--- a/llvm/test/DebugInfo/COFF/lines-bb-start.ll
+++ b/llvm/test/DebugInfo/COFF/lines-bb-start.ll
@@ -6,8 +6,8 @@ target triple = "i386-pc-windows-msvc19.0.24215"
 
 @str_const = internal unnamed_addr constant [4 x i8] c"str\00", align 1
 
-declare i32 @puts(i8*)
-declare void @use_i32(i32*)
+declare i32 @puts(ptr)
+declare void @use_i32(ptr)
 declare void @llvm.dbg.value(metadata, metadata, metadata) nounwind readnone
 
 ; We had a line info quality issue where the LEA for the string constant had no
@@ -22,7 +22,7 @@ if.then:                                          ; preds = %entry
   br label %return, !dbg !18
 
 if.end:                                           ; preds = %entry
-  %call = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_const, i32 0, i32 0)), !dbg !19
+  %call = call i32 @puts(ptr @str_const), !dbg !19
   br label %return, !dbg !20
 
 return:                                           ; preds = %if.end, %if.then
@@ -49,7 +49,7 @@ if.then:                                          ; preds = %entry
 
 if.end:                                           ; preds = %entry
   call void asm sideeffect "nop", ""()
-  %call = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_const, i32 0, i32 0)), !dbg !24
+  %call = call i32 @puts(ptr @str_const), !dbg !24
   br label %return, !dbg !25
 
 return:                                           ; preds = %if.end, %if.then
@@ -71,15 +71,15 @@ return:                                           ; preds = %if.end, %if.then
 define void @lea_dbg_value(i1 %cond) !dbg !30 {
 entry:
   %value = alloca i32
-  store i32 42, i32* %value
+  store i32 42, ptr %value
   br i1 %cond, label %if.then, label %if.end, !dbg !31
 
 if.then:                                          ; preds = %entry
   br label %return, !dbg !32
 
 if.end:                                           ; preds = %entry
-  call void @llvm.dbg.value(metadata i32* %value, metadata !35, metadata !13), !dbg !34
-  call void @use_i32(i32* %value), !dbg !33
+  call void @llvm.dbg.value(metadata ptr %value, metadata !35, metadata !13), !dbg !34
+  call void @use_i32(ptr %value), !dbg !33
   br label %return, !dbg !34
 
 return:                                           ; preds = %if.end, %if.then

diff  --git a/llvm/test/DebugInfo/COFF/lines-difile.ll b/llvm/test/DebugInfo/COFF/lines-difile.ll
index 74795f164c14e..4c8e50b286c3f 100644
--- a/llvm/test/DebugInfo/COFF/lines-difile.ll
+++ b/llvm/test/DebugInfo/COFF/lines-difile.ll
@@ -38,26 +38,26 @@ target triple = "x86_64-pc-windows-msvc19.11.25508"
 
 @"\01?gy@@3UFoo@@A" = global %struct.Foo zeroinitializer, align 1, !dbg !0
 @"\01?global@@3HA" = external global i32, align 4
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_t.cpp, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_t.cpp, ptr null }]
 
 ; Function Attrs: noinline uwtable
 define internal void @"\01??__Egy@@YAXXZ"() #0 !dbg !18 {
 entry:
-  %call = call %struct.Foo* @"\01??0Foo@@QEAA at XZ"(%struct.Foo* @"\01?gy@@3UFoo@@A"), !dbg !21
+  %call = call ptr @"\01??0Foo@@QEAA at XZ"(ptr @"\01?gy@@3UFoo@@A"), !dbg !21
   ret void, !dbg !21
 }
 
-declare %struct.Foo* @"\01??0Foo@@QEAA at XZ"(%struct.Foo* returned) unnamed_addr #1
+declare ptr @"\01??0Foo@@QEAA at XZ"(ptr returned) unnamed_addr #1
 
 ; Function Attrs: noinline nounwind optnone uwtable
 define void @"\01?f@@YAXXZ"() #2 !dbg !22 {
 entry:
-  %0 = load i32, i32* @"\01?global@@3HA", align 4, !dbg !23
+  %0 = load i32, ptr @"\01?global@@3HA", align 4, !dbg !23
   %inc = add nsw i32 %0, 1, !dbg !23
-  store i32 %inc, i32* @"\01?global@@3HA", align 4, !dbg !23
-  %1 = load i32, i32* @"\01?global@@3HA", align 4, !dbg !24
+  store i32 %inc, ptr @"\01?global@@3HA", align 4, !dbg !23
+  %1 = load i32, ptr @"\01?global@@3HA", align 4, !dbg !24
   %inc1 = add nsw i32 %1, 1, !dbg !24
-  store i32 %inc1, i32* @"\01?global@@3HA", align 4, !dbg !24
+  store i32 %inc1, ptr @"\01?global@@3HA", align 4, !dbg !24
   ret void, !dbg !25
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/local-variable-gap.ll b/llvm/test/DebugInfo/COFF/local-variable-gap.ll
index 0b7f4ec5fd5da..bc1c3135474bc 100644
--- a/llvm/test/DebugInfo/COFF/local-variable-gap.ll
+++ b/llvm/test/DebugInfo/COFF/local-variable-gap.ll
@@ -94,14 +94,14 @@ target triple = "x86_64-pc-windows-msvc19.0.24210"
 ; Function Attrs: nounwind uwtable
 define i32 @f() local_unnamed_addr #0 !dbg !7 {
 entry:
-  %call = tail call i32 bitcast (i32 (...)* @barrier to i32 ()*)() #4, !dbg !15
+  %call = tail call i32 @barrier() #4, !dbg !15
   %tobool = icmp eq i32 %call, 0, !dbg !15
   br i1 %tobool, label %if.else, label %if.then, !dbg !16
 
 if.then:                                          ; preds = %entry
-  %call1 = tail call i32 bitcast (i32 (...)* @vardef to i32 ()*)() #4, !dbg !17
+  %call1 = tail call i32 @vardef() #4, !dbg !17
   tail call void @llvm.dbg.value(metadata i32 %call1, metadata !12, metadata !18), !dbg !19
-  %call2 = tail call i32 bitcast (i32 (...)* @barrier to i32 ()*)() #4, !dbg !20
+  %call2 = tail call i32 @barrier() #4, !dbg !20
   %tobool3 = icmp eq i32 %call2, 0, !dbg !20
   br i1 %tobool3, label %if.end, label %if.then4, !dbg !22
 
@@ -114,7 +114,7 @@ if.end:                                           ; preds = %if.then
   br label %if.end6, !dbg !25
 
 if.else:                                          ; preds = %entry
-  %call5 = tail call i32 bitcast (i32 (...)* @barrier to i32 ()*)() #4, !dbg !26
+  %call5 = tail call i32 @barrier() #4, !dbg !26
   br label %if.end6
 
 if.end6:                                          ; preds = %if.else, %if.end

diff  --git a/llvm/test/DebugInfo/COFF/local-variables.ll b/llvm/test/DebugInfo/COFF/local-variables.ll
index abec75a87af5f..56ece6b794b4b 100644
--- a/llvm/test/DebugInfo/COFF/local-variables.ll
+++ b/llvm/test/DebugInfo/COFF/local-variables.ll
@@ -211,32 +211,32 @@ target triple = "x86_64-pc-windows-msvc18.0.0"
 define void @f(i32 %param) #0 !dbg !4 {
 entry:
   %v.i1 = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %v.i1, metadata !15, metadata !16), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %v.i1, metadata !15, metadata !16), !dbg !17
   %v.i = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %v.i, metadata !15, metadata !16), !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %v.i, metadata !15, metadata !16), !dbg !21
   %param.addr = alloca i32, align 4
   %a = alloca i32, align 4
   %b = alloca i32, align 4
-  store i32 %param, i32* %param.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %param.addr, metadata !24, metadata !16), !dbg !25
-  %0 = load i32, i32* %param.addr, align 4, !dbg !26
+  store i32 %param, ptr %param.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %param.addr, metadata !24, metadata !16), !dbg !25
+  %0 = load i32, ptr %param.addr, align 4, !dbg !26
   %tobool = icmp ne i32 %0, 0, !dbg !26
   br i1 %tobool, label %if.then, label %if.else, !dbg !27
 
 if.then:                                          ; preds = %entry
-  call void @llvm.dbg.declare(metadata i32* %a, metadata !28, metadata !16), !dbg !29
-  store i32 42, i32* %a, align 4, !dbg !29
-  store i32 3, i32* %v.i, align 4, !dbg !21
-  call void @capture(i32* %v.i) #3, !dbg !30
-  call void @capture(i32* %a), !dbg !31
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !28, metadata !16), !dbg !29
+  store i32 42, ptr %a, align 4, !dbg !29
+  store i32 3, ptr %v.i, align 4, !dbg !21
+  call void @capture(ptr %v.i) #3, !dbg !30
+  call void @capture(ptr %a), !dbg !31
   br label %if.end, !dbg !32
 
 if.else:                                          ; preds = %entry
-  call void @llvm.dbg.declare(metadata i32* %b, metadata !33, metadata !16), !dbg !34
-  store i32 42, i32* %b, align 4, !dbg !34
-  store i32 3, i32* %v.i1, align 4, !dbg !17
-  call void @capture(i32* %v.i1) #3, !dbg !35
-  call void @capture(i32* %b), !dbg !36
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !33, metadata !16), !dbg !34
+  store i32 42, ptr %b, align 4, !dbg !34
+  store i32 3, ptr %v.i1, align 4, !dbg !17
+  call void @capture(ptr %v.i1) #3, !dbg !35
+  call void @capture(ptr %b), !dbg !36
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then
@@ -246,7 +246,7 @@ if.end:                                           ; preds = %if.else, %if.then
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare void @capture(i32*) #2
+declare void @capture(ptr) #2
 
 attributes #0 = { nounwind uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/COFF/numeric-leaves.ll b/llvm/test/DebugInfo/COFF/numeric-leaves.ll
index 4500e821a8c5b..2b3f7ed495c6c 100644
--- a/llvm/test/DebugInfo/COFF/numeric-leaves.ll
+++ b/llvm/test/DebugInfo/COFF/numeric-leaves.ll
@@ -183,11 +183,11 @@ entry:
   %retval = alloca i32, align 4
   %iDebug1 = alloca i64, align 8
   %iDebug2 = alloca i64, align 8
-  store i32 0, i32* %retval, align 4
-  call void @llvm.dbg.declare(metadata i64* %iDebug1, metadata !40, metadata !DIExpression()), !dbg !41
-  store i64 -4295033092, i64* %iDebug1, align 8, !dbg !41
-  call void @llvm.dbg.declare(metadata i64* %iDebug2, metadata !42, metadata !DIExpression()), !dbg !43
-  store i64 4295032830, i64* %iDebug2, align 8, !dbg !43
+  store i32 0, ptr %retval, align 4
+  call void @llvm.dbg.declare(metadata ptr %iDebug1, metadata !40, metadata !DIExpression()), !dbg !41
+  store i64 -4295033092, ptr %iDebug1, align 8, !dbg !41
+  call void @llvm.dbg.declare(metadata ptr %iDebug2, metadata !42, metadata !DIExpression()), !dbg !43
+  store i64 4295032830, ptr %iDebug2, align 8, !dbg !43
   ret i32 0, !dbg !44
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/parameter-order.ll b/llvm/test/DebugInfo/COFF/parameter-order.ll
index bc8989e45ae6a..23224aa3cdf2b 100644
--- a/llvm/test/DebugInfo/COFF/parameter-order.ll
+++ b/llvm/test/DebugInfo/COFF/parameter-order.ll
@@ -56,24 +56,24 @@ entry:
   %a.addr = alloca i32, align 4
   %d = alloca i32, align 4
   %e = alloca i32, align 4
-  store i32 %c, i32* %c.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %c.addr, metadata !11, metadata !12), !dbg !13
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !14, metadata !12), !dbg !15
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !16, metadata !12), !dbg !17
-  call void @llvm.dbg.declare(metadata i32* %d, metadata !18, metadata !12), !dbg !19
-  store i32 4, i32* %d, align 4, !dbg !19
-  call void @llvm.dbg.declare(metadata i32* %e, metadata !20, metadata !12), !dbg !21
-  store i32 5, i32* %e, align 4, !dbg !21
-  %0 = load i32, i32* %a.addr, align 4, !dbg !22
-  %1 = load i32, i32* %b.addr, align 4, !dbg !23
+  store i32 %c, ptr %c.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %c.addr, metadata !11, metadata !12), !dbg !13
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !14, metadata !12), !dbg !15
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !16, metadata !12), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %d, metadata !18, metadata !12), !dbg !19
+  store i32 4, ptr %d, align 4, !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %e, metadata !20, metadata !12), !dbg !21
+  store i32 5, ptr %e, align 4, !dbg !21
+  %0 = load i32, ptr %a.addr, align 4, !dbg !22
+  %1 = load i32, ptr %b.addr, align 4, !dbg !23
   %add = add nsw i32 %0, %1, !dbg !24
-  %2 = load i32, i32* %c.addr, align 4, !dbg !25
+  %2 = load i32, ptr %c.addr, align 4, !dbg !25
   %add1 = add nsw i32 %add, %2, !dbg !26
-  %3 = load i32, i32* %d, align 4, !dbg !27
+  %3 = load i32, ptr %d, align 4, !dbg !27
   %add2 = add nsw i32 %add1, %3, !dbg !28
-  %4 = load i32, i32* %e, align 4, !dbg !29
+  %4 = load i32, ptr %e, align 4, !dbg !29
   %add3 = add nsw i32 %add2, %4, !dbg !30
   ret i32 %add3, !dbg !31
 }

diff  --git a/llvm/test/DebugInfo/COFF/parent-type-scopes.ll b/llvm/test/DebugInfo/COFF/parent-type-scopes.ll
index 9d1ba6d51db53..95c7a55895222 100644
--- a/llvm/test/DebugInfo/COFF/parent-type-scopes.ll
+++ b/llvm/test/DebugInfo/COFF/parent-type-scopes.ll
@@ -63,11 +63,11 @@ entry:
   %v3 = alloca %"class.WrapClass::Inner", align 4
   %v4 = alloca i32, align 4
   %v5 = alloca %"union.WrapUnion::Inner", align 4
-  call void @llvm.dbg.declare(metadata i32* %v1, metadata !19, metadata !DIExpression()), !dbg !23
-  call void @llvm.dbg.declare(metadata %"struct.WrapStruct::Inner"* %v2, metadata !24, metadata !DIExpression()), !dbg !30
-  call void @llvm.dbg.declare(metadata %"class.WrapClass::Inner"* %v3, metadata !31, metadata !DIExpression()), !dbg !37
-  call void @llvm.dbg.declare(metadata i32* %v4, metadata !38, metadata !DIExpression()), !dbg !39
-  call void @llvm.dbg.declare(metadata %"union.WrapUnion::Inner"* %v5, metadata !40, metadata !DIExpression()), !dbg !48
+  call void @llvm.dbg.declare(metadata ptr %v1, metadata !19, metadata !DIExpression()), !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %v2, metadata !24, metadata !DIExpression()), !dbg !30
+  call void @llvm.dbg.declare(metadata ptr %v3, metadata !31, metadata !DIExpression()), !dbg !37
+  call void @llvm.dbg.declare(metadata ptr %v4, metadata !38, metadata !DIExpression()), !dbg !39
+  call void @llvm.dbg.declare(metadata ptr %v5, metadata !40, metadata !DIExpression()), !dbg !48
   ret void, !dbg !49
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/pgo.ll b/llvm/test/DebugInfo/COFF/pgo.ll
index 2aa880ddfd0f2..7327b2882c6d3 100644
--- a/llvm/test/DebugInfo/COFF/pgo.ll
+++ b/llvm/test/DebugInfo/COFF/pgo.ll
@@ -53,9 +53,9 @@ entry:
   ret i32 %mul3, !dbg !62
 }
 
-define dso_local i32 @main(i32 %argc, i8** nocapture readnone %argv) local_unnamed_addr #1 !dbg !63 !annotation !72 {
+define dso_local i32 @main(i32 %argc, ptr nocapture readnone %argv) local_unnamed_addr #1 !dbg !63 !annotation !72 {
 entry:
-  call void @llvm.dbg.value(metadata i8** %argv, metadata !70, metadata !DIExpression()), !dbg !73
+  call void @llvm.dbg.value(metadata ptr %argv, metadata !70, metadata !DIExpression()), !dbg !73
   call void @llvm.dbg.value(metadata i32 %argc, metadata !71, metadata !DIExpression()), !dbg !73
   %cmp = icmp eq i32 %argc, 2, !dbg !74
   br i1 %cmp, label %return, label %if.end, !dbg !74
@@ -122,8 +122,8 @@ attributes #1 = { optsize }
 !37 = !{i32 999999, i64 1, i32 2}
 !38 = !{i32 5, !"CG Profile", !39}
 !39 = !{!40, !41}
-!40 = !{i32 (i32)* @"?bar@@YAHH at Z", i32 (i32)* @"?foo@@YAHH at Z", i64 0}
-!41 = !{i32 (i32)* @"?bar@@YAHH at Z", i32 (i32)* @"?foo2@@YAHH at Z", i64 0}
+!40 = !{ptr @"?bar@@YAHH at Z", ptr @"?foo@@YAHH at Z", i64 0}
+!41 = !{ptr @"?bar@@YAHH at Z", ptr @"?foo2@@YAHH at Z", i64 0}
 !43 = distinct !DISubprogram(name: "foo", linkageName: "?foo@@YAHH at Z", scope: !1, file: !1, line: 2, type: !44, scopeLine: 2, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !47)
 !44 = !DISubroutineType(types: !45)
 !45 = !{!46, !46}

diff  --git a/llvm/test/DebugInfo/COFF/pieces.ll b/llvm/test/DebugInfo/COFF/pieces.ll
index c41e3f244e0db..a447c92ba60c1 100644
--- a/llvm/test/DebugInfo/COFF/pieces.ll
+++ b/llvm/test/DebugInfo/COFF/pieces.ll
@@ -254,13 +254,13 @@ target triple = "x86_64-pc-windows-msvc19.0.24210"
 ; Function Attrs: nounwind uwtable
 define i32 @loop_csr() local_unnamed_addr #0 !dbg !7 {
 entry:
-  tail call void @llvm.dbg.declare(metadata %struct.IntPair* undef, metadata !12, metadata !17), !dbg !18
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !12, metadata !17), !dbg !18
   tail call void @llvm.dbg.value(metadata i32 0, metadata !12, metadata !19), !dbg !18
   tail call void @llvm.dbg.value(metadata i32 0, metadata !12, metadata !20), !dbg !18
   tail call void @llvm.dbg.value(metadata i32 0, metadata !12, metadata !19), !dbg !18
   tail call void @llvm.dbg.value(metadata i32 0, metadata !12, metadata !20), !dbg !18
-  store i32 0, i32* @i, align 4, !dbg !21, !tbaa !24
-  %0 = load i32, i32* @n, align 4, !dbg !28, !tbaa !24
+  store i32 0, ptr @i, align 4, !dbg !21, !tbaa !24
+  %0 = load i32, ptr @n, align 4, !dbg !28, !tbaa !24
   %cmp9 = icmp sgt i32 %0, 0, !dbg !29
   br i1 %cmp9, label %for.body, label %for.end, !dbg !30
 
@@ -273,10 +273,10 @@ for.body:                                         ; preds = %entry, %for.body
   tail call void @llvm.dbg.value(metadata i32 %call, metadata !12, metadata !19), !dbg !18
   %call2 = tail call i32 @g(i32 %o.sroa.5.010) #5, !dbg !33
   tail call void @llvm.dbg.value(metadata i32 %call2, metadata !12, metadata !20), !dbg !18
-  %1 = load i32, i32* @i, align 4, !dbg !21, !tbaa !24
+  %1 = load i32, ptr @i, align 4, !dbg !21, !tbaa !24
   %inc = add nsw i32 %1, 1, !dbg !21
-  store i32 %inc, i32* @i, align 4, !dbg !21, !tbaa !24
-  %2 = load i32, i32* @n, align 4, !dbg !28, !tbaa !24
+  store i32 %inc, ptr @i, align 4, !dbg !21, !tbaa !24
+  %2 = load i32, ptr @n, align 4, !dbg !28, !tbaa !24
   %cmp = icmp slt i32 %inc, %2, !dbg !29
   br i1 %cmp, label %for.body, label %for.end, !dbg !30, !llvm.loop !34
 
@@ -298,7 +298,7 @@ entry:
   %o.sroa.1.0.extract.shift = lshr i64 %o.coerce, 32
   %o.sroa.1.0.extract.trunc = trunc i64 %o.sroa.1.0.extract.shift to i32
   tail call void @llvm.dbg.value(metadata i32 %o.sroa.1.0.extract.trunc, metadata !47, metadata !20), !dbg !48
-  tail call void @llvm.dbg.declare(metadata %struct.PadRight* undef, metadata !47, metadata !17), !dbg !48
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !47, metadata !17), !dbg !48
   ret i32 %o.sroa.1.0.extract.trunc, !dbg !49
 }
 
@@ -307,17 +307,17 @@ define i32 @pad_left(i64 %o.coerce) local_unnamed_addr #3 !dbg !50 {
 entry:
   %o.sroa.0.0.extract.trunc = trunc i64 %o.coerce to i32
   tail call void @llvm.dbg.value(metadata i32 %o.sroa.0.0.extract.trunc, metadata !58, metadata !19), !dbg !59
-  tail call void @llvm.dbg.declare(metadata %struct.PadLeft* undef, metadata !58, metadata !17), !dbg !59
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !58, metadata !17), !dbg !59
   ret i32 %o.sroa.0.0.extract.trunc, !dbg !60
 }
 
 ; Function Attrs: nounwind readonly uwtable
-define i32 @nested(%struct.Nested* nocapture readonly %o) local_unnamed_addr #4 !dbg !61 {
+define i32 @nested(ptr nocapture readonly %o) local_unnamed_addr #4 !dbg !61 {
 entry:
-  tail call void @llvm.dbg.declare(metadata %struct.Nested* %o, metadata !71, metadata !73), !dbg !74
-  tail call void @llvm.dbg.declare(metadata %struct.PadLeft* undef, metadata !72, metadata !17), !dbg !75
-  %p.sroa.3.0..sroa_idx2 = getelementptr inbounds %struct.Nested, %struct.Nested* %o, i64 0, i32 0, i64 1, i32 1, !dbg !76
-  %p.sroa.3.0.copyload = load i32, i32* %p.sroa.3.0..sroa_idx2, align 4, !dbg !76
+  tail call void @llvm.dbg.declare(metadata ptr %o, metadata !71, metadata !73), !dbg !74
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !72, metadata !17), !dbg !75
+  %p.sroa.3.0..sroa_idx2 = getelementptr inbounds %struct.Nested, ptr %o, i64 0, i32 0, i64 1, i32 1, !dbg !76
+  %p.sroa.3.0.copyload = load i32, ptr %p.sroa.3.0..sroa_idx2, align 4, !dbg !76
   tail call void @llvm.dbg.value(metadata i32 %p.sroa.3.0.copyload, metadata !72, metadata !20), !dbg !75
   ret i32 %p.sroa.3.0.copyload, !dbg !77
 }
@@ -325,7 +325,7 @@ entry:
 ; Function Attrs: nounwind uwtable
 define i32 @bitpiece_spill() local_unnamed_addr #0 !dbg !78 {
 entry:
-  tail call void @llvm.dbg.declare(metadata %struct.IntPair* undef, metadata !80, metadata !17), !dbg !81
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !80, metadata !17), !dbg !81
   tail call void @llvm.dbg.value(metadata i32 0, metadata !80, metadata !19), !dbg !81
   %call = tail call i32 @g(i32 0) #5, !dbg !82
   tail call void @llvm.dbg.value(metadata i32 %call, metadata !80, metadata !20), !dbg !81

diff  --git a/llvm/test/DebugInfo/COFF/pr28747.ll b/llvm/test/DebugInfo/COFF/pr28747.ll
index e9b3a8eae91be..7b81cd9049dc7 100644
--- a/llvm/test/DebugInfo/COFF/pr28747.ll
+++ b/llvm/test/DebugInfo/COFF/pr28747.ll
@@ -20,8 +20,8 @@ target triple = "i686-pc-windows-msvc18.0.0"
 define void @baz() {
 entry:
   %x.i.i = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.i.i, metadata !6, metadata !12), !dbg !13
-  store i32 5, i32* %x.i.i, align 4, !dbg !13
+  call void @llvm.dbg.declare(metadata ptr %x.i.i, metadata !6, metadata !12), !dbg !13
+  store i32 5, ptr %x.i.i, align 4, !dbg !13
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/pr37492.ll b/llvm/test/DebugInfo/COFF/pr37492.ll
index bdf0bc77d1cea..0c0dc8aec21dc 100644
--- a/llvm/test/DebugInfo/COFF/pr37492.ll
+++ b/llvm/test/DebugInfo/COFF/pr37492.ll
@@ -37,7 +37,7 @@ target triple = "x86_64-pc-windows-msvc19.13.26131"
 %struct.Bits = type { i8 }
 
 @"?bits@@3UBits@@A" = dso_local global %struct.Bits zeroinitializer, align 1, !dbg !0
-@"?p_const@@3PEBEEB" = dso_local global i8* null, align 8, !dbg !6
+@"?p_const@@3PEBEEB" = dso_local global ptr null, align 8, !dbg !6
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!15, !16, !17, !18}

diff  --git a/llvm/test/DebugInfo/COFF/purge-typedef-udts.ll b/llvm/test/DebugInfo/COFF/purge-typedef-udts.ll
index 6aa1bc6080056..8118e0ca2ae8b 100644
--- a/llvm/test/DebugInfo/COFF/purge-typedef-udts.ll
+++ b/llvm/test/DebugInfo/COFF/purge-typedef-udts.ll
@@ -14,9 +14,9 @@ target triple = "i686-pc-windows-msvc19.11.25506"
 ; typedef Foo FooTypedef;
 ; typedef Bar BarTypedef;
 ;
-; int func(void *F) { return 7; }
-; int func(const FooTypedef *F) { return func((void*)F); }
-; int func(const BarTypedef *B) { return func((void*)B->X); }
+; int func(ptr F) { return 7; }
+; int func(const FooTypedef *F) { return func((ptr)F); }
+; int func(const BarTypedef *B) { return func((ptr)B->X); }
 
 ; CHECK-NOT: UDTName: FooTypedef
 ; CHECK: UDTName: BarTypedef
@@ -25,11 +25,11 @@ target triple = "i686-pc-windows-msvc19.11.25506"
 %struct.Bar = type { i32 }
 
 ; Function Attrs: noinline nounwind optnone
-define i32 @"\01?func@@YAHPAX at Z"(i8* %F) #0 !dbg !10 {
+define i32 @"\01?func@@YAHPAX at Z"(ptr %F) #0 !dbg !10 {
 entry:
-  %F.addr = alloca i8*, align 4
-  store i8* %F, i8** %F.addr, align 4
-  call void @llvm.dbg.declare(metadata i8** %F.addr, metadata !14, metadata !DIExpression()), !dbg !15
+  %F.addr = alloca ptr, align 4
+  store ptr %F, ptr %F.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %F.addr, metadata !14, metadata !DIExpression()), !dbg !15
   ret i32 7, !dbg !16
 }
 
@@ -37,28 +37,26 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: noinline nounwind optnone
-define i32 @"\01?func@@YAHPBUFoo@@@Z"(%struct.Foo* %F) #0 !dbg !17 {
+define i32 @"\01?func@@YAHPBUFoo@@@Z"(ptr %F) #0 !dbg !17 {
 entry:
-  %F.addr = alloca %struct.Foo*, align 4
-  store %struct.Foo* %F, %struct.Foo** %F.addr, align 4
-  call void @llvm.dbg.declare(metadata %struct.Foo** %F.addr, metadata !24, metadata !DIExpression()), !dbg !25
-  %0 = load %struct.Foo*, %struct.Foo** %F.addr, align 4, !dbg !26
-  %1 = bitcast %struct.Foo* %0 to i8*, !dbg !26
-  %call = call i32 @"\01?func@@YAHPAX at Z"(i8* %1), !dbg !27
+  %F.addr = alloca ptr, align 4
+  store ptr %F, ptr %F.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %F.addr, metadata !24, metadata !DIExpression()), !dbg !25
+  %0 = load ptr, ptr %F.addr, align 4, !dbg !26
+  %call = call i32 @"\01?func@@YAHPAX at Z"(ptr %0), !dbg !27
   ret i32 %call, !dbg !28
 }
 
 ; Function Attrs: noinline nounwind optnone
-define i32 @"\01?func@@YAHPBUBar@@@Z"(%struct.Bar* %B) #0 !dbg !29 {
+define i32 @"\01?func@@YAHPBUBar@@@Z"(ptr %B) #0 !dbg !29 {
 entry:
-  %B.addr = alloca %struct.Bar*, align 4
-  store %struct.Bar* %B, %struct.Bar** %B.addr, align 4
-  call void @llvm.dbg.declare(metadata %struct.Bar** %B.addr, metadata !42, metadata !DIExpression()), !dbg !43
-  %0 = load %struct.Bar*, %struct.Bar** %B.addr, align 4, !dbg !44
-  %X = getelementptr inbounds %struct.Bar, %struct.Bar* %0, i32 0, i32 0, !dbg !45
-  %1 = load i32, i32* %X, align 4, !dbg !45
-  %2 = inttoptr i32 %1 to i8*, !dbg !46
-  %call = call i32 @"\01?func@@YAHPAX at Z"(i8* %2), !dbg !47
+  %B.addr = alloca ptr, align 4
+  store ptr %B, ptr %B.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %B.addr, metadata !42, metadata !DIExpression()), !dbg !43
+  %0 = load ptr, ptr %B.addr, align 4, !dbg !44
+  %1 = load i32, ptr %0, align 4, !dbg !45
+  %2 = inttoptr i32 %1 to ptr, !dbg !46
+  %call = call i32 @"\01?func@@YAHPAX at Z"(ptr %2), !dbg !47
   ret i32 %call, !dbg !48
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/register-variables.ll b/llvm/test/DebugInfo/COFF/register-variables.ll
index 6ac9a1cd6a9d2..84c036ce51536 100644
--- a/llvm/test/DebugInfo/COFF/register-variables.ll
+++ b/llvm/test/DebugInfo/COFF/register-variables.ll
@@ -186,9 +186,9 @@ if.then:                                          ; preds = %entry
   tail call void @llvm.dbg.value(metadata i32 %call2, metadata !29, metadata !23), !dbg !35
   %add.i = add nsw i32 %call2, 1, !dbg !37
   tail call void @llvm.dbg.value(metadata i32 %add.i, metadata !34, metadata !23), !dbg !38
-  %0 = load volatile i32, i32* @x, align 4, !dbg !39, !tbaa !40
+  %0 = load volatile i32, ptr @x, align 4, !dbg !39, !tbaa !40
   %inc.i = add nsw i32 %0, 1, !dbg !39
-  store volatile i32 %inc.i, i32* @x, align 4, !dbg !39, !tbaa !40
+  store volatile i32 %inc.i, ptr @x, align 4, !dbg !39, !tbaa !40
   tail call void @llvm.dbg.value(metadata i32 %add.i, metadata !20, metadata !23), !dbg !44
   tail call void @putint(i32 %add.i) #3, !dbg !45
   br label %if.end, !dbg !46

diff  --git a/llvm/test/DebugInfo/COFF/retained-types.ll b/llvm/test/DebugInfo/COFF/retained-types.ll
index 2fe64c69b3222..799ae2bcd6836 100644
--- a/llvm/test/DebugInfo/COFF/retained-types.ll
+++ b/llvm/test/DebugInfo/COFF/retained-types.ll
@@ -7,7 +7,7 @@
 ; C++ source to regenerate:
 ; $ cat /tmp/a.cc
 ; struct S { int x; };
-; int f(void *p) {
+; int f(ptr p) {
 ;   return static_cast<S*>(p)->x;
 ; }
 ; $ clang /tmp/a.cc -S -emit-llvm -g -gcodeview -target x86_64-windows-msvc -o t.ll
@@ -49,16 +49,14 @@ target triple = "x86_64--windows-msvc18.0.0"
 %struct.S = type { i32 }
 
 ; Function Attrs: nounwind uwtable
-define i32 @"\01?f@@YAHPEAX at Z"(i8* %p) #0 !dbg !13 {
+define i32 @"\01?f@@YAHPEAX at Z"(ptr %p) #0 !dbg !13 {
 entry:
-  %p.addr = alloca i8*, align 8
-  store i8* %p, i8** %p.addr, align 8
-  call void @llvm.dbg.declare(metadata i8** %p.addr, metadata !17, metadata !18), !dbg !19
-  %0 = load i8*, i8** %p.addr, align 8, !dbg !20
-  %1 = bitcast i8* %0 to %struct.S*, !dbg !21
-  %x = getelementptr inbounds %struct.S, %struct.S* %1, i32 0, i32 0, !dbg !22
-  %2 = load i32, i32* %x, align 4, !dbg !22
-  ret i32 %2, !dbg !23
+  %p.addr = alloca ptr, align 8
+  store ptr %p, ptr %p.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !17, metadata !18), !dbg !19
+  %0 = load ptr, ptr %p.addr, align 8, !dbg !20
+  %1 = load i32, ptr %0, align 4, !dbg !22
+  ret i32 %1, !dbg !23
 }
 
 ; Function Attrs: nounwind readnone

diff  --git a/llvm/test/DebugInfo/COFF/scopes.ll b/llvm/test/DebugInfo/COFF/scopes.ll
index facc11f062345..b33e8481289d9 100644
--- a/llvm/test/DebugInfo/COFF/scopes.ll
+++ b/llvm/test/DebugInfo/COFF/scopes.ll
@@ -85,7 +85,7 @@ target triple = "x86_64-pc-windows-msvc19.0.23918"
 define void @"\01?baz at bar@foo@@YAXXZ"() #0 !dbg !20 {
 entry:
   %l = alloca %struct.LocalRecord, align 4
-  call void @llvm.dbg.declare(metadata %struct.LocalRecord* %l, metadata !23, metadata !27), !dbg !28
+  call void @llvm.dbg.declare(metadata ptr %l, metadata !23, metadata !27), !dbg !28
   ret void, !dbg !29
 }
 
@@ -93,12 +93,12 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind uwtable
-define void @"\01?method at GlobalRecord@bar at foo@@QEAAXXZ"(%"struct.foo::bar::GlobalRecord"* %this) #0 align 2 !dbg !30 {
+define void @"\01?method at GlobalRecord@bar at foo@@QEAAXXZ"(ptr %this) #0 align 2 !dbg !30 {
 entry:
-  %this.addr = alloca %"struct.foo::bar::GlobalRecord"*, align 8
-  store %"struct.foo::bar::GlobalRecord"* %this, %"struct.foo::bar::GlobalRecord"** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %"struct.foo::bar::GlobalRecord"** %this.addr, metadata !31, metadata !27), !dbg !33
-  %this1 = load %"struct.foo::bar::GlobalRecord"*, %"struct.foo::bar::GlobalRecord"** %this.addr, align 8
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !31, metadata !27), !dbg !33
+  %this1 = load ptr, ptr %this.addr, align 8
   ret void, !dbg !34
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/static-methods.ll b/llvm/test/DebugInfo/COFF/static-methods.ll
index f29dd9ae71f6b..4ec6aa69ab7cd 100644
--- a/llvm/test/DebugInfo/COFF/static-methods.ll
+++ b/llvm/test/DebugInfo/COFF/static-methods.ll
@@ -77,20 +77,19 @@ target triple = "i686-pc-windows-msvc19.0.24215"
 
 %struct.A = type { i8 }
 
-@"\01?p@@3PAUA@@A" = global %struct.A* null, align 4, !dbg !0
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_t.cpp, i8* null }]
+@"\01?p@@3PAUA@@A" = global ptr null, align 4, !dbg !0
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_t.cpp, ptr null }]
 
 ; Function Attrs: noinline
 define internal void @"\01??__Ep@@YAXXZ"() #0 !dbg !25 {
 entry:
-  %call = call i8* @"\01??2 at YAPAXI@Z"(i32 1) #2, !dbg !26
-  %0 = bitcast i8* %call to %struct.A*, !dbg !26
-  store %struct.A* %0, %struct.A** @"\01?p@@3PAUA@@A", align 4, !dbg !26
+  %call = call ptr @"\01??2 at YAPAXI@Z"(i32 1) #2, !dbg !26
+  store ptr %call, ptr @"\01?p@@3PAUA@@A", align 4, !dbg !26
   ret void, !dbg !27
 }
 
 ; Function Attrs: nobuiltin
-declare noalias i8* @"\01??2 at YAPAXI@Z"(i32) #1
+declare noalias ptr @"\01??2 at YAPAXI@Z"(i32) #1
 
 ; Function Attrs: noinline
 define internal void @_GLOBAL__sub_I_t.cpp() #0 !dbg !28 {

diff  --git a/llvm/test/DebugInfo/COFF/synthetic.ll b/llvm/test/DebugInfo/COFF/synthetic.ll
index 246244e6b5308..7603e408e46e5 100644
--- a/llvm/test/DebugInfo/COFF/synthetic.ll
+++ b/llvm/test/DebugInfo/COFF/synthetic.ll
@@ -3,9 +3,9 @@
 target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-windows-msvc"
 
-define dllexport void ()* @f() !dbg !6 {
+define dllexport ptr @f() !dbg !6 {
 entry:
-  ret void ()* null, !dbg !28
+  ret ptr null, !dbg !28
 }
 
 !llvm.dbg.cu = !{!0}

diff  --git a/llvm/test/DebugInfo/COFF/typedef.ll b/llvm/test/DebugInfo/COFF/typedef.ll
index 3e41e835c1ce5..892bd4dead0a2 100644
--- a/llvm/test/DebugInfo/COFF/typedef.ll
+++ b/llvm/test/DebugInfo/COFF/typedef.ll
@@ -22,7 +22,7 @@ target triple = "i686-pc-windows-msvc18.0.0"
 define void @test1() !dbg !5 {
 entry:
   %foo = alloca i16, align 2
-  call void @llvm.dbg.declare(metadata i16* %foo, metadata !8, metadata !11), !dbg !12
+  call void @llvm.dbg.declare(metadata ptr %foo, metadata !8, metadata !11), !dbg !12
   ret void, !dbg !12
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/types-array-advanced.ll b/llvm/test/DebugInfo/COFF/types-array-advanced.ll
index 4e9ce0cccfac1..f445108133720 100644
--- a/llvm/test/DebugInfo/COFF/types-array-advanced.ll
+++ b/llvm/test/DebugInfo/COFF/types-array-advanced.ll
@@ -173,7 +173,7 @@ target triple = "i686-pc-windows-msvc18.0.31101"
 %struct.incomplete_struct = type { i32 }
 
 @"\01?multi_dim_arr@@3PAY146DA" = global [2 x [5 x [7 x i8]]] zeroinitializer, align 1, !dbg !0
-@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global [3 x i8]* null, align 4, !dbg !6
+@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global ptr null, align 4, !dbg !6
 @"\01?incomplete_struct_arr@@3PAUincomplete_struct@@A" = global [3 x %struct.incomplete_struct] zeroinitializer, align 4, !dbg !16
 @"\01?typedef_arr@@3SDHD" = constant [4 x i32] zeroinitializer, align 4, !dbg !18
 
@@ -181,18 +181,17 @@ target triple = "i686-pc-windows-msvc18.0.31101"
 define void @"\01?foo@@YAXH at Z"(i32 %x) #0 !dbg !35 {
 entry:
   %x.addr = alloca i32, align 4
-  %saved_stack = alloca i8*, align 4
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !38, metadata !39), !dbg !40
-  %0 = load i32, i32* %x.addr, align 4, !dbg !41
-  %1 = call i8* @llvm.stacksave(), !dbg !42
-  store i8* %1, i8** %saved_stack, align 4, !dbg !42
+  %saved_stack = alloca ptr, align 4
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !38, metadata !39), !dbg !40
+  %0 = load i32, ptr %x.addr, align 4, !dbg !41
+  %1 = call ptr @llvm.stacksave(), !dbg !42
+  store ptr %1, ptr %saved_stack, align 4, !dbg !42
   %vla = alloca i32, i32 %0, align 4, !dbg !42
-  call void @llvm.dbg.declare(metadata i32* %vla, metadata !43, metadata !47), !dbg !48
-  %arrayidx = getelementptr inbounds i32, i32* %vla, i32 0, !dbg !49
-  store i32 0, i32* %arrayidx, align 4, !dbg !50
-  %2 = load i8*, i8** %saved_stack, align 4, !dbg !51
-  call void @llvm.stackrestore(i8* %2), !dbg !51
+  call void @llvm.dbg.declare(metadata ptr %vla, metadata !43, metadata !47), !dbg !48
+  store i32 0, ptr %vla, align 4, !dbg !50
+  %2 = load ptr, ptr %saved_stack, align 4, !dbg !51
+  call void @llvm.stackrestore(ptr %2), !dbg !51
   ret void, !dbg !51
 }
 
@@ -200,10 +199,10 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind
-declare i8* @llvm.stacksave() #0
+declare ptr @llvm.stacksave() #0
 
 ; Function Attrs: nounwind
-declare void @llvm.stackrestore(i8*) #0
+declare void @llvm.stackrestore(ptr) #0
 
 attributes #0 = { nounwind }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/COFF/types-array.ll b/llvm/test/DebugInfo/COFF/types-array.ll
index 1309328f5ebe8..07828c3406fec 100644
--- a/llvm/test/DebugInfo/COFF/types-array.ll
+++ b/llvm/test/DebugInfo/COFF/types-array.ll
@@ -91,13 +91,10 @@ target triple = "i686-pc-windows-msvc19.0.23918"
 define void @"\01?f@@YAXXZ"() #0 !dbg !6 {
 entry:
   %a = alloca [5 x i32], align 4
-  call void @llvm.dbg.declare(metadata [5 x i32]* %a, metadata !9, metadata !14), !dbg !15
-  %0 = bitcast [5 x i32]* %a to i8*, !dbg !15
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %0, i8* align 4 bitcast ([5 x i32]* @"\01?a@?1??f@@YAXXZ at 3PAHA" to i8*), i32 20, i1 false), !dbg !15
-  %arraydecay = getelementptr inbounds [5 x i32], [5 x i32]* %a, i32 0, i32 0, !dbg !16
-  %arrayidx = getelementptr inbounds [5 x i32], [5 x i32]* %a, i32 0, i32 0, !dbg !17
-  %1 = load i32, i32* %arrayidx, align 4, !dbg !17
-  call void (i32, ...) @"\01?usevars@@YAXHZZ"(i32 %1, i32* %arraydecay), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !9, metadata !14), !dbg !15
+  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %a, ptr align 4 @"\01?a@?1??f@@YAXXZ at 3PAHA", i32 20, i1 false), !dbg !15
+  %0 = load i32, ptr %a, align 4, !dbg !17
+  call void (i32, ...) @"\01?usevars@@YAXHZZ"(i32 %0, ptr %a), !dbg !18
   ret void, !dbg !19
 }
 
@@ -105,7 +102,7 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) #2
+declare void @llvm.memcpy.p0.p0.i32(ptr nocapture, ptr nocapture readonly, i32, i1) #2
 
 declare void @"\01?usevars@@YAXHZZ"(i32, ...) #3
 

diff  --git a/llvm/test/DebugInfo/COFF/types-calling-conv.ll b/llvm/test/DebugInfo/COFF/types-calling-conv.ll
index 9488906070e6e..7e51890a67e17 100644
--- a/llvm/test/DebugInfo/COFF/types-calling-conv.ll
+++ b/llvm/test/DebugInfo/COFF/types-calling-conv.ll
@@ -175,9 +175,9 @@ target triple = "i386-pc-windows-msvc19.0.23918"
 %struct.A = type { i8 }
 
 ; Function Attrs: nounwind readnone
-define x86_thiscallcc void @"\01?thiscallcc at A@@QAEXXZ"(%struct.A* nocapture %this) #0 align 2 !dbg !6 {
+define x86_thiscallcc void @"\01?thiscallcc at A@@QAEXXZ"(ptr nocapture %this) #0 align 2 !dbg !6 {
 entry:
-  tail call void @llvm.dbg.value(metadata %struct.A* %this, metadata !14, metadata !16), !dbg !17
+  tail call void @llvm.dbg.value(metadata ptr %this, metadata !14, metadata !16), !dbg !17
   ret void, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/types-integer-old.ll b/llvm/test/DebugInfo/COFF/types-integer-old.ll
index ce0cce9cda933..2ed36662a804b 100644
--- a/llvm/test/DebugInfo/COFF/types-integer-old.ll
+++ b/llvm/test/DebugInfo/COFF/types-integer-old.ll
@@ -31,12 +31,12 @@ define dso_local void @"?f@@YAXXZ"() #0 !dbg !8 {
 entry:
   %l1 = alloca i32, align 4
   %l2 = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %l1, metadata !13, metadata !DIExpression()), !dbg !15
-  store i32 0, i32* %l1, align 4, !dbg !15
-  call void @llvm.dbg.declare(metadata i32* %l2, metadata !16, metadata !DIExpression()), !dbg !18
-  store i32 0, i32* %l2, align 4, !dbg !18
-  %0 = load i32, i32* %l2, align 4, !dbg !19
-  %1 = load i32, i32* %l1, align 4, !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %l1, metadata !13, metadata !DIExpression()), !dbg !15
+  store i32 0, ptr %l1, align 4, !dbg !15
+  call void @llvm.dbg.declare(metadata ptr %l2, metadata !16, metadata !DIExpression()), !dbg !18
+  store i32 0, ptr %l2, align 4, !dbg !18
+  %0 = load i32, ptr %l2, align 4, !dbg !19
+  %1 = load i32, ptr %l1, align 4, !dbg !19
   call void (i32, ...) @"?usevars@@YAXJZZ"(i32 %1, i32 %0), !dbg !19
   ret void, !dbg !20
 }

diff  --git a/llvm/test/DebugInfo/COFF/types-method-ref-qualifiers.ll b/llvm/test/DebugInfo/COFF/types-method-ref-qualifiers.ll
index bfb67353f9ba8..b7114b87ae5e0 100644
--- a/llvm/test/DebugInfo/COFF/types-method-ref-qualifiers.ll
+++ b/llvm/test/DebugInfo/COFF/types-method-ref-qualifiers.ll
@@ -29,11 +29,11 @@ target triple = "x86_64-pc-windows-msvc19.15.26732"
 ; Function Attrs: noinline nounwind optnone uwtable
 define dso_local void @"?foo@@YAXXZ"() #0 !dbg !10 {
 entry:
-  %GenericPtr = alloca %struct.A*, align 8
+  %GenericPtr = alloca ptr, align 8
   %a = alloca %struct.A, align 1
-  call void @llvm.dbg.declare(metadata %struct.A** %GenericPtr, metadata !13, metadata !DIExpression()), !dbg !28
-  store %struct.A* null, %struct.A** %GenericPtr, align 8, !dbg !28
-  call void @llvm.dbg.declare(metadata %struct.A* %a, metadata !29, metadata !DIExpression()), !dbg !30
+  call void @llvm.dbg.declare(metadata ptr %GenericPtr, metadata !13, metadata !DIExpression()), !dbg !28
+  store ptr null, ptr %GenericPtr, align 8, !dbg !28
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !29, metadata !DIExpression()), !dbg !30
   ret void, !dbg !31
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/types-non-virtual-methods.ll b/llvm/test/DebugInfo/COFF/types-non-virtual-methods.ll
index bc789d5e70ca9..c8e602c363703 100644
--- a/llvm/test/DebugInfo/COFF/types-non-virtual-methods.ll
+++ b/llvm/test/DebugInfo/COFF/types-non-virtual-methods.ll
@@ -257,8 +257,8 @@ define void @"\01?foo@@YAXXZ"() #0 !dbg !6 {
 entry:
   %a = alloca %struct.A, align 1
   %b = alloca %class.B, align 1
-  call void @llvm.dbg.declare(metadata %struct.A* %a, metadata !9, metadata !19), !dbg !20
-  call void @llvm.dbg.declare(metadata %class.B* %b, metadata !21, metadata !19), !dbg !36
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !9, metadata !19), !dbg !20
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !21, metadata !19), !dbg !36
   ret void, !dbg !37
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/types-ptr-to-member.ll b/llvm/test/DebugInfo/COFF/types-ptr-to-member.ll
index d565fee2114eb..7d7f54fd07eb8 100644
--- a/llvm/test/DebugInfo/COFF/types-ptr-to-member.ll
+++ b/llvm/test/DebugInfo/COFF/types-ptr-to-member.ll
@@ -179,12 +179,12 @@ target triple = "x86_64-pc-windows-msvc19.0.23918"
 @"\01?pmd_b@@3PEQC@@HEQ1@" = global i32 -1, align 8, !dbg !6
 @"\01?pmd_c@@3PEQD@@HEQ1@" = global { i32, i32 } { i32 0, i32 -1 }, align 8, !dbg !21
 @"\01?pmd_d@@3PEQE@@HEQ1@" = global { i32, i32, i32 } { i32 0, i32 0, i32 -1 }, align 8, !dbg !25
-@"\01?pmf_a@@3P8A@@EAAXXZEQ1@" = global i8* null, align 8, !dbg !29
-@"\01?pmf_b@@3P8C@@EAAXXZEQ1@" = global { i8*, i32 } zeroinitializer, align 8, !dbg !35
-@"\01?pmf_c@@3P8D@@EAAXXZEQ1@" = global { i8*, i32, i32 } zeroinitializer, align 8, !dbg !41
-@"\01?pmf_d@@3P8E@@EAAXXZEQ1@" = global { i8*, i32, i32, i32 } zeroinitializer, align 8, !dbg !47
-@"\01?ppmd@@3PEAPEQIncomplete@@HEA" = global %0* null, align 8, !dbg !53
-@"\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA" = global %1* null, align 8, !dbg !58
+@"\01?pmf_a@@3P8A@@EAAXXZEQ1@" = global ptr null, align 8, !dbg !29
+@"\01?pmf_b@@3P8C@@EAAXXZEQ1@" = global { ptr, i32 } zeroinitializer, align 8, !dbg !35
+@"\01?pmf_c@@3P8D@@EAAXXZEQ1@" = global { ptr, i32, i32 } zeroinitializer, align 8, !dbg !41
+@"\01?pmf_d@@3P8E@@EAAXXZEQ1@" = global { ptr, i32, i32, i32 } zeroinitializer, align 8, !dbg !47
+@"\01?ppmd@@3PEAPEQIncomplete@@HEA" = global ptr null, align 8, !dbg !53
+@"\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA" = global ptr null, align 8, !dbg !58
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!66, !67, !68}

diff  --git a/llvm/test/DebugInfo/COFF/types-recursive-struct.ll b/llvm/test/DebugInfo/COFF/types-recursive-struct.ll
index d8697e45fa871..bd4faf0d06aec 100644
--- a/llvm/test/DebugInfo/COFF/types-recursive-struct.ll
+++ b/llvm/test/DebugInfo/COFF/types-recursive-struct.ll
@@ -141,7 +141,7 @@ source_filename = "t.cpp"
 target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-windows-msvc19.0.23918"
 
-%struct.A = type { %struct.B* }
+%struct.A = type { ptr }
 %struct.B = type { %struct.A }
 
 ; Function Attrs: nounwind uwtable
@@ -149,8 +149,8 @@ define void @"\01?f@@YAXXZ"() #0 !dbg !7 {
 entry:
   %a = alloca %struct.A, align 8
   %b = alloca %struct.B, align 8
-  call void @llvm.dbg.declare(metadata %struct.A* %a, metadata !10, metadata !18), !dbg !19
-  call void @llvm.dbg.declare(metadata %struct.B* %b, metadata !20, metadata !18), !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !10, metadata !18), !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !20, metadata !18), !dbg !21
   ret void, !dbg !22
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/types-recursive-unnamed.ll b/llvm/test/DebugInfo/COFF/types-recursive-unnamed.ll
index 3f0a584b0e34d..36272530ca167 100644
--- a/llvm/test/DebugInfo/COFF/types-recursive-unnamed.ll
+++ b/llvm/test/DebugInfo/COFF/types-recursive-unnamed.ll
@@ -31,12 +31,12 @@ target triple = "x86_64-pc-windows-msvc19.0.24210"
 %struct.anon = type { i8 }
 
 ; Function Attrs: noinline nounwind uwtable
-define void @"\01?anchor at named_struct@@QEAAXXZ"(%struct.named_struct* %this) #0 align 2 !dbg !7 {
+define void @"\01?anchor at named_struct@@QEAAXXZ"(ptr %this) #0 align 2 !dbg !7 {
 entry:
-  %this.addr = alloca %struct.named_struct*, align 8
-  store %struct.named_struct* %this, %struct.named_struct** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.named_struct** %this.addr, metadata !21, metadata !23), !dbg !24
-  %this1 = load %struct.named_struct*, %struct.named_struct** %this.addr, align 8
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !21, metadata !23), !dbg !24
+  %this1 = load ptr, ptr %this.addr, align 8
   ret void, !dbg !25
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/types-std-nullptr-t.ll b/llvm/test/DebugInfo/COFF/types-std-nullptr-t.ll
index 090e57dba3d87..2d96923d51d04 100644
--- a/llvm/test/DebugInfo/COFF/types-std-nullptr-t.ll
+++ b/llvm/test/DebugInfo/COFF/types-std-nullptr-t.ll
@@ -22,7 +22,7 @@ source_filename = "foo.cpp"
 target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-windows-msvc19.15.26730"
 
-@"?NullPtr@@3$$TA" = dso_local global i8* null, align 8, !dbg !0
+@"?NullPtr@@3$$TA" = dso_local global ptr null, align 8, !dbg !0
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!7, !8, !9, !10}

diff  --git a/llvm/test/DebugInfo/COFF/udts-fixpoint.ll b/llvm/test/DebugInfo/COFF/udts-fixpoint.ll
index 7a441f1ff1281..c070135edfda8 100644
--- a/llvm/test/DebugInfo/COFF/udts-fixpoint.ll
+++ b/llvm/test/DebugInfo/COFF/udts-fixpoint.ll
@@ -35,13 +35,13 @@ target triple = "x86_64-pc-windows-msvc19.16.0"
 %class.c = type { { i32, i32, i32 } }
 
 ; Function Attrs: noinline nounwind optnone
-define dso_local %class.c* @"??0c@@AEAA at XZ"(%class.c* returned %this) unnamed_addr #0 align 2 !dbg !7 {
+define dso_local ptr @"??0c@@AEAA at XZ"(ptr returned %this) unnamed_addr #0 align 2 !dbg !7 {
 entry:
-  %this.addr = alloca %class.c*, align 8
-  store %class.c* %this, %class.c** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.c** %this.addr, metadata !20, metadata !DIExpression()), !dbg !22
-  %this1 = load %class.c*, %class.c** %this.addr, align 8
-  ret %class.c* %this1, !dbg !23
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !20, metadata !DIExpression()), !dbg !22
+  %this1 = load ptr, ptr %this.addr, align 8
+  ret ptr %this1, !dbg !23
 }
 
 ; Function Attrs: nounwind readnone speculatable willreturn

diff  --git a/llvm/test/DebugInfo/COFF/udts.ll b/llvm/test/DebugInfo/COFF/udts.ll
index e13bf7c1dc59f..86d2c7a6c0798 100644
--- a/llvm/test/DebugInfo/COFF/udts.ll
+++ b/llvm/test/DebugInfo/COFF/udts.ll
@@ -103,7 +103,7 @@ target triple = "x86_64-pc-windows-msvc19.11.25506"
 ; Function Attrs: noinline nounwind optnone uwtable
 define void @"\01?f@@YAXXZ"() #0 !dbg !31 {
   %1 = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %1, metadata !34, metadata !DIExpression()), !dbg !36
+  call void @llvm.dbg.declare(metadata ptr %1, metadata !34, metadata !DIExpression()), !dbg !36
   ret void, !dbg !37
 }
 
@@ -111,20 +111,17 @@ define void @"\01?f@@YAXXZ"() #0 !dbg !31 {
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define float @"\01?g@@YAMPEAUS@@@Z"(%struct.S*) #0 !dbg !38 {
-  %2 = alloca %struct.S*, align 8
+define float @"\01?g@@YAMPEAUS@@@Z"(ptr) #0 !dbg !38 {
+  %2 = alloca ptr, align 8
   %3 = alloca %union.pun, align 4
-  store %struct.S* %0, %struct.S** %2, align 8
-  call void @llvm.dbg.declare(metadata %struct.S** %2, metadata !43, metadata !DIExpression()), !dbg !44
-  call void @llvm.dbg.declare(metadata %union.pun* %3, metadata !45, metadata !DIExpression()), !dbg !50
-  %4 = load %struct.S*, %struct.S** %2, align 8, !dbg !51
-  %5 = getelementptr inbounds %struct.S, %struct.S* %4, i32 0, i32 0, !dbg !52
-  %6 = load i32, i32* %5, align 4, !dbg !52
-  %7 = bitcast %union.pun* %3 to i32*, !dbg !53
-  store i32 %6, i32* %7, align 4, !dbg !54
-  %8 = bitcast %union.pun* %3 to float*, !dbg !55
-  %9 = load float, float* %8, align 4, !dbg !55
-  ret float %9, !dbg !56
+  store ptr %0, ptr %2, align 8
+  call void @llvm.dbg.declare(metadata ptr %2, metadata !43, metadata !DIExpression()), !dbg !44
+  call void @llvm.dbg.declare(metadata ptr %3, metadata !45, metadata !DIExpression()), !dbg !50
+  %4 = load ptr, ptr %2, align 8, !dbg !51
+  %5 = load i32, ptr %4, align 4, !dbg !52
+  store i32 %5, ptr %3, align 4, !dbg !54
+  %6 = load float, ptr %3, align 4, !dbg !55
+  ret float %6, !dbg !56
 }
 
 attributes #0 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }

diff  --git a/llvm/test/DebugInfo/COFF/unnamed.ll b/llvm/test/DebugInfo/COFF/unnamed.ll
index 103eef34815eb..06ef86a032fa6 100644
--- a/llvm/test/DebugInfo/COFF/unnamed.ll
+++ b/llvm/test/DebugInfo/COFF/unnamed.ll
@@ -140,16 +140,13 @@ define i32 @main() #0 !dbg !7 {
 entry:
   %retval = alloca i32, align 4
   %local = alloca %struct.named_struct, align 4
-  store i32 0, i32* %retval, align 4
-  call void @llvm.dbg.declare(metadata %struct.named_struct* %local, metadata !11, metadata !25), !dbg !26
-  %id = getelementptr inbounds %struct.named_struct, %struct.named_struct* %local, i32 0, i32 0, !dbg !27
-  store i32 1, i32* %id, align 4, !dbg !28
-  %unnamed_union = getelementptr inbounds %struct.named_struct, %struct.named_struct* %local, i32 0, i32 1, !dbg !29
-  %m1 = bitcast %union.anon* %unnamed_union to i32*, !dbg !30
-  store i32 65, i32* %m1, align 4, !dbg !31
-  %unnamed_struct = getelementptr inbounds %struct.named_struct, %struct.named_struct* %local, i32 0, i32 2, !dbg !32
-  %m3 = getelementptr inbounds %struct.anon, %struct.anon* %unnamed_struct, i32 0, i32 0, !dbg !33
-  store i8 66, i8* %m3, align 4, !dbg !34
+  store i32 0, ptr %retval, align 4
+  call void @llvm.dbg.declare(metadata ptr %local, metadata !11, metadata !25), !dbg !26
+  store i32 1, ptr %local, align 4, !dbg !28
+  %unnamed_union = getelementptr inbounds %struct.named_struct, ptr %local, i32 0, i32 1, !dbg !29
+  store i32 65, ptr %unnamed_union, align 4, !dbg !31
+  %unnamed_struct = getelementptr inbounds %struct.named_struct, ptr %local, i32 0, i32 2, !dbg !32
+  store i8 66, ptr %unnamed_struct, align 4, !dbg !34
   ret i32 0, !dbg !35
 }
 

diff  --git a/llvm/test/DebugInfo/COFF/vframe-csr.ll b/llvm/test/DebugInfo/COFF/vframe-csr.ll
index 07092df568e4f..866b5e63e8871 100644
--- a/llvm/test/DebugInfo/COFF/vframe-csr.ll
+++ b/llvm/test/DebugInfo/COFF/vframe-csr.ll
@@ -109,16 +109,14 @@ define dso_local i32 @realign_with_csrs() local_unnamed_addr #0 !dbg !8 {
 entry:
   %a = alloca i32, align 4
   %force_alignment = alloca double, align 8
-  %0 = bitcast i32* %a to i8*, !dbg !22
-  call void @llvm.dbg.declare(metadata i32* %a, metadata !14, metadata !DIExpression()), !dbg !22
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !14, metadata !DIExpression()), !dbg !22
   %csr1 = tail call i32 @getval() #4
   %call = tail call i32 @getval() #4, !dbg !22
-  store i32 %call, i32* %a, align 4, !dbg !22, !tbaa !17
-  %1 = bitcast double* %force_alignment to i8*, !dbg !23
-  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %1) #4, !dbg !23
-  call void @llvm.dbg.declare(metadata double* %force_alignment, metadata !15, metadata !DIExpression()), !dbg !23
-  store double 4.200000e-01, double* %force_alignment, align 8, !dbg !23, !tbaa !24
-  call void @usevals(i32* nonnull %a, i32* nonnull %a, double* nonnull %force_alignment) #4, !dbg !26
+  store i32 %call, ptr %a, align 4, !dbg !22, !tbaa !17
+  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %force_alignment) #4, !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %force_alignment, metadata !15, metadata !DIExpression()), !dbg !23
+  store double 4.200000e-01, ptr %force_alignment, align 8, !dbg !23, !tbaa !24
+  call void @usevals(ptr nonnull %a, ptr nonnull %a, ptr nonnull %force_alignment) #4, !dbg !26
   call void @usecsrs(i32 %csr1, i32 %csr1)
   ret i32 0
 }
@@ -127,16 +125,16 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2
 
 declare dso_local i32 @getval() local_unnamed_addr #3
 
-declare dso_local void @usevals(i32*, i32*, double*) local_unnamed_addr #3
+declare dso_local void @usevals(ptr, ptr, ptr) local_unnamed_addr #3
 
 declare dso_local void @usecsrs(i32, i32) local_unnamed_addr #3
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2
 
 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pentium4" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone speculatable }

diff  --git a/llvm/test/DebugInfo/COFF/vframe-fpo.ll b/llvm/test/DebugInfo/COFF/vframe-fpo.ll
index 2e3d8754968ae..e8ad8bd84d442 100644
--- a/llvm/test/DebugInfo/COFF/vframe-fpo.ll
+++ b/llvm/test/DebugInfo/COFF/vframe-fpo.ll
@@ -187,45 +187,42 @@ entry:
   %a = alloca i32, align 4
   %b = alloca i32, align 4
   %c = alloca i32, align 4
-  %0 = bitcast i32* %a to i8*, !dbg !16
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0) #4, !dbg !16
-  call void @llvm.dbg.declare(metadata i32* %a, metadata !13, metadata !DIExpression()), !dbg !16
-  store i32 1, i32* %a, align 4, !dbg !16, !tbaa !17
-  %1 = bitcast i32* %b to i8*, !dbg !21
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %1) #4, !dbg !21
-  call void @llvm.dbg.declare(metadata i32* %b, metadata !14, metadata !DIExpression()), !dbg !21
-  store i32 2, i32* %b, align 4, !dbg !21, !tbaa !17
-  %2 = bitcast i32* %c to i8*, !dbg !22
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %2) #4, !dbg !22
-  call void @llvm.dbg.declare(metadata i32* %c, metadata !15, metadata !DIExpression()), !dbg !22
-  store i32 3, i32* %c, align 4, !dbg !22, !tbaa !17
-  call void @"?f@@YAXAAH0 at Z"(i32* nonnull dereferenceable(4) %a, i32* nonnull dereferenceable(4) %b) #5, !dbg !23
-  call void @"?g@@YAXAAH00 at Z"(i32* nonnull dereferenceable(4) %a, i32* nonnull dereferenceable(4) %b, i32* nonnull dereferenceable(4) %c) #5, !dbg !24
-  %3 = load i32, i32* %a, align 4, !dbg !25, !tbaa !17
-  %4 = load i32, i32* %b, align 4, !dbg !25, !tbaa !17
-  %add = add nsw i32 %4, %3, !dbg !25
-  %5 = load i32, i32* %c, align 4, !dbg !25, !tbaa !17
-  %add1 = add nsw i32 %add, %5, !dbg !25
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %2) #4, !dbg !26
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %1) #4, !dbg !26
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0) #4, !dbg !26
+  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %a) #4, !dbg !16
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !13, metadata !DIExpression()), !dbg !16
+  store i32 1, ptr %a, align 4, !dbg !16, !tbaa !17
+  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %b) #4, !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !14, metadata !DIExpression()), !dbg !21
+  store i32 2, ptr %b, align 4, !dbg !21, !tbaa !17
+  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %c) #4, !dbg !22
+  call void @llvm.dbg.declare(metadata ptr %c, metadata !15, metadata !DIExpression()), !dbg !22
+  store i32 3, ptr %c, align 4, !dbg !22, !tbaa !17
+  call void @"?f@@YAXAAH0 at Z"(ptr nonnull dereferenceable(4) %a, ptr nonnull dereferenceable(4) %b) #5, !dbg !23
+  call void @"?g@@YAXAAH00 at Z"(ptr nonnull dereferenceable(4) %a, ptr nonnull dereferenceable(4) %b, ptr nonnull dereferenceable(4) %c) #5, !dbg !24
+  %0 = load i32, ptr %a, align 4, !dbg !25, !tbaa !17
+  %1 = load i32, ptr %b, align 4, !dbg !25, !tbaa !17
+  %add = add nsw i32 %1, %0, !dbg !25
+  %2 = load i32, ptr %c, align 4, !dbg !25, !tbaa !17
+  %add1 = add nsw i32 %add, %2, !dbg !25
+  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %c) #4, !dbg !26
+  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %b) #4, !dbg !26
+  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %a) #4, !dbg !26
   ret i32 %add1, !dbg !25
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #2
 
 ; Function Attrs: optsize
-declare dso_local void @"?f@@YAXAAH0 at Z"(i32* dereferenceable(4), i32* dereferenceable(4)) local_unnamed_addr #3
+declare dso_local void @"?f@@YAXAAH0 at Z"(ptr dereferenceable(4), ptr dereferenceable(4)) local_unnamed_addr #3
 
 ; Function Attrs: optsize
-declare dso_local void @"?g@@YAXAAH00 at Z"(i32* dereferenceable(4), i32* dereferenceable(4), i32* dereferenceable(4)) local_unnamed_addr #3
+declare dso_local void @"?g@@YAXAAH00 at Z"(ptr dereferenceable(4), ptr dereferenceable(4), ptr dereferenceable(4)) local_unnamed_addr #3
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1
 
 attributes #0 = { norecurse optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pentium4" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { argmemonly nounwind }

diff  --git a/llvm/test/DebugInfo/COFF/virtual-method-kinds.ll b/llvm/test/DebugInfo/COFF/virtual-method-kinds.ll
index b1d6d02c583d1..5180bae9199a1 100644
--- a/llvm/test/DebugInfo/COFF/virtual-method-kinds.ll
+++ b/llvm/test/DebugInfo/COFF/virtual-method-kinds.ll
@@ -74,9 +74,9 @@ target triple = "x86_64-pc-windows-msvc19.0.23918"
 
 %struct.C = type { %struct.B }
 %struct.B = type { %struct.A }
-%struct.A = type { i32 (...)** }
+%struct.A = type { ptr }
 %rtti.CompleteObjectLocator = type { i32, i32, i32, i32, i32, i32 }
-%rtti.TypeDescriptor7 = type { i8**, i8*, [8 x i8] }
+%rtti.TypeDescriptor7 = type { ptr, ptr, [8 x i8] }
 %rtti.ClassHierarchyDescriptor = type { i32, i32, i32, i32 }
 %rtti.BaseClassDescriptor = type { i32, i32, i32, i32, i32, i32, i32 }
 
@@ -122,99 +122,93 @@ $"\01??_7A@@6B@" = comdat largest
 
 $"\01??_R4A@@6B@" = comdat any
 
-@"\01?p@@3PEAUC@@EA" = global %struct.C* null, align 8, !dbg !0
- at 0 = private unnamed_addr constant [3 x i8*] [i8* bitcast (%rtti.CompleteObjectLocator* @"\01??_R4C@@6B@" to i8*), i8* bitcast (void (%struct.C*)* @"\01?f at C@@UEAAXXZ" to i8*), i8* bitcast (void (%struct.C*)* @"\01?g at C@@UEAAXXZ" to i8*)], comdat($"\01??_7C@@6B@")
-@"\01??_R4C@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.TypeDescriptor7* @"\01??_R0?AUC@@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.ClassHierarchyDescriptor* @"\01??_R3C@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.CompleteObjectLocator* @"\01??_R4C@@6B@" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
-@"\01??_7type_info@@6B@" = external constant i8*
-@"\01??_R0?AUC@@@8" = linkonce_odr global %rtti.TypeDescriptor7 { i8** @"\01??_7type_info@@6B@", i8* null, [8 x i8] c".?AUC@@\00" }, comdat
+@"\01?p@@3PEAUC@@EA" = global ptr null, align 8, !dbg !0
+ at 0 = private unnamed_addr constant [3 x ptr] [ptr @"\01??_R4C@@6B@", ptr @"\01?f at C@@UEAAXXZ", ptr @"\01?g at C@@UEAAXXZ"], comdat($"\01??_7C@@6B@")
+@"\01??_R4C@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R0?AUC@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R3C@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R4C@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"\01??_7type_info@@6B@" = external constant ptr
+@"\01??_R0?AUC@@@8" = linkonce_odr global %rtti.TypeDescriptor7 { ptr @"\01??_7type_info@@6B@", ptr null, [8 x i8] c".?AUC@@\00" }, comdat
 @__ImageBase = external constant i8
-@"\01??_R3C@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 3, i32 trunc (i64 sub nuw nsw (i64 ptrtoint ([4 x i32]* @"\01??_R2C@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
-@"\01??_R2C@@8" = linkonce_odr constant [4 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.BaseClassDescriptor* @"\01??_R1A@?0A at EA@C@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.BaseClassDescriptor* @"\01??_R1A@?0A at EA@B@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.BaseClassDescriptor* @"\01??_R1A@?0A at EA@A@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 0], comdat
-@"\01??_R1A@?0A at EA@C@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.TypeDescriptor7* @"\01??_R0?AUC@@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 2, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.ClassHierarchyDescriptor* @"\01??_R3C@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
-@"\01??_R1A@?0A at EA@B@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.TypeDescriptor7* @"\01??_R0?AUB@@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 1, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.ClassHierarchyDescriptor* @"\01??_R3B@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
-@"\01??_R0?AUB@@@8" = linkonce_odr global %rtti.TypeDescriptor7 { i8** @"\01??_7type_info@@6B@", i8* null, [8 x i8] c".?AUB@@\00" }, comdat
-@"\01??_R3B@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 2, i32 trunc (i64 sub nuw nsw (i64 ptrtoint ([3 x i32]* @"\01??_R2B@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
-@"\01??_R2B@@8" = linkonce_odr constant [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.BaseClassDescriptor* @"\01??_R1A@?0A at EA@B@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.BaseClassDescriptor* @"\01??_R1A@?0A at EA@A@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 0], comdat
-@"\01??_R1A@?0A at EA@A@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.TypeDescriptor7* @"\01??_R0?AUA@@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 0, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.ClassHierarchyDescriptor* @"\01??_R3A@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
-@"\01??_R0?AUA@@@8" = linkonce_odr global %rtti.TypeDescriptor7 { i8** @"\01??_7type_info@@6B@", i8* null, [8 x i8] c".?AUA@@\00" }, comdat
-@"\01??_R3A@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 1, i32 trunc (i64 sub nuw nsw (i64 ptrtoint ([2 x i32]* @"\01??_R2A@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
-@"\01??_R2A@@8" = linkonce_odr constant [2 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.BaseClassDescriptor* @"\01??_R1A@?0A at EA@A@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 0], comdat
- at 1 = private unnamed_addr constant [3 x i8*] [i8* bitcast (%rtti.CompleteObjectLocator* @"\01??_R4B@@6B@" to i8*), i8* bitcast (void ()* @_purecall to i8*), i8* bitcast (void (%struct.B*)* @"\01?g at B@@UEAAXXZ" to i8*)], comdat($"\01??_7B@@6B@")
-@"\01??_R4B@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.TypeDescriptor7* @"\01??_R0?AUB@@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.ClassHierarchyDescriptor* @"\01??_R3B@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.CompleteObjectLocator* @"\01??_R4B@@6B@" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
- at 2 = private unnamed_addr constant [3 x i8*] [i8* bitcast (%rtti.CompleteObjectLocator* @"\01??_R4A@@6B@" to i8*), i8* bitcast (void (%struct.A*)* @"\01?f at A@@UEAAXXZ" to i8*), i8* bitcast (void ()* @_purecall to i8*)], comdat($"\01??_7A@@6B@")
-@"\01??_R4A@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.TypeDescriptor7* @"\01??_R0?AUA@@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.ClassHierarchyDescriptor* @"\01??_R3A@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.CompleteObjectLocator* @"\01??_R4A@@6B@" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_t.cpp, i8* null }]
-
-@"\01??_7C@@6B@" = unnamed_addr alias i8*, getelementptr inbounds ([3 x i8*], [3 x i8*]* @0, i32 0, i32 1)
-@"\01??_7B@@6B@" = unnamed_addr alias i8*, getelementptr inbounds ([3 x i8*], [3 x i8*]* @1, i32 0, i32 1)
-@"\01??_7A@@6B@" = unnamed_addr alias i8*, getelementptr inbounds ([3 x i8*], [3 x i8*]* @2, i32 0, i32 1)
+@"\01??_R3C@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 3, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R2C@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"\01??_R2C@@8" = linkonce_odr constant [4 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R1A@?0A at EA@C@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R1A@?0A at EA@B@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R1A@?0A at EA@A@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+@"\01??_R1A@?0A at EA@C@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R0?AUC@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 2, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R3C@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"\01??_R1A@?0A at EA@B@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R0?AUB@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 1, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R3B@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"\01??_R0?AUB@@@8" = linkonce_odr global %rtti.TypeDescriptor7 { ptr @"\01??_7type_info@@6B@", ptr null, [8 x i8] c".?AUB@@\00" }, comdat
+@"\01??_R3B@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 2, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R2B@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"\01??_R2B@@8" = linkonce_odr constant [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R1A@?0A at EA@B@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R1A@?0A at EA@A@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+@"\01??_R1A@?0A at EA@A@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R0?AUA@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R3A@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"\01??_R0?AUA@@@8" = linkonce_odr global %rtti.TypeDescriptor7 { ptr @"\01??_7type_info@@6B@", ptr null, [8 x i8] c".?AUA@@\00" }, comdat
+@"\01??_R3A@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 1, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R2A@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"\01??_R2A@@8" = linkonce_odr constant [2 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R1A@?0A at EA@A@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+ at 1 = private unnamed_addr constant [3 x ptr] [ptr @"\01??_R4B@@6B@", ptr @_purecall, ptr @"\01?g at B@@UEAAXXZ"], comdat($"\01??_7B@@6B@")
+@"\01??_R4B@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R0?AUB@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R3B@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R4B@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+ at 2 = private unnamed_addr constant [3 x ptr] [ptr @"\01??_R4A@@6B@", ptr @"\01?f at A@@UEAAXXZ", ptr @_purecall], comdat($"\01??_7A@@6B@")
+@"\01??_R4A@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R0?AUA@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R3A@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"\01??_R4A@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_t.cpp, ptr null }]
+
+@"\01??_7C@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ([3 x ptr], ptr @0, i32 0, i32 1)
+@"\01??_7B@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ([3 x ptr], ptr @1, i32 0, i32 1)
+@"\01??_7A@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ([3 x ptr], ptr @2, i32 0, i32 1)
 
 ; Function Attrs: uwtable
 define internal void @"\01??__Ep@@YAXXZ"() #0 !dbg !40 {
 entry:
-  %call = call i8* @"\01??2 at YAPEAX_K@Z"(i64 8) #5, !dbg !43
-  %0 = bitcast i8* %call to %struct.C*, !dbg !43
-  %call1 = call %struct.C* @"\01??0C@@QEAA at XZ"(%struct.C* %0) #6, !dbg !44
-  store %struct.C* %0, %struct.C** @"\01?p@@3PEAUC@@EA", align 8, !dbg !43
+  %call = call ptr @"\01??2 at YAPEAX_K@Z"(i64 8) #5, !dbg !43
+  %call1 = call ptr @"\01??0C@@QEAA at XZ"(ptr %call) #6, !dbg !44
+  store ptr %call, ptr @"\01?p@@3PEAUC@@EA", align 8, !dbg !43
   ret void, !dbg !44
 }
 
 ; Function Attrs: nobuiltin
-declare noalias i8* @"\01??2 at YAPEAX_K@Z"(i64) #1
+declare noalias ptr @"\01??2 at YAPEAX_K@Z"(i64) #1
 
 ; Function Attrs: inlinehint nounwind uwtable
 
-define linkonce_odr %struct.C* @"\01??0C@@QEAA at XZ"(%struct.C* returned %this) unnamed_addr #2 comdat align 2 !dbg !45 {
+define linkonce_odr ptr @"\01??0C@@QEAA at XZ"(ptr returned %this) unnamed_addr #2 comdat align 2 !dbg !45 {
 entry:
-  %this.addr = alloca %struct.C*, align 8
-  store %struct.C* %this, %struct.C** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.C** %this.addr, metadata !47, metadata !48), !dbg !49
-  %this1 = load %struct.C*, %struct.C** %this.addr, align 8
-  %0 = bitcast %struct.C* %this1 to %struct.B*, !dbg !50
-  %call = call %struct.B* @"\01??0B@@QEAA at XZ"(%struct.B* %0) #6, !dbg !50
-  %1 = bitcast %struct.C* %this1 to i32 (...)***, !dbg !50
-  store i32 (...)** bitcast (i8** @"\01??_7C@@6B@" to i32 (...)**), i32 (...)*** %1, align 8, !dbg !50
-  ret %struct.C* %this1, !dbg !50
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !47, metadata !48), !dbg !49
+  %this1 = load ptr, ptr %this.addr, align 8
+  %call = call ptr @"\01??0B@@QEAA at XZ"(ptr %this1) #6, !dbg !50
+  store ptr @"\01??_7C@@6B@", ptr %this1, align 8, !dbg !50
+  ret ptr %this1, !dbg !50
 }
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #3
 
 ; Function Attrs: inlinehint nounwind uwtable
-define linkonce_odr %struct.B* @"\01??0B@@QEAA at XZ"(%struct.B* returned %this) unnamed_addr #2 comdat align 2 !dbg !51 {
+define linkonce_odr ptr @"\01??0B@@QEAA at XZ"(ptr returned %this) unnamed_addr #2 comdat align 2 !dbg !51 {
 entry:
-  %this.addr = alloca %struct.B*, align 8
-  store %struct.B* %this, %struct.B** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.B** %this.addr, metadata !53, metadata !48), !dbg !55
-  %this1 = load %struct.B*, %struct.B** %this.addr, align 8
-  %0 = bitcast %struct.B* %this1 to %struct.A*, !dbg !56
-  %call = call %struct.A* @"\01??0A@@QEAA at XZ"(%struct.A* %0) #6, !dbg !56
-  %1 = bitcast %struct.B* %this1 to i32 (...)***, !dbg !56
-  store i32 (...)** bitcast (i8** @"\01??_7B@@6B@" to i32 (...)**), i32 (...)*** %1, align 8, !dbg !56
-  ret %struct.B* %this1, !dbg !56
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !53, metadata !48), !dbg !55
+  %this1 = load ptr, ptr %this.addr, align 8
+  %call = call ptr @"\01??0A@@QEAA at XZ"(ptr %this1) #6, !dbg !56
+  store ptr @"\01??_7B@@6B@", ptr %this1, align 8, !dbg !56
+  ret ptr %this1, !dbg !56
 }
 
-declare void @"\01?f at C@@UEAAXXZ"(%struct.C*) unnamed_addr #4
+declare void @"\01?f at C@@UEAAXXZ"(ptr) unnamed_addr #4
 
-declare void @"\01?g at C@@UEAAXXZ"(%struct.C*) unnamed_addr #4
+declare void @"\01?g at C@@UEAAXXZ"(ptr) unnamed_addr #4
 
 ; Function Attrs: inlinehint nounwind uwtable
-define linkonce_odr %struct.A* @"\01??0A@@QEAA at XZ"(%struct.A* returned %this) unnamed_addr #2 comdat align 2 !dbg !57 {
+define linkonce_odr ptr @"\01??0A@@QEAA at XZ"(ptr returned %this) unnamed_addr #2 comdat align 2 !dbg !57 {
 entry:
-  %this.addr = alloca %struct.A*, align 8
-  store %struct.A* %this, %struct.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.A** %this.addr, metadata !59, metadata !48), !dbg !61
-  %this1 = load %struct.A*, %struct.A** %this.addr, align 8
-  %0 = bitcast %struct.A* %this1 to i32 (...)***, !dbg !62
-  store i32 (...)** bitcast (i8** @"\01??_7A@@6B@" to i32 (...)**), i32 (...)*** %0, align 8, !dbg !62
-  ret %struct.A* %this1, !dbg !62
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !59, metadata !48), !dbg !61
+  %this1 = load ptr, ptr %this.addr, align 8
+  store ptr @"\01??_7A@@6B@", ptr %this1, align 8, !dbg !62
+  ret ptr %this1, !dbg !62
 }
 
 declare void @_purecall() unnamed_addr
 
-declare void @"\01?g at B@@UEAAXXZ"(%struct.B*) unnamed_addr #4
+declare void @"\01?g at B@@UEAAXXZ"(ptr) unnamed_addr #4
 
-declare void @"\01?f at A@@UEAAXXZ"(%struct.A*) unnamed_addr #4
+declare void @"\01?f at A@@UEAAXXZ"(ptr) unnamed_addr #4
 
 ; Function Attrs: uwtable
 define internal void @_GLOBAL__sub_I_t.cpp() #0 !dbg !63 {

diff  --git a/llvm/test/DebugInfo/COFF/vtable-optzn-array.ll b/llvm/test/DebugInfo/COFF/vtable-optzn-array.ll
index 4bc4d61203c1c..eb92d6c37b10c 100644
--- a/llvm/test/DebugInfo/COFF/vtable-optzn-array.ll
+++ b/llvm/test/DebugInfo/COFF/vtable-optzn-array.ll
@@ -37,32 +37,32 @@ target triple = "x86_64-pc-windows-msvc"
 
 %struct.GetFwdDecl = type { i8 }
 %struct.UseCompleteType = type { [1 x %struct.UnicodeString] }
-%struct.UnicodeString = type { i32 (...)** }
+%struct.UnicodeString = type { ptr }
 
 $"\01??_DUseCompleteType@@QEAA at XZ" = comdat any
 
 @"\01?force_fwd_decl@@3UGetFwdDecl@@A" = global %struct.GetFwdDecl zeroinitializer, align 1, !dbg !0
 @"\01?require_complete@@3UUseCompleteType@@A" = global %struct.UseCompleteType zeroinitializer, align 8, !dbg !6
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_t.cpp, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_t.cpp, ptr null }]
 
 ; Function Attrs: nounwind
 define internal void @"\01??__Erequire_complete@@YAXXZ"() #0 !dbg !27 {
 entry:
-  %call = call %struct.UseCompleteType* @"\01??0UseCompleteType@@QEAA at XZ"(%struct.UseCompleteType* @"\01?require_complete@@3UUseCompleteType@@A"), !dbg !30
-  %0 = call i32 @atexit(void ()* @"\01??__Frequire_complete@@YAXXZ") #2, !dbg !30
+  %call = call ptr @"\01??0UseCompleteType@@QEAA at XZ"(ptr @"\01?require_complete@@3UUseCompleteType@@A"), !dbg !30
+  %0 = call i32 @atexit(ptr @"\01??__Frequire_complete@@YAXXZ") #2, !dbg !30
   ret void, !dbg !30
 }
 
-declare %struct.UseCompleteType* @"\01??0UseCompleteType@@QEAA at XZ"(%struct.UseCompleteType* returned) unnamed_addr #1
+declare ptr @"\01??0UseCompleteType@@QEAA at XZ"(ptr returned) unnamed_addr #1
 
 ; Function Attrs: nounwind
-define linkonce_odr void @"\01??_DUseCompleteType@@QEAA at XZ"(%struct.UseCompleteType* %this) unnamed_addr #0 comdat align 2 !dbg !31 {
+define linkonce_odr void @"\01??_DUseCompleteType@@QEAA at XZ"(ptr %this) unnamed_addr #0 comdat align 2 !dbg !31 {
 entry:
-  %this.addr = alloca %struct.UseCompleteType*, align 8
-  store %struct.UseCompleteType* %this, %struct.UseCompleteType** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.UseCompleteType** %this.addr, metadata !32, metadata !34), !dbg !35
-  %this1 = load %struct.UseCompleteType*, %struct.UseCompleteType** %this.addr, align 8
-  call void @"\01??1UseCompleteType@@QEAA at XZ"(%struct.UseCompleteType* %this1), !dbg !36
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !32, metadata !34), !dbg !35
+  %this1 = load ptr, ptr %this.addr, align 8
+  call void @"\01??1UseCompleteType@@QEAA at XZ"(ptr %this1), !dbg !36
   ret void, !dbg !36
 }
 
@@ -70,17 +70,17 @@ entry:
 
 define internal void @"\01??__Frequire_complete@@YAXXZ"() #0 !dbg !37 {
 entry:
-  call void @"\01??_DUseCompleteType@@QEAA at XZ"(%struct.UseCompleteType* @"\01?require_complete@@3UUseCompleteType@@A"), !dbg !38
+  call void @"\01??_DUseCompleteType@@QEAA at XZ"(ptr @"\01?require_complete@@3UUseCompleteType@@A"), !dbg !38
   ret void, !dbg !39
 }
 
 ; Function Attrs: nounwind
-declare i32 @atexit(void ()*) #2
+declare i32 @atexit(ptr) #2
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #3
 
-declare void @"\01??1UseCompleteType@@QEAA at XZ"(%struct.UseCompleteType*) unnamed_addr #1
+declare void @"\01??1UseCompleteType@@QEAA at XZ"(ptr) unnamed_addr #1
 
 ; Function Attrs: nounwind
 define internal void @_GLOBAL__sub_I_t.cpp() #0 !dbg !41 {

diff  --git a/llvm/test/DebugInfo/COFF/x87-registers.ll b/llvm/test/DebugInfo/COFF/x87-registers.ll
index 02585673ffe25..97529bee1b218 100644
--- a/llvm/test/DebugInfo/COFF/x87-registers.ll
+++ b/llvm/test/DebugInfo/COFF/x87-registers.ll
@@ -9,7 +9,7 @@ target triple = "x86_64-w64-windows-gnu"
 
 define i32 @a() !dbg !8 {
 entry:
-  call void @llvm.dbg.declare(metadata [6 x i8]* undef, metadata !13, metadata !DIExpression(DW_OP_LLVM_fragment, 80, 48)), !dbg !15
+  call void @llvm.dbg.declare(metadata ptr undef, metadata !13, metadata !DIExpression(DW_OP_LLVM_fragment, 80, 48)), !dbg !15
   %0 = tail call x86_fp80 asm sideeffect "", "={st},~{dirflag},~{fpsr},~{flags}"(), !dbg !16, !srcloc !17
   call void @llvm.dbg.value(metadata x86_fp80 %0, metadata !13, metadata !DIExpression()), !dbg !18
   ret i32 undef, !dbg !19

diff  --git a/llvm/test/DebugInfo/Generic/2010-05-03-DisableFramePtr.ll b/llvm/test/DebugInfo/Generic/2010-05-03-DisableFramePtr.ll
index c15118a870aed..9f5a07551cbef 100644
--- a/llvm/test/DebugInfo/Generic/2010-05-03-DisableFramePtr.ll
+++ b/llvm/test/DebugInfo/Generic/2010-05-03-DisableFramePtr.ll
@@ -2,12 +2,12 @@
 ; Radar 7937664
 %struct.AppleEvent = type opaque
 
-define void @DisposeDMNotificationUPP(void (%struct.AppleEvent*)* %userUPP) "frame-pointer"="non-leaf" nounwind ssp {
+define void @DisposeDMNotificationUPP(ptr %userUPP) "frame-pointer"="non-leaf" nounwind ssp {
 entry:
-  %userUPP_addr = alloca void (%struct.AppleEvent*)* ; <void (%struct.AppleEvent*)**> [#uses=1]
+  %userUPP_addr = alloca ptr ; <ptr> [#uses=1]
   %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
-  call void @llvm.dbg.declare(metadata void (%struct.AppleEvent*)** %userUPP_addr, metadata !0, metadata !DIExpression(DW_OP_deref)), !dbg !13
-  store void (%struct.AppleEvent*)* %userUPP, void (%struct.AppleEvent*)** %userUPP_addr
+  call void @llvm.dbg.declare(metadata ptr %userUPP_addr, metadata !0, metadata !DIExpression(DW_OP_deref)), !dbg !13
+  store ptr %userUPP, ptr %userUPP_addr
   br label %return, !dbg !14
 
 return:                                           ; preds = %entry

diff  --git a/llvm/test/DebugInfo/Generic/2010-05-03-OriginDIE.ll b/llvm/test/DebugInfo/Generic/2010-05-03-OriginDIE.ll
index cd0b139ad97f5..6d19b0d1891a5 100644
--- a/llvm/test/DebugInfo/Generic/2010-05-03-OriginDIE.ll
+++ b/llvm/test/DebugInfo/Generic/2010-05-03-OriginDIE.ll
@@ -6,38 +6,38 @@
 ;XFAIL: target=xcore{{.*}}
 
 %struct.anon = type { i64, i32, i32, i32, [1 x i32] }
-%struct.gpm_t = type { i32, i8*, [16 x i8], i32, i64, i64, i64, i64, i64, i64, i32, i16, i16, [8 x %struct.gpmr_t] }
+%struct.gpm_t = type { i32, ptr, [16 x i8], i32, i64, i64, i64, i64, i64, i64, i32, i16, i16, [8 x %struct.gpmr_t] }
 %struct.gpmr_t = type { [48 x i8], [48 x i8], [16 x i8], i64, i64, i64, i64, i16 }
 %struct.gpt_t = type { [8 x i8], i32, i32, i32, i32, i64, i64, i64, i64, [16 x i8], %struct.anon }
 
- at llvm.used = appending global [1 x i8*] [i8* bitcast (void (%struct.gpm_t*, %struct.gpt_t*)* @gpt2gpm to i8*)], section "llvm.metadata" ; <[1 x i8*]*> [#uses=0]
+ at llvm.used = appending global [1 x ptr] [ptr @gpt2gpm], section "llvm.metadata" ; <ptr> [#uses=0]
 
-define fastcc void @gpt2gpm(%struct.gpm_t* %gpm, %struct.gpt_t* %gpt) nounwind optsize ssp {
+define fastcc void @gpt2gpm(ptr %gpm, ptr %gpt) nounwind optsize ssp {
 entry:
-  %data_addr.i18 = alloca i64, align 8            ; <i64*> [#uses=1]
-  %data_addr.i17 = alloca i64, align 8            ; <i64*> [#uses=2]
-  %data_addr.i16 = alloca i64, align 8            ; <i64*> [#uses=0]
-  %data_addr.i15 = alloca i32, align 4            ; <i32*> [#uses=0]
-  %data_addr.i = alloca i64, align 8              ; <i64*> [#uses=0]
-  %0 = getelementptr inbounds %struct.gpm_t, %struct.gpm_t* %gpm, i32 0, i32 2, i32 0 ; <i8*> [#uses=1]
-  %1 = getelementptr inbounds %struct.gpt_t, %struct.gpt_t* %gpt, i32 0, i32 9, i32 0 ; <i8*> [#uses=1]
-  call void @uuid_LtoB(i8* %0, i8* %1) nounwind, !dbg !0
-  %a9 = load volatile i64, i64* %data_addr.i18, align 8 ; <i64> [#uses=1]
+  %data_addr.i18 = alloca i64, align 8            ; <ptr> [#uses=1]
+  %data_addr.i17 = alloca i64, align 8            ; <ptr> [#uses=2]
+  %data_addr.i16 = alloca i64, align 8            ; <ptr> [#uses=0]
+  %data_addr.i15 = alloca i32, align 4            ; <ptr> [#uses=0]
+  %data_addr.i = alloca i64, align 8              ; <ptr> [#uses=0]
+  %0 = getelementptr inbounds %struct.gpm_t, ptr %gpm, i32 0, i32 2, i32 0 ; <ptr> [#uses=1]
+  %1 = getelementptr inbounds %struct.gpt_t, ptr %gpt, i32 0, i32 9, i32 0 ; <ptr> [#uses=1]
+  call void @uuid_LtoB(ptr %0, ptr %1) nounwind, !dbg !0
+  %a9 = load volatile i64, ptr %data_addr.i18, align 8 ; <i64> [#uses=1]
   %a10 = call i64 @llvm.bswap.i64(i64 %a9) nounwind ; <i64> [#uses=1]
-  %a11 = getelementptr inbounds %struct.gpt_t, %struct.gpt_t* %gpt, i32 0, i32 8, !dbg !7 ; <i64*> [#uses=1]
-  %a12 = load i64, i64* %a11, align 4, !dbg !7         ; <i64> [#uses=1]
-  call void @llvm.dbg.declare(metadata i64* %data_addr.i17, metadata !8, metadata !DIExpression()) nounwind, !dbg !14
-  store i64 %a12, i64* %data_addr.i17, align 8
+  %a11 = getelementptr inbounds %struct.gpt_t, ptr %gpt, i32 0, i32 8, !dbg !7 ; <ptr> [#uses=1]
+  %a12 = load i64, ptr %a11, align 4, !dbg !7         ; <i64> [#uses=1]
+  call void @llvm.dbg.declare(metadata ptr %data_addr.i17, metadata !8, metadata !DIExpression()) nounwind, !dbg !14
+  store i64 %a12, ptr %data_addr.i17, align 8
   call void @llvm.dbg.value(metadata !6, metadata !15, metadata !DIExpression()) nounwind, !dbg !DILocation(scope: !16)
   call void @llvm.dbg.value(metadata i32 0, metadata !19, metadata !DIExpression()) nounwind, !dbg !DILocation(scope: !16)
   call void @llvm.dbg.declare(metadata !6, metadata !23, metadata !DIExpression()) nounwind, !dbg !DILocation(scope: !24)
-  call void @llvm.dbg.value(metadata i64* %data_addr.i17, metadata !34, metadata !DIExpression(DW_OP_deref)) nounwind, !dbg !DILocation(scope: !24)
-  %a13 = load volatile i64, i64* %data_addr.i17, align 8 ; <i64> [#uses=1]
+  call void @llvm.dbg.value(metadata ptr %data_addr.i17, metadata !34, metadata !DIExpression(DW_OP_deref)) nounwind, !dbg !DILocation(scope: !24)
+  %a13 = load volatile i64, ptr %data_addr.i17, align 8 ; <i64> [#uses=1]
   %a14 = call i64 @llvm.bswap.i64(i64 %a13) nounwind ; <i64> [#uses=2]
   %a15 = add i64 %a10, %a14, !dbg !7              ; <i64> [#uses=1]
   %a16 = sub i64 %a15, %a14                       ; <i64> [#uses=1]
-  %a17 = getelementptr inbounds %struct.gpm_t, %struct.gpm_t* %gpm, i32 0, i32 5, !dbg !7 ; <i64*> [#uses=1]
-  store i64 %a16, i64* %a17, align 4, !dbg !7
+  %a17 = getelementptr inbounds %struct.gpm_t, ptr %gpm, i32 0, i32 5, !dbg !7 ; <ptr> [#uses=1]
+  store i64 %a16, ptr %a17, align 4, !dbg !7
   ret void, !dbg !7
 }
 
@@ -49,7 +49,7 @@ declare i32 @llvm.bswap.i32(i32) nounwind readnone
 
 declare i64 @llvm.bswap.i64(i64) nounwind readnone
 
-declare void @uuid_LtoB(i8*, i8*)
+declare void @uuid_LtoB(ptr, ptr)
 
 !llvm.dbg.cu = !{!4}
 !llvm.module.flags = !{!41}

diff  --git a/llvm/test/DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll b/llvm/test/DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll
index 0f8f0fc13b296..87d75c16dd8e3 100644
--- a/llvm/test/DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll
+++ b/llvm/test/DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll
@@ -18,11 +18,11 @@ declare void @llvm.dbg.value(metadata, metadata, metadata) #0
 ; Function Attrs: nounwind ssp
 define i32 @bar() #1 !dbg !8 {
 entry:
-  %0 = load i32, i32* @i, align 4, !dbg !11
+  %0 = load i32, ptr @i, align 4, !dbg !11
   tail call void @llvm.dbg.value(metadata i32 %0, metadata !13, metadata !24), !dbg !25
   tail call void @llvm.dbg.declare(metadata !5, metadata !18, metadata !24), !dbg !26
   %1 = mul nsw i32 %0, %0, !dbg !27
-  store i32 %1, i32* @i, align 4, !dbg !11
+  store i32 %1, ptr @i, align 4, !dbg !11
   ret i32 %1, !dbg !28
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/2010-10-01-crash.ll b/llvm/test/DebugInfo/Generic/2010-10-01-crash.ll
index acab6e8a33d48..8f8d67173c1cd 100644
--- a/llvm/test/DebugInfo/Generic/2010-10-01-crash.ll
+++ b/llvm/test/DebugInfo/Generic/2010-10-01-crash.ll
@@ -1,14 +1,14 @@
 ; RUN: llc -O0 %s -o /dev/null
 
-define void @CGRectStandardize(i32* sret(i32) %agg.result, i32* byval(i32) %rect) nounwind ssp !dbg !0 {
+define void @CGRectStandardize(ptr sret(i32) %agg.result, ptr byval(i32) %rect) nounwind ssp !dbg !0 {
 entry:
-  call void @llvm.dbg.declare(metadata i32* %rect, metadata !23, metadata !DIExpression()), !dbg !24
+  call void @llvm.dbg.declare(metadata ptr %rect, metadata !23, metadata !DIExpression()), !dbg !24
   ret void
 }
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 
-declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i1) nounwind
+declare void @llvm.memcpy.p0.p0.i32(ptr nocapture, ptr nocapture, i32, i1) nounwind
 
 
 !llvm.dbg.cu = !{!2}

diff  --git a/llvm/test/DebugInfo/Generic/DICommonBlock.ll b/llvm/test/DebugInfo/Generic/DICommonBlock.ll
index df03db693ad47..150b3a2102b51 100644
--- a/llvm/test/DebugInfo/Generic/DICommonBlock.ll
+++ b/llvm/test/DebugInfo/Generic/DICommonBlock.ll
@@ -13,10 +13,9 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 @common_a = common global [32 x i8] zeroinitializer, align 8, !dbg !13, !dbg !15
 
 define i32 @subr() !dbg !9 {
-    %1 = getelementptr inbounds [32 x i8], [32 x i8]* @common_a, i64 0, i32 8
-    %2 = bitcast i8* %1 to i32*
-    %3 = load i32, i32* %2
-    ret i32 %3
+    %1 = getelementptr inbounds [32 x i8], ptr @common_a, i64 0, i32 8
+    %2 = load i32, ptr %1
+    ret i32 %2
 }
 
 !llvm.dbg.cu = !{!0}

diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/roundtrip.ll b/llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/roundtrip.ll
index 49aa585ce7f77..3d8ab39d3b194 100644
--- a/llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/roundtrip.ll
+++ b/llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/roundtrip.ll
@@ -51,13 +51,13 @@ entry:
 ;; There are currently no plans to support DIArgLists for the address component.
 ; CHECK-LABEL: @fun5
 ; CHECK: %local = alloca i32, align 4, !DIAssignID ![[ID5:[0-9]+]]
-; CHECK-NEXT: llvm.dbg.assign(metadata i32 %v, metadata ![[VAR5:[0-9]+]], metadata !DIExpression(), metadata ![[ID5]], metadata i32* %local, metadata !DIExpression()), !dbg ![[DBG5:[0-9]+]]
-; CHECK-NEXT: llvm.dbg.assign(metadata !DIArgList(i32 %v, i32 1), metadata ![[VAR5]], metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_minus, DW_OP_stack_value), metadata ![[ID5]], metadata i32* %local, metadata !DIExpression()), !dbg ![[DBG5]]
+; CHECK-NEXT: llvm.dbg.assign(metadata i32 %v, metadata ![[VAR5:[0-9]+]], metadata !DIExpression(), metadata ![[ID5]], metadata ptr %local, metadata !DIExpression()), !dbg ![[DBG5:[0-9]+]]
+; CHECK-NEXT: llvm.dbg.assign(metadata !DIArgList(i32 %v, i32 1), metadata ![[VAR5]], metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_minus, DW_OP_stack_value), metadata ![[ID5]], metadata ptr %local, metadata !DIExpression()), !dbg ![[DBG5]]
 define dso_local void @fun5(i32 %v) !dbg !27 {
 entry:
   %local = alloca i32, align 4, !DIAssignID !30
-  call void @llvm.dbg.assign(metadata i32 %v, metadata !28, metadata !DIExpression(), metadata !30, metadata i32* %local, metadata !DIExpression()), !dbg !29
-  call void @llvm.dbg.assign(metadata !DIArgList(i32 %v, i32 1), metadata !28, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_minus, DW_OP_stack_value), metadata !30, metadata i32* %local, metadata !DIExpression()), !dbg !29
+  call void @llvm.dbg.assign(metadata i32 %v, metadata !28, metadata !DIExpression(), metadata !30, metadata ptr %local, metadata !DIExpression()), !dbg !29
+  call void @llvm.dbg.assign(metadata !DIArgList(i32 %v, i32 1), metadata !28, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_minus, DW_OP_stack_value), metadata !30, metadata ptr %local, metadata !DIExpression()), !dbg !29
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/verify.ll b/llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/verify.ll
index 68444f4761ee5..83f26cff129ee 100644
--- a/llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/verify.ll
+++ b/llvm/test/DebugInfo/Generic/assignment-tracking/parse-and-verify/verify.ll
@@ -22,17 +22,17 @@ entry:
 
   ;; Each following dbg.assign has an argument of the incorrect type.
   ; CHECK: invalid llvm.dbg.assign intrinsic address/value
-  call void @llvm.dbg.assign(metadata !3, metadata !10, metadata !DIExpression(), metadata !14, metadata i32* undef, metadata !DIExpression()), !dbg !13
+  call void @llvm.dbg.assign(metadata !3, metadata !10, metadata !DIExpression(), metadata !14, metadata ptr undef, metadata !DIExpression()), !dbg !13
   ; CHECK: invalid llvm.dbg.assign intrinsic variable
-  call void @llvm.dbg.assign(metadata i32 0, metadata !2, metadata !DIExpression(), metadata !14, metadata i32* undef, metadata !DIExpression()), !dbg !13
+  call void @llvm.dbg.assign(metadata i32 0, metadata !2, metadata !DIExpression(), metadata !14, metadata ptr undef, metadata !DIExpression()), !dbg !13
   ; CHECK: invalid llvm.dbg.assign intrinsic expression
-  call void @llvm.dbg.assign(metadata !14, metadata !10, metadata !2, metadata !14, metadata i32* undef, metadata !DIExpression()), !dbg !13
+  call void @llvm.dbg.assign(metadata !14, metadata !10, metadata !2, metadata !14, metadata ptr undef, metadata !DIExpression()), !dbg !13
   ; CHECK: invalid llvm.dbg.assign intrinsic DIAssignID
-  call void @llvm.dbg.assign(metadata !14, metadata !10, metadata !DIExpression(), metadata !2, metadata i32* undef, metadata !DIExpression()), !dbg !13
+  call void @llvm.dbg.assign(metadata !14, metadata !10, metadata !DIExpression(), metadata !2, metadata ptr undef, metadata !DIExpression()), !dbg !13
   ; CHECK: invalid llvm.dbg.assign intrinsic address
   call void @llvm.dbg.assign(metadata !14, metadata !10, metadata !DIExpression(), metadata !14, metadata !3, metadata !DIExpression()), !dbg !13
   ; CHECK: invalid llvm.dbg.assign intrinsic address expression
-  call void @llvm.dbg.assign(metadata !14, metadata !10, metadata !DIExpression(), metadata !14, metadata i32* undef, metadata !2), !dbg !13
+  call void @llvm.dbg.assign(metadata !14, metadata !10, metadata !DIExpression(), metadata !14, metadata ptr undef, metadata !2), !dbg !13
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/block-asan.ll b/llvm/test/DebugInfo/Generic/block-asan.ll
index 3e9d85d06c024..db49289bd6ece 100644
--- a/llvm/test/DebugInfo/Generic/block-asan.ll
+++ b/llvm/test/DebugInfo/Generic/block-asan.ll
@@ -17,28 +17,26 @@
 
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.__block_byref_x = type { i8*, %struct.__block_byref_x*, i32, i32, i32 }
+%struct.__block_byref_x = type { ptr, ptr, i32, i32, i32 }
 
 ; Function Attrs: nounwind ssp uwtable
 define void @foo() #0 !dbg !4 {
 entry:
   %x = alloca %struct.__block_byref_x, align 8
-  call void @llvm.dbg.declare(metadata %struct.__block_byref_x* %x, metadata !12, metadata !22), !dbg !23
-  %byref.isa = getelementptr inbounds %struct.__block_byref_x, %struct.__block_byref_x* %x, i32 0, i32 0, !dbg !24
-  store i8* null, i8** %byref.isa, !dbg !24
-  %byref.forwarding = getelementptr inbounds %struct.__block_byref_x, %struct.__block_byref_x* %x, i32 0, i32 1, !dbg !24
-  store %struct.__block_byref_x* %x, %struct.__block_byref_x** %byref.forwarding, !dbg !24
-  %byref.flags = getelementptr inbounds %struct.__block_byref_x, %struct.__block_byref_x* %x, i32 0, i32 2, !dbg !24
-  store i32 0, i32* %byref.flags, !dbg !24
-  %byref.size = getelementptr inbounds %struct.__block_byref_x, %struct.__block_byref_x* %x, i32 0, i32 3, !dbg !24
-  store i32 32, i32* %byref.size, !dbg !24
-  %forwarding = getelementptr inbounds %struct.__block_byref_x, %struct.__block_byref_x* %x, i32 0, i32 1, !dbg !25
-  %0 = load %struct.__block_byref_x*, %struct.__block_byref_x** %forwarding, !dbg !25
-  %x1 = getelementptr inbounds %struct.__block_byref_x, %struct.__block_byref_x* %0, i32 0, i32 4, !dbg !25
-  %1 = load i32, i32* %x1, align 4, !dbg !25
+  call void @llvm.dbg.declare(metadata ptr %x, metadata !12, metadata !22), !dbg !23
+  store ptr null, ptr %x, !dbg !24
+  %byref.forwarding = getelementptr inbounds %struct.__block_byref_x, ptr %x, i32 0, i32 1, !dbg !24
+  store ptr %x, ptr %byref.forwarding, !dbg !24
+  %byref.flags = getelementptr inbounds %struct.__block_byref_x, ptr %x, i32 0, i32 2, !dbg !24
+  store i32 0, ptr %byref.flags, !dbg !24
+  %byref.size = getelementptr inbounds %struct.__block_byref_x, ptr %x, i32 0, i32 3, !dbg !24
+  store i32 32, ptr %byref.size, !dbg !24
+  %forwarding = getelementptr inbounds %struct.__block_byref_x, ptr %x, i32 0, i32 1, !dbg !25
+  %0 = load ptr, ptr %forwarding, !dbg !25
+  %x1 = getelementptr inbounds %struct.__block_byref_x, ptr %0, i32 0, i32 4, !dbg !25
+  %1 = load i32, ptr %x1, align 4, !dbg !25
   call void @bar(i32 %1), !dbg !25
-  %2 = bitcast %struct.__block_byref_x* %x to i8*, !dbg !26
-  call void @_Block_object_dispose(i8* %2, i32 8) #3, !dbg !26
+  call void @_Block_object_dispose(ptr %x, i32 8) #3, !dbg !26
   ret void, !dbg !26
 }
 
@@ -47,7 +45,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 declare void @bar(i32) #2
 
-declare void @_Block_object_dispose(i8*, i32)
+declare void @_Block_object_dispose(ptr, i32)
 
 attributes #0 = { nounwind ssp uwtable sanitize_address "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/Generic/callsite-attr-invalid.ll b/llvm/test/DebugInfo/Generic/callsite-attr-invalid.ll
index d7ba323e4befd..bae12d52e2414 100644
--- a/llvm/test/DebugInfo/Generic/callsite-attr-invalid.ll
+++ b/llvm/test/DebugInfo/Generic/callsite-attr-invalid.ll
@@ -12,14 +12,14 @@
 define void @_Z3foov() !dbg !8 {
 entry:
   %x = alloca %struct.A, align 1
-  call void @llvm.dbg.declare(metadata %struct.A* %x, metadata !12, metadata !DIExpression()), !dbg !19
-  call void @_ZN1AD1Ev(%struct.A* %x) #3, !dbg !20
+  call void @llvm.dbg.declare(metadata ptr %x, metadata !12, metadata !DIExpression()), !dbg !19
+  call void @_ZN1AD1Ev(ptr %x) #3, !dbg !20
   ret void, !dbg !20
 }
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata)
 
-declare void @_ZN1AD1Ev(%struct.A*)
+declare void @_ZN1AD1Ev(ptr)
 
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!3, !4, !5, !6}

diff  --git a/llvm/test/DebugInfo/Generic/constant-pointers.ll b/llvm/test/DebugInfo/Generic/constant-pointers.ll
index 0eb6e5cb0f7c2..1e6910991dc7a 100644
--- a/llvm/test/DebugInfo/Generic/constant-pointers.ll
+++ b/llvm/test/DebugInfo/Generic/constant-pointers.ll
@@ -4,7 +4,7 @@
 ; these could be signless data (dataN).
 
 ; Built with Clang from:
-; template <void *V, void (*F)(), int i>
+; template <ptr V, void (*F)(), int i>
 ; void func() {}
 ; template void func<nullptr, nullptr, 42>();
 

diff  --git a/llvm/test/DebugInfo/Generic/containing-type-extension.ll b/llvm/test/DebugInfo/Generic/containing-type-extension.ll
index ada407929374c..2a7bd5f3cadcb 100644
--- a/llvm/test/DebugInfo/Generic/containing-type-extension.ll
+++ b/llvm/test/DebugInfo/Generic/containing-type-extension.ll
@@ -11,7 +11,7 @@
 define i32 @main() #0 !dbg !4 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   ret i32 0, !dbg !10
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/cross-cu-inlining-ranges.ll b/llvm/test/DebugInfo/Generic/cross-cu-inlining-ranges.ll
index da5dd6c54e0d5..17ec503c4f5f9 100644
--- a/llvm/test/DebugInfo/Generic/cross-cu-inlining-ranges.ll
+++ b/llvm/test/DebugInfo/Generic/cross-cu-inlining-ranges.ll
@@ -28,9 +28,9 @@ define void @foo() !dbg !6 {
   ret void, !dbg !9
 }
 
-define void @bar(i32* %0) !dbg !15 {
-  store i32 1, i32* %0, align 4, !dbg !16
-  store i32 1, i32* %0, align 4, !dbg !21
+define void @bar(ptr %0) !dbg !15 {
+  store i32 1, ptr %0, align 4, !dbg !16
+  store i32 1, ptr %0, align 4, !dbg !21
   ret void, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/cross-cu-inlining.ll b/llvm/test/DebugInfo/Generic/cross-cu-inlining.ll
index 39bf18efac6cc..91b481c73b634 100644
--- a/llvm/test/DebugInfo/Generic/cross-cu-inlining.ll
+++ b/llvm/test/DebugInfo/Generic/cross-cu-inlining.ll
@@ -70,16 +70,14 @@ define i32 @main() #0 !dbg !4 {
 entry:
   %x.addr.i = alloca i32, align 4
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
-  %0 = load i32, i32* @i, align 4, !dbg !19
-  %1 = bitcast i32* %x.addr.i to i8*
-  call void @llvm.lifetime.start(i64 4, i8* %1)
-  store i32 %0, i32* %x.addr.i, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr.i, metadata !120, metadata !DIExpression()), !dbg !21
-  %2 = load i32, i32* %x.addr.i, align 4, !dbg !22
-  %mul.i = mul nsw i32 %2, 2, !dbg !22
-  %3 = bitcast i32* %x.addr.i to i8*, !dbg !22
-  call void @llvm.lifetime.end(i64 4, i8* %3), !dbg !22
+  store i32 0, ptr %retval
+  %0 = load i32, ptr @i, align 4, !dbg !19
+  call void @llvm.lifetime.start(i64 4, ptr %x.addr.i)
+  store i32 %0, ptr %x.addr.i, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr.i, metadata !120, metadata !DIExpression()), !dbg !21
+  %1 = load i32, ptr %x.addr.i, align 4, !dbg !22
+  %mul.i = mul nsw i32 %1, 2, !dbg !22
+  call void @llvm.lifetime.end(i64 4, ptr %x.addr.i), !dbg !22
   ret i32 %mul.i, !dbg !19
 }
 
@@ -87,9 +85,9 @@ entry:
 define i32 @_Z4funci(i32 %x) #1 !dbg !12 {
 entry:
   %x.addr = alloca i32, align 4
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !20, metadata !DIExpression()), !dbg !23
-  %0 = load i32, i32* %x.addr, align 4, !dbg !24
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !20, metadata !DIExpression()), !dbg !23
+  %0 = load i32, ptr %x.addr, align 4, !dbg !24
   %mul = mul nsw i32 %0, 2, !dbg !24
   ret i32 %mul, !dbg !24
 }
@@ -98,10 +96,10 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #2
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #3
+declare void @llvm.lifetime.start(i64, ptr nocapture) #3
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #3
+declare void @llvm.lifetime.end(i64, ptr nocapture) #3
 
 attributes #0 = { uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { alwaysinline nounwind uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }

diff  --git a/llvm/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll b/llvm/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll
index 2b6369e005213..450e38c72ed2e 100644
--- a/llvm/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll
+++ b/llvm/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll
@@ -37,15 +37,15 @@
 
 source_filename = "test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll"
 
- at x = global i32 (i32)* @_Z4funci, align 8, !dbg !0
- at y = global i32 (i32)* @_Z4funci, align 8, !dbg !7
+ at x = global ptr @_Z4funci, align 8, !dbg !0
+ at y = global ptr @_Z4funci, align 8, !dbg !7
 
 ; Function Attrs: inlinehint nounwind uwtable
 define linkonce_odr i32 @_Z4funci(i32 %i) #0 !dbg !18 {
   %1 = alloca i32, align 4
-  store i32 %i, i32* %1, align 4
-  call void @llvm.dbg.declare(metadata i32* %1, metadata !19, metadata !20), !dbg !21
-  %2 = load i32, i32* %1, align 4, !dbg !22
+  store i32 %i, ptr %1, align 4
+  call void @llvm.dbg.declare(metadata ptr %1, metadata !19, metadata !20), !dbg !21
+  %2 = load i32, ptr %1, align 4, !dbg !22
   %3 = mul nsw i32 %2, 2, !dbg !22
   ret i32 %3, !dbg !22
 }

diff  --git a/llvm/test/DebugInfo/Generic/cross-cu-linkonce.ll b/llvm/test/DebugInfo/Generic/cross-cu-linkonce.ll
index b6b42a8af46ac..70301576e94e1 100644
--- a/llvm/test/DebugInfo/Generic/cross-cu-linkonce.ll
+++ b/llvm/test/DebugInfo/Generic/cross-cu-linkonce.ll
@@ -25,15 +25,15 @@
 
 source_filename = "test/DebugInfo/Generic/cross-cu-linkonce.ll"
 
- at x = global i32 (i32)* @_Z4funci, align 8, !dbg !0
- at y = global i32 (i32)* @_Z4funci, align 8, !dbg !7
+ at x = global ptr @_Z4funci, align 8, !dbg !0
+ at y = global ptr @_Z4funci, align 8, !dbg !7
 
 ; Function Attrs: inlinehint nounwind uwtable
 define linkonce_odr i32 @_Z4funci(i32 %i) #0 !dbg !19 {
   %1 = alloca i32, align 4
-  store i32 %i, i32* %1, align 4
-  call void @llvm.dbg.declare(metadata i32* %1, metadata !20, metadata !21), !dbg !22
-  %2 = load i32, i32* %1, align 4, !dbg !23
+  store i32 %i, ptr %1, align 4
+  call void @llvm.dbg.declare(metadata ptr %1, metadata !20, metadata !21), !dbg !22
+  %2 = load i32, ptr %1, align 4, !dbg !23
   %3 = mul nsw i32 %2, 2, !dbg !23
   ret i32 %3, !dbg !23
 }

diff  --git a/llvm/test/DebugInfo/Generic/cu-range-hole.ll b/llvm/test/DebugInfo/Generic/cu-range-hole.ll
index 8d361f085826a..4a6a753dd4737 100644
--- a/llvm/test/DebugInfo/Generic/cu-range-hole.ll
+++ b/llvm/test/DebugInfo/Generic/cu-range-hole.ll
@@ -16,9 +16,9 @@
 define i32 @b(i32 %c) #0 !dbg !5 {
 entry:
   %c.addr = alloca i32, align 4
-  store i32 %c, i32* %c.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %c.addr, metadata !13, metadata !DIExpression()), !dbg !14
-  %0 = load i32, i32* %c.addr, align 4, !dbg !14
+  store i32 %c, ptr %c.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %c.addr, metadata !13, metadata !DIExpression()), !dbg !14
+  %0 = load i32, ptr %c.addr, align 4, !dbg !14
   %add = add nsw i32 %0, 1, !dbg !14
   ret i32 %add, !dbg !14
 }
@@ -27,8 +27,8 @@ entry:
 define i32 @a(i32 %b) #0 {
 entry:
   %b.addr = alloca i32, align 4
-  store i32 %b, i32* %b.addr, align 4
-  %0 = load i32, i32* %b.addr, align 4
+  store i32 %b, ptr %b.addr, align 4
+  %0 = load i32, ptr %b.addr, align 4
   %add = add nsw i32 %0, 1
   ret i32 %add
 }
@@ -40,9 +40,9 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 define i32 @d(i32 %e) #0 !dbg !10 {
 entry:
   %e.addr = alloca i32, align 4
-  store i32 %e, i32* %e.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %e.addr, metadata !15, metadata !DIExpression()), !dbg !16
-  %0 = load i32, i32* %e.addr, align 4, !dbg !16
+  store i32 %e, ptr %e.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %e.addr, metadata !15, metadata !DIExpression()), !dbg !16
+  %0 = load i32, ptr %e.addr, align 4, !dbg !16
   %add = add nsw i32 %0, 1, !dbg !16
   ret i32 %add, !dbg !16
 }

diff  --git a/llvm/test/DebugInfo/Generic/cu-ranges.ll b/llvm/test/DebugInfo/Generic/cu-ranges.ll
index 4290df911733b..b962bce27bd17 100644
--- a/llvm/test/DebugInfo/Generic/cu-ranges.ll
+++ b/llvm/test/DebugInfo/Generic/cu-ranges.ll
@@ -20,9 +20,9 @@
 define i32 @foo(i32 %a) #0 section "__TEXT,__foo" !dbg !4 {
 entry:
   %a.addr = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !13, metadata !DIExpression()), !dbg !14
-  %0 = load i32, i32* %a.addr, align 4, !dbg !15
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !13, metadata !DIExpression()), !dbg !14
+  %0 = load i32, ptr %a.addr, align 4, !dbg !15
   %add = add nsw i32 %0, 5, !dbg !15
   ret i32 %add, !dbg !15
 }
@@ -34,9 +34,9 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 define i32 @bar(i32 %a) #0 !dbg !9 {
 entry:
   %a.addr = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !16, metadata !DIExpression()), !dbg !17
-  %0 = load i32, i32* %a.addr, align 4, !dbg !18
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !16, metadata !DIExpression()), !dbg !17
+  %0 = load i32, ptr %a.addr, align 4, !dbg !18
   %add = add nsw i32 %0, 5, !dbg !18
   ret i32 %add, !dbg !18
 }

diff  --git a/llvm/test/DebugInfo/Generic/dbg-value-lower-linenos.ll b/llvm/test/DebugInfo/Generic/dbg-value-lower-linenos.ll
index cb46b1f813be5..7c3490996c8c3 100644
--- a/llvm/test/DebugInfo/Generic/dbg-value-lower-linenos.ll
+++ b/llvm/test/DebugInfo/Generic/dbg-value-lower-linenos.ll
@@ -26,24 +26,24 @@
 ; CHECK-NEXT:  dbg.value(metadata i32 %toret, {{.*}}), !dbg ![[UNKNOWN]]
 ; CHECK-NEXT:  ret i32 %toret
 
-define i32 @foo(i32 *%bees, i32 *%output) {
+define i32 @foo(ptr %bees, ptr %output) {
 entry:
   %bar = alloca i32
-  call void @llvm.dbg.declare(metadata i32 *%bar, metadata !7, metadata !DIExpression()), !dbg !6
-  store i32 0, i32 *%bar
+  call void @llvm.dbg.declare(metadata ptr %bar, metadata !7, metadata !DIExpression()), !dbg !6
+  store i32 0, ptr %bar
   br label %bb1, !dbg !6
 
 bb1:
-  %totest = load i32, i32 *%bees, !dbg !8
-  %load1 = load i32, i32 *%bar, !dbg !9
+  %totest = load i32, ptr %bees, !dbg !8
+  %load1 = load i32, ptr %bar, !dbg !9
   %add = add i32 %load1, 1, !dbg !10
-  store i32 %add, i32 *%bar, !dbg !11
+  store i32 %add, ptr %bar, !dbg !11
   %toret = add i32 %add, 2, !dbg !12
   %cond = icmp ult i32 %totest, %load1, !dbg !13
   br i1 %cond, label %bb1, label %bb2, !dbg !14
 
 bb2:
-  store i32 %toret, i32 *%bar, !dbg !16
+  store i32 %toret, ptr %bar, !dbg !16
   ret i32 %toret
 }
 
@@ -54,7 +54,7 @@ bb2:
 ; CHECK:      dbg.value(metadata i32 %map, metadata ![[MAPVAR:[0-9]+]],{{.*}}),
 ; CHECK-SAME:           !dbg ![[UNKNOWN2:[0-9]+]]
 ; CHECK-NEXT: store
-; CHECK-NEXT: dbg.value(metadata i32* %map.addr, metadata ![[MAPVAR]],
+; CHECK-NEXT: dbg.value(metadata ptr %map.addr, metadata ![[MAPVAR]],
 ; CHECK-SAME:           metadata !DIExpression(DW_OP_deref)),
 ; CHECK-SAME:           !dbg ![[UNKNOWN2]]
 ; CHECK-NEXT: call
@@ -65,11 +65,11 @@ bb2:
 define void @bar(i32 %map) !dbg !20 {
 entry:
   %map.addr = alloca i32, align 4
-  store i32 %map, i32* %map.addr, align 4, !dbg !27
-  call void @llvm.dbg.declare(metadata i32* %map.addr, metadata !21, metadata !DIExpression()), !dbg !22
-  %call = call i32 (i32*, ...) bitcast (i32 (...)* @lookup to i32 (i32*, ...)*)(i32* %map.addr), !dbg !23
-%0 = load i32, i32* %map.addr, align 4, !dbg !24
-  %call1 = call i32 (i32, ...) bitcast (i32 (...)* @verify to i32 (i32, ...)*)(i32 %0), !dbg !25
+  store i32 %map, ptr %map.addr, align 4, !dbg !27
+  call void @llvm.dbg.declare(metadata ptr %map.addr, metadata !21, metadata !DIExpression()), !dbg !22
+  %call = call i32 (ptr, ...) @lookup(ptr %map.addr), !dbg !23
+%0 = load i32, ptr %map.addr, align 4, !dbg !24
+  %call1 = call i32 (i32, ...) @verify(i32 %0), !dbg !25
   ret void, !dbg !26
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/dead-argument-order.ll b/llvm/test/DebugInfo/Generic/dead-argument-order.ll
index c71718dd8b636..f6cd8092a48d8 100644
--- a/llvm/test/DebugInfo/Generic/dead-argument-order.ll
+++ b/llvm/test/DebugInfo/Generic/dead-argument-order.ll
@@ -36,7 +36,7 @@
 ; Function Attrs: nounwind readnone uwtable
 define i32 @_Z8function1Si(i32 %s.coerce, i32 %i) #0 !dbg !9 {
 entry:
-  tail call void @llvm.dbg.declare(metadata %struct.S* undef, metadata !14, metadata !DIExpression()), !dbg !20
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !14, metadata !DIExpression()), !dbg !20
   tail call void @llvm.dbg.value(metadata i32 %i, metadata !15, metadata !DIExpression()), !dbg !20
   %add = add nsw i32 %i, %s.coerce, !dbg !20
   ret i32 %add, !dbg !20
@@ -73,6 +73,6 @@ attributes #1 = { nounwind readnone }
 !16 = !{i32 2, !"Dwarf Version", i32 4}
 !17 = !{i32 2, !"Debug Info Version", i32 3}
 !18 = !{!"clang version 3.5.0 "}
-!19 = !{%struct.S* undef}
+!19 = !{ptr undef}
 !20 = !DILocation(line: 2, scope: !9)
 

diff  --git a/llvm/test/DebugInfo/Generic/debug-info-always-inline.ll b/llvm/test/DebugInfo/Generic/debug-info-always-inline.ll
index 49f97d1e991e5..f433838a06c70 100644
--- a/llvm/test/DebugInfo/Generic/debug-info-always-inline.ll
+++ b/llvm/test/DebugInfo/Generic/debug-info-always-inline.ll
@@ -77,12 +77,11 @@ define i32 @_Z3foov() #0 {
 entry:
   %arr = alloca [10 x i32], align 16
   %sum = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata [10 x i32]* %arr, metadata !14), !dbg !18
-  %arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* %arr, i32 0, i64 0, !dbg !19
-  store i32 5, i32* %arrayidx, align 4, !dbg !19
-  call void @llvm.dbg.declare(metadata i32* %sum, metadata !20), !dbg !21
-  store i32 4, i32* %sum, align 4, !dbg !21
-  %0 = load i32, i32* %sum, align 4, !dbg !22
+  call void @llvm.dbg.declare(metadata ptr %arr, metadata !14), !dbg !18
+  store i32 5, ptr %arr, align 4, !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %sum, metadata !20), !dbg !21
+  store i32 4, ptr %sum, align 4, !dbg !21
+  %0 = load i32, ptr %sum, align 4, !dbg !22
   ret i32 %0, !dbg !22
 }
 
@@ -94,12 +93,12 @@ define i32 @main() #2 {
 entry:
   %retval = alloca i32, align 4
   %i = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   call void @_Z3barv(), !dbg !23
-  call void @llvm.dbg.declare(metadata i32* %i, metadata !24), !dbg !25
+  call void @llvm.dbg.declare(metadata ptr %i, metadata !24), !dbg !25
   %call = call i32 @_Z3foov(), !dbg !25
-  store i32 %call, i32* %i, align 4, !dbg !25
-  %0 = load i32, i32* %i, align 4, !dbg !26
+  store i32 %call, ptr %i, align 4, !dbg !25
+  %0 = load i32, ptr %i, align 4, !dbg !26
   ret i32 %0, !dbg !26
 }
 
@@ -118,13 +117,13 @@ attributes #3 = { "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-f
 !1 = !{!"<stdin>", !"/home/user/test"}
 !2 = !{}
 !3 = !{!4, !10}
-!4 = !{i32 786478, !5, !6, !"foo", !"foo", !"_Z3foov", i32 1, !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 ()* @_Z3foov, null, null, !2, i32 2} ; [ DW_TAG_subprogram ] [line 1] [def] [scope 2] [foo]
+!4 = !{i32 786478, !5, !6, !"foo", !"foo", !"_Z3foov", i32 1, !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, ptr @_Z3foov, null, null, !2, i32 2} ; [ DW_TAG_subprogram ] [line 1] [def] [scope 2] [foo]
 !5 = !{!"test.cpp", !"/home/user/test"}
 !6 = !{i32 786473, !5}          ; [ DW_TAG_file_type ] [/home/user/test/test.cpp]
 !7 = !{i32 786453, i32 0, null, !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, !8, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
 !8 = !{!9}
 !9 = !{i32 786468, null, null, !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
-!10 = !{i32 786478, !5, !6, !"main", !"main", !"", i32 11, !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 ()* @main, null, null, !2, i32 12} ; [ DW_TAG_subprogram ] [line 11] [def] [scope 12] [main]
+!10 = !{i32 786478, !5, !6, !"main", !"main", !"", i32 11, !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, ptr @main, null, null, !2, i32 12} ; [ DW_TAG_subprogram ] [line 11] [def] [scope 12] [main]
 !11 = !{i32 2, !"Dwarf Version", i32 4}
 !12 = !{i32 2, !"Debug Info Version", i32 1}
 !13 = !{!"clang version 3.6.0 (217844)"}

diff  --git a/llvm/test/DebugInfo/Generic/debug-info-qualifiers.ll b/llvm/test/DebugInfo/Generic/debug-info-qualifiers.ll
index 07e420ce47d5e..5e42be3caa8c4 100644
--- a/llvm/test/DebugInfo/Generic/debug-info-qualifiers.ll
+++ b/llvm/test/DebugInfo/Generic/debug-info-qualifiers.ll
@@ -38,20 +38,20 @@ define void @_Z1gv() #0 !dbg !17 {
   %a = alloca %class.A, align 1
   %pl = alloca { i64, i64 }, align 8
   %pr = alloca { i64, i64 }, align 8
-  call void @llvm.dbg.declare(metadata %class.A* %a, metadata !24, metadata !DIExpression()), !dbg !25
-  call void @llvm.dbg.declare(metadata { i64, i64 }* %pl, metadata !26, metadata !DIExpression()), !dbg !31
-  store { i64, i64 } { i64 ptrtoint (void (%class.A*)* @_ZNKR1A1lEv to i64), i64 0 }, { i64, i64 }* %pl, align 8, !dbg !31
-  call void @llvm.dbg.declare(metadata { i64, i64 }* %pr, metadata !32, metadata !DIExpression()), !dbg !35
-  store { i64, i64 } { i64 ptrtoint (void (%class.A*)* @_ZNKO1A1rEv to i64), i64 0 }, { i64, i64 }* %pr, align 8, !dbg !35
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !24, metadata !DIExpression()), !dbg !25
+  call void @llvm.dbg.declare(metadata ptr %pl, metadata !26, metadata !DIExpression()), !dbg !31
+  store { i64, i64 } { i64 ptrtoint (ptr @_ZNKR1A1lEv to i64), i64 0 }, ptr %pl, align 8, !dbg !31
+  call void @llvm.dbg.declare(metadata ptr %pr, metadata !32, metadata !DIExpression()), !dbg !35
+  store { i64, i64 } { i64 ptrtoint (ptr @_ZNKO1A1rEv to i64), i64 0 }, ptr %pr, align 8, !dbg !35
   ret void, !dbg !36
 }
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare void @_ZNKR1A1lEv(%class.A*)
+declare void @_ZNKR1A1lEv(ptr)
 
-declare void @_ZNKO1A1rEv(%class.A*)
+declare void @_ZNKO1A1rEv(ptr)
 
 attributes #0 = { nounwind }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/Generic/debug-label-inline.ll b/llvm/test/DebugInfo/Generic/debug-label-inline.ll
index a73e2938998fe..26407cc8f702a 100644
--- a/llvm/test/DebugInfo/Generic/debug-label-inline.ll
+++ b/llvm/test/DebugInfo/Generic/debug-label-inline.ll
@@ -19,8 +19,8 @@ source_filename = "debug-label-inline.c"
 
 define i32 @f2() local_unnamed_addr #0 !dbg !4 {
 entry:
-  %0 = load i32, i32* @ga, align 4, !dbg !1
-  %1 = load i32, i32* @gb, align 4, !dbg !1
+  %0 = load i32, ptr @ga, align 4, !dbg !1
+  %1 = load i32, ptr @gb, align 4, !dbg !1
   call void @llvm.dbg.label(metadata !15), !dbg !17
   %add.i = add nsw i32 %1, %0, !dbg !18
   ret i32 %add.i, !dbg !1

diff  --git a/llvm/test/DebugInfo/Generic/debug-label-mi.ll b/llvm/test/DebugInfo/Generic/debug-label-mi.ll
index dd9d620da0825..ad92dd2f5a7c2 100644
--- a/llvm/test/DebugInfo/Generic/debug-label-mi.ll
+++ b/llvm/test/DebugInfo/Generic/debug-label-mi.ll
@@ -19,21 +19,21 @@ entry:
   %a.addr = alloca i32, align 4
   %b.addr = alloca i32, align 4
   %sum = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  store i32 %b, i32* %b.addr, align 4
+  store i32 %a, ptr %a.addr, align 4
+  store i32 %b, ptr %b.addr, align 4
   br label %top
 
 top:                                              ; preds = %entry
   call void @llvm.dbg.label(metadata !8), !dbg !9
-  %0 = load i32, i32* %a.addr, align 4
-  %1 = load i32, i32* %b.addr, align 4
+  %0 = load i32, ptr %a.addr, align 4
+  %1 = load i32, ptr %b.addr, align 4
   %add = add nsw i32 %0, %1
-  store i32 %add, i32* %sum, align 4
+  store i32 %add, ptr %sum, align 4
   br label %done
 
 done:                                             ; preds = %top
   call void @llvm.dbg.label(metadata !10), !dbg !11
-  %2 = load i32, i32* %sum, align 4
+  %2 = load i32, ptr %sum, align 4
   ret i32 %2
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/debug-label-opt.ll b/llvm/test/DebugInfo/Generic/debug-label-opt.ll
index 4da2279742572..e875216164305 100644
--- a/llvm/test/DebugInfo/Generic/debug-label-opt.ll
+++ b/llvm/test/DebugInfo/Generic/debug-label-opt.ll
@@ -8,9 +8,9 @@
 ; CHECKMI: DBG_LABEL "end", debug-location !19
 source_filename = "debug-label-opt.c"
 
-define i32 @foo(i32* nocapture readonly %a, i32 %n) local_unnamed_addr !dbg !7 {
+define i32 @foo(ptr nocapture readonly %a, i32 %n) local_unnamed_addr !dbg !7 {
 entry:
-  call void @llvm.dbg.value(metadata i32* %a, metadata !13, metadata !DIExpression()), !dbg !6
+  call void @llvm.dbg.value(metadata ptr %a, metadata !13, metadata !DIExpression()), !dbg !6
   call void @llvm.dbg.value(metadata i32 %n, metadata !14, metadata !DIExpression()), !dbg !6
   switch i32 %n, label %end_sum [
     i32 2, label %end_sum.sink.split
@@ -18,22 +18,22 @@ entry:
   ], !dbg !6
 
 if.then3:                                         ; preds = %entry
-  %arrayidx4 = getelementptr inbounds i32, i32* %a, i64 1, !dbg !6
+  %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 1, !dbg !6
   br label %end_sum.sink.split, !dbg !6
 
 end_sum.sink.split:                               ; preds = %entry, %if.then3
-  %a.sink = phi i32* [ %arrayidx4, %if.then3 ], [ %a, %entry ]
+  %a.sink = phi ptr [ %arrayidx4, %if.then3 ], [ %a, %entry ]
   %.sink = phi i64 [ 2, %if.then3 ], [ 1, %entry ]
-  %0 = load i32, i32* %a.sink, align 4
-  %arrayidx1 = getelementptr inbounds i32, i32* %a, i64 %.sink
-  %1 = load i32, i32* %arrayidx1, align 4
+  %0 = load i32, ptr %a.sink, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %a, i64 %.sink
+  %1 = load i32, ptr %arrayidx1, align 4
   %add = add nsw i32 %1, %0
   br label %end_sum, !dbg !6
 
 end_sum:                                          ; preds = %end_sum.sink.split, %entry
   %sum.0 = phi i32 [ 0, %entry ], [ %add, %end_sum.sink.split ]
   call void @llvm.dbg.label(metadata !15), !dbg !17
-  %2 = load i32, i32* %a, align 4, !dbg !6
+  %2 = load i32, ptr %a, align 4, !dbg !6
   %mul = mul nsw i32 %2, %sum.0, !dbg !18
   call void @llvm.dbg.label(metadata !16), !dbg !19
   ret i32 %mul, !dbg !6

diff  --git a/llvm/test/DebugInfo/Generic/debug-label.ll b/llvm/test/DebugInfo/Generic/debug-label.ll
index 994d8404a4ce9..eff482a25ee0f 100644
--- a/llvm/test/DebugInfo/Generic/debug-label.ll
+++ b/llvm/test/DebugInfo/Generic/debug-label.ll
@@ -36,21 +36,21 @@ entry:
   %a.addr = alloca i32, align 4
   %b.addr = alloca i32, align 4
   %sum = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  store i32 %b, i32* %b.addr, align 4
+  store i32 %a, ptr %a.addr, align 4
+  store i32 %b, ptr %b.addr, align 4
   br label %top
 
 top:
   call void @llvm.dbg.label(metadata !10), !dbg !11
-  %0 = load i32, i32* %a.addr, align 4
-  %1 = load i32, i32* %b.addr, align 4
+  %0 = load i32, ptr %a.addr, align 4
+  %1 = load i32, ptr %b.addr, align 4
   %add = add nsw i32 %0, %1
-  store i32 %add, i32* %sum, align 4
+  store i32 %add, ptr %sum, align 4
   br label %done
 
 done:
   call void @llvm.dbg.label(metadata !12), !dbg !13
-  %2 = load i32, i32* %sum, align 4
+  %2 = load i32, ptr %sum, align 4
   ret i32 %2, !dbg !14
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/debug-names-hash-collisions.ll b/llvm/test/DebugInfo/Generic/debug-names-hash-collisions.ll
index 5f4aa9c13cd3d..ee35d75eb7814 100644
--- a/llvm/test/DebugInfo/Generic/debug-names-hash-collisions.ll
+++ b/llvm/test/DebugInfo/Generic/debug-names-hash-collisions.ll
@@ -11,15 +11,15 @@
 ; DWARF v5 hash function: A copy constructor and an assignment operator for a
 ; class will always hash to the same value.
 ;
-; typedef void *_ZN4lldb7SBBlockaSERKS0_;
+; typedef ptr_ZN4lldb7SBBlockaSERKS0_;
 ; _ZN4lldb7SBBlockaSERKS0_ _ZN4lldb7SBBlockC1ERKS0_;
-; typedef void *_ZN4lldb7SBErroraSERKS0_;
+; typedef ptr_ZN4lldb7SBErroraSERKS0_;
 ; _ZN4lldb7SBErroraSERKS0_ _ZN4lldb7SBErrorC1ERKS0_;
-; typedef void *_ZN4lldb7SBValueaSERKS0_;
+; typedef ptr_ZN4lldb7SBValueaSERKS0_;
 ; _ZN4lldb7SBValueaSERKS0_ _ZN4lldb7SBValueC1ERKS0_;
-; typedef void *_ZL11numCommutes;
+; typedef ptr_ZL11numCommutes;
 ; _ZL11numCommutes _ZL11NumCommutes;
-; typedef void *_ZL9NumRemats;
+; typedef ptr_ZL9NumRemats;
 ; _ZL9NumRemats _ZL9NumReMats;
 
 ; Check that we have the right amount of hashes and names.
@@ -60,11 +60,11 @@
 
 ; VERIFY: No errors.
 
- at _ZN4lldb7SBBlockC1ERKS0_ = common dso_local global i8* null, align 8, !dbg !0
- at _ZN4lldb7SBErrorC1ERKS0_ = common dso_local global i8* null, align 8, !dbg !6
- at _ZN4lldb7SBValueC1ERKS0_ = common dso_local global i8* null, align 8, !dbg !10
- at _ZL11NumCommutes = common dso_local global i8* null, align 8, !dbg !13
- at _ZL9NumReMats = common dso_local global i8* null, align 8, !dbg !16
+ at _ZN4lldb7SBBlockC1ERKS0_ = common dso_local global ptr null, align 8, !dbg !0
+ at _ZN4lldb7SBErrorC1ERKS0_ = common dso_local global ptr null, align 8, !dbg !6
+ at _ZN4lldb7SBValueC1ERKS0_ = common dso_local global ptr null, align 8, !dbg !10
+ at _ZL11NumCommutes = common dso_local global ptr null, align 8, !dbg !13
+ at _ZL9NumReMats = common dso_local global ptr null, align 8, !dbg !16
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!20, !21, !22}

diff  --git a/llvm/test/DebugInfo/Generic/debug-names-many-cu.ll b/llvm/test/DebugInfo/Generic/debug-names-many-cu.ll
index af168db9b0c1b..698d0cba67a67 100644
--- a/llvm/test/DebugInfo/Generic/debug-names-many-cu.ll
+++ b/llvm/test/DebugInfo/Generic/debug-names-many-cu.ll
@@ -68,1543 +68,1543 @@
 !6 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)
 !3 = !DIFile(filename: "/tmp/cu2.c", directory: "/tmp")
 
- at foobar1 = common dso_local global i8* null, align 8, !dbg !10
+ at foobar1 = common dso_local global ptr null, align 8, !dbg !10
 !10 = !DIGlobalVariableExpression(var: !11, expr: !DIExpression())
 !11 = distinct !DIGlobalVariable(name: "foobar1", scope: !12, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !12 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !15)
 !15 = !{!10}
 
- at foobar2 = common dso_local global i8* null, align 8, !dbg !20
+ at foobar2 = common dso_local global ptr null, align 8, !dbg !20
 !20 = !DIGlobalVariableExpression(var: !21, expr: !DIExpression())
 !21 = distinct !DIGlobalVariable(name: "foobar2", scope: !22, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !22 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !25)
 !25 = !{!20}
 
- at foobar3 = common dso_local global i8* null, align 8, !dbg !30
+ at foobar3 = common dso_local global ptr null, align 8, !dbg !30
 !30 = !DIGlobalVariableExpression(var: !31, expr: !DIExpression())
 !31 = distinct !DIGlobalVariable(name: "foobar3", scope: !32, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !32 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !35)
 !35 = !{!30}
 
- at foobar4 = common dso_local global i8* null, align 8, !dbg !40
+ at foobar4 = common dso_local global ptr null, align 8, !dbg !40
 !40 = !DIGlobalVariableExpression(var: !41, expr: !DIExpression())
 !41 = distinct !DIGlobalVariable(name: "foobar4", scope: !42, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !42 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !45)
 !45 = !{!40}
 
- at foobar5 = common dso_local global i8* null, align 8, !dbg !50
+ at foobar5 = common dso_local global ptr null, align 8, !dbg !50
 !50 = !DIGlobalVariableExpression(var: !51, expr: !DIExpression())
 !51 = distinct !DIGlobalVariable(name: "foobar5", scope: !52, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !52 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !55)
 !55 = !{!50}
 
- at foobar6 = common dso_local global i8* null, align 8, !dbg !60
+ at foobar6 = common dso_local global ptr null, align 8, !dbg !60
 !60 = !DIGlobalVariableExpression(var: !61, expr: !DIExpression())
 !61 = distinct !DIGlobalVariable(name: "foobar6", scope: !62, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !62 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !65)
 !65 = !{!60}
 
- at foobar7 = common dso_local global i8* null, align 8, !dbg !70
+ at foobar7 = common dso_local global ptr null, align 8, !dbg !70
 !70 = !DIGlobalVariableExpression(var: !71, expr: !DIExpression())
 !71 = distinct !DIGlobalVariable(name: "foobar7", scope: !72, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !72 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !75)
 !75 = !{!70}
 
- at foobar8 = common dso_local global i8* null, align 8, !dbg !80
+ at foobar8 = common dso_local global ptr null, align 8, !dbg !80
 !80 = !DIGlobalVariableExpression(var: !81, expr: !DIExpression())
 !81 = distinct !DIGlobalVariable(name: "foobar8", scope: !82, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !82 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !85)
 !85 = !{!80}
 
- at foobar9 = common dso_local global i8* null, align 8, !dbg !90
+ at foobar9 = common dso_local global ptr null, align 8, !dbg !90
 !90 = !DIGlobalVariableExpression(var: !91, expr: !DIExpression())
 !91 = distinct !DIGlobalVariable(name: "foobar9", scope: !92, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !92 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !95)
 !95 = !{!90}
 
- at foobar10 = common dso_local global i8* null, align 8, !dbg !100
+ at foobar10 = common dso_local global ptr null, align 8, !dbg !100
 !100 = !DIGlobalVariableExpression(var: !101, expr: !DIExpression())
 !101 = distinct !DIGlobalVariable(name: "foobar10", scope: !102, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !102 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !105)
 !105 = !{!100}
 
- at foobar11 = common dso_local global i8* null, align 8, !dbg !110
+ at foobar11 = common dso_local global ptr null, align 8, !dbg !110
 !110 = !DIGlobalVariableExpression(var: !111, expr: !DIExpression())
 !111 = distinct !DIGlobalVariable(name: "foobar11", scope: !112, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !112 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !115)
 !115 = !{!110}
 
- at foobar12 = common dso_local global i8* null, align 8, !dbg !120
+ at foobar12 = common dso_local global ptr null, align 8, !dbg !120
 !120 = !DIGlobalVariableExpression(var: !121, expr: !DIExpression())
 !121 = distinct !DIGlobalVariable(name: "foobar12", scope: !122, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !122 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !125)
 !125 = !{!120}
 
- at foobar13 = common dso_local global i8* null, align 8, !dbg !130
+ at foobar13 = common dso_local global ptr null, align 8, !dbg !130
 !130 = !DIGlobalVariableExpression(var: !131, expr: !DIExpression())
 !131 = distinct !DIGlobalVariable(name: "foobar13", scope: !132, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !132 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !135)
 !135 = !{!130}
 
- at foobar14 = common dso_local global i8* null, align 8, !dbg !140
+ at foobar14 = common dso_local global ptr null, align 8, !dbg !140
 !140 = !DIGlobalVariableExpression(var: !141, expr: !DIExpression())
 !141 = distinct !DIGlobalVariable(name: "foobar14", scope: !142, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !142 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !145)
 !145 = !{!140}
 
- at foobar15 = common dso_local global i8* null, align 8, !dbg !150
+ at foobar15 = common dso_local global ptr null, align 8, !dbg !150
 !150 = !DIGlobalVariableExpression(var: !151, expr: !DIExpression())
 !151 = distinct !DIGlobalVariable(name: "foobar15", scope: !152, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !152 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !155)
 !155 = !{!150}
 
- at foobar16 = common dso_local global i8* null, align 8, !dbg !160
+ at foobar16 = common dso_local global ptr null, align 8, !dbg !160
 !160 = !DIGlobalVariableExpression(var: !161, expr: !DIExpression())
 !161 = distinct !DIGlobalVariable(name: "foobar16", scope: !162, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !162 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !165)
 !165 = !{!160}
 
- at foobar17 = common dso_local global i8* null, align 8, !dbg !170
+ at foobar17 = common dso_local global ptr null, align 8, !dbg !170
 !170 = !DIGlobalVariableExpression(var: !171, expr: !DIExpression())
 !171 = distinct !DIGlobalVariable(name: "foobar17", scope: !172, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !172 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !175)
 !175 = !{!170}
 
- at foobar18 = common dso_local global i8* null, align 8, !dbg !180
+ at foobar18 = common dso_local global ptr null, align 8, !dbg !180
 !180 = !DIGlobalVariableExpression(var: !181, expr: !DIExpression())
 !181 = distinct !DIGlobalVariable(name: "foobar18", scope: !182, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !182 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !185)
 !185 = !{!180}
 
- at foobar19 = common dso_local global i8* null, align 8, !dbg !190
+ at foobar19 = common dso_local global ptr null, align 8, !dbg !190
 !190 = !DIGlobalVariableExpression(var: !191, expr: !DIExpression())
 !191 = distinct !DIGlobalVariable(name: "foobar19", scope: !192, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !192 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !195)
 !195 = !{!190}
 
- at foobar20 = common dso_local global i8* null, align 8, !dbg !200
+ at foobar20 = common dso_local global ptr null, align 8, !dbg !200
 !200 = !DIGlobalVariableExpression(var: !201, expr: !DIExpression())
 !201 = distinct !DIGlobalVariable(name: "foobar20", scope: !202, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !202 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !205)
 !205 = !{!200}
 
- at foobar21 = common dso_local global i8* null, align 8, !dbg !210
+ at foobar21 = common dso_local global ptr null, align 8, !dbg !210
 !210 = !DIGlobalVariableExpression(var: !211, expr: !DIExpression())
 !211 = distinct !DIGlobalVariable(name: "foobar21", scope: !212, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !212 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !215)
 !215 = !{!210}
 
- at foobar22 = common dso_local global i8* null, align 8, !dbg !220
+ at foobar22 = common dso_local global ptr null, align 8, !dbg !220
 !220 = !DIGlobalVariableExpression(var: !221, expr: !DIExpression())
 !221 = distinct !DIGlobalVariable(name: "foobar22", scope: !222, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !222 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !225)
 !225 = !{!220}
 
- at foobar23 = common dso_local global i8* null, align 8, !dbg !230
+ at foobar23 = common dso_local global ptr null, align 8, !dbg !230
 !230 = !DIGlobalVariableExpression(var: !231, expr: !DIExpression())
 !231 = distinct !DIGlobalVariable(name: "foobar23", scope: !232, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !232 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !235)
 !235 = !{!230}
 
- at foobar24 = common dso_local global i8* null, align 8, !dbg !240
+ at foobar24 = common dso_local global ptr null, align 8, !dbg !240
 !240 = !DIGlobalVariableExpression(var: !241, expr: !DIExpression())
 !241 = distinct !DIGlobalVariable(name: "foobar24", scope: !242, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !242 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !245)
 !245 = !{!240}
 
- at foobar25 = common dso_local global i8* null, align 8, !dbg !250
+ at foobar25 = common dso_local global ptr null, align 8, !dbg !250
 !250 = !DIGlobalVariableExpression(var: !251, expr: !DIExpression())
 !251 = distinct !DIGlobalVariable(name: "foobar25", scope: !252, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !252 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !255)
 !255 = !{!250}
 
- at foobar26 = common dso_local global i8* null, align 8, !dbg !260
+ at foobar26 = common dso_local global ptr null, align 8, !dbg !260
 !260 = !DIGlobalVariableExpression(var: !261, expr: !DIExpression())
 !261 = distinct !DIGlobalVariable(name: "foobar26", scope: !262, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !262 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !265)
 !265 = !{!260}
 
- at foobar27 = common dso_local global i8* null, align 8, !dbg !270
+ at foobar27 = common dso_local global ptr null, align 8, !dbg !270
 !270 = !DIGlobalVariableExpression(var: !271, expr: !DIExpression())
 !271 = distinct !DIGlobalVariable(name: "foobar27", scope: !272, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !272 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !275)
 !275 = !{!270}
 
- at foobar28 = common dso_local global i8* null, align 8, !dbg !280
+ at foobar28 = common dso_local global ptr null, align 8, !dbg !280
 !280 = !DIGlobalVariableExpression(var: !281, expr: !DIExpression())
 !281 = distinct !DIGlobalVariable(name: "foobar28", scope: !282, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !282 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !285)
 !285 = !{!280}
 
- at foobar29 = common dso_local global i8* null, align 8, !dbg !290
+ at foobar29 = common dso_local global ptr null, align 8, !dbg !290
 !290 = !DIGlobalVariableExpression(var: !291, expr: !DIExpression())
 !291 = distinct !DIGlobalVariable(name: "foobar29", scope: !292, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !292 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !295)
 !295 = !{!290}
 
- at foobar30 = common dso_local global i8* null, align 8, !dbg !300
+ at foobar30 = common dso_local global ptr null, align 8, !dbg !300
 !300 = !DIGlobalVariableExpression(var: !301, expr: !DIExpression())
 !301 = distinct !DIGlobalVariable(name: "foobar30", scope: !302, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !302 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !305)
 !305 = !{!300}
 
- at foobar31 = common dso_local global i8* null, align 8, !dbg !310
+ at foobar31 = common dso_local global ptr null, align 8, !dbg !310
 !310 = !DIGlobalVariableExpression(var: !311, expr: !DIExpression())
 !311 = distinct !DIGlobalVariable(name: "foobar31", scope: !312, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !312 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !315)
 !315 = !{!310}
 
- at foobar32 = common dso_local global i8* null, align 8, !dbg !320
+ at foobar32 = common dso_local global ptr null, align 8, !dbg !320
 !320 = !DIGlobalVariableExpression(var: !321, expr: !DIExpression())
 !321 = distinct !DIGlobalVariable(name: "foobar32", scope: !322, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !322 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !325)
 !325 = !{!320}
 
- at foobar33 = common dso_local global i8* null, align 8, !dbg !330
+ at foobar33 = common dso_local global ptr null, align 8, !dbg !330
 !330 = !DIGlobalVariableExpression(var: !331, expr: !DIExpression())
 !331 = distinct !DIGlobalVariable(name: "foobar33", scope: !332, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !332 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !335)
 !335 = !{!330}
 
- at foobar34 = common dso_local global i8* null, align 8, !dbg !340
+ at foobar34 = common dso_local global ptr null, align 8, !dbg !340
 !340 = !DIGlobalVariableExpression(var: !341, expr: !DIExpression())
 !341 = distinct !DIGlobalVariable(name: "foobar34", scope: !342, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !342 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !345)
 !345 = !{!340}
 
- at foobar35 = common dso_local global i8* null, align 8, !dbg !350
+ at foobar35 = common dso_local global ptr null, align 8, !dbg !350
 !350 = !DIGlobalVariableExpression(var: !351, expr: !DIExpression())
 !351 = distinct !DIGlobalVariable(name: "foobar35", scope: !352, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !352 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !355)
 !355 = !{!350}
 
- at foobar36 = common dso_local global i8* null, align 8, !dbg !360
+ at foobar36 = common dso_local global ptr null, align 8, !dbg !360
 !360 = !DIGlobalVariableExpression(var: !361, expr: !DIExpression())
 !361 = distinct !DIGlobalVariable(name: "foobar36", scope: !362, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !362 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !365)
 !365 = !{!360}
 
- at foobar37 = common dso_local global i8* null, align 8, !dbg !370
+ at foobar37 = common dso_local global ptr null, align 8, !dbg !370
 !370 = !DIGlobalVariableExpression(var: !371, expr: !DIExpression())
 !371 = distinct !DIGlobalVariable(name: "foobar37", scope: !372, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !372 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !375)
 !375 = !{!370}
 
- at foobar38 = common dso_local global i8* null, align 8, !dbg !380
+ at foobar38 = common dso_local global ptr null, align 8, !dbg !380
 !380 = !DIGlobalVariableExpression(var: !381, expr: !DIExpression())
 !381 = distinct !DIGlobalVariable(name: "foobar38", scope: !382, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !382 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !385)
 !385 = !{!380}
 
- at foobar39 = common dso_local global i8* null, align 8, !dbg !390
+ at foobar39 = common dso_local global ptr null, align 8, !dbg !390
 !390 = !DIGlobalVariableExpression(var: !391, expr: !DIExpression())
 !391 = distinct !DIGlobalVariable(name: "foobar39", scope: !392, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !392 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !395)
 !395 = !{!390}
 
- at foobar40 = common dso_local global i8* null, align 8, !dbg !400
+ at foobar40 = common dso_local global ptr null, align 8, !dbg !400
 !400 = !DIGlobalVariableExpression(var: !401, expr: !DIExpression())
 !401 = distinct !DIGlobalVariable(name: "foobar40", scope: !402, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !402 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !405)
 !405 = !{!400}
 
- at foobar41 = common dso_local global i8* null, align 8, !dbg !410
+ at foobar41 = common dso_local global ptr null, align 8, !dbg !410
 !410 = !DIGlobalVariableExpression(var: !411, expr: !DIExpression())
 !411 = distinct !DIGlobalVariable(name: "foobar41", scope: !412, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !412 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !415)
 !415 = !{!410}
 
- at foobar42 = common dso_local global i8* null, align 8, !dbg !420
+ at foobar42 = common dso_local global ptr null, align 8, !dbg !420
 !420 = !DIGlobalVariableExpression(var: !421, expr: !DIExpression())
 !421 = distinct !DIGlobalVariable(name: "foobar42", scope: !422, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !422 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !425)
 !425 = !{!420}
 
- at foobar43 = common dso_local global i8* null, align 8, !dbg !430
+ at foobar43 = common dso_local global ptr null, align 8, !dbg !430
 !430 = !DIGlobalVariableExpression(var: !431, expr: !DIExpression())
 !431 = distinct !DIGlobalVariable(name: "foobar43", scope: !432, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !432 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !435)
 !435 = !{!430}
 
- at foobar44 = common dso_local global i8* null, align 8, !dbg !440
+ at foobar44 = common dso_local global ptr null, align 8, !dbg !440
 !440 = !DIGlobalVariableExpression(var: !441, expr: !DIExpression())
 !441 = distinct !DIGlobalVariable(name: "foobar44", scope: !442, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !442 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !445)
 !445 = !{!440}
 
- at foobar45 = common dso_local global i8* null, align 8, !dbg !450
+ at foobar45 = common dso_local global ptr null, align 8, !dbg !450
 !450 = !DIGlobalVariableExpression(var: !451, expr: !DIExpression())
 !451 = distinct !DIGlobalVariable(name: "foobar45", scope: !452, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !452 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !455)
 !455 = !{!450}
 
- at foobar46 = common dso_local global i8* null, align 8, !dbg !460
+ at foobar46 = common dso_local global ptr null, align 8, !dbg !460
 !460 = !DIGlobalVariableExpression(var: !461, expr: !DIExpression())
 !461 = distinct !DIGlobalVariable(name: "foobar46", scope: !462, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !462 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !465)
 !465 = !{!460}
 
- at foobar47 = common dso_local global i8* null, align 8, !dbg !470
+ at foobar47 = common dso_local global ptr null, align 8, !dbg !470
 !470 = !DIGlobalVariableExpression(var: !471, expr: !DIExpression())
 !471 = distinct !DIGlobalVariable(name: "foobar47", scope: !472, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !472 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !475)
 !475 = !{!470}
 
- at foobar48 = common dso_local global i8* null, align 8, !dbg !480
+ at foobar48 = common dso_local global ptr null, align 8, !dbg !480
 !480 = !DIGlobalVariableExpression(var: !481, expr: !DIExpression())
 !481 = distinct !DIGlobalVariable(name: "foobar48", scope: !482, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !482 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !485)
 !485 = !{!480}
 
- at foobar49 = common dso_local global i8* null, align 8, !dbg !490
+ at foobar49 = common dso_local global ptr null, align 8, !dbg !490
 !490 = !DIGlobalVariableExpression(var: !491, expr: !DIExpression())
 !491 = distinct !DIGlobalVariable(name: "foobar49", scope: !492, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !492 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !495)
 !495 = !{!490}
 
- at foobar50 = common dso_local global i8* null, align 8, !dbg !500
+ at foobar50 = common dso_local global ptr null, align 8, !dbg !500
 !500 = !DIGlobalVariableExpression(var: !501, expr: !DIExpression())
 !501 = distinct !DIGlobalVariable(name: "foobar50", scope: !502, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !502 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !505)
 !505 = !{!500}
 
- at foobar51 = common dso_local global i8* null, align 8, !dbg !510
+ at foobar51 = common dso_local global ptr null, align 8, !dbg !510
 !510 = !DIGlobalVariableExpression(var: !511, expr: !DIExpression())
 !511 = distinct !DIGlobalVariable(name: "foobar51", scope: !512, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !512 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !515)
 !515 = !{!510}
 
- at foobar52 = common dso_local global i8* null, align 8, !dbg !520
+ at foobar52 = common dso_local global ptr null, align 8, !dbg !520
 !520 = !DIGlobalVariableExpression(var: !521, expr: !DIExpression())
 !521 = distinct !DIGlobalVariable(name: "foobar52", scope: !522, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !522 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !525)
 !525 = !{!520}
 
- at foobar53 = common dso_local global i8* null, align 8, !dbg !530
+ at foobar53 = common dso_local global ptr null, align 8, !dbg !530
 !530 = !DIGlobalVariableExpression(var: !531, expr: !DIExpression())
 !531 = distinct !DIGlobalVariable(name: "foobar53", scope: !532, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !532 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !535)
 !535 = !{!530}
 
- at foobar54 = common dso_local global i8* null, align 8, !dbg !540
+ at foobar54 = common dso_local global ptr null, align 8, !dbg !540
 !540 = !DIGlobalVariableExpression(var: !541, expr: !DIExpression())
 !541 = distinct !DIGlobalVariable(name: "foobar54", scope: !542, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !542 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !545)
 !545 = !{!540}
 
- at foobar55 = common dso_local global i8* null, align 8, !dbg !550
+ at foobar55 = common dso_local global ptr null, align 8, !dbg !550
 !550 = !DIGlobalVariableExpression(var: !551, expr: !DIExpression())
 !551 = distinct !DIGlobalVariable(name: "foobar55", scope: !552, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !552 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !555)
 !555 = !{!550}
 
- at foobar56 = common dso_local global i8* null, align 8, !dbg !560
+ at foobar56 = common dso_local global ptr null, align 8, !dbg !560
 !560 = !DIGlobalVariableExpression(var: !561, expr: !DIExpression())
 !561 = distinct !DIGlobalVariable(name: "foobar56", scope: !562, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !562 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !565)
 !565 = !{!560}
 
- at foobar57 = common dso_local global i8* null, align 8, !dbg !570
+ at foobar57 = common dso_local global ptr null, align 8, !dbg !570
 !570 = !DIGlobalVariableExpression(var: !571, expr: !DIExpression())
 !571 = distinct !DIGlobalVariable(name: "foobar57", scope: !572, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !572 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !575)
 !575 = !{!570}
 
- at foobar58 = common dso_local global i8* null, align 8, !dbg !580
+ at foobar58 = common dso_local global ptr null, align 8, !dbg !580
 !580 = !DIGlobalVariableExpression(var: !581, expr: !DIExpression())
 !581 = distinct !DIGlobalVariable(name: "foobar58", scope: !582, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !582 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !585)
 !585 = !{!580}
 
- at foobar59 = common dso_local global i8* null, align 8, !dbg !590
+ at foobar59 = common dso_local global ptr null, align 8, !dbg !590
 !590 = !DIGlobalVariableExpression(var: !591, expr: !DIExpression())
 !591 = distinct !DIGlobalVariable(name: "foobar59", scope: !592, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !592 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !595)
 !595 = !{!590}
 
- at foobar60 = common dso_local global i8* null, align 8, !dbg !600
+ at foobar60 = common dso_local global ptr null, align 8, !dbg !600
 !600 = !DIGlobalVariableExpression(var: !601, expr: !DIExpression())
 !601 = distinct !DIGlobalVariable(name: "foobar60", scope: !602, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !602 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !605)
 !605 = !{!600}
 
- at foobar61 = common dso_local global i8* null, align 8, !dbg !610
+ at foobar61 = common dso_local global ptr null, align 8, !dbg !610
 !610 = !DIGlobalVariableExpression(var: !611, expr: !DIExpression())
 !611 = distinct !DIGlobalVariable(name: "foobar61", scope: !612, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !612 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !615)
 !615 = !{!610}
 
- at foobar62 = common dso_local global i8* null, align 8, !dbg !620
+ at foobar62 = common dso_local global ptr null, align 8, !dbg !620
 !620 = !DIGlobalVariableExpression(var: !621, expr: !DIExpression())
 !621 = distinct !DIGlobalVariable(name: "foobar62", scope: !622, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !622 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !625)
 !625 = !{!620}
 
- at foobar63 = common dso_local global i8* null, align 8, !dbg !630
+ at foobar63 = common dso_local global ptr null, align 8, !dbg !630
 !630 = !DIGlobalVariableExpression(var: !631, expr: !DIExpression())
 !631 = distinct !DIGlobalVariable(name: "foobar63", scope: !632, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !632 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !635)
 !635 = !{!630}
 
- at foobar64 = common dso_local global i8* null, align 8, !dbg !640
+ at foobar64 = common dso_local global ptr null, align 8, !dbg !640
 !640 = !DIGlobalVariableExpression(var: !641, expr: !DIExpression())
 !641 = distinct !DIGlobalVariable(name: "foobar64", scope: !642, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !642 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !645)
 !645 = !{!640}
 
- at foobar65 = common dso_local global i8* null, align 8, !dbg !650
+ at foobar65 = common dso_local global ptr null, align 8, !dbg !650
 !650 = !DIGlobalVariableExpression(var: !651, expr: !DIExpression())
 !651 = distinct !DIGlobalVariable(name: "foobar65", scope: !652, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !652 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !655)
 !655 = !{!650}
 
- at foobar66 = common dso_local global i8* null, align 8, !dbg !660
+ at foobar66 = common dso_local global ptr null, align 8, !dbg !660
 !660 = !DIGlobalVariableExpression(var: !661, expr: !DIExpression())
 !661 = distinct !DIGlobalVariable(name: "foobar66", scope: !662, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !662 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !665)
 !665 = !{!660}
 
- at foobar67 = common dso_local global i8* null, align 8, !dbg !670
+ at foobar67 = common dso_local global ptr null, align 8, !dbg !670
 !670 = !DIGlobalVariableExpression(var: !671, expr: !DIExpression())
 !671 = distinct !DIGlobalVariable(name: "foobar67", scope: !672, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !672 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !675)
 !675 = !{!670}
 
- at foobar68 = common dso_local global i8* null, align 8, !dbg !680
+ at foobar68 = common dso_local global ptr null, align 8, !dbg !680
 !680 = !DIGlobalVariableExpression(var: !681, expr: !DIExpression())
 !681 = distinct !DIGlobalVariable(name: "foobar68", scope: !682, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !682 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !685)
 !685 = !{!680}
 
- at foobar69 = common dso_local global i8* null, align 8, !dbg !690
+ at foobar69 = common dso_local global ptr null, align 8, !dbg !690
 !690 = !DIGlobalVariableExpression(var: !691, expr: !DIExpression())
 !691 = distinct !DIGlobalVariable(name: "foobar69", scope: !692, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !692 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !695)
 !695 = !{!690}
 
- at foobar70 = common dso_local global i8* null, align 8, !dbg !700
+ at foobar70 = common dso_local global ptr null, align 8, !dbg !700
 !700 = !DIGlobalVariableExpression(var: !701, expr: !DIExpression())
 !701 = distinct !DIGlobalVariable(name: "foobar70", scope: !702, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !702 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !705)
 !705 = !{!700}
 
- at foobar71 = common dso_local global i8* null, align 8, !dbg !710
+ at foobar71 = common dso_local global ptr null, align 8, !dbg !710
 !710 = !DIGlobalVariableExpression(var: !711, expr: !DIExpression())
 !711 = distinct !DIGlobalVariable(name: "foobar71", scope: !712, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !712 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !715)
 !715 = !{!710}
 
- at foobar72 = common dso_local global i8* null, align 8, !dbg !720
+ at foobar72 = common dso_local global ptr null, align 8, !dbg !720
 !720 = !DIGlobalVariableExpression(var: !721, expr: !DIExpression())
 !721 = distinct !DIGlobalVariable(name: "foobar72", scope: !722, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !722 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !725)
 !725 = !{!720}
 
- at foobar73 = common dso_local global i8* null, align 8, !dbg !730
+ at foobar73 = common dso_local global ptr null, align 8, !dbg !730
 !730 = !DIGlobalVariableExpression(var: !731, expr: !DIExpression())
 !731 = distinct !DIGlobalVariable(name: "foobar73", scope: !732, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !732 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !735)
 !735 = !{!730}
 
- at foobar74 = common dso_local global i8* null, align 8, !dbg !740
+ at foobar74 = common dso_local global ptr null, align 8, !dbg !740
 !740 = !DIGlobalVariableExpression(var: !741, expr: !DIExpression())
 !741 = distinct !DIGlobalVariable(name: "foobar74", scope: !742, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !742 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !745)
 !745 = !{!740}
 
- at foobar75 = common dso_local global i8* null, align 8, !dbg !750
+ at foobar75 = common dso_local global ptr null, align 8, !dbg !750
 !750 = !DIGlobalVariableExpression(var: !751, expr: !DIExpression())
 !751 = distinct !DIGlobalVariable(name: "foobar75", scope: !752, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !752 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !755)
 !755 = !{!750}
 
- at foobar76 = common dso_local global i8* null, align 8, !dbg !760
+ at foobar76 = common dso_local global ptr null, align 8, !dbg !760
 !760 = !DIGlobalVariableExpression(var: !761, expr: !DIExpression())
 !761 = distinct !DIGlobalVariable(name: "foobar76", scope: !762, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !762 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !765)
 !765 = !{!760}
 
- at foobar77 = common dso_local global i8* null, align 8, !dbg !770
+ at foobar77 = common dso_local global ptr null, align 8, !dbg !770
 !770 = !DIGlobalVariableExpression(var: !771, expr: !DIExpression())
 !771 = distinct !DIGlobalVariable(name: "foobar77", scope: !772, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !772 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !775)
 !775 = !{!770}
 
- at foobar78 = common dso_local global i8* null, align 8, !dbg !780
+ at foobar78 = common dso_local global ptr null, align 8, !dbg !780
 !780 = !DIGlobalVariableExpression(var: !781, expr: !DIExpression())
 !781 = distinct !DIGlobalVariable(name: "foobar78", scope: !782, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !782 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !785)
 !785 = !{!780}
 
- at foobar79 = common dso_local global i8* null, align 8, !dbg !790
+ at foobar79 = common dso_local global ptr null, align 8, !dbg !790
 !790 = !DIGlobalVariableExpression(var: !791, expr: !DIExpression())
 !791 = distinct !DIGlobalVariable(name: "foobar79", scope: !792, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !792 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !795)
 !795 = !{!790}
 
- at foobar80 = common dso_local global i8* null, align 8, !dbg !800
+ at foobar80 = common dso_local global ptr null, align 8, !dbg !800
 !800 = !DIGlobalVariableExpression(var: !801, expr: !DIExpression())
 !801 = distinct !DIGlobalVariable(name: "foobar80", scope: !802, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !802 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !805)
 !805 = !{!800}
 
- at foobar81 = common dso_local global i8* null, align 8, !dbg !810
+ at foobar81 = common dso_local global ptr null, align 8, !dbg !810
 !810 = !DIGlobalVariableExpression(var: !811, expr: !DIExpression())
 !811 = distinct !DIGlobalVariable(name: "foobar81", scope: !812, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !812 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !815)
 !815 = !{!810}
 
- at foobar82 = common dso_local global i8* null, align 8, !dbg !820
+ at foobar82 = common dso_local global ptr null, align 8, !dbg !820
 !820 = !DIGlobalVariableExpression(var: !821, expr: !DIExpression())
 !821 = distinct !DIGlobalVariable(name: "foobar82", scope: !822, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !822 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !825)
 !825 = !{!820}
 
- at foobar83 = common dso_local global i8* null, align 8, !dbg !830
+ at foobar83 = common dso_local global ptr null, align 8, !dbg !830
 !830 = !DIGlobalVariableExpression(var: !831, expr: !DIExpression())
 !831 = distinct !DIGlobalVariable(name: "foobar83", scope: !832, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !832 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !835)
 !835 = !{!830}
 
- at foobar84 = common dso_local global i8* null, align 8, !dbg !840
+ at foobar84 = common dso_local global ptr null, align 8, !dbg !840
 !840 = !DIGlobalVariableExpression(var: !841, expr: !DIExpression())
 !841 = distinct !DIGlobalVariable(name: "foobar84", scope: !842, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !842 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !845)
 !845 = !{!840}
 
- at foobar85 = common dso_local global i8* null, align 8, !dbg !850
+ at foobar85 = common dso_local global ptr null, align 8, !dbg !850
 !850 = !DIGlobalVariableExpression(var: !851, expr: !DIExpression())
 !851 = distinct !DIGlobalVariable(name: "foobar85", scope: !852, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !852 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !855)
 !855 = !{!850}
 
- at foobar86 = common dso_local global i8* null, align 8, !dbg !860
+ at foobar86 = common dso_local global ptr null, align 8, !dbg !860
 !860 = !DIGlobalVariableExpression(var: !861, expr: !DIExpression())
 !861 = distinct !DIGlobalVariable(name: "foobar86", scope: !862, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !862 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !865)
 !865 = !{!860}
 
- at foobar87 = common dso_local global i8* null, align 8, !dbg !870
+ at foobar87 = common dso_local global ptr null, align 8, !dbg !870
 !870 = !DIGlobalVariableExpression(var: !871, expr: !DIExpression())
 !871 = distinct !DIGlobalVariable(name: "foobar87", scope: !872, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !872 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !875)
 !875 = !{!870}
 
- at foobar88 = common dso_local global i8* null, align 8, !dbg !880
+ at foobar88 = common dso_local global ptr null, align 8, !dbg !880
 !880 = !DIGlobalVariableExpression(var: !881, expr: !DIExpression())
 !881 = distinct !DIGlobalVariable(name: "foobar88", scope: !882, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !882 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !885)
 !885 = !{!880}
 
- at foobar89 = common dso_local global i8* null, align 8, !dbg !890
+ at foobar89 = common dso_local global ptr null, align 8, !dbg !890
 !890 = !DIGlobalVariableExpression(var: !891, expr: !DIExpression())
 !891 = distinct !DIGlobalVariable(name: "foobar89", scope: !892, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !892 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !895)
 !895 = !{!890}
 
- at foobar90 = common dso_local global i8* null, align 8, !dbg !900
+ at foobar90 = common dso_local global ptr null, align 8, !dbg !900
 !900 = !DIGlobalVariableExpression(var: !901, expr: !DIExpression())
 !901 = distinct !DIGlobalVariable(name: "foobar90", scope: !902, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !902 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !905)
 !905 = !{!900}
 
- at foobar91 = common dso_local global i8* null, align 8, !dbg !910
+ at foobar91 = common dso_local global ptr null, align 8, !dbg !910
 !910 = !DIGlobalVariableExpression(var: !911, expr: !DIExpression())
 !911 = distinct !DIGlobalVariable(name: "foobar91", scope: !912, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !912 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !915)
 !915 = !{!910}
 
- at foobar92 = common dso_local global i8* null, align 8, !dbg !920
+ at foobar92 = common dso_local global ptr null, align 8, !dbg !920
 !920 = !DIGlobalVariableExpression(var: !921, expr: !DIExpression())
 !921 = distinct !DIGlobalVariable(name: "foobar92", scope: !922, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !922 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !925)
 !925 = !{!920}
 
- at foobar93 = common dso_local global i8* null, align 8, !dbg !930
+ at foobar93 = common dso_local global ptr null, align 8, !dbg !930
 !930 = !DIGlobalVariableExpression(var: !931, expr: !DIExpression())
 !931 = distinct !DIGlobalVariable(name: "foobar93", scope: !932, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !932 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !935)
 !935 = !{!930}
 
- at foobar94 = common dso_local global i8* null, align 8, !dbg !940
+ at foobar94 = common dso_local global ptr null, align 8, !dbg !940
 !940 = !DIGlobalVariableExpression(var: !941, expr: !DIExpression())
 !941 = distinct !DIGlobalVariable(name: "foobar94", scope: !942, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !942 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !945)
 !945 = !{!940}
 
- at foobar95 = common dso_local global i8* null, align 8, !dbg !950
+ at foobar95 = common dso_local global ptr null, align 8, !dbg !950
 !950 = !DIGlobalVariableExpression(var: !951, expr: !DIExpression())
 !951 = distinct !DIGlobalVariable(name: "foobar95", scope: !952, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !952 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !955)
 !955 = !{!950}
 
- at foobar96 = common dso_local global i8* null, align 8, !dbg !960
+ at foobar96 = common dso_local global ptr null, align 8, !dbg !960
 !960 = !DIGlobalVariableExpression(var: !961, expr: !DIExpression())
 !961 = distinct !DIGlobalVariable(name: "foobar96", scope: !962, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !962 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !965)
 !965 = !{!960}
 
- at foobar97 = common dso_local global i8* null, align 8, !dbg !970
+ at foobar97 = common dso_local global ptr null, align 8, !dbg !970
 !970 = !DIGlobalVariableExpression(var: !971, expr: !DIExpression())
 !971 = distinct !DIGlobalVariable(name: "foobar97", scope: !972, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !972 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !975)
 !975 = !{!970}
 
- at foobar98 = common dso_local global i8* null, align 8, !dbg !980
+ at foobar98 = common dso_local global ptr null, align 8, !dbg !980
 !980 = !DIGlobalVariableExpression(var: !981, expr: !DIExpression())
 !981 = distinct !DIGlobalVariable(name: "foobar98", scope: !982, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !982 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !985)
 !985 = !{!980}
 
- at foobar99 = common dso_local global i8* null, align 8, !dbg !990
+ at foobar99 = common dso_local global ptr null, align 8, !dbg !990
 !990 = !DIGlobalVariableExpression(var: !991, expr: !DIExpression())
 !991 = distinct !DIGlobalVariable(name: "foobar99", scope: !992, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !992 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !995)
 !995 = !{!990}
 
- at foobar100 = common dso_local global i8* null, align 8, !dbg !1000
+ at foobar100 = common dso_local global ptr null, align 8, !dbg !1000
 !1000 = !DIGlobalVariableExpression(var: !1001, expr: !DIExpression())
 !1001 = distinct !DIGlobalVariable(name: "foobar100", scope: !1002, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1002 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1005)
 !1005 = !{!1000}
 
- at foobar101 = common dso_local global i8* null, align 8, !dbg !1010
+ at foobar101 = common dso_local global ptr null, align 8, !dbg !1010
 !1010 = !DIGlobalVariableExpression(var: !1011, expr: !DIExpression())
 !1011 = distinct !DIGlobalVariable(name: "foobar101", scope: !1012, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1012 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1015)
 !1015 = !{!1010}
 
- at foobar102 = common dso_local global i8* null, align 8, !dbg !1020
+ at foobar102 = common dso_local global ptr null, align 8, !dbg !1020
 !1020 = !DIGlobalVariableExpression(var: !1021, expr: !DIExpression())
 !1021 = distinct !DIGlobalVariable(name: "foobar102", scope: !1022, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1022 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1025)
 !1025 = !{!1020}
 
- at foobar103 = common dso_local global i8* null, align 8, !dbg !1030
+ at foobar103 = common dso_local global ptr null, align 8, !dbg !1030
 !1030 = !DIGlobalVariableExpression(var: !1031, expr: !DIExpression())
 !1031 = distinct !DIGlobalVariable(name: "foobar103", scope: !1032, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1032 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1035)
 !1035 = !{!1030}
 
- at foobar104 = common dso_local global i8* null, align 8, !dbg !1040
+ at foobar104 = common dso_local global ptr null, align 8, !dbg !1040
 !1040 = !DIGlobalVariableExpression(var: !1041, expr: !DIExpression())
 !1041 = distinct !DIGlobalVariable(name: "foobar104", scope: !1042, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1042 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1045)
 !1045 = !{!1040}
 
- at foobar105 = common dso_local global i8* null, align 8, !dbg !1050
+ at foobar105 = common dso_local global ptr null, align 8, !dbg !1050
 !1050 = !DIGlobalVariableExpression(var: !1051, expr: !DIExpression())
 !1051 = distinct !DIGlobalVariable(name: "foobar105", scope: !1052, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1052 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1055)
 !1055 = !{!1050}
 
- at foobar106 = common dso_local global i8* null, align 8, !dbg !1060
+ at foobar106 = common dso_local global ptr null, align 8, !dbg !1060
 !1060 = !DIGlobalVariableExpression(var: !1061, expr: !DIExpression())
 !1061 = distinct !DIGlobalVariable(name: "foobar106", scope: !1062, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1062 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1065)
 !1065 = !{!1060}
 
- at foobar107 = common dso_local global i8* null, align 8, !dbg !1070
+ at foobar107 = common dso_local global ptr null, align 8, !dbg !1070
 !1070 = !DIGlobalVariableExpression(var: !1071, expr: !DIExpression())
 !1071 = distinct !DIGlobalVariable(name: "foobar107", scope: !1072, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1072 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1075)
 !1075 = !{!1070}
 
- at foobar108 = common dso_local global i8* null, align 8, !dbg !1080
+ at foobar108 = common dso_local global ptr null, align 8, !dbg !1080
 !1080 = !DIGlobalVariableExpression(var: !1081, expr: !DIExpression())
 !1081 = distinct !DIGlobalVariable(name: "foobar108", scope: !1082, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1082 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1085)
 !1085 = !{!1080}
 
- at foobar109 = common dso_local global i8* null, align 8, !dbg !1090
+ at foobar109 = common dso_local global ptr null, align 8, !dbg !1090
 !1090 = !DIGlobalVariableExpression(var: !1091, expr: !DIExpression())
 !1091 = distinct !DIGlobalVariable(name: "foobar109", scope: !1092, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1092 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1095)
 !1095 = !{!1090}
 
- at foobar110 = common dso_local global i8* null, align 8, !dbg !1100
+ at foobar110 = common dso_local global ptr null, align 8, !dbg !1100
 !1100 = !DIGlobalVariableExpression(var: !1101, expr: !DIExpression())
 !1101 = distinct !DIGlobalVariable(name: "foobar110", scope: !1102, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1102 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1105)
 !1105 = !{!1100}
 
- at foobar111 = common dso_local global i8* null, align 8, !dbg !1110
+ at foobar111 = common dso_local global ptr null, align 8, !dbg !1110
 !1110 = !DIGlobalVariableExpression(var: !1111, expr: !DIExpression())
 !1111 = distinct !DIGlobalVariable(name: "foobar111", scope: !1112, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1112 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1115)
 !1115 = !{!1110}
 
- at foobar112 = common dso_local global i8* null, align 8, !dbg !1120
+ at foobar112 = common dso_local global ptr null, align 8, !dbg !1120
 !1120 = !DIGlobalVariableExpression(var: !1121, expr: !DIExpression())
 !1121 = distinct !DIGlobalVariable(name: "foobar112", scope: !1122, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1122 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1125)
 !1125 = !{!1120}
 
- at foobar113 = common dso_local global i8* null, align 8, !dbg !1130
+ at foobar113 = common dso_local global ptr null, align 8, !dbg !1130
 !1130 = !DIGlobalVariableExpression(var: !1131, expr: !DIExpression())
 !1131 = distinct !DIGlobalVariable(name: "foobar113", scope: !1132, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1132 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1135)
 !1135 = !{!1130}
 
- at foobar114 = common dso_local global i8* null, align 8, !dbg !1140
+ at foobar114 = common dso_local global ptr null, align 8, !dbg !1140
 !1140 = !DIGlobalVariableExpression(var: !1141, expr: !DIExpression())
 !1141 = distinct !DIGlobalVariable(name: "foobar114", scope: !1142, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1142 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1145)
 !1145 = !{!1140}
 
- at foobar115 = common dso_local global i8* null, align 8, !dbg !1150
+ at foobar115 = common dso_local global ptr null, align 8, !dbg !1150
 !1150 = !DIGlobalVariableExpression(var: !1151, expr: !DIExpression())
 !1151 = distinct !DIGlobalVariable(name: "foobar115", scope: !1152, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1152 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1155)
 !1155 = !{!1150}
 
- at foobar116 = common dso_local global i8* null, align 8, !dbg !1160
+ at foobar116 = common dso_local global ptr null, align 8, !dbg !1160
 !1160 = !DIGlobalVariableExpression(var: !1161, expr: !DIExpression())
 !1161 = distinct !DIGlobalVariable(name: "foobar116", scope: !1162, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1162 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1165)
 !1165 = !{!1160}
 
- at foobar117 = common dso_local global i8* null, align 8, !dbg !1170
+ at foobar117 = common dso_local global ptr null, align 8, !dbg !1170
 !1170 = !DIGlobalVariableExpression(var: !1171, expr: !DIExpression())
 !1171 = distinct !DIGlobalVariable(name: "foobar117", scope: !1172, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1172 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1175)
 !1175 = !{!1170}
 
- at foobar118 = common dso_local global i8* null, align 8, !dbg !1180
+ at foobar118 = common dso_local global ptr null, align 8, !dbg !1180
 !1180 = !DIGlobalVariableExpression(var: !1181, expr: !DIExpression())
 !1181 = distinct !DIGlobalVariable(name: "foobar118", scope: !1182, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1182 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1185)
 !1185 = !{!1180}
 
- at foobar119 = common dso_local global i8* null, align 8, !dbg !1190
+ at foobar119 = common dso_local global ptr null, align 8, !dbg !1190
 !1190 = !DIGlobalVariableExpression(var: !1191, expr: !DIExpression())
 !1191 = distinct !DIGlobalVariable(name: "foobar119", scope: !1192, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1192 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1195)
 !1195 = !{!1190}
 
- at foobar120 = common dso_local global i8* null, align 8, !dbg !1200
+ at foobar120 = common dso_local global ptr null, align 8, !dbg !1200
 !1200 = !DIGlobalVariableExpression(var: !1201, expr: !DIExpression())
 !1201 = distinct !DIGlobalVariable(name: "foobar120", scope: !1202, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1202 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1205)
 !1205 = !{!1200}
 
- at foobar121 = common dso_local global i8* null, align 8, !dbg !1210
+ at foobar121 = common dso_local global ptr null, align 8, !dbg !1210
 !1210 = !DIGlobalVariableExpression(var: !1211, expr: !DIExpression())
 !1211 = distinct !DIGlobalVariable(name: "foobar121", scope: !1212, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1212 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1215)
 !1215 = !{!1210}
 
- at foobar122 = common dso_local global i8* null, align 8, !dbg !1220
+ at foobar122 = common dso_local global ptr null, align 8, !dbg !1220
 !1220 = !DIGlobalVariableExpression(var: !1221, expr: !DIExpression())
 !1221 = distinct !DIGlobalVariable(name: "foobar122", scope: !1222, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1222 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1225)
 !1225 = !{!1220}
 
- at foobar123 = common dso_local global i8* null, align 8, !dbg !1230
+ at foobar123 = common dso_local global ptr null, align 8, !dbg !1230
 !1230 = !DIGlobalVariableExpression(var: !1231, expr: !DIExpression())
 !1231 = distinct !DIGlobalVariable(name: "foobar123", scope: !1232, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1232 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1235)
 !1235 = !{!1230}
 
- at foobar124 = common dso_local global i8* null, align 8, !dbg !1240
+ at foobar124 = common dso_local global ptr null, align 8, !dbg !1240
 !1240 = !DIGlobalVariableExpression(var: !1241, expr: !DIExpression())
 !1241 = distinct !DIGlobalVariable(name: "foobar124", scope: !1242, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1242 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1245)
 !1245 = !{!1240}
 
- at foobar125 = common dso_local global i8* null, align 8, !dbg !1250
+ at foobar125 = common dso_local global ptr null, align 8, !dbg !1250
 !1250 = !DIGlobalVariableExpression(var: !1251, expr: !DIExpression())
 !1251 = distinct !DIGlobalVariable(name: "foobar125", scope: !1252, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1252 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1255)
 !1255 = !{!1250}
 
- at foobar126 = common dso_local global i8* null, align 8, !dbg !1260
+ at foobar126 = common dso_local global ptr null, align 8, !dbg !1260
 !1260 = !DIGlobalVariableExpression(var: !1261, expr: !DIExpression())
 !1261 = distinct !DIGlobalVariable(name: "foobar126", scope: !1262, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1262 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1265)
 !1265 = !{!1260}
 
- at foobar127 = common dso_local global i8* null, align 8, !dbg !1270
+ at foobar127 = common dso_local global ptr null, align 8, !dbg !1270
 !1270 = !DIGlobalVariableExpression(var: !1271, expr: !DIExpression())
 !1271 = distinct !DIGlobalVariable(name: "foobar127", scope: !1272, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1272 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1275)
 !1275 = !{!1270}
 
- at foobar128 = common dso_local global i8* null, align 8, !dbg !1280
+ at foobar128 = common dso_local global ptr null, align 8, !dbg !1280
 !1280 = !DIGlobalVariableExpression(var: !1281, expr: !DIExpression())
 !1281 = distinct !DIGlobalVariable(name: "foobar128", scope: !1282, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1282 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1285)
 !1285 = !{!1280}
 
- at foobar129 = common dso_local global i8* null, align 8, !dbg !1290
+ at foobar129 = common dso_local global ptr null, align 8, !dbg !1290
 !1290 = !DIGlobalVariableExpression(var: !1291, expr: !DIExpression())
 !1291 = distinct !DIGlobalVariable(name: "foobar129", scope: !1292, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1292 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1295)
 !1295 = !{!1290}
 
- at foobar130 = common dso_local global i8* null, align 8, !dbg !1300
+ at foobar130 = common dso_local global ptr null, align 8, !dbg !1300
 !1300 = !DIGlobalVariableExpression(var: !1301, expr: !DIExpression())
 !1301 = distinct !DIGlobalVariable(name: "foobar130", scope: !1302, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1302 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1305)
 !1305 = !{!1300}
 
- at foobar131 = common dso_local global i8* null, align 8, !dbg !1310
+ at foobar131 = common dso_local global ptr null, align 8, !dbg !1310
 !1310 = !DIGlobalVariableExpression(var: !1311, expr: !DIExpression())
 !1311 = distinct !DIGlobalVariable(name: "foobar131", scope: !1312, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1312 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1315)
 !1315 = !{!1310}
 
- at foobar132 = common dso_local global i8* null, align 8, !dbg !1320
+ at foobar132 = common dso_local global ptr null, align 8, !dbg !1320
 !1320 = !DIGlobalVariableExpression(var: !1321, expr: !DIExpression())
 !1321 = distinct !DIGlobalVariable(name: "foobar132", scope: !1322, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1322 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1325)
 !1325 = !{!1320}
 
- at foobar133 = common dso_local global i8* null, align 8, !dbg !1330
+ at foobar133 = common dso_local global ptr null, align 8, !dbg !1330
 !1330 = !DIGlobalVariableExpression(var: !1331, expr: !DIExpression())
 !1331 = distinct !DIGlobalVariable(name: "foobar133", scope: !1332, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1332 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1335)
 !1335 = !{!1330}
 
- at foobar134 = common dso_local global i8* null, align 8, !dbg !1340
+ at foobar134 = common dso_local global ptr null, align 8, !dbg !1340
 !1340 = !DIGlobalVariableExpression(var: !1341, expr: !DIExpression())
 !1341 = distinct !DIGlobalVariable(name: "foobar134", scope: !1342, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1342 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1345)
 !1345 = !{!1340}
 
- at foobar135 = common dso_local global i8* null, align 8, !dbg !1350
+ at foobar135 = common dso_local global ptr null, align 8, !dbg !1350
 !1350 = !DIGlobalVariableExpression(var: !1351, expr: !DIExpression())
 !1351 = distinct !DIGlobalVariable(name: "foobar135", scope: !1352, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1352 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1355)
 !1355 = !{!1350}
 
- at foobar136 = common dso_local global i8* null, align 8, !dbg !1360
+ at foobar136 = common dso_local global ptr null, align 8, !dbg !1360
 !1360 = !DIGlobalVariableExpression(var: !1361, expr: !DIExpression())
 !1361 = distinct !DIGlobalVariable(name: "foobar136", scope: !1362, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1362 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1365)
 !1365 = !{!1360}
 
- at foobar137 = common dso_local global i8* null, align 8, !dbg !1370
+ at foobar137 = common dso_local global ptr null, align 8, !dbg !1370
 !1370 = !DIGlobalVariableExpression(var: !1371, expr: !DIExpression())
 !1371 = distinct !DIGlobalVariable(name: "foobar137", scope: !1372, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1372 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1375)
 !1375 = !{!1370}
 
- at foobar138 = common dso_local global i8* null, align 8, !dbg !1380
+ at foobar138 = common dso_local global ptr null, align 8, !dbg !1380
 !1380 = !DIGlobalVariableExpression(var: !1381, expr: !DIExpression())
 !1381 = distinct !DIGlobalVariable(name: "foobar138", scope: !1382, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1382 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1385)
 !1385 = !{!1380}
 
- at foobar139 = common dso_local global i8* null, align 8, !dbg !1390
+ at foobar139 = common dso_local global ptr null, align 8, !dbg !1390
 !1390 = !DIGlobalVariableExpression(var: !1391, expr: !DIExpression())
 !1391 = distinct !DIGlobalVariable(name: "foobar139", scope: !1392, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1392 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1395)
 !1395 = !{!1390}
 
- at foobar140 = common dso_local global i8* null, align 8, !dbg !1400
+ at foobar140 = common dso_local global ptr null, align 8, !dbg !1400
 !1400 = !DIGlobalVariableExpression(var: !1401, expr: !DIExpression())
 !1401 = distinct !DIGlobalVariable(name: "foobar140", scope: !1402, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1402 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1405)
 !1405 = !{!1400}
 
- at foobar141 = common dso_local global i8* null, align 8, !dbg !1410
+ at foobar141 = common dso_local global ptr null, align 8, !dbg !1410
 !1410 = !DIGlobalVariableExpression(var: !1411, expr: !DIExpression())
 !1411 = distinct !DIGlobalVariable(name: "foobar141", scope: !1412, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1412 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1415)
 !1415 = !{!1410}
 
- at foobar142 = common dso_local global i8* null, align 8, !dbg !1420
+ at foobar142 = common dso_local global ptr null, align 8, !dbg !1420
 !1420 = !DIGlobalVariableExpression(var: !1421, expr: !DIExpression())
 !1421 = distinct !DIGlobalVariable(name: "foobar142", scope: !1422, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1422 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1425)
 !1425 = !{!1420}
 
- at foobar143 = common dso_local global i8* null, align 8, !dbg !1430
+ at foobar143 = common dso_local global ptr null, align 8, !dbg !1430
 !1430 = !DIGlobalVariableExpression(var: !1431, expr: !DIExpression())
 !1431 = distinct !DIGlobalVariable(name: "foobar143", scope: !1432, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1432 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1435)
 !1435 = !{!1430}
 
- at foobar144 = common dso_local global i8* null, align 8, !dbg !1440
+ at foobar144 = common dso_local global ptr null, align 8, !dbg !1440
 !1440 = !DIGlobalVariableExpression(var: !1441, expr: !DIExpression())
 !1441 = distinct !DIGlobalVariable(name: "foobar144", scope: !1442, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1442 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1445)
 !1445 = !{!1440}
 
- at foobar145 = common dso_local global i8* null, align 8, !dbg !1450
+ at foobar145 = common dso_local global ptr null, align 8, !dbg !1450
 !1450 = !DIGlobalVariableExpression(var: !1451, expr: !DIExpression())
 !1451 = distinct !DIGlobalVariable(name: "foobar145", scope: !1452, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1452 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1455)
 !1455 = !{!1450}
 
- at foobar146 = common dso_local global i8* null, align 8, !dbg !1460
+ at foobar146 = common dso_local global ptr null, align 8, !dbg !1460
 !1460 = !DIGlobalVariableExpression(var: !1461, expr: !DIExpression())
 !1461 = distinct !DIGlobalVariable(name: "foobar146", scope: !1462, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1462 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1465)
 !1465 = !{!1460}
 
- at foobar147 = common dso_local global i8* null, align 8, !dbg !1470
+ at foobar147 = common dso_local global ptr null, align 8, !dbg !1470
 !1470 = !DIGlobalVariableExpression(var: !1471, expr: !DIExpression())
 !1471 = distinct !DIGlobalVariable(name: "foobar147", scope: !1472, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1472 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1475)
 !1475 = !{!1470}
 
- at foobar148 = common dso_local global i8* null, align 8, !dbg !1480
+ at foobar148 = common dso_local global ptr null, align 8, !dbg !1480
 !1480 = !DIGlobalVariableExpression(var: !1481, expr: !DIExpression())
 !1481 = distinct !DIGlobalVariable(name: "foobar148", scope: !1482, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1482 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1485)
 !1485 = !{!1480}
 
- at foobar149 = common dso_local global i8* null, align 8, !dbg !1490
+ at foobar149 = common dso_local global ptr null, align 8, !dbg !1490
 !1490 = !DIGlobalVariableExpression(var: !1491, expr: !DIExpression())
 !1491 = distinct !DIGlobalVariable(name: "foobar149", scope: !1492, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1492 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1495)
 !1495 = !{!1490}
 
- at foobar150 = common dso_local global i8* null, align 8, !dbg !1500
+ at foobar150 = common dso_local global ptr null, align 8, !dbg !1500
 !1500 = !DIGlobalVariableExpression(var: !1501, expr: !DIExpression())
 !1501 = distinct !DIGlobalVariable(name: "foobar150", scope: !1502, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1502 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1505)
 !1505 = !{!1500}
 
- at foobar151 = common dso_local global i8* null, align 8, !dbg !1510
+ at foobar151 = common dso_local global ptr null, align 8, !dbg !1510
 !1510 = !DIGlobalVariableExpression(var: !1511, expr: !DIExpression())
 !1511 = distinct !DIGlobalVariable(name: "foobar151", scope: !1512, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1512 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1515)
 !1515 = !{!1510}
 
- at foobar152 = common dso_local global i8* null, align 8, !dbg !1520
+ at foobar152 = common dso_local global ptr null, align 8, !dbg !1520
 !1520 = !DIGlobalVariableExpression(var: !1521, expr: !DIExpression())
 !1521 = distinct !DIGlobalVariable(name: "foobar152", scope: !1522, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1522 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1525)
 !1525 = !{!1520}
 
- at foobar153 = common dso_local global i8* null, align 8, !dbg !1530
+ at foobar153 = common dso_local global ptr null, align 8, !dbg !1530
 !1530 = !DIGlobalVariableExpression(var: !1531, expr: !DIExpression())
 !1531 = distinct !DIGlobalVariable(name: "foobar153", scope: !1532, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1532 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1535)
 !1535 = !{!1530}
 
- at foobar154 = common dso_local global i8* null, align 8, !dbg !1540
+ at foobar154 = common dso_local global ptr null, align 8, !dbg !1540
 !1540 = !DIGlobalVariableExpression(var: !1541, expr: !DIExpression())
 !1541 = distinct !DIGlobalVariable(name: "foobar154", scope: !1542, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1542 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1545)
 !1545 = !{!1540}
 
- at foobar155 = common dso_local global i8* null, align 8, !dbg !1550
+ at foobar155 = common dso_local global ptr null, align 8, !dbg !1550
 !1550 = !DIGlobalVariableExpression(var: !1551, expr: !DIExpression())
 !1551 = distinct !DIGlobalVariable(name: "foobar155", scope: !1552, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1552 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1555)
 !1555 = !{!1550}
 
- at foobar156 = common dso_local global i8* null, align 8, !dbg !1560
+ at foobar156 = common dso_local global ptr null, align 8, !dbg !1560
 !1560 = !DIGlobalVariableExpression(var: !1561, expr: !DIExpression())
 !1561 = distinct !DIGlobalVariable(name: "foobar156", scope: !1562, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1562 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1565)
 !1565 = !{!1560}
 
- at foobar157 = common dso_local global i8* null, align 8, !dbg !1570
+ at foobar157 = common dso_local global ptr null, align 8, !dbg !1570
 !1570 = !DIGlobalVariableExpression(var: !1571, expr: !DIExpression())
 !1571 = distinct !DIGlobalVariable(name: "foobar157", scope: !1572, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1572 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1575)
 !1575 = !{!1570}
 
- at foobar158 = common dso_local global i8* null, align 8, !dbg !1580
+ at foobar158 = common dso_local global ptr null, align 8, !dbg !1580
 !1580 = !DIGlobalVariableExpression(var: !1581, expr: !DIExpression())
 !1581 = distinct !DIGlobalVariable(name: "foobar158", scope: !1582, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1582 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1585)
 !1585 = !{!1580}
 
- at foobar159 = common dso_local global i8* null, align 8, !dbg !1590
+ at foobar159 = common dso_local global ptr null, align 8, !dbg !1590
 !1590 = !DIGlobalVariableExpression(var: !1591, expr: !DIExpression())
 !1591 = distinct !DIGlobalVariable(name: "foobar159", scope: !1592, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1592 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1595)
 !1595 = !{!1590}
 
- at foobar160 = common dso_local global i8* null, align 8, !dbg !1600
+ at foobar160 = common dso_local global ptr null, align 8, !dbg !1600
 !1600 = !DIGlobalVariableExpression(var: !1601, expr: !DIExpression())
 !1601 = distinct !DIGlobalVariable(name: "foobar160", scope: !1602, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1602 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1605)
 !1605 = !{!1600}
 
- at foobar161 = common dso_local global i8* null, align 8, !dbg !1610
+ at foobar161 = common dso_local global ptr null, align 8, !dbg !1610
 !1610 = !DIGlobalVariableExpression(var: !1611, expr: !DIExpression())
 !1611 = distinct !DIGlobalVariable(name: "foobar161", scope: !1612, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1612 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1615)
 !1615 = !{!1610}
 
- at foobar162 = common dso_local global i8* null, align 8, !dbg !1620
+ at foobar162 = common dso_local global ptr null, align 8, !dbg !1620
 !1620 = !DIGlobalVariableExpression(var: !1621, expr: !DIExpression())
 !1621 = distinct !DIGlobalVariable(name: "foobar162", scope: !1622, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1622 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1625)
 !1625 = !{!1620}
 
- at foobar163 = common dso_local global i8* null, align 8, !dbg !1630
+ at foobar163 = common dso_local global ptr null, align 8, !dbg !1630
 !1630 = !DIGlobalVariableExpression(var: !1631, expr: !DIExpression())
 !1631 = distinct !DIGlobalVariable(name: "foobar163", scope: !1632, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1632 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1635)
 !1635 = !{!1630}
 
- at foobar164 = common dso_local global i8* null, align 8, !dbg !1640
+ at foobar164 = common dso_local global ptr null, align 8, !dbg !1640
 !1640 = !DIGlobalVariableExpression(var: !1641, expr: !DIExpression())
 !1641 = distinct !DIGlobalVariable(name: "foobar164", scope: !1642, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1642 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1645)
 !1645 = !{!1640}
 
- at foobar165 = common dso_local global i8* null, align 8, !dbg !1650
+ at foobar165 = common dso_local global ptr null, align 8, !dbg !1650
 !1650 = !DIGlobalVariableExpression(var: !1651, expr: !DIExpression())
 !1651 = distinct !DIGlobalVariable(name: "foobar165", scope: !1652, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1652 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1655)
 !1655 = !{!1650}
 
- at foobar166 = common dso_local global i8* null, align 8, !dbg !1660
+ at foobar166 = common dso_local global ptr null, align 8, !dbg !1660
 !1660 = !DIGlobalVariableExpression(var: !1661, expr: !DIExpression())
 !1661 = distinct !DIGlobalVariable(name: "foobar166", scope: !1662, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1662 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1665)
 !1665 = !{!1660}
 
- at foobar167 = common dso_local global i8* null, align 8, !dbg !1670
+ at foobar167 = common dso_local global ptr null, align 8, !dbg !1670
 !1670 = !DIGlobalVariableExpression(var: !1671, expr: !DIExpression())
 !1671 = distinct !DIGlobalVariable(name: "foobar167", scope: !1672, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1672 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1675)
 !1675 = !{!1670}
 
- at foobar168 = common dso_local global i8* null, align 8, !dbg !1680
+ at foobar168 = common dso_local global ptr null, align 8, !dbg !1680
 !1680 = !DIGlobalVariableExpression(var: !1681, expr: !DIExpression())
 !1681 = distinct !DIGlobalVariable(name: "foobar168", scope: !1682, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1682 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1685)
 !1685 = !{!1680}
 
- at foobar169 = common dso_local global i8* null, align 8, !dbg !1690
+ at foobar169 = common dso_local global ptr null, align 8, !dbg !1690
 !1690 = !DIGlobalVariableExpression(var: !1691, expr: !DIExpression())
 !1691 = distinct !DIGlobalVariable(name: "foobar169", scope: !1692, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1692 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1695)
 !1695 = !{!1690}
 
- at foobar170 = common dso_local global i8* null, align 8, !dbg !1700
+ at foobar170 = common dso_local global ptr null, align 8, !dbg !1700
 !1700 = !DIGlobalVariableExpression(var: !1701, expr: !DIExpression())
 !1701 = distinct !DIGlobalVariable(name: "foobar170", scope: !1702, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1702 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1705)
 !1705 = !{!1700}
 
- at foobar171 = common dso_local global i8* null, align 8, !dbg !1710
+ at foobar171 = common dso_local global ptr null, align 8, !dbg !1710
 !1710 = !DIGlobalVariableExpression(var: !1711, expr: !DIExpression())
 !1711 = distinct !DIGlobalVariable(name: "foobar171", scope: !1712, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1712 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1715)
 !1715 = !{!1710}
 
- at foobar172 = common dso_local global i8* null, align 8, !dbg !1720
+ at foobar172 = common dso_local global ptr null, align 8, !dbg !1720
 !1720 = !DIGlobalVariableExpression(var: !1721, expr: !DIExpression())
 !1721 = distinct !DIGlobalVariable(name: "foobar172", scope: !1722, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1722 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1725)
 !1725 = !{!1720}
 
- at foobar173 = common dso_local global i8* null, align 8, !dbg !1730
+ at foobar173 = common dso_local global ptr null, align 8, !dbg !1730
 !1730 = !DIGlobalVariableExpression(var: !1731, expr: !DIExpression())
 !1731 = distinct !DIGlobalVariable(name: "foobar173", scope: !1732, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1732 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1735)
 !1735 = !{!1730}
 
- at foobar174 = common dso_local global i8* null, align 8, !dbg !1740
+ at foobar174 = common dso_local global ptr null, align 8, !dbg !1740
 !1740 = !DIGlobalVariableExpression(var: !1741, expr: !DIExpression())
 !1741 = distinct !DIGlobalVariable(name: "foobar174", scope: !1742, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1742 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1745)
 !1745 = !{!1740}
 
- at foobar175 = common dso_local global i8* null, align 8, !dbg !1750
+ at foobar175 = common dso_local global ptr null, align 8, !dbg !1750
 !1750 = !DIGlobalVariableExpression(var: !1751, expr: !DIExpression())
 !1751 = distinct !DIGlobalVariable(name: "foobar175", scope: !1752, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1752 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1755)
 !1755 = !{!1750}
 
- at foobar176 = common dso_local global i8* null, align 8, !dbg !1760
+ at foobar176 = common dso_local global ptr null, align 8, !dbg !1760
 !1760 = !DIGlobalVariableExpression(var: !1761, expr: !DIExpression())
 !1761 = distinct !DIGlobalVariable(name: "foobar176", scope: !1762, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1762 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1765)
 !1765 = !{!1760}
 
- at foobar177 = common dso_local global i8* null, align 8, !dbg !1770
+ at foobar177 = common dso_local global ptr null, align 8, !dbg !1770
 !1770 = !DIGlobalVariableExpression(var: !1771, expr: !DIExpression())
 !1771 = distinct !DIGlobalVariable(name: "foobar177", scope: !1772, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1772 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1775)
 !1775 = !{!1770}
 
- at foobar178 = common dso_local global i8* null, align 8, !dbg !1780
+ at foobar178 = common dso_local global ptr null, align 8, !dbg !1780
 !1780 = !DIGlobalVariableExpression(var: !1781, expr: !DIExpression())
 !1781 = distinct !DIGlobalVariable(name: "foobar178", scope: !1782, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1782 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1785)
 !1785 = !{!1780}
 
- at foobar179 = common dso_local global i8* null, align 8, !dbg !1790
+ at foobar179 = common dso_local global ptr null, align 8, !dbg !1790
 !1790 = !DIGlobalVariableExpression(var: !1791, expr: !DIExpression())
 !1791 = distinct !DIGlobalVariable(name: "foobar179", scope: !1792, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1792 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1795)
 !1795 = !{!1790}
 
- at foobar180 = common dso_local global i8* null, align 8, !dbg !1800
+ at foobar180 = common dso_local global ptr null, align 8, !dbg !1800
 !1800 = !DIGlobalVariableExpression(var: !1801, expr: !DIExpression())
 !1801 = distinct !DIGlobalVariable(name: "foobar180", scope: !1802, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1802 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1805)
 !1805 = !{!1800}
 
- at foobar181 = common dso_local global i8* null, align 8, !dbg !1810
+ at foobar181 = common dso_local global ptr null, align 8, !dbg !1810
 !1810 = !DIGlobalVariableExpression(var: !1811, expr: !DIExpression())
 !1811 = distinct !DIGlobalVariable(name: "foobar181", scope: !1812, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1812 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1815)
 !1815 = !{!1810}
 
- at foobar182 = common dso_local global i8* null, align 8, !dbg !1820
+ at foobar182 = common dso_local global ptr null, align 8, !dbg !1820
 !1820 = !DIGlobalVariableExpression(var: !1821, expr: !DIExpression())
 !1821 = distinct !DIGlobalVariable(name: "foobar182", scope: !1822, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1822 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1825)
 !1825 = !{!1820}
 
- at foobar183 = common dso_local global i8* null, align 8, !dbg !1830
+ at foobar183 = common dso_local global ptr null, align 8, !dbg !1830
 !1830 = !DIGlobalVariableExpression(var: !1831, expr: !DIExpression())
 !1831 = distinct !DIGlobalVariable(name: "foobar183", scope: !1832, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1832 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1835)
 !1835 = !{!1830}
 
- at foobar184 = common dso_local global i8* null, align 8, !dbg !1840
+ at foobar184 = common dso_local global ptr null, align 8, !dbg !1840
 !1840 = !DIGlobalVariableExpression(var: !1841, expr: !DIExpression())
 !1841 = distinct !DIGlobalVariable(name: "foobar184", scope: !1842, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1842 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1845)
 !1845 = !{!1840}
 
- at foobar185 = common dso_local global i8* null, align 8, !dbg !1850
+ at foobar185 = common dso_local global ptr null, align 8, !dbg !1850
 !1850 = !DIGlobalVariableExpression(var: !1851, expr: !DIExpression())
 !1851 = distinct !DIGlobalVariable(name: "foobar185", scope: !1852, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1852 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1855)
 !1855 = !{!1850}
 
- at foobar186 = common dso_local global i8* null, align 8, !dbg !1860
+ at foobar186 = common dso_local global ptr null, align 8, !dbg !1860
 !1860 = !DIGlobalVariableExpression(var: !1861, expr: !DIExpression())
 !1861 = distinct !DIGlobalVariable(name: "foobar186", scope: !1862, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1862 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1865)
 !1865 = !{!1860}
 
- at foobar187 = common dso_local global i8* null, align 8, !dbg !1870
+ at foobar187 = common dso_local global ptr null, align 8, !dbg !1870
 !1870 = !DIGlobalVariableExpression(var: !1871, expr: !DIExpression())
 !1871 = distinct !DIGlobalVariable(name: "foobar187", scope: !1872, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1872 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1875)
 !1875 = !{!1870}
 
- at foobar188 = common dso_local global i8* null, align 8, !dbg !1880
+ at foobar188 = common dso_local global ptr null, align 8, !dbg !1880
 !1880 = !DIGlobalVariableExpression(var: !1881, expr: !DIExpression())
 !1881 = distinct !DIGlobalVariable(name: "foobar188", scope: !1882, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1882 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1885)
 !1885 = !{!1880}
 
- at foobar189 = common dso_local global i8* null, align 8, !dbg !1890
+ at foobar189 = common dso_local global ptr null, align 8, !dbg !1890
 !1890 = !DIGlobalVariableExpression(var: !1891, expr: !DIExpression())
 !1891 = distinct !DIGlobalVariable(name: "foobar189", scope: !1892, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1892 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1895)
 !1895 = !{!1890}
 
- at foobar190 = common dso_local global i8* null, align 8, !dbg !1900
+ at foobar190 = common dso_local global ptr null, align 8, !dbg !1900
 !1900 = !DIGlobalVariableExpression(var: !1901, expr: !DIExpression())
 !1901 = distinct !DIGlobalVariable(name: "foobar190", scope: !1902, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1902 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1905)
 !1905 = !{!1900}
 
- at foobar191 = common dso_local global i8* null, align 8, !dbg !1910
+ at foobar191 = common dso_local global ptr null, align 8, !dbg !1910
 !1910 = !DIGlobalVariableExpression(var: !1911, expr: !DIExpression())
 !1911 = distinct !DIGlobalVariable(name: "foobar191", scope: !1912, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1912 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1915)
 !1915 = !{!1910}
 
- at foobar192 = common dso_local global i8* null, align 8, !dbg !1920
+ at foobar192 = common dso_local global ptr null, align 8, !dbg !1920
 !1920 = !DIGlobalVariableExpression(var: !1921, expr: !DIExpression())
 !1921 = distinct !DIGlobalVariable(name: "foobar192", scope: !1922, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1922 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1925)
 !1925 = !{!1920}
 
- at foobar193 = common dso_local global i8* null, align 8, !dbg !1930
+ at foobar193 = common dso_local global ptr null, align 8, !dbg !1930
 !1930 = !DIGlobalVariableExpression(var: !1931, expr: !DIExpression())
 !1931 = distinct !DIGlobalVariable(name: "foobar193", scope: !1932, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1932 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1935)
 !1935 = !{!1930}
 
- at foobar194 = common dso_local global i8* null, align 8, !dbg !1940
+ at foobar194 = common dso_local global ptr null, align 8, !dbg !1940
 !1940 = !DIGlobalVariableExpression(var: !1941, expr: !DIExpression())
 !1941 = distinct !DIGlobalVariable(name: "foobar194", scope: !1942, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1942 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1945)
 !1945 = !{!1940}
 
- at foobar195 = common dso_local global i8* null, align 8, !dbg !1950
+ at foobar195 = common dso_local global ptr null, align 8, !dbg !1950
 !1950 = !DIGlobalVariableExpression(var: !1951, expr: !DIExpression())
 !1951 = distinct !DIGlobalVariable(name: "foobar195", scope: !1952, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1952 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1955)
 !1955 = !{!1950}
 
- at foobar196 = common dso_local global i8* null, align 8, !dbg !1960
+ at foobar196 = common dso_local global ptr null, align 8, !dbg !1960
 !1960 = !DIGlobalVariableExpression(var: !1961, expr: !DIExpression())
 !1961 = distinct !DIGlobalVariable(name: "foobar196", scope: !1962, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1962 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1965)
 !1965 = !{!1960}
 
- at foobar197 = common dso_local global i8* null, align 8, !dbg !1970
+ at foobar197 = common dso_local global ptr null, align 8, !dbg !1970
 !1970 = !DIGlobalVariableExpression(var: !1971, expr: !DIExpression())
 !1971 = distinct !DIGlobalVariable(name: "foobar197", scope: !1972, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1972 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1975)
 !1975 = !{!1970}
 
- at foobar198 = common dso_local global i8* null, align 8, !dbg !1980
+ at foobar198 = common dso_local global ptr null, align 8, !dbg !1980
 !1980 = !DIGlobalVariableExpression(var: !1981, expr: !DIExpression())
 !1981 = distinct !DIGlobalVariable(name: "foobar198", scope: !1982, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1982 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1985)
 !1985 = !{!1980}
 
- at foobar199 = common dso_local global i8* null, align 8, !dbg !1990
+ at foobar199 = common dso_local global ptr null, align 8, !dbg !1990
 !1990 = !DIGlobalVariableExpression(var: !1991, expr: !DIExpression())
 !1991 = distinct !DIGlobalVariable(name: "foobar199", scope: !1992, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !1992 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !1995)
 !1995 = !{!1990}
 
- at foobar200 = common dso_local global i8* null, align 8, !dbg !2000
+ at foobar200 = common dso_local global ptr null, align 8, !dbg !2000
 !2000 = !DIGlobalVariableExpression(var: !2001, expr: !DIExpression())
 !2001 = distinct !DIGlobalVariable(name: "foobar200", scope: !2002, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2002 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2005)
 !2005 = !{!2000}
 
- at foobar201 = common dso_local global i8* null, align 8, !dbg !2010
+ at foobar201 = common dso_local global ptr null, align 8, !dbg !2010
 !2010 = !DIGlobalVariableExpression(var: !2011, expr: !DIExpression())
 !2011 = distinct !DIGlobalVariable(name: "foobar201", scope: !2012, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2012 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2015)
 !2015 = !{!2010}
 
- at foobar202 = common dso_local global i8* null, align 8, !dbg !2020
+ at foobar202 = common dso_local global ptr null, align 8, !dbg !2020
 !2020 = !DIGlobalVariableExpression(var: !2021, expr: !DIExpression())
 !2021 = distinct !DIGlobalVariable(name: "foobar202", scope: !2022, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2022 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2025)
 !2025 = !{!2020}
 
- at foobar203 = common dso_local global i8* null, align 8, !dbg !2030
+ at foobar203 = common dso_local global ptr null, align 8, !dbg !2030
 !2030 = !DIGlobalVariableExpression(var: !2031, expr: !DIExpression())
 !2031 = distinct !DIGlobalVariable(name: "foobar203", scope: !2032, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2032 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2035)
 !2035 = !{!2030}
 
- at foobar204 = common dso_local global i8* null, align 8, !dbg !2040
+ at foobar204 = common dso_local global ptr null, align 8, !dbg !2040
 !2040 = !DIGlobalVariableExpression(var: !2041, expr: !DIExpression())
 !2041 = distinct !DIGlobalVariable(name: "foobar204", scope: !2042, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2042 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2045)
 !2045 = !{!2040}
 
- at foobar205 = common dso_local global i8* null, align 8, !dbg !2050
+ at foobar205 = common dso_local global ptr null, align 8, !dbg !2050
 !2050 = !DIGlobalVariableExpression(var: !2051, expr: !DIExpression())
 !2051 = distinct !DIGlobalVariable(name: "foobar205", scope: !2052, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2052 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2055)
 !2055 = !{!2050}
 
- at foobar206 = common dso_local global i8* null, align 8, !dbg !2060
+ at foobar206 = common dso_local global ptr null, align 8, !dbg !2060
 !2060 = !DIGlobalVariableExpression(var: !2061, expr: !DIExpression())
 !2061 = distinct !DIGlobalVariable(name: "foobar206", scope: !2062, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2062 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2065)
 !2065 = !{!2060}
 
- at foobar207 = common dso_local global i8* null, align 8, !dbg !2070
+ at foobar207 = common dso_local global ptr null, align 8, !dbg !2070
 !2070 = !DIGlobalVariableExpression(var: !2071, expr: !DIExpression())
 !2071 = distinct !DIGlobalVariable(name: "foobar207", scope: !2072, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2072 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2075)
 !2075 = !{!2070}
 
- at foobar208 = common dso_local global i8* null, align 8, !dbg !2080
+ at foobar208 = common dso_local global ptr null, align 8, !dbg !2080
 !2080 = !DIGlobalVariableExpression(var: !2081, expr: !DIExpression())
 !2081 = distinct !DIGlobalVariable(name: "foobar208", scope: !2082, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2082 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2085)
 !2085 = !{!2080}
 
- at foobar209 = common dso_local global i8* null, align 8, !dbg !2090
+ at foobar209 = common dso_local global ptr null, align 8, !dbg !2090
 !2090 = !DIGlobalVariableExpression(var: !2091, expr: !DIExpression())
 !2091 = distinct !DIGlobalVariable(name: "foobar209", scope: !2092, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2092 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2095)
 !2095 = !{!2090}
 
- at foobar210 = common dso_local global i8* null, align 8, !dbg !2100
+ at foobar210 = common dso_local global ptr null, align 8, !dbg !2100
 !2100 = !DIGlobalVariableExpression(var: !2101, expr: !DIExpression())
 !2101 = distinct !DIGlobalVariable(name: "foobar210", scope: !2102, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2102 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2105)
 !2105 = !{!2100}
 
- at foobar211 = common dso_local global i8* null, align 8, !dbg !2110
+ at foobar211 = common dso_local global ptr null, align 8, !dbg !2110
 !2110 = !DIGlobalVariableExpression(var: !2111, expr: !DIExpression())
 !2111 = distinct !DIGlobalVariable(name: "foobar211", scope: !2112, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2112 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2115)
 !2115 = !{!2110}
 
- at foobar212 = common dso_local global i8* null, align 8, !dbg !2120
+ at foobar212 = common dso_local global ptr null, align 8, !dbg !2120
 !2120 = !DIGlobalVariableExpression(var: !2121, expr: !DIExpression())
 !2121 = distinct !DIGlobalVariable(name: "foobar212", scope: !2122, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2122 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2125)
 !2125 = !{!2120}
 
- at foobar213 = common dso_local global i8* null, align 8, !dbg !2130
+ at foobar213 = common dso_local global ptr null, align 8, !dbg !2130
 !2130 = !DIGlobalVariableExpression(var: !2131, expr: !DIExpression())
 !2131 = distinct !DIGlobalVariable(name: "foobar213", scope: !2132, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2132 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2135)
 !2135 = !{!2130}
 
- at foobar214 = common dso_local global i8* null, align 8, !dbg !2140
+ at foobar214 = common dso_local global ptr null, align 8, !dbg !2140
 !2140 = !DIGlobalVariableExpression(var: !2141, expr: !DIExpression())
 !2141 = distinct !DIGlobalVariable(name: "foobar214", scope: !2142, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2142 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2145)
 !2145 = !{!2140}
 
- at foobar215 = common dso_local global i8* null, align 8, !dbg !2150
+ at foobar215 = common dso_local global ptr null, align 8, !dbg !2150
 !2150 = !DIGlobalVariableExpression(var: !2151, expr: !DIExpression())
 !2151 = distinct !DIGlobalVariable(name: "foobar215", scope: !2152, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2152 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2155)
 !2155 = !{!2150}
 
- at foobar216 = common dso_local global i8* null, align 8, !dbg !2160
+ at foobar216 = common dso_local global ptr null, align 8, !dbg !2160
 !2160 = !DIGlobalVariableExpression(var: !2161, expr: !DIExpression())
 !2161 = distinct !DIGlobalVariable(name: "foobar216", scope: !2162, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2162 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2165)
 !2165 = !{!2160}
 
- at foobar217 = common dso_local global i8* null, align 8, !dbg !2170
+ at foobar217 = common dso_local global ptr null, align 8, !dbg !2170
 !2170 = !DIGlobalVariableExpression(var: !2171, expr: !DIExpression())
 !2171 = distinct !DIGlobalVariable(name: "foobar217", scope: !2172, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2172 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2175)
 !2175 = !{!2170}
 
- at foobar218 = common dso_local global i8* null, align 8, !dbg !2180
+ at foobar218 = common dso_local global ptr null, align 8, !dbg !2180
 !2180 = !DIGlobalVariableExpression(var: !2181, expr: !DIExpression())
 !2181 = distinct !DIGlobalVariable(name: "foobar218", scope: !2182, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2182 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2185)
 !2185 = !{!2180}
 
- at foobar219 = common dso_local global i8* null, align 8, !dbg !2190
+ at foobar219 = common dso_local global ptr null, align 8, !dbg !2190
 !2190 = !DIGlobalVariableExpression(var: !2191, expr: !DIExpression())
 !2191 = distinct !DIGlobalVariable(name: "foobar219", scope: !2192, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2192 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2195)
 !2195 = !{!2190}
 
- at foobar220 = common dso_local global i8* null, align 8, !dbg !2200
+ at foobar220 = common dso_local global ptr null, align 8, !dbg !2200
 !2200 = !DIGlobalVariableExpression(var: !2201, expr: !DIExpression())
 !2201 = distinct !DIGlobalVariable(name: "foobar220", scope: !2202, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2202 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2205)
 !2205 = !{!2200}
 
- at foobar221 = common dso_local global i8* null, align 8, !dbg !2210
+ at foobar221 = common dso_local global ptr null, align 8, !dbg !2210
 !2210 = !DIGlobalVariableExpression(var: !2211, expr: !DIExpression())
 !2211 = distinct !DIGlobalVariable(name: "foobar221", scope: !2212, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2212 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2215)
 !2215 = !{!2210}
 
- at foobar222 = common dso_local global i8* null, align 8, !dbg !2220
+ at foobar222 = common dso_local global ptr null, align 8, !dbg !2220
 !2220 = !DIGlobalVariableExpression(var: !2221, expr: !DIExpression())
 !2221 = distinct !DIGlobalVariable(name: "foobar222", scope: !2222, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2222 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2225)
 !2225 = !{!2220}
 
- at foobar223 = common dso_local global i8* null, align 8, !dbg !2230
+ at foobar223 = common dso_local global ptr null, align 8, !dbg !2230
 !2230 = !DIGlobalVariableExpression(var: !2231, expr: !DIExpression())
 !2231 = distinct !DIGlobalVariable(name: "foobar223", scope: !2232, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2232 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2235)
 !2235 = !{!2230}
 
- at foobar224 = common dso_local global i8* null, align 8, !dbg !2240
+ at foobar224 = common dso_local global ptr null, align 8, !dbg !2240
 !2240 = !DIGlobalVariableExpression(var: !2241, expr: !DIExpression())
 !2241 = distinct !DIGlobalVariable(name: "foobar224", scope: !2242, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2242 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2245)
 !2245 = !{!2240}
 
- at foobar225 = common dso_local global i8* null, align 8, !dbg !2250
+ at foobar225 = common dso_local global ptr null, align 8, !dbg !2250
 !2250 = !DIGlobalVariableExpression(var: !2251, expr: !DIExpression())
 !2251 = distinct !DIGlobalVariable(name: "foobar225", scope: !2252, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2252 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2255)
 !2255 = !{!2250}
 
- at foobar226 = common dso_local global i8* null, align 8, !dbg !2260
+ at foobar226 = common dso_local global ptr null, align 8, !dbg !2260
 !2260 = !DIGlobalVariableExpression(var: !2261, expr: !DIExpression())
 !2261 = distinct !DIGlobalVariable(name: "foobar226", scope: !2262, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2262 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2265)
 !2265 = !{!2260}
 
- at foobar227 = common dso_local global i8* null, align 8, !dbg !2270
+ at foobar227 = common dso_local global ptr null, align 8, !dbg !2270
 !2270 = !DIGlobalVariableExpression(var: !2271, expr: !DIExpression())
 !2271 = distinct !DIGlobalVariable(name: "foobar227", scope: !2272, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2272 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2275)
 !2275 = !{!2270}
 
- at foobar228 = common dso_local global i8* null, align 8, !dbg !2280
+ at foobar228 = common dso_local global ptr null, align 8, !dbg !2280
 !2280 = !DIGlobalVariableExpression(var: !2281, expr: !DIExpression())
 !2281 = distinct !DIGlobalVariable(name: "foobar228", scope: !2282, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2282 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2285)
 !2285 = !{!2280}
 
- at foobar229 = common dso_local global i8* null, align 8, !dbg !2290
+ at foobar229 = common dso_local global ptr null, align 8, !dbg !2290
 !2290 = !DIGlobalVariableExpression(var: !2291, expr: !DIExpression())
 !2291 = distinct !DIGlobalVariable(name: "foobar229", scope: !2292, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2292 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2295)
 !2295 = !{!2290}
 
- at foobar230 = common dso_local global i8* null, align 8, !dbg !2300
+ at foobar230 = common dso_local global ptr null, align 8, !dbg !2300
 !2300 = !DIGlobalVariableExpression(var: !2301, expr: !DIExpression())
 !2301 = distinct !DIGlobalVariable(name: "foobar230", scope: !2302, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2302 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2305)
 !2305 = !{!2300}
 
- at foobar231 = common dso_local global i8* null, align 8, !dbg !2310
+ at foobar231 = common dso_local global ptr null, align 8, !dbg !2310
 !2310 = !DIGlobalVariableExpression(var: !2311, expr: !DIExpression())
 !2311 = distinct !DIGlobalVariable(name: "foobar231", scope: !2312, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2312 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2315)
 !2315 = !{!2310}
 
- at foobar232 = common dso_local global i8* null, align 8, !dbg !2320
+ at foobar232 = common dso_local global ptr null, align 8, !dbg !2320
 !2320 = !DIGlobalVariableExpression(var: !2321, expr: !DIExpression())
 !2321 = distinct !DIGlobalVariable(name: "foobar232", scope: !2322, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2322 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2325)
 !2325 = !{!2320}
 
- at foobar233 = common dso_local global i8* null, align 8, !dbg !2330
+ at foobar233 = common dso_local global ptr null, align 8, !dbg !2330
 !2330 = !DIGlobalVariableExpression(var: !2331, expr: !DIExpression())
 !2331 = distinct !DIGlobalVariable(name: "foobar233", scope: !2332, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2332 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2335)
 !2335 = !{!2330}
 
- at foobar234 = common dso_local global i8* null, align 8, !dbg !2340
+ at foobar234 = common dso_local global ptr null, align 8, !dbg !2340
 !2340 = !DIGlobalVariableExpression(var: !2341, expr: !DIExpression())
 !2341 = distinct !DIGlobalVariable(name: "foobar234", scope: !2342, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2342 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2345)
 !2345 = !{!2340}
 
- at foobar235 = common dso_local global i8* null, align 8, !dbg !2350
+ at foobar235 = common dso_local global ptr null, align 8, !dbg !2350
 !2350 = !DIGlobalVariableExpression(var: !2351, expr: !DIExpression())
 !2351 = distinct !DIGlobalVariable(name: "foobar235", scope: !2352, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2352 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2355)
 !2355 = !{!2350}
 
- at foobar236 = common dso_local global i8* null, align 8, !dbg !2360
+ at foobar236 = common dso_local global ptr null, align 8, !dbg !2360
 !2360 = !DIGlobalVariableExpression(var: !2361, expr: !DIExpression())
 !2361 = distinct !DIGlobalVariable(name: "foobar236", scope: !2362, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2362 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2365)
 !2365 = !{!2360}
 
- at foobar237 = common dso_local global i8* null, align 8, !dbg !2370
+ at foobar237 = common dso_local global ptr null, align 8, !dbg !2370
 !2370 = !DIGlobalVariableExpression(var: !2371, expr: !DIExpression())
 !2371 = distinct !DIGlobalVariable(name: "foobar237", scope: !2372, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2372 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2375)
 !2375 = !{!2370}
 
- at foobar238 = common dso_local global i8* null, align 8, !dbg !2380
+ at foobar238 = common dso_local global ptr null, align 8, !dbg !2380
 !2380 = !DIGlobalVariableExpression(var: !2381, expr: !DIExpression())
 !2381 = distinct !DIGlobalVariable(name: "foobar238", scope: !2382, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2382 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2385)
 !2385 = !{!2380}
 
- at foobar239 = common dso_local global i8* null, align 8, !dbg !2390
+ at foobar239 = common dso_local global ptr null, align 8, !dbg !2390
 !2390 = !DIGlobalVariableExpression(var: !2391, expr: !DIExpression())
 !2391 = distinct !DIGlobalVariable(name: "foobar239", scope: !2392, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2392 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2395)
 !2395 = !{!2390}
 
- at foobar240 = common dso_local global i8* null, align 8, !dbg !2400
+ at foobar240 = common dso_local global ptr null, align 8, !dbg !2400
 !2400 = !DIGlobalVariableExpression(var: !2401, expr: !DIExpression())
 !2401 = distinct !DIGlobalVariable(name: "foobar240", scope: !2402, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2402 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2405)
 !2405 = !{!2400}
 
- at foobar241 = common dso_local global i8* null, align 8, !dbg !2410
+ at foobar241 = common dso_local global ptr null, align 8, !dbg !2410
 !2410 = !DIGlobalVariableExpression(var: !2411, expr: !DIExpression())
 !2411 = distinct !DIGlobalVariable(name: "foobar241", scope: !2412, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2412 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2415)
 !2415 = !{!2410}
 
- at foobar242 = common dso_local global i8* null, align 8, !dbg !2420
+ at foobar242 = common dso_local global ptr null, align 8, !dbg !2420
 !2420 = !DIGlobalVariableExpression(var: !2421, expr: !DIExpression())
 !2421 = distinct !DIGlobalVariable(name: "foobar242", scope: !2422, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2422 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2425)
 !2425 = !{!2420}
 
- at foobar243 = common dso_local global i8* null, align 8, !dbg !2430
+ at foobar243 = common dso_local global ptr null, align 8, !dbg !2430
 !2430 = !DIGlobalVariableExpression(var: !2431, expr: !DIExpression())
 !2431 = distinct !DIGlobalVariable(name: "foobar243", scope: !2432, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2432 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2435)
 !2435 = !{!2430}
 
- at foobar244 = common dso_local global i8* null, align 8, !dbg !2440
+ at foobar244 = common dso_local global ptr null, align 8, !dbg !2440
 !2440 = !DIGlobalVariableExpression(var: !2441, expr: !DIExpression())
 !2441 = distinct !DIGlobalVariable(name: "foobar244", scope: !2442, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2442 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2445)
 !2445 = !{!2440}
 
- at foobar245 = common dso_local global i8* null, align 8, !dbg !2450
+ at foobar245 = common dso_local global ptr null, align 8, !dbg !2450
 !2450 = !DIGlobalVariableExpression(var: !2451, expr: !DIExpression())
 !2451 = distinct !DIGlobalVariable(name: "foobar245", scope: !2452, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2452 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2455)
 !2455 = !{!2450}
 
- at foobar246 = common dso_local global i8* null, align 8, !dbg !2460
+ at foobar246 = common dso_local global ptr null, align 8, !dbg !2460
 !2460 = !DIGlobalVariableExpression(var: !2461, expr: !DIExpression())
 !2461 = distinct !DIGlobalVariable(name: "foobar246", scope: !2462, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2462 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2465)
 !2465 = !{!2460}
 
- at foobar247 = common dso_local global i8* null, align 8, !dbg !2470
+ at foobar247 = common dso_local global ptr null, align 8, !dbg !2470
 !2470 = !DIGlobalVariableExpression(var: !2471, expr: !DIExpression())
 !2471 = distinct !DIGlobalVariable(name: "foobar247", scope: !2472, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2472 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2475)
 !2475 = !{!2470}
 
- at foobar248 = common dso_local global i8* null, align 8, !dbg !2480
+ at foobar248 = common dso_local global ptr null, align 8, !dbg !2480
 !2480 = !DIGlobalVariableExpression(var: !2481, expr: !DIExpression())
 !2481 = distinct !DIGlobalVariable(name: "foobar248", scope: !2482, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2482 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2485)
 !2485 = !{!2480}
 
- at foobar249 = common dso_local global i8* null, align 8, !dbg !2490
+ at foobar249 = common dso_local global ptr null, align 8, !dbg !2490
 !2490 = !DIGlobalVariableExpression(var: !2491, expr: !DIExpression())
 !2491 = distinct !DIGlobalVariable(name: "foobar249", scope: !2492, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2492 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2495)
 !2495 = !{!2490}
 
- at foobar250 = common dso_local global i8* null, align 8, !dbg !2500
+ at foobar250 = common dso_local global ptr null, align 8, !dbg !2500
 !2500 = !DIGlobalVariableExpression(var: !2501, expr: !DIExpression())
 !2501 = distinct !DIGlobalVariable(name: "foobar250", scope: !2502, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2502 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2505)
 !2505 = !{!2500}
 
- at foobar251 = common dso_local global i8* null, align 8, !dbg !2510
+ at foobar251 = common dso_local global ptr null, align 8, !dbg !2510
 !2510 = !DIGlobalVariableExpression(var: !2511, expr: !DIExpression())
 !2511 = distinct !DIGlobalVariable(name: "foobar251", scope: !2512, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2512 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2515)
 !2515 = !{!2510}
 
- at foobar252 = common dso_local global i8* null, align 8, !dbg !2520
+ at foobar252 = common dso_local global ptr null, align 8, !dbg !2520
 !2520 = !DIGlobalVariableExpression(var: !2521, expr: !DIExpression())
 !2521 = distinct !DIGlobalVariable(name: "foobar252", scope: !2522, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2522 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2525)
 !2525 = !{!2520}
 
- at foobar253 = common dso_local global i8* null, align 8, !dbg !2530
+ at foobar253 = common dso_local global ptr null, align 8, !dbg !2530
 !2530 = !DIGlobalVariableExpression(var: !2531, expr: !DIExpression())
 !2531 = distinct !DIGlobalVariable(name: "foobar253", scope: !2532, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2532 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2535)
 !2535 = !{!2530}
 
- at foobar254 = common dso_local global i8* null, align 8, !dbg !2540
+ at foobar254 = common dso_local global ptr null, align 8, !dbg !2540
 !2540 = !DIGlobalVariableExpression(var: !2541, expr: !DIExpression())
 !2541 = distinct !DIGlobalVariable(name: "foobar254", scope: !2542, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2542 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2545)
 !2545 = !{!2540}
 
- at foobar255 = common dso_local global i8* null, align 8, !dbg !2550
+ at foobar255 = common dso_local global ptr null, align 8, !dbg !2550
 !2550 = !DIGlobalVariableExpression(var: !2551, expr: !DIExpression())
 !2551 = distinct !DIGlobalVariable(name: "foobar255", scope: !2552, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2552 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2555)
 !2555 = !{!2550}
 
- at foobar256 = common dso_local global i8* null, align 8, !dbg !2560
+ at foobar256 = common dso_local global ptr null, align 8, !dbg !2560
 !2560 = !DIGlobalVariableExpression(var: !2561, expr: !DIExpression())
 !2561 = distinct !DIGlobalVariable(name: "foobar256", scope: !2562, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2562 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2565)
 !2565 = !{!2560}
 
- at foobar257 = common dso_local global i8* null, align 8, !dbg !2570
+ at foobar257 = common dso_local global ptr null, align 8, !dbg !2570
 !2570 = !DIGlobalVariableExpression(var: !2571, expr: !DIExpression())
 !2571 = distinct !DIGlobalVariable(name: "foobar257", scope: !2572, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !2572 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !2575)

diff  --git a/llvm/test/DebugInfo/Generic/debug-names-one-cu.ll b/llvm/test/DebugInfo/Generic/debug-names-one-cu.ll
index bcb999e8245a6..469be45c312e8 100644
--- a/llvm/test/DebugInfo/Generic/debug-names-one-cu.ll
+++ b/llvm/test/DebugInfo/Generic/debug-names-one-cu.ll
@@ -22,7 +22,7 @@
 
 ; VERIFY: No errors.
 
- at foobar = common dso_local global i8* null, align 8, !dbg !0
+ at foobar = common dso_local global ptr null, align 8, !dbg !0
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!7, !8, !9}

diff  --git a/llvm/test/DebugInfo/Generic/debug-names-two-cu.ll b/llvm/test/DebugInfo/Generic/debug-names-two-cu.ll
index 1ed6e62400e8e..33b62345a707c 100644
--- a/llvm/test/DebugInfo/Generic/debug-names-two-cu.ll
+++ b/llvm/test/DebugInfo/Generic/debug-names-two-cu.ll
@@ -43,13 +43,13 @@
 !6 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)
 !3 = !DIFile(filename: "/tmp/cu2.c", directory: "/tmp")
 
- at foobar1 = common dso_local global i8* null, align 8, !dbg !10
+ at foobar1 = common dso_local global ptr null, align 8, !dbg !10
 !10 = !DIGlobalVariableExpression(var: !11, expr: !DIExpression())
 !11 = distinct !DIGlobalVariable(name: "foobar1", scope: !12, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !12 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !15)
 !15 = !{!10}
 
- at foobar2 = common dso_local global i8* null, align 8, !dbg !20
+ at foobar2 = common dso_local global ptr null, align 8, !dbg !20
 !20 = !DIGlobalVariableExpression(var: !21, expr: !DIExpression())
 !21 = distinct !DIGlobalVariable(name: "foobar2", scope: !22, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
 !22 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 325496) (llvm/trunk 325732)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !25)

diff  --git a/llvm/test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll b/llvm/test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll
index 826ab13d99e1b..163e23de22b65 100644
--- a/llvm/test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll
+++ b/llvm/test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll
@@ -18,7 +18,7 @@
 
 source_filename = "test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll"
 
-%struct.Y = type { %struct.X* }
+%struct.Y = type { ptr }
 %struct.X = type opaque
 
 @y = common global %struct.Y zeroinitializer, align 8, !dbg !0

diff  --git a/llvm/test/DebugInfo/Generic/discriminated-union.ll b/llvm/test/DebugInfo/Generic/discriminated-union.ll
index 844a60c549950..0acf478f653ae 100644
--- a/llvm/test/DebugInfo/Generic/discriminated-union.ll
+++ b/llvm/test/DebugInfo/Generic/discriminated-union.ll
@@ -25,16 +25,14 @@
 ;         CHECK: DW_AT_alignment
 ;         CHECK: DW_AT_data_member_location [DW_FORM_data1]	(0x00)
 
-%F = type { [0 x i8], {}*, [8 x i8] }
+%F = type { [0 x i8], ptr, [8 x i8] }
 %"F::Nope" = type {}
 
 define internal void @_ZN2e34main17h934ff72f9a38d4bbE() unnamed_addr #0 !dbg !5 {
 start:
   %qq = alloca %F, align 8
-  call void @llvm.dbg.declare(metadata %F* %qq, metadata !10, metadata !28), !dbg !29
-  %0 = bitcast %F* %qq to {}**, !dbg !29
-  store {}* null, {}** %0, !dbg !29
-  %1 = bitcast %F* %qq to %"F::Nope"*, !dbg !29
+  call void @llvm.dbg.declare(metadata ptr %qq, metadata !10, metadata !28), !dbg !29
+  store ptr null, ptr %qq, !dbg !29
   ret void, !dbg !30
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/dwarf-public-names.ll b/llvm/test/DebugInfo/Generic/dwarf-public-names.ll
index 3d19379e6c60c..bcb16172b7bcf 100644
--- a/llvm/test/DebugInfo/Generic/dwarf-public-names.ll
+++ b/llvm/test/DebugInfo/Generic/dwarf-public-names.ll
@@ -56,13 +56,13 @@ source_filename = "test/DebugInfo/Generic/dwarf-public-names.ll"
 @_ZN2ns25global_namespace_variableE = global i32 1, align 4, !dbg !17
 
 ; Function Attrs: nounwind uwtable
-define void @_ZN1C15member_functionEv(%struct.C* %this) #0 align 2 !dbg !23 {
+define void @_ZN1C15member_functionEv(ptr %this) #0 align 2 !dbg !23 {
 entry:
-  %this.addr = alloca %struct.C*, align 8
-  store %struct.C* %this, %struct.C** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.C** %this.addr, metadata !24, metadata !26), !dbg !27
-  %this1 = load %struct.C*, %struct.C** %this.addr
-  store i32 0, i32* @_ZN1C22static_member_variableE, align 4, !dbg !28
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !24, metadata !26), !dbg !27
+  %this1 = load ptr, ptr %this.addr
+  store i32 0, ptr @_ZN1C22static_member_variableE, align 4, !dbg !28
   ret void, !dbg !29
 }
 
@@ -72,7 +72,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 ; Function Attrs: nounwind uwtable
 define i32 @_ZN1C22static_member_functionEv() #0 align 2 !dbg !30 {
 entry:
-  %0 = load i32, i32* @_ZN1C22static_member_variableE, align 4, !dbg !31
+  %0 = load i32, ptr @_ZN1C22static_member_variableE, align 4, !dbg !31
   ret i32 %0, !dbg !31
 }
 
@@ -85,7 +85,7 @@ entry:
 ; Function Attrs: nounwind uwtable
 define void @_ZN2ns25global_namespace_functionEv() #0 !dbg !34 {
 entry:
-  call void @_ZN1C15member_functionEv(%struct.C* @global_variable), !dbg !37
+  call void @_ZN1C15member_functionEv(ptr @global_variable), !dbg !37
   ret void, !dbg !38
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/enum-types.ll b/llvm/test/DebugInfo/Generic/enum-types.ll
index cfdfea9270a9f..8af9b21bdaa42 100644
--- a/llvm/test/DebugInfo/Generic/enum-types.ll
+++ b/llvm/test/DebugInfo/Generic/enum-types.ll
@@ -23,8 +23,8 @@
 define void @_Z4topA2EA(i32 %sa) #0 !dbg !7 {
 entry:
   %sa.addr = alloca i32, align 4
-  store i32 %sa, i32* %sa.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %sa.addr, metadata !22, metadata !DIExpression()), !dbg !23
+  store i32 %sa, ptr %sa.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %sa.addr, metadata !22, metadata !DIExpression()), !dbg !23
   ret void, !dbg !24
 }
 
@@ -35,8 +35,8 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 define void @_Z4topB2EA(i32 %sa) #0 !dbg !17 {
 entry:
   %sa.addr = alloca i32, align 4
-  store i32 %sa, i32* %sa.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %sa.addr, metadata !25, metadata !DIExpression()), !dbg !26
+  store i32 %sa, ptr %sa.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %sa.addr, metadata !25, metadata !DIExpression()), !dbg !26
   ret void, !dbg !27
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/global-sra-array.ll b/llvm/test/DebugInfo/Generic/global-sra-array.ll
index 943dad1bc9e38..8076efd50fdeb 100644
--- a/llvm/test/DebugInfo/Generic/global-sra-array.ll
+++ b/llvm/test/DebugInfo/Generic/global-sra-array.ll
@@ -32,34 +32,34 @@ target triple = "x86_64-apple-macosx10.12.0"
 ; Function Attrs: nounwind optsize ssp uwtable
 define void @foo(i32 %in) #0 {
 entry:
-  store i32 %in, i32* getelementptr inbounds ([2 x %struct.anon], [2 x %struct.anon]* @array, i64 0, i64 0, i32 0), align 16, !tbaa !20
+  store i32 %in, ptr @array, align 16, !tbaa !20
   ret void
 }
 
 ; Function Attrs: nounwind optsize ssp uwtable
 define void @bar(i32 %in) #0 {
 entry:
-  store i32 %in, i32* getelementptr inbounds ([2 x %struct.anon], [2 x %struct.anon]* @array, i64 0, i64 1, i32 0), align 8, !tbaa !20
+  store i32 %in, ptr getelementptr inbounds ([2 x %struct.anon], ptr @array, i64 0, i64 1, i32 0), align 8, !tbaa !20
   ret void
 }
 
 ; Function Attrs: nounwind optsize ssp uwtable
-define i32 @main(i32 %argc, i8** %argv) #0 !dbg !25 {
+define i32 @main(i32 %argc, ptr %argv) #0 !dbg !25 {
 entry:
   call void @llvm.dbg.value(metadata i32 %argc, metadata !31, metadata !33), !dbg !34
-  call void @llvm.dbg.value(metadata i8** %argv, metadata !32, metadata !33), !dbg !35
-  %0 = load i8*, i8** %argv, align 8, !dbg !36, !tbaa !37
-  %arrayidx1 = getelementptr inbounds i8, i8* %0, i64 1, !dbg !36
-  %1 = load i8, i8* %arrayidx1, align 1, !dbg !36, !tbaa !39
+  call void @llvm.dbg.value(metadata ptr %argv, metadata !32, metadata !33), !dbg !35
+  %0 = load ptr, ptr %argv, align 8, !dbg !36, !tbaa !37
+  %arrayidx1 = getelementptr inbounds i8, ptr %0, i64 1, !dbg !36
+  %1 = load i8, ptr %arrayidx1, align 1, !dbg !36, !tbaa !39
   %conv = sext i8 %1 to i32, !dbg !36
   call void @foo(i32 %conv) #2, !dbg !40
-  %2 = load i8*, i8** %argv, align 8, !dbg !41, !tbaa !37
-  %arrayidx3 = getelementptr inbounds i8, i8* %2, i64 1, !dbg !41
-  %3 = load i8, i8* %arrayidx3, align 1, !dbg !41, !tbaa !39
+  %2 = load ptr, ptr %argv, align 8, !dbg !41, !tbaa !37
+  %arrayidx3 = getelementptr inbounds i8, ptr %2, i64 1, !dbg !41
+  %3 = load i8, ptr %arrayidx3, align 1, !dbg !41, !tbaa !39
   %conv4 = sext i8 %3 to i32, !dbg !41
   call void @bar(i32 %conv4) #2, !dbg !42
-  %4 = load i32, i32* getelementptr inbounds ([2 x %struct.anon], [2 x %struct.anon]* @array, i64 0, i64 0, i32 0), align 16, !dbg !43, !tbaa !20
-  %5 = load i32, i32* getelementptr inbounds ([2 x %struct.anon], [2 x %struct.anon]* @array, i64 0, i64 1, i32 0), align 8, !dbg !44, !tbaa !20
+  %4 = load i32, ptr @array, align 16, !dbg !43, !tbaa !20
+  %5 = load i32, ptr getelementptr inbounds ([2 x %struct.anon], ptr @array, i64 0, i64 1, i32 0), align 8, !dbg !44, !tbaa !20
   %add = add nsw i32 %4, %5, !dbg !45
   ret i32 %add, !dbg !46
 }

diff  --git a/llvm/test/DebugInfo/Generic/global-sra-single-member.ll b/llvm/test/DebugInfo/Generic/global-sra-single-member.ll
index 81d5083ac6a7a..f0f76ddfcf11f 100644
--- a/llvm/test/DebugInfo/Generic/global-sra-single-member.ll
+++ b/llvm/test/DebugInfo/Generic/global-sra-single-member.ll
@@ -19,10 +19,10 @@ target triple = "x86_64-apple-macosx10.12.0"
 define i32 @main() #0 !dbg !15 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval, align 4
-  %0 = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @a, i32 0, i32 0), align 4, !dbg !18
+  store i32 0, ptr %retval, align 4
+  %0 = load i32, ptr @a, align 4, !dbg !18
   %inc = add nsw i32 %0, 1, !dbg !18
-  store i32 %inc, i32* getelementptr inbounds (%struct.anon, %struct.anon* @a, i32 0, i32 0), align 4, !dbg !18
+  store i32 %inc, ptr @a, align 4, !dbg !18
   ret i32 0, !dbg !19
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/global-sra-struct-fwd-decl.ll b/llvm/test/DebugInfo/Generic/global-sra-struct-fwd-decl.ll
index 6216f2edfcd9f..16821d786031e 100644
--- a/llvm/test/DebugInfo/Generic/global-sra-struct-fwd-decl.ll
+++ b/llvm/test/DebugInfo/Generic/global-sra-struct-fwd-decl.ll
@@ -29,10 +29,10 @@ target triple = "x86_64-unknown-linux-gnu"
 ; Function Attrs: noinline nounwind uwtable
 define dso_local i32 @e() #0 !dbg !18 {
 entry:
-  %0 = load i64, i64* getelementptr inbounds (%struct.anon, %struct.anon* @d, i32 0, i32 0), align 8
+  %0 = load i64, ptr @d, align 8
   %add = add nsw i64 %0, 1
   call void @llvm.dbg.value(metadata i64 %add, metadata !24, metadata !DIExpression()), !dbg !25
-  store i64 %add, i64* getelementptr inbounds (%struct.anon, %struct.anon* @d, i32 0, i32 0), align 8
+  store i64 %add, ptr @d, align 8
   ret i32 undef
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/global-sra-struct-zero-length.ll b/llvm/test/DebugInfo/Generic/global-sra-struct-zero-length.ll
index feb1d77bdbd19..0b2f059745c90 100644
--- a/llvm/test/DebugInfo/Generic/global-sra-struct-zero-length.ll
+++ b/llvm/test/DebugInfo/Generic/global-sra-struct-zero-length.ll
@@ -32,10 +32,10 @@ target triple = "x86_64-unknown-linux-gnu"
 ; Function Attrs: noinline nounwind uwtable
 define dso_local i32 @e() #0 !dbg !18 {
 entry:
-  %0 = load i64, i64* getelementptr inbounds (%struct.anon, %struct.anon* @d, i32 0, i32 0), align 8
+  %0 = load i64, ptr @d, align 8
   %add = add nsw i64 %0, 1
   call void @llvm.dbg.value(metadata i64 %add, metadata !24, metadata !DIExpression()), !dbg !25
-  store i64 %add, i64* getelementptr inbounds (%struct.anon, %struct.anon* @d, i32 0, i32 0), align 8
+  store i64 %add, ptr @d, align 8
   ret i32 undef
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/global-sra-struct.ll b/llvm/test/DebugInfo/Generic/global-sra-struct.ll
index d2274f7208494..83e625912f93e 100644
--- a/llvm/test/DebugInfo/Generic/global-sra-struct.ll
+++ b/llvm/test/DebugInfo/Generic/global-sra-struct.ll
@@ -31,7 +31,7 @@ target triple = "x86_64-apple-macosx10.12.0"
 ; Function Attrs: nounwind optsize ssp uwtable
 define void @foo(i32 %in) #0 {
 entry:
-  store i32 %in, i32* getelementptr inbounds (%struct.mystruct, %struct.mystruct* @static_struct, i32 0, i32 0), align 8, !tbaa !17
+  store i32 %in, ptr @static_struct, align 8, !tbaa !17
   ret void
 }
 
@@ -39,28 +39,28 @@ entry:
 define void @bar(i32 %in) #0 {
 entry:
   %conv = sext i32 %in to i64
-  store i64 %conv, i64* getelementptr inbounds (%struct.mystruct, %struct.mystruct* @static_struct, i32 0, i32 1), align 8, !tbaa !23
+  store i64 %conv, ptr getelementptr inbounds (%struct.mystruct, ptr @static_struct, i32 0, i32 1), align 8, !tbaa !23
   ret void
 }
 
 ; Function Attrs: nounwind optsize ssp uwtable
-define i32 @main(i32 %argc, i8** %argv) #0 !dbg !24 {
+define i32 @main(i32 %argc, ptr %argv) #0 !dbg !24 {
 entry:
   call void @llvm.dbg.value(metadata i32 %argc, metadata !31, metadata !33), !dbg !34
-  call void @llvm.dbg.value(metadata i8** %argv, metadata !32, metadata !33), !dbg !35
-  %0 = load i8*, i8** %argv, align 8, !dbg !36, !tbaa !37
-  %arrayidx1 = getelementptr inbounds i8, i8* %0, i64 1, !dbg !36
-  %1 = load i8, i8* %arrayidx1, align 1, !dbg !36, !tbaa !39
+  call void @llvm.dbg.value(metadata ptr %argv, metadata !32, metadata !33), !dbg !35
+  %0 = load ptr, ptr %argv, align 8, !dbg !36, !tbaa !37
+  %arrayidx1 = getelementptr inbounds i8, ptr %0, i64 1, !dbg !36
+  %1 = load i8, ptr %arrayidx1, align 1, !dbg !36, !tbaa !39
   %conv = sext i8 %1 to i32, !dbg !36
   call void @foo(i32 %conv) #2, !dbg !40
-  %2 = load i8*, i8** %argv, align 8, !dbg !41, !tbaa !37
-  %arrayidx3 = getelementptr inbounds i8, i8* %2, i64 1, !dbg !41
-  %3 = load i8, i8* %arrayidx3, align 1, !dbg !41, !tbaa !39
+  %2 = load ptr, ptr %argv, align 8, !dbg !41, !tbaa !37
+  %arrayidx3 = getelementptr inbounds i8, ptr %2, i64 1, !dbg !41
+  %3 = load i8, ptr %arrayidx3, align 1, !dbg !41, !tbaa !39
   %conv4 = sext i8 %3 to i32, !dbg !41
   call void @bar(i32 %conv4) #2, !dbg !42
-  %4 = load i32, i32* getelementptr inbounds (%struct.mystruct, %struct.mystruct* @static_struct, i32 0, i32 0), align 8, !dbg !43, !tbaa !17
+  %4 = load i32, ptr @static_struct, align 8, !dbg !43, !tbaa !17
   %conv5 = sext i32 %4 to i64, !dbg !44
-  %5 = load i64, i64* getelementptr inbounds (%struct.mystruct, %struct.mystruct* @static_struct, i32 0, i32 1), align 8, !dbg !45, !tbaa !23
+  %5 = load i64, ptr getelementptr inbounds (%struct.mystruct, ptr @static_struct, i32 0, i32 1), align 8, !dbg !45, !tbaa !23
   %add = add nsw i64 %conv5, %5, !dbg !46
   %conv6 = trunc i64 %add to i32, !dbg !44
   ret i32 %conv6, !dbg !47

diff  --git a/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc.ll b/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc.ll
index df78a937ed128..253b7c3c0625a 100644
--- a/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc.ll
+++ b/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc.ll
@@ -50,7 +50,7 @@
 %struct.B = type { i32 }
 %struct.A = type { i8 }
 
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @asan.module_ctor, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @asan.module_ctor, ptr null }]
 @__asan_option_detect_stack_use_after_return = external global i32
 @___asan_gen_ = private unnamed_addr constant [11 x i8] c"1 32 8 1 A\00", align 1
 @___asan_gen_1 = private unnamed_addr constant [13 x i8] c"1 32 1 3 tmp\00", align 1
@@ -59,8 +59,8 @@
 define i32 @_Z3fn1v() #0 !dbg !22 {
 entry:
   %MyAlloca = alloca [64 x i8], align 32, !dbg !39
-  %0 = ptrtoint [64 x i8]* %MyAlloca to i64, !dbg !39
-  %1 = load i32, i32* @__asan_option_detect_stack_use_after_return, !dbg !39
+  %0 = ptrtoint ptr %MyAlloca to i64, !dbg !39
+  %1 = load i32, ptr @__asan_option_detect_stack_use_after_return, !dbg !39
   %2 = icmp ne i32 %1, 0, !dbg !39
   br i1 %2, label %3, label %5
 
@@ -71,26 +71,26 @@ entry:
 ; <label>:5                                       ; preds = %entry, %3
   %6 = phi i64 [ %0, %entry ], [ %4, %3 ], !dbg !39
   %7 = add i64 %6, 32, !dbg !39
-  %8 = inttoptr i64 %7 to %struct.C*, !dbg !39
-  %9 = inttoptr i64 %6 to i64*, !dbg !39
-  store i64 1102416563, i64* %9, !dbg !39
+  %8 = inttoptr i64 %7 to ptr, !dbg !39
+  %9 = inttoptr i64 %6 to ptr, !dbg !39
+  store i64 1102416563, ptr %9, !dbg !39
   %10 = add i64 %6, 8, !dbg !39
-  %11 = inttoptr i64 %10 to i64*, !dbg !39
-  store i64 ptrtoint ([11 x i8]* @___asan_gen_ to i64), i64* %11, !dbg !39
+  %11 = inttoptr i64 %10 to ptr, !dbg !39
+  store i64 ptrtoint (ptr @___asan_gen_ to i64), ptr %11, !dbg !39
   %12 = add i64 %6, 16, !dbg !39
-  %13 = inttoptr i64 %12 to i64*, !dbg !39
-  store i64 ptrtoint (i32 ()* @_Z3fn1v to i64), i64* %13, !dbg !39
+  %13 = inttoptr i64 %12 to ptr, !dbg !39
+  store i64 ptrtoint (ptr @_Z3fn1v to i64), ptr %13, !dbg !39
   %14 = lshr i64 %6, 3, !dbg !39
   %15 = add i64 %14, 2147450880, !dbg !39
   %16 = add i64 %15, 0, !dbg !39
-  %17 = inttoptr i64 %16 to i64*, !dbg !39
-  store i64 -868083117767659023, i64* %17, !dbg !39
-  %i.i = getelementptr inbounds %struct.C, %struct.C* %8, i64 0, i32 1, i32 0, !dbg !39
-  %18 = ptrtoint i32* %i.i to i64, !dbg !39
+  %17 = inttoptr i64 %16 to ptr, !dbg !39
+  store i64 -868083117767659023, ptr %17, !dbg !39
+  %i.i = getelementptr inbounds %struct.C, ptr %8, i64 0, i32 1, i32 0, !dbg !39
+  %18 = ptrtoint ptr %i.i to i64, !dbg !39
   %19 = lshr i64 %18, 3, !dbg !39
   %20 = add i64 %19, 2147450880, !dbg !39
-  %21 = inttoptr i64 %20 to i8*, !dbg !39
-  %22 = load i8, i8* %21, !dbg !39
+  %21 = inttoptr i64 %20 to ptr, !dbg !39
+  %22 = load i8, ptr %21, !dbg !39
   %23 = icmp ne i8 %22, 0, !dbg !39
   br i1 %23, label %24, label %30, !dbg !39
 
@@ -107,18 +107,18 @@ entry:
   unreachable
 
 ; <label>:30                                      ; preds = %24, %5
-  store i32 0, i32* %i.i, align 4, !dbg !39, !tbaa !41
-  tail call void @llvm.dbg.value(metadata %struct.C* %8, metadata !27, metadata !DIExpression(DW_OP_deref)), !dbg !46
-  call void @_ZN1C5m_fn3Ev(%struct.C* %8), !dbg !47
+  store i32 0, ptr %i.i, align 4, !dbg !39, !tbaa !41
+  tail call void @llvm.dbg.value(metadata ptr %8, metadata !27, metadata !DIExpression(DW_OP_deref)), !dbg !46
+  call void @_ZN1C5m_fn3Ev(ptr %8), !dbg !47
   unreachable, !dbg !47
 }
 
 ; Function Attrs: sanitize_address
-define void @_ZN1C5m_fn3Ev(%struct.C* nocapture %this) #1 align 2 !dbg !28 {
+define void @_ZN1C5m_fn3Ev(ptr nocapture %this) #1 align 2 !dbg !28 {
 entry:
   %MyAlloca = alloca [64 x i8], align 32, !dbg !48
-  %0 = ptrtoint [64 x i8]* %MyAlloca to i64, !dbg !48
-  %1 = load i32, i32* @__asan_option_detect_stack_use_after_return, !dbg !48
+  %0 = ptrtoint ptr %MyAlloca to i64, !dbg !48
+  %1 = load i32, ptr @__asan_option_detect_stack_use_after_return, !dbg !48
   %2 = icmp ne i32 %1, 0, !dbg !48
   br i1 %2, label %3, label %5
 
@@ -129,28 +129,28 @@ entry:
 ; <label>:5                                       ; preds = %entry, %3
   %6 = phi i64 [ %0, %entry ], [ %4, %3 ], !dbg !48
   %7 = add i64 %6, 32, !dbg !48
-  %8 = inttoptr i64 %7 to %struct.A*, !dbg !48
-  %9 = inttoptr i64 %6 to i64*, !dbg !48
-  store i64 1102416563, i64* %9, !dbg !48
+  %8 = inttoptr i64 %7 to ptr, !dbg !48
+  %9 = inttoptr i64 %6 to ptr, !dbg !48
+  store i64 1102416563, ptr %9, !dbg !48
   %10 = add i64 %6, 8, !dbg !48
-  %11 = inttoptr i64 %10 to i64*, !dbg !48
-  store i64 ptrtoint ([13 x i8]* @___asan_gen_1 to i64), i64* %11, !dbg !48
+  %11 = inttoptr i64 %10 to ptr, !dbg !48
+  store i64 ptrtoint (ptr @___asan_gen_1 to i64), ptr %11, !dbg !48
   %12 = add i64 %6, 16, !dbg !48
-  %13 = inttoptr i64 %12 to i64*, !dbg !48
-  store i64 ptrtoint (void (%struct.C*)* @_ZN1C5m_fn3Ev to i64), i64* %13, !dbg !48
+  %13 = inttoptr i64 %12 to ptr, !dbg !48
+  store i64 ptrtoint (ptr @_ZN1C5m_fn3Ev to i64), ptr %13, !dbg !48
   %14 = lshr i64 %6, 3, !dbg !48
   %15 = add i64 %14, 2147450880, !dbg !48
   %16 = add i64 %15, 0, !dbg !48
-  %17 = inttoptr i64 %16 to i64*, !dbg !48
-  store i64 -868083113472691727, i64* %17, !dbg !48
-  tail call void @llvm.dbg.value(metadata %struct.C* %this, metadata !30, metadata !DIExpression()), !dbg !48
-  %call = call i32 @_ZN1A5m_fn1Ev(%struct.A* %8), !dbg !49
-  %i.i = getelementptr inbounds %struct.C, %struct.C* %this, i64 0, i32 1, i32 0, !dbg !50
-  %18 = ptrtoint i32* %i.i to i64, !dbg !50
+  %17 = inttoptr i64 %16 to ptr, !dbg !48
+  store i64 -868083113472691727, ptr %17, !dbg !48
+  tail call void @llvm.dbg.value(metadata ptr %this, metadata !30, metadata !DIExpression()), !dbg !48
+  %call = call i32 @_ZN1A5m_fn1Ev(ptr %8), !dbg !49
+  %i.i = getelementptr inbounds %struct.C, ptr %this, i64 0, i32 1, i32 0, !dbg !50
+  %18 = ptrtoint ptr %i.i to i64, !dbg !50
   %19 = lshr i64 %18, 3, !dbg !50
   %20 = add i64 %19, 2147450880, !dbg !50
-  %21 = inttoptr i64 %20 to i8*, !dbg !50
-  %22 = load i8, i8* %21, !dbg !50
+  %21 = inttoptr i64 %20 to ptr, !dbg !50
+  %22 = load i8, ptr %21, !dbg !50
   %23 = icmp ne i8 %22, 0, !dbg !50
   br i1 %23, label %24, label %30, !dbg !50
 
@@ -167,33 +167,33 @@ entry:
   unreachable
 
 ; <label>:30                                      ; preds = %24, %5
-  store i32 0, i32* %i.i, align 4, !dbg !50, !tbaa !41
-  store i64 1172321806, i64* %9, !dbg !52
+  store i32 0, ptr %i.i, align 4, !dbg !50, !tbaa !41
+  store i64 1172321806, ptr %9, !dbg !52
   %31 = icmp ne i64 %6, %0, !dbg !52
   br i1 %31, label %32, label %39, !dbg !52
 
 ; <label>:32                                      ; preds = %30
   %33 = add i64 %15, 0, !dbg !52
-  %34 = inttoptr i64 %33 to i64*, !dbg !52
-  store i64 -723401728380766731, i64* %34, !dbg !52
+  %34 = inttoptr i64 %33 to ptr, !dbg !52
+  store i64 -723401728380766731, ptr %34, !dbg !52
   %35 = add i64 %6, 56, !dbg !52
-  %36 = inttoptr i64 %35 to i64*, !dbg !52
-  %37 = load i64, i64* %36, !dbg !52
-  %38 = inttoptr i64 %37 to i8*, !dbg !52
-  store i8 0, i8* %38, !dbg !52
+  %36 = inttoptr i64 %35 to ptr, !dbg !52
+  %37 = load i64, ptr %36, !dbg !52
+  %38 = inttoptr i64 %37 to ptr, !dbg !52
+  store i8 0, ptr %38, !dbg !52
   br label %42, !dbg !52
 
 ; <label>:39                                      ; preds = %30
   %40 = add i64 %15, 0, !dbg !52
-  %41 = inttoptr i64 %40 to i64*, !dbg !52
-  store i64 0, i64* %41, !dbg !52
+  %41 = inttoptr i64 %40 to ptr, !dbg !52
+  store i64 0, ptr %41, !dbg !52
   br label %42, !dbg !52
 
 ; <label>:42                                      ; preds = %39, %32
   ret void, !dbg !52
 }
 
-declare i32 @_ZN1A5m_fn1Ev(%struct.A*) #2
+declare i32 @_ZN1A5m_fn1Ev(ptr) #2
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, metadata, metadata) #3
@@ -253,11 +253,11 @@ declare void @__asan_loadN(i64, i64)
 
 declare void @__asan_storeN(i64, i64)
 
-declare i8* @__asan_memmove(i8*, i8*, i64)
+declare ptr @__asan_memmove(ptr, ptr, i64)
 
-declare i8* @__asan_memcpy(i8*, i8*, i64)
+declare ptr @__asan_memcpy(ptr, ptr, i64)
 
-declare i8* @__asan_memset(i8*, i32, i64)
+declare ptr @__asan_memset(ptr, i32, i64)
 
 declare void @__asan_handle_no_return()
 

diff  --git a/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll b/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll
index 7edc971334c8e..347553370af04 100644
--- a/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll
+++ b/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll
@@ -33,12 +33,12 @@ define i32 @main() #0 !dbg !4 {
 entry:
   %c = alloca i32, align 4
   tail call void @llvm.dbg.value(metadata i32 13, metadata !10, metadata !16), !dbg !17
-  store volatile i32 13, i32* %c, align 4, !dbg !18
+  store volatile i32 13, ptr %c, align 4, !dbg !18
   %call = tail call i32 @_Z4funcv(), !dbg !19
   tail call void @llvm.dbg.value(metadata i32 %call, metadata !10, metadata !16), !dbg !17
-  store volatile i32 %call, i32* %c, align 4, !dbg !19
-  tail call void @llvm.dbg.value(metadata i32* %c, metadata !10, metadata !21), !dbg !17
-  %c.0.c.0. = load volatile i32, i32* %c, align 4, !dbg !20
+  store volatile i32 %call, ptr %c, align 4, !dbg !19
+  tail call void @llvm.dbg.value(metadata ptr %c, metadata !10, metadata !21), !dbg !17
+  %c.0.c.0. = load volatile i32, ptr %c, align 4, !dbg !20
   ret i32 %c.0.c.0., !dbg !20
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/indvar-discriminator.ll b/llvm/test/DebugInfo/Generic/indvar-discriminator.ll
index 88216825acc5a..b8f67955d9f86 100644
--- a/llvm/test/DebugInfo/Generic/indvar-discriminator.ll
+++ b/llvm/test/DebugInfo/Generic/indvar-discriminator.ll
@@ -36,7 +36,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @bar(i32 %X, i32* %A) !dbg !5 {
+define i32 @bar(i32 %X, ptr %A) !dbg !5 {
 entry:
   %cmp5 = icmp sgt i32 %X, 0, !dbg !7
   br i1 %cmp5, label %for.body.lr.ph, label %for.end, !dbg !9
@@ -48,8 +48,8 @@ for.body:
   %i.06 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ]
   %call = call i32 @foo(i32 %i.06), !dbg !10
   %idxprom = sext i32 %i.06 to i64, !dbg !11
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom, !dbg !11
-  store i32 %call, i32* %arrayidx, align 4, !dbg !12
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom, !dbg !11
+  store i32 %call, ptr %arrayidx, align 4, !dbg !12
   br label %for.inc, !dbg !11
 
 for.inc:
@@ -61,7 +61,7 @@ for.cond.for.end_crit_edge:
   br label %for.end, !dbg !9
 
 for.end:
-  %0 = load i32, i32* %A, align 4, !dbg !17
+  %0 = load i32, ptr %A, align 4, !dbg !17
   ret i32 %0, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/inheritance.ll b/llvm/test/DebugInfo/Generic/inheritance.ll
index 54fc7b35a7f14..f07b99946ed3c 100644
--- a/llvm/test/DebugInfo/Generic/inheritance.ll
+++ b/llvm/test/DebugInfo/Generic/inheritance.ll
@@ -2,41 +2,40 @@
 ; PR 2613.
 
 %struct.__class_type_info_pseudo = type { %struct.__type_info_pseudo }
-%struct.__type_info_pseudo = type { i8*, i8* }
-%struct.test1 = type { i32 (...)** }
+%struct.__type_info_pseudo = type { ptr, ptr }
+%struct.test1 = type { ptr }
 
- at _ZTV5test1 = weak_odr constant [4 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI5test1 to i32 (...)*), i32 (...)* bitcast (void (%struct.test1*)* @_ZN5test1D1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.test1*)* @_ZN5test1D0Ev to i32 (...)*)], align 32 ; <[4 x i32 (...)*]*> [#uses=1]
- at _ZTI5test1 = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* getelementptr (i8, i8* bitcast ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i8*), i64 16), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @_ZTS5test1, i64 0, i64 0) } }, align 16 ; <%struct.__class_type_info_pseudo*> [#uses=1]
- at _ZTVN10__cxxabiv117__class_type_infoE = external constant [0 x i32 (...)*] ; <[0 x i32 (...)*]*> [#uses=1]
- at _ZTS5test1 = weak_odr constant [7 x i8] c"5test1\00" ; <[7 x i8]*> [#uses=2]
+ at _ZTV5test1 = weak_odr constant [4 x ptr] [ptr null, ptr @_ZTI5test1, ptr @_ZN5test1D1Ev, ptr @_ZN5test1D0Ev], align 32 ; <ptr> [#uses=1]
+ at _ZTI5test1 = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { ptr getelementptr (i8, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 16), ptr @_ZTS5test1 } }, align 16 ; <ptr> [#uses=1]
+ at _ZTVN10__cxxabiv117__class_type_infoE = external constant [0 x ptr] ; <ptr> [#uses=1]
+ at _ZTS5test1 = weak_odr constant [7 x i8] c"5test1\00" ; <ptr> [#uses=2]
 
 define i32 @main() nounwind ssp {
 entry:
-  %retval = alloca i32                            ; <i32*> [#uses=2]
-  %0 = alloca i32                                 ; <i32*> [#uses=2]
-  %tst = alloca %struct.test1                     ; <%struct.test1*> [#uses=1]
+  %retval = alloca i32                            ; <ptr> [#uses=2]
+  %0 = alloca i32                                 ; <ptr> [#uses=2]
+  %tst = alloca %struct.test1                     ; <ptr> [#uses=1]
   %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
-  call void @llvm.dbg.declare(metadata %struct.test1* %tst, metadata !0, metadata !DIExpression()), !dbg !21
-  call void @_ZN5test1C1Ev(%struct.test1* %tst) nounwind, !dbg !22
-  store i32 0, i32* %0, align 4, !dbg !23
-  %1 = load i32, i32* %0, align 4, !dbg !23            ; <i32> [#uses=1]
-  store i32 %1, i32* %retval, align 4, !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %tst, metadata !0, metadata !DIExpression()), !dbg !21
+  call void @_ZN5test1C1Ev(ptr %tst) nounwind, !dbg !22
+  store i32 0, ptr %0, align 4, !dbg !23
+  %1 = load i32, ptr %0, align 4, !dbg !23            ; <i32> [#uses=1]
+  store i32 %1, ptr %retval, align 4, !dbg !23
   br label %return, !dbg !23
 
 return:                                           ; preds = %entry
-  %retval1 = load i32, i32* %retval, !dbg !23          ; <i32> [#uses=1]
+  %retval1 = load i32, ptr %retval, !dbg !23          ; <i32> [#uses=1]
   ret i32 %retval1, !dbg !23
 }
 
-define linkonce_odr void @_ZN5test1C1Ev(%struct.test1* %this) nounwind ssp align 2 {
+define linkonce_odr void @_ZN5test1C1Ev(ptr %this) nounwind ssp align 2 {
 entry:
-  %this_addr = alloca %struct.test1*              ; <%struct.test1**> [#uses=2]
+  %this_addr = alloca ptr              ; <ptr> [#uses=2]
   %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
-  call void @llvm.dbg.declare(metadata %struct.test1** %this_addr, metadata !24, metadata !DIExpression()), !dbg !28
-  store %struct.test1* %this, %struct.test1** %this_addr
-  %0 = load %struct.test1*, %struct.test1** %this_addr, align 8, !dbg !28 ; <%struct.test1*> [#uses=1]
-  %1 = getelementptr inbounds %struct.test1, %struct.test1* %0, i32 0, i32 0, !dbg !28 ; <i32 (...)***> [#uses=1]
-  store i32 (...)** getelementptr inbounds ([4 x i32 (...)*], [4 x i32 (...)*]* @_ZTV5test1, i64 0, i64 2), i32 (...)*** %1, align 8, !dbg !28
+  call void @llvm.dbg.declare(metadata ptr %this_addr, metadata !24, metadata !DIExpression()), !dbg !28
+  store ptr %this, ptr %this_addr
+  %0 = load ptr, ptr %this_addr, align 8, !dbg !28 ; <ptr> [#uses=1]
+  store ptr getelementptr inbounds ([4 x ptr], ptr @_ZTV5test1, i64 0, i64 2), ptr %0, align 8, !dbg !28
   br label %return, !dbg !28
 
 return:                                           ; preds = %entry
@@ -45,26 +44,24 @@ return:                                           ; preds = %entry
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 
-define linkonce_odr void @_ZN5test1D1Ev(%struct.test1* %this) nounwind ssp align 2 {
+define linkonce_odr void @_ZN5test1D1Ev(ptr %this) nounwind ssp align 2 {
 entry:
-  %this_addr = alloca %struct.test1*              ; <%struct.test1**> [#uses=3]
+  %this_addr = alloca ptr              ; <ptr> [#uses=3]
   %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
-  call void @llvm.dbg.declare(metadata %struct.test1** %this_addr, metadata !32, metadata !DIExpression()), !dbg !34
-  store %struct.test1* %this, %struct.test1** %this_addr
-  %0 = load %struct.test1*, %struct.test1** %this_addr, align 8, !dbg !35 ; <%struct.test1*> [#uses=1]
-  %1 = getelementptr inbounds %struct.test1, %struct.test1* %0, i32 0, i32 0, !dbg !35 ; <i32 (...)***> [#uses=1]
-  store i32 (...)** getelementptr inbounds ([4 x i32 (...)*], [4 x i32 (...)*]* @_ZTV5test1, i64 0, i64 2), i32 (...)*** %1, align 8, !dbg !35
+  call void @llvm.dbg.declare(metadata ptr %this_addr, metadata !32, metadata !DIExpression()), !dbg !34
+  store ptr %this, ptr %this_addr
+  %0 = load ptr, ptr %this_addr, align 8, !dbg !35 ; <ptr> [#uses=1]
+  store ptr getelementptr inbounds ([4 x ptr], ptr @_ZTV5test1, i64 0, i64 2), ptr %0, align 8, !dbg !35
   br label %bb, !dbg !37
 
 bb:                                               ; preds = %entry
-  %2 = trunc i32 0 to i8, !dbg !37                ; <i8> [#uses=1]
-  %toBool = icmp ne i8 %2, 0, !dbg !37            ; <i1> [#uses=1]
+  %1 = trunc i32 0 to i8, !dbg !37                ; <i8> [#uses=1]
+  %toBool = icmp ne i8 %1, 0, !dbg !37            ; <i1> [#uses=1]
   br i1 %toBool, label %bb1, label %bb2, !dbg !37
 
 bb1:                                              ; preds = %bb
-  %3 = load %struct.test1*, %struct.test1** %this_addr, align 8, !dbg !37 ; <%struct.test1*> [#uses=1]
-  %4 = bitcast %struct.test1* %3 to i8*, !dbg !37 ; <i8*> [#uses=1]
-  call void @_ZdlPv(i8* %4) nounwind, !dbg !37
+  %2 = load ptr, ptr %this_addr, align 8, !dbg !37 ; <ptr> [#uses=1]
+  call void @_ZdlPv(ptr %2) nounwind, !dbg !37
   br label %bb2, !dbg !37
 
 bb2:                                              ; preds = %bb1, %bb
@@ -74,26 +71,24 @@ return:                                           ; preds = %bb2
   ret void, !dbg !37
 }
 
-define linkonce_odr void @_ZN5test1D0Ev(%struct.test1* %this) nounwind ssp align 2 {
+define linkonce_odr void @_ZN5test1D0Ev(ptr %this) nounwind ssp align 2 {
 entry:
-  %this_addr = alloca %struct.test1*              ; <%struct.test1**> [#uses=3]
+  %this_addr = alloca ptr              ; <ptr> [#uses=3]
   %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
-  call void @llvm.dbg.declare(metadata %struct.test1** %this_addr, metadata !38, metadata !DIExpression()), !dbg !40
-  store %struct.test1* %this, %struct.test1** %this_addr
-  %0 = load %struct.test1*, %struct.test1** %this_addr, align 8, !dbg !41 ; <%struct.test1*> [#uses=1]
-  %1 = getelementptr inbounds %struct.test1, %struct.test1* %0, i32 0, i32 0, !dbg !41 ; <i32 (...)***> [#uses=1]
-  store i32 (...)** getelementptr inbounds ([4 x i32 (...)*], [4 x i32 (...)*]* @_ZTV5test1, i64 0, i64 2), i32 (...)*** %1, align 8, !dbg !41
+  call void @llvm.dbg.declare(metadata ptr %this_addr, metadata !38, metadata !DIExpression()), !dbg !40
+  store ptr %this, ptr %this_addr
+  %0 = load ptr, ptr %this_addr, align 8, !dbg !41 ; <ptr> [#uses=1]
+  store ptr getelementptr inbounds ([4 x ptr], ptr @_ZTV5test1, i64 0, i64 2), ptr %0, align 8, !dbg !41
   br label %bb, !dbg !43
 
 bb:                                               ; preds = %entry
-  %2 = trunc i32 1 to i8, !dbg !43                ; <i8> [#uses=1]
-  %toBool = icmp ne i8 %2, 0, !dbg !43            ; <i1> [#uses=1]
+  %1 = trunc i32 1 to i8, !dbg !43                ; <i8> [#uses=1]
+  %toBool = icmp ne i8 %1, 0, !dbg !43            ; <i1> [#uses=1]
   br i1 %toBool, label %bb1, label %bb2, !dbg !43
 
 bb1:                                              ; preds = %bb
-  %3 = load %struct.test1*, %struct.test1** %this_addr, align 8, !dbg !43 ; <%struct.test1*> [#uses=1]
-  %4 = bitcast %struct.test1* %3 to i8*, !dbg !43 ; <i8*> [#uses=1]
-  call void @_ZdlPv(i8* %4) nounwind, !dbg !43
+  %2 = load ptr, ptr %this_addr, align 8, !dbg !43 ; <ptr> [#uses=1]
+  call void @_ZdlPv(ptr %2) nounwind, !dbg !43
   br label %bb2, !dbg !43
 
 bb2:                                              ; preds = %bb1, %bb
@@ -103,7 +98,7 @@ return:                                           ; preds = %bb2
   ret void, !dbg !43
 }
 
-declare void @_ZdlPv(i8*) nounwind
+declare void @_ZdlPv(ptr) nounwind
 
 !llvm.dbg.cu = !{!4}
 !0 = !DILocalVariable(name: "tst", line: 13, scope: !1, file: !4, type: !8)

diff  --git a/llvm/test/DebugInfo/Generic/inline-debug-info-multiret.ll b/llvm/test/DebugInfo/Generic/inline-debug-info-multiret.ll
index 58943b6148c62..07f28ed85bc12 100644
--- a/llvm/test/DebugInfo/Generic/inline-debug-info-multiret.ll
+++ b/llvm/test/DebugInfo/Generic/inline-debug-info-multiret.ll
@@ -17,7 +17,7 @@
 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-darwin12.0.0"
 
- at _ZTIi = external constant i8*
+ at _ZTIi = external constant ptr
 @global_var = external global i32
 
 ; copy of above function with multiple returns
@@ -26,28 +26,28 @@ entry:
   %retval = alloca i32, align 4
   %k.addr = alloca i32, align 4
   %k2 = alloca i32, align 4
-  store i32 %k, i32* %k.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %k.addr, metadata !13, metadata !DIExpression()), !dbg !14
-  call void @llvm.dbg.declare(metadata i32* %k2, metadata !15, metadata !DIExpression()), !dbg !16
-  %0 = load i32, i32* %k.addr, align 4, !dbg !16
+  store i32 %k, ptr %k.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %k.addr, metadata !13, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.declare(metadata ptr %k2, metadata !15, metadata !DIExpression()), !dbg !16
+  %0 = load i32, ptr %k.addr, align 4, !dbg !16
   %call = call i32 @_Z8test_exti(i32 %0), !dbg !16
-  store i32 %call, i32* %k2, align 4, !dbg !16
-  %1 = load i32, i32* %k2, align 4, !dbg !17
+  store i32 %call, ptr %k2, align 4, !dbg !16
+  %1 = load i32, ptr %k2, align 4, !dbg !17
   %cmp = icmp sgt i32 %1, 100, !dbg !17
   br i1 %cmp, label %if.then, label %if.end, !dbg !17
 
 if.then:                                          ; preds = %entry
-  %2 = load i32, i32* %k2, align 4, !dbg !18
-  store i32 %2, i32* %retval, !dbg !18
+  %2 = load i32, ptr %k2, align 4, !dbg !18
+  store i32 %2, ptr %retval, !dbg !18
   br label %return, !dbg !18
 
 if.end:                                           ; preds = %entry
-  store i32 0, i32* %retval, !dbg !19
-  %3 = load i32, i32* %retval, !dbg !20                ; hand-edited
+  store i32 0, ptr %retval, !dbg !19
+  %3 = load i32, ptr %retval, !dbg !20                ; hand-edited
   ret i32 %3, !dbg !20                            ; hand-edited
 
 return:                                           ; preds = %if.end, %if.then
-  %4 = load i32, i32* %retval, !dbg !20
+  %4 = load i32, ptr %retval, !dbg !20
   ret i32 %4, !dbg !20
 }
 
@@ -57,12 +57,12 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 declare i32 @_Z8test_exti(i32)
 
-define i32 @_Z5test2v() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !10 {
+define i32 @_Z5test2v() personality ptr @__gxx_personality_v0 !dbg !10 {
 entry:
-  %exn.slot = alloca i8*
+  %exn.slot = alloca ptr
   %ehselector.slot = alloca i32
   %e = alloca i32, align 4
-  %0 = load i32, i32* @global_var, align 4, !dbg !21
+  %0 = load i32, ptr @global_var, align 4, !dbg !21
   %call = invoke i32 @_Z4testi(i32 %0)
           to label %invoke.cont unwind label %lpad, !dbg !21
 
@@ -70,49 +70,48 @@ invoke.cont:                                      ; preds = %entry
   br label %try.cont, !dbg !23
 
 lpad:                                             ; preds = %entry
-  %1 = landingpad { i8*, i32 }
-          catch i8* bitcast (i8** @_ZTIi to i8*), !dbg !21
-  %2 = extractvalue { i8*, i32 } %1, 0, !dbg !21
-  store i8* %2, i8** %exn.slot, !dbg !21
-  %3 = extractvalue { i8*, i32 } %1, 1, !dbg !21
-  store i32 %3, i32* %ehselector.slot, !dbg !21
+  %1 = landingpad { ptr, i32 }
+          catch ptr @_ZTIi, !dbg !21
+  %2 = extractvalue { ptr, i32 } %1, 0, !dbg !21
+  store ptr %2, ptr %exn.slot, !dbg !21
+  %3 = extractvalue { ptr, i32 } %1, 1, !dbg !21
+  store i32 %3, ptr %ehselector.slot, !dbg !21
   br label %catch.dispatch, !dbg !21
 
 catch.dispatch:                                   ; preds = %lpad
-  %sel = load i32, i32* %ehselector.slot, !dbg !23
-  %4 = call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) #2, !dbg !23
+  %sel = load i32, ptr %ehselector.slot, !dbg !23
+  %4 = call i32 @llvm.eh.typeid.for(ptr @_ZTIi) #2, !dbg !23
   %matches = icmp eq i32 %sel, %4, !dbg !23
   br i1 %matches, label %catch, label %eh.resume, !dbg !23
 
 catch:                                            ; preds = %catch.dispatch
-  call void @llvm.dbg.declare(metadata i32* %e, metadata !24, metadata !DIExpression()), !dbg !25
-  %exn = load i8*, i8** %exn.slot, !dbg !23
-  %5 = call i8* @__cxa_begin_catch(i8* %exn) #2, !dbg !23
-  %6 = bitcast i8* %5 to i32*, !dbg !23
-  %7 = load i32, i32* %6, align 4, !dbg !23
-  store i32 %7, i32* %e, align 4, !dbg !23
-  store i32 0, i32* @global_var, align 4, !dbg !26
+  call void @llvm.dbg.declare(metadata ptr %e, metadata !24, metadata !DIExpression()), !dbg !25
+  %exn = load ptr, ptr %exn.slot, !dbg !23
+  %5 = call ptr @__cxa_begin_catch(ptr %exn) #2, !dbg !23
+  %6 = load i32, ptr %5, align 4, !dbg !23
+  store i32 %6, ptr %e, align 4, !dbg !23
+  store i32 0, ptr @global_var, align 4, !dbg !26
   call void @__cxa_end_catch() #2, !dbg !28
   br label %try.cont, !dbg !28
 
 try.cont:                                         ; preds = %catch, %invoke.cont
-  store i32 1, i32* @global_var, align 4, !dbg !29
+  store i32 1, ptr @global_var, align 4, !dbg !29
   ret i32 0, !dbg !30
 
 eh.resume:                                        ; preds = %catch.dispatch
-  %exn1 = load i8*, i8** %exn.slot, !dbg !23
-  %sel2 = load i32, i32* %ehselector.slot, !dbg !23
-  %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn1, 0, !dbg !23
-  %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel2, 1, !dbg !23
-  resume { i8*, i32 } %lpad.val3, !dbg !23
+  %exn1 = load ptr, ptr %exn.slot, !dbg !23
+  %sel2 = load i32, ptr %ehselector.slot, !dbg !23
+  %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn1, 0, !dbg !23
+  %lpad.val3 = insertvalue { ptr, i32 } %lpad.val, i32 %sel2, 1, !dbg !23
+  resume { ptr, i32 } %lpad.val3, !dbg !23
 }
 
 declare i32 @__gxx_personality_v0(...)
 
 ; Function Attrs: nounwind readnone
-declare i32 @llvm.eh.typeid.for(i8*) #1
+declare i32 @llvm.eh.typeid.for(ptr) #1
 
-declare i8* @__cxa_begin_catch(i8*)
+declare ptr @__cxa_begin_catch(ptr)
 
 declare void @__cxa_end_catch()
 

diff  --git a/llvm/test/DebugInfo/Generic/inline-debug-info.ll b/llvm/test/DebugInfo/Generic/inline-debug-info.ll
index 1cb9b62a4eb36..306243cf27bb6 100644
--- a/llvm/test/DebugInfo/Generic/inline-debug-info.ll
+++ b/llvm/test/DebugInfo/Generic/inline-debug-info.ll
@@ -38,7 +38,7 @@
 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-darwin12.0.0"
 
- at _ZTIi = external constant i8*
+ at _ZTIi = external constant ptr
 @global_var = external global i32
 
 define i32 @_Z4testi(i32 %k)  !dbg !4 {
@@ -46,27 +46,27 @@ entry:
   %retval = alloca i32, align 4
   %k.addr = alloca i32, align 4
   %k2 = alloca i32, align 4
-  store i32 %k, i32* %k.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %k.addr, metadata !13, metadata !DIExpression()), !dbg !14
-  call void @llvm.dbg.declare(metadata i32* %k2, metadata !15, metadata !DIExpression()), !dbg !16
-  %0 = load i32, i32* %k.addr, align 4, !dbg !16
+  store i32 %k, ptr %k.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %k.addr, metadata !13, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.declare(metadata ptr %k2, metadata !15, metadata !DIExpression()), !dbg !16
+  %0 = load i32, ptr %k.addr, align 4, !dbg !16
   %call = call i32 @_Z8test_exti(i32 %0), !dbg !16
-  store i32 %call, i32* %k2, align 4, !dbg !16
-  %1 = load i32, i32* %k2, align 4, !dbg !17
+  store i32 %call, ptr %k2, align 4, !dbg !16
+  %1 = load i32, ptr %k2, align 4, !dbg !17
   %cmp = icmp sgt i32 %1, 100, !dbg !17
   br i1 %cmp, label %if.then, label %if.end, !dbg !17
 
 if.then:                                          ; preds = %entry
-  %2 = load i32, i32* %k2, align 4, !dbg !18
-  store i32 %2, i32* %retval, !dbg !18
+  %2 = load i32, ptr %k2, align 4, !dbg !18
+  store i32 %2, ptr %retval, !dbg !18
   br label %return, !dbg !18
 
 if.end:                                           ; preds = %entry
-  store i32 0, i32* %retval, !dbg !19
+  store i32 0, ptr %retval, !dbg !19
   br label %return, !dbg !19
 
 return:                                           ; preds = %if.end, %if.then
-  %3 = load i32, i32* %retval, !dbg !20
+  %3 = load i32, ptr %retval, !dbg !20
   ret i32 %3, !dbg !20
 }
 
@@ -75,12 +75,12 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 declare i32 @_Z8test_exti(i32)
 
-define i32 @_Z5test2v() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !10 {
+define i32 @_Z5test2v() personality ptr @__gxx_personality_v0 !dbg !10 {
 entry:
-  %exn.slot = alloca i8*
+  %exn.slot = alloca ptr
   %ehselector.slot = alloca i32
   %e = alloca i32, align 4
-  %0 = load i32, i32* @global_var, align 4, !dbg !21
+  %0 = load i32, ptr @global_var, align 4, !dbg !21
   %call = invoke i32 @_Z4testi(i32 %0)
           to label %invoke.cont unwind label %lpad, !dbg !21
 
@@ -88,49 +88,48 @@ invoke.cont:                                      ; preds = %entry
   br label %try.cont, !dbg !23
 
 lpad:                                             ; preds = %entry
-  %1 = landingpad { i8*, i32 }
-          catch i8* bitcast (i8** @_ZTIi to i8*), !dbg !21
-  %2 = extractvalue { i8*, i32 } %1, 0, !dbg !21
-  store i8* %2, i8** %exn.slot, !dbg !21
-  %3 = extractvalue { i8*, i32 } %1, 1, !dbg !21
-  store i32 %3, i32* %ehselector.slot, !dbg !21
+  %1 = landingpad { ptr, i32 }
+          catch ptr @_ZTIi, !dbg !21
+  %2 = extractvalue { ptr, i32 } %1, 0, !dbg !21
+  store ptr %2, ptr %exn.slot, !dbg !21
+  %3 = extractvalue { ptr, i32 } %1, 1, !dbg !21
+  store i32 %3, ptr %ehselector.slot, !dbg !21
   br label %catch.dispatch, !dbg !21
 
 catch.dispatch:                                   ; preds = %lpad
-  %sel = load i32, i32* %ehselector.slot, !dbg !23
-  %4 = call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) #2, !dbg !23
+  %sel = load i32, ptr %ehselector.slot, !dbg !23
+  %4 = call i32 @llvm.eh.typeid.for(ptr @_ZTIi) #2, !dbg !23
   %matches = icmp eq i32 %sel, %4, !dbg !23
   br i1 %matches, label %catch, label %eh.resume, !dbg !23
 
 catch:                                            ; preds = %catch.dispatch
-  call void @llvm.dbg.declare(metadata i32* %e, metadata !24, metadata !DIExpression()), !dbg !25
-  %exn = load i8*, i8** %exn.slot, !dbg !23
-  %5 = call i8* @__cxa_begin_catch(i8* %exn) #2, !dbg !23
-  %6 = bitcast i8* %5 to i32*, !dbg !23
-  %7 = load i32, i32* %6, align 4, !dbg !23
-  store i32 %7, i32* %e, align 4, !dbg !23
-  store i32 0, i32* @global_var, align 4, !dbg !26
+  call void @llvm.dbg.declare(metadata ptr %e, metadata !24, metadata !DIExpression()), !dbg !25
+  %exn = load ptr, ptr %exn.slot, !dbg !23
+  %5 = call ptr @__cxa_begin_catch(ptr %exn) #2, !dbg !23
+  %6 = load i32, ptr %5, align 4, !dbg !23
+  store i32 %6, ptr %e, align 4, !dbg !23
+  store i32 0, ptr @global_var, align 4, !dbg !26
   call void @__cxa_end_catch() #2, !dbg !28
   br label %try.cont, !dbg !28
 
 try.cont:                                         ; preds = %catch, %invoke.cont
-  store i32 1, i32* @global_var, align 4, !dbg !29
+  store i32 1, ptr @global_var, align 4, !dbg !29
   ret i32 0, !dbg !30
 
 eh.resume:                                        ; preds = %catch.dispatch
-  %exn1 = load i8*, i8** %exn.slot, !dbg !23
-  %sel2 = load i32, i32* %ehselector.slot, !dbg !23
-  %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn1, 0, !dbg !23
-  %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel2, 1, !dbg !23
-  resume { i8*, i32 } %lpad.val3, !dbg !23
+  %exn1 = load ptr, ptr %exn.slot, !dbg !23
+  %sel2 = load i32, ptr %ehselector.slot, !dbg !23
+  %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn1, 0, !dbg !23
+  %lpad.val3 = insertvalue { ptr, i32 } %lpad.val, i32 %sel2, 1, !dbg !23
+  resume { ptr, i32 } %lpad.val3, !dbg !23
 }
 
 declare i32 @__gxx_personality_v0(...)
 
 ; Function Attrs: nounwind readnone
-declare i32 @llvm.eh.typeid.for(i8*) #1
+declare i32 @llvm.eh.typeid.for(ptr) #1
 
-declare i8* @__cxa_begin_catch(i8*)
+declare ptr @__cxa_begin_catch(ptr)
 
 declare void @__cxa_end_catch()
 

diff  --git a/llvm/test/DebugInfo/Generic/inline-no-debug-info.ll b/llvm/test/DebugInfo/Generic/inline-no-debug-info.ll
index face0b3fffb7e..88d87942f6ec1 100644
--- a/llvm/test/DebugInfo/Generic/inline-no-debug-info.ll
+++ b/llvm/test/DebugInfo/Generic/inline-no-debug-info.ll
@@ -37,8 +37,8 @@ target triple = "x86_64-unknown-linux-gnu"
 ; Function Attrs: nounwind uwtable
 define void @callee() #0 {
 entry:
-  store i32 1, i32* @a, align 4
-  store i32 2, i32* @b, align 4, !dbg !11
+  store i32 1, ptr @a, align 4
+  store i32 2, ptr @b, align 4, !dbg !11
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/inline-scopes.ll b/llvm/test/DebugInfo/Generic/inline-scopes.ll
index e0ef4bfe66d91..8e7543eb16e69 100644
--- a/llvm/test/DebugInfo/Generic/inline-scopes.ll
+++ b/llvm/test/DebugInfo/Generic/inline-scopes.ll
@@ -41,42 +41,42 @@ entry:
   %b.i3 = alloca i8, align 1
   %retval.i = alloca i32, align 4
   %b.i = alloca i8, align 1
-  call void @llvm.dbg.declare(metadata i8* %b.i, metadata !16, metadata !DIExpression()), !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %b.i, metadata !16, metadata !DIExpression()), !dbg !19
   %call.i = call zeroext i1 @_Z1fv(), !dbg !19
   %frombool.i = zext i1 %call.i to i8, !dbg !19
-  store i8 %frombool.i, i8* %b.i, align 1, !dbg !19
-  %0 = load i8, i8* %b.i, align 1, !dbg !19
+  store i8 %frombool.i, ptr %b.i, align 1, !dbg !19
+  %0 = load i8, ptr %b.i, align 1, !dbg !19
   %tobool.i = trunc i8 %0 to i1, !dbg !19
   br i1 %tobool.i, label %if.then.i, label %if.end.i, !dbg !19
 
 if.then.i:                                        ; preds = %entry
-  store i32 1, i32* %retval.i, !dbg !21
+  store i32 1, ptr %retval.i, !dbg !21
   br label %_Z2f1v.exit, !dbg !21
 
 if.end.i:                                         ; preds = %entry
-  store i32 2, i32* %retval.i, !dbg !22
+  store i32 2, ptr %retval.i, !dbg !22
   br label %_Z2f1v.exit, !dbg !22
 
 _Z2f1v.exit:                                      ; preds = %if.then.i, %if.end.i
-  %1 = load i32, i32* %retval.i, !dbg !23
-  call void @llvm.dbg.declare(metadata i8* %b.i3, metadata !24, metadata !DIExpression()), !dbg !27
+  %1 = load i32, ptr %retval.i, !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %b.i3, metadata !24, metadata !DIExpression()), !dbg !27
   %call.i4 = call zeroext i1 @_Z1fv(), !dbg !27
   %frombool.i5 = zext i1 %call.i4 to i8, !dbg !27
-  store i8 %frombool.i5, i8* %b.i3, align 1, !dbg !27
-  %2 = load i8, i8* %b.i3, align 1, !dbg !27
+  store i8 %frombool.i5, ptr %b.i3, align 1, !dbg !27
+  %2 = load i8, ptr %b.i3, align 1, !dbg !27
   %tobool.i6 = trunc i8 %2 to i1, !dbg !27
   br i1 %tobool.i6, label %if.then.i7, label %if.end.i8, !dbg !27
 
 if.then.i7:                                       ; preds = %_Z2f1v.exit
-  store i32 3, i32* %retval.i2, !dbg !29
+  store i32 3, ptr %retval.i2, !dbg !29
   br label %_Z2f2v.exit, !dbg !29
 
 if.end.i8:                                        ; preds = %_Z2f1v.exit
-  store i32 4, i32* %retval.i2, !dbg !30
+  store i32 4, ptr %retval.i2, !dbg !30
   br label %_Z2f2v.exit, !dbg !30
 
 _Z2f2v.exit:                                      ; preds = %if.then.i7, %if.end.i8
-  %3 = load i32, i32* %retval.i2, !dbg !31
+  %3 = load i32, ptr %retval.i2, !dbg !31
   ret i32 0, !dbg !32
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/instcombine-phi.ll b/llvm/test/DebugInfo/Generic/instcombine-phi.ll
index 8c209b373bce5..08f7bc0711808 100644
--- a/llvm/test/DebugInfo/Generic/instcombine-phi.ll
+++ b/llvm/test/DebugInfo/Generic/instcombine-phi.ll
@@ -103,30 +103,30 @@ if.end:                                           ; preds = %if.else, %if.then
 ;   return p;
 ; }
 
-; CHECK: define i32* @gep
+; CHECK: define ptr @gep
 ; CHECK-LABEL: if.end:
 ; CHECK: %[[PHI:.*]] = phi i64 [ %call, %if.then ], [ %call1, %if.else ]
-; CHECK: getelementptr inbounds i32, i32* %b, i64 %[[PHI]], !dbg [[gepMergedLoc:![0-9]+]]
-; CHECK: ret i32*
+; CHECK: getelementptr inbounds i32, ptr %b, i64 %[[PHI]], !dbg [[gepMergedLoc:![0-9]+]]
+; CHECK: ret ptr
 
-define i32* @gep(i32 %a, i32* %b) !dbg !23 {
+define ptr @gep(i32 %a, ptr %b) !dbg !23 {
 entry:
   %tobool = icmp ne i32 %a, 0, !dbg !24
   br i1 %tobool, label %if.then, label %if.else, !dbg !24
 
 if.then:                                          ; preds = %entry
   %call = call i64 @foo2(), !dbg !25
-  %arrayidx = getelementptr inbounds i32, i32* %b, i64 %call, !dbg !26
+  %arrayidx = getelementptr inbounds i32, ptr %b, i64 %call, !dbg !26
   br label %if.end, !dbg !27
 
 if.else:                                          ; preds = %entry
   %call1 = call i64 @bar2(), !dbg !28
-  %arrayidx2 = getelementptr inbounds i32, i32* %b, i64 %call1, !dbg !29
+  %arrayidx2 = getelementptr inbounds i32, ptr %b, i64 %call1, !dbg !29
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then
-  %r.0 = phi i32* [ %arrayidx, %if.then ], [ %arrayidx2, %if.else ]
-  ret i32* %r.0, !dbg !30
+  %r.0 = phi ptr [ %arrayidx, %if.then ], [ %arrayidx2, %if.else ]
+  ret ptr %r.0, !dbg !30
 }
 
 ; Test folding of load.  Generated from source:
@@ -145,8 +145,8 @@ if.end:                                           ; preds = %if.else, %if.then
 
 ; CHECK: define i32 @load
 ; CHECK-LABEL: if.end:
-; CHECK: %[[PHI:.*]] = phi i32* [ %call, %if.then ], [ %call1, %if.else ]
-; CHECK: load i32, i32* %[[PHI]],{{.*}} !dbg [[loadMergedLoc:![0-9]+]]
+; CHECK: %[[PHI:.*]] = phi ptr [ %call, %if.then ], [ %call1, %if.else ]
+; CHECK: load i32, ptr %[[PHI]],{{.*}} !dbg [[loadMergedLoc:![0-9]+]]
 ; CHECK: ret i32
 
 define i32 @load(i32 %a) !dbg !31 {
@@ -155,13 +155,13 @@ entry:
   br i1 %tobool, label %if.then, label %if.else, !dbg !32
 
 if.then:                                          ; preds = %entry
-  %call = call i32* @foo3(), !dbg !33
-  %0 = load i32, i32* %call, align 4, !dbg !34
+  %call = call ptr @foo3(), !dbg !33
+  %0 = load i32, ptr %call, align 4, !dbg !34
   br label %if.end, !dbg !35
 
 if.else:                                          ; preds = %entry
-  %call1 = call i32* @bar3(), !dbg !36
-  %1 = load i32, i32* %call1, align 4, !dbg !37
+  %call1 = call ptr @bar3(), !dbg !36
+  %1 = load i32, ptr %call1, align 4, !dbg !37
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then
@@ -295,8 +295,8 @@ declare i32 @foo()
 declare i32 @bar()
 declare i64 @foo2()
 declare i64 @bar2()
-declare i32* @foo3()
-declare i32* @bar3()
+declare ptr @foo3()
+declare ptr @bar3()
 
 ; CHECK: [[binopMergedLoc]] = !DILocation(line: 0
 ; CHECK: [[cmpMergedLoc]] = !DILocation(line: 0

diff  --git a/llvm/test/DebugInfo/Generic/linear-dbg-value.ll b/llvm/test/DebugInfo/Generic/linear-dbg-value.ll
index e26cdb9c229ce..461ca09e008ca 100644
--- a/llvm/test/DebugInfo/Generic/linear-dbg-value.ll
+++ b/llvm/test/DebugInfo/Generic/linear-dbg-value.ll
@@ -3,7 +3,7 @@
 source_filename = "linear-dbg-value.ll"
 
 ; Function Attrs: nounwind readonly uwtable
-define i32 @foo(i32* nocapture readonly %a, i32 %N) local_unnamed_addr #0 !dbg !6 {
+define i32 @foo(ptr nocapture readonly %a, i32 %N) local_unnamed_addr #0 !dbg !6 {
 entry:
   %cmp6 = icmp sgt i32 %N, 0, !dbg !11
   br i1 %cmp6, label %for.body.preheader, label %for.cond.cleanup, !dbg !15
@@ -26,8 +26,8 @@ for.body:                                         ; preds = %for.body, %for.body
 ; CHECK: DBG_VALUE {{.*}} ![[X]], !DIExpression()
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
   %x.07 = phi i32 [ %add, %for.body ], [ 0, %for.body.preheader ]
-  %arrayidx = getelementptr inbounds i32, i32* %a, i64 %indvars.iv, !dbg !17
-  %0 = load i32, i32* %arrayidx, align 4, !dbg !17
+  %arrayidx = getelementptr inbounds i32, ptr %a, i64 %indvars.iv, !dbg !17
+  %0 = load i32, ptr %arrayidx, align 4, !dbg !17
   %add = add nsw i32 %0, %x.07, !dbg !17
   call void @llvm.dbg.value(metadata i32 %add, metadata !9, metadata !DIExpression()), !dbg !20
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1, !dbg !21

diff  --git a/llvm/test/DebugInfo/Generic/mainsubprogram.ll b/llvm/test/DebugInfo/Generic/mainsubprogram.ll
index 8b7bb241e96c9..24a3a7aaef44d 100644
--- a/llvm/test/DebugInfo/Generic/mainsubprogram.ll
+++ b/llvm/test/DebugInfo/Generic/mainsubprogram.ll
@@ -11,7 +11,7 @@
 define i32 @main() #0 !dbg !4 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   ret i32 0, !dbg !10
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-1.ll b/llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-1.ll
index 506ca048dc86b..051ea71b674f9 100644
--- a/llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-1.ll
+++ b/llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-1.ll
@@ -29,12 +29,12 @@ define dso_local void @fun(i32 %param) !dbg !12 {
 entry:
   %param.addr = alloca i32, align 4
   call void @llvm.dbg.value(metadata i32 %param, metadata !16, metadata !DIExpression()), !dbg !17
-  store i32 %param, i32* %param.addr, align 4
-  call void @llvm.dbg.value(metadata i32* %param.addr, metadata !16, metadata !DIExpression(DW_OP_deref)), !dbg !17
-  call void @llvm.dbg.value(metadata i32* %param.addr, metadata !22, metadata !DIExpression()), !dbg !28
-  call void @llvm.dbg.value(metadata i32* %param.addr, metadata !22, metadata !DIExpression()), !dbg !28
-  %0 = load i32, i32* %param.addr, align 4, !dbg !30
-  store i32 %0, i32* @g, align 4, !dbg !31
+  store i32 %param, ptr %param.addr, align 4
+  call void @llvm.dbg.value(metadata ptr %param.addr, metadata !16, metadata !DIExpression(DW_OP_deref)), !dbg !17
+  call void @llvm.dbg.value(metadata ptr %param.addr, metadata !22, metadata !DIExpression()), !dbg !28
+  call void @llvm.dbg.value(metadata ptr %param.addr, metadata !22, metadata !DIExpression()), !dbg !28
+  %0 = load i32, ptr %param.addr, align 4, !dbg !30
+  store i32 %0, ptr @g, align 4, !dbg !31
   ret void, !dbg !32
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-2.ll b/llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-2.ll
index d8d41cb87c82a..073649af53521 100644
--- a/llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-2.ll
+++ b/llvm/test/DebugInfo/Generic/mem2reg-promote-alloca-2.ll
@@ -36,41 +36,37 @@
 
 define dso_local void @fun() !dbg !14 {
 entry:
-  %e.addr.i = alloca i64*, align 8
+  %e.addr.i = alloca ptr, align 8
   %local = alloca i64, align 8
-  %0 = bitcast i64* %local to i8*, !dbg !19
-  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %0), !dbg !19
+  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %local), !dbg !19
   call void @llvm.dbg.value(metadata i64 0, metadata !18, metadata !DIExpression()), !dbg !20
-  store i64 0, i64* %local, align 8, !dbg !21
-  call void @llvm.dbg.value(metadata i64* %local, metadata !18, metadata !DIExpression(DW_OP_deref)), !dbg !20
-  %1 = bitcast i64** %e.addr.i to i8*, !dbg !26
-  call void @llvm.lifetime.start.p0i8(i64 8, i8* %1), !dbg !26
-  call void @llvm.dbg.value(metadata i64* %local, metadata !32, metadata !DIExpression()), !dbg !26
-  store i64* %local, i64** %e.addr.i, align 8
-  %2 = load i64, i64* @a, align 8, !dbg !36
-  call void @llvm.dbg.value(metadata i64* %local, metadata !32, metadata !DIExpression()), !dbg !26
-  store i64 %2, i64* %local, align 8, !dbg !37
+  store i64 0, ptr %local, align 8, !dbg !21
+  call void @llvm.dbg.value(metadata ptr %local, metadata !18, metadata !DIExpression(DW_OP_deref)), !dbg !20
+  call void @llvm.lifetime.start.p0(i64 8, ptr %e.addr.i), !dbg !26
+  call void @llvm.dbg.value(metadata ptr %local, metadata !32, metadata !DIExpression()), !dbg !26
+  store ptr %local, ptr %e.addr.i, align 8
+  %0 = load i64, ptr @a, align 8, !dbg !36
+  call void @llvm.dbg.value(metadata ptr %local, metadata !32, metadata !DIExpression()), !dbg !26
+  store i64 %0, ptr %local, align 8, !dbg !37
   call void (...) @c(), !dbg !38
-  %3 = load i32, i32* @b, align 4, !dbg !39
-  %tobool.not.i = icmp eq i32 %3, 0, !dbg !39
+  %1 = load i32, ptr @b, align 4, !dbg !39
+  %tobool.not.i = icmp eq i32 %1, 0, !dbg !39
   br i1 %tobool.not.i, label %esc.exit, label %if.then.i, !dbg !43
 
 if.then.i:                                        ; preds = %entry
-  %4 = load i64*, i64** %e.addr.i, align 8, !dbg !44
-  call void @llvm.dbg.value(metadata i64* %4, metadata !32, metadata !DIExpression()), !dbg !26
-  store i64 0, i64* %4, align 8, !dbg !45
+  %2 = load ptr, ptr %e.addr.i, align 8, !dbg !44
+  call void @llvm.dbg.value(metadata ptr %2, metadata !32, metadata !DIExpression()), !dbg !26
+  store i64 0, ptr %2, align 8, !dbg !45
   br label %esc.exit, !dbg !46
 
 esc.exit:                                         ; preds = %entry, %if.then.i
-  %5 = bitcast i64** %e.addr.i to i8*, !dbg !47
-  call void @llvm.lifetime.end.p0i8(i64 8, i8* %5), !dbg !47
-  %6 = bitcast i64* %local to i8*, !dbg !48
-  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %6), !dbg !48
+  call void @llvm.lifetime.end.p0(i64 8, ptr %e.addr.i), !dbg !47
+  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %local), !dbg !48
   ret void, !dbg !48
 }
 
-declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture)
-declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture)
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture)
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)
 declare void @llvm.dbg.value(metadata, metadata, metadata)
 declare !dbg !49 dso_local void @c(...)
 

diff  --git a/llvm/test/DebugInfo/Generic/member-order.ll b/llvm/test/DebugInfo/Generic/member-order.ll
index bde1bb89b2756..a2965cc0dd9b3 100644
--- a/llvm/test/DebugInfo/Generic/member-order.ll
+++ b/llvm/test/DebugInfo/Generic/member-order.ll
@@ -23,12 +23,12 @@
 %struct.foo = type { i8 }
 
 ; Function Attrs: nounwind uwtable
-define void @_ZN3foo2f1Ev(%struct.foo* %this) #0 align 2 !dbg !14 {
+define void @_ZN3foo2f1Ev(ptr %this) #0 align 2 !dbg !14 {
 entry:
-  %this.addr = alloca %struct.foo*, align 8
-  store %struct.foo* %this, %struct.foo** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.foo** %this.addr, metadata !16, metadata !DIExpression()), !dbg !18
-  %this1 = load %struct.foo*, %struct.foo** %this.addr
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !16, metadata !DIExpression()), !dbg !18
+  %this1 = load ptr, ptr %this.addr
   ret void, !dbg !19
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/mldst-motion-dbg.ll b/llvm/test/DebugInfo/Generic/mldst-motion-dbg.ll
index def997d6a715f..3723311bb31af 100644
--- a/llvm/test/DebugInfo/Generic/mldst-motion-dbg.ll
+++ b/llvm/test/DebugInfo/Generic/mldst-motion-dbg.ll
@@ -15,28 +15,28 @@
 
 ; CHECK: if.end:
 ; CHECK-NEXT: %.sink = phi i32 [ 2, %if.else ], [ 1, %if.then ], !dbg ![[dbg:[0-9]+]]
-; CHECK-NEXT: %0 = getelementptr inbounds i32, i32* %a, i64 1, !dbg ![[dbg:[0-9]+]]
-; CHECK-NEXT: store i32 %.sink, i32* %0, align 4, !dbg ![[dbg:[0-9]+]]
+; CHECK-NEXT: %0 = getelementptr inbounds i32, ptr %a, i64 1, !dbg ![[dbg:[0-9]+]]
+; CHECK-NEXT: store i32 %.sink, ptr %0, align 4, !dbg ![[dbg:[0-9]+]]
 
 ; CHECK-DAG: ![[dbg]] = !DILocation(line: 0, scope: ![[scp:[0-9]+]]
 ; CHECK-DAG: ![[scp]] = distinct !DILexicalBlock(scope: ![[fun:[0-9]+]]
 ; CHECK-DAG: ![[fun]] = distinct !DISubprogram(name: "fun",
 
-define void @_Z3funPii(i32* nocapture noundef writeonly %a, i32 noundef %cond) !dbg !7 {
+define void @_Z3funPii(ptr nocapture noundef writeonly %a, i32 noundef %cond) !dbg !7 {
 entry:
-  call void @llvm.dbg.value(metadata i32* %a, metadata !13, metadata !DIExpression()), !dbg !15
+  call void @llvm.dbg.value(metadata ptr %a, metadata !13, metadata !DIExpression()), !dbg !15
   call void @llvm.dbg.value(metadata i32 %cond, metadata !14, metadata !DIExpression()), !dbg !15
   %tobool.not = icmp eq i32 %cond, 0, !dbg !16
   br i1 %tobool.not, label %if.else, label %if.then, !dbg !18
 
 if.then:                                          ; preds = %entry
-  %arrayidx = getelementptr inbounds i32, i32* %a, i64 1, !dbg !19
-  store i32 1, i32* %arrayidx, align 4, !dbg !20
+  %arrayidx = getelementptr inbounds i32, ptr %a, i64 1, !dbg !19
+  store i32 1, ptr %arrayidx, align 4, !dbg !20
   br label %if.end, !dbg !19
 
 if.else:                                          ; preds = %entry
-  %arrayidx1 = getelementptr inbounds i32, i32* %a, i64 1, !dbg !25
-  store i32 2, i32* %arrayidx1, align 4, !dbg !26
+  %arrayidx1 = getelementptr inbounds i32, ptr %a, i64 1, !dbg !25
+  store i32 2, ptr %arrayidx1, align 4, !dbg !26
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/llvm/test/DebugInfo/Generic/namespace.ll b/llvm/test/DebugInfo/Generic/namespace.ll
index 2fe6b393fe6e6..03e3a8afec3eb 100644
--- a/llvm/test/DebugInfo/Generic/namespace.ll
+++ b/llvm/test/DebugInfo/Generic/namespace.ll
@@ -188,7 +188,7 @@
 
 @_ZN1A1B1iE = global i32 0, align 4, !dbg !131
 @_ZN1A1B7var_fwdE = global i32 0, align 4, !dbg !132
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_debug_info_namespace.cpp, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_debug_info_namespace.cpp, ptr null }]
 
 ; Function Attrs: nounwind ssp uwtable
 define i32 @_ZN1A1B2f1Ev() #0 !dbg !10 {
@@ -200,8 +200,8 @@ entry:
 define void @_ZN1A1B2f1Ei(i32) #0 !dbg !14 {
 entry:
   %.addr = alloca i32, align 4
-  store i32 %0, i32* %.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %.addr, metadata !61, metadata !62), !dbg !63
+  store i32 %0, ptr %.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %.addr, metadata !61, metadata !62), !dbg !63
   ret void, !dbg !64
 }
 
@@ -211,7 +211,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 define internal void @__cxx_global_var_init() section "__TEXT,__StaticInit,regular,pure_instructions" !dbg !17 {
 entry:
   %call = call i32 @_ZN1A1B2f1Ev(), !dbg !65
-  store i32 %call, i32* @_ZN1A1B1iE, align 4, !dbg !65
+  store i32 %call, ptr @_ZN1A1B1iE, align 4, !dbg !65
   ret void, !dbg !65
 }
 
@@ -221,35 +221,35 @@ entry:
   %retval = alloca i32, align 4
   %b.addr = alloca i8, align 1
   %frombool = zext i1 %b to i8
-  store i8 %frombool, i8* %b.addr, align 1
-  call void @llvm.dbg.declare(metadata i8* %b.addr, metadata !66, metadata !62), !dbg !67
-  %0 = load i8, i8* %b.addr, align 1, !dbg !68
+  store i8 %frombool, ptr %b.addr, align 1
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !66, metadata !62), !dbg !67
+  %0 = load i8, ptr %b.addr, align 1, !dbg !68
   %tobool = trunc i8 %0 to i1, !dbg !68
   br i1 %tobool, label %if.then, label %if.end, !dbg !68
 
 if.then:                                          ; preds = %entry
-  %1 = load i32, i32* @_ZN1A1B1iE, align 4, !dbg !69
-  store i32 %1, i32* %retval, !dbg !69
+  %1 = load i32, ptr @_ZN1A1B1iE, align 4, !dbg !69
+  store i32 %1, ptr %retval, !dbg !69
   br label %return, !dbg !69
 
 if.end:                                           ; preds = %entry
-  %2 = load i32, i32* @_ZN1A1B1iE, align 4, !dbg !70
-  %3 = load i32, i32* @_ZN1A1B1iE, align 4, !dbg !70
+  %2 = load i32, ptr @_ZN1A1B1iE, align 4, !dbg !70
+  %3 = load i32, ptr @_ZN1A1B1iE, align 4, !dbg !70
   %add = add nsw i32 %2, %3, !dbg !70
-  %4 = load i32, i32* @_ZN1A1B1iE, align 4, !dbg !70
+  %4 = load i32, ptr @_ZN1A1B1iE, align 4, !dbg !70
   %add1 = add nsw i32 %add, %4, !dbg !70
-  store i32 %add1, i32* %retval, !dbg !70
+  store i32 %add1, ptr %retval, !dbg !70
   br label %return, !dbg !70
 
 return:                                           ; preds = %if.end, %if.then
-  %5 = load i32, i32* %retval, !dbg !71
+  %5 = load i32, ptr %retval, !dbg !71
   ret i32 %5, !dbg !71
 }
 
 define internal void @__cxx_global_var_init1() section "__TEXT,__StaticInit,regular,pure_instructions" !dbg !25 {
 entry:
-  %0 = load i32, i32* @_ZN1A1B1iE, align 4, !dbg !72
-  store i32 %0, i32* @_ZN1A1B7var_fwdE, align 4, !dbg !72
+  %0 = load i32, ptr @_ZN1A1B1iE, align 4, !dbg !72
+  store i32 %0, ptr @_ZN1A1B7var_fwdE, align 4, !dbg !72
   ret void, !dbg !72
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/namespace_inline_function_definition.ll b/llvm/test/DebugInfo/Generic/namespace_inline_function_definition.ll
index 5e922e55fc5e1..d9ad39b0eea5d 100644
--- a/llvm/test/DebugInfo/Generic/namespace_inline_function_definition.ll
+++ b/llvm/test/DebugInfo/Generic/namespace_inline_function_definition.ll
@@ -37,11 +37,11 @@ define i32 @main() #0 !dbg !4 {
 entry:
   %i.addr.i = alloca i32, align 4
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
-  %0 = load i32, i32* @x, align 4, !dbg !16
-  store i32 %0, i32* %i.addr.i, align 4
-  call void @llvm.dbg.declare(metadata i32* %i.addr.i, metadata !117, metadata !DIExpression()), !dbg !18
-  %1 = load i32, i32* %i.addr.i, align 4, !dbg !18
+  store i32 0, ptr %retval
+  %0 = load i32, ptr @x, align 4, !dbg !16
+  store i32 %0, ptr %i.addr.i, align 4
+  call void @llvm.dbg.declare(metadata ptr %i.addr.i, metadata !117, metadata !DIExpression()), !dbg !18
+  %1 = load i32, ptr %i.addr.i, align 4, !dbg !18
   %mul.i = mul nsw i32 %1, 2, !dbg !18
   ret i32 %mul.i, !dbg !16
 }
@@ -50,9 +50,9 @@ entry:
 define i32 @_ZN2ns4funcEi(i32 %i) #1 !dbg !9 {
 entry:
   %i.addr = alloca i32, align 4
-  store i32 %i, i32* %i.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %i.addr, metadata !17, metadata !DIExpression()), !dbg !19
-  %0 = load i32, i32* %i.addr, align 4, !dbg !19
+  store i32 %i, ptr %i.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !17, metadata !DIExpression()), !dbg !19
+  %0 = load i32, ptr %i.addr, align 4, !dbg !19
   %mul = mul nsw i32 %0, 2, !dbg !19
   ret i32 %mul, !dbg !19
 }

diff  --git a/llvm/test/DebugInfo/Generic/pr40628.ll b/llvm/test/DebugInfo/Generic/pr40628.ll
index 90ebb86b2f43f..d08f3d6132969 100644
--- a/llvm/test/DebugInfo/Generic/pr40628.ll
+++ b/llvm/test/DebugInfo/Generic/pr40628.ll
@@ -23,12 +23,12 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define dso_local i32 @foo(i32*) !dbg !7 {
-  %2 = load i32, i32* %0, align 4, !dbg !23
+define dso_local i32 @foo(ptr) !dbg !7 {
+  %2 = load i32, ptr %0, align 4, !dbg !23
   call void @llvm.dbg.value(metadata i32 %2, metadata !16, metadata !DIExpression()), !dbg !23
-  %3 = load i32, i32* %0, align 4, !dbg !23
+  %3 = load i32, ptr %0, align 4, !dbg !23
   call void @llvm.dbg.value(metadata i32 %3, metadata !17, metadata !DIExpression()), !dbg !23
-  store i32 0, i32* %0, align 4, !dbg !23
+  store i32 0, ptr %0, align 4, !dbg !23
   ret i32 %3, !dbg !23
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/recursive_inlining.ll b/llvm/test/DebugInfo/Generic/recursive_inlining.ll
index a17e17d66662f..908e408401f8f 100644
--- a/llvm/test/DebugInfo/Generic/recursive_inlining.ll
+++ b/llvm/test/DebugInfo/Generic/recursive_inlining.ll
@@ -8,7 +8,7 @@
 ; accidentally overwrote the concrete argument and was lost.
 
 ; IR generated from the following source compiled with clang -g:
-; void fn1(void *);
+; void fn1(ptr);
 ; void fn2(int, int, int, int);
 ; void fn3();
 ; void fn8();
@@ -86,17 +86,16 @@ source_filename = "test/DebugInfo/Generic/recursive_inlining.ll"
 
 %struct.C = type { i32 }
 
- at x = global %struct.C* null, align 8, !dbg !0
+ at x = global ptr null, align 8, !dbg !0
 
 ; Function Attrs: nounwind
 define void @_Z3fn6v() #0 !dbg !20 {
 entry:
   tail call void @_Z3fn8v() #3, !dbg !23
-  %0 = load %struct.C*, %struct.C** @x, align 8, !dbg !24, !tbaa !25
-  tail call void @llvm.dbg.value(metadata %struct.C* %0, metadata !29, metadata !32) #3, !dbg !33
+  %0 = load ptr, ptr @x, align 8, !dbg !24, !tbaa !25
+  tail call void @llvm.dbg.value(metadata ptr %0, metadata !29, metadata !32) #3, !dbg !33
   tail call void @_Z3fn8v() #3, !dbg !34
-  %b.i = getelementptr inbounds %struct.C, %struct.C* %0, i64 0, i32 0, !dbg !35
-  %1 = load i32, i32* %b.i, align 4, !dbg !35, !tbaa !37
+  %1 = load i32, ptr %0, align 4, !dbg !35, !tbaa !37
   %tobool.i = icmp eq i32 %1, 0, !dbg !35
   br i1 %tobool.i, label %_ZN1C5m_fn2Ev.exit, label %if.then.i, !dbg !35
 
@@ -113,12 +112,11 @@ declare void @_Z3fn8v() #1
 
 ; Function Attrs: nounwind
 
-define linkonce_odr void @_ZN1C5m_fn2Ev(%struct.C* nocapture readonly %this) #0 align 2 !dbg !30 {
+define linkonce_odr void @_ZN1C5m_fn2Ev(ptr nocapture readonly %this) #0 align 2 !dbg !30 {
 entry:
-  tail call void @llvm.dbg.value(metadata %struct.C* %this, metadata !29, metadata !32), !dbg !44
+  tail call void @llvm.dbg.value(metadata ptr %this, metadata !29, metadata !32), !dbg !44
   tail call void @_Z3fn8v() #3, !dbg !45
-  %b = getelementptr inbounds %struct.C, %struct.C* %this, i64 0, i32 0, !dbg !46
-  %0 = load i32, i32* %b, align 4, !dbg !46, !tbaa !37
+  %0 = load i32, ptr %this, align 4, !dbg !46, !tbaa !37
   %tobool = icmp eq i32 %0, 0, !dbg !46
   br i1 %tobool, label %if.end, label %if.then, !dbg !46
 
@@ -128,11 +126,10 @@ if.then:                                          ; preds = %entry
 
 if.end:                                           ; preds = %if.then, %entry
   tail call void @_Z3fn8v() #3, !dbg !48
-  %1 = load %struct.C*, %struct.C** @x, align 8, !dbg !52, !tbaa !25
-  tail call void @llvm.dbg.value(metadata %struct.C* %1, metadata !29, metadata !32) #3, !dbg !53
+  %1 = load ptr, ptr @x, align 8, !dbg !52, !tbaa !25
+  tail call void @llvm.dbg.value(metadata ptr %1, metadata !29, metadata !32) #3, !dbg !53
   tail call void @_Z3fn8v() #3, !dbg !54
-  %b.i.i = getelementptr inbounds %struct.C, %struct.C* %1, i64 0, i32 0, !dbg !55
-  %2 = load i32, i32* %b.i.i, align 4, !dbg !55, !tbaa !37
+  %2 = load i32, ptr %1, align 4, !dbg !55, !tbaa !37
   %tobool.i.i = icmp eq i32 %2, 0, !dbg !55
   br i1 %tobool.i.i, label %_Z3fn6v.exit, label %if.then.i.i, !dbg !55
 
@@ -153,11 +150,10 @@ entry:
 
 tailrecurse:                                      ; preds = %tailrecurse.backedge, %entry
   tail call void @_Z3fn8v() #3, !dbg !59
-  %0 = load %struct.C*, %struct.C** @x, align 8, !dbg !61, !tbaa !25
-  tail call void @llvm.dbg.value(metadata %struct.C* %0, metadata !29, metadata !32) #3, !dbg !62
+  %0 = load ptr, ptr @x, align 8, !dbg !61, !tbaa !25
+  tail call void @llvm.dbg.value(metadata ptr %0, metadata !29, metadata !32) #3, !dbg !62
   tail call void @_Z3fn8v() #3, !dbg !63
-  %b.i.i = getelementptr inbounds %struct.C, %struct.C* %0, i64 0, i32 0, !dbg !64
-  %1 = load i32, i32* %b.i.i, align 4, !dbg !64, !tbaa !37
+  %1 = load i32, ptr %0, align 4, !dbg !64, !tbaa !37
   %tobool.i.i = icmp eq i32 %1, 0, !dbg !64
   br i1 %tobool.i.i, label %tailrecurse.backedge, label %if.then.i.i, !dbg !64
 
@@ -172,16 +168,16 @@ if.then.i.i:                                      ; preds = %tailrecurse
 ; Function Attrs: nounwind
 define void @_Z3fn4v() #0 !dbg !66 {
 entry:
-  %0 = load %struct.C*, %struct.C** @x, align 8, !dbg !67, !tbaa !25
-  tail call void @_ZN1C5m_fn2Ev(%struct.C* %0), !dbg !67
+  %0 = load ptr, ptr @x, align 8, !dbg !67, !tbaa !25
+  tail call void @_ZN1C5m_fn2Ev(ptr %0), !dbg !67
   ret void, !dbg !67
 }
 
 ; Function Attrs: nounwind
 define void @_Z3fn5v() #0 !dbg !68 {
 entry:
-  %0 = load %struct.C*, %struct.C** @x, align 8, !dbg !69, !tbaa !25
-  tail call void @_ZN1C5m_fn2Ev(%struct.C* %0), !dbg !69
+  %0 = load ptr, ptr @x, align 8, !dbg !69, !tbaa !25
+  tail call void @_ZN1C5m_fn2Ev(ptr %0), !dbg !69
   ret void, !dbg !69
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/restrict.ll b/llvm/test/DebugInfo/Generic/restrict.ll
index 840266d3b0061..0131e5332ff4e 100644
--- a/llvm/test/DebugInfo/Generic/restrict.ll
+++ b/llvm/test/DebugInfo/Generic/restrict.ll
@@ -10,16 +10,16 @@
 ; CHECK-NOT: DW_AT_type
 
 ; Generated with clang from:
-; void foo(void* __restrict__ dst) {
+; void foo(ptr __restrict__ dst) {
 ; }
 
 
 ; Function Attrs: nounwind uwtable
-define void @_Z3fooPv(i8* noalias %dst) #0 !dbg !4 {
+define void @_Z3fooPv(ptr noalias %dst) #0 !dbg !4 {
 entry:
-  %dst.addr = alloca i8*, align 8
-  store i8* %dst, i8** %dst.addr, align 8
-  call void @llvm.dbg.declare(metadata i8** %dst.addr, metadata !13, metadata !DIExpression()), !dbg !14
+  %dst.addr = alloca ptr, align 8
+  store ptr %dst, ptr %dst.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %dst.addr, metadata !13, metadata !DIExpression()), !dbg !14
   ret void, !dbg !15
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/sroa-larger.ll b/llvm/test/DebugInfo/Generic/sroa-larger.ll
index cde57a621ddcb..55e82034bea91 100644
--- a/llvm/test/DebugInfo/Generic/sroa-larger.ll
+++ b/llvm/test/DebugInfo/Generic/sroa-larger.ll
@@ -18,7 +18,7 @@
 ;     return Tmp;
 ;   }
 ; } Dd;
-; void *operator new(size_t, void *);
+; ptr operator new(size_t, ptr);
 ; struct F {
 ;   F(D Err) : HasError() {
 ;     C *e = (C *)(ErrorStorage.buffer);
@@ -37,18 +37,16 @@ source_filename = "test.ll"
 define void @"\01?fn3@@YAXXZ"() local_unnamed_addr !dbg !6 {
 entry:
   %tmp = alloca %struct.F, align 8
-  %0 = bitcast %struct.F* %tmp to i8*
-  call void @llvm.lifetime.start.p0i8(i64 16, i8* %0)
-  call void @llvm.dbg.declare(metadata %struct.F* %tmp, metadata !10, metadata !DIExpression()), !dbg !14
+  call void @llvm.lifetime.start.p0(i64 16, ptr %tmp)
+  call void @llvm.dbg.declare(metadata ptr %tmp, metadata !10, metadata !DIExpression()), !dbg !14
   ; CHECK-NOT: !DIExpression(DW_OP_LLVM_fragment, 32, 96)
   ; CHECK: call void @llvm.dbg.value(metadata i32 0, metadata !10, metadata !DIExpression())
-  %_Myval2.i.i.i.i.i = bitcast %struct.F* %tmp to i32*
-  store i32 0, i32* %_Myval2.i.i.i.i.i, align 8
+  store i32 0, ptr %tmp, align 8
   ret void
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #0
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1

diff  --git a/llvm/test/DebugInfo/Generic/sroa-samesize.ll b/llvm/test/DebugInfo/Generic/sroa-samesize.ll
index 4475eee561b5c..0527f6fe6c72b 100644
--- a/llvm/test/DebugInfo/Generic/sroa-samesize.ll
+++ b/llvm/test/DebugInfo/Generic/sroa-samesize.ll
@@ -10,7 +10,7 @@
 ;   x2 a(x4());
 ;   return a;
 ; }
-; void *operator new(size_t, void *);
+; ptr operator new(size_t, ptr);
 ; struct B {
 ;   B() { new (x8.x1) x2(x5()); }
 ;   A x8;
@@ -31,10 +31,9 @@ declare i32 @"\01?x4@@YAHXZ"() local_unnamed_addr
 define void @"\01?x9@@YAXXZ"() local_unnamed_addr !dbg !8 {
 entry:
   %agg.tmp.ensured = alloca %struct.B, align 8
-  call void @llvm.dbg.declare(metadata %struct.B* %agg.tmp.ensured, metadata !11, metadata !DIExpression()), !dbg !24
+  call void @llvm.dbg.declare(metadata ptr %agg.tmp.ensured, metadata !11, metadata !DIExpression()), !dbg !24
   %call.i.i = call i32 @"\01?x4@@YAHXZ"(), !dbg !46, !noalias !47
-  %x3.i.i.i = bitcast %struct.B* %agg.tmp.ensured to i32*, !dbg !50
-  store i32 0, i32* %x3.i.i.i, align 4, !dbg !50, !tbaa !57, !alias.scope !47
+  store i32 0, ptr %agg.tmp.ensured, align 4, !dbg !50, !tbaa !57, !alias.scope !47
   ; CHECK: call void @llvm.dbg.value(metadata i32 0, metadata ![[A:.*]], metadata !DIExpression())
   ; CHECK: ![[A]] = !DILocalVariable(name: "a",
   ret void, !dbg !62

diff  --git a/llvm/test/DebugInfo/Generic/store-tail-merge.ll b/llvm/test/DebugInfo/Generic/store-tail-merge.ll
index 88a0bae09ab31..affeb4629433e 100644
--- a/llvm/test/DebugInfo/Generic/store-tail-merge.ll
+++ b/llvm/test/DebugInfo/Generic/store-tail-merge.ll
@@ -32,19 +32,19 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 ; Function Attrs: noinline nounwind uwtable
-define i32 @foo(i32 %a, i32* %d) !dbg !6 {
+define i32 @foo(i32 %a, ptr %d) !dbg !6 {
 entry:
   %tobool = icmp ne i32 %a, 0, !dbg !8
   br i1 %tobool, label %if.then, label %if.else, !dbg !8
 
 if.then:                                          ; preds = %entry
   %call = call i32 @bar(i32 %a), !dbg !9
-  store i32 %call, i32* %d, align 4, !dbg !10
+  store i32 %call, ptr %d, align 4, !dbg !10
   br label %if.end, !dbg !11
 
 if.else:                                          ; preds = %entry
   %call1 = call i32 @bar2(i32 %a), !dbg !12
-  store i32 %call1, i32* %d, align 4, !dbg !13
+  store i32 %call1, ptr %d, align 4, !dbg !13
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/llvm/test/DebugInfo/Generic/tu-composite.ll b/llvm/test/DebugInfo/Generic/tu-composite.ll
index 1700507b1b3bc..bcfe049e7323c 100644
--- a/llvm/test/DebugInfo/Generic/tu-composite.ll
+++ b/llvm/test/DebugInfo/Generic/tu-composite.ll
@@ -73,24 +73,24 @@
 ;   D::virt<bar> t;
 ; }
 
-%struct.C = type { i32 (...)** }
+%struct.C = type { ptr }
 %struct.bar = type { i8 }
 %"struct.D::Nested" = type { i8 }
 %"struct.D::Nested2" = type { i8 }
-%"struct.D::virt" = type { %struct.bar* }
+%"struct.D::virt" = type { ptr }
 
- at _ZTV1C = unnamed_addr constant [3 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI1C to i8*), i8* bitcast (void (%struct.C*)* @_ZN1C3fooEv to i8*)]
- at _ZTVN10__cxxabiv117__class_type_infoE = external global i8*
+ at _ZTV1C = unnamed_addr constant [3 x ptr] [ptr null, ptr @_ZTI1C, ptr @_ZN1C3fooEv]
+ at _ZTVN10__cxxabiv117__class_type_infoE = external global ptr
 @_ZTS1C = constant [3 x i8] c"1C\00"
- at _ZTI1C = unnamed_addr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @_ZTS1C, i32 0, i32 0) }
+ at _ZTI1C = unnamed_addr constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1C }
 
 ; Function Attrs: nounwind ssp uwtable
-define void @_ZN1C3fooEv(%struct.C* %this) unnamed_addr #0 align 2 !dbg !31 {
+define void @_ZN1C3fooEv(ptr %this) unnamed_addr #0 align 2 !dbg !31 {
 entry:
-  %this.addr = alloca %struct.C*, align 8
-  store %struct.C* %this, %struct.C** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.C** %this.addr, metadata !36, metadata !DIExpression()), !dbg !38
-  %this1 = load %struct.C*, %struct.C** %this.addr
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !36, metadata !DIExpression()), !dbg !38
+  %this1 = load ptr, ptr %this.addr
   ret void, !dbg !39
 }
 
@@ -104,14 +104,14 @@ entry:
   %A = alloca [3 x %struct.bar], align 1
   %B2 = alloca %struct.bar, align 1
   %e = alloca %"struct.D::Nested", align 1
-  %p = alloca %"struct.D::Nested2"*, align 8
+  %p = alloca ptr, align 8
   %t = alloca %"struct.D::virt", align 8
-  call void @llvm.dbg.declare(metadata %struct.bar* %B, metadata !40, metadata !DIExpression()), !dbg !42
-  call void @llvm.dbg.declare(metadata [3 x %struct.bar]* %A, metadata !43, metadata !DIExpression()), !dbg !47
-  call void @llvm.dbg.declare(metadata %struct.bar* %B2, metadata !48, metadata !DIExpression()), !dbg !50
-  call void @llvm.dbg.declare(metadata %"struct.D::Nested"* %e, metadata !51, metadata !DIExpression()), !dbg !52
-  call void @llvm.dbg.declare(metadata %"struct.D::Nested2"** %p, metadata !53, metadata !DIExpression()), !dbg !55
-  call void @llvm.dbg.declare(metadata %"struct.D::virt"* %t, metadata !56, metadata !DIExpression()), !dbg !57
+  call void @llvm.dbg.declare(metadata ptr %B, metadata !40, metadata !DIExpression()), !dbg !42
+  call void @llvm.dbg.declare(metadata ptr %A, metadata !43, metadata !DIExpression()), !dbg !47
+  call void @llvm.dbg.declare(metadata ptr %B2, metadata !48, metadata !DIExpression()), !dbg !50
+  call void @llvm.dbg.declare(metadata ptr %e, metadata !51, metadata !DIExpression()), !dbg !52
+  call void @llvm.dbg.declare(metadata ptr %p, metadata !53, metadata !DIExpression()), !dbg !55
+  call void @llvm.dbg.declare(metadata ptr %t, metadata !56, metadata !DIExpression()), !dbg !57
   ret void, !dbg !58
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/two-cus-from-same-file.ll b/llvm/test/DebugInfo/Generic/two-cus-from-same-file.ll
index 778acef7bed9a..208810ee63ba2 100644
--- a/llvm/test/DebugInfo/Generic/two-cus-from-same-file.ll
+++ b/llvm/test/DebugInfo/Generic/two-cus-from-same-file.ll
@@ -13,18 +13,18 @@
 
 define void @foo() nounwind !dbg !5 {
 entry:
-  %puts = tail call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str, i32 0, i32 0)), !dbg !23
+  %puts = tail call i32 @puts(ptr @str), !dbg !23
   ret void, !dbg !25
 }
 
-declare i32 @puts(i8* nocapture) nounwind
+declare i32 @puts(ptr nocapture) nounwind
 
-define i32 @main(i32 %argc, i8** nocapture %argv) nounwind !dbg !12 {
+define i32 @main(i32 %argc, ptr nocapture %argv) nounwind !dbg !12 {
 entry:
   tail call void @llvm.dbg.value(metadata i32 %argc, metadata !21, metadata !DIExpression()), !dbg !26
   ; Avoid talking about the pointer size in debug info because that's target dependent
-  tail call void @llvm.dbg.value(metadata i8** %argv, metadata !22, metadata !DIExpression(DW_OP_deref, DW_OP_deref)), !dbg !27
-  %puts = tail call i32 @puts(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str1, i32 0, i32 0)), !dbg !28
+  tail call void @llvm.dbg.value(metadata ptr %argv, metadata !22, metadata !DIExpression(DW_OP_deref, DW_OP_deref)), !dbg !27
+  %puts = tail call i32 @puts(ptr @str1), !dbg !28
   tail call void @foo() nounwind, !dbg !30
   ret i32 0, !dbg !31
 }

diff  --git a/llvm/test/DebugInfo/Generic/typedef.ll b/llvm/test/DebugInfo/Generic/typedef.ll
index ccc420c86105b..486450f2851ba 100644
--- a/llvm/test/DebugInfo/Generic/typedef.ll
+++ b/llvm/test/DebugInfo/Generic/typedef.ll
@@ -12,7 +12,7 @@
 
 source_filename = "test/DebugInfo/Generic/typedef.ll"
 
- at y = global i8* null, align 8, !dbg !0
+ at y = global ptr null, align 8, !dbg !0
 
 !llvm.dbg.cu = !{!5}
 !llvm.module.flags = !{!8, !9}

diff  --git a/llvm/test/DebugInfo/Generic/unconditional-branch.ll b/llvm/test/DebugInfo/Generic/unconditional-branch.ll
index e7e54f261995f..f0b44f2352a91 100644
--- a/llvm/test/DebugInfo/Generic/unconditional-branch.ll
+++ b/llvm/test/DebugInfo/Generic/unconditional-branch.ll
@@ -20,9 +20,9 @@
 define void @foo(i32 %i) #0 !dbg !4 {
 entry:
   %i.addr = alloca i32, align 4
-  store i32 %i, i32* %i.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %i.addr, metadata !12, metadata !DIExpression()), !dbg !13
-  %0 = load i32, i32* %i.addr, align 4, !dbg !14
+  store i32 %i, ptr %i.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !12, metadata !DIExpression()), !dbg !13
+  %0 = load i32, ptr %i.addr, align 4, !dbg !14
   switch i32 %0, label %sw.default [
   ], !dbg !14
 

diff  --git a/llvm/test/DebugInfo/Generic/univariant-discriminated-union.ll b/llvm/test/DebugInfo/Generic/univariant-discriminated-union.ll
index 5f15a5204d808..628c2f8b1dec9 100644
--- a/llvm/test/DebugInfo/Generic/univariant-discriminated-union.ll
+++ b/llvm/test/DebugInfo/Generic/univariant-discriminated-union.ll
@@ -12,16 +12,14 @@
 ;       CHECK: DW_AT_alignment
 ;       CHECK: DW_AT_data_member_location [DW_FORM_data1]	(0x00)
 
-%F = type { [0 x i8], {}*, [8 x i8] }
+%F = type { [0 x i8], ptr, [8 x i8] }
 %"F::Nope" = type {}
 
 define internal void @_ZN2e34main17h934ff72f9a38d4bbE() unnamed_addr #0 !dbg !5 {
 start:
   %qq = alloca %F, align 8
-  call void @llvm.dbg.declare(metadata %F* %qq, metadata !10, metadata !28), !dbg !29
-  %0 = bitcast %F* %qq to {}**, !dbg !29
-  store {}* null, {}** %0, !dbg !29
-  %1 = bitcast %F* %qq to %"F::Nope"*, !dbg !29
+  call void @llvm.dbg.declare(metadata ptr %qq, metadata !10, metadata !28), !dbg !29
+  store ptr null, ptr %qq, !dbg !29
   ret void, !dbg !30
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/varargs.ll b/llvm/test/DebugInfo/Generic/varargs.ll
index 7764ed64a7082..848c5ce6877a8 100644
--- a/llvm/test/DebugInfo/Generic/varargs.ll
+++ b/llvm/test/DebugInfo/Generic/varargs.ll
@@ -52,12 +52,12 @@
 define void @_Z1biz(i32 %c, ...) #0 !dbg !14 {
   %1 = alloca i32, align 4
   %a = alloca %struct.A, align 1
-  %fptr = alloca void (i32, ...)*, align 8
-  store i32 %c, i32* %1, align 4
-  call void @llvm.dbg.declare(metadata i32* %1, metadata !21, metadata !DIExpression()), !dbg !22
-  call void @llvm.dbg.declare(metadata %struct.A* %a, metadata !23, metadata !DIExpression()), !dbg !24
-  call void @llvm.dbg.declare(metadata void (i32, ...)** %fptr, metadata !25, metadata !DIExpression(DW_OP_deref)), !dbg !27
-  store void (i32, ...)* @_Z1biz, void (i32, ...)** %fptr, align 8, !dbg !27
+  %fptr = alloca ptr, align 8
+  store i32 %c, ptr %1, align 4
+  call void @llvm.dbg.declare(metadata ptr %1, metadata !21, metadata !DIExpression()), !dbg !22
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !23, metadata !DIExpression()), !dbg !24
+  call void @llvm.dbg.declare(metadata ptr %fptr, metadata !25, metadata !DIExpression(DW_OP_deref)), !dbg !27
+  store ptr @_Z1biz, ptr %fptr, align 8, !dbg !27
   ret void, !dbg !28
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/version.ll b/llvm/test/DebugInfo/Generic/version.ll
index 99971a4cba53f..b68528d9a3991 100644
--- a/llvm/test/DebugInfo/Generic/version.ll
+++ b/llvm/test/DebugInfo/Generic/version.ll
@@ -7,7 +7,7 @@
 define i32 @main() #0 !dbg !4 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   ret i32 0, !dbg !10
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/virtual-index.ll b/llvm/test/DebugInfo/Generic/virtual-index.ll
index 661d9a09da3a1..05649f8ce77e7 100644
--- a/llvm/test/DebugInfo/Generic/virtual-index.ll
+++ b/llvm/test/DebugInfo/Generic/virtual-index.ll
@@ -20,15 +20,15 @@
 ; CHECK: DW_TAG_subprogram [
 ; CHECK-NOT: DW_AT_vtable_elem_location
 
-%struct.A = type { i32 (...)** }
+%struct.A = type { ptr }
 
- at _ZTV1A = unnamed_addr constant [4 x i8*] [i8* null, i8* null, i8* bitcast (void (%struct.A*)* @_ZN1A1fEv to i8*), i8* bitcast (void (%struct.A*)* @_ZN1A1gEv to i8*)], align 8
+ at _ZTV1A = unnamed_addr constant [4 x ptr] [ptr null, ptr null, ptr @_ZN1A1fEv, ptr @_ZN1A1gEv], align 8
 
-define void @_ZN1A1fEv(%struct.A* %this) unnamed_addr !dbg !18 {
+define void @_ZN1A1fEv(ptr %this) unnamed_addr !dbg !18 {
   ret void
 }
 
-define void @_ZN1A1gEv(%struct.A* %this) unnamed_addr !dbg !19 {
+define void @_ZN1A1gEv(ptr %this) unnamed_addr !dbg !19 {
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/Generic/volatile-alloca.ll b/llvm/test/DebugInfo/Generic/volatile-alloca.ll
index ddb86206b851b..bb1ce817272fd 100644
--- a/llvm/test/DebugInfo/Generic/volatile-alloca.ll
+++ b/llvm/test/DebugInfo/Generic/volatile-alloca.ll
@@ -25,28 +25,27 @@ source_filename = "volatile.c"
 ; Function Attrs: nounwind optsize ssp uwtable
 define void @f() local_unnamed_addr #0 !dbg !8 {
   %1 = alloca i64, align 8
-  %2 = bitcast i64* %1 to i8*, !dbg !15
-  call void @llvm.lifetime.start.p0i8(i64 8, i8* %2), !dbg !15
-  call void @llvm.dbg.declare(metadata i64* %1, metadata !12, metadata !DIExpression()), !dbg !15
-  %3 = call i64 (...) @g() #4, !dbg !15
-  store volatile i64 %3, i64* %1, align 8, !dbg !15
-  %4 = load volatile i64, i64* %1, align 8, !dbg !15
-  %5 = icmp eq i64 %4, 0, !dbg !15
-  br i1 %5, label %6, label %8, !dbg !15
+  call void @llvm.lifetime.start.p0(i64 8, ptr %1), !dbg !15
+  call void @llvm.dbg.declare(metadata ptr %1, metadata !12, metadata !DIExpression()), !dbg !15
+  %2 = call i64 (...) @g() #4, !dbg !15
+  store volatile i64 %2, ptr %1, align 8, !dbg !15
+  %3 = load volatile i64, ptr %1, align 8, !dbg !15
+  %4 = icmp eq i64 %3, 0, !dbg !15
+  br i1 %4, label %5, label %7, !dbg !15
 
 ; <label>:6:                                      ; preds = %0
-  %7 = call i64 (...) @g() #4, !dbg !15
-  br label %8, !dbg !15
+  %6 = call i64 (...) @g() #4, !dbg !15
+  br label %7, !dbg !15
 
-; <label>:8:                                      ; preds = %6, %0
-  %9 = load volatile i64, i64* %1, align 8, !dbg !15
-  call void @h(i64 %9) #4, !dbg !15
-  call void @llvm.lifetime.end.p0i8(i64 8, i8* %2), !dbg !15
+; <label>:8:                                      ; preds = %5, %0
+  %8 = load volatile i64, ptr %1, align 8, !dbg !15
+  call void @h(i64 %8) #4, !dbg !15
+  call void @llvm.lifetime.end.p0(i64 8, ptr %1), !dbg !15
   ret void, !dbg !15
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #2
@@ -58,7 +57,7 @@ declare i64 @g(...) local_unnamed_addr #3
 declare void @h(i64) local_unnamed_addr #3
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1
 
 attributes #0 = { nounwind optsize ssp uwtable }
 attributes #1 = { argmemonly nounwind }

diff  --git a/llvm/test/DebugInfo/WebAssembly/dbgvalue.ll b/llvm/test/DebugInfo/WebAssembly/dbgvalue.ll
index 78a1114a62355..c1ad0648dd783 100644
--- a/llvm/test/DebugInfo/WebAssembly/dbgvalue.ll
+++ b/llvm/test/DebugInfo/WebAssembly/dbgvalue.ll
@@ -10,9 +10,9 @@ target triple = "wasm32-unknown-unknown"
 @key = external local_unnamed_addr global [15 x i8], align 1
 @.str = external unnamed_addr constant [33 x i8], align 1
 
-define internal i32 @0(i8*) local_unnamed_addr !dbg !15 !type !23 {
-  tail call void @llvm.dbg.value(metadata i8* %0, i64 0, metadata !22, metadata !24), !dbg !25
-  %2 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i32 0, i32 0), i8* %0), !dbg !26
+define internal i32 @0(ptr) local_unnamed_addr !dbg !15 !type !23 {
+  tail call void @llvm.dbg.value(metadata ptr %0, i64 0, metadata !22, metadata !24), !dbg !25
+  %2 = tail call i32 (ptr, ...) @printf(ptr @.str, ptr %0), !dbg !26
   br i1 true, label %a, label %b
 
 a:                                                ; preds = %1
@@ -25,11 +25,11 @@ b:                                                ; preds = %1
 
 c:                                                ; preds = %b, %a
   %5 = phi i32 [ %3, %a ], [ %4, %b ]
-  %6 = add i32 ptrtoint (i32 (i8*)* @0 to i32), %5
+  %6 = add i32 ptrtoint (ptr @0 to i32), %5
   ret i32 %6, !dbg !27
 }
 
-declare i32 @printf(i8* nocapture readonly, ...) local_unnamed_addr
+declare i32 @printf(ptr nocapture readonly, ...) local_unnamed_addr
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #0

diff  --git a/llvm/test/DebugInfo/WebAssembly/debugtest-opt.ll b/llvm/test/DebugInfo/WebAssembly/debugtest-opt.ll
index 790471cf028ed..1b552b5b37739 100644
--- a/llvm/test/DebugInfo/WebAssembly/debugtest-opt.ll
+++ b/llvm/test/DebugInfo/WebAssembly/debugtest-opt.ll
@@ -19,15 +19,14 @@
 source_filename = "debugtest-opt.c"
 target triple = "wasm32"
 
- at globl = hidden local_unnamed_addr global i32* null, align 4, !dbg !0
+ at globl = hidden local_unnamed_addr global ptr null, align 4, !dbg !0
 
 ; Function Attrs: nounwind writeonly
 define hidden void @baz(i32 %arg) local_unnamed_addr #0 !dbg !12 {
 entry:
   %locl = alloca i32, align 4
   call void @llvm.dbg.value(metadata i32 %arg, metadata !16, metadata !DIExpression()), !dbg !18
-  %0 = bitcast i32* %locl to i8*, !dbg !19
-  store i32* %locl, i32** @globl, align 4, !dbg !20, !tbaa !21
+  store ptr %locl, ptr @globl, align 4, !dbg !20, !tbaa !21
   ret void, !dbg !25
 }
 

diff  --git a/llvm/test/DebugInfo/X86/2010-04-13-PubType.ll b/llvm/test/DebugInfo/X86/2010-04-13-PubType.ll
index 1d2c1af2773dd..53cd629373f63 100644
--- a/llvm/test/DebugInfo/X86/2010-04-13-PubType.ll
+++ b/llvm/test/DebugInfo/X86/2010-04-13-PubType.ll
@@ -5,24 +5,24 @@
 %struct.X = type opaque
 %struct.Y = type { i32 }
 
-define i32 @foo(%struct.X* %x, %struct.Y* %y) nounwind ssp !dbg !1 {
+define i32 @foo(ptr %x, ptr %y) nounwind ssp !dbg !1 {
 entry:
-  %x_addr = alloca %struct.X*                     ; <%struct.X**> [#uses=1]
-  %y_addr = alloca %struct.Y*                     ; <%struct.Y**> [#uses=1]
-  %retval = alloca i32                            ; <i32*> [#uses=2]
-  %0 = alloca i32                                 ; <i32*> [#uses=2]
+  %x_addr = alloca ptr                     ; <ptr> [#uses=1]
+  %y_addr = alloca ptr                     ; <ptr> [#uses=1]
+  %retval = alloca i32                            ; <ptr> [#uses=2]
+  %0 = alloca i32                                 ; <ptr> [#uses=2]
   %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
-  call void @llvm.dbg.declare(metadata %struct.X** %x_addr, metadata !0, metadata !DIExpression()), !dbg !13
-  store %struct.X* %x, %struct.X** %x_addr
-  call void @llvm.dbg.declare(metadata %struct.Y** %y_addr, metadata !14, metadata !DIExpression()), !dbg !13
-  store %struct.Y* %y, %struct.Y** %y_addr
-  store i32 0, i32* %0, align 4, !dbg !13
-  %1 = load i32, i32* %0, align 4, !dbg !13            ; <i32> [#uses=1]
-  store i32 %1, i32* %retval, align 4, !dbg !13
+  call void @llvm.dbg.declare(metadata ptr %x_addr, metadata !0, metadata !DIExpression()), !dbg !13
+  store ptr %x, ptr %x_addr
+  call void @llvm.dbg.declare(metadata ptr %y_addr, metadata !14, metadata !DIExpression()), !dbg !13
+  store ptr %y, ptr %y_addr
+  store i32 0, ptr %0, align 4, !dbg !13
+  %1 = load i32, ptr %0, align 4, !dbg !13            ; <i32> [#uses=1]
+  store i32 %1, ptr %retval, align 4, !dbg !13
   br label %return, !dbg !13
 
 return:                                           ; preds = %entry
-  %retval1 = load i32, i32* %retval, !dbg !13          ; <i32> [#uses=1]
+  %retval1 = load i32, ptr %retval, !dbg !13          ; <i32> [#uses=1]
   ret i32 %retval1, !dbg !15
 }
 

diff  --git a/llvm/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll b/llvm/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll
index 14793460e14c2..21bf4f79a5c75 100644
--- a/llvm/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll
+++ b/llvm/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll
@@ -10,10 +10,10 @@ source_filename = "test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll"
 ; Function Attrs: nounwind
 define i32 @f() #0 !dbg !8 {
   %LOC = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %LOC, metadata !11, metadata !13), !dbg !14
-  %1 = load i32, i32* @GLB, align 4, !dbg !15
-  store i32 %1, i32* %LOC, align 4, !dbg !15
-  %2 = load i32, i32* @GLB, align 4, !dbg !16
+  call void @llvm.dbg.declare(metadata ptr %LOC, metadata !11, metadata !13), !dbg !14
+  %1 = load i32, ptr @GLB, align 4, !dbg !15
+  store i32 %1, ptr %LOC, align 4, !dbg !15
+  %2 = load i32, ptr @GLB, align 4, !dbg !16
   ret i32 %2, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/X86/2011-12-16-BadStructRef.ll b/llvm/test/DebugInfo/X86/2011-12-16-BadStructRef.ll
index e7f050cead2a7..cd25c301ce928 100644
--- a/llvm/test/DebugInfo/X86/2011-12-16-BadStructRef.ll
+++ b/llvm/test/DebugInfo/X86/2011-12-16-BadStructRef.ll
@@ -4,85 +4,82 @@
 ; CHECK: b_ref
 ; CHECK-NOT: AT_bit_size
 
-%struct.bar = type { %struct.baz, %struct.baz* }
+%struct.bar = type { %struct.baz, ptr }
 %struct.baz = type { i32 }
 
-define i32 @main(i32 %argc, i8** %argv) uwtable ssp !dbg !29 {
+define i32 @main(i32 %argc, ptr %argv) uwtable ssp !dbg !29 {
 entry:
   %retval = alloca i32, align 4
   %argc.addr = alloca i32, align 4
-  %argv.addr = alloca i8**, align 8
+  %argv.addr = alloca ptr, align 8
   %myBar = alloca %struct.bar, align 8
-  store i32 0, i32* %retval
-  store i32 %argc, i32* %argc.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %argc.addr, metadata !49, metadata !DIExpression()), !dbg !50
-  store i8** %argv, i8*** %argv.addr, align 8
-  call void @llvm.dbg.declare(metadata i8*** %argv.addr, metadata !51, metadata !DIExpression()), !dbg !52
-  call void @llvm.dbg.declare(metadata %struct.bar* %myBar, metadata !53, metadata !DIExpression()), !dbg !55
-  call void @_ZN3barC1Ei(%struct.bar* %myBar, i32 1), !dbg !56
+  store i32 0, ptr %retval
+  store i32 %argc, ptr %argc.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !49, metadata !DIExpression()), !dbg !50
+  store ptr %argv, ptr %argv.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !51, metadata !DIExpression()), !dbg !52
+  call void @llvm.dbg.declare(metadata ptr %myBar, metadata !53, metadata !DIExpression()), !dbg !55
+  call void @_ZN3barC1Ei(ptr %myBar, i32 1), !dbg !56
   ret i32 0, !dbg !57
 }
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 
-define linkonce_odr void @_ZN3barC1Ei(%struct.bar* %this, i32 %x) unnamed_addr uwtable ssp align 2 !dbg !37 {
+define linkonce_odr void @_ZN3barC1Ei(ptr %this, i32 %x) unnamed_addr uwtable ssp align 2 !dbg !37 {
 entry:
-  %this.addr = alloca %struct.bar*, align 8
+  %this.addr = alloca ptr, align 8
   %x.addr = alloca i32, align 4
-  store %struct.bar* %this, %struct.bar** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.bar** %this.addr, metadata !58, metadata !DIExpression()), !dbg !59
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !60, metadata !DIExpression()), !dbg !61
-  %this1 = load %struct.bar*, %struct.bar** %this.addr
-  %0 = load i32, i32* %x.addr, align 4, !dbg !62
-  call void @_ZN3barC2Ei(%struct.bar* %this1, i32 %0), !dbg !62
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !58, metadata !DIExpression()), !dbg !59
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !60, metadata !DIExpression()), !dbg !61
+  %this1 = load ptr, ptr %this.addr
+  %0 = load i32, ptr %x.addr, align 4, !dbg !62
+  call void @_ZN3barC2Ei(ptr %this1, i32 %0), !dbg !62
   ret void, !dbg !62
 }
 
-define linkonce_odr void @_ZN3barC2Ei(%struct.bar* %this, i32 %x) unnamed_addr uwtable ssp align 2 !dbg !40 {
+define linkonce_odr void @_ZN3barC2Ei(ptr %this, i32 %x) unnamed_addr uwtable ssp align 2 !dbg !40 {
 entry:
-  %this.addr = alloca %struct.bar*, align 8
+  %this.addr = alloca ptr, align 8
   %x.addr = alloca i32, align 4
-  store %struct.bar* %this, %struct.bar** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.bar** %this.addr, metadata !63, metadata !DIExpression()), !dbg !64
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !65, metadata !DIExpression()), !dbg !66
-  %this1 = load %struct.bar*, %struct.bar** %this.addr
-  %b = getelementptr inbounds %struct.bar, %struct.bar* %this1, i32 0, i32 0, !dbg !67
-  %0 = load i32, i32* %x.addr, align 4, !dbg !67
-  call void @_ZN3bazC1Ei(%struct.baz* %b, i32 %0), !dbg !67
-  %1 = getelementptr inbounds %struct.bar, %struct.bar* %this1, i32 0, i32 1, !dbg !67
-  %b2 = getelementptr inbounds %struct.bar, %struct.bar* %this1, i32 0, i32 0, !dbg !67
-  store %struct.baz* %b2, %struct.baz** %1, align 8, !dbg !67
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !63, metadata !DIExpression()), !dbg !64
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !65, metadata !DIExpression()), !dbg !66
+  %this1 = load ptr, ptr %this.addr
+  %0 = load i32, ptr %x.addr, align 4, !dbg !67
+  call void @_ZN3bazC1Ei(ptr %this1, i32 %0), !dbg !67
+  %1 = getelementptr inbounds %struct.bar, ptr %this1, i32 0, i32 1, !dbg !67
+  store ptr %this1, ptr %1, align 8, !dbg !67
   ret void, !dbg !68
 }
 
-define linkonce_odr void @_ZN3bazC1Ei(%struct.baz* %this, i32 %a) unnamed_addr uwtable ssp align 2 !dbg !43 {
+define linkonce_odr void @_ZN3bazC1Ei(ptr %this, i32 %a) unnamed_addr uwtable ssp align 2 !dbg !43 {
 entry:
-  %this.addr = alloca %struct.baz*, align 8
+  %this.addr = alloca ptr, align 8
   %a.addr = alloca i32, align 4
-  store %struct.baz* %this, %struct.baz** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.baz** %this.addr, metadata !70, metadata !DIExpression()), !dbg !71
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !72, metadata !DIExpression()), !dbg !73
-  %this1 = load %struct.baz*, %struct.baz** %this.addr
-  %0 = load i32, i32* %a.addr, align 4, !dbg !74
-  call void @_ZN3bazC2Ei(%struct.baz* %this1, i32 %0), !dbg !74
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !70, metadata !DIExpression()), !dbg !71
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !72, metadata !DIExpression()), !dbg !73
+  %this1 = load ptr, ptr %this.addr
+  %0 = load i32, ptr %a.addr, align 4, !dbg !74
+  call void @_ZN3bazC2Ei(ptr %this1, i32 %0), !dbg !74
   ret void, !dbg !74
 }
 
-define linkonce_odr void @_ZN3bazC2Ei(%struct.baz* %this, i32 %a) unnamed_addr nounwind uwtable ssp align 2 !dbg !46 {
+define linkonce_odr void @_ZN3bazC2Ei(ptr %this, i32 %a) unnamed_addr nounwind uwtable ssp align 2 !dbg !46 {
 entry:
-  %this.addr = alloca %struct.baz*, align 8
+  %this.addr = alloca ptr, align 8
   %a.addr = alloca i32, align 4
-  store %struct.baz* %this, %struct.baz** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.baz** %this.addr, metadata !75, metadata !DIExpression()), !dbg !76
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !77, metadata !DIExpression()), !dbg !78
-  %this1 = load %struct.baz*, %struct.baz** %this.addr
-  %h = getelementptr inbounds %struct.baz, %struct.baz* %this1, i32 0, i32 0, !dbg !79
-  %0 = load i32, i32* %a.addr, align 4, !dbg !79
-  store i32 %0, i32* %h, align 4, !dbg !79
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !75, metadata !DIExpression()), !dbg !76
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !77, metadata !DIExpression()), !dbg !78
+  %this1 = load ptr, ptr %this.addr
+  %0 = load i32, ptr %a.addr, align 4, !dbg !79
+  store i32 %0, ptr %this1, align 4, !dbg !79
   ret void, !dbg !80
 }
 

diff  --git a/llvm/test/DebugInfo/X86/DIExpr-const-folding.ll b/llvm/test/DebugInfo/X86/DIExpr-const-folding.ll
index 725ede01c5fae..166ee9f866c2d 100644
--- a/llvm/test/DebugInfo/X86/DIExpr-const-folding.ll
+++ b/llvm/test/DebugInfo/X86/DIExpr-const-folding.ll
@@ -11,17 +11,15 @@
 ; CHECK-NEXT: DW_AT_location (DW_OP_lit2, DW_OP_stack_value)
 ; CHECK-NEXT: DW_AT_name ("bIsShowingCollision")
 
-%class.UClient = type { %class.UWorld*, %struct.FFlags }
+%class.UClient = type { ptr, %struct.FFlags }
 %class.UWorld = type { i16 }
 %struct.FFlags = type { [9 x i8], i32 }
 
-define dso_local void @_ZN7UClient13ToggleVolumesEv(%class.UClient* nocapture nonnull align 8 dereferenceable(24) %this) local_unnamed_addr align 2 !dbg !8 {
+define dso_local void @_ZN7UClient13ToggleVolumesEv(ptr nocapture nonnull align 8 dereferenceable(24) %this) local_unnamed_addr align 2 !dbg !8 {
 entry:
   call void @llvm.dbg.value(metadata i72 2, metadata !43, metadata !DIExpression(DW_OP_LLVM_convert, 72, DW_ATE_unsigned, DW_OP_LLVM_convert, 8, DW_ATE_unsigned, DW_OP_stack_value)), !dbg !48
-  %World = getelementptr inbounds %class.UClient, %class.UClient* %this, i64 0, i32 0, !dbg !49
-  %0 = load %class.UWorld*, %class.UWorld** %World, align 8, !dbg !49, !tbaa !51
-  %1 = getelementptr %class.UWorld, %class.UWorld* %0, i64 0, i32 0, !dbg !58
-  store i16 2, i16* %1, align 1, !dbg !59
+  %0 = load ptr, ptr %this, align 8, !dbg !49, !tbaa !51
+  store i16 2, ptr %0, align 1, !dbg !59
   ret void, !dbg !60
 }
 

diff  --git a/llvm/test/DebugInfo/X86/DIModuleContext.ll b/llvm/test/DebugInfo/X86/DIModuleContext.ll
index aee57033f431e..195114a09e036 100644
--- a/llvm/test/DebugInfo/X86/DIModuleContext.ll
+++ b/llvm/test/DebugInfo/X86/DIModuleContext.ll
@@ -12,7 +12,7 @@ target triple = "x86_64-apple-macosx"
 
 %struct.s = type opaque
 
- at i = common global %struct.s* null, align 8, !dbg !0
+ at i = common global ptr null, align 8, !dbg !0
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!11, !12}

diff  --git a/llvm/test/DebugInfo/X86/DW_AT_byte_size.ll b/llvm/test/DebugInfo/X86/DW_AT_byte_size.ll
index 5af81ed5b5395..c80077f241b60 100644
--- a/llvm/test/DebugInfo/X86/DW_AT_byte_size.ll
+++ b/llvm/test/DebugInfo/X86/DW_AT_byte_size.ll
@@ -10,14 +10,13 @@
 
 %struct.A = type { i32 }
 
-define i32 @_Z3fooP1A(%struct.A* %a) nounwind uwtable ssp !dbg !5 {
+define i32 @_Z3fooP1A(ptr %a) nounwind uwtable ssp !dbg !5 {
 entry:
-  %a.addr = alloca %struct.A*, align 8
-  store %struct.A* %a, %struct.A** %a.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.A** %a.addr, metadata !16, metadata !DIExpression()), !dbg !17
-  %0 = load %struct.A*, %struct.A** %a.addr, align 8, !dbg !18
-  %b = getelementptr inbounds %struct.A, %struct.A* %0, i32 0, i32 0, !dbg !18
-  %1 = load i32, i32* %b, align 4, !dbg !18
+  %a.addr = alloca ptr, align 8
+  store ptr %a, ptr %a.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !16, metadata !DIExpression()), !dbg !17
+  %0 = load ptr, ptr %a.addr, align 8, !dbg !18
+  %1 = load i32, ptr %0, align 4, !dbg !18
   ret i32 %1, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/X86/DW_AT_deleted.ll b/llvm/test/DebugInfo/X86/DW_AT_deleted.ll
index 80774d696b735..805655f25813f 100644
--- a/llvm/test/DebugInfo/X86/DW_AT_deleted.ll
+++ b/llvm/test/DebugInfo/X86/DW_AT_deleted.ll
@@ -58,7 +58,7 @@ target triple = "x86_64-unknown-linux-gnu"
 ; Function Attrs: noinline nounwind optnone uwtable
 define dso_local void @_Z3foov() #0 !dbg !7 {
   %1 = alloca %class.deleted, align 1
-  call void @llvm.dbg.declare(metadata %class.deleted* %1, metadata !10, metadata !DIExpression()), !dbg !34
+  call void @llvm.dbg.declare(metadata ptr %1, metadata !10, metadata !DIExpression()), !dbg !34
   ret void, !dbg !35
 }
 

diff  --git a/llvm/test/DebugInfo/X86/DW_AT_linkage_name.ll b/llvm/test/DebugInfo/X86/DW_AT_linkage_name.ll
index ab132edb0b274..f6ff5abea376e 100644
--- a/llvm/test/DebugInfo/X86/DW_AT_linkage_name.ll
+++ b/llvm/test/DebugInfo/X86/DW_AT_linkage_name.ll
@@ -34,12 +34,12 @@ target triple = "x86_64-apple-macosx10.9.0"
 %struct.A = type { i8 }
 
 ; Function Attrs: nounwind ssp uwtable
-define void @_ZN1AD2Ev(%struct.A* %this) unnamed_addr #0 align 2 !dbg !17 {
+define void @_ZN1AD2Ev(ptr %this) unnamed_addr #0 align 2 !dbg !17 {
 entry:
-  %this.addr = alloca %struct.A*, align 8
-  store %struct.A* %this, %struct.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.A** %this.addr, metadata !26, metadata !DIExpression()), !dbg !28
-  %this1 = load %struct.A*, %struct.A** %this.addr
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !26, metadata !DIExpression()), !dbg !28
+  %this1 = load ptr, ptr %this.addr
   ret void, !dbg !29
 }
 
@@ -47,13 +47,13 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind ssp uwtable
-define void @_ZN1AD1Ev(%struct.A* %this) unnamed_addr #0 align 2 !dbg !18 {
+define void @_ZN1AD1Ev(ptr %this) unnamed_addr #0 align 2 !dbg !18 {
 entry:
-  %this.addr = alloca %struct.A*, align 8
-  store %struct.A* %this, %struct.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.A** %this.addr, metadata !30, metadata !DIExpression()), !dbg !31
-  %this1 = load %struct.A*, %struct.A** %this.addr
-  call void @_ZN1AD2Ev(%struct.A* %this1), !dbg !32
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !30, metadata !DIExpression()), !dbg !31
+  %this1 = load ptr, ptr %this.addr
+  call void @_ZN1AD2Ev(ptr %this1), !dbg !32
   ret void, !dbg !33
 }
 
@@ -61,13 +61,13 @@ entry:
 define void @_Z3foov() #2 !dbg !19 {
 entry:
   %a = alloca %struct.A, align 1
-  call void @llvm.dbg.declare(metadata %struct.A* %a, metadata !34, metadata !DIExpression()), !dbg !35
-  call void @_ZN1AC1Ei(%struct.A* %a, i32 1), !dbg !35
-  call void @_ZN1AD1Ev(%struct.A* %a), !dbg !36
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !34, metadata !DIExpression()), !dbg !35
+  call void @_ZN1AC1Ei(ptr %a, i32 1), !dbg !35
+  call void @_ZN1AD1Ev(ptr %a), !dbg !36
   ret void, !dbg !36
 }
 
-declare void @_ZN1AC1Ei(%struct.A*, i32)
+declare void @_ZN1AC1Ei(ptr, i32)
 
 attributes #0 = { nounwind ssp uwtable }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/DW_AT_location-reference.ll b/llvm/test/DebugInfo/X86/DW_AT_location-reference.ll
index 3fe6330d9ae9e..fd2ea00b1b9df 100644
--- a/llvm/test/DebugInfo/X86/DW_AT_location-reference.ll
+++ b/llvm/test/DebugInfo/X86/DW_AT_location-reference.ll
@@ -69,7 +69,7 @@ target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 define void @f() nounwind !dbg !0 {
 entry:
   %call = tail call i32 @g(i32 0, i32 0) nounwind, !dbg !8
-  store i32 %call, i32* @a, align 4, !dbg !8
+  store i32 %call, ptr @a, align 4, !dbg !8
   tail call void @llvm.dbg.value(metadata i32 1, metadata !5, metadata !DIExpression()), !dbg !13
   br label %while.body
 
@@ -83,7 +83,7 @@ while.body:                                       ; preds = %entry, %while.body
 while.end:                                        ; preds = %while.body
   tail call void @llvm.dbg.value(metadata i32 %mul, metadata !5, metadata !DIExpression()), !dbg !14
   %call4 = tail call i32 @g(i32 %mul, i32 0) nounwind, !dbg !15
-  store i32 %call4, i32* @a, align 4, !dbg !15
+  store i32 %call4, ptr @a, align 4, !dbg !15
   tail call void @llvm.dbg.value(metadata i32 2, metadata !5, metadata !DIExpression()), !dbg !17
   br label %while.body9
 
@@ -97,7 +97,7 @@ while.body9:                                      ; preds = %while.end, %while.b
 while.end13:                                      ; preds = %while.body9
   tail call void @llvm.dbg.value(metadata i32 %mul12, metadata !5, metadata !DIExpression()), !dbg !18
   %call15 = tail call i32 @g(i32 0, i32 %mul12) nounwind, !dbg !19
-  store i32 %call15, i32* @a, align 4, !dbg !19
+  store i32 %call15, ptr @a, align 4, !dbg !19
   ret void, !dbg !20
 }
 

diff  --git a/llvm/test/DebugInfo/X86/DW_AT_object_pointer.ll b/llvm/test/DebugInfo/X86/DW_AT_object_pointer.ll
index 6446a7ac66dab..d9988ac31451e 100644
--- a/llvm/test/DebugInfo/X86/DW_AT_object_pointer.ll
+++ b/llvm/test/DebugInfo/X86/DW_AT_object_pointer.ll
@@ -16,35 +16,33 @@ define i32 @_Z3fooi(i32) nounwind uwtable ssp !dbg !5 {
 entry:
   %.addr = alloca i32, align 4
   %a = alloca %class.A, align 4
-  store i32 %0, i32* %.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %.addr, metadata !36, metadata !DIExpression()), !dbg !35
-  call void @llvm.dbg.declare(metadata %class.A* %a, metadata !21, metadata !DIExpression()), !dbg !23
-  call void @_ZN1AC1Ev(%class.A* %a), !dbg !24
-  %m_a = getelementptr inbounds %class.A, %class.A* %a, i32 0, i32 0, !dbg !25
-  %1 = load i32, i32* %m_a, align 4, !dbg !25
+  store i32 %0, ptr %.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %.addr, metadata !36, metadata !DIExpression()), !dbg !35
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !21, metadata !DIExpression()), !dbg !23
+  call void @_ZN1AC1Ev(ptr %a), !dbg !24
+  %1 = load i32, ptr %a, align 4, !dbg !25
   ret i32 %1, !dbg !25
 }
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 
-define linkonce_odr void @_ZN1AC1Ev(%class.A* %this) unnamed_addr nounwind uwtable ssp align 2 !dbg !10 {
+define linkonce_odr void @_ZN1AC1Ev(ptr %this) unnamed_addr nounwind uwtable ssp align 2 !dbg !10 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !26, metadata !DIExpression()), !dbg !28
-  %this1 = load %class.A*, %class.A** %this.addr
-  call void @_ZN1AC2Ev(%class.A* %this1), !dbg !29
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !26, metadata !DIExpression()), !dbg !28
+  %this1 = load ptr, ptr %this.addr
+  call void @_ZN1AC2Ev(ptr %this1), !dbg !29
   ret void, !dbg !29
 }
 
-define linkonce_odr void @_ZN1AC2Ev(%class.A* %this) unnamed_addr nounwind uwtable ssp align 2 !dbg !20 {
+define linkonce_odr void @_ZN1AC2Ev(ptr %this) unnamed_addr nounwind uwtable ssp align 2 !dbg !20 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !30, metadata !DIExpression()), !dbg !31
-  %this1 = load %class.A*, %class.A** %this.addr
-  %m_a = getelementptr inbounds %class.A, %class.A* %this1, i32 0, i32 0, !dbg !32
-  store i32 0, i32* %m_a, align 4, !dbg !32
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !30, metadata !DIExpression()), !dbg !31
+  %this1 = load ptr, ptr %this.addr
+  store i32 0, ptr %this1, align 4, !dbg !32
   ret void, !dbg !34
 }
 

diff  --git a/llvm/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll b/llvm/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
index 4e451141ac10c..81e2e33c2de1d 100644
--- a/llvm/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
+++ b/llvm/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
@@ -21,7 +21,7 @@ target triple = "i686-pc-win32"
 define i32 @main() #0 !dbg !4 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   ret i32 0, !dbg !10
 }
 

diff  --git a/llvm/test/DebugInfo/X86/FrameIndexExprs.ll b/llvm/test/DebugInfo/X86/FrameIndexExprs.ll
index b44bf36bcad43..caae68334279c 100644
--- a/llvm/test/DebugInfo/X86/FrameIndexExprs.ll
+++ b/llvm/test/DebugInfo/X86/FrameIndexExprs.ll
@@ -17,17 +17,17 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #0
 define void @fn4() local_unnamed_addr !dbg !12 {
 entry:
   %l1.sroa.7.i = alloca [3 x i8], align 1
-  tail call void @llvm.dbg.declare(metadata [3 x i8]* %l1.sroa.7.i, metadata !15, metadata !26), !dbg !27
+  tail call void @llvm.dbg.declare(metadata ptr %l1.sroa.7.i, metadata !15, metadata !26), !dbg !27
   %i.sroa.4.i = alloca [3 x i8], align 8
-  tail call void @llvm.dbg.declare(metadata [3 x i8]* %i.sroa.4.i, metadata !15, metadata !32), !dbg !27
-  %0 = load i32, i32* @h, align 4
+  tail call void @llvm.dbg.declare(metadata ptr %i.sroa.4.i, metadata !15, metadata !32), !dbg !27
+  %0 = load i32, ptr @h, align 4
   br label %while.body.i.i, !dbg !33
 
 while.body.i.i:                                   ; preds = %while.body.i.i, %entry
   br label %while.body.i.i, !dbg !34
 
 fn3.exit:                                         ; No predecessors!
-  %1 = load i32, i32* @f, align 4
+  %1 = load i32, ptr @f, align 4
   %tobool.i = icmp eq i32 %1, 0
   br label %while.body.i
 

diff  --git a/llvm/test/DebugInfo/X86/InlinedFnLocalVar.ll b/llvm/test/DebugInfo/X86/InlinedFnLocalVar.ll
index 0449cd82b9ece..7f659bf9042a9 100644
--- a/llvm/test/DebugInfo/X86/InlinedFnLocalVar.ll
+++ b/llvm/test/DebugInfo/X86/InlinedFnLocalVar.ll
@@ -18,11 +18,11 @@ declare void @llvm.dbg.value(metadata, metadata, metadata) #0
 ; Function Attrs: nounwind ssp
 define i32 @bar() #1 !dbg !8 {
 entry:
-  %0 = load i32, i32* @i, align 4, !dbg !11
+  %0 = load i32, ptr @i, align 4, !dbg !11
   tail call void @llvm.dbg.value(metadata i32 %0, metadata !13, metadata !24), !dbg !25
   tail call void @llvm.dbg.declare(metadata !5, metadata !18, metadata !24), !dbg !26
   %1 = mul nsw i32 %0, %0, !dbg !27
-  store i32 %1, i32* @i, align 4, !dbg !11
+  store i32 %1, ptr @i, align 4, !dbg !11
   ret i32 %1, !dbg !28
 }
 

diff  --git a/llvm/test/DebugInfo/X86/LLVM_implicit_pointer.ll b/llvm/test/DebugInfo/X86/LLVM_implicit_pointer.ll
index 904a4530d19fd..7adb047ce77ff 100644
--- a/llvm/test/DebugInfo/X86/LLVM_implicit_pointer.ll
+++ b/llvm/test/DebugInfo/X86/LLVM_implicit_pointer.ll
@@ -31,18 +31,18 @@ define dso_local i32 @main() local_unnamed_addr !dbg !12 {
 entry:
 ; CHECK: call void @llvm.dbg.value(metadata i32 4, metadata [[VAR:![0-9]+]], metadata !DIExpression())
   call void @llvm.dbg.value(metadata i32 4, metadata !16, metadata !DIExpression()), !dbg !21
-  %0 = load volatile i32, i32* @v, align 4, !dbg !22, !tbaa !23
+  %0 = load volatile i32, ptr @v, align 4, !dbg !22, !tbaa !23
   %inc = add nsw i32 %0, 1, !dbg !22
-  store volatile i32 %inc, i32* @v, align 4, !dbg !22, !tbaa !23
+  store volatile i32 %inc, ptr @v, align 4, !dbg !22, !tbaa !23
 
 ; CHECK: call void @llvm.dbg.value(metadata i32 4, metadata [[PTR1:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_implicit_pointer))
   call void @llvm.dbg.value(metadata i32 4, metadata !17, metadata !DIExpression(DW_OP_LLVM_implicit_pointer)), !dbg !21
 
 ; CHECK: call void @llvm.dbg.value(metadata i32 4, metadata [[PTR2:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_implicit_pointer, DW_OP_LLVM_implicit_pointer))
   call void @llvm.dbg.value(metadata i32 4, metadata !19, metadata !DIExpression(DW_OP_LLVM_implicit_pointer, DW_OP_LLVM_implicit_pointer)), !dbg !21
-  %1 = load volatile i32, i32* @v, align 4, !dbg !27, !tbaa !23
+  %1 = load volatile i32, ptr @v, align 4, !dbg !27, !tbaa !23
   %inc1 = add nsw i32 %1, 1, !dbg !27
-  store volatile i32 %inc1, i32* @v, align 4, !dbg !27, !tbaa !23
+  store volatile i32 %inc1, ptr @v, align 4, !dbg !27, !tbaa !23
   ret i32 3, !dbg !28
 }
 

diff  --git a/llvm/test/DebugInfo/X86/PR26148.ll b/llvm/test/DebugInfo/X86/PR26148.ll
index 5d524d719b97b..d82a1479a1aee 100644
--- a/llvm/test/DebugInfo/X86/PR26148.ll
+++ b/llvm/test/DebugInfo/X86/PR26148.ll
@@ -38,15 +38,15 @@ declare void @llvm.dbg.value(metadata, metadata, metadata) #0
 define void @fn1(i16 signext %p1) !dbg !16 {
 entry:
   tail call void @llvm.dbg.value(metadata i16 %p1, metadata !20, metadata !23), !dbg !24
-  tail call void @llvm.dbg.declare(metadata %struct.S0* undef, metadata !21, metadata !23), !dbg !25
-  tail call void @llvm.dbg.declare(metadata %struct.S0* undef, metadata !22, metadata !23), !dbg !26
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !21, metadata !23), !dbg !25
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !22, metadata !23), !dbg !26
   tail call void @llvm.dbg.value(metadata i32 3, metadata !22, metadata !27), !dbg !26
   tail call void @llvm.dbg.value(metadata i32 0, metadata !22, metadata !28), !dbg !26
   tail call void @llvm.dbg.value(metadata i16 %p1, metadata !21, metadata !29), !dbg !25
   tail call void @llvm.dbg.value(metadata i32 3, metadata !21, metadata !27), !dbg !25
   tail call void @llvm.dbg.value(metadata i32 0, metadata !21, metadata !28), !dbg !25
-  store i32 3, i32* bitcast (%struct.S0* @a to i32*), align 4, !dbg !30
-  store i32 0, i32* getelementptr inbounds (%struct.S0, %struct.S0* @a, i64 0, i32 1), align 4, !dbg !30
+  store i32 3, ptr @a, align 4, !dbg !30
+  store i32 0, ptr getelementptr inbounds (%struct.S0, ptr @a, i64 0, i32 1), align 4, !dbg !30
   ret void, !dbg !31
 }
 

diff  --git a/llvm/test/DebugInfo/X86/accel-tables.ll b/llvm/test/DebugInfo/X86/accel-tables.ll
index 3f709a27d662b..b49887cbc9d05 100644
--- a/llvm/test/DebugInfo/X86/accel-tables.ll
+++ b/llvm/test/DebugInfo/X86/accel-tables.ll
@@ -51,8 +51,8 @@ define void @_Z3funv() local_unnamed_addr #0 !dbg !11 {
 }
 
 ; Function Attrs: norecurse uwtable
-define weak_odr hidden i32* @_ZTW3var() local_unnamed_addr #1 {
-  ret i32* @var
+define weak_odr hidden ptr @_ZTW3var() local_unnamed_addr #1 {
+  ret ptr @var
 }
 
 attributes #0 = { norecurse nounwind readnone uwtable }

diff  --git a/llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll b/llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll
index 3c8a44dcb55d0..934d4a62c8cde 100644
--- a/llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll
+++ b/llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll
@@ -80,7 +80,7 @@
 !12 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "t1", scope: !13, file: !3, line: 4, size: 8, flags: DIFlagTypePassByValue, elements: !4)
 !13 = !DINamespace(scope: null)
 !14 = !{!15}
-!15 = !DITemplateValueParameter(type: !16, value: i32* @foo)
+!15 = !DITemplateValueParameter(type: !16, value: ptr @foo)
 !16 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !17, size: 64)
 !17 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
 !18 = !{i32 7, !"Dwarf Version", i32 4}

diff  --git a/llvm/test/DebugInfo/X86/align_c11.ll b/llvm/test/DebugInfo/X86/align_c11.ll
index 9e5a7eae3b5ff..7eecbcd2c4049 100644
--- a/llvm/test/DebugInfo/X86/align_c11.ll
+++ b/llvm/test/DebugInfo/X86/align_c11.ll
@@ -39,7 +39,7 @@ target triple = "x86_64-unknown-linux-gnu"
 define i32 @foo() #0 !dbg !17 {
 entry:
   %local_data = alloca %struct.data, align 128
-  call void @llvm.dbg.declare(metadata %struct.data* %local_data, metadata !21, metadata !22), !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %local_data, metadata !21, metadata !22), !dbg !23
   ret i32 0, !dbg !24
 }
 

diff  --git a/llvm/test/DebugInfo/X86/align_cpp11.ll b/llvm/test/DebugInfo/X86/align_cpp11.ll
index 14cfda7c06da7..29682d05a2817 100644
--- a/llvm/test/DebugInfo/X86/align_cpp11.ll
+++ b/llvm/test/DebugInfo/X86/align_cpp11.ll
@@ -11,7 +11,7 @@
 ; };
 ;
 ; class C1 {
-;   alignas(64) static void *p;
+;   alignas(64) static ptr p;
 ; };
 ;
 ; enum alignas(16) E {
@@ -95,15 +95,14 @@ entry:
   %c1 = alloca %class.C1, align 1
   %i = alloca i32, align 32
   %Lambda = alloca %class.anon, align 4
-  call void @llvm.dbg.declare(metadata %struct.S* %ss, metadata !27, metadata !28), !dbg !29
-  call void @llvm.dbg.declare(metadata i32* %e, metadata !30, metadata !28), !dbg !31
-  call void @llvm.dbg.declare(metadata %class.C1* %c1, metadata !32, metadata !28), !dbg !37
-  call void @llvm.dbg.declare(metadata i32* %i, metadata !38, metadata !28), !dbg !40
-  store i32 42, i32* %i, align 32, !dbg !40
-  call void @llvm.dbg.declare(metadata %class.anon* %Lambda, metadata !41, metadata !28), !dbg !50
-  %0 = getelementptr inbounds %class.anon, %class.anon* %Lambda, i32 0, i32 0, !dbg !51
-  %1 = load i32, i32* %i, align 32, !dbg !52
-  store i32 %1, i32* %0, align 4, !dbg !51
+  call void @llvm.dbg.declare(metadata ptr %ss, metadata !27, metadata !28), !dbg !29
+  call void @llvm.dbg.declare(metadata ptr %e, metadata !30, metadata !28), !dbg !31
+  call void @llvm.dbg.declare(metadata ptr %c1, metadata !32, metadata !28), !dbg !37
+  call void @llvm.dbg.declare(metadata ptr %i, metadata !38, metadata !28), !dbg !40
+  store i32 42, ptr %i, align 32, !dbg !40
+  call void @llvm.dbg.declare(metadata ptr %Lambda, metadata !41, metadata !28), !dbg !50
+  %0 = load i32, ptr %i, align 32, !dbg !52
+  store i32 %0, ptr %Lambda, align 4, !dbg !51
   ret void, !dbg !53
 }
 

diff  --git a/llvm/test/DebugInfo/X86/align_objc.ll b/llvm/test/DebugInfo/X86/align_objc.ll
index bc0abbdaa103d..733735fb974ef 100644
--- a/llvm/test/DebugInfo/X86/align_objc.ll
+++ b/llvm/test/DebugInfo/X86/align_objc.ll
@@ -54,8 +54,8 @@ define void @f() #0 !dbg !14 {
 entry:
   %s1 = alloca %struct.S1, align 64
   %i = alloca i32, align 32
-  call void @llvm.dbg.declare(metadata %struct.S1* %s1, metadata !17, metadata !22), !dbg !23
-  call void @llvm.dbg.declare(metadata i32* %i, metadata !24, metadata !22), !dbg !26
+  call void @llvm.dbg.declare(metadata ptr %s1, metadata !17, metadata !22), !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %i, metadata !24, metadata !22), !dbg !26
   ret void, !dbg !27
 }
 

diff  --git a/llvm/test/DebugInfo/X86/aligned_stack_var.ll b/llvm/test/DebugInfo/X86/aligned_stack_var.ll
index 0eab495a75da2..089b3ffab5693 100644
--- a/llvm/test/DebugInfo/X86/aligned_stack_var.ll
+++ b/llvm/test/DebugInfo/X86/aligned_stack_var.ll
@@ -18,7 +18,7 @@
 define void @_Z3runv() nounwind uwtable !dbg !5 {
 entry:
   %x = alloca i32, align 32
-  call void @llvm.dbg.declare(metadata i32* %x, metadata !9, metadata !DIExpression()), !dbg !12
+  call void @llvm.dbg.declare(metadata ptr %x, metadata !9, metadata !DIExpression()), !dbg !12
   ret void, !dbg !13
 }
 

diff  --git a/llvm/test/DebugInfo/X86/arange-and-stub.ll b/llvm/test/DebugInfo/X86/arange-and-stub.ll
index db1837e021415..7819f59094347 100644
--- a/llvm/test/DebugInfo/X86/arange-and-stub.ll
+++ b/llvm/test/DebugInfo/X86/arange-and-stub.ll
@@ -10,14 +10,14 @@
 source_filename = "test/DebugInfo/X86/arange-and-stub.ll"
 target triple = "x86_64-linux-gnu"
 
- at _ZTId = external constant i8*
- at zed = global [1 x void ()*] [void ()* @bar], !dbg !0
+ at _ZTId = external constant ptr
+ at zed = global [1 x ptr] [ptr @bar], !dbg !0
 
 define void @foo() !dbg !17 {
   ret void
 }
 
-define void @bar() personality i8* bitcast (void ()* @foo to i8*) !dbg !18 {
+define void @bar() personality ptr @foo !dbg !18 {
   invoke void @foo()
           to label %invoke.cont unwind label %lpad, !dbg !19
 
@@ -25,8 +25,8 @@ invoke.cont:                                      ; preds = %0
   ret void
 
 lpad:                                             ; preds = %0
-  %tmp1 = landingpad { i8*, i32 }
-          filter [1 x i8*] [i8* bitcast (i8** @_ZTId to i8*)]
+  %tmp1 = landingpad { ptr, i32 }
+          filter [1 x ptr] [ptr @_ZTId]
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/X86/arange.ll b/llvm/test/DebugInfo/X86/arange.ll
index 49090bfc61075..d00e2509c1f10 100644
--- a/llvm/test/DebugInfo/X86/arange.ll
+++ b/llvm/test/DebugInfo/X86/arange.ll
@@ -36,7 +36,7 @@ source_filename = "test/DebugInfo/X86/arange.ll"
 !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo<&i>", file: !2, line: 3, size: 8, align: 8, elements: !4, templateParams: !5, identifier: "_ZTS3fooIXadL_Z1iEEE")
 !4 = !{}
 !5 = !{!6}
-!6 = !DITemplateValueParameter(name: "x", type: !7, value: i32* @i)
+!6 = !DITemplateValueParameter(name: "x", type: !7, value: ptr @i)
 !7 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !8, size: 64, align: 64)
 !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
 !9 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !2, producer: "clang version 3.5 ", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !10, globals: !11, imports: !4)

diff  --git a/llvm/test/DebugInfo/X86/arguments.ll b/llvm/test/DebugInfo/X86/arguments.ll
index 8f030867c3d98..767c1385e77f4 100644
--- a/llvm/test/DebugInfo/X86/arguments.ll
+++ b/llvm/test/DebugInfo/X86/arguments.ll
@@ -28,14 +28,13 @@
 %struct.foo = type { i32 }
 
 ; Function Attrs: nounwind uwtable
-define void @_Z4func3fooS_(%struct.foo* %f, %struct.foo* %g) #0 !dbg !4 {
+define void @_Z4func3fooS_(ptr %f, ptr %g) #0 !dbg !4 {
 entry:
-  call void @llvm.dbg.declare(metadata %struct.foo* %f, metadata !19, metadata !DIExpression()), !dbg !20
-  call void @llvm.dbg.declare(metadata %struct.foo* %g, metadata !21, metadata !DIExpression()), !dbg !20
-  %i = getelementptr inbounds %struct.foo, %struct.foo* %f, i32 0, i32 0, !dbg !22
-  %0 = load i32, i32* %i, align 4, !dbg !22
+  call void @llvm.dbg.declare(metadata ptr %f, metadata !19, metadata !DIExpression()), !dbg !20
+  call void @llvm.dbg.declare(metadata ptr %g, metadata !21, metadata !DIExpression()), !dbg !20
+  %0 = load i32, ptr %f, align 4, !dbg !22
   %inc = add nsw i32 %0, 1, !dbg !22
-  store i32 %inc, i32* %i, align 4, !dbg !22
+  store i32 %inc, ptr %f, align 4, !dbg !22
   ret void, !dbg !23
 }
 

diff  --git a/llvm/test/DebugInfo/X86/array.ll b/llvm/test/DebugInfo/X86/array.ll
index c667a99954484..5eb592b2986b0 100644
--- a/llvm/test/DebugInfo/X86/array.ll
+++ b/llvm/test/DebugInfo/X86/array.ll
@@ -32,10 +32,10 @@ target triple = "x86_64-apple-macosx10.12.0"
 @main.array = private unnamed_addr constant [4 x i32] [i32 0, i32 1, i32 2, i32 3], align 16
 
 ; Function Attrs: nounwind ssp uwtable
-define void @f(i32* nocapture %p) local_unnamed_addr #0 !dbg !8 {
+define void @f(ptr nocapture %p) local_unnamed_addr #0 !dbg !8 {
 entry:
-  tail call void @llvm.dbg.value(metadata i32* %p, metadata !14, metadata !15), !dbg !16
-  store i32 42, i32* %p, align 4, !dbg !17, !tbaa !18
+  tail call void @llvm.dbg.value(metadata ptr %p, metadata !14, metadata !15), !dbg !16
+  store i32 42, ptr %p, align 4, !dbg !17, !tbaa !18
   ret void, !dbg !22
 }
 
@@ -43,30 +43,28 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind ssp uwtable
-define i32 @main(i32 %argc, i8** nocapture readnone %argv) local_unnamed_addr #0 !dbg !23 {
+define i32 @main(i32 %argc, ptr nocapture readnone %argv) local_unnamed_addr #0 !dbg !23 {
 entry:
   %array = alloca [4 x i32], align 16
   tail call void @llvm.dbg.value(metadata i32 %argc, metadata !30, metadata !15), !dbg !36
-  tail call void @llvm.dbg.value(metadata i8** %argv, metadata !31, metadata !15), !dbg !37
-  %0 = bitcast [4 x i32]* %array to i8*, !dbg !38
-  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %0) #3, !dbg !38
-  tail call void @llvm.dbg.declare(metadata [4 x i32]* %array, metadata !32, metadata !15), !dbg !39
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 nonnull %0, i8* align 16 bitcast ([4 x i32]* @main.array to i8*), i64 16, i1 false), !dbg !39
-  %arraydecay = getelementptr inbounds [4 x i32], [4 x i32]* %array, i64 0, i64 0, !dbg !40
-  call void @f(i32* nonnull %arraydecay), !dbg !41
-  %1 = load i32, i32* %arraydecay, align 16, !dbg !42, !tbaa !18
-  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %0) #3, !dbg !43
-  ret i32 %1, !dbg !44
+  tail call void @llvm.dbg.value(metadata ptr %argv, metadata !31, metadata !15), !dbg !37
+  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %array) #3, !dbg !38
+  tail call void @llvm.dbg.declare(metadata ptr %array, metadata !32, metadata !15), !dbg !39
+  call void @llvm.memcpy.p0.p0.i64(ptr align 16 nonnull %array, ptr align 16 @main.array, i64 16, i1 false), !dbg !39
+  call void @f(ptr nonnull %array), !dbg !41
+  %0 = load i32, ptr %array, align 16, !dbg !42, !tbaa !18
+  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %array) #3, !dbg !43
+  ret i32 %0, !dbg !44
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) #2
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) #2
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1

diff  --git a/llvm/test/DebugInfo/X86/array2.ll b/llvm/test/DebugInfo/X86/array2.ll
index f7c049a361882..17128e37d83e8 100644
--- a/llvm/test/DebugInfo/X86/array2.ll
+++ b/llvm/test/DebugInfo/X86/array2.ll
@@ -24,14 +24,13 @@ target triple = "x86_64-apple-macosx10.9.0"
 @main.array = private unnamed_addr constant [4 x i32] [i32 0, i32 1, i32 2, i32 3], align 16
 
 ; Function Attrs: nounwind ssp uwtable
-define void @f(i32* %p) #0 !dbg !4 {
+define void @f(ptr %p) #0 !dbg !4 {
 entry:
-  %p.addr = alloca i32*, align 8
-  store i32* %p, i32** %p.addr, align 8
-  call void @llvm.dbg.declare(metadata i32** %p.addr, metadata !19, metadata !DIExpression()), !dbg !20
-  %0 = load i32*, i32** %p.addr, align 8, !dbg !21
-  %arrayidx = getelementptr inbounds i32, i32* %0, i64 0, !dbg !21
-  store i32 42, i32* %arrayidx, align 4, !dbg !21
+  %p.addr = alloca ptr, align 8
+  store ptr %p, ptr %p.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !19, metadata !DIExpression()), !dbg !20
+  %0 = load ptr, ptr %p.addr, align 8, !dbg !21
+  store i32 42, ptr %0, align 4, !dbg !21
   ret void, !dbg !22
 }
 
@@ -39,29 +38,26 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind ssp uwtable
-define i32 @main(i32 %argc, i8** %argv) #0 !dbg !10 {
+define i32 @main(i32 %argc, ptr %argv) #0 !dbg !10 {
 entry:
   %retval = alloca i32, align 4
   %argc.addr = alloca i32, align 4
-  %argv.addr = alloca i8**, align 8
+  %argv.addr = alloca ptr, align 8
   %array = alloca [4 x i32], align 16
-  store i32 0, i32* %retval
-  store i32 %argc, i32* %argc.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %argc.addr, metadata !23, metadata !DIExpression()), !dbg !24
-  store i8** %argv, i8*** %argv.addr, align 8
-  call void @llvm.dbg.declare(metadata i8*** %argv.addr, metadata !25, metadata !DIExpression()), !dbg !24
-  call void @llvm.dbg.declare(metadata [4 x i32]* %array, metadata !26, metadata !DIExpression()), !dbg !30
-  %0 = bitcast [4 x i32]* %array to i8*, !dbg !30
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %0, i8* align 16 bitcast ([4 x i32]* @main.array to i8*), i64 16, i1 false), !dbg !30
-  %arraydecay = getelementptr inbounds [4 x i32], [4 x i32]* %array, i32 0, i32 0, !dbg !31
-  call void @f(i32* %arraydecay), !dbg !31
-  %arrayidx = getelementptr inbounds [4 x i32], [4 x i32]* %array, i32 0, i64 0, !dbg !32
-  %1 = load i32, i32* %arrayidx, align 4, !dbg !32
-  ret i32 %1, !dbg !32
+  store i32 0, ptr %retval
+  store i32 %argc, ptr %argc.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !23, metadata !DIExpression()), !dbg !24
+  store ptr %argv, ptr %argv.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !25, metadata !DIExpression()), !dbg !24
+  call void @llvm.dbg.declare(metadata ptr %array, metadata !26, metadata !DIExpression()), !dbg !30
+  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %array, ptr align 16 @main.array, i64 16, i1 false), !dbg !30
+  call void @f(ptr %array), !dbg !31
+  %0 = load i32, ptr %array, align 4, !dbg !32
+  ret i32 %0, !dbg !32
 }
 
 ; Function Attrs: nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1) #2
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) #2
 
 attributes #0 = { nounwind ssp uwtable }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/assumed_size_array.ll b/llvm/test/DebugInfo/X86/assumed_size_array.ll
index 6e8f13c310c0a..63c6308ba632c 100644
--- a/llvm/test/DebugInfo/X86/assumed_size_array.ll
+++ b/llvm/test/DebugInfo/X86/assumed_size_array.ll
@@ -49,44 +49,40 @@ target triple = "x86_64-unknown-linux-gnu"
 @.C350_sub_ = internal constant i64 8
 @.C349_sub_ = internal constant i64 7
 
-define void @sub_(i64* noalias %array1, i64* noalias %array2) #0 !dbg !5 {
+define void @sub_(ptr noalias %array1, ptr noalias %array2) #0 !dbg !5 {
 L.entry:
   %.dY0001_361 = alloca i64, align 8
   %"i$a_357" = alloca i64, align 8
-  call void @llvm.dbg.declare(metadata i64* %array1, metadata !16, metadata !DIExpression()), !dbg !17
-  call void @llvm.dbg.declare(metadata i64* %array2, metadata !18, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %array1, metadata !16, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %array2, metadata !18, metadata !DIExpression()), !dbg !17
   br label %L.LB1_364
 
 L.LB1_364:                                        ; preds = %L.entry
-  store i64 2, i64* %.dY0001_361, align 8, !dbg !19
-  call void @llvm.dbg.declare(metadata i64* %"i$a_357", metadata !20, metadata !DIExpression()), !dbg !17
-  store i64 7, i64* %"i$a_357", align 8, !dbg !19
+  store i64 2, ptr %.dY0001_361, align 8, !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %"i$a_357", metadata !20, metadata !DIExpression()), !dbg !17
+  store i64 7, ptr %"i$a_357", align 8, !dbg !19
   br label %L.LB1_359
 
 L.LB1_359:                                        ; preds = %L.LB1_359, %L.LB1_364
-  %0 = load i64, i64* %"i$a_357", align 8, !dbg !19
+  %0 = load i64, ptr %"i$a_357", align 8, !dbg !19
   call void @llvm.dbg.value(metadata i64 %0, metadata !22, metadata !DIExpression()), !dbg !17
-  %1 = bitcast i64* %array1 to i8*, !dbg !19
-  %2 = getelementptr i8, i8* %1, i64 -4, !dbg !19
-  %3 = bitcast i8* %2 to i32*, !dbg !19
-  %4 = getelementptr i32, i32* %3, i64 %0, !dbg !19
-  store i32 9, i32* %4, align 4, !dbg !19
-  %5 = load i64, i64* %"i$a_357", align 8, !dbg !19
-  call void @llvm.dbg.value(metadata i64 %5, metadata !23, metadata !DIExpression()), !dbg !17
-  %6 = add nsw i64 %5, 1, !dbg !19
-  store i64 %6, i64* %"i$a_357", align 8, !dbg !19
-  %7 = load i64, i64* %.dY0001_361, align 8, !dbg !19
-  %8 = sub nsw i64 %7, 1, !dbg !19
-  store i64 %8, i64* %.dY0001_361, align 8, !dbg !19
-  %9 = load i64, i64* %.dY0001_361, align 8, !dbg !19
-  %10 = icmp sgt i64 %9, 0, !dbg !19
-  br i1 %10, label %L.LB1_359, label %L.LB1_383, !dbg !19
+  %1 = getelementptr i8, ptr %array1, i64 -4, !dbg !19
+  %2 = getelementptr i32, ptr %1, i64 %0, !dbg !19
+  store i32 9, ptr %2, align 4, !dbg !19
+  %3 = load i64, ptr %"i$a_357", align 8, !dbg !19
+  call void @llvm.dbg.value(metadata i64 %3, metadata !23, metadata !DIExpression()), !dbg !17
+  %4 = add nsw i64 %3, 1, !dbg !19
+  store i64 %4, ptr %"i$a_357", align 8, !dbg !19
+  %5 = load i64, ptr %.dY0001_361, align 8, !dbg !19
+  %6 = sub nsw i64 %5, 1, !dbg !19
+  store i64 %6, ptr %.dY0001_361, align 8, !dbg !19
+  %7 = load i64, ptr %.dY0001_361, align 8, !dbg !19
+  %8 = icmp sgt i64 %7, 0, !dbg !19
+  br i1 %8, label %L.LB1_359, label %L.LB1_383, !dbg !19
 
 L.LB1_383:                                        ; preds = %L.LB1_359
-  %11 = bitcast i64* %array2 to i8*, !dbg !24
-  %12 = getelementptr i8, i8* %11, i64 4, !dbg !24
-  %13 = bitcast i8* %12 to i32*, !dbg !24
-  store i32 10, i32* %13, align 4, !dbg !24
+  %9 = getelementptr i8, ptr %array2, i64 4, !dbg !24
+  store i32 10, ptr %9, align 4, !dbg !24
   ret void, !dbg !25
 }
 

diff  --git a/llvm/test/DebugInfo/X86/attr-btf_tag-typedef.ll b/llvm/test/DebugInfo/X86/attr-btf_tag-typedef.ll
index e36a84a185219..0c0a055cd8553 100644
--- a/llvm/test/DebugInfo/X86/attr-btf_tag-typedef.ll
+++ b/llvm/test/DebugInfo/X86/attr-btf_tag-typedef.ll
@@ -13,7 +13,7 @@
 %struct.__s = type { i32 }
 
 @a = dso_local global %struct.__s zeroinitializer, align 4, !dbg !0
- at u = dso_local global i32* null, align 8, !dbg !5
+ at u = dso_local global ptr null, align 8, !dbg !5
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!17, !18, !19, !20, !21}

diff  --git a/llvm/test/DebugInfo/X86/bbjoin.ll b/llvm/test/DebugInfo/X86/bbjoin.ll
index b21990469febd..f1f33f96da18d 100644
--- a/llvm/test/DebugInfo/X86/bbjoin.ll
+++ b/llvm/test/DebugInfo/X86/bbjoin.ll
@@ -26,36 +26,35 @@ target triple = "x86_64-apple-macosx10.11.0"
 define i32 @f() #0 !dbg !4 {
 entry:
   %x = alloca i32, align 4
-  %0 = bitcast i32* %x to i8*, !dbg !14
-  call void @llvm.lifetime.start(i64 4, i8* %0) #4, !dbg !14
+  call void @llvm.lifetime.start(i64 4, ptr %x) #4, !dbg !14
   tail call void @llvm.dbg.value(metadata i32 23, metadata !9, metadata !15), !dbg !16
-  store i32 23, i32* %x, align 4, !dbg !16, !tbaa !17
-  tail call void @llvm.dbg.value(metadata i32* %x, metadata !9, metadata !DIExpression(DW_OP_deref)), !dbg !16
-  call void @g(i32* nonnull %x) #4, !dbg !21
-  call void @llvm.dbg.value(metadata i32* %x, metadata !9, metadata !DIExpression(DW_OP_deref)), !dbg !16
-  %1 = load i32, i32* %x, align 4, !dbg !22, !tbaa !17
-  %cmp = icmp eq i32 %1, 42, !dbg !24
+  store i32 23, ptr %x, align 4, !dbg !16, !tbaa !17
+  tail call void @llvm.dbg.value(metadata ptr %x, metadata !9, metadata !DIExpression(DW_OP_deref)), !dbg !16
+  call void @g(ptr nonnull %x) #4, !dbg !21
+  call void @llvm.dbg.value(metadata ptr %x, metadata !9, metadata !DIExpression(DW_OP_deref)), !dbg !16
+  %0 = load i32, ptr %x, align 4, !dbg !22, !tbaa !17
+  %cmp = icmp eq i32 %0, 42, !dbg !24
   br i1 %cmp, label %if.then, label %if.end, !dbg !25
 
 if.then:                                          ; preds = %entry
   call void @llvm.dbg.value(metadata i32 43, metadata !9, metadata !15), !dbg !16
-  store i32 43, i32* %x, align 4, !dbg !26, !tbaa !17
+  store i32 43, ptr %x, align 4, !dbg !26, !tbaa !17
   br label %if.end, !dbg !26
 
 if.end:                                           ; preds = %if.then, %entry
-  %2 = phi i32 [ 43, %if.then ], [ %1, %entry ], !dbg !27
-  call void @llvm.dbg.value(metadata i32* %x, metadata !9, metadata !DIExpression(DW_OP_deref)), !dbg !16
-  call void @llvm.lifetime.end(i64 4, i8* %0) #4, !dbg !28
-  ret i32 %2, !dbg !29
+  %1 = phi i32 [ 43, %if.then ], [ %0, %entry ], !dbg !27
+  call void @llvm.dbg.value(metadata ptr %x, metadata !9, metadata !DIExpression(DW_OP_deref)), !dbg !16
+  call void @llvm.lifetime.end(i64 4, ptr %x) #4, !dbg !28
+  ret i32 %1, !dbg !29
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start(i64, ptr nocapture) #1
 
-declare void @g(i32*) #4
+declare void @g(ptr) #4
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, metadata, metadata) #3

diff  --git a/llvm/test/DebugInfo/X86/block-capture.ll b/llvm/test/DebugInfo/X86/block-capture.ll
index abdfc670e99f6..f78ce32fb34ae 100644
--- a/llvm/test/DebugInfo/X86/block-capture.ll
+++ b/llvm/test/DebugInfo/X86/block-capture.ll
@@ -17,34 +17,30 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-darwin"
 
 %struct.__block_descriptor = type { i64, i64 }
-%struct.__block_literal_generic = type { i8*, i32, i32, i8*, %struct.__block_descriptor* }
+%struct.__block_literal_generic = type { ptr, i32, i32, ptr, ptr }
 
- at _NSConcreteStackBlock = external global i8*
+ at _NSConcreteStackBlock = external global ptr
 @.str = private unnamed_addr constant [6 x i8] c"v8@?0\00", align 1
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: ssp uwtable
-define internal void @__foo_block_invoke(i8* %.block_descriptor) #2 !dbg !8 {
+define internal void @__foo_block_invoke(ptr %.block_descriptor) #2 !dbg !8 {
 entry:
-  %.block_descriptor.addr = alloca i8*, align 8
-  %block.addr = alloca <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, void (...)* }>*, align 8
-  store i8* %.block_descriptor, i8** %.block_descriptor.addr, align 8
-  %0 = load i8*, i8** %.block_descriptor.addr
-  call void @llvm.dbg.value(metadata i8* %0, metadata !47, metadata !43), !dbg !66
-  call void @llvm.dbg.declare(metadata i8* %.block_descriptor, metadata !47, metadata !43), !dbg !66
-  %block = bitcast i8* %.block_descriptor to <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, void (...)* }>*, !dbg !67
-  store <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, void (...)* }>* %block, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, void (...)* }>** %block.addr, align 8
-  call void @llvm.dbg.declare(metadata <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, void (...)* }>** %block.addr, metadata !68, metadata !69), !dbg !70
-  %block.capture.addr = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, void (...)* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, void (...)* }>* %block, i32 0, i32 5, !dbg !71
-  %1 = load void (...)*, void (...)** %block.capture.addr, align 8, !dbg !71
-  %block.literal = bitcast void (...)* %1 to %struct.__block_literal_generic*, !dbg !71
-  %2 = getelementptr inbounds %struct.__block_literal_generic, %struct.__block_literal_generic* %block.literal, i32 0, i32 3, !dbg !71
-  %3 = bitcast %struct.__block_literal_generic* %block.literal to i8*, !dbg !71
-  %4 = load i8*, i8** %2, !dbg !71
-  %5 = bitcast i8* %4 to void (i8*, ...)*, !dbg !71
-  call void (i8*, ...) %5(i8* %3), !dbg !71
+  %.block_descriptor.addr = alloca ptr, align 8
+  %block.addr = alloca ptr, align 8
+  store ptr %.block_descriptor, ptr %.block_descriptor.addr, align 8
+  %0 = load ptr, ptr %.block_descriptor.addr
+  call void @llvm.dbg.value(metadata ptr %0, metadata !47, metadata !43), !dbg !66
+  call void @llvm.dbg.declare(metadata ptr %.block_descriptor, metadata !47, metadata !43), !dbg !66
+  store ptr %.block_descriptor, ptr %block.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %block.addr, metadata !68, metadata !69), !dbg !70
+  %block.capture.addr = getelementptr inbounds <{ ptr, i32, i32, ptr, ptr, ptr }>, ptr %.block_descriptor, i32 0, i32 5, !dbg !71
+  %1 = load ptr, ptr %block.capture.addr, align 8, !dbg !71
+  %2 = getelementptr inbounds %struct.__block_literal_generic, ptr %1, i32 0, i32 3, !dbg !71
+  %3 = load ptr, ptr %2, !dbg !71
+  call void (ptr, ...) %3(ptr %1), !dbg !71
   ret void, !dbg !73
 }
 

diff  --git a/llvm/test/DebugInfo/X86/byvalstruct.ll b/llvm/test/DebugInfo/X86/byvalstruct.ll
index 63f6e8a4c7514..d84e4753516b9 100644
--- a/llvm/test/DebugInfo/X86/byvalstruct.ll
+++ b/llvm/test/DebugInfo/X86/byvalstruct.ll
@@ -32,50 +32,50 @@ target triple = "x86_64-apple-macosx10.8.0"
 
 %0 = type opaque
 %struct._objc_cache = type opaque
-%struct._class_t = type { %struct._class_t*, %struct._class_t*, %struct._objc_cache*, i8* (i8*, i8*)**, %struct._class_ro_t* }
-%struct._class_ro_t = type { i32, i32, i32, i8*, i8*, %struct.__method_list_t*, %struct._objc_protocol_list*, %struct._ivar_list_t*, i8*, %struct._prop_list_t* }
+%struct._class_t = type { ptr, ptr, ptr, ptr, ptr }
+%struct._class_ro_t = type { i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
 %struct.__method_list_t = type { i32, i32, [0 x %struct._objc_method] }
-%struct._objc_method = type { i8*, i8*, i8* }
-%struct._objc_protocol_list = type { i64, [0 x %struct._protocol_t*] }
-%struct._protocol_t = type { i8*, i8*, %struct._objc_protocol_list*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct._prop_list_t*, i32, i32, i8** }
+%struct._objc_method = type { ptr, ptr, ptr }
+%struct._objc_protocol_list = type { i64, [0 x ptr] }
+%struct._protocol_t = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr }
 %struct._prop_list_t = type { i32, i32, [0 x %struct._prop_t] }
-%struct._prop_t = type { i8*, i8* }
+%struct._prop_t = type { ptr, ptr }
 %struct._ivar_list_t = type { i32, i32, [0 x %struct._ivar_t] }
-%struct._ivar_t = type { i64*, i8*, i8*, i32, i32 }
+%struct._ivar_t = type { ptr, ptr, ptr, i32, i32 }
 %struct.ImageInfo = type { i64, i64, double }
 
 @_objc_empty_cache = external global %struct._objc_cache
- at _objc_empty_vtable = external global i8* (i8*, i8*)*
-@"OBJC_CLASS_$_Bitmap" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_Bitmap", %struct._class_t* null, %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** @_objc_empty_vtable, %struct._class_ro_t* @"\01l_OBJC_CLASS_RO_$_Bitmap" }, section "__DATA, __objc_data", align 8
-@"OBJC_METACLASS_$_Bitmap" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_Bitmap", %struct._class_t* @"OBJC_CLASS_$_Bitmap", %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** @_objc_empty_vtable, %struct._class_ro_t* @"\01l_OBJC_METACLASS_RO_$_Bitmap" }, section "__DATA, __objc_data", align 8
+ at _objc_empty_vtable = external global ptr
+@"OBJC_CLASS_$_Bitmap" = global %struct._class_t { ptr @"OBJC_METACLASS_$_Bitmap", ptr null, ptr @_objc_empty_cache, ptr @_objc_empty_vtable, ptr @"\01l_OBJC_CLASS_RO_$_Bitmap" }, section "__DATA, __objc_data", align 8
+@"OBJC_METACLASS_$_Bitmap" = global %struct._class_t { ptr @"OBJC_METACLASS_$_Bitmap", ptr @"OBJC_CLASS_$_Bitmap", ptr @_objc_empty_cache, ptr @_objc_empty_vtable, ptr @"\01l_OBJC_METACLASS_RO_$_Bitmap" }, section "__DATA, __objc_data", align 8
 @"\01L_OBJC_CLASS_NAME_" = internal global [7 x i8] c"Bitmap\00", section "__TEXT,__objc_classname,cstring_literals", align 1
-@"\01l_OBJC_METACLASS_RO_$_Bitmap" = internal global %struct._class_ro_t { i32 3, i32 40, i32 40, i8* null, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), %struct.__method_list_t* null, %struct._objc_protocol_list* null, %struct._ivar_list_t* null, i8* null, %struct._prop_list_t* null }, section "__DATA, __objc_const", align 8
+@"\01l_OBJC_METACLASS_RO_$_Bitmap" = internal global %struct._class_ro_t { i32 3, i32 40, i32 40, ptr null, ptr @"\01L_OBJC_CLASS_NAME_", ptr null, ptr null, ptr null, ptr null, ptr null }, section "__DATA, __objc_const", align 8
 @"\01L_OBJC_METH_VAR_NAME_" = internal global [32 x i8] c"initWithCopy:andInfo:andLength:\00", section "__TEXT,__objc_methname,cstring_literals", align 1
 @"\01L_OBJC_METH_VAR_TYPE_" = internal global [23 x i8] c"@56 at 0:8 at 16{?=QQd}24Q48\00", section "__TEXT,__objc_methtype,cstring_literals", align 1
-@"\01l_OBJC_$_INSTANCE_METHODS_Bitmap" = internal global { i32, i32, [1 x %struct._objc_method] } { i32 24, i32 1, [1 x %struct._objc_method] [%struct._objc_method { i8* getelementptr inbounds ([32 x i8], [32 x i8]* @"\01L_OBJC_METH_VAR_NAME_", i32 0, i32 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"\01L_OBJC_METH_VAR_TYPE_", i32 0, i32 0), i8* bitcast (i8* (%0*, i8*, %0*, %struct.ImageInfo*, i64)* @"\01-[Bitmap initWithCopy:andInfo:andLength:]" to i8*) }] }, section "__DATA, __objc_const", align 8
-@"\01l_OBJC_CLASS_RO_$_Bitmap" = internal global %struct._class_ro_t { i32 2, i32 0, i32 0, i8* null, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), %struct.__method_list_t* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_INSTANCE_METHODS_Bitmap" to %struct.__method_list_t*), %struct._objc_protocol_list* null, %struct._ivar_list_t* null, i8* null, %struct._prop_list_t* null }, section "__DATA, __objc_const", align 8
-@"\01L_OBJC_LABEL_CLASS_$" = internal global [1 x i8*] [i8* bitcast (%struct._class_t* @"OBJC_CLASS_$_Bitmap" to i8*)], section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
- at llvm.used = appending global [5 x i8*] [i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @"\01L_OBJC_METH_VAR_NAME_", i32 0, i32 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"\01L_OBJC_METH_VAR_TYPE_", i32 0, i32 0), i8* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_INSTANCE_METHODS_Bitmap" to i8*), i8* bitcast ([1 x i8*]* @"\01L_OBJC_LABEL_CLASS_$" to i8*)], section "llvm.metadata"
+@"\01l_OBJC_$_INSTANCE_METHODS_Bitmap" = internal global { i32, i32, [1 x %struct._objc_method] } { i32 24, i32 1, [1 x %struct._objc_method] [%struct._objc_method { ptr @"\01L_OBJC_METH_VAR_NAME_", ptr @"\01L_OBJC_METH_VAR_TYPE_", ptr @"\01-[Bitmap initWithCopy:andInfo:andLength:]" }] }, section "__DATA, __objc_const", align 8
+@"\01l_OBJC_CLASS_RO_$_Bitmap" = internal global %struct._class_ro_t { i32 2, i32 0, i32 0, ptr null, ptr @"\01L_OBJC_CLASS_NAME_", ptr @"\01l_OBJC_$_INSTANCE_METHODS_Bitmap", ptr null, ptr null, ptr null, ptr null }, section "__DATA, __objc_const", align 8
+@"\01L_OBJC_LABEL_CLASS_$" = internal global [1 x ptr] [ptr @"OBJC_CLASS_$_Bitmap"], section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
+ at llvm.used = appending global [5 x ptr] [ptr @"\01L_OBJC_CLASS_NAME_", ptr @"\01L_OBJC_METH_VAR_NAME_", ptr @"\01L_OBJC_METH_VAR_TYPE_", ptr @"\01l_OBJC_$_INSTANCE_METHODS_Bitmap", ptr @"\01L_OBJC_LABEL_CLASS_$"], section "llvm.metadata"
 
 ; Function Attrs: ssp uwtable
-define internal i8* @"\01-[Bitmap initWithCopy:andInfo:andLength:]"(%0* %self, i8* %_cmd, %0* %otherBitmap, %struct.ImageInfo* byval(%struct.ImageInfo) align 8 %info, i64 %length) #0 !dbg !7 {
+define internal ptr @"\01-[Bitmap initWithCopy:andInfo:andLength:]"(ptr %self, ptr %_cmd, ptr %otherBitmap, ptr byval(%struct.ImageInfo) align 8 %info, i64 %length) #0 !dbg !7 {
 entry:
-  %retval = alloca i8*, align 8
-  %self.addr = alloca %0*, align 8
-  %_cmd.addr = alloca i8*, align 8
-  %otherBitmap.addr = alloca %0*, align 8
+  %retval = alloca ptr, align 8
+  %self.addr = alloca ptr, align 8
+  %_cmd.addr = alloca ptr, align 8
+  %otherBitmap.addr = alloca ptr, align 8
   %length.addr = alloca i64, align 8
-  store %0* %self, %0** %self.addr, align 8
-  call void @llvm.dbg.declare(metadata %0** %self.addr, metadata !28, metadata !DIExpression()), !dbg !29
-  store i8* %_cmd, i8** %_cmd.addr, align 8
-  call void @llvm.dbg.declare(metadata i8** %_cmd.addr, metadata !30, metadata !DIExpression()), !dbg !29
-  store %0* %otherBitmap, %0** %otherBitmap.addr, align 8
-  call void @llvm.dbg.declare(metadata %0** %otherBitmap.addr, metadata !32, metadata !DIExpression()), !dbg !29
-  call void @llvm.dbg.declare(metadata %struct.ImageInfo* %info, metadata !33, metadata !DIExpression()), !dbg !34
-  store i64 %length, i64* %length.addr, align 8
-  call void @llvm.dbg.declare(metadata i64* %length.addr, metadata !35, metadata !DIExpression()), !dbg !36
-  %0 = load i8*, i8** %retval, !dbg !37
-  ret i8* %0, !dbg !37
+  store ptr %self, ptr %self.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %self.addr, metadata !28, metadata !DIExpression()), !dbg !29
+  store ptr %_cmd, ptr %_cmd.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %_cmd.addr, metadata !30, metadata !DIExpression()), !dbg !29
+  store ptr %otherBitmap, ptr %otherBitmap.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %otherBitmap.addr, metadata !32, metadata !DIExpression()), !dbg !29
+  call void @llvm.dbg.declare(metadata ptr %info, metadata !33, metadata !DIExpression()), !dbg !34
+  store i64 %length, ptr %length.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %length.addr, metadata !35, metadata !DIExpression()), !dbg !36
+  %0 = load ptr, ptr %retval, !dbg !37
+  ret ptr %0, !dbg !37
 }
 
 ; Function Attrs: nounwind readnone

diff  --git a/llvm/test/DebugInfo/X86/codegenprep-addrsink.ll b/llvm/test/DebugInfo/X86/codegenprep-addrsink.ll
index 17a4abee17a0d..794efccca575b 100644
--- a/llvm/test/DebugInfo/X86/codegenprep-addrsink.ll
+++ b/llvm/test/DebugInfo/X86/codegenprep-addrsink.ll
@@ -10,14 +10,13 @@
 ; would either make it use-before-def or shift when the variable appears), and
 ; that the dbg.value after the memory instruction does get updated.
 
-define dso_local i8 @foo(i32 *%p, i32 %cond) !dbg !7 {
+define dso_local i8 @foo(ptr %p, i32 %cond) !dbg !7 {
 entry:
 ; There should be no dbg.values in this block.
 ; CHECK-LABEL: entry:
 ; CHECK-NOT:   dbg.value
-  %casted = bitcast i32 *%p to i8*
-  %arith = getelementptr i8, i8 *%casted, i32 3
-  %load1 = load i8, i8 *%arith
+  %arith = getelementptr i8, ptr %p, i32 3
+  %load1 = load i8, ptr %arith
   %cmpresult = icmp eq i32 %cond, 0
   br i1 %cmpresult, label %next, label %ret
 
@@ -25,20 +24,19 @@ next:
 ; Address calcs should be duplicated into this block. One dbg.value should be
 ; updated, and the other should not.
 ; CHECK-LABEL: next:
-; CHECK:       dbg.value(metadata i8* %arith, metadata ![[DIVAR:[0-9]+]],
+; CHECK:       dbg.value(metadata ptr %arith, metadata ![[DIVAR:[0-9]+]],
 ; CHECK-SAME:    metadata !DIExpression()
-; CHECK-NEXT:  %[[CASTVAR:[0-9a-zA-Z]+]] = bitcast i32* %p to i8*
-; CHECK-NEXT:  %[[GEPVAR:[0-9a-zA-Z]+]] = getelementptr i8, i8* %[[CASTVAR]],
+; CHECK-NEXT:  %[[GEPVAR:[0-9a-zA-Z]+]] = getelementptr i8, ptr %p,
 ; CHECK-SAME:                             i64 3
-; CHECK-NEXT:  %loaded = load i8, i8* %[[GEPVAR]]
-; CHECK-NEXT:  call void @llvm.dbg.value(metadata i8* %[[GEPVAR]],
+; CHECK-NEXT:  %loaded = load i8, ptr %[[GEPVAR]]
+; CHECK-NEXT:  call void @llvm.dbg.value(metadata ptr %[[GEPVAR]],
 ; CHECK-SAME:                            metadata ![[DIVAR]],
-; CHECK-NEXT:  call void @llvm.dbg.value(metadata !DIArgList(i8* %[[GEPVAR]],
-; CHECK-SAME:                            i8* %[[GEPVAR]]), metadata ![[DIVAR]],
-  call void @llvm.dbg.value(metadata i8 *%arith, metadata !12, metadata !DIExpression()), !dbg !14
-  %loaded = load i8, i8 *%arith
-  call void @llvm.dbg.value(metadata i8 *%arith, metadata !12, metadata !DIExpression()), !dbg !14
-  call void @llvm.dbg.value(metadata !DIArgList(i8 *%arith, i8 *%arith), metadata !12, metadata !DIExpression()), !dbg !14
+; CHECK-NEXT:  call void @llvm.dbg.value(metadata !DIArgList(ptr %[[GEPVAR]],
+; CHECK-SAME:                            ptr %[[GEPVAR]]), metadata ![[DIVAR]],
+  call void @llvm.dbg.value(metadata ptr %arith, metadata !12, metadata !DIExpression()), !dbg !14
+  %loaded = load i8, ptr %arith
+  call void @llvm.dbg.value(metadata ptr %arith, metadata !12, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.value(metadata !DIArgList(ptr %arith, ptr %arith), metadata !12, metadata !DIExpression()), !dbg !14
   ret i8 %loaded
 
 ret:

diff  --git a/llvm/test/DebugInfo/X86/coff_debug_info_type.ll b/llvm/test/DebugInfo/X86/coff_debug_info_type.ll
index 03230299d8340..a40b51192a372 100644
--- a/llvm/test/DebugInfo/X86/coff_debug_info_type.ll
+++ b/llvm/test/DebugInfo/X86/coff_debug_info_type.ll
@@ -22,7 +22,7 @@
 define i32 @main() #0 !dbg !4 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   ret i32 0, !dbg !10
 }
 

diff  --git a/llvm/test/DebugInfo/X86/coff_relative_names.ll b/llvm/test/DebugInfo/X86/coff_relative_names.ll
index 0b5d2cb02c8ad..ea6d8569bea91 100644
--- a/llvm/test/DebugInfo/X86/coff_relative_names.ll
+++ b/llvm/test/DebugInfo/X86/coff_relative_names.ll
@@ -14,7 +14,7 @@
 define i32 @main() #0 !dbg !4 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   ret i32 0, !dbg !10
 }
 

diff  --git a/llvm/test/DebugInfo/X86/concrete_out_of_line.ll b/llvm/test/DebugInfo/X86/concrete_out_of_line.ll
index d76b2e27f8998..19639ba6a3926 100644
--- a/llvm/test/DebugInfo/X86/concrete_out_of_line.ll
+++ b/llvm/test/DebugInfo/X86/concrete_out_of_line.ll
@@ -63,18 +63,18 @@ source_filename = "test/DebugInfo/X86/concrete_out_of_line.ll"
 
 define i32 @_ZN17nsAutoRefCnt7ReleaseEv() !dbg !19 {
 entry:
-  store i32 1, i32* null, align 4, !dbg !32
-  tail call void @_Z8moz_freePv(i8* null) #0, !dbg !40
+  store i32 1, ptr null, align 4, !dbg !32
+  tail call void @_Z8moz_freePv(ptr null) #0, !dbg !40
   ret i32 0
 }
 
 define void @_ZN17nsAutoRefCntD1Ev() !dbg !46 {
 entry:
-  tail call void @_Z8moz_freePv(i8* null) #0, !dbg !49
+  tail call void @_Z8moz_freePv(ptr null) #0, !dbg !49
   ret void
 }
 
-declare void @_Z8moz_freePv(i8*)
+declare void @_Z8moz_freePv(ptr)
 
 attributes #0 = { nounwind }
 

diff  --git a/llvm/test/DebugInfo/X86/constant-loclist.ll b/llvm/test/DebugInfo/X86/constant-loclist.ll
index c0c89a059e248..630c652ba0ccf 100644
--- a/llvm/test/DebugInfo/X86/constant-loclist.ll
+++ b/llvm/test/DebugInfo/X86/constant-loclist.ll
@@ -27,14 +27,14 @@ define void @main() #0 !dbg !7 {
   %1 = alloca double, align 8
   %2 = alloca i64, align 8
   %3 = alloca i64, align 8
-  store double 2.000000e+00, double* %1, align 8, !dbg !21
+  store double 2.000000e+00, ptr %1, align 8, !dbg !21
   call void @llvm.dbg.value(metadata i64 0, metadata !22, metadata !15), !dbg !24
   call void @llvm.dbg.value(metadata i64 0, metadata !25, metadata !15), !dbg !27
   call void @llvm.dbg.value(metadata double 2.000000e+00, metadata !19, metadata !15), !dbg !21
-  store i64 4611686018427387904, i64* %2, align 8, !dbg !24
+  store i64 4611686018427387904, ptr %2, align 8, !dbg !24
   call void @llvm.dbg.value(metadata i64 4611686018427387904, metadata !22, metadata !15), !dbg !24
   call void @llvm.dbg.value(metadata i64 4611686018427387904, metadata !25, metadata !15), !dbg !27
-  store i64 4611686018427387904, i64* %3, align 8, !dbg !27
+  store i64 4611686018427387904, ptr %3, align 8, !dbg !27
   ret void, !dbg !28
 }
 

diff  --git a/llvm/test/DebugInfo/X86/cu-ranges-odr.ll b/llvm/test/DebugInfo/X86/cu-ranges-odr.ll
index a269bccb116d7..ac58e2fb32799 100644
--- a/llvm/test/DebugInfo/X86/cu-ranges-odr.ll
+++ b/llvm/test/DebugInfo/X86/cu-ranges-odr.ll
@@ -23,27 +23,26 @@ source_filename = "test/DebugInfo/X86/cu-ranges-odr.ll"
 %class.A = type { i32 }
 
 @a = global %class.A zeroinitializer, align 4, !dbg !0
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__I_a, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__I_a, ptr null }]
 
 define internal void @__cxx_global_var_init() section ".text.startup" !dbg !18 {
 entry:
-  call void @_ZN1AC2Ei(%class.A* @a, i32 0), !dbg !21
+  call void @_ZN1AC2Ei(ptr @a, i32 0), !dbg !21
   ret void, !dbg !21
 }
 
 ; Function Attrs: nounwind uwtable
-define linkonce_odr void @_ZN1AC2Ei(%class.A* %this, i32 %i) unnamed_addr #0 align 2 !dbg !22 {
+define linkonce_odr void @_ZN1AC2Ei(ptr %this, i32 %i) unnamed_addr #0 align 2 !dbg !22 {
 entry:
-  %this.addr = alloca %class.A*, align 8
+  %this.addr = alloca ptr, align 8
   %i.addr = alloca i32, align 4
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !23, metadata !25), !dbg !26
-  store i32 %i, i32* %i.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %i.addr, metadata !27, metadata !25), !dbg !28
-  %this1 = load %class.A*, %class.A** %this.addr
-  %a = getelementptr inbounds %class.A, %class.A* %this1, i32 0, i32 0, !dbg !28
-  %0 = load i32, i32* %i.addr, align 4, !dbg !28
-  store i32 %0, i32* %a, align 4, !dbg !28
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !23, metadata !25), !dbg !26
+  store i32 %i, ptr %i.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !27, metadata !25), !dbg !28
+  %this1 = load ptr, ptr %this.addr
+  %0 = load i32, ptr %i.addr, align 4, !dbg !28
+  store i32 %0, ptr %this1, align 4, !dbg !28
   ret void, !dbg !28
 }
 

diff  --git a/llvm/test/DebugInfo/X86/cu-ranges.ll b/llvm/test/DebugInfo/X86/cu-ranges.ll
index a4cbbe6c27900..1afbdc5b80037 100644
--- a/llvm/test/DebugInfo/X86/cu-ranges.ll
+++ b/llvm/test/DebugInfo/X86/cu-ranges.ll
@@ -39,9 +39,9 @@
 define i32 @foo(i32 %a) #0 !dbg !4 {
 entry:
   %a.addr = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !13, metadata !DIExpression()), !dbg !14
-  %0 = load i32, i32* %a.addr, align 4, !dbg !14
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !13, metadata !DIExpression()), !dbg !14
+  %0 = load i32, ptr %a.addr, align 4, !dbg !14
   %add = add nsw i32 %0, 1, !dbg !14
   ret i32 %add, !dbg !14
 }
@@ -53,9 +53,9 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 define i32 @bar(i32 %b) #0 !dbg !9 {
 entry:
   %b.addr = alloca i32, align 4
-  store i32 %b, i32* %b.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !15, metadata !DIExpression()), !dbg !16
-  %0 = load i32, i32* %b.addr, align 4, !dbg !16
+  store i32 %b, ptr %b.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !15, metadata !DIExpression()), !dbg !16
+  %0 = load i32, ptr %b.addr, align 4, !dbg !16
   %add = add nsw i32 %0, 2, !dbg !16
   ret i32 %add, !dbg !16
 }

diff  --git a/llvm/test/DebugInfo/X86/dbg-abstract-vars-g-gmlt.ll b/llvm/test/DebugInfo/X86/dbg-abstract-vars-g-gmlt.ll
index 1ecd2985f4524..aa9ddff08a0fb 100644
--- a/llvm/test/DebugInfo/X86/dbg-abstract-vars-g-gmlt.ll
+++ b/llvm/test/DebugInfo/X86/dbg-abstract-vars-g-gmlt.ll
@@ -53,8 +53,8 @@ target triple = "x86_64-unknown-linux-gnu"
 define void @_Z2f3v() #0 !dbg !8 {
 entry:
   %.addr.i = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %.addr.i, metadata !11, metadata !16), !dbg !17
-  store i32 0, i32* %.addr.i, align 4
+  call void @llvm.dbg.declare(metadata ptr %.addr.i, metadata !11, metadata !16), !dbg !17
+  store i32 0, ptr %.addr.i, align 4
   call void @_Z2f1v(), !dbg !19
   ret void, !dbg !20
 }

diff  --git a/llvm/test/DebugInfo/X86/dbg-addr-dse.ll b/llvm/test/DebugInfo/X86/dbg-addr-dse.ll
index b309a6439a6c9..b83b71afa7f16 100644
--- a/llvm/test/DebugInfo/X86/dbg-addr-dse.ll
+++ b/llvm/test/DebugInfo/X86/dbg-addr-dse.ll
@@ -26,7 +26,7 @@ target triple = "x86_64-pc-windows-msvc19.0.24215"
 
 declare void @llvm.dbg.addr(metadata, metadata, metadata) #2
 declare void @llvm.dbg.value(metadata, metadata, metadata) #2
-declare void @escape(i32*)
+declare void @escape(ptr)
 
 @global = external global i32, align 4
 
@@ -34,14 +34,14 @@ declare void @escape(i32*)
 define void @f(i32 %x) #0 !dbg !8 {
 entry:
   %x.addr = alloca i32, align 4
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.addr(metadata i32* %x.addr, metadata !13, metadata !DIExpression()), !dbg !18
-  call void @escape(i32* %x.addr), !dbg !19
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.addr(metadata ptr %x.addr, metadata !13, metadata !DIExpression()), !dbg !18
+  call void @escape(ptr %x.addr), !dbg !19
   call void @llvm.dbg.value(metadata i32 1, metadata !13, metadata !DIExpression()), !dbg !20
-  store i32 1, i32* @global, align 4, !dbg !22
-  call void @llvm.dbg.addr(metadata i32* %x.addr, metadata !13, metadata !DIExpression()), !dbg !23
-  store i32 2, i32* %x.addr, align 4, !dbg !23
-  call void @escape(i32* %x.addr), !dbg !24
+  store i32 1, ptr @global, align 4, !dbg !22
+  call void @llvm.dbg.addr(metadata ptr %x.addr, metadata !13, metadata !DIExpression()), !dbg !23
+  store i32 2, ptr %x.addr, align 4, !dbg !23
+  call void @escape(ptr %x.addr), !dbg !24
   ret void, !dbg !25
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dbg-addr.ll b/llvm/test/DebugInfo/X86/dbg-addr.ll
index 52cc9c3af8812..0c6a54a65f3a4 100644
--- a/llvm/test/DebugInfo/X86/dbg-addr.ll
+++ b/llvm/test/DebugInfo/X86/dbg-addr.ll
@@ -45,17 +45,17 @@ target triple = "x86_64--linux"
 define void @use_dbg_addr() #0 !dbg !7 {
 entry:
   %o = alloca %struct.Foo, align 4
-  call void @llvm.dbg.addr(metadata %struct.Foo* %o, metadata !10, metadata !15), !dbg !16
-  call void @escape_foo(%struct.Foo* %o), !dbg !17
+  call void @llvm.dbg.addr(metadata ptr %o, metadata !10, metadata !15), !dbg !16
+  call void @escape_foo(ptr %o), !dbg !17
   ret void, !dbg !18
 }
 
 define void @test_dbg_addr_and_dbg_val_undef() #0 !dbg !117 {
 entry:
   %o = alloca %struct.Foo, align 4
-  call void @llvm.dbg.addr(metadata %struct.Foo* %o, metadata !1110, metadata !1115), !dbg !1116
-  call void @escape_foo(%struct.Foo* %o), !dbg !1117
-  call void @llvm.dbg.value(metadata %struct.Foo* undef, metadata !1110, metadata !1115), !dbg !1116
+  call void @llvm.dbg.addr(metadata ptr %o, metadata !1110, metadata !1115), !dbg !1116
+  call void @escape_foo(ptr %o), !dbg !1117
+  call void @llvm.dbg.value(metadata ptr undef, metadata !1110, metadata !1115), !dbg !1116
   ret void, !dbg !1118
 }
 
@@ -63,7 +63,7 @@ entry:
 declare void @llvm.dbg.addr(metadata, metadata, metadata) #1
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
 
-declare void @escape_foo(%struct.Foo*)
+declare void @escape_foo(ptr)
 
 attributes #0 = { noinline nounwind uwtable }
 attributes #1 = { nounwind readnone speculatable }

diff  --git a/llvm/test/DebugInfo/X86/dbg-byval-parameter.ll b/llvm/test/DebugInfo/X86/dbg-byval-parameter.ll
index c35c4aa9d346d..0ff092aed5f6f 100644
--- a/llvm/test/DebugInfo/X86/dbg-byval-parameter.ll
+++ b/llvm/test/DebugInfo/X86/dbg-byval-parameter.ll
@@ -4,22 +4,20 @@
 %struct.Pt = type { double, double }
 %struct.Rect = type { %struct.Pt, %struct.Pt }
 
-define double @foo(%struct.Rect* byval(%struct.Rect) %my_r0) nounwind ssp !dbg !1 {
+define double @foo(ptr byval(%struct.Rect) %my_r0) nounwind ssp !dbg !1 {
 entry:
-  %retval = alloca double                         ; <double*> [#uses=2]
-  %0 = alloca double                              ; <double*> [#uses=2]
+  %retval = alloca double                         ; <ptr> [#uses=2]
+  %0 = alloca double                              ; <ptr> [#uses=2]
   %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
-  call void @llvm.dbg.declare(metadata %struct.Rect* %my_r0, metadata !0, metadata !DIExpression()), !dbg !15
-  %1 = getelementptr inbounds %struct.Rect, %struct.Rect* %my_r0, i32 0, i32 0, !dbg !16 ; <%struct.Pt*> [#uses=1]
-  %2 = getelementptr inbounds %struct.Pt, %struct.Pt* %1, i32 0, i32 0, !dbg !16 ; <double*> [#uses=1]
-  %3 = load double, double* %2, align 8, !dbg !16         ; <double> [#uses=1]
-  store double %3, double* %0, align 8, !dbg !16
-  %4 = load double, double* %0, align 8, !dbg !16         ; <double> [#uses=1]
-  store double %4, double* %retval, align 8, !dbg !16
+  call void @llvm.dbg.declare(metadata ptr %my_r0, metadata !0, metadata !DIExpression()), !dbg !15
+  %1 = load double, ptr %my_r0, align 8, !dbg !16         ; <double> [#uses=1]
+  store double %1, ptr %0, align 8, !dbg !16
+  %2 = load double, ptr %0, align 8, !dbg !16         ; <double> [#uses=1]
+  store double %2, ptr %retval, align 8, !dbg !16
   br label %return, !dbg !16
 
 return:                                           ; preds = %entry
-  %retval1 = load double, double* %retval, !dbg !16       ; <double> [#uses=1]
+  %retval1 = load double, ptr %retval, !dbg !16       ; <double> [#uses=1]
   ret double %retval1, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dbg-declare-alloca.ll b/llvm/test/DebugInfo/X86/dbg-declare-alloca.ll
index 6ae5522b4d7a9..7fd345e322b62 100644
--- a/llvm/test/DebugInfo/X86/dbg-declare-alloca.ll
+++ b/llvm/test/DebugInfo/X86/dbg-declare-alloca.ll
@@ -24,15 +24,15 @@ target triple = "x86_64--linux"
 define void @use_dbg_declare() #0 !dbg !7 {
 entry:
   %o = alloca %struct.Foo, align 4
-  call void @llvm.dbg.declare(metadata %struct.Foo* %o, metadata !10, metadata !15), !dbg !16
-  call void @escape_foo(%struct.Foo* %o), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %o, metadata !10, metadata !15), !dbg !16
+  call void @escape_foo(ptr %o), !dbg !17
   ret void, !dbg !18
 }
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare void @escape_foo(%struct.Foo*)
+declare void @escape_foo(ptr)
 
 attributes #0 = { noinline nounwind uwtable }
 attributes #1 = { nounwind readnone speculatable }

diff  --git a/llvm/test/DebugInfo/X86/dbg-declare-arg.ll b/llvm/test/DebugInfo/X86/dbg-declare-arg.ll
index 3498cc3038b7d..8e5c117d16be4 100644
--- a/llvm/test/DebugInfo/X86/dbg-declare-arg.ll
+++ b/llvm/test/DebugInfo/X86/dbg-declare-arg.ll
@@ -25,39 +25,38 @@ target triple = "x86_64-apple-macosx10.6.7"
 
 %class.A = type { i32, i32, i32, i32 }
 
-define void @_Z3fooi(%class.A* sret(%class.A) %agg.result, i32 %i) ssp !dbg !19 {
+define void @_Z3fooi(ptr sret(%class.A) %agg.result, i32 %i) ssp !dbg !19 {
 entry:
   %i.addr = alloca i32, align 4
   %j = alloca i32, align 4
   %nrvo = alloca i1
   %cleanup.dest.slot = alloca i32
-  store i32 %i, i32* %i.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %i.addr, metadata !26, metadata !DIExpression()), !dbg !27
-  call void @llvm.dbg.declare(metadata i32* %j, metadata !28, metadata !DIExpression()), !dbg !30
-  store i32 0, i32* %j, align 4, !dbg !31
-  %tmp = load i32, i32* %i.addr, align 4, !dbg !32
+  store i32 %i, ptr %i.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !26, metadata !DIExpression()), !dbg !27
+  call void @llvm.dbg.declare(metadata ptr %j, metadata !28, metadata !DIExpression()), !dbg !30
+  store i32 0, ptr %j, align 4, !dbg !31
+  %tmp = load i32, ptr %i.addr, align 4, !dbg !32
   %cmp = icmp eq i32 %tmp, 42, !dbg !32
   br i1 %cmp, label %if.then, label %if.end, !dbg !32
 
 if.then:                                          ; preds = %entry
-  %tmp1 = load i32, i32* %i.addr, align 4, !dbg !33
+  %tmp1 = load i32, ptr %i.addr, align 4, !dbg !33
   %add = add nsw i32 %tmp1, 1, !dbg !33
-  store i32 %add, i32* %j, align 4, !dbg !33
+  store i32 %add, ptr %j, align 4, !dbg !33
   br label %if.end, !dbg !35
 
 if.end:                                           ; preds = %if.then, %entry
-  store i1 false, i1* %nrvo, !dbg !36
-  call void @llvm.dbg.declare(metadata %class.A* %agg.result, metadata !37, metadata !DIExpression()), !dbg !39
-  %tmp2 = load i32, i32* %j, align 4, !dbg !40
-  %x = getelementptr inbounds %class.A, %class.A* %agg.result, i32 0, i32 0, !dbg !40
-  store i32 %tmp2, i32* %x, align 4, !dbg !40
-  store i1 true, i1* %nrvo, !dbg !41
-  store i32 1, i32* %cleanup.dest.slot
-  %nrvo.val = load i1, i1* %nrvo, !dbg !42
+  store i1 false, ptr %nrvo, !dbg !36
+  call void @llvm.dbg.declare(metadata ptr %agg.result, metadata !37, metadata !DIExpression()), !dbg !39
+  %tmp2 = load i32, ptr %j, align 4, !dbg !40
+  store i32 %tmp2, ptr %agg.result, align 4, !dbg !40
+  store i1 true, ptr %nrvo, !dbg !41
+  store i32 1, ptr %cleanup.dest.slot
+  %nrvo.val = load i1, ptr %nrvo, !dbg !42
   br i1 %nrvo.val, label %nrvo.skipdtor, label %nrvo.unused, !dbg !42
 
 nrvo.unused:                                      ; preds = %if.end
-  call void @_ZN1AD1Ev(%class.A* %agg.result), !dbg !42
+  call void @_ZN1AD1Ev(ptr %agg.result), !dbg !42
   br label %nrvo.skipdtor, !dbg !42
 
 nrvo.skipdtor:                                    ; preds = %nrvo.unused, %if.end
@@ -66,24 +65,23 @@ nrvo.skipdtor:                                    ; preds = %nrvo.unused, %if.en
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 
-define linkonce_odr void @_ZN1AD1Ev(%class.A* %this) unnamed_addr ssp align 2 !dbg !22 {
+define linkonce_odr void @_ZN1AD1Ev(ptr %this) unnamed_addr ssp align 2 !dbg !22 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !43, metadata !DIExpression()), !dbg !44
-  %this1 = load %class.A*, %class.A** %this.addr
-  call void @_ZN1AD2Ev(%class.A* %this1), !dbg !53
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !43, metadata !DIExpression()), !dbg !44
+  %this1 = load ptr, ptr %this.addr
+  call void @_ZN1AD2Ev(ptr %this1), !dbg !53
   ret void, !dbg !45
 }
 
-define linkonce_odr void @_ZN1AD2Ev(%class.A* %this) unnamed_addr nounwind ssp align 2 !dbg !25 {
+define linkonce_odr void @_ZN1AD2Ev(ptr %this) unnamed_addr nounwind ssp align 2 !dbg !25 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !46, metadata !DIExpression()), !dbg !47
-  %this1 = load %class.A*, %class.A** %this.addr
-  %x = getelementptr inbounds %class.A, %class.A* %this1, i32 0, i32 0, !dbg !48
-  store i32 1, i32* %x, align 4, !dbg !48
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !46, metadata !DIExpression()), !dbg !47
+  %this1 = load ptr, ptr %this.addr
+  store i32 1, ptr %this1, align 4, !dbg !48
   ret void, !dbg !48
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dbg-declare-inalloca.ll b/llvm/test/DebugInfo/X86/dbg-declare-inalloca.ll
index d6920a7f9a59f..1de1d0b17b392 100644
--- a/llvm/test/DebugInfo/X86/dbg-declare-inalloca.ll
+++ b/llvm/test/DebugInfo/X86/dbg-declare-inalloca.ll
@@ -109,31 +109,31 @@ target triple = "i386-pc-windows-msvc19.10.24728"
 %struct.NonTrivial = type { i32 }
 
 ; Function Attrs: nounwind
-define void @f(<{ %struct.NonTrivial, i32, i32, i32 }>* inalloca(<{ %struct.NonTrivial, i32, i32, i32 }>)) local_unnamed_addr #0 !dbg !7 {
+define void @f(ptr inalloca(<{ %struct.NonTrivial, i32, i32, i32 }>)) local_unnamed_addr #0 !dbg !7 {
 entry:
-  %a = getelementptr inbounds <{ %struct.NonTrivial, i32, i32, i32 }>, <{ %struct.NonTrivial, i32, i32, i32 }>* %0, i32 0, i32 0
-  %b = getelementptr inbounds <{ %struct.NonTrivial, i32, i32, i32 }>, <{ %struct.NonTrivial, i32, i32, i32 }>* %0, i32 0, i32 1
-  call void @llvm.dbg.declare(metadata i32* %b, metadata !22, metadata !24), !dbg !26
-  call void @llvm.dbg.declare(metadata %struct.NonTrivial* %a, metadata !23, metadata !24), !dbg !27
-  %1 = load i32, i32* %b, align 4, !dbg !28, !tbaa !30
+  %a = getelementptr inbounds <{ %struct.NonTrivial, i32, i32, i32 }>, ptr %0, i32 0, i32 0
+  %b = getelementptr inbounds <{ %struct.NonTrivial, i32, i32, i32 }>, ptr %0, i32 0, i32 1
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !22, metadata !24), !dbg !26
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !23, metadata !24), !dbg !27
+  %1 = load i32, ptr %b, align 4, !dbg !28, !tbaa !30
   %tobool = icmp eq i32 %1, 0, !dbg !28
   br i1 %tobool, label %if.else, label %if.then, !dbg !34
 
 if.then:                                          ; preds = %entry
-  %c = getelementptr inbounds <{ %struct.NonTrivial, i32, i32, i32 }>, <{ %struct.NonTrivial, i32, i32, i32 }>* %0, i32 0, i32 3
-  call void @llvm.dbg.declare(metadata i32* %c, metadata !20, metadata !24), !dbg !25
-  %2 = load i32, i32* %c, align 4, !dbg !35, !tbaa !30
+  %c = getelementptr inbounds <{ %struct.NonTrivial, i32, i32, i32 }>, ptr %0, i32 0, i32 3
+  call void @llvm.dbg.declare(metadata ptr %c, metadata !20, metadata !24), !dbg !25
+  %2 = load i32, ptr %c, align 4, !dbg !35, !tbaa !30
   tail call void @g(i32 %2) #4, !dbg !37
   br label %if.end, !dbg !38
 
 if.else:                                          ; preds = %entry
-  %x = getelementptr inbounds <{ %struct.NonTrivial, i32, i32, i32 }>, <{ %struct.NonTrivial, i32, i32, i32 }>* %0, i32 0, i32 0, i32 0, !dbg !39
-  %3 = load i32, i32* %x, align 4, !dbg !39, !tbaa !41
+  %x = getelementptr inbounds <{ %struct.NonTrivial, i32, i32, i32 }>, ptr %0, i32 0, i32 0, i32 0, !dbg !39
+  %3 = load i32, ptr %x, align 4, !dbg !39, !tbaa !41
   tail call void @h(i32 %3) #4, !dbg !43
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then
-  tail call x86_thiscallcc void @"\01??1NonTrivial@@QAE at XZ"(%struct.NonTrivial* nonnull %a) #4, !dbg !44
+  tail call x86_thiscallcc void @"\01??1NonTrivial@@QAE at XZ"(ptr nonnull %a) #4, !dbg !44
   ret void, !dbg !44
 }
 
@@ -145,7 +145,7 @@ declare void @g(i32) local_unnamed_addr
 declare void @h(i32) local_unnamed_addr
 
 ; Function Attrs: nounwind
-declare x86_thiscallcc void @"\01??1NonTrivial@@QAE at XZ"(%struct.NonTrivial*) unnamed_addr #3
+declare x86_thiscallcc void @"\01??1NonTrivial@@QAE at XZ"(ptr) unnamed_addr #3
 
 attributes #0 = { nounwind }
 attributes #1 = { nounwind readnone speculatable }

diff  --git a/llvm/test/DebugInfo/X86/dbg-declare.ll b/llvm/test/DebugInfo/X86/dbg-declare.ll
index 8e1602e45abc1..f07ddbb639ec8 100644
--- a/llvm/test/DebugInfo/X86/dbg-declare.ll
+++ b/llvm/test/DebugInfo/X86/dbg-declare.ll
@@ -13,31 +13,31 @@
 
 ; FIXME: There is no debug info to describe "a".
 
-define i32 @foo(i32* %x) nounwind uwtable ssp !dbg !5 {
+define i32 @foo(ptr %x) nounwind uwtable ssp !dbg !5 {
 entry:
-  %x.addr = alloca i32*, align 8
-  %saved_stack = alloca i8*
+  %x.addr = alloca ptr, align 8
+  %saved_stack = alloca ptr
   %cleanup.dest.slot = alloca i32
-  store i32* %x, i32** %x.addr, align 8
-  call void @llvm.dbg.declare(metadata i32** %x.addr, metadata !14, metadata !DIExpression()), !dbg !15
-  %0 = load i32*, i32** %x.addr, align 8, !dbg !16
-  %1 = load i32, i32* %0, align 4, !dbg !16
+  store ptr %x, ptr %x.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !14, metadata !DIExpression()), !dbg !15
+  %0 = load ptr, ptr %x.addr, align 8, !dbg !16
+  %1 = load i32, ptr %0, align 4, !dbg !16
   %2 = zext i32 %1 to i64, !dbg !16
-  %3 = call i8* @llvm.stacksave(), !dbg !16
-  store i8* %3, i8** %saved_stack, !dbg !16
+  %3 = call ptr @llvm.stacksave(), !dbg !16
+  store ptr %3, ptr %saved_stack, !dbg !16
   %vla = alloca i8, i64 %2, align 16, !dbg !16
-  call void @llvm.dbg.declare(metadata i8* %vla, metadata !18, metadata !DIExpression()), !dbg !23
-  store i32 1, i32* %cleanup.dest.slot
-  %4 = load i8*, i8** %saved_stack, !dbg !24
-  call void @llvm.stackrestore(i8* %4), !dbg !24
+  call void @llvm.dbg.declare(metadata ptr %vla, metadata !18, metadata !DIExpression()), !dbg !23
+  store i32 1, ptr %cleanup.dest.slot
+  %4 = load ptr, ptr %saved_stack, !dbg !24
+  call void @llvm.stackrestore(ptr %4), !dbg !24
   ret i32 0, !dbg !25
 }
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 
-declare i8* @llvm.stacksave() nounwind
+declare ptr @llvm.stacksave() nounwind
 
-declare void @llvm.stackrestore(i8*) nounwind
+declare void @llvm.stackrestore(ptr) nounwind
 
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!27}

diff  --git a/llvm/test/DebugInfo/X86/dbg-file-name.ll b/llvm/test/DebugInfo/X86/dbg-file-name.ll
index a26b0f3c1f45a..af64260b932b6 100644
--- a/llvm/test/DebugInfo/X86/dbg-file-name.ll
+++ b/llvm/test/DebugInfo/X86/dbg-file-name.ll
@@ -4,7 +4,7 @@
 ; rdar://problem/8884898
 ; CHECK: file	1 "/Users/manav/one/two" "simple.c"
 
-declare i32 @printf(i8*, ...) nounwind
+declare i32 @printf(ptr, ...) nounwind
 
 define i32 @main() nounwind !dbg !6 {
   ret i32 0

diff  --git a/llvm/test/DebugInfo/X86/dbg-prolog-end.ll b/llvm/test/DebugInfo/X86/dbg-prolog-end.ll
index 7d40b2c8ad869..1703323fc7ee1 100644
--- a/llvm/test/DebugInfo/X86/dbg-prolog-end.ll
+++ b/llvm/test/DebugInfo/X86/dbg-prolog-end.ll
@@ -8,18 +8,18 @@ define i32 @foo(i32 %i) nounwind ssp !dbg !1 {
 entry:
   %i.addr = alloca i32, align 4
   %j = alloca i32, align 4
-  store i32 %i, i32* %i.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %i.addr, metadata !7, metadata !DIExpression()), !dbg !8
-  call void @llvm.dbg.declare(metadata i32* %j, metadata !9, metadata !DIExpression()), !dbg !11
-  store i32 2, i32* %j, align 4, !dbg !12
-  %tmp = load i32, i32* %j, align 4, !dbg !13
+  store i32 %i, ptr %i.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !7, metadata !DIExpression()), !dbg !8
+  call void @llvm.dbg.declare(metadata ptr %j, metadata !9, metadata !DIExpression()), !dbg !11
+  store i32 2, ptr %j, align 4, !dbg !12
+  %tmp = load i32, ptr %j, align 4, !dbg !13
   %inc = add nsw i32 %tmp, 1, !dbg !13
-  store i32 %inc, i32* %j, align 4, !dbg !13
-  %tmp1 = load i32, i32* %j, align 4, !dbg !14
-  %tmp2 = load i32, i32* %i.addr, align 4, !dbg !14
+  store i32 %inc, ptr %j, align 4, !dbg !13
+  %tmp1 = load i32, ptr %j, align 4, !dbg !14
+  %tmp2 = load i32, ptr %i.addr, align 4, !dbg !14
   %add = add nsw i32 %tmp1, %tmp2, !dbg !14
-  store i32 %add, i32* %j, align 4, !dbg !14
-  %tmp3 = load i32, i32* %j, align 4, !dbg !15
+  store i32 %add, ptr %j, align 4, !dbg !14
+  %tmp3 = load i32, ptr %j, align 4, !dbg !15
   ret i32 %tmp3, !dbg !15
 }
 
@@ -31,7 +31,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 define i32 @main() nounwind ssp !dbg !6 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval, !dbg !22
+  store i32 0, ptr %retval, !dbg !22
   %call = call i32 @foo(i32 21), !dbg !16
   ret i32 %call, !dbg !16
 }

diff  --git a/llvm/test/DebugInfo/X86/dbg-rust-valid-enum-as-scope.ll b/llvm/test/DebugInfo/X86/dbg-rust-valid-enum-as-scope.ll
index b6a53bd4c4597..f44ca04e0fd96 100644
--- a/llvm/test/DebugInfo/X86/dbg-rust-valid-enum-as-scope.ll
+++ b/llvm/test/DebugInfo/X86/dbg-rust-valid-enum-as-scope.ll
@@ -32,11 +32,11 @@ target triple = "x86_64-apple-macosx10.7.0"
 
 ; a::E::f
 ; Function Attrs: uwtable
-define void @_ZN1a1E1f17h4fcb50ce732fb2a7E(i8* align 1 dereferenceable(1) %self) unnamed_addr #0 !dbg !13 {
+define void @_ZN1a1E1f17h4fcb50ce732fb2a7E(ptr align 1 dereferenceable(1) %self) unnamed_addr #0 !dbg !13 {
 start:
-  %self.dbg.spill = alloca i8*, align 8
-  store i8* %self, i8** %self.dbg.spill, align 8
-  call void @llvm.dbg.declare(metadata i8** %self.dbg.spill, metadata !19, metadata !DIExpression()), !dbg !21
+  %self.dbg.spill = alloca ptr, align 8
+  store ptr %self, ptr %self.dbg.spill, align 8
+  call void @llvm.dbg.declare(metadata ptr %self.dbg.spill, metadata !19, metadata !DIExpression()), !dbg !21
   ret void, !dbg !22
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dbg-subrange.ll b/llvm/test/DebugInfo/X86/dbg-subrange.ll
index f81b8047a8c1c..a889bf09e898a 100644
--- a/llvm/test/DebugInfo/X86/dbg-subrange.ll
+++ b/llvm/test/DebugInfo/X86/dbg-subrange.ll
@@ -10,7 +10,7 @@ target triple = "x86_64-apple-macosx10.7.2"
 ; Function Attrs: nounwind ssp uwtable
 define void @bar() #0 !dbg !11 {
 entry:
-  store i8 97, i8* getelementptr inbounds ([4294967296 x i8], [4294967296 x i8]* @s, i32 0, i64 0), align 1, !dbg !14
+  store i8 97, ptr @s, align 1, !dbg !14
   ret void, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dbg-val-list-dangling.ll b/llvm/test/DebugInfo/X86/dbg-val-list-dangling.ll
index e0ae16b7b901c..5292197a1caac 100644
--- a/llvm/test/DebugInfo/X86/dbg-val-list-dangling.ll
+++ b/llvm/test/DebugInfo/X86/dbg-val-list-dangling.ll
@@ -31,13 +31,13 @@ target triple = "x86_64-unknown-linux-gnu"
 
 define dso_local void @b() local_unnamed_addr !dbg !7 {
 entry:
-  call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), metadata !11, metadata !DIExpression()), !dbg !15
-  call void @llvm.dbg.value(metadata !DIArgList(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0)), metadata !14, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_stack_value)), !dbg !15
-  tail call void @a(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0)) #3, !dbg !16
+  call void @llvm.dbg.value(metadata ptr @.str, metadata !11, metadata !DIExpression()), !dbg !15
+  call void @llvm.dbg.value(metadata !DIArgList(ptr @.str), metadata !14, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_stack_value)), !dbg !15
+  tail call void @a(ptr @.str) #3, !dbg !16
   ret void, !dbg !17
 }
 
-declare !dbg !18 dso_local void @a(i8*) local_unnamed_addr
+declare !dbg !18 dso_local void @a(ptr) local_unnamed_addr
 declare void @llvm.dbg.value(metadata, metadata, metadata)
 
 

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-const-byref.ll b/llvm/test/DebugInfo/X86/dbg-value-const-byref.ll
index 945c95f99134e..5307f8ab6273f 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-const-byref.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-const-byref.ll
@@ -41,9 +41,9 @@ entry:
   call void @llvm.dbg.value(metadata i32 7, metadata !10, metadata !DIExpression()), !dbg !18
   %call1 = call i32 (...) @f1() #3, !dbg !19
   call void @llvm.dbg.value(metadata i32 %call1, metadata !10, metadata !DIExpression()), !dbg !19
-  store i32 %call1, i32* %i, align 4, !dbg !19, !tbaa !20
-  call void @llvm.dbg.value(metadata i32* %i, metadata !10, metadata !DIExpression(DW_OP_deref)), !dbg !24
-  call void @f2(i32* %i) #3, !dbg !24
+  store i32 %call1, ptr %i, align 4, !dbg !19, !tbaa !20
+  call void @llvm.dbg.value(metadata ptr %i, metadata !10, metadata !DIExpression(DW_OP_deref)), !dbg !24
+  call void @f2(ptr %i) #3, !dbg !24
   ret i32 0, !dbg !25
 }
 
@@ -51,7 +51,7 @@ declare i32 @f3(i32)
 
 declare i32 @f1(...)
 
-declare void @f2(i32*)
+declare void @f2(ptr)
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, metadata, metadata) #2

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-dag-combine.ll b/llvm/test/DebugInfo/X86/dbg-value-dag-combine.ll
index e8b177dffe4f8..710b82f53986b 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-dag-combine.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-dag-combine.ll
@@ -14,18 +14,18 @@ target triple = "i686-apple-darwin"
 
 declare <4 x i32> @__amdil_get_global_id_int()
 declare void @llvm.dbg.value(metadata, metadata, metadata)
-define void @__OpenCL_test_kernel(i32 addrspace(1)* %ip) nounwind !dbg !0 {
+define void @__OpenCL_test_kernel(ptr addrspace(1) %ip) nounwind !dbg !0 {
 entry:
-  call void @llvm.dbg.value(metadata i32 addrspace(1)* %ip, metadata !7, metadata !DIExpression()), !dbg !8
+  call void @llvm.dbg.value(metadata ptr addrspace(1) %ip, metadata !7, metadata !DIExpression()), !dbg !8
   %0 = call <4 x i32> @__amdil_get_global_id_int() nounwind
   %1 = extractelement <4 x i32> %0, i32 0
   call void @llvm.dbg.value(metadata i32 %1, metadata !9, metadata !DIExpression()), !dbg !11
   call void @llvm.dbg.value(metadata i32 0, metadata !21, metadata !DIExpression()), !dbg !14
-  %tmp2 = load i32, i32 addrspace(1)* %ip, align 4, !dbg !15
+  %tmp2 = load i32, ptr addrspace(1) %ip, align 4, !dbg !15
   %tmp3 = add i32 0, %tmp2, !dbg !15
   call void @llvm.dbg.value(metadata i32 %tmp3, metadata !13, metadata !DIExpression()), !dbg !15
-  %arrayidx = getelementptr i32, i32 addrspace(1)* %ip, i32 %1, !dbg !16
-  store i32 %tmp3, i32 addrspace(1)* %arrayidx, align 4, !dbg !16
+  %arrayidx = getelementptr i32, ptr addrspace(1) %ip, i32 %1, !dbg !16
+  store i32 %tmp3, ptr addrspace(1) %arrayidx, align 4, !dbg !16
   ret void, !dbg !17
 }
 !llvm.dbg.cu = !{!2}

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-dropped-instcombine.ll b/llvm/test/DebugInfo/X86/dbg-value-dropped-instcombine.ll
index f50ab579c58d3..afa55629dd090 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-dropped-instcombine.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-dropped-instcombine.ll
@@ -36,7 +36,7 @@ entry:
   %bumble.sroa.3.0.extract.shift = lshr i64 %bumble.coerce, 32
   %bumble.sroa.3.0.extract.trunc = trunc i64 %bumble.sroa.3.0.extract.shift to i32
   call void @llvm.dbg.value(metadata i32 %bumble.sroa.3.0.extract.trunc, metadata !18, metadata !DIExpression(DW_OP_LLVM_fragment, 32, 32)), !dbg !19
-  store i32 1, i32* @global, align 4, !dbg !20
+  store i32 1, ptr @global, align 4, !dbg !20
   call void @llvm.dbg.value(metadata i32 undef, metadata !21, metadata !DIExpression()), !dbg !19
   %retval.sroa.2.0.insert.ext = zext i32 %bumble.sroa.3.0.extract.trunc to i64, !dbg !22
   %retval.sroa.2.0.insert.shift = shl i64 %retval.sroa.2.0.insert.ext, 32, !dbg !22

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-frame-index-2.ll b/llvm/test/DebugInfo/X86/dbg-value-frame-index-2.ll
index d6cd2e961b2b2..a2df81afe7c39 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-frame-index-2.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-frame-index-2.ll
@@ -24,9 +24,9 @@ define i32 @foo() !dbg !6 {
 ; CHECK-NEXT: DBG_VALUE %[[STACKLOC]], $noreg, [[BARVAR]]
 
   %p1 = alloca i32
-  call void @llvm.dbg.value(metadata i32 *null, metadata !17, metadata !DIExpression()), !dbg !18
-  store i32 0, i32 *%p1
-  call void @llvm.dbg.value(metadata i32 *%p1, metadata !17, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr null, metadata !17, metadata !DIExpression()), !dbg !18
+  store i32 0, ptr %p1
+  call void @llvm.dbg.value(metadata ptr %p1, metadata !17, metadata !DIExpression()), !dbg !18
   br label %foo
 
 foo:
@@ -35,7 +35,7 @@ foo:
 ; CHECK:      DBG_VALUE %[[STACKLOC]], $noreg, [[BARVAR]]
 
   call void @dud()
-  call void @llvm.dbg.value(metadata i32 *%p1, metadata !17, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %p1, metadata !17, metadata !DIExpression()), !dbg !18
   br label %bar
 
 bar:
@@ -46,10 +46,10 @@ bar:
 ; CHECK-NEXT: CALL
 ; CHECK-NEXT: ADJCALLSTACKUP
 ; CHECK-NEXT: DBG_VALUE 0, $noreg, [[BARVAR]]
-  call void @llvm.dbg.value(metadata i32 *%p1, metadata !17, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %p1, metadata !17, metadata !DIExpression()), !dbg !18
   call void @dud()
-  call void @llvm.dbg.value(metadata i32 *null, metadata !17, metadata !DIExpression()), !dbg !18
-  %loaded = load i32, i32 *%p1
+  call void @llvm.dbg.value(metadata ptr null, metadata !17, metadata !DIExpression()), !dbg !18
+  %loaded = load i32, ptr %p1
   ret i32 %loaded, !dbg !19
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-frame-index.ll b/llvm/test/DebugInfo/X86/dbg-value-frame-index.ll
index d6fdada16a3b7..a6409a419df74 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-frame-index.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-frame-index.ll
@@ -8,8 +8,8 @@ entry:
   br label %while.cond
 
 while.cond:
-  call void @llvm.dbg.value(metadata i64* %end, metadata !5, metadata !6), !dbg !7
-  %call = call i1 @fn(i64* %end, i64* %end, i64* null, i8* null, i64 0, i64* null, i32* null, i8* null), !dbg !7
+  call void @llvm.dbg.value(metadata ptr %end, metadata !5, metadata !6), !dbg !7
+  %call = call i1 @fn(ptr %end, ptr %end, ptr null, ptr null, i64 0, ptr null, ptr null, ptr null), !dbg !7
   br label %while.body
 
 while.body:
@@ -28,7 +28,7 @@ while.end:
 ; Note: A previous version of this test checked for `[DW_OP_plus_uconst 8] [$rsp+0]`,
 ; which is incorrect, because it adds the stack offset after dereferencing the stack pointer.
 
-declare i1 @fn(i64*, i64*, i64*, i8*, i64, i64*, i32*, i8*)
+declare i1 @fn(ptr, ptr, ptr, ptr, i64, ptr, ptr, ptr)
 declare void @llvm.dbg.value(metadata, metadata, metadata)
 
 !llvm.dbg.cu = !{!0}

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-funcarg2.ll b/llvm/test/DebugInfo/X86/dbg-value-funcarg2.ll
index 93f8ed4942258..7e34213448a6f 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-funcarg2.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-funcarg2.ll
@@ -70,32 +70,30 @@ define dso_local i32 @f(i64 %s1.coerce0, i64 %s1.coerce1, i64 %s2.coerce0, i64 %
 entry:
   %tmp.sroa.0 = alloca i64, align 8
   %tmp.sroa.4 = alloca i64, align 8
-  call void @llvm.dbg.declare(metadata i64* %tmp.sroa.0, metadata !19, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !21
-  call void @llvm.dbg.declare(metadata i64* %tmp.sroa.4, metadata !19, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %tmp.sroa.0, metadata !19, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %tmp.sroa.4, metadata !19, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !21
   call void @llvm.dbg.value(metadata i64 %s1.coerce0, metadata !17, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !22
   call void @llvm.dbg.value(metadata i64 %s1.coerce1, metadata !17, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !22
   call void @llvm.dbg.value(metadata i64 %s2.coerce0, metadata !18, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !23
   call void @llvm.dbg.value(metadata i64 %s2.coerce1, metadata !18, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !23
-  %tmp.sroa.0.0..sroa_cast = bitcast i64* %tmp.sroa.0 to i8*, !dbg !24
-  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp.sroa.0.0..sroa_cast), !dbg !24
-  %tmp.sroa.4.0..sroa_cast = bitcast i64* %tmp.sroa.4 to i8*, !dbg !24
-  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp.sroa.4.0..sroa_cast), !dbg !24
-  store volatile i64 0, i64* %tmp.sroa.0, align 8, !dbg !21
-  store volatile i64 0, i64* %tmp.sroa.4, align 8, !dbg !21
+  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %tmp.sroa.0), !dbg !24
+  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %tmp.sroa.4), !dbg !24
+  store volatile i64 0, ptr %tmp.sroa.0, align 8, !dbg !21
+  store volatile i64 0, ptr %tmp.sroa.4, align 8, !dbg !21
   tail call void @bar(i64 %s1.coerce0, i64 %s1.coerce1, i64 %s2.coerce0, i64 %s2.coerce1, i64 0, i64 0) #4, !dbg !25
   call void @llvm.dbg.value(metadata i64 %s2.coerce0, metadata !17, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !22
   call void @llvm.dbg.value(metadata i64 %s2.coerce1, metadata !17, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !22
   %s2.coerce1.tr = trunc i64 %s2.coerce1 to i32, !dbg !26
   %conv = shl i32 %s2.coerce1.tr, 1, !dbg !26
-  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp.sroa.0.0..sroa_cast), !dbg !27
-  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp.sroa.4.0..sroa_cast), !dbg !27
+  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %tmp.sroa.0), !dbg !27
+  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %tmp.sroa.4), !dbg !27
   ret i32 %conv, !dbg !28
 }
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2
 
 declare dso_local void @bar(i64, i64, i64, i64, i64, i64) local_unnamed_addr
 

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-inlined-parameter.ll b/llvm/test/DebugInfo/X86/dbg-value-inlined-parameter.ll
index 8ac7e23c4225a..4951d813beea9 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-inlined-parameter.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-inlined-parameter.ll
@@ -43,36 +43,35 @@
 
 source_filename = "test/DebugInfo/X86/dbg-value-inlined-parameter.ll"
 
-%struct.S1 = type { float*, i32 }
+%struct.S1 = type { ptr, i32 }
 
 @p = common global %struct.S1 zeroinitializer, align 8, !dbg !0
 
 ; Function Attrs: nounwind optsize ssp
-define i32 @foo(%struct.S1* nocapture %sp, i32 %nums) #0 !dbg !15 {
+define i32 @foo(ptr nocapture %sp, i32 %nums) #0 !dbg !15 {
 entry:
-  tail call void @llvm.dbg.value(metadata %struct.S1* %sp, metadata !19, metadata !22), !dbg !23
+  tail call void @llvm.dbg.value(metadata ptr %sp, metadata !19, metadata !22), !dbg !23
   tail call void @llvm.dbg.value(metadata i32 %nums, metadata !21, metadata !22), !dbg !24
-  %tmp2 = getelementptr inbounds %struct.S1, %struct.S1* %sp, i64 0, i32 1, !dbg !25
-  store i32 %nums, i32* %tmp2, align 4, !dbg !25
-  %call = tail call float* @bar(i32 %nums) #3, !dbg !27
-  %tmp5 = getelementptr inbounds %struct.S1, %struct.S1* %sp, i64 0, i32 0, !dbg !27
-  store float* %call, float** %tmp5, align 8, !dbg !27
-  %cmp = icmp ne float* %call, null, !dbg !28
+  %tmp2 = getelementptr inbounds %struct.S1, ptr %sp, i64 0, i32 1, !dbg !25
+  store i32 %nums, ptr %tmp2, align 4, !dbg !25
+  %call = tail call ptr @bar(i32 %nums) #3, !dbg !27
+  store ptr %call, ptr %sp, align 8, !dbg !27
+  %cmp = icmp ne ptr %call, null, !dbg !28
   %cond = zext i1 %cmp to i32, !dbg !28
   ret i32 %cond, !dbg !28
 }
 
 ; Function Attrs: optsize
-declare float* @bar(i32) #1
+declare ptr @bar(i32) #1
 
 ; Function Attrs: nounwind optsize ssp
 define void @foobar() #0 !dbg !29 {
 entry:
-  tail call void @llvm.dbg.value(metadata %struct.S1* @p, metadata !19, metadata !22) #4, !dbg !32
+  tail call void @llvm.dbg.value(metadata ptr @p, metadata !19, metadata !22) #4, !dbg !32
   tail call void @llvm.dbg.value(metadata i32 1, metadata !21, metadata !22) #4, !dbg !35
-  store i32 1, i32* getelementptr inbounds (%struct.S1, %struct.S1* @p, i64 0, i32 1), align 8, !dbg !36
-  %call.i = tail call float* @bar(i32 1) #3, !dbg !37
-  store float* %call.i, float** getelementptr inbounds (%struct.S1, %struct.S1* @p, i64 0, i32 0), align 8, !dbg !37
+  store i32 1, ptr getelementptr inbounds (%struct.S1, ptr @p, i64 0, i32 1), align 8, !dbg !36
+  %call.i = tail call ptr @bar(i32 1) #3, !dbg !37
+  store ptr %call.i, ptr @p, align 8, !dbg !37
   ret void, !dbg !38
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-isel.ll b/llvm/test/DebugInfo/X86/dbg-value-isel.ll
index 946e97bad4ca3..172ac8624a36e 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-isel.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-isel.ll
@@ -4,16 +4,16 @@ target triple = "x86_64-apple-darwin10.0.0"
 ; PR 9879
 
 ; CHECK: ##DEBUG_VALUE: tid <-
-%0 = type { i8*, i8*, i8*, i8*, i32 }
+%0 = type { ptr, ptr, ptr, ptr, i32 }
 
 @sgv = internal addrspace(2) constant [1 x i8] zeroinitializer
 @fgv = internal addrspace(2) constant [1 x i8] zeroinitializer
- at lvgv = internal constant [0 x i8*] zeroinitializer
- at llvm.global.annotations = appending global [1 x %0] [%0 { i8* bitcast (void (i32 addrspace(1)*)* @__OpenCL_nbt02_kernel to i8*), i8* addrspacecast ([1 x i8] addrspace(2)* @sgv to i8*), i8* addrspacecast ([1 x i8] addrspace(2)* @fgv to i8*), i8* bitcast ([0 x i8*]* @lvgv to i8*), i32 0 }], section "llvm.metadata"
+ at lvgv = internal constant [0 x ptr] zeroinitializer
+ at llvm.global.annotations = appending global [1 x %0] [%0 { ptr @__OpenCL_nbt02_kernel, ptr addrspacecast (ptr addrspace(2) @sgv to ptr), ptr addrspacecast (ptr addrspace(2) @fgv to ptr), ptr @lvgv, i32 0 }], section "llvm.metadata"
 
-define void @__OpenCL_nbt02_kernel(i32 addrspace(1)* %ip) nounwind !dbg !0 {
+define void @__OpenCL_nbt02_kernel(ptr addrspace(1) %ip) nounwind !dbg !0 {
 entry:
-  call void @llvm.dbg.value(metadata i32 addrspace(1)* %ip, metadata !8, metadata !DIExpression()), !dbg !9
+  call void @llvm.dbg.value(metadata ptr addrspace(1) %ip, metadata !8, metadata !DIExpression()), !dbg !9
   %0 = call <4 x i32> @__amdil_get_local_id_int() nounwind
   %1 = extractelement <4 x i32> %0, i32 0
   br label %2
@@ -61,7 +61,7 @@ get_local_size.exit:                              ; preds = %18
   call void @llvm.dbg.value(metadata i32 %20, metadata !15, metadata !DIExpression()), !dbg !16
   %tmp5 = add i32 %6, %13, !dbg !17
   %tmp7 = add i32 %tmp5, %20, !dbg !17
-  store i32 %tmp7, i32 addrspace(1)* %ip, align 4, !dbg !17
+  store i32 %tmp7, ptr addrspace(1) %ip, align 4, !dbg !17
   br label %return, !dbg !17
 
 return:                                           ; preds = %get_local_size.exit

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-list-dag-combine.ll b/llvm/test/DebugInfo/X86/dbg-value-list-dag-combine.ll
index 0670adfc0a183..a09372b421311 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-list-dag-combine.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-list-dag-combine.ll
@@ -21,18 +21,18 @@ target triple = "i686-apple-darwin"
 
 declare <4 x i32> @__amdil_get_global_id_int()
 declare void @llvm.dbg.value(metadata, metadata, metadata)
-define void @__OpenCL_test_kernel(i32 addrspace(1)* %ip) nounwind !dbg !0 {
+define void @__OpenCL_test_kernel(ptr addrspace(1) %ip) nounwind !dbg !0 {
 entry:
-  call void @llvm.dbg.value(metadata !DIArgList(i32 addrspace(1)* %ip), metadata !7, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_stack_value)), !dbg !8
+  call void @llvm.dbg.value(metadata !DIArgList(ptr addrspace(1) %ip), metadata !7, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_stack_value)), !dbg !8
   %0 = call <4 x i32> @__amdil_get_global_id_int() nounwind
   %1 = extractelement <4 x i32> %0, i32 0
   call void @llvm.dbg.value(metadata !DIArgList(i32 %1), metadata !9, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_stack_value)), !dbg !11
   call void @llvm.dbg.value(metadata !DIArgList(i32 0), metadata !21, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_stack_value)), !dbg !14
-  %tmp2 = load i32, i32 addrspace(1)* %ip, align 4, !dbg !15
+  %tmp2 = load i32, ptr addrspace(1) %ip, align 4, !dbg !15
   %tmp3 = add i32 0, %tmp2, !dbg !15
   call void @llvm.dbg.value(metadata !DIArgList(i32 %tmp3), metadata !13, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_stack_value)), !dbg !15
-  %arrayidx = getelementptr i32, i32 addrspace(1)* %ip, i32 %1, !dbg !16
-  store i32 %tmp3, i32 addrspace(1)* %arrayidx, align 4, !dbg !16
+  %arrayidx = getelementptr i32, ptr addrspace(1) %ip, i32 %1, !dbg !16
+  store i32 %tmp3, ptr addrspace(1) %arrayidx, align 4, !dbg !16
   ret void, !dbg !17
 }
 !llvm.dbg.cu = !{!2}

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-location.ll b/llvm/test/DebugInfo/X86/dbg-value-location.ll
index fed11f2876989..307f9c3ee34d7 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-location.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-location.ll
@@ -16,10 +16,10 @@ target triple = "x86_64-apple-darwin10.0.0"
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 
-define i32 @foo(i32 %dev, i64 %cmd, i8* %data, i32 %data2) nounwind optsize ssp !dbg !0 {
+define i32 @foo(i32 %dev, i64 %cmd, ptr %data, i32 %data2) nounwind optsize ssp !dbg !0 {
 entry:
   call void @llvm.dbg.value(metadata i32 %dev, metadata !12, metadata !DIExpression()), !dbg !13
-  %tmp.i = load i32, i32* @dfm, align 4, !dbg !14
+  %tmp.i = load i32, ptr @dfm, align 4, !dbg !14
   %cmp.i = icmp eq i32 %tmp.i, 0, !dbg !14
   br i1 %cmp.i, label %if.else, label %if.end.i, !dbg !14
 
@@ -42,7 +42,7 @@ if.else:                                          ; preds = %entry
   ret i32 0
 }
 
-declare hidden fastcc i32 @bar(i32, i32* nocapture) nounwind optsize ssp
+declare hidden fastcc i32 @bar(i32, ptr nocapture) nounwind optsize ssp
 declare hidden fastcc i32 @bar2(i32) nounwind optsize ssp
 declare hidden fastcc i32 @bar3(i32) nounwind optsize ssp
 declare void @llvm.dbg.value(metadata, metadata, metadata) nounwind readnone

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-range.ll b/llvm/test/DebugInfo/X86/dbg-value-range.ll
index 9159d2aac780c..0d49b5eeefd1b 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-range.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-range.ll
@@ -2,11 +2,10 @@
 
 %struct.a = type { i32 }
 
-define i32 @bar(%struct.a* nocapture %b) nounwind ssp !dbg !0 {
+define i32 @bar(ptr nocapture %b) nounwind ssp !dbg !0 {
 entry:
-  tail call void @llvm.dbg.value(metadata %struct.a* %b, metadata !6, metadata !DIExpression()), !dbg !13
-  %tmp1 = getelementptr inbounds %struct.a, %struct.a* %b, i64 0, i32 0, !dbg !14
-  %tmp2 = load i32, i32* %tmp1, align 4, !dbg !14
+  tail call void @llvm.dbg.value(metadata ptr %b, metadata !6, metadata !DIExpression()), !dbg !13
+  %tmp2 = load i32, ptr %b, align 4, !dbg !14
   tail call void @llvm.dbg.value(metadata i32 %tmp2, metadata !11, metadata !DIExpression()), !dbg !14
   %call = tail call i32 (...) @foo(i32 %tmp2) nounwind , !dbg !18
   %add = add nsw i32 %tmp2, 1, !dbg !19

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll b/llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll
index f334f0cd8eee6..f18b5a16e11a4 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-regmask-clobber.ll
@@ -36,24 +36,24 @@ target triple = "x86_64-pc-windows-msvc18.0.0"
 @x = common global i32 0, align 4, !dbg !0
 
 ; Function Attrs: nounwind uwtable
-define i32 @main(i32 %argc, i8** nocapture readnone %argv) #0 !dbg !12 {
+define i32 @main(i32 %argc, ptr nocapture readnone %argv) #0 !dbg !12 {
 entry:
-  tail call void @llvm.dbg.value(metadata i8** %argv, metadata !19, metadata !21), !dbg !22
+  tail call void @llvm.dbg.value(metadata ptr %argv, metadata !19, metadata !21), !dbg !22
   tail call void @llvm.dbg.value(metadata i32 %argc, metadata !20, metadata !21), !dbg !23
-  store volatile i32 1, i32* @x, align 4, !dbg !24, !tbaa !25
+  store volatile i32 1, ptr @x, align 4, !dbg !24, !tbaa !25
   tail call void @clobber() #2, !dbg !29
-  store volatile i32 2, i32* @x, align 4, !dbg !30, !tbaa !25
-  %0 = load volatile i32, i32* @x, align 4, !dbg !31, !tbaa !25
+  store volatile i32 2, ptr @x, align 4, !dbg !30, !tbaa !25
+  %0 = load volatile i32, ptr @x, align 4, !dbg !31, !tbaa !25
   %tobool = icmp eq i32 %0, 0, !dbg !31
   br i1 %tobool, label %if.else, label %if.then, !dbg !33
 
 if.then:                                          ; preds = %entry
-  store volatile i32 3, i32* @x, align 4, !dbg !34, !tbaa !25
+  store volatile i32 3, ptr @x, align 4, !dbg !34, !tbaa !25
   br label %if.end, !dbg !36
 
 if.else:                                          ; preds = %entry
 
-  store volatile i32 4, i32* @x, align 4, !dbg !37, !tbaa !25
+  store volatile i32 4, ptr @x, align 4, !dbg !37, !tbaa !25
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-terminator.ll b/llvm/test/DebugInfo/X86/dbg-value-terminator.ll
index 5a7f73fe9490a..4cea19435b673 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-terminator.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-terminator.ll
@@ -10,9 +10,9 @@
 
 %a = type { i32, i32 }
 
-define hidden fastcc %a* @test() #1 !dbg !1 {
+define hidden fastcc ptr @test() #1 !dbg !1 {
 entry:
-  %0 = icmp eq %a* undef, null, !dbg !12
+  %0 = icmp eq ptr undef, null, !dbg !12
   br i1 %0, label %"14", label %return, !dbg !12
 
 "14":                                             ; preds = %"8"
@@ -86,24 +86,23 @@ VEC_edge_base_index.exit7.i:                      ; preds = %"3.i5.i"
   br i1 undef, label %may_unswitch_on.exit, label %"44.i", !dbg !12
 
 "44.i":                                           ; preds = %"42.i"
-  %2 = load %a*, %a** undef, align 8, !dbg !12
-  %3 = bitcast %a* %2 to %a*, !dbg !12
-  call void @llvm.dbg.value(metadata %a* %3, metadata !6, metadata !DIExpression(DW_OP_deref)), !dbg !12
+  %2 = load ptr, ptr undef, align 8, !dbg !12
+  call void @llvm.dbg.value(metadata ptr %2, metadata !6, metadata !DIExpression(DW_OP_deref)), !dbg !12
   br label %may_unswitch_on.exit, !dbg !12
 
 "45.i":                                           ; preds = %"38.i"
   unreachable
 
 may_unswitch_on.exit:                             ; preds = %"44.i", %"42.i", %"41.i", %"39.i", %"23.i", %"21.i", %VEC_edge_base_index.exit7.i, %VEC_edge_base_index.exit.i, %"10.i", %"6.i", %"21"
-  %4 = phi %a* [ %3, %"44.i" ], [ null, %"6.i" ], [ null, %"10.i" ], [ null, %VEC_edge_base_index.exit7.i ], [ null, %VEC_edge_base_index.exit.i ], [ null, %"21.i" ], [ null, %"23.i" ], [ null, %"39.i" ], [ null, %"42.i" ], [ null, %"41.i" ], [ null, %"21" ]
+  %3 = phi ptr [ %2, %"44.i" ], [ null, %"6.i" ], [ null, %"10.i" ], [ null, %VEC_edge_base_index.exit7.i ], [ null, %VEC_edge_base_index.exit.i ], [ null, %"21.i" ], [ null, %"23.i" ], [ null, %"39.i" ], [ null, %"42.i" ], [ null, %"41.i" ], [ null, %"21" ]
   br label %return
 
 "25":                                             ; preds = %"14"
   unreachable
 
 "return":
-  %result = phi %a* [ null, %entry ], [ %4, %may_unswitch_on.exit ]
-  ret %a* %result, !dbg !12
+  %result = phi ptr [ null, %entry ], [ %3, %may_unswitch_on.exit ]
+  ret ptr %result, !dbg !12
 }
 
 attributes #0 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/dbg-value-transfer-order.ll b/llvm/test/DebugInfo/X86/dbg-value-transfer-order.ll
index 37eaffdc14612..1261bc3a1cf6f 100644
--- a/llvm/test/DebugInfo/X86/dbg-value-transfer-order.ll
+++ b/llvm/test/DebugInfo/X86/dbg-value-transfer-order.ll
@@ -7,7 +7,7 @@
 ;   while (cell) {
 ;     unsigned bit_offset = cell_offset ? __builtin_ctz(cell) : 32;
 ;     unsigned bit_mask = 1U << bit_offset;
-;     unsigned slot = (cell_offset + bit_offset) << /*log2(sizeof(void*))*/ 3;
+;     unsigned slot = (cell_offset + bit_offset) << /*log2(sizeof(ptr))*/ 3;
 ;     cell ^= bit_mask + page_start_[slot];
 ;   }
 ; }
@@ -50,9 +50,9 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 declare i32 @if_then()
 
 ; Function Attrs: noinline nounwind readonly uwtable
-define void @f(i32 %cell_offset, i32* nocapture %page_start_) local_unnamed_addr #0 !dbg !31 {
+define void @f(i32 %cell_offset, ptr nocapture %page_start_) local_unnamed_addr #0 !dbg !31 {
 entry:
-  %0 = load i32, i32* %page_start_, align 4, !dbg !45
+  %0 = load i32, ptr %page_start_, align 4, !dbg !45
   %tobool14 = icmp eq i32 %0, 0, !dbg !47
   br i1 %tobool14, label %while.end, label %while.body, !dbg !47
 
@@ -72,8 +72,8 @@ if.end:
   %add = add i32 %cond, %cell_offset, !dbg !54
   %shl2 = shl i32 %add, 3, !dbg !55
   %idxprom = zext i32 %shl2 to i64, !dbg !57
-  %arrayidx3 = getelementptr inbounds i32, i32* %page_start_, i64 %idxprom, !dbg !57
-  %2 = load i32, i32* %arrayidx3, align 4, !dbg !57
+  %arrayidx3 = getelementptr inbounds i32, ptr %page_start_, i64 %idxprom, !dbg !57
+  %2 = load i32, ptr %arrayidx3, align 4, !dbg !57
   %add4 = add i32 %2, %shl, !dbg !58
   %xor = xor i32 %add4, %cell.015, !dbg !59
   tail call void @llvm.dbg.value(metadata i32 %xor, metadata !38, metadata !DIExpression()), !dbg !46

diff  --git a/llvm/test/DebugInfo/X86/dbg-vector-size.ll b/llvm/test/DebugInfo/X86/dbg-vector-size.ll
index a64b18b73d701..98768cf976d49 100644
--- a/llvm/test/DebugInfo/X86/dbg-vector-size.ll
+++ b/llvm/test/DebugInfo/X86/dbg-vector-size.ll
@@ -9,14 +9,13 @@ target triple = "x86_64-unknown-linux-gnu"
 
 define dso_local void @test() !dbg !9 {
   %1 = alloca <6 x float>, align 32
-  call void @llvm.dbg.declare(metadata <6 x float>* %1, metadata !13, metadata !DIExpression()), !dbg !19
-  %2 = bitcast <6 x float>* %1 to i8*, !dbg !20
-  call void @foo(i8* %2), !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %1, metadata !13, metadata !DIExpression()), !dbg !19
+  call void @foo(ptr %1), !dbg !21
   ret void, !dbg !22
 }
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata)
-declare dso_local void @foo(i8*)
+declare dso_local void @foo(ptr)
 
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!5, !6, !7}

diff  --git a/llvm/test/DebugInfo/X86/dbg_value_direct.ll b/llvm/test/DebugInfo/X86/dbg_value_direct.ll
index daaca2ffb600c..4ac25414f2a72 100644
--- a/llvm/test/DebugInfo/X86/dbg_value_direct.ll
+++ b/llvm/test/DebugInfo/X86/dbg_value_direct.ll
@@ -19,41 +19,41 @@ target triple = "x86_64-unknown-linux-gnu"
 
 @__asan_mapping_offset = linkonce_odr constant i64 2147450880
 @__asan_mapping_scale = linkonce_odr constant i64 3
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @asan.module_ctor, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @asan.module_ctor, ptr null }]
 @___asan_gen_ = private unnamed_addr constant [16 x i8] c"1 32 4 5 .addr \00", align 1
 
 ; Function Attrs: sanitize_address uwtable
-define void @_Z4funci(%struct.A* noalias sret(%struct.A) %agg.result, i32) #0 "stack-protector-buffer-size"="1" !dbg !4 {
+define void @_Z4funci(ptr noalias sret(%struct.A) %agg.result, i32) #0 "stack-protector-buffer-size"="1" !dbg !4 {
 entry:
   %MyAlloca = alloca [96 x i8], align 32
-  %1 = ptrtoint [96 x i8]* %MyAlloca to i64
+  %1 = ptrtoint ptr %MyAlloca to i64
   %2 = add i64 %1, 32
-  %3 = inttoptr i64 %2 to i32*
-  %4 = inttoptr i64 %1 to i64*
-  store i64 1102416563, i64* %4
+  %3 = inttoptr i64 %2 to ptr
+  %4 = inttoptr i64 %1 to ptr
+  store i64 1102416563, ptr %4
   %5 = add i64 %1, 8
-  %6 = inttoptr i64 %5 to i64*
-  store i64 ptrtoint ([16 x i8]* @___asan_gen_ to i64), i64* %6
+  %6 = inttoptr i64 %5 to ptr
+  store i64 ptrtoint (ptr @___asan_gen_ to i64), ptr %6
   %7 = add i64 %1, 16
-  %8 = inttoptr i64 %7 to i64*
-  store i64 ptrtoint (void (%struct.A*, i32)* @_Z4funci to i64), i64* %8
+  %8 = inttoptr i64 %7 to ptr
+  store i64 ptrtoint (ptr @_Z4funci to i64), ptr %8
   %9 = lshr i64 %1, 3
   %10 = add i64 %9, 2147450880
-  %11 = inttoptr i64 %10 to i32*
-  store i32 -235802127, i32* %11
+  %11 = inttoptr i64 %10 to ptr
+  store i32 -235802127, ptr %11
   %12 = add i64 %10, 4
-  %13 = inttoptr i64 %12 to i32*
-  store i32 -185273340, i32* %13
+  %13 = inttoptr i64 %12 to ptr
+  store i32 -185273340, ptr %13
   %14 = add i64 %10, 8
-  %15 = inttoptr i64 %14 to i32*
-  store i32 -202116109, i32* %15
-  %16 = ptrtoint i32* %3 to i64
+  %15 = inttoptr i64 %14 to ptr
+  store i32 -202116109, ptr %15
+  %16 = ptrtoint ptr %3 to i64
   %17 = lshr i64 %16, 3
   %18 = add i64 %17, 2147450880
-  %19 = inttoptr i64 %18 to i8*
-  %20 = load i8, i8* %19
+  %19 = inttoptr i64 %18 to ptr
+  %20 = load i8, ptr %19
   %21 = icmp ne i8 %20, 0
-  call void @llvm.dbg.declare(metadata i32* %3, metadata !23, metadata !28), !dbg !DILocation(scope: !4)
+  call void @llvm.dbg.declare(metadata ptr %3, metadata !23, metadata !28), !dbg !DILocation(scope: !4)
   br i1 %21, label %22, label %28
 
 ; <label>:22                                      ; preds = %entry
@@ -69,30 +69,30 @@ entry:
   unreachable
 
 ; <label>:28                                      ; preds = %22, %entry
-  store i32 %0, i32* %3, align 4
-  call void @llvm.dbg.declare(metadata %struct.A* %agg.result, metadata !24, metadata !DIExpression()), !dbg !25
-  call void @_ZN1AC1Ev(%struct.A* %agg.result), !dbg !25
-  store i64 1172321806, i64* %4, !dbg !26
-  %29 = inttoptr i64 %10 to i32*, !dbg !26
-  store i32 0, i32* %29, !dbg !26
+  store i32 %0, ptr %3, align 4
+  call void @llvm.dbg.declare(metadata ptr %agg.result, metadata !24, metadata !DIExpression()), !dbg !25
+  call void @_ZN1AC1Ev(ptr %agg.result), !dbg !25
+  store i64 1172321806, ptr %4, !dbg !26
+  %29 = inttoptr i64 %10 to ptr, !dbg !26
+  store i32 0, ptr %29, !dbg !26
   %30 = add i64 %10, 4, !dbg !26
-  %31 = inttoptr i64 %30 to i32*, !dbg !26
-  store i32 0, i32* %31, !dbg !26
+  %31 = inttoptr i64 %30 to ptr, !dbg !26
+  store i32 0, ptr %31, !dbg !26
   %32 = add i64 %10, 8, !dbg !26
-  %33 = inttoptr i64 %32 to i32*, !dbg !26
-  store i32 0, i32* %33, !dbg !26
+  %33 = inttoptr i64 %32 to ptr, !dbg !26
+  store i32 0, ptr %33, !dbg !26
   ret void, !dbg !26
 }
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare void @_ZN1AC1Ev(%struct.A*) #2
+declare void @_ZN1AC1Ev(ptr) #2
 
 define internal void @asan.module_ctor()  "stack-protector-buffer-size"="1" {
   call void @__asan_init_v3()
-  %1 = load volatile i64, i64* @__asan_mapping_offset
-  %2 = load volatile i64, i64* @__asan_mapping_scale
+  %1 = load volatile i64, ptr @__asan_mapping_offset
+  %2 = load volatile i64, ptr @__asan_mapping_scale
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll b/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
index dc8c418117c75..a67d0d149e17e 100644
--- a/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
+++ b/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
@@ -8,9 +8,9 @@ target triple = "x86_64-unknown-linux-gnu"
 ; Based on the following reproducer:
 ;
 ; #include <stdint.h>
-; extern void callee(uint8_t, uint16_t, uint32_t, void *);
+; extern void callee(uint8_t, uint16_t, uint32_t, ptr);
 ; int caller() {
-;   callee(0, 0, 0, (void *)0);
+;   callee(0, 0, 0, (ptr)0);
 ;   return 1;
 ; }
 
@@ -33,11 +33,11 @@ target triple = "x86_64-unknown-linux-gnu"
 ; Function Attrs: nounwind uwtable
 define i32 @caller() #0 !dbg !15 {
 entry:
-  tail call void @callee(i8 zeroext 0, i16 zeroext 0, i32 0, i8* null), !dbg !19
+  tail call void @callee(i8 zeroext 0, i16 zeroext 0, i32 0, ptr null), !dbg !19
   ret i32 1, !dbg !20
 }
 
-declare !dbg !5 void @callee(i8 zeroext, i16 zeroext, i32, i8*)
+declare !dbg !5 void @callee(i8 zeroext, i16 zeroext, i32, ptr)
 
 attributes #0 = { nounwind uwtable }
 

diff  --git a/llvm/test/DebugInfo/X86/dead-store-elimination-marks-undef.ll b/llvm/test/DebugInfo/X86/dead-store-elimination-marks-undef.ll
index 3bd65ef835da5..1a7db7923b734 100644
--- a/llvm/test/DebugInfo/X86/dead-store-elimination-marks-undef.ll
+++ b/llvm/test/DebugInfo/X86/dead-store-elimination-marks-undef.ll
@@ -7,10 +7,10 @@
 
 define dso_local i32 @main() local_unnamed_addr !dbg !7 {
   %1 = alloca i32, align 4
-  %2 = load i32, i32* @b, align 1, !dbg !13
+  %2 = load i32, ptr @b, align 1, !dbg !13
   ; CHECK: call void @llvm.dbg.value(metadata i32 undef
   call void @llvm.dbg.value(metadata i32 %2, metadata !12, metadata !DIExpression()), !dbg !13
-  store i32 %2, i32* %1, align 4, !dbg !13
+  store i32 %2, ptr %1, align 4, !dbg !13
   ret i32 0, !dbg !13
 }
 

diff  --git a/llvm/test/DebugInfo/X86/debug-info-auto-return.ll b/llvm/test/DebugInfo/X86/debug-info-auto-return.ll
index 09486c2fd248d..a75c79788be63 100644
--- a/llvm/test/DebugInfo/X86/debug-info-auto-return.ll
+++ b/llvm/test/DebugInfo/X86/debug-info-auto-return.ll
@@ -29,12 +29,12 @@ target triple = "x86_64-unknown-linux-gnu"
 
 %struct.myClass = type { i8 }
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local double @_ZN7myClass7findMaxEv(%struct.myClass* %this) #0 align 2 !dbg !7 {
+define dso_local double @_ZN7myClass7findMaxEv(ptr %this) #0 align 2 !dbg !7 {
 entry:
-  %this.addr = alloca %struct.myClass*, align 8
-  store %struct.myClass* %this, %struct.myClass** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.myClass** %this.addr, metadata !17, metadata !DIExpression()), !dbg !19
-  %this1 = load %struct.myClass*, %struct.myClass** %this.addr, align 8
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !17, metadata !DIExpression()), !dbg !19
+  %this1 = load ptr, ptr %this.addr, align 8
   ret double 0.000000e+00, !dbg !20
 }
 ; Function Attrs: nounwind readnone speculatable willreturn

diff  --git a/llvm/test/DebugInfo/X86/debug-info-block-captured-self.ll b/llvm/test/DebugInfo/X86/debug-info-block-captured-self.ll
index 544239e1e1232..d96ea5190b864 100644
--- a/llvm/test/DebugInfo/X86/debug-info-block-captured-self.ll
+++ b/llvm/test/DebugInfo/X86/debug-info-block-captured-self.ll
@@ -64,17 +64,15 @@
 %0 = type opaque
 %struct.__block_descriptor = type { i64, i64 }
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
-define internal void @"__24-[Main initWithContext:]_block_invoke"(i8* %.block_descriptor, i8* %obj) #0 !dbg !38 {
-  %block = bitcast i8* %.block_descriptor to <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>*, !dbg !84
-  %block.captured-self = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %block, i32 0, i32 5, !dbg !84
-  call void @llvm.dbg.declare(metadata <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %block, metadata !86, metadata !110), !dbg !87
+define internal void @"__24-[Main initWithContext:]_block_invoke"(ptr %.block_descriptor, ptr %obj) #0 !dbg !38 {
+  %block.captured-self = getelementptr inbounds <{ ptr, i32, i32, ptr, ptr, ptr }>, ptr %.block_descriptor, i32 0, i32 5, !dbg !84
+  call void @llvm.dbg.declare(metadata ptr %.block_descriptor, metadata !86, metadata !110), !dbg !87
   ret void, !dbg !87
 }
 
-define internal void @"__24-[Main initWithContext:]_block_invoke_2"(i8* %.block_descriptor, i8* %object) #0 !dbg !42 {
-  %block = bitcast i8* %.block_descriptor to <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>*, !dbg !103
-  %block.captured-self = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %block, i32 0, i32 5, !dbg !103
-  call void @llvm.dbg.declare(metadata <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %block, metadata !105, metadata !109), !dbg !106
+define internal void @"__24-[Main initWithContext:]_block_invoke_2"(ptr %.block_descriptor, ptr %object) #0 !dbg !42 {
+  %block.captured-self = getelementptr inbounds <{ ptr, i32, i32, ptr, ptr, ptr }>, ptr %.block_descriptor, i32 0, i32 5, !dbg !103
+  call void @llvm.dbg.declare(metadata ptr %.block_descriptor, metadata !105, metadata !109), !dbg !106
   ret void, !dbg !106
 }
 

diff  --git a/llvm/test/DebugInfo/X86/debug-info-producer-with-flags.ll b/llvm/test/DebugInfo/X86/debug-info-producer-with-flags.ll
index d055cc6a2f38d..4c97ff533f0bd 100644
--- a/llvm/test/DebugInfo/X86/debug-info-producer-with-flags.ll
+++ b/llvm/test/DebugInfo/X86/debug-info-producer-with-flags.ll
@@ -27,7 +27,7 @@ target triple = "x86_64-unknown-linux-gnu"
 define i32 @main() !dbg !6 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval, align 4
+  store i32 0, ptr %retval, align 4
   ret i32 0, !dbg !10
 }
 

diff  --git a/llvm/test/DebugInfo/X86/debug-info-static-member.ll b/llvm/test/DebugInfo/X86/debug-info-static-member.ll
index 5e2f46686bd6c..0af67eb017f59 100644
--- a/llvm/test/DebugInfo/X86/debug-info-static-member.ll
+++ b/llvm/test/DebugInfo/X86/debug-info-static-member.ll
@@ -49,11 +49,10 @@ define i32 @main() #0 !dbg !26 {
 entry:
   %retval = alloca i32, align 4
   %instance_C = alloca %class.C, align 4
-  store i32 0, i32* %retval
-  call void @llvm.dbg.declare(metadata %class.C* %instance_C, metadata !29, metadata !30), !dbg !31
-  %d = getelementptr inbounds %class.C, %class.C* %instance_C, i32 0, i32 0, !dbg !32
-  store i32 8, i32* %d, align 4, !dbg !32
-  %0 = load i32, i32* @_ZN1C1cE, align 4, !dbg !33
+  store i32 0, ptr %retval
+  call void @llvm.dbg.declare(metadata ptr %instance_C, metadata !29, metadata !30), !dbg !31
+  store i32 8, ptr %instance_C, align 4, !dbg !32
+  %0 = load i32, ptr @_ZN1C1cE, align 4, !dbg !33
   ret i32 %0, !dbg !33
 }
 

diff  --git a/llvm/test/DebugInfo/X86/debug-info-template-align.ll b/llvm/test/DebugInfo/X86/debug-info-template-align.ll
index 160d88cd0cc94..35ad36e17b69d 100644
--- a/llvm/test/DebugInfo/X86/debug-info-template-align.ll
+++ b/llvm/test/DebugInfo/X86/debug-info-template-align.ll
@@ -30,7 +30,7 @@ target triple = "x86_64-unknown-linux-gnu"
 define dso_local i32 @main() #0 !dbg !7 {
 entry:
   %newChar = alloca i8, align 64
-  call void @llvm.dbg.declare(metadata i8* %newChar, metadata !12, metadata !DIExpression()), !dbg !15
+  call void @llvm.dbg.declare(metadata ptr %newChar, metadata !12, metadata !DIExpression()), !dbg !15
   ret i32 0, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/X86/debug-info-template-parameter.ll b/llvm/test/DebugInfo/X86/debug-info-template-parameter.ll
index 45dd09aabcd6d..10f453e1f21f4 100644
--- a/llvm/test/DebugInfo/X86/debug-info-template-parameter.ll
+++ b/llvm/test/DebugInfo/X86/debug-info-template-parameter.ll
@@ -48,9 +48,9 @@ entry:
   %retval = alloca i32, align 4
   %f1 = alloca %class.foo, align 1
   %f2 = alloca %class.foo.0, align 1
-  store i32 0, i32* %retval, align 4
-  call void @llvm.dbg.declare(metadata %class.foo* %f1, metadata !11, metadata !DIExpression()), !dbg !16
-  call void @llvm.dbg.declare(metadata %class.foo.0* %f2, metadata !17, metadata !DIExpression()), !dbg !23
+  store i32 0, ptr %retval, align 4
+  call void @llvm.dbg.declare(metadata ptr %f1, metadata !11, metadata !DIExpression()), !dbg !16
+  call void @llvm.dbg.declare(metadata ptr %f2, metadata !17, metadata !DIExpression()), !dbg !23
   ret i32 0, !dbg !24
 }
 ; Function Attrs: nounwind readnone speculatable willreturn

diff  --git a/llvm/test/DebugInfo/X86/debug-names-split-dwarf.ll b/llvm/test/DebugInfo/X86/debug-names-split-dwarf.ll
index 66520395dadf0..b033daf2e9195 100644
--- a/llvm/test/DebugInfo/X86/debug-names-split-dwarf.ll
+++ b/llvm/test/DebugInfo/X86/debug-names-split-dwarf.ll
@@ -21,7 +21,7 @@
 ; CHECK-NEXT: Tag: DW_TAG_variable
 ; CHECK-NEXT: DW_IDX_die_offset: 0x{{[0-9a-f]*}}
 
- at foobar = common dso_local global i8* null, align 8, !dbg !0
+ at foobar = common dso_local global ptr null, align 8, !dbg !0
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!7, !8, !9}

diff  --git a/llvm/test/DebugInfo/X86/debug-ranges-offset.ll b/llvm/test/DebugInfo/X86/debug-ranges-offset.ll
index c3bd3963dc90e..b071225134640 100644
--- a/llvm/test/DebugInfo/X86/debug-ranges-offset.ll
+++ b/llvm/test/DebugInfo/X86/debug-ranges-offset.ll
@@ -6,7 +6,7 @@
 ; low_pc for the compile unit.
 ; CHECK-NOT: .rela.debug_ranges
 
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__msan_init, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @__msan_init, ptr null }]
 @str = private unnamed_addr constant [4 x i8] c"zzz\00"
 @__msan_retval_tls = external thread_local(initialexec) global [8 x i64]
 @__msan_retval_origin_tls = external thread_local(initialexec) global i32
@@ -21,25 +21,24 @@
 ; Function Attrs: sanitize_memory uwtable
 define void @_Z1fv() #0 !dbg !4 {
 entry:
-  %p = alloca i32*, align 8
-  %0 = ptrtoint i32** %p to i64, !dbg !19
+  %p = alloca ptr, align 8
+  %0 = ptrtoint ptr %p to i64, !dbg !19
   %1 = and i64 %0, -70368744177672, !dbg !19
-  %2 = inttoptr i64 %1 to i64*, !dbg !19
-  store i64 -1, i64* %2, align 8, !dbg !19
-  store i64 0, i64* getelementptr inbounds ([1000 x i64], [1000 x i64]* @__msan_param_tls, i64 0, i64 0), align 8, !dbg !19
-  store i64 0, i64* getelementptr inbounds ([8 x i64], [8 x i64]* @__msan_retval_tls, i64 0, i64 0), align 8, !dbg !19
-  %call = call i8* @_Znwm(i64 4) #4, !dbg !19
-  %_msret = load i64, i64* getelementptr inbounds ([8 x i64], [8 x i64]* @__msan_retval_tls, i64 0, i64 0), align 8, !dbg !19
-  %3 = bitcast i8* %call to i32*, !dbg !19
-  tail call void @llvm.dbg.value(metadata i32* %3, metadata !9, metadata !DIExpression()), !dbg !19
-  %4 = inttoptr i64 %1 to i64*, !dbg !19
-  store i64 %_msret, i64* %4, align 8, !dbg !19
-  store volatile i32* %3, i32** %p, align 8, !dbg !19
-  tail call void @llvm.dbg.value(metadata i32** %p, metadata !9, metadata !DIExpression()), !dbg !19
-  %p.0.p.0. = load volatile i32*, i32** %p, align 8, !dbg !20
-  %_msld = load i64, i64* %4, align 8, !dbg !20
+  %2 = inttoptr i64 %1 to ptr, !dbg !19
+  store i64 -1, ptr %2, align 8, !dbg !19
+  store i64 0, ptr @__msan_param_tls, align 8, !dbg !19
+  store i64 0, ptr @__msan_retval_tls, align 8, !dbg !19
+  %call = call ptr @_Znwm(i64 4) #4, !dbg !19
+  %_msret = load i64, ptr @__msan_retval_tls, align 8, !dbg !19
+  tail call void @llvm.dbg.value(metadata ptr %call, metadata !9, metadata !DIExpression()), !dbg !19
+  %3 = inttoptr i64 %1 to ptr, !dbg !19
+  store i64 %_msret, ptr %3, align 8, !dbg !19
+  store volatile ptr %call, ptr %p, align 8, !dbg !19
+  tail call void @llvm.dbg.value(metadata ptr %p, metadata !9, metadata !DIExpression()), !dbg !19
+  %p.0.p.0. = load volatile ptr, ptr %p, align 8, !dbg !20
+  %_msld = load i64, ptr %3, align 8, !dbg !20
   %_mscmp = icmp eq i64 %_msld, 0, !dbg !20
-  br i1 %_mscmp, label %6, label %5, !dbg !20, !prof !22
+  br i1 %_mscmp, label %5, label %4, !dbg !20, !prof !22
 
 ; <label>:5                                       ; preds = %entry
   call void @__msan_warning_noreturn(), !dbg !20
@@ -47,64 +46,62 @@ entry:
   unreachable, !dbg !20
 
 ; <label>:6                                       ; preds = %entry
-  %7 = load i32, i32* %p.0.p.0., align 4, !dbg !20, !tbaa !23
-  %8 = ptrtoint i32* %p.0.p.0. to i64, !dbg !20
-  %9 = and i64 %8, -70368744177665, !dbg !20
-  %10 = inttoptr i64 %9 to i32*, !dbg !20
-  %_msld2 = load i32, i32* %10, align 4, !dbg !20
-  %11 = icmp ne i32 %_msld2, 0, !dbg !20
-  %12 = xor i32 %_msld2, -1, !dbg !20
-  %13 = and i32 %7, %12, !dbg !20
-  %14 = icmp eq i32 %13, 0, !dbg !20
-  %_msprop_icmp = and i1 %11, %14, !dbg !20
-  br i1 %_msprop_icmp, label %15, label %16, !dbg !20, !prof !27
-
-; <label>:15                                      ; preds = %6
+  %6 = load i32, ptr %p.0.p.0., align 4, !dbg !20, !tbaa !23
+  %7 = ptrtoint ptr %p.0.p.0. to i64, !dbg !20
+  %8 = and i64 %7, -70368744177665, !dbg !20
+  %9 = inttoptr i64 %8 to ptr, !dbg !20
+  %_msld2 = load i32, ptr %9, align 4, !dbg !20
+  %10 = icmp ne i32 %_msld2, 0, !dbg !20
+  %11 = xor i32 %_msld2, -1, !dbg !20
+  %12 = and i32 %6, %11, !dbg !20
+  %13 = icmp eq i32 %12, 0, !dbg !20
+  %_msprop_icmp = and i1 %10, %13, !dbg !20
+  br i1 %_msprop_icmp, label %14, label %15, !dbg !20, !prof !27
+
+; <label>:15                                      ; preds = %5
   call void @__msan_warning_noreturn(), !dbg !20
   call void asm sideeffect "", ""() #3, !dbg !20
   unreachable, !dbg !20
 
-; <label>:16                                      ; preds = %6
-  %tobool = icmp eq i32 %7, 0, !dbg !20
+; <label>:16                                      ; preds = %5
+  %tobool = icmp eq i32 %6, 0, !dbg !20
   br i1 %tobool, label %if.end, label %if.then, !dbg !20
 
-if.then:                                          ; preds = %16
-  store i64 0, i64* getelementptr inbounds ([1000 x i64], [1000 x i64]* @__msan_param_tls, i64 0, i64 0), align 8, !dbg !28
-  store i32 0, i32* bitcast ([8 x i64]* @__msan_retval_tls to i32*), align 8, !dbg !28
-  %puts = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str, i64 0, i64 0)), !dbg !28
+if.then:                                          ; preds = %15
+  store i64 0, ptr @__msan_param_tls, align 8, !dbg !28
+  store i32 0, ptr @__msan_retval_tls, align 8, !dbg !28
+  %puts = call i32 @puts(ptr @str), !dbg !28
   br label %if.end, !dbg !28
 
-if.end:                                           ; preds = %16, %if.then
+if.end:                                           ; preds = %15, %if.then
   ret void, !dbg !29
 }
 
 ; Function Attrs: nobuiltin
-declare i8* @_Znwm(i64) #1
+declare ptr @_Znwm(i64) #1
 
 ; Function Attrs: sanitize_memory uwtable
 define i32 @main() #0 !dbg !13 {
 entry:
-  %p.i = alloca i32*, align 8
-  %0 = ptrtoint i32** %p.i to i64, !dbg !30
+  %p.i = alloca ptr, align 8
+  %0 = ptrtoint ptr %p.i to i64, !dbg !30
   %1 = and i64 %0, -70368744177672, !dbg !30
-  %2 = inttoptr i64 %1 to i64*, !dbg !30
-  store i64 -1, i64* %2, align 8, !dbg !30
-  %p.i.0..sroa_cast = bitcast i32** %p.i to i8*, !dbg !30
-  call void @llvm.lifetime.start(i64 8, i8* %p.i.0..sroa_cast), !dbg !30
-  store i64 0, i64* getelementptr inbounds ([1000 x i64], [1000 x i64]* @__msan_param_tls, i64 0, i64 0), align 8, !dbg !30
-  store i64 0, i64* getelementptr inbounds ([8 x i64], [8 x i64]* @__msan_retval_tls, i64 0, i64 0), align 8, !dbg !30
-  %call.i = call i8* @_Znwm(i64 4) #4, !dbg !30
-  %_msret = load i64, i64* getelementptr inbounds ([8 x i64], [8 x i64]* @__msan_retval_tls, i64 0, i64 0), align 8, !dbg !30
-  %3 = bitcast i8* %call.i to i32*, !dbg !30
-  tail call void @llvm.dbg.value(metadata i32* %3, metadata !32, metadata !DIExpression()), !dbg !30
-  %4 = inttoptr i64 %1 to i64*, !dbg !30
-  store i64 %_msret, i64* %4, align 8, !dbg !30
-  store volatile i32* %3, i32** %p.i, align 8, !dbg !30
-  tail call void @llvm.dbg.value(metadata i32** %p.i, metadata !32, metadata !DIExpression()), !dbg !30
-  %p.i.0.p.0.p.0..i = load volatile i32*, i32** %p.i, align 8, !dbg !33
-  %_msld = load i64, i64* %4, align 8, !dbg !33
+  %2 = inttoptr i64 %1 to ptr, !dbg !30
+  store i64 -1, ptr %2, align 8, !dbg !30
+  call void @llvm.lifetime.start(i64 8, ptr %p.i), !dbg !30
+  store i64 0, ptr @__msan_param_tls, align 8, !dbg !30
+  store i64 0, ptr @__msan_retval_tls, align 8, !dbg !30
+  %call.i = call ptr @_Znwm(i64 4) #4, !dbg !30
+  %_msret = load i64, ptr @__msan_retval_tls, align 8, !dbg !30
+  tail call void @llvm.dbg.value(metadata ptr %call.i, metadata !32, metadata !DIExpression()), !dbg !30
+  %3 = inttoptr i64 %1 to ptr, !dbg !30
+  store i64 %_msret, ptr %3, align 8, !dbg !30
+  store volatile ptr %call.i, ptr %p.i, align 8, !dbg !30
+  tail call void @llvm.dbg.value(metadata ptr %p.i, metadata !32, metadata !DIExpression()), !dbg !30
+  %p.i.0.p.0.p.0..i = load volatile ptr, ptr %p.i, align 8, !dbg !33
+  %_msld = load i64, ptr %3, align 8, !dbg !33
   %_mscmp = icmp eq i64 %_msld, 0, !dbg !33
-  br i1 %_mscmp, label %6, label %5, !dbg !33, !prof !22
+  br i1 %_mscmp, label %5, label %4, !dbg !33, !prof !22
 
 ; <label>:5                                       ; preds = %entry
   call void @__msan_warning_noreturn(), !dbg !33
@@ -112,36 +109,36 @@ entry:
   unreachable, !dbg !33
 
 ; <label>:6                                       ; preds = %entry
-  %7 = load i32, i32* %p.i.0.p.0.p.0..i, align 4, !dbg !33, !tbaa !23
-  %8 = ptrtoint i32* %p.i.0.p.0.p.0..i to i64, !dbg !33
-  %9 = and i64 %8, -70368744177665, !dbg !33
-  %10 = inttoptr i64 %9 to i32*, !dbg !33
-  %_msld2 = load i32, i32* %10, align 4, !dbg !33
-  %11 = icmp ne i32 %_msld2, 0, !dbg !33
-  %12 = xor i32 %_msld2, -1, !dbg !33
-  %13 = and i32 %7, %12, !dbg !33
-  %14 = icmp eq i32 %13, 0, !dbg !33
-  %_msprop_icmp = and i1 %11, %14, !dbg !33
-  br i1 %_msprop_icmp, label %15, label %16, !dbg !33, !prof !27
-
-; <label>:15                                      ; preds = %6
+  %6 = load i32, ptr %p.i.0.p.0.p.0..i, align 4, !dbg !33, !tbaa !23
+  %7 = ptrtoint ptr %p.i.0.p.0.p.0..i to i64, !dbg !33
+  %8 = and i64 %7, -70368744177665, !dbg !33
+  %9 = inttoptr i64 %8 to ptr, !dbg !33
+  %_msld2 = load i32, ptr %9, align 4, !dbg !33
+  %10 = icmp ne i32 %_msld2, 0, !dbg !33
+  %11 = xor i32 %_msld2, -1, !dbg !33
+  %12 = and i32 %6, %11, !dbg !33
+  %13 = icmp eq i32 %12, 0, !dbg !33
+  %_msprop_icmp = and i1 %10, %13, !dbg !33
+  br i1 %_msprop_icmp, label %14, label %15, !dbg !33, !prof !27
+
+; <label>:15                                      ; preds = %5
   call void @__msan_warning_noreturn(), !dbg !33
   call void asm sideeffect "", ""() #3, !dbg !33
   unreachable, !dbg !33
 
-; <label>:16                                      ; preds = %6
-  %tobool.i = icmp eq i32 %7, 0, !dbg !33
+; <label>:16                                      ; preds = %5
+  %tobool.i = icmp eq i32 %6, 0, !dbg !33
   br i1 %tobool.i, label %_Z1fv.exit, label %if.then.i, !dbg !33
 
-if.then.i:                                        ; preds = %16
-  store i64 0, i64* getelementptr inbounds ([1000 x i64], [1000 x i64]* @__msan_param_tls, i64 0, i64 0), align 8, !dbg !34
-  store i32 0, i32* bitcast ([8 x i64]* @__msan_retval_tls to i32*), align 8, !dbg !34
-  %puts.i = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str, i64 0, i64 0)), !dbg !34
+if.then.i:                                        ; preds = %15
+  store i64 0, ptr @__msan_param_tls, align 8, !dbg !34
+  store i32 0, ptr @__msan_retval_tls, align 8, !dbg !34
+  %puts.i = call i32 @puts(ptr @str), !dbg !34
   br label %_Z1fv.exit, !dbg !34
 
-_Z1fv.exit:                                       ; preds = %16, %if.then.i
-  call void @llvm.lifetime.end(i64 8, i8* %p.i.0..sroa_cast), !dbg !35
-  store i32 0, i32* bitcast ([8 x i64]* @__msan_retval_tls to i32*), align 8, !dbg !36
+_Z1fv.exit:                                       ; preds = %15, %if.then.i
+  call void @llvm.lifetime.end(i64 8, ptr %p.i), !dbg !35
+  store i32 0, ptr @__msan_retval_tls, align 8, !dbg !36
   ret i32 0, !dbg !36
 }
 
@@ -151,46 +148,46 @@ declare void @__msan_init()
 declare void @llvm.dbg.value(metadata, metadata, metadata) #2
 
 ; Function Attrs: nounwind
-declare i32 @puts(i8* nocapture readonly) #3
+declare i32 @puts(ptr nocapture readonly) #3
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #3
+declare void @llvm.lifetime.start(i64, ptr nocapture) #3
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #3
+declare void @llvm.lifetime.end(i64, ptr nocapture) #3
 
 declare void @__msan_warning_noreturn()
 
 declare void @__msan_maybe_warning_1(i8, i32)
 
-declare void @__msan_maybe_store_origin_1(i8, i8*, i32)
+declare void @__msan_maybe_store_origin_1(i8, ptr, i32)
 
 declare void @__msan_maybe_warning_2(i16, i32)
 
-declare void @__msan_maybe_store_origin_2(i16, i8*, i32)
+declare void @__msan_maybe_store_origin_2(i16, ptr, i32)
 
 declare void @__msan_maybe_warning_4(i32, i32)
 
-declare void @__msan_maybe_store_origin_4(i32, i8*, i32)
+declare void @__msan_maybe_store_origin_4(i32, ptr, i32)
 
 declare void @__msan_maybe_warning_8(i64, i32)
 
-declare void @__msan_maybe_store_origin_8(i64, i8*, i32)
+declare void @__msan_maybe_store_origin_8(i64, ptr, i32)
 
-declare void @__msan_set_alloca_origin4(i8*, i64, i8*, i64)
+declare void @__msan_set_alloca_origin4(ptr, i64, ptr, i64)
 
-declare void @__msan_poison_stack(i8*, i64)
+declare void @__msan_poison_stack(ptr, i64)
 
 declare i32 @__msan_chain_origin(i32)
 
-declare i8* @__msan_memmove(i8*, i8*, i64)
+declare ptr @__msan_memmove(ptr, ptr, i64)
 
-declare i8* @__msan_memcpy(i8*, i8*, i64)
+declare ptr @__msan_memcpy(ptr, ptr, i64)
 
-declare i8* @__msan_memset(i8*, i32, i64)
+declare ptr @__msan_memset(ptr, i32, i64)
 
 ; Function Attrs: nounwind
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) #3
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) #3
 
 attributes #0 = { sanitize_memory uwtable "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nobuiltin "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }

diff  --git a/llvm/test/DebugInfo/X86/debugger-tune.ll b/llvm/test/DebugInfo/X86/debugger-tune.ll
index b5df5d8175c9a..39359359d64dc 100644
--- a/llvm/test/DebugInfo/X86/debugger-tune.ll
+++ b/llvm/test/DebugInfo/X86/debugger-tune.ll
@@ -32,8 +32,8 @@ define void @_Z3funv() local_unnamed_addr #0 !dbg !11 {
 }
 
 ; Function Attrs: norecurse uwtable
-define weak_odr hidden i32* @_ZTW3var() local_unnamed_addr #1 {
-  ret i32* @var
+define weak_odr hidden ptr @_ZTW3var() local_unnamed_addr #1 {
+  ret ptr @var
 }
 
 attributes #0 = { norecurse nounwind readnone uwtable }

diff  --git a/llvm/test/DebugInfo/X86/decl-derived-member.ll b/llvm/test/DebugInfo/X86/decl-derived-member.ll
index 2d5ca1a87f9b5..8d32d3c3ada91 100644
--- a/llvm/test/DebugInfo/X86/decl-derived-member.ll
+++ b/llvm/test/DebugInfo/X86/decl-derived-member.ll
@@ -21,7 +21,7 @@
 source_filename = "test/DebugInfo/X86/decl-derived-member.ll"
 
 %struct.foo = type { %struct.base }
-%struct.base = type { i32 (...)** }
+%struct.base = type { ptr }
 
 $_ZN3fooC2Ev = comdat any
 
@@ -31,59 +31,56 @@ $_ZN4baseC2Ev = comdat any
 
 @f = global %struct.foo zeroinitializer, align 8, !dbg !0
 @__dso_handle = external global i8
- at _ZTV4base = external unnamed_addr constant [4 x i8*]
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_decl_derived_member.cpp, i8* null }]
+ at _ZTV4base = external unnamed_addr constant [4 x ptr]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_decl_derived_member.cpp, ptr null }]
 
 define internal void @__cxx_global_var_init() section ".text.startup" !dbg !15 {
 entry:
-  call void @_ZN3fooC2Ev(%struct.foo* @f) #2, !dbg !18
-  %0 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%struct.foo*)* @_ZN3fooD2Ev to void (i8*)*), i8* bitcast (%struct.foo* @f to i8*), i8* @__dso_handle) #2, !dbg !18
+  call void @_ZN3fooC2Ev(ptr @f) #2, !dbg !18
+  %0 = call i32 @__cxa_atexit(ptr @_ZN3fooD2Ev, ptr @f, ptr @__dso_handle) #2, !dbg !18
   ret void, !dbg !18
 }
 
 ; Function Attrs: inlinehint nounwind uwtable
-define linkonce_odr void @_ZN3fooC2Ev(%struct.foo* %this) unnamed_addr #0 comdat align 2 !dbg !19 {
+define linkonce_odr void @_ZN3fooC2Ev(ptr %this) unnamed_addr #0 comdat align 2 !dbg !19 {
 entry:
-  %this.addr = alloca %struct.foo*, align 8
-  store %struct.foo* %this, %struct.foo** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.foo** %this.addr, metadata !24, metadata !26), !dbg !27
-  %this1 = load %struct.foo*, %struct.foo** %this.addr
-  %b = getelementptr inbounds %struct.foo, %struct.foo* %this1, i32 0, i32 0, !dbg !28
-  call void @_ZN4baseC2Ev(%struct.base* %b) #2, !dbg !28
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !24, metadata !26), !dbg !27
+  %this1 = load ptr, ptr %this.addr
+  call void @_ZN4baseC2Ev(ptr %this1) #2, !dbg !28
   ret void, !dbg !28
 }
 
 ; Function Attrs: inlinehint uwtable
-define linkonce_odr void @_ZN3fooD2Ev(%struct.foo* %this) unnamed_addr #1 comdat align 2 !dbg !29 {
+define linkonce_odr void @_ZN3fooD2Ev(ptr %this) unnamed_addr #1 comdat align 2 !dbg !29 {
 entry:
-  %this.addr = alloca %struct.foo*, align 8
-  store %struct.foo* %this, %struct.foo** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.foo** %this.addr, metadata !31, metadata !26), !dbg !32
-  %this1 = load %struct.foo*, %struct.foo** %this.addr
-  %b = getelementptr inbounds %struct.foo, %struct.foo* %this1, i32 0, i32 0, !dbg !33
-  call void @_ZN4baseD1Ev(%struct.base* %b), !dbg !33
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !31, metadata !26), !dbg !32
+  %this1 = load ptr, ptr %this.addr
+  call void @_ZN4baseD1Ev(ptr %this1), !dbg !33
   ret void, !dbg !35
 }
 
 ; Function Attrs: nounwind
-declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*) #2
+declare i32 @__cxa_atexit(ptr, ptr, ptr) #2
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #3
 
 ; Function Attrs: inlinehint nounwind uwtable
-define linkonce_odr void @_ZN4baseC2Ev(%struct.base* %this) unnamed_addr #0 comdat align 2 !dbg !36 {
+define linkonce_odr void @_ZN4baseC2Ev(ptr %this) unnamed_addr #0 comdat align 2 !dbg !36 {
 entry:
-  %this.addr = alloca %struct.base*, align 8
-  store %struct.base* %this, %struct.base** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.base** %this.addr, metadata !41, metadata !26), !dbg !43
-  %this1 = load %struct.base*, %struct.base** %this.addr
-  %0 = bitcast %struct.base* %this1 to i32 (...)***, !dbg !44
-  store i32 (...)** bitcast (i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @_ZTV4base, i64 0, i64 2) to i32 (...)**), i32 (...)*** %0, !dbg !44
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !41, metadata !26), !dbg !43
+  %this1 = load ptr, ptr %this.addr
+  store ptr getelementptr inbounds ([4 x ptr], ptr @_ZTV4base, i64 0, i64 2), ptr %this1, !dbg !44
   ret void, !dbg !44
 }
 
-declare void @_ZN4baseD1Ev(%struct.base*) #4
+declare void @_ZN4baseD1Ev(ptr) #4
 
 define internal void @_GLOBAL__sub_I_decl_derived_member.cpp() section ".text.startup" {
 entry:

diff  --git a/llvm/test/DebugInfo/X86/deleted-bit-piece.ll b/llvm/test/DebugInfo/X86/deleted-bit-piece.ll
index e123c22a6f9f5..fb07e0a26171a 100644
--- a/llvm/test/DebugInfo/X86/deleted-bit-piece.ll
+++ b/llvm/test/DebugInfo/X86/deleted-bit-piece.ll
@@ -14,7 +14,7 @@ entry:
   br i1 undef, label %exit, label %bb
 
 bb:                                               ; preds = %entry
-  call void @llvm.dbg.value(metadata i8* undef, metadata !15, metadata !16), !dbg !17
+  call void @llvm.dbg.value(metadata ptr undef, metadata !15, metadata !16), !dbg !17
   br label %exit
 
 exit:                                             ; preds = %bb, %entry

diff  --git a/llvm/test/DebugInfo/X86/dimodule-external-fortran.ll b/llvm/test/DebugInfo/X86/dimodule-external-fortran.ll
index a2892c5aef211..a8266fc4bb1ce 100644
--- a/llvm/test/DebugInfo/X86/dimodule-external-fortran.ll
+++ b/llvm/test/DebugInfo/X86/dimodule-external-fortran.ll
@@ -47,18 +47,18 @@ define void @MAIN__() #0 !dbg !2 {
 alloca_0:
   %"var$1" = alloca [8 x i64], align 8
   %"use_external_module_$X" = alloca float, align 8
-  call void @llvm.dbg.declare(metadata float* %"use_external_module_$X", metadata !13, metadata !DIExpression()), !dbg !17
-  %func_result = call i32 @for_set_reentrancy(i32* @0), !dbg !18
-  %external_module_mp_dummy__fetch = load float, float* @external_module_mp_dummy_, align 1, !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %"use_external_module_$X", metadata !13, metadata !DIExpression()), !dbg !17
+  %func_result = call i32 @for_set_reentrancy(ptr @0), !dbg !18
+  %external_module_mp_dummy__fetch = load float, ptr @external_module_mp_dummy_, align 1, !dbg !19
   %add = fadd reassoc ninf nsz arcp contract afn float 2.000000e+00, %external_module_mp_dummy__fetch, !dbg !20
-  store float %add, float* %"use_external_module_$X", align 1, !dbg !19
+  store float %add, ptr %"use_external_module_$X", align 1, !dbg !19
   ret void, !dbg !21
 }
 
 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare i32 @for_set_reentrancy(i32*)
+declare i32 @for_set_reentrancy(ptr)
 
 attributes #0 = { noinline nounwind uwtable "intel-lang"="fortran" "min-legal-vector-width"="0" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" }
 attributes #1 = { nofree nosync nounwind readnone speculatable willreturn }

diff  --git a/llvm/test/DebugInfo/X86/discriminator.ll b/llvm/test/DebugInfo/X86/discriminator.ll
index c44c5d99c3a79..e8f892a4e2b6a 100644
--- a/llvm/test/DebugInfo/X86/discriminator.ll
+++ b/llvm/test/DebugInfo/X86/discriminator.ll
@@ -15,23 +15,23 @@ define i32 @foo(i32 %i) #0 !dbg !4 {
 entry:
   %retval = alloca i32, align 4
   %i.addr = alloca i32, align 4
-  store i32 %i, i32* %i.addr, align 4
-  %0 = load i32, i32* %i.addr, align 4, !dbg !10
+  store i32 %i, ptr %i.addr, align 4
+  %0 = load i32, ptr %i.addr, align 4, !dbg !10
   %cmp = icmp slt i32 %0, 10, !dbg !10
   br i1 %cmp, label %if.then, label %if.end, !dbg !10
 
 if.then:                                          ; preds = %entry
-  %1 = load i32, i32* %i.addr, align 4, !dbg !14
+  %1 = load i32, ptr %i.addr, align 4, !dbg !14
   %sub = sub nsw i32 %1, 1, !dbg !14
-  store i32 %sub, i32* %retval, !dbg !14
+  store i32 %sub, ptr %retval, !dbg !14
   br label %return, !dbg !14
 
 if.end:                                           ; preds = %entry
-  store i32 0, i32* %retval, !dbg !12
+  store i32 0, ptr %retval, !dbg !12
   br label %return, !dbg !12
 
 return:                                           ; preds = %if.end, %if.then
-  %2 = load i32, i32* %retval, !dbg !13
+  %2 = load i32, ptr %retval, !dbg !13
   ret i32 %2, !dbg !13
 }
 

diff  --git a/llvm/test/DebugInfo/X86/discriminator3.ll b/llvm/test/DebugInfo/X86/discriminator3.ll
index 66d2cfee2e349..f3e8b81b0ea2c 100644
--- a/llvm/test/DebugInfo/X86/discriminator3.ll
+++ b/llvm/test/DebugInfo/X86/discriminator3.ll
@@ -14,14 +14,14 @@
 ; Function Attrs: uwtable
 define void @_Z3bazi(i32) #0 !dbg !6 {
   %2 = alloca i32, align 4
-  store i32 %0, i32* %2, align 4
-  call void @llvm.dbg.declare(metadata i32* %2, metadata !10, metadata !11), !dbg !12
-  %3 = load i32, i32* %2, align 4, !dbg !13
+  store i32 %0, ptr %2, align 4
+  call void @llvm.dbg.declare(metadata ptr %2, metadata !10, metadata !11), !dbg !12
+  %3 = load i32, ptr %2, align 4, !dbg !13
   %4 = icmp ne i32 %3, 0, !dbg !13
   br i1 %4, label %5, label %8, !dbg !15
 
 ; <label>:5:                                      ; preds = %1
-  %6 = load i32, i32* %2, align 4, !dbg !16
+  %6 = load i32, ptr %2, align 4, !dbg !16
   %7 = add nsw i32 %6, 1, !dbg !19
   call void @_Z3fooi(i32 %7), !dbg !20
   br label %8, !dbg !21

diff  --git a/llvm/test/DebugInfo/X86/distringtype.ll b/llvm/test/DebugInfo/X86/distringtype.ll
index 5fd8c94f41922..80ec7d628a0ee 100644
--- a/llvm/test/DebugInfo/X86/distringtype.ll
+++ b/llvm/test/DebugInfo/X86/distringtype.ll
@@ -38,11 +38,11 @@ source_filename = "distring.f90"
 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-%"QNCA_a0$i8*$rank0$" = type { i8*, i64, i64, i64, i64, i64 }
+%"QNCA_a0$ptr$rank0$" = type { ptr, i64, i64, i64, i64, i64 }
 
 @0 = internal unnamed_addr constant [7 x i8] c"Goodbye"
 @1 = internal unnamed_addr constant [5 x i8] c"Hello"
-@"assumedlength_$DEFERRED" = internal global %"QNCA_a0$i8*$rank0$" zeroinitializer, !dbg !0
+@"assumedlength_$DEFERRED" = internal global %"QNCA_a0$ptr$rank0$" zeroinitializer, !dbg !0
 @2 = internal unnamed_addr constant i32 2
 
 ; Function Attrs: noinline nounwind uwtable
@@ -50,11 +50,11 @@ define void @MAIN__() #0 !dbg !2 {
 alloca_0:
   %"var$1" = alloca [8 x i64], align 8
   %"var$2" = alloca i64, align 8
-  %strlit = load [7 x i8], [7 x i8]* @0, align 1
-  %strlit1 = load [5 x i8], [5 x i8]* @1, align 1
-  %func_result = call i32 @for_set_reentrancy(i32* @2), !dbg !12
-  %val_fetch = load i64, i64* getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 1), align 1, !dbg !13
-  %val_fetch4 = load i64, i64* getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
+  %strlit = load [7 x i8], ptr @0, align 1
+  %strlit1 = load [5 x i8], ptr @1, align 1
+  %func_result = call i32 @for_set_reentrancy(ptr @2), !dbg !12
+  %val_fetch = load i64, ptr getelementptr inbounds (%"QNCA_a0$ptr$rank0$", ptr @"assumedlength_$DEFERRED", i32 0, i32 1), align 1, !dbg !13
+  %val_fetch4 = load i64, ptr getelementptr inbounds (%"QNCA_a0$ptr$rank0$", ptr @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
   %and = and i64 %val_fetch4, 256, !dbg !13
   %lshr = lshr i64 %and, 8, !dbg !13
   %shl = shl i64 %lshr, 8, !dbg !13
@@ -64,15 +64,15 @@ alloca_0:
   %and7 = and i64 %or, -1030792151041, !dbg !13
   %shl8 = shl i64 %lshr6, 36, !dbg !13
   %or9 = or i64 %and7, %shl8, !dbg !13
-  store i64 %or9, i64* getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
-  store i64 10, i64* getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 1), align 1, !dbg !13
-  store i64 0, i64* getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 4), align 1, !dbg !13
-  store i64 0, i64* getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 2), align 1, !dbg !13
-  %val_fetch10 = load i64, i64* getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
-  %val_fetch11 = load i64, i64* getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
+  store i64 %or9, ptr getelementptr inbounds (%"QNCA_a0$ptr$rank0$", ptr @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
+  store i64 10, ptr getelementptr inbounds (%"QNCA_a0$ptr$rank0$", ptr @"assumedlength_$DEFERRED", i32 0, i32 1), align 1, !dbg !13
+  store i64 0, ptr getelementptr inbounds (%"QNCA_a0$ptr$rank0$", ptr @"assumedlength_$DEFERRED", i32 0, i32 4), align 1, !dbg !13
+  store i64 0, ptr getelementptr inbounds (%"QNCA_a0$ptr$rank0$", ptr @"assumedlength_$DEFERRED", i32 0, i32 2), align 1, !dbg !13
+  %val_fetch10 = load i64, ptr getelementptr inbounds (%"QNCA_a0$ptr$rank0$", ptr @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
+  %val_fetch11 = load i64, ptr getelementptr inbounds (%"QNCA_a0$ptr$rank0$", ptr @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
   %and12 = and i64 %val_fetch11, -68451041281, !dbg !13
   %or13 = or i64 %and12, 1073741824, !dbg !13
-  store i64 %or13, i64* getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
+  store i64 %or13, ptr getelementptr inbounds (%"QNCA_a0$ptr$rank0$", ptr @"assumedlength_$DEFERRED", i32 0, i32 3), align 1, !dbg !13
   %and14 = and i64 %val_fetch10, 1, !dbg !13
   %shl15 = shl i64 %and14, 1, !dbg !13
   %int_zext = trunc i64 %shl15 to i32, !dbg !13
@@ -98,46 +98,43 @@ alloca_0:
   %or35 = or i32 %and32, %int_zext34, !dbg !13
   %and36 = and i32 %or35, -2031617, !dbg !13
   %or37 = or i32 %and36, 262144, !dbg !13
-  %func_result3 = call i32 @for_alloc_allocatable(i64 10, i8** getelementptr inbounds (%"QNCA_a0$i8*$rank0$", %"QNCA_a0$i8*$rank0$"* @"assumedlength_$DEFERRED", i32 0, i32 0), i32 %or37), !dbg !13
-  call void @assumedlength_IP_sub_(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @1, i32 0, i32 0), i64 5), !dbg !14
-  call void @assumedlength_IP_sub_(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @0, i32 0, i32 0), i64 7), !dbg !15
+  %func_result3 = call i32 @for_alloc_allocatable(i64 10, ptr @"assumedlength_$DEFERRED", i32 %or37), !dbg !13
+  call void @assumedlength_IP_sub_(ptr @1, i64 5), !dbg !14
+  call void @assumedlength_IP_sub_(ptr @0, i64 7), !dbg !15
   ret void, !dbg !16
 }
 
 ; Function Attrs: noinline nounwind uwtable
-define void @assumedlength_IP_sub_(i8* noalias nocapture readonly %STRING, i64 %"STRING.len$val") #0 !dbg !17 {
+define void @assumedlength_IP_sub_(ptr noalias nocapture readonly %STRING, i64 %"STRING.len$val") #0 !dbg !17 {
 alloca_1:
   %"var$3" = alloca [8 x i64], align 8
   %STRING.len = alloca i64, align 8, !dbg !23
   %"var$4" = alloca i32, align 4, !dbg !23
   %"(&)val$" = alloca [4 x i8], align 1, !dbg !23
-  %argblock = alloca { i64, i8* }, align 8, !dbg !23
-  call void @llvm.dbg.declare(metadata i64* %STRING.len, metadata !19, metadata !DIExpression()), !dbg !23
-  call void @llvm.dbg.declare(metadata i8* %STRING, metadata !21, metadata !DIExpression()), !dbg !24
-  store i64 %"STRING.len$val", i64* %STRING.len, align 8
-  %strlit = load [7 x i8], [7 x i8]* @0, align 1, !dbg !25
-  %strlit1 = load [5 x i8], [5 x i8]* @1, align 1, !dbg !25
-  %STRING.len_fetch = load i64, i64* %STRING.len, align 1, !dbg !26
-  store [4 x i8] c"8\04\01\00", [4 x i8]* %"(&)val$", align 1, !dbg !26
-  %BLKFIELD_ = getelementptr inbounds { i64, i8* }, { i64, i8* }* %argblock, i32 0, i32 0, !dbg !26
-  store i64 %STRING.len_fetch, i64* %BLKFIELD_, align 1, !dbg !26
-  %BLKFIELD_3 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %argblock, i32 0, i32 1, !dbg !26
-  store i8* %STRING, i8** %BLKFIELD_3, align 1, !dbg !26
-  %"(i8*)var$3$" = bitcast [8 x i64]* %"var$3" to i8*, !dbg !26
-  %"(i8*)(&)val$$" = bitcast [4 x i8]* %"(&)val$" to i8*, !dbg !26
-  %"(i8*)argblock$" = bitcast { i64, i8* }* %argblock to i8*, !dbg !26
-  %func_result = call i32 (i8*, i32, i64, i8*, i8*, ...) @for_write_seq_lis(i8* %"(i8*)var$3$", i32 -1, i64 1239157112576, i8* %"(i8*)(&)val$$", i8* %"(i8*)argblock$"), !dbg !26
+  %argblock = alloca { i64, ptr }, align 8, !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %STRING.len, metadata !19, metadata !DIExpression()), !dbg !23
+  call void @llvm.dbg.declare(metadata ptr %STRING, metadata !21, metadata !DIExpression()), !dbg !24
+  store i64 %"STRING.len$val", ptr %STRING.len, align 8
+  %strlit = load [7 x i8], ptr @0, align 1, !dbg !25
+  %strlit1 = load [5 x i8], ptr @1, align 1, !dbg !25
+  %STRING.len_fetch = load i64, ptr %STRING.len, align 1, !dbg !26
+  store [4 x i8] c"8\04\01\00", ptr %"(&)val$", align 1, !dbg !26
+  %BLKFIELD_ = getelementptr inbounds { i64, ptr }, ptr %argblock, i32 0, i32 0, !dbg !26
+  store i64 %STRING.len_fetch, ptr %BLKFIELD_, align 1, !dbg !26
+  %BLKFIELD_3 = getelementptr inbounds { i64, ptr }, ptr %argblock, i32 0, i32 1, !dbg !26
+  store ptr %STRING, ptr %BLKFIELD_3, align 1, !dbg !26
+  %func_result = call i32 (ptr, i32, i64, ptr, ptr, ...) @for_write_seq_lis(ptr %"var$3", i32 -1, i64 1239157112576, ptr %"(&)val$", ptr %argblock), !dbg !26
   ret void, !dbg !27
 }
 
-declare i32 @for_set_reentrancy(i32*)
+declare i32 @for_set_reentrancy(ptr)
 
-declare i32 @for_alloc_allocatable(i64, i8**, i32)
+declare i32 @for_alloc_allocatable(i64, ptr, i32)
 
 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare i32 @for_write_seq_lis(i8*, i32, i64, i8*, i8*, ...)
+declare i32 @for_write_seq_lis(ptr, i32, i64, ptr, ptr, ...)
 
 attributes #0 = { noinline nounwind uwtable "intel-lang"="fortran" "min-legal-vector-width"="0" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" }
 attributes #1 = { nofree nosync nounwind readnone speculatable willreturn }

diff  --git a/llvm/test/DebugInfo/X86/disubprogram-trampoline.ll b/llvm/test/DebugInfo/X86/disubprogram-trampoline.ll
index 05a146177c9c2..69f11615ef77c 100644
--- a/llvm/test/DebugInfo/X86/disubprogram-trampoline.ll
+++ b/llvm/test/DebugInfo/X86/disubprogram-trampoline.ll
@@ -14,9 +14,9 @@ source_filename = "main.f"
 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define internal void @sub1_.t0p(float* %arg0) #0 !dbg !23 {
+define internal void @sub1_.t0p(ptr %arg0) #0 !dbg !23 {
 wrap_start11:
-  call void (...) @sub1_(float* %arg0), !dbg !25
+  call void (...) @sub1_(ptr %arg0), !dbg !25
   ret void, !dbg !25
 }
 

diff  --git a/llvm/test/DebugInfo/X86/double-declare.ll b/llvm/test/DebugInfo/X86/double-declare.ll
index 303d86353b710..6f273b142f998 100644
--- a/llvm/test/DebugInfo/X86/double-declare.ll
+++ b/llvm/test/DebugInfo/X86/double-declare.ll
@@ -8,17 +8,17 @@
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata)
 
-define void @f(i32* byval(i32) %p, i1 %c) !dbg !5 {
+define void @f(ptr byval(i32) %p, i1 %c) !dbg !5 {
   br i1 %c, label %x, label %y
 
 x:
-  call void @llvm.dbg.declare(metadata i32* %p, metadata !10, metadata !DIExpression()), !dbg !12
-  store i32 42, i32* @g, !dbg !12
+  call void @llvm.dbg.declare(metadata ptr %p, metadata !10, metadata !DIExpression()), !dbg !12
+  store i32 42, ptr @g, !dbg !12
   br label %done
 
 y:
-  call void @llvm.dbg.declare(metadata i32* %p, metadata !10, metadata !DIExpression()), !dbg !12
-  store i32 42, i32* @h, !dbg !12
+  call void @llvm.dbg.declare(metadata ptr %p, metadata !10, metadata !DIExpression()), !dbg !12
+  store i32 42, ptr @h, !dbg !12
   br label %done
 
 done:

diff  --git a/llvm/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll b/llvm/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll
index c6e3c64093b49..da0d813922669 100644
--- a/llvm/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll
+++ b/llvm/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll
@@ -45,7 +45,7 @@ entry:
   %call = tail call i32 @_Z3fooi(i32 2), !dbg !23
   %call1 = tail call i32 @_Z4foo2i(i32 1), !dbg !23
   %add = add nsw i32 %call1, %call, !dbg !23
-  %0 = load i32, i32* @global, align 4, !dbg !23, !tbaa !24
+  %0 = load i32, ptr @global, align 4, !dbg !23, !tbaa !24
   %add2 = add nsw i32 %add, %0, !dbg !23
   ret i32 %add2, !dbg !23
 }

diff  --git a/llvm/test/DebugInfo/X86/dwarf-aranges.ll b/llvm/test/DebugInfo/X86/dwarf-aranges.ll
index 5358a30c6a06a..0eeeccaf224dd 100644
--- a/llvm/test/DebugInfo/X86/dwarf-aranges.ll
+++ b/llvm/test/DebugInfo/X86/dwarf-aranges.ll
@@ -48,12 +48,12 @@ target triple = "x86_64-unknown-linux-gnu"
 
 define void @some_code() !dbg !13 {
 entry:
-  %0 = load i32, i32* @some_data, align 4, !dbg !16
-  %1 = load i32, i32* @some_other, align 4, !dbg !16
+  %0 = load i32, ptr @some_data, align 4, !dbg !16
+  %1 = load i32, ptr @some_other, align 4, !dbg !16
   %add = add nsw i32 %0, %1, !dbg !16
-  %2 = load i32, i32* @some_bss, align 4, !dbg !16
+  %2 = load i32, ptr @some_bss, align 4, !dbg !16
   %add1 = add nsw i32 %2, %add, !dbg !16
-  store i32 %add1, i32* @some_bss, align 4, !dbg !16
+  store i32 %add1, ptr @some_bss, align 4, !dbg !16
   ret void, !dbg !17
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarf-callsite-related-attrs.ll b/llvm/test/DebugInfo/X86/dwarf-callsite-related-attrs.ll
index ac2b7b9409c78..c8fb5bad48bb9 100644
--- a/llvm/test/DebugInfo/X86/dwarf-callsite-related-attrs.ll
+++ b/llvm/test/DebugInfo/X86/dwarf-callsite-related-attrs.ll
@@ -26,9 +26,9 @@
 
 define void @__has_no_subprogram() {
 entry:
-  %0 = load volatile i32, i32* @sink, align 4
+  %0 = load volatile i32, ptr @sink, align 4
   %inc = add nsw i32 %0, 1
-  store volatile i32 %inc, i32* @sink, align 4
+  store volatile i32 %inc, ptr @sink, align 4
   ret void
 }
 
@@ -39,9 +39,9 @@ entry:
 ; OBJ:   DW_AT_name ("bat")
 define void @_Z3batv() !dbg !13 {
 entry:
-  %0 = load volatile i32, i32* @sink, align 4, !dbg !16, !tbaa !17
+  %0 = load volatile i32, ptr @sink, align 4, !dbg !16, !tbaa !17
   %inc = add nsw i32 %0, 1, !dbg !16
-  store volatile i32 %inc, i32* @sink, align 4, !dbg !16, !tbaa !17
+  store volatile i32 %inc, ptr @sink, align 4, !dbg !16, !tbaa !17
   ret void, !dbg !21
 }
 
@@ -52,9 +52,9 @@ entry:
 ; OBJ:   DW_AT_name ("bar")
 define void @_Z3barv() !dbg !22 {
 entry:
-  %0 = load volatile i32, i32* @sink, align 4, !dbg !23, !tbaa !17
+  %0 = load volatile i32, ptr @sink, align 4, !dbg !23, !tbaa !17
   %inc = add nsw i32 %0, 1, !dbg !23
-  store volatile i32 %inc, i32* @sink, align 4, !dbg !23, !tbaa !17
+  store volatile i32 %inc, ptr @sink, align 4, !dbg !23, !tbaa !17
   ret void, !dbg !24
 }
 
@@ -101,7 +101,7 @@ define i32 @main() !dbg !29 {
 entry:
   call void @_Z3foov(), !dbg !32
 
-  %indirect_target = load void ()*, void ()** undef
+  %indirect_target = load ptr, ptr undef
   call void %indirect_target()
 
   call void asm sideeffect "", "~{dirflag},~{fpsr},~{flags}"()

diff  --git a/llvm/test/DebugInfo/X86/dwarf-linkage-names.ll b/llvm/test/DebugInfo/X86/dwarf-linkage-names.ll
index 2af2b86590a29..b06179d750234 100644
--- a/llvm/test/DebugInfo/X86/dwarf-linkage-names.ll
+++ b/llvm/test/DebugInfo/X86/dwarf-linkage-names.ll
@@ -45,7 +45,7 @@ source_filename = "test/DebugInfo/X86/dwarf-linkage-names.ll"
 ; Function Attrs: nounwind uwtable
 define i32 @_ZN4test3barEv() #0 !dbg !11 {
 entry:
-  %0 = load i32, i32* @_ZN4test10global_varE, align 4, !dbg !14
+  %0 = load i32, ptr @_ZN4test10global_varE, align 4, !dbg !14
   ret i32 %0, !dbg !15
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarf-mem-barrier.ll b/llvm/test/DebugInfo/X86/dwarf-mem-barrier.ll
index 5c24925083872..324a5f4ad9c27 100644
--- a/llvm/test/DebugInfo/X86/dwarf-mem-barrier.ll
+++ b/llvm/test/DebugInfo/X86/dwarf-mem-barrier.ll
@@ -11,7 +11,7 @@ entry:
   fence acquire, !dbg !9
   fence release, !dbg !9
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval, align 4
+  store i32 0, ptr %retval, align 4
   ret i32 0, !dbg !9
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarf-no-source-loc.ll b/llvm/test/DebugInfo/X86/dwarf-no-source-loc.ll
index 60d50a391a1b6..7e0a01be6c909 100644
--- a/llvm/test/DebugInfo/X86/dwarf-no-source-loc.ll
+++ b/llvm/test/DebugInfo/X86/dwarf-no-source-loc.ll
@@ -26,17 +26,17 @@ define void @_Z3fooi(i32 %x) !dbg !6 {
 entry:
   %x.addr = alloca i32, align 4
   %z = alloca i32, align 4
-  store i32 %x, i32* %x.addr, align 4
-  %0 = load i32, i32* %x.addr, align 4, !dbg !8
+  store i32 %x, ptr %x.addr, align 4
+  %0 = load i32, ptr %x.addr, align 4, !dbg !8
   %tobool = icmp ne i32 %0, 0, !dbg !8
   br i1 %tobool, label %if.then, label %if.end, !dbg !8
 
 if.then:                                          ; preds = %entry
-  call void @_Z3barPi(i32* %z), !dbg !9
+  call void @_Z3barPi(ptr %z), !dbg !9
   br label %if.end, !dbg !9
 
 if.end:                                           ; preds = %if.then, %entry
-  call void @_Z3bazPi(i32* %z), !dbg !12
+  call void @_Z3bazPi(ptr %z), !dbg !12
   ret void, !dbg !14
 }
 
@@ -52,9 +52,9 @@ if.end:                                           ; preds = %if.then, %entry
 ;
 ; DISABLE-NOT: .loc 1 0
 
-declare void @_Z3barPi(i32*)
+declare void @_Z3barPi(ptr)
 
-declare void @_Z3bazPi(i32*)
+declare void @_Z3bazPi(ptr)
 
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!3, !4}

diff  --git a/llvm/test/DebugInfo/X86/dwarf-public-names.ll b/llvm/test/DebugInfo/X86/dwarf-public-names.ll
index 22bd123506a8d..c2274511d4191 100644
--- a/llvm/test/DebugInfo/X86/dwarf-public-names.ll
+++ b/llvm/test/DebugInfo/X86/dwarf-public-names.ll
@@ -82,13 +82,13 @@ source_filename = "test/DebugInfo/X86/dwarf-public-names.ll"
 @_ZN2ns25global_namespace_variableE = global i32 1, align 4, !dbg !17
 
 ; Function Attrs: nounwind uwtable
-define void @_ZN1C15member_functionEv(%struct.C* %this) #0 align 2 !dbg !23 {
+define void @_ZN1C15member_functionEv(ptr %this) #0 align 2 !dbg !23 {
 entry:
-  %this.addr = alloca %struct.C*, align 8
-  store %struct.C* %this, %struct.C** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.C** %this.addr, metadata !24, metadata !26), !dbg !27
-  %this1 = load %struct.C*, %struct.C** %this.addr
-  store i32 0, i32* @_ZN1C22static_member_variableE, align 4, !dbg !28
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !24, metadata !26), !dbg !27
+  %this1 = load ptr, ptr %this.addr
+  store i32 0, ptr @_ZN1C22static_member_variableE, align 4, !dbg !28
   ret void, !dbg !29
 }
 
@@ -98,7 +98,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 ; Function Attrs: nounwind uwtable
 define i32 @_ZN1C22static_member_functionEv() #0 align 2 !dbg !30 {
 entry:
-  %0 = load i32, i32* @_ZN1C22static_member_variableE, align 4, !dbg !31
+  %0 = load i32, ptr @_ZN1C22static_member_variableE, align 4, !dbg !31
   ret i32 %0, !dbg !31
 }
 
@@ -111,7 +111,7 @@ entry:
 ; Function Attrs: nounwind uwtable
 define void @_ZN2ns25global_namespace_functionEv() #0 !dbg !34 {
 entry:
-  call void @_ZN1C15member_functionEv(%struct.C* @global_variable), !dbg !37
+  call void @_ZN1C15member_functionEv(ptr @global_variable), !dbg !37
   ret void, !dbg !38
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarf-pubnames-split.ll b/llvm/test/DebugInfo/X86/dwarf-pubnames-split.ll
index a49a4b5df60cb..d1f1ae35e2f4f 100644
--- a/llvm/test/DebugInfo/X86/dwarf-pubnames-split.ll
+++ b/llvm/test/DebugInfo/X86/dwarf-pubnames-split.ll
@@ -15,7 +15,7 @@
 define i32 @main() #0 !dbg !4 {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval
+  store i32 0, ptr %retval
   ret i32 0, !dbg !10
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-DIImportedEntity_elements.ll b/llvm/test/DebugInfo/X86/dwarfdump-DIImportedEntity_elements.ll
index 2d4937ee7f9f6..ff2370d7626da 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-DIImportedEntity_elements.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-DIImportedEntity_elements.ll
@@ -40,7 +40,7 @@
 source_filename = "/tmp/usemodulealias.ll"
 
 %struct_mymod_8_ = type <{ [12 x i8] }>
-%struct.struct_ul_MAIN__348 = type { i8* }
+%struct.struct_ul_MAIN__348 = type { ptr }
 
 @_mymod_8_ = global %struct_mymod_8_ <{ [12 x i8] c"\0B\00\00\00\0C\00\00\00\0D\00\00\00" }>, align 64, !dbg !0, !dbg !7, !dbg !10
 @.C330_MAIN_ = internal constant i32 0
@@ -59,18 +59,15 @@ define i32 @mymod_() {
 define void @MAIN_() !dbg !15 {
 L.entry:
   %.S0000_353 = alloca %struct.struct_ul_MAIN__348, align 8
-  %0 = bitcast i32* @.C330_MAIN_ to i8*
-  %1 = bitcast void (...)* @fort_init to void (i8*, ...)*
-  call void (i8*, ...) %1(i8* %0)
+  call void (ptr, ...) @fort_init(ptr @.C330_MAIN_)
   br label %L.LB2_357
 
 L.LB2_357:                                        ; preds = %L.entry
-  %2 = bitcast %struct.struct_ul_MAIN__348* %.S0000_353 to i64*, !dbg !23
-  call void @main_use_renamed(i64* %2), !dbg !23
+  call void @main_use_renamed(ptr %.S0000_353), !dbg !23
   ret void, !dbg !24
 }
 
-define internal void @main_use_renamed(i64* noalias %.S0000) !dbg !14 {
+define internal void @main_use_renamed(ptr noalias %.S0000) !dbg !14 {
 L.entry:
   ret void, !dbg !25
 }

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-allocatedExp.ll b/llvm/test/DebugInfo/X86/dwarfdump-allocatedExp.ll
index 09e4a51283640..f28ca9743ff37 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-allocatedExp.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-allocatedExp.ll
@@ -24,10 +24,10 @@ target triple = "x86_64-unknown-linux-gnu"
 
 define void @MAIN_() !dbg !5 {
 L.entry:
-  %.Z0640_333 = alloca i32*, align 8
+  %.Z0640_333 = alloca ptr, align 8
   %"arr$sd1_349" = alloca [16 x i64], align 8
-  call void @llvm.dbg.declare(metadata [16 x i64]* %"arr$sd1_349", metadata !8, metadata !DIExpression()), !dbg !13
-  call void @llvm.dbg.declare(metadata i32** %.Z0640_333, metadata !14, metadata !DIExpression()), !dbg !13
+  call void @llvm.dbg.declare(metadata ptr %"arr$sd1_349", metadata !8, metadata !DIExpression()), !dbg !13
+  call void @llvm.dbg.declare(metadata ptr %.Z0640_333, metadata !14, metadata !DIExpression()), !dbg !13
   ret void, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-allocatedVar.ll b/llvm/test/DebugInfo/X86/dwarfdump-allocatedVar.ll
index 4a65078360c52..58dcae047f63f 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-allocatedVar.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-allocatedVar.ll
@@ -33,11 +33,11 @@ target triple = "x86_64-unknown-linux-gnu"
 
 define void @MAIN_() !dbg !5 {
 L.entry:
-  %.Z0640_333 = alloca i32*, align 8
+  %.Z0640_333 = alloca ptr, align 8
   %"arr$sd1_349" = alloca [16 x i64], align 8
-  call void @llvm.dbg.declare(metadata [16 x i64]* %"arr$sd1_349", metadata !8, metadata !DIExpression()), !dbg !17
-  call void @llvm.dbg.declare(metadata i32** %.Z0640_333, metadata !13, metadata !DIExpression()), !dbg !17
-  call void @llvm.dbg.declare(metadata i32** %.Z0640_333, metadata !15, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %"arr$sd1_349", metadata !8, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %.Z0640_333, metadata !13, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %.Z0640_333, metadata !15, metadata !DIExpression()), !dbg !17
   ret void, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-associatedExp.ll b/llvm/test/DebugInfo/X86/dwarfdump-associatedExp.ll
index d99c563ddb7c2..005a5296b70bb 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-associatedExp.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-associatedExp.ll
@@ -24,10 +24,10 @@ target triple = "x86_64-unknown-linux-gnu"
 
 define void @MAIN_() !dbg !5 {
 L.entry:
-  %.Z0640_333 = alloca i32*, align 8
+  %.Z0640_333 = alloca ptr, align 8
   %"arr$sd1_349" = alloca [16 x i64], align 8
-  call void @llvm.dbg.declare(metadata [16 x i64]* %"arr$sd1_349", metadata !8, metadata !DIExpression()), !dbg !13
-  call void @llvm.dbg.declare(metadata i32** %.Z0640_333, metadata !14, metadata !DIExpression()), !dbg !13
+  call void @llvm.dbg.declare(metadata ptr %"arr$sd1_349", metadata !8, metadata !DIExpression()), !dbg !13
+  call void @llvm.dbg.declare(metadata ptr %.Z0640_333, metadata !14, metadata !DIExpression()), !dbg !13
   ret void, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-associatedVar.ll b/llvm/test/DebugInfo/X86/dwarfdump-associatedVar.ll
index 1039fad1a7840..385f62933e381 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-associatedVar.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-associatedVar.ll
@@ -33,11 +33,11 @@ target triple = "x86_64-unknown-linux-gnu"
 
 define void @MAIN_() !dbg !5 {
 L.entry:
-  %.Z0640_333 = alloca i32*, align 8
+  %.Z0640_333 = alloca ptr, align 8
   %"arr$sd1_349" = alloca [16 x i64], align 8
-  call void @llvm.dbg.declare(metadata [16 x i64]* %"arr$sd1_349", metadata !8, metadata !DIExpression()), !dbg !17
-  call void @llvm.dbg.declare(metadata i32** %.Z0640_333, metadata !13, metadata !DIExpression()), !dbg !17
-  call void @llvm.dbg.declare(metadata i32** %.Z0640_333, metadata !15, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %"arr$sd1_349", metadata !8, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %.Z0640_333, metadata !13, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %.Z0640_333, metadata !15, metadata !DIExpression()), !dbg !17
   ret void, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange.ll b/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange.ll
index 9ae0f14b8aad1..30a418b45af12 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange.ll
@@ -22,11 +22,11 @@
 ; ModuleID = 'dwarfdump-generic_subrange.ll'
 source_filename = "dwarfdump-generic_subrange.ll"
 
-define void @sub_(i64* noalias %arank, i64* noalias %"arank$sd") !dbg !5 {
+define void @sub_(ptr noalias %arank, ptr noalias %"arank$sd") !dbg !5 {
 L.entry:
-  call void @llvm.dbg.value(metadata i64* %arank, metadata !17, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %arank, metadata !17, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
   ret void, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_const.ll b/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_const.ll
index 28bf70a5380ad..6d997329fffbb 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_const.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_const.ll
@@ -23,11 +23,11 @@
 ; ModuleID = 'dwarfdump-subrange_const.ll'
 source_filename = "dwarfdump-subrange_const.ll"
 
-define void @sub_(i64* noalias %arank, i64* noalias %"arank$sd") !dbg !5 {
+define void @sub_(ptr noalias %arank, ptr noalias %"arank$sd") !dbg !5 {
 L.entry:
-  call void @llvm.dbg.value(metadata i64* %arank, metadata !17, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %arank, metadata !17, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
   ret void, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_count.ll b/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_count.ll
index c66912ddf3a62..01abeb75c2bf0 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_count.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-generic_subrange_count.ll
@@ -22,11 +22,11 @@
 ; ModuleID = 'dwarfdump-rank.ll'
 source_filename = "dwarfdump-rank.ll"
 
-define void @sub_(i64* noalias %arank, i64* noalias %"arank$sd") !dbg !5 {
+define void @sub_(ptr noalias %arank, ptr noalias %"arank$sd") !dbg !5 {
 L.entry:
-  call void @llvm.dbg.value(metadata i64* %arank, metadata !17, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %arank, metadata !17, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
   ret void, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-over.ll b/llvm/test/DebugInfo/X86/dwarfdump-over.ll
index fbf5ff61c880c..596ddc9e373a1 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-over.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-over.ll
@@ -39,12 +39,12 @@ target triple = "x86_64-unknown-linux-gnu"
 
 define void @MAIN_() !dbg !5 {
 L.entry:
-  %.Z0655_362 = alloca i32*, align 8
+  %.Z0655_362 = alloca ptr, align 8
   %"arr$sd1_379" = alloca [28 x i64], align 8
-  call void @llvm.dbg.declare(metadata i32** %.Z0655_362, metadata !8, metadata !DIExpression()), !dbg !11
-  call void @llvm.dbg.declare(metadata i32** %.Z0655_362, metadata !12, metadata !DIExpression()), !dbg !11
-  call void @llvm.dbg.declare(metadata [28 x i64]* %"arr$sd1_379", metadata !14, metadata !DIExpression()), !dbg !11
-  call void @llvm.dbg.declare(metadata [28 x i64]* %"arr$sd1_379", metadata !19, metadata !DIExpression()), !dbg !11
+  call void @llvm.dbg.declare(metadata ptr %.Z0655_362, metadata !8, metadata !DIExpression()), !dbg !11
+  call void @llvm.dbg.declare(metadata ptr %.Z0655_362, metadata !12, metadata !DIExpression()), !dbg !11
+  call void @llvm.dbg.declare(metadata ptr %"arr$sd1_379", metadata !14, metadata !DIExpression()), !dbg !11
+  call void @llvm.dbg.declare(metadata ptr %"arr$sd1_379", metadata !19, metadata !DIExpression()), !dbg !11
   ret void, !dbg !25
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-rankConst.ll b/llvm/test/DebugInfo/X86/dwarfdump-rankConst.ll
index 758b091e34133..6a6df4bb463f7 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-rankConst.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-rankConst.ll
@@ -19,11 +19,11 @@
 ; ModuleID = 'dwarfdump-rank.ll'
 source_filename = "dwarfdump-rank.ll"
 
-define void @sub_(i64* noalias %arank, i64* noalias %"arank$sd") !dbg !5 {
+define void @sub_(ptr noalias %arank, ptr noalias %"arank$sd") !dbg !5 {
 L.entry:
-  call void @llvm.dbg.value(metadata i64* %arank, metadata !17, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %arank, metadata !17, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
   ret void, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-rankExp.ll b/llvm/test/DebugInfo/X86/dwarfdump-rankExp.ll
index a295863de52f7..c74c7fcc6b9fd 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-rankExp.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-rankExp.ll
@@ -19,11 +19,11 @@
 ; ModuleID = 'dwarfdump-rank.ll'
 source_filename = "dwarfdump-rank.ll"
 
-define void @sub_(i64* noalias %arank, i64* noalias %"arank$sd") !dbg !5 {
+define void @sub_(ptr noalias %arank, ptr noalias %"arank$sd") !dbg !5 {
 L.entry:
-  call void @llvm.dbg.value(metadata i64* %arank, metadata !17, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %arank, metadata !17, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
   ret void, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/X86/dwarfdump-signed_const.ll b/llvm/test/DebugInfo/X86/dwarfdump-signed_const.ll
index f75142b184173..a3123a6c7c96f 100644
--- a/llvm/test/DebugInfo/X86/dwarfdump-signed_const.ll
+++ b/llvm/test/DebugInfo/X86/dwarfdump-signed_const.ll
@@ -24,11 +24,11 @@
 ; ModuleID = 'dwarfdump-signed_const.ll'
 source_filename = "dwarfdump-signed_const.ll"
 
-define void @sub_(i64* noalias %arank, i64* noalias %"arank$sd") !dbg !5 {
+define void @sub_(ptr noalias %arank, ptr noalias %"arank$sd") !dbg !5 {
 L.entry:
-  call void @llvm.dbg.value(metadata i64* %arank, metadata !17, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.declare(metadata i64* %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %arank, metadata !17, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !19, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %"arank$sd", metadata !29, metadata !DIExpression()), !dbg !18
   ret void, !dbg !18
 }
 

diff  --git a/llvm/test/DebugInfo/X86/earlydup-crash.ll b/llvm/test/DebugInfo/X86/earlydup-crash.ll
index 1c2602ab593f4..ccb8853fdd1ca 100644
--- a/llvm/test/DebugInfo/X86/earlydup-crash.ll
+++ b/llvm/test/DebugInfo/X86/earlydup-crash.ll
@@ -2,11 +2,11 @@
 
 ; This used to crash because early dup was not ignoring debug instructions.
 
-%struct.cpp_dir = type { %struct.cpp_dir*, i8*, i32, i8, i8**, i8*, i8* (i8*, %struct.cpp_dir*)*, i64, i32, i8 }
+%struct.cpp_dir = type { ptr, ptr, i32, i8, ptr, ptr, ptr, i64, i32, i8 }
 
 declare void @llvm.dbg.value(metadata, metadata, metadata) nounwind readnone
 
-define internal i8* @framework_construct_pathname(i8* %fname, %struct.cpp_dir* %dir) nounwind ssp !dbg !2 {
+define internal ptr @framework_construct_pathname(ptr %fname, ptr %dir) nounwind ssp !dbg !2 {
 entry:
   br i1 undef, label %bb33, label %bb
 
@@ -17,7 +17,6 @@ bb:                                               ; preds = %entry
   br i1 undef, label %bb18, label %bb31.preheader
 
 bb31.preheader:                                   ; preds = %bb19, %bb
-  %tmp2 = getelementptr inbounds i8, i8* %fname, i32 0
   br label %bb31
 
 bb18:                                             ; preds = %bb
@@ -37,7 +36,7 @@ bb31:                                             ; preds = %bb22, %bb31.prehead
   br i1 false, label %bb33, label %bb22
 
 bb33:                                             ; preds = %bb31, %bb22, %bb18, %entry
-  ret i8* undef
+  ret ptr undef
 }
 
 declare void @foobar(i32)

diff  --git a/llvm/test/DebugInfo/X86/elf-names.ll b/llvm/test/DebugInfo/X86/elf-names.ll
index 902b411fc3cf3..2f83b72bf9d58 100644
--- a/llvm/test/DebugInfo/X86/elf-names.ll
+++ b/llvm/test/DebugInfo/X86/elf-names.ll
@@ -17,43 +17,40 @@
 
 %class.D = type { i32, i32, i32, i32 }
 
- at _ZN1DC1Ev = alias void (%class.D*), void (%class.D*)* @_ZN1DC2Ev
- at _ZN1DC1ERKS_ = alias void (%class.D*, %class.D*), void (%class.D*, %class.D*)* @_ZN1DC2ERKS_
+ at _ZN1DC1Ev = alias void (ptr), ptr @_ZN1DC2Ev
+ at _ZN1DC1ERKS_ = alias void (ptr, ptr), ptr @_ZN1DC2ERKS_
 
-define void @_ZN1DC2Ev(%class.D* nocapture %this) unnamed_addr nounwind uwtable align 2 !dbg !5 {
+define void @_ZN1DC2Ev(ptr nocapture %this) unnamed_addr nounwind uwtable align 2 !dbg !5 {
 entry:
-  tail call void @llvm.dbg.value(metadata %class.D* %this, metadata !29, metadata !DIExpression()), !dbg !36
-  %c1 = getelementptr inbounds %class.D, %class.D* %this, i64 0, i32 0, !dbg !37
-  store i32 1, i32* %c1, align 4, !dbg !37
-  %c2 = getelementptr inbounds %class.D, %class.D* %this, i64 0, i32 1, !dbg !42
-  store i32 2, i32* %c2, align 4, !dbg !42
-  %c3 = getelementptr inbounds %class.D, %class.D* %this, i64 0, i32 2, !dbg !43
-  store i32 3, i32* %c3, align 4, !dbg !43
-  %c4 = getelementptr inbounds %class.D, %class.D* %this, i64 0, i32 3, !dbg !44
-  store i32 4, i32* %c4, align 4, !dbg !44
+  tail call void @llvm.dbg.value(metadata ptr %this, metadata !29, metadata !DIExpression()), !dbg !36
+  store i32 1, ptr %this, align 4, !dbg !37
+  %c2 = getelementptr inbounds %class.D, ptr %this, i64 0, i32 1, !dbg !42
+  store i32 2, ptr %c2, align 4, !dbg !42
+  %c3 = getelementptr inbounds %class.D, ptr %this, i64 0, i32 2, !dbg !43
+  store i32 3, ptr %c3, align 4, !dbg !43
+  %c4 = getelementptr inbounds %class.D, ptr %this, i64 0, i32 3, !dbg !44
+  store i32 4, ptr %c4, align 4, !dbg !44
   ret void, !dbg !45
 }
 
-define void @_ZN1DC2ERKS_(%class.D* nocapture %this, %class.D* nocapture %d) unnamed_addr nounwind uwtable align 2 !dbg !31 {
+define void @_ZN1DC2ERKS_(ptr nocapture %this, ptr nocapture %d) unnamed_addr nounwind uwtable align 2 !dbg !31 {
 entry:
-  tail call void @llvm.dbg.value(metadata %class.D* %this, metadata !34, metadata !DIExpression()), !dbg !46
-  tail call void @llvm.dbg.value(metadata %class.D* %d, metadata !35, metadata !DIExpression()), !dbg !46
-  %c1 = getelementptr inbounds %class.D, %class.D* %d, i64 0, i32 0, !dbg !47
-  %0 = load i32, i32* %c1, align 4, !dbg !47
-  %c12 = getelementptr inbounds %class.D, %class.D* %this, i64 0, i32 0, !dbg !47
-  store i32 %0, i32* %c12, align 4, !dbg !47
-  %c2 = getelementptr inbounds %class.D, %class.D* %d, i64 0, i32 1, !dbg !49
-  %1 = load i32, i32* %c2, align 4, !dbg !49
-  %c23 = getelementptr inbounds %class.D, %class.D* %this, i64 0, i32 1, !dbg !49
-  store i32 %1, i32* %c23, align 4, !dbg !49
-  %c3 = getelementptr inbounds %class.D, %class.D* %d, i64 0, i32 2, !dbg !50
-  %2 = load i32, i32* %c3, align 4, !dbg !50
-  %c34 = getelementptr inbounds %class.D, %class.D* %this, i64 0, i32 2, !dbg !50
-  store i32 %2, i32* %c34, align 4, !dbg !50
-  %c4 = getelementptr inbounds %class.D, %class.D* %d, i64 0, i32 3, !dbg !51
-  %3 = load i32, i32* %c4, align 4, !dbg !51
-  %c45 = getelementptr inbounds %class.D, %class.D* %this, i64 0, i32 3, !dbg !51
-  store i32 %3, i32* %c45, align 4, !dbg !51
+  tail call void @llvm.dbg.value(metadata ptr %this, metadata !34, metadata !DIExpression()), !dbg !46
+  tail call void @llvm.dbg.value(metadata ptr %d, metadata !35, metadata !DIExpression()), !dbg !46
+  %0 = load i32, ptr %d, align 4, !dbg !47
+  store i32 %0, ptr %this, align 4, !dbg !47
+  %c2 = getelementptr inbounds %class.D, ptr %d, i64 0, i32 1, !dbg !49
+  %1 = load i32, ptr %c2, align 4, !dbg !49
+  %c23 = getelementptr inbounds %class.D, ptr %this, i64 0, i32 1, !dbg !49
+  store i32 %1, ptr %c23, align 4, !dbg !49
+  %c3 = getelementptr inbounds %class.D, ptr %d, i64 0, i32 2, !dbg !50
+  %2 = load i32, ptr %c3, align 4, !dbg !50
+  %c34 = getelementptr inbounds %class.D, ptr %this, i64 0, i32 2, !dbg !50
+  store i32 %2, ptr %c34, align 4, !dbg !50
+  %c4 = getelementptr inbounds %class.D, ptr %d, i64 0, i32 3, !dbg !51
+  %3 = load i32, ptr %c4, align 4, !dbg !51
+  %c45 = getelementptr inbounds %class.D, ptr %this, i64 0, i32 3, !dbg !51
+  store i32 %3, ptr %c45, align 4, !dbg !51
   ret void, !dbg !52
 }
 

diff  --git a/llvm/test/DebugInfo/X86/ending-run.ll b/llvm/test/DebugInfo/X86/ending-run.ll
index aeadccfcca5e4..00db4243fd3ee 100644
--- a/llvm/test/DebugInfo/X86/ending-run.ll
+++ b/llvm/test/DebugInfo/X86/ending-run.ll
@@ -12,14 +12,14 @@ define i32 @callee(i32 %x) nounwind uwtable ssp !dbg !5 {
 entry:
   %x.addr = alloca i32, align 4
   %y = alloca i32, align 4
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !12, metadata !DIExpression()), !dbg !13
-  call void @llvm.dbg.declare(metadata i32* %y, metadata !14, metadata !DIExpression()), !dbg !16
-  %0 = load i32, i32* %x.addr, align 4, !dbg !17
-  %1 = load i32, i32* %x.addr, align 4, !dbg !17
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !12, metadata !DIExpression()), !dbg !13
+  call void @llvm.dbg.declare(metadata ptr %y, metadata !14, metadata !DIExpression()), !dbg !16
+  %0 = load i32, ptr %x.addr, align 4, !dbg !17
+  %1 = load i32, ptr %x.addr, align 4, !dbg !17
   %mul = mul nsw i32 %0, %1, !dbg !17
-  store i32 %mul, i32* %y, align 4, !dbg !17
-  %2 = load i32, i32* %y, align 4, !dbg !18
+  store i32 %mul, ptr %y, align 4, !dbg !17
+  %2 = load i32, ptr %y, align 4, !dbg !18
   %sub = sub nsw i32 %2, 2, !dbg !18
   ret i32 %sub, !dbg !18
 }

diff  --git a/llvm/test/DebugInfo/X86/fi-expr.ll b/llvm/test/DebugInfo/X86/fi-expr.ll
index 10082865d8000..13db5d5b51a32 100644
--- a/llvm/test/DebugInfo/X86/fi-expr.ll
+++ b/llvm/test/DebugInfo/X86/fi-expr.ll
@@ -6,11 +6,11 @@
 ; CHECK-NEXT: DW_AT_location {{.*}} (DW_OP_fbreg -8, DW_OP_deref)
 ; CHECK-NEXT: DW_AT_name {{.*}} "foo"
 
-define void @f(i8* %bar) !dbg !6 {
+define void @f(ptr %bar) !dbg !6 {
 entry:
-  %foo.addr = alloca i8*
-  store i8* %bar, i8** %foo.addr
-  call void @llvm.dbg.declare(metadata i8** %foo.addr, metadata !12, metadata !13), !dbg !14
+  %foo.addr = alloca ptr
+  store ptr %bar, ptr %foo.addr
+  call void @llvm.dbg.declare(metadata ptr %foo.addr, metadata !12, metadata !13), !dbg !14
   ret void, !dbg !15
 }
 

diff  --git a/llvm/test/DebugInfo/X86/fi-piece.ll b/llvm/test/DebugInfo/X86/fi-piece.ll
index 9dc40d313f118..30144d7875550 100644
--- a/llvm/test/DebugInfo/X86/fi-piece.ll
+++ b/llvm/test/DebugInfo/X86/fi-piece.ll
@@ -25,11 +25,11 @@ define void @f() #0 !dbg !8 {
 entry:
   %a = alloca i16, align 4
   %b = alloca i16, align 4
-  call void @llvm.dbg.declare(metadata i16* %a, metadata !11, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 16)), !dbg !14
-  store i16 1, i16* %a, align 4, !dbg !14
-  call void @llvm.dbg.declare(metadata i16* %b, metadata !11, metadata !DIExpression(DW_OP_LLVM_fragment, 16, 16)), !dbg !16
-  call void @llvm.dbg.declare(metadata i16* %a, metadata !11, metadata !13), !dbg !17
-  store i16 2, i16* %b, align 4, !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !11, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 16)), !dbg !14
+  store i16 1, ptr %a, align 4, !dbg !14
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !11, metadata !DIExpression(DW_OP_LLVM_fragment, 16, 16)), !dbg !16
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !11, metadata !13), !dbg !17
+  store i16 2, ptr %b, align 4, !dbg !17
   ret void
 }
 

diff  --git a/llvm/test/DebugInfo/X86/fission-ranges.ll b/llvm/test/DebugInfo/X86/fission-ranges.ll
index 67b767b08e360..10d2150cf44a8 100644
--- a/llvm/test/DebugInfo/X86/fission-ranges.ll
+++ b/llvm/test/DebugInfo/X86/fission-ranges.ll
@@ -133,7 +133,7 @@ define internal fastcc void @foo() #0 !dbg !8 {
 entry:
   tail call void @llvm.dbg.value(metadata i32 1, metadata !13, metadata !DIExpression()), !dbg !30
   tail call void @llvm.dbg.value(metadata i32 0, metadata !14, metadata !DIExpression()), !dbg !31
-  %c.promoted9 = load i32, i32* @c, align 4, !dbg !32, !tbaa !33
+  %c.promoted9 = load i32, ptr @c, align 4, !dbg !32, !tbaa !33
   br label %for.cond1.preheader, !dbg !31
 
 for.cond1.preheader:                              ; preds = %for.inc16, %entry
@@ -154,7 +154,7 @@ for.cond7.preheader:                              ; preds = %for.inc10, %for.con
 for.body9:                                        ; preds = %for.body9, %for.cond7.preheader
   %and2 = phi i32 [ %and.lcssa5, %for.cond7.preheader ], [ %and, %for.body9 ], !dbg !40
   %e.01 = phi i32 [ 0, %for.cond7.preheader ], [ %inc, %for.body9 ]
-  tail call void @llvm.dbg.value(metadata i32* @c, metadata !19, metadata !DIExpression()), !dbg !40
+  tail call void @llvm.dbg.value(metadata ptr @c, metadata !19, metadata !DIExpression()), !dbg !40
   %and = and i32 %and2, 1, !dbg !32
   %inc = add i32 %e.01, 1, !dbg !39
   tail call void @llvm.dbg.value(metadata i32 %inc, metadata !18, metadata !DIExpression()), !dbg !42
@@ -180,7 +180,7 @@ for.inc16:                                        ; preds = %for.inc13
   br i1 %exitcond13, label %for.end18, label %for.cond1.preheader, !dbg !31
 
 for.end18:                                        ; preds = %for.inc16
-  store i32 %and, i32* @c, align 4, !dbg !32, !tbaa !33
+  store i32 %and, ptr @c, align 4, !dbg !32, !tbaa !33
   ret void, !dbg !42
 }
 
@@ -233,7 +233,7 @@ attributes #1 = { nounwind readnone }
 !38 = !DILocation(line: 9, scope: !22)
 !39 = !DILocation(line: 10, scope: !21)
 !40 = !DILocation(line: 12, scope: !20)
-!41 = !{i32* @c}
+!41 = !{ptr @c}
 !42 = !DILocation(line: 15, scope: !8)
 !43 = !{i32 1, !"Debug Info Version", i32 3}
 !44 = !{i32 0}

diff  --git a/llvm/test/DebugInfo/X86/float_const.ll b/llvm/test/DebugInfo/X86/float_const.ll
index 189911494cdca..5b323720003b6 100644
--- a/llvm/test/DebugInfo/X86/float_const.ll
+++ b/llvm/test/DebugInfo/X86/float_const.ll
@@ -10,7 +10,7 @@ target triple = "x86_64-apple-macosx10.10.0"
 ; Function Attrs: nounwind optsize readnone uwtable
 define void @foo() #0 !dbg !7 {
 entry:
-  tail call void @llvm.dbg.declare(metadata float* undef, metadata !13, metadata !19), !dbg !20
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !13, metadata !19), !dbg !20
   tail call void @llvm.dbg.value(metadata i32 1078523331, metadata !13, metadata !19), !dbg !20
   tail call void @llvm.dbg.value(metadata i32 0, metadata !13, metadata !19), !dbg !20
 ; CHECK:  DW_AT_const_value [DW_FORM_sdata]    (0)

diff  --git a/llvm/test/DebugInfo/X86/formal_parameter.ll b/llvm/test/DebugInfo/X86/formal_parameter.ll
index cb3e197dd1d44..21f86fbece83e 100644
--- a/llvm/test/DebugInfo/X86/formal_parameter.ll
+++ b/llvm/test/DebugInfo/X86/formal_parameter.ll
@@ -27,17 +27,17 @@ target triple = "x86_64-apple-macosx10.9.0"
 define void @foo(i32 %map) #0 !dbg !4 {
 entry:
   %map.addr = alloca i32, align 4
-  store i32 %map, i32* %map.addr, align 4, !tbaa !15
-  call void @llvm.dbg.declare(metadata i32* %map.addr, metadata !10, metadata !DIExpression()), !dbg !14
-  %call = call i32 (i32*, ...) bitcast (i32 (...)* @lookup to i32 (i32*, ...)*)(i32* %map.addr) #3, !dbg !19
+  store i32 %map, ptr %map.addr, align 4, !tbaa !15
+  call void @llvm.dbg.declare(metadata ptr %map.addr, metadata !10, metadata !DIExpression()), !dbg !14
+  %call = call i32 (ptr, ...) @lookup(ptr %map.addr) #3, !dbg !19
   ; Ensure that all dbg intrinsics have the same scope after
   ; LowerDbgDeclare is finished with them.
   ;
   ; LOWERING: call void @llvm.dbg.value{{.*}}, !dbg ![[LOC:.*]]
   ; LOWERING: call void @llvm.dbg.value{{.*}}, !dbg ![[LOC]]
   ; LOWERING: call void @llvm.dbg.value{{.*}}, !dbg ![[LOC]]
-%0 = load i32, i32* %map.addr, align 4, !dbg !20, !tbaa !15
-  %call1 = call i32 (i32, ...) bitcast (i32 (...)* @verify to i32 (i32, ...)*)(i32 %0) #3, !dbg !20
+%0 = load i32, ptr %map.addr, align 4, !dbg !20, !tbaa !15
+  %call1 = call i32 (i32, ...) @verify(i32 %0) #3, !dbg !20
   ret void, !dbg !22
 }
 

diff  --git a/llvm/test/DebugInfo/X86/frame-register.ll b/llvm/test/DebugInfo/X86/frame-register.ll
index 8b3cd51c83adf..cd3a5065b4067 100644
--- a/llvm/test/DebugInfo/X86/frame-register.ll
+++ b/llvm/test/DebugInfo/X86/frame-register.ll
@@ -17,10 +17,10 @@ define i32 @main() #0 !dbg !9 {
 entry:
   %retval = alloca i32, align 4
   %i = alloca i32, align 4
-  store i32 0, i32* %retval
-  call void @llvm.dbg.declare(metadata i32* %i, metadata !20, metadata !16), !dbg !21
-  store i32 20, i32* %i, align 4, !dbg !21
-  %0 = load i32, i32* %i, align 4, !dbg !22
+  store i32 0, ptr %retval
+  call void @llvm.dbg.declare(metadata ptr %i, metadata !20, metadata !16), !dbg !21
+  store i32 20, ptr %i, align 4, !dbg !21
+  %0 = load i32, ptr %i, align 4, !dbg !22
   %call = call i32 @foo(i32 %0), !dbg !23
   ret i32 %call, !dbg !24
 }

diff  --git a/llvm/test/DebugInfo/X86/generate-odr-hash.ll b/llvm/test/DebugInfo/X86/generate-odr-hash.ll
index 9fa954cd24858..5e583a39fe984 100644
--- a/llvm/test/DebugInfo/X86/generate-odr-hash.ll
+++ b/llvm/test/DebugInfo/X86/generate-odr-hash.ll
@@ -180,13 +180,13 @@ source_filename = "test/DebugInfo/X86/generate-odr-hash.ll"
 @_ZN7echidna8capybara8mongoose6animalE = global %"class.echidna::capybara::mongoose::fluffy" zeroinitializer, align 4, !dbg !6
 @w = internal global %"struct.<anonymous namespace>::walrus" zeroinitializer, align 1, !dbg !16
 @wom = global %struct.wombat zeroinitializer, align 4, !dbg !25
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__I_a, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__I_a, ptr null }]
 
 ; Function Attrs: nounwind uwtable
 define void @_Z3foov() #0 !dbg !40 {
 entry:
   %b = alloca %struct.baz, align 1
-  call void @llvm.dbg.declare(metadata %struct.baz* %b, metadata !43, metadata !45), !dbg !46
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !43, metadata !45), !dbg !46
   ret void, !dbg !47
 }
 
@@ -195,17 +195,17 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 define internal void @__cxx_global_var_init() section ".text.startup" !dbg !48 {
 entry:
-  call void @_ZN12_GLOBAL__N_16walrusC2Ev(%"struct.<anonymous namespace>::walrus"* @w), !dbg !49
+  call void @_ZN12_GLOBAL__N_16walrusC2Ev(ptr @w), !dbg !49
   ret void, !dbg !49
 }
 
 ; Function Attrs: nounwind uwtable
-define internal void @_ZN12_GLOBAL__N_16walrusC2Ev(%"struct.<anonymous namespace>::walrus"* %this) unnamed_addr #0 align 2 !dbg !50 {
+define internal void @_ZN12_GLOBAL__N_16walrusC2Ev(ptr %this) unnamed_addr #0 align 2 !dbg !50 {
 entry:
-  %this.addr = alloca %"struct.<anonymous namespace>::walrus"*, align 8
-  store %"struct.<anonymous namespace>::walrus"* %this, %"struct.<anonymous namespace>::walrus"** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %"struct.<anonymous namespace>::walrus"** %this.addr, metadata !51, metadata !45), !dbg !53
-  %this1 = load %"struct.<anonymous namespace>::walrus"*, %"struct.<anonymous namespace>::walrus"** %this.addr
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !51, metadata !45), !dbg !53
+  %this1 = load ptr, ptr %this.addr
   ret void, !dbg !54
 }
 

diff  --git a/llvm/test/DebugInfo/X86/global-expression.ll b/llvm/test/DebugInfo/X86/global-expression.ll
index 6bfb5478b5fde..e0a76de1afb34 100644
--- a/llvm/test/DebugInfo/X86/global-expression.ll
+++ b/llvm/test/DebugInfo/X86/global-expression.ll
@@ -17,7 +17,7 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.13.0"
 
 @i = global i32 23, align 4
- at indirect = global i32* @i, align 8, !dbg !6, !dbg !0, !dbg !14, !dbg !15, !dbg !16
+ at indirect = global ptr @i, align 8, !dbg !6, !dbg !0, !dbg !14, !dbg !15, !dbg !16
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!10, !11, !12, !13}

diff  --git a/llvm/test/DebugInfo/X86/global-sra-fp80-array.ll b/llvm/test/DebugInfo/X86/global-sra-fp80-array.ll
index 005521b5674af..d3ab3bdcb1a42 100644
--- a/llvm/test/DebugInfo/X86/global-sra-fp80-array.ll
+++ b/llvm/test/DebugInfo/X86/global-sra-fp80-array.ll
@@ -32,10 +32,10 @@ target triple = "x86_64-unknown-linux-gnu"
 define void @foo(i32 %in) #0 {
 entry:
   %in.addr = alloca i32, align 4
-  store i32 %in, i32* %in.addr, align 4
-  %0 = load i32, i32* %in.addr, align 4
+  store i32 %in, ptr %in.addr, align 4
+  %0 = load i32, ptr %in.addr, align 4
   %conv = sitofp i32 %0 to x86_fp80
-  store x86_fp80 %conv, x86_fp80* getelementptr inbounds ([2 x x86_fp80], [2 x x86_fp80]* @array, i64 0, i64 0), align 16
+  store x86_fp80 %conv, ptr @array, align 16
   ret void
 }
 
@@ -43,40 +43,38 @@ entry:
 define void @bar(i32 %in) #0 {
 entry:
   %in.addr = alloca i32, align 4
-  store i32 %in, i32* %in.addr, align 4
-  %0 = load i32, i32* %in.addr, align 4
+  store i32 %in, ptr %in.addr, align 4
+  %0 = load i32, ptr %in.addr, align 4
   %conv = sitofp i32 %0 to x86_fp80
-  store x86_fp80 %conv, x86_fp80* getelementptr inbounds ([2 x x86_fp80], [2 x x86_fp80]* @array, i64 0, i64 1), align 16
+  store x86_fp80 %conv, ptr getelementptr inbounds ([2 x x86_fp80], ptr @array, i64 0, i64 1), align 16
   ret void
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define i32 @main(i32 %argc, i8** %argv) #0 !dbg !14 {
+define i32 @main(i32 %argc, ptr %argv) #0 !dbg !14 {
 entry:
   %retval = alloca i32, align 4
   %argc.addr = alloca i32, align 4
-  %argv.addr = alloca i8**, align 8
-  store i32 0, i32* %retval, align 4
-  store i32 %argc, i32* %argc.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %argc.addr, metadata !21, metadata !DIExpression()), !dbg !22
-  store i8** %argv, i8*** %argv.addr, align 8
-  call void @llvm.dbg.declare(metadata i8*** %argv.addr, metadata !23, metadata !DIExpression()), !dbg !24
-  %0 = load i8**, i8*** %argv.addr, align 8, !dbg !25
-  %arrayidx = getelementptr inbounds i8*, i8** %0, i64 0, !dbg !25
-  %1 = load i8*, i8** %arrayidx, align 8, !dbg !25
-  %arrayidx1 = getelementptr inbounds i8, i8* %1, i64 1, !dbg !25
-  %2 = load i8, i8* %arrayidx1, align 1, !dbg !25
+  %argv.addr = alloca ptr, align 8
+  store i32 0, ptr %retval, align 4
+  store i32 %argc, ptr %argc.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !21, metadata !DIExpression()), !dbg !22
+  store ptr %argv, ptr %argv.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !23, metadata !DIExpression()), !dbg !24
+  %0 = load ptr, ptr %argv.addr, align 8, !dbg !25
+  %1 = load ptr, ptr %0, align 8, !dbg !25
+  %arrayidx1 = getelementptr inbounds i8, ptr %1, i64 1, !dbg !25
+  %2 = load i8, ptr %arrayidx1, align 1, !dbg !25
   %conv = sext i8 %2 to i32, !dbg !25
   call void @foo(i32 %conv), !dbg !26
-  %3 = load i8**, i8*** %argv.addr, align 8, !dbg !27
-  %arrayidx2 = getelementptr inbounds i8*, i8** %3, i64 0, !dbg !27
-  %4 = load i8*, i8** %arrayidx2, align 8, !dbg !27
-  %arrayidx3 = getelementptr inbounds i8, i8* %4, i64 1, !dbg !27
-  %5 = load i8, i8* %arrayidx3, align 1, !dbg !27
+  %3 = load ptr, ptr %argv.addr, align 8, !dbg !27
+  %4 = load ptr, ptr %3, align 8, !dbg !27
+  %arrayidx3 = getelementptr inbounds i8, ptr %4, i64 1, !dbg !27
+  %5 = load i8, ptr %arrayidx3, align 1, !dbg !27
   %conv4 = sext i8 %5 to i32, !dbg !27
   call void @bar(i32 %conv4), !dbg !28
-  %6 = load x86_fp80, x86_fp80* getelementptr inbounds ([2 x x86_fp80], [2 x x86_fp80]* @array, i64 0, i64 0), align 16, !dbg !29
-  %7 = load x86_fp80, x86_fp80* getelementptr inbounds ([2 x x86_fp80], [2 x x86_fp80]* @array, i64 0, i64 1), align 16, !dbg !30
+  %6 = load x86_fp80, ptr @array, align 16, !dbg !29
+  %7 = load x86_fp80, ptr getelementptr inbounds ([2 x x86_fp80], ptr @array, i64 0, i64 1), align 16, !dbg !30
   %add = fadd x86_fp80 %6, %7, !dbg !31
   %cmp = fcmp ogt x86_fp80 %add, 0xK00000000000000000000, !dbg !32
   %conv5 = zext i1 %cmp to i32, !dbg !32

diff  --git a/llvm/test/DebugInfo/X86/global-sra-fp80-struct.ll b/llvm/test/DebugInfo/X86/global-sra-fp80-struct.ll
index 6404aad0efa1a..7adc40c5b844d 100644
--- a/llvm/test/DebugInfo/X86/global-sra-fp80-struct.ll
+++ b/llvm/test/DebugInfo/X86/global-sra-fp80-struct.ll
@@ -35,10 +35,10 @@ target triple = "x86_64-unknown-linux-gnu"
 define void @foo(i32 %in) #0 {
 entry:
   %in.addr = alloca i32, align 4
-  store i32 %in, i32* %in.addr, align 4
-  %0 = load i32, i32* %in.addr, align 4
+  store i32 %in, ptr %in.addr, align 4
+  %0 = load i32, ptr %in.addr, align 4
   %conv = sitofp i32 %0 to x86_fp80
-  store x86_fp80 %conv, x86_fp80* getelementptr inbounds (%struct.mystruct, %struct.mystruct* @static_struct, i32 0, i32 0), align 16
+  store x86_fp80 %conv, ptr @static_struct, align 16
   ret void
 }
 
@@ -46,39 +46,37 @@ entry:
 define void @bar(i32 %in) #0 {
 entry:
   %in.addr = alloca i32, align 4
-  store i32 %in, i32* %in.addr, align 4
-  %0 = load i32, i32* %in.addr, align 4
-  store i32 %0, i32* getelementptr inbounds (%struct.mystruct, %struct.mystruct* @static_struct, i32 0, i32 1), align 16
+  store i32 %in, ptr %in.addr, align 4
+  %0 = load i32, ptr %in.addr, align 4
+  store i32 %0, ptr getelementptr inbounds (%struct.mystruct, ptr @static_struct, i32 0, i32 1), align 16
   ret void
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define i32 @main(i32 %argc, i8** %argv) #0 !dbg !16 {
+define i32 @main(i32 %argc, ptr %argv) #0 !dbg !16 {
 entry:
   %retval = alloca i32, align 4
   %argc.addr = alloca i32, align 4
-  %argv.addr = alloca i8**, align 8
-  store i32 0, i32* %retval, align 4
-  store i32 %argc, i32* %argc.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %argc.addr, metadata !22, metadata !DIExpression()), !dbg !23
-  store i8** %argv, i8*** %argv.addr, align 8
-  call void @llvm.dbg.declare(metadata i8*** %argv.addr, metadata !24, metadata !DIExpression()), !dbg !25
-  %0 = load i8**, i8*** %argv.addr, align 8, !dbg !26
-  %arrayidx = getelementptr inbounds i8*, i8** %0, i64 0, !dbg !26
-  %1 = load i8*, i8** %arrayidx, align 8, !dbg !26
-  %arrayidx1 = getelementptr inbounds i8, i8* %1, i64 1, !dbg !26
-  %2 = load i8, i8* %arrayidx1, align 1, !dbg !26
+  %argv.addr = alloca ptr, align 8
+  store i32 0, ptr %retval, align 4
+  store i32 %argc, ptr %argc.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !22, metadata !DIExpression()), !dbg !23
+  store ptr %argv, ptr %argv.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !24, metadata !DIExpression()), !dbg !25
+  %0 = load ptr, ptr %argv.addr, align 8, !dbg !26
+  %1 = load ptr, ptr %0, align 8, !dbg !26
+  %arrayidx1 = getelementptr inbounds i8, ptr %1, i64 1, !dbg !26
+  %2 = load i8, ptr %arrayidx1, align 1, !dbg !26
   %conv = sext i8 %2 to i32, !dbg !26
   call void @foo(i32 %conv), !dbg !27
-  %3 = load i8**, i8*** %argv.addr, align 8, !dbg !28
-  %arrayidx2 = getelementptr inbounds i8*, i8** %3, i64 0, !dbg !28
-  %4 = load i8*, i8** %arrayidx2, align 8, !dbg !28
-  %arrayidx3 = getelementptr inbounds i8, i8* %4, i64 1, !dbg !28
-  %5 = load i8, i8* %arrayidx3, align 1, !dbg !28
+  %3 = load ptr, ptr %argv.addr, align 8, !dbg !28
+  %4 = load ptr, ptr %3, align 8, !dbg !28
+  %arrayidx3 = getelementptr inbounds i8, ptr %4, i64 1, !dbg !28
+  %5 = load i8, ptr %arrayidx3, align 1, !dbg !28
   %conv4 = sext i8 %5 to i32, !dbg !28
   call void @bar(i32 %conv4), !dbg !29
-  %6 = load x86_fp80, x86_fp80* getelementptr inbounds (%struct.mystruct, %struct.mystruct* @static_struct, i32 0, i32 0), align 16, !dbg !30
-  %7 = load i32, i32* getelementptr inbounds (%struct.mystruct, %struct.mystruct* @static_struct, i32 0, i32 1), align 16, !dbg !31
+  %6 = load x86_fp80, ptr @static_struct, align 16, !dbg !30
+  %7 = load i32, ptr getelementptr inbounds (%struct.mystruct, ptr @static_struct, i32 0, i32 1), align 16, !dbg !31
   %conv5 = sitofp i32 %7 to x86_fp80, !dbg !32
   %add = fadd x86_fp80 %6, %conv5, !dbg !33
   %cmp = fcmp ogt x86_fp80 %add, 0xK00000000000000000000, !dbg !34

diff  --git a/llvm/test/DebugInfo/X86/global-sra-struct-fit-segment.ll b/llvm/test/DebugInfo/X86/global-sra-struct-fit-segment.ll
index af23141877618..3e0b5c69dcbda 100644
--- a/llvm/test/DebugInfo/X86/global-sra-struct-fit-segment.ll
+++ b/llvm/test/DebugInfo/X86/global-sra-struct-fit-segment.ll
@@ -27,56 +27,40 @@
 @.C330_sub_ = internal constant i32 0
 @.C332_sub_ = internal constant i32 1
 
-define void @sub_(i64* noalias %inode, i64* noalias %node) !dbg !2 {
+define void @sub_(ptr noalias %inode, ptr noalias %node) !dbg !2 {
 L.entry:
-  call void @llvm.dbg.declare(metadata i64* %inode, metadata !16, metadata !DIExpression()), !dbg !17
-  call void @llvm.dbg.declare(metadata i64* %node, metadata !18, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %inode, metadata !16, metadata !DIExpression()), !dbg !17
+  call void @llvm.dbg.declare(metadata ptr %node, metadata !18, metadata !DIExpression()), !dbg !17
   br label %L.LB1_360
 
 L.LB1_360:                                        ; preds = %L.entry
-  %0 = bitcast i64* %inode to i32*, !dbg !19
-  %1 = load i32, i32* %0, align 4, !dbg !19
-  %2 = icmp ne i32 %1, 1, !dbg !19
-  br i1 %2, label %L.LB1_356, label %L.LB1_370, !dbg !19
+  %0 = load i32, ptr %inode, align 4, !dbg !19
+  %1 = icmp ne i32 %0, 1, !dbg !19
+  br i1 %1, label %L.LB1_356, label %L.LB1_370, !dbg !19
 
 L.LB1_370:                                        ; preds = %L.LB1_360
-  %3 = bitcast i64* %node to i32*, !dbg !20
-  %4 = load i32, i32* %3, align 4, !dbg !20
-  %5 = bitcast %struct.BSS1* @.BSS1 to i32*, !dbg !20
-  store i32 %4, i32* %5, align 4, !dbg !20
-  %6 = bitcast i64* %node to i32*, !dbg !21
-  %7 = load i32, i32* %6, align 4, !dbg !21
-  %8 = bitcast %struct.BSS1* @.BSS1 to i8*, !dbg !21
-  %9 = getelementptr i8, i8* %8, i64 4, !dbg !21
-  %10 = bitcast i8* %9 to i32*, !dbg !21
-  store i32 %7, i32* %10, align 4, !dbg !21
-  %11 = bitcast %struct.BSS1* @.BSS1 to i8*, !dbg !22
-  %12 = getelementptr i8, i8* %11, i64 8, !dbg !22
-  %13 = bitcast i8* %12 to i32*, !dbg !22
-  store i32 0, i32* %13, align 4, !dbg !22
+  %2 = load i32, ptr %node, align 4, !dbg !20
+  store i32 %2, ptr @.BSS1, align 4, !dbg !20
+  %3 = load i32, ptr %node, align 4, !dbg !21
+  %4 = getelementptr i8, ptr @.BSS1, i64 4, !dbg !21
+  store i32 %3, ptr %4, align 4, !dbg !21
+  %5 = getelementptr i8, ptr @.BSS1, i64 8, !dbg !22
+  store i32 0, ptr %5, align 4, !dbg !22
   br label %L.LB1_357, !dbg !23
 
 L.LB1_356:                                        ; preds = %L.LB1_360
-  %14 = bitcast i64* %node to i32*, !dbg !24
-  %15 = load i32, i32* %14, align 4, !dbg !24
-  %16 = add nsw i32 %15, 1, !dbg !24
-  %17 = bitcast %struct.BSS1* @.BSS1 to i32*, !dbg !24
-  %18 = load i32, i32* %17, align 4, !dbg !24
-  %19 = add nsw i32 %16, %18, !dbg !24
-  %20 = bitcast %struct.BSS1* @.BSS1 to i8*, !dbg !24
-  %21 = getelementptr i8, i8* %20, i64 4, !dbg !24
-  %22 = bitcast i8* %21 to i32*, !dbg !24
-  %23 = load i32, i32* %22, align 4, !dbg !24
-  %24 = add nsw i32 %19, %23, !dbg !24
-  %25 = bitcast %struct.BSS1* @.BSS1 to i8*, !dbg !24
-  %26 = getelementptr i8, i8* %25, i64 8, !dbg !24
-  %27 = bitcast i8* %26 to i32*, !dbg !24
-  %28 = load i32, i32* %27, align 4, !dbg !24
-  %29 = add nsw i32 %24, %28, !dbg !24
-  %30 = bitcast %struct.BSS1* @.BSS1 to i8*, !dbg !24
-  %31 = getelementptr i8, i8* %30, i64 8, !dbg !24
-  %32 = bitcast i8* %31 to i32*, !dbg !24
-  store i32 %29, i32* %32, align 4, !dbg !24
+  %6 = load i32, ptr %node, align 4, !dbg !24
+  %7 = add nsw i32 %6, 1, !dbg !24
+  %8 = load i32, ptr @.BSS1, align 4, !dbg !24
+  %9 = add nsw i32 %7, %8, !dbg !24
+  %10 = getelementptr i8, ptr @.BSS1, i64 4, !dbg !24
+  %11 = load i32, ptr %10, align 4, !dbg !24
+  %12 = add nsw i32 %9, %11, !dbg !24
+  %13 = getelementptr i8, ptr @.BSS1, i64 8, !dbg !24
+  %14 = load i32, ptr %13, align 4, !dbg !24
+  %15 = add nsw i32 %12, %14, !dbg !24
+  %16 = getelementptr i8, ptr @.BSS1, i64 8, !dbg !24
+  store i32 %15, ptr %16, align 4, !dbg !24
   br label %L.LB1_354, !dbg !25
 
 L.LB1_357:                                        ; preds = %L.LB1_370

diff  --git a/llvm/test/DebugInfo/X86/gnu-names.ll b/llvm/test/DebugInfo/X86/gnu-names.ll
index 2b99f6381772a..fe535e662dc04 100644
--- a/llvm/test/DebugInfo/X86/gnu-names.ll
+++ b/llvm/test/DebugInfo/X86/gnu-names.ll
@@ -49,8 +49,8 @@ define void @_Z3funv() local_unnamed_addr #0 !dbg !11 {
 }
 
 ; Function Attrs: norecurse uwtable
-define weak_odr hidden i32* @_ZTW3var() local_unnamed_addr #1 {
-  ret i32* @var
+define weak_odr hidden ptr @_ZTW3var() local_unnamed_addr #1 {
+  ret ptr @var
 }
 
 attributes #0 = { norecurse nounwind readnone uwtable }

diff  --git a/llvm/test/DebugInfo/X86/gnu-public-names.ll b/llvm/test/DebugInfo/X86/gnu-public-names.ll
index d19358ee6e58f..51e1dab3710bf 100644
--- a/llvm/test/DebugInfo/X86/gnu-public-names.ll
+++ b/llvm/test/DebugInfo/X86/gnu-public-names.ll
@@ -240,13 +240,13 @@
 @_ZN5outer12_GLOBAL__N_11cE = internal global i32 0, align 4, !dbg !50
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local void @_ZN1C15member_functionEv(%struct.C* %this) #0 align 2 !dbg !61 {
+define dso_local void @_ZN1C15member_functionEv(ptr %this) #0 align 2 !dbg !61 {
 entry:
-  %this.addr = alloca %struct.C*, align 8
-  store %struct.C* %this, %struct.C** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.C** %this.addr, metadata !62, metadata !DIExpression()), !dbg !64
-  %this1 = load %struct.C*, %struct.C** %this.addr, align 8
-  store i32 0, i32* @_ZN1C22static_member_variableE, align 4, !dbg !65
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !62, metadata !DIExpression()), !dbg !64
+  %this1 = load ptr, ptr %this.addr, align 8
+  store i32 0, ptr @_ZN1C22static_member_variableE, align 4, !dbg !65
   ret void, !dbg !66
 }
 
@@ -256,7 +256,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 ; Function Attrs: noinline nounwind optnone uwtable
 define dso_local i32 @_ZN1C22static_member_functionEv() #0 align 2 !dbg !67 {
 entry:
-  %0 = load i32, i32* @_ZN1C22static_member_variableE, align 4, !dbg !68
+  %0 = load i32, ptr @_ZN1C22static_member_variableE, align 4, !dbg !68
   ret i32 %0, !dbg !69
 }
 
@@ -269,26 +269,26 @@ entry:
 ; Function Attrs: noinline nounwind optnone uwtable
 define dso_local void @_ZN2ns25global_namespace_functionEv() #0 !dbg !72 {
 entry:
-  call void @_ZN1C15member_functionEv(%struct.C* @global_variable), !dbg !75
+  call void @_ZN1C15member_functionEv(ptr @global_variable), !dbg !75
   ret void, !dbg !76
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local i32* @_Z2f3v() #0 !dbg !39 {
+define dso_local ptr @_Z2f3v() #0 !dbg !39 {
 entry:
-  ret i32* @_ZZ2f3vE1z, !dbg !77
+  ret ptr @_ZZ2f3vE1z, !dbg !77
 }
 
 ; Function Attrs: noinline nounwind optnone uwtable
 define dso_local i32 @_Z2f7v() #0 !dbg !78 {
 entry:
-  %0 = load i32, i32* @_ZN12_GLOBAL__N_11iE, align 4, !dbg !79
-  %call = call i32* @_Z2f3v(), !dbg !80
-  %1 = load i32, i32* %call, align 4, !dbg !81
+  %0 = load i32, ptr @_ZN12_GLOBAL__N_11iE, align 4, !dbg !79
+  %call = call ptr @_Z2f3v(), !dbg !80
+  %1 = load i32, ptr %call, align 4, !dbg !81
   %add = add nsw i32 %0, %1, !dbg !82
-  %2 = load i32, i32* @_ZN12_GLOBAL__N_15inner1bE, align 4, !dbg !83
+  %2 = load i32, ptr @_ZN12_GLOBAL__N_15inner1bE, align 4, !dbg !83
   %add1 = add nsw i32 %add, %2, !dbg !84
-  %3 = load i32, i32* @_ZN5outer12_GLOBAL__N_11cE, align 4, !dbg !85
+  %3 = load i32, ptr @_ZN5outer12_GLOBAL__N_11cE, align 4, !dbg !85
   %add2 = add nsw i32 %add1, %3, !dbg !86
   %add3 = add nsw i32 %add2, 0, !dbg !87
   %add4 = add nsw i32 %add3, 0, !dbg !88

diff  --git a/llvm/test/DebugInfo/X86/implicit_value-double.ll b/llvm/test/DebugInfo/X86/implicit_value-double.ll
index 956c896b8d34b..03f7a018ebc4a 100644
--- a/llvm/test/DebugInfo/X86/implicit_value-double.ll
+++ b/llvm/test/DebugInfo/X86/implicit_value-double.ll
@@ -37,7 +37,7 @@ entry:
   call void @llvm.dbg.value(metadata double 3.140000e+00, metadata !12, metadata !DIExpression()), !dbg !14
   call void @llvm.dbg.value(metadata double 4.700000e+01, metadata !17, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !14
   call void @llvm.dbg.value(metadata double 7.400000e+01, metadata !17, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !14
-  %puts = call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @str, i64 0, i64 0)), !dbg !15
+  %puts = call i32 @puts(ptr nonnull dereferenceable(1) @str), !dbg !15
   call void @llvm.dbg.value(metadata double undef, metadata !12, metadata !DIExpression()), !dbg !14
   ret i32 0, !dbg !16
 }
@@ -46,7 +46,7 @@ entry:
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
 
 ; Function Attrs: nofree nounwind
-declare i32 @puts(i8* nocapture readonly) local_unnamed_addr #2
+declare i32 @puts(ptr nocapture readonly) local_unnamed_addr #2
 
 attributes #0 = { nofree nounwind uwtable }
 attributes #1 = { nounwind readnone speculatable willreturn }

diff  --git a/llvm/test/DebugInfo/X86/implicit_value-float.ll b/llvm/test/DebugInfo/X86/implicit_value-float.ll
index aa0e639de1438..bf8ff0bb280ac 100644
--- a/llvm/test/DebugInfo/X86/implicit_value-float.ll
+++ b/llvm/test/DebugInfo/X86/implicit_value-float.ll
@@ -36,7 +36,7 @@ target triple = "x86_64-unknown-linux-gnu"
 define dso_local i32 @main() local_unnamed_addr #0 !dbg !7 {
 entry:
   call void @llvm.dbg.value(metadata float 0x40091EB860000000, metadata !12, metadata !DIExpression()), !dbg !14
-  %puts = call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @str, i64 0, i64 0)), !dbg !15
+  %puts = call i32 @puts(ptr nonnull dereferenceable(1) @str), !dbg !15
   call void @llvm.dbg.value(metadata float undef, metadata !12, metadata !DIExpression()), !dbg !14
   ret i32 0, !dbg !16
 }
@@ -45,7 +45,7 @@ entry:
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
 
 ; Function Attrs: nofree nounwind
-declare i32 @puts(i8* nocapture readonly) local_unnamed_addr #2
+declare i32 @puts(ptr nocapture readonly) local_unnamed_addr #2
 
 attributes #0 = { nofree nounwind uwtable }
 attributes #1 = { nounwind readnone speculatable willreturn }

diff  --git a/llvm/test/DebugInfo/X86/inline-member-function.ll b/llvm/test/DebugInfo/X86/inline-member-function.ll
index 31cc5b0fa5cff..ecb65e964389f 100644
--- a/llvm/test/DebugInfo/X86/inline-member-function.ll
+++ b/llvm/test/DebugInfo/X86/inline-member-function.ll
@@ -40,18 +40,18 @@ source_filename = "test/DebugInfo/X86/inline-member-function.ll"
 ; Function Attrs: uwtable
 define i32 @main() #0 !dbg !17 {
 entry:
-  %this.addr.i = alloca %struct.foo*, align 8
+  %this.addr.i = alloca ptr, align 8
   %x.addr.i = alloca i32, align 4
   %retval = alloca i32, align 4
   %tmp = alloca %struct.foo, align 1
-  store i32 0, i32* %retval
-  %0 = load i32, i32* @i, align 4, !dbg !20
-  store %struct.foo* %tmp, %struct.foo** %this.addr.i, align 8
-  call void @llvm.dbg.declare(metadata %struct.foo** %this.addr.i, metadata !21, metadata !24), !dbg !25
-  store i32 %0, i32* %x.addr.i, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr.i, metadata !26, metadata !24), !dbg !27
-  %this1.i = load %struct.foo*, %struct.foo** %this.addr.i
-  %1 = load i32, i32* %x.addr.i, align 4, !dbg !27
+  store i32 0, ptr %retval
+  %0 = load i32, ptr @i, align 4, !dbg !20
+  store ptr %tmp, ptr %this.addr.i, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr.i, metadata !21, metadata !24), !dbg !25
+  store i32 %0, ptr %x.addr.i, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr.i, metadata !26, metadata !24), !dbg !27
+  %this1.i = load ptr, ptr %this.addr.i
+  %1 = load i32, ptr %x.addr.i, align 4, !dbg !27
   %add.i = add nsw i32 %1, 2, !dbg !27
   ret i32 %add.i, !dbg !20
 }

diff  --git a/llvm/test/DebugInfo/X86/inline-seldag-test.ll b/llvm/test/DebugInfo/X86/inline-seldag-test.ll
index 4df3a66e965e1..6417612a54580 100644
--- a/llvm/test/DebugInfo/X86/inline-seldag-test.ll
+++ b/llvm/test/DebugInfo/X86/inline-seldag-test.ll
@@ -27,14 +27,14 @@ define void @func() #0 !dbg !4 {
 entry:
   %y.addr.i = alloca i32, align 4
   %x = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %x, metadata !15, metadata !DIExpression()), !dbg !17
-  %0 = load volatile i32, i32* %x, align 4, !dbg !18
-  store i32 %0, i32* %y.addr.i, align 4
-  call void @llvm.dbg.declare(metadata i32* %y.addr.i, metadata !19, metadata !DIExpression()), !dbg !20
-  %1 = load i32, i32* %y.addr.i, align 4, !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %x, metadata !15, metadata !DIExpression()), !dbg !17
+  %0 = load volatile i32, ptr %x, align 4, !dbg !18
+  store i32 %0, ptr %y.addr.i, align 4
+  call void @llvm.dbg.declare(metadata ptr %y.addr.i, metadata !19, metadata !DIExpression()), !dbg !20
+  %1 = load i32, ptr %y.addr.i, align 4, !dbg !21
   %tobool.i = icmp ne i32 %1, 0, !dbg !21
   %cond.i = select i1 %tobool.i, i32 4, i32 7, !dbg !21
-  store volatile i32 %cond.i, i32* %x, align 4, !dbg !18
+  store volatile i32 %cond.i, ptr %x, align 4, !dbg !18
   ret void, !dbg !22
 }
 

diff  --git a/llvm/test/DebugInfo/X86/inlined-indirect-value.ll b/llvm/test/DebugInfo/X86/inlined-indirect-value.ll
index 4f70ea3da599a..684149c7658d9 100644
--- a/llvm/test/DebugInfo/X86/inlined-indirect-value.ll
+++ b/llvm/test/DebugInfo/X86/inlined-indirect-value.ll
@@ -29,12 +29,12 @@ define i32 @main() !dbg !12 {
 ; CHECK: movl $1
 
 entry:
-  %0 = load volatile i32, i32* @x, align 4, !dbg !15, !tbaa !19
+  %0 = load volatile i32, ptr @x, align 4, !dbg !15, !tbaa !19
   %mul.i = mul nsw i32 %0, 3, !dbg !23
   %cmp.i = icmp slt i32 %mul.i, 14, !dbg !24
   %..i = select i1 %cmp.i, i32 1, i32 2, !dbg !25
-  store volatile i32 %..i, i32* @x, align 4, !dbg !27, !tbaa !19
-  %1 = load volatile i32, i32* @x, align 4, !dbg !28, !tbaa !19
+  store volatile i32 %..i, ptr @x, align 4, !dbg !27, !tbaa !19
+  %1 = load volatile i32, ptr @x, align 4, !dbg !28, !tbaa !19
   %tobool = icmp ne i32 %1, 0, !dbg !28
   br i1 %tobool, label %select.end, label %select.mid
 
@@ -43,7 +43,7 @@ select.mid:                                       ; preds = %entry
 
 select.end:                                       ; preds = %select.mid, %entry
   %cond = phi i32 [ 1, %entry ], [ 2, %select.mid ]
-  store volatile i32 %cond, i32* @x, align 4, !dbg !29, !tbaa !19
+  store volatile i32 %cond, ptr @x, align 4, !dbg !29, !tbaa !19
   ret i32 0, !dbg !30
 }
 

diff  --git a/llvm/test/DebugInfo/X86/instcombine-demanded-bits-salvage.ll b/llvm/test/DebugInfo/X86/instcombine-demanded-bits-salvage.ll
index 9865ba1959a13..198dd6d4756d9 100644
--- a/llvm/test/DebugInfo/X86/instcombine-demanded-bits-salvage.ll
+++ b/llvm/test/DebugInfo/X86/instcombine-demanded-bits-salvage.ll
@@ -7,7 +7,7 @@
 
 define dso_local i32 @p() local_unnamed_addr !dbg !11 {
 entry:
-  %conv = load i32, i32* @a, align 4, !dbg !14
+  %conv = load i32, ptr @a, align 4, !dbg !14
   %0 = and i32 %conv, 65535, !dbg !14
   ; CHECK: metadata !DIExpression(DW_OP_constu, 65535, DW_OP_and, DW_OP_stack_value))
   call void @llvm.dbg.value(metadata i32 %0, metadata !15, metadata !DIExpression()), !dbg !14

diff  --git a/llvm/test/DebugInfo/X86/instcombine-instrinsics.ll b/llvm/test/DebugInfo/X86/instcombine-instrinsics.ll
index f9cf99282f2d0..c25cbbffee1ef 100644
--- a/llvm/test/DebugInfo/X86/instcombine-instrinsics.ll
+++ b/llvm/test/DebugInfo/X86/instcombine-instrinsics.ll
@@ -2,8 +2,8 @@
 ; Verify that we emit the same intrinsic at most once.
 ; rdar://problem/13056109
 ;
-; CHECK: call void @llvm.dbg.value(metadata %struct.i14** %p
-; CHECK-NOT: call void @llvm.dbg.value(metadata %struct.i14** %p
+; CHECK: call void @llvm.dbg.value(metadata ptr %p
+; CHECK-NOT: call void @llvm.dbg.value(metadata ptr %p
 ; CHECK-NEXT: call i32 @foo
 ; CHECK: ret
 ;
@@ -12,10 +12,10 @@
 ;   long i;
 ; } i14;
 ;
-; int foo(i14**);
+; int foo(ptr);
 ;
 ;   void init() {
-;     i14* p = 0;
+;     ptr p = 0;
 ;     foo(&p);
 ;     p->i |= 4;
 ;     foo(&p);
@@ -29,23 +29,22 @@ target triple = "x86_64-apple-macosx10.9.0"
 
 ; Function Attrs: nounwind ssp uwtable
 define void @init() #0 !dbg !4 {
-  %p = alloca %struct.i14*, align 8
-  call void @llvm.dbg.declare(metadata %struct.i14** %p, metadata !11, metadata !DIExpression()), !dbg !18
-  store %struct.i14* null, %struct.i14** %p, align 8, !dbg !18
-  %1 = call i32 @foo(%struct.i14** %p), !dbg !19
-  %2 = load %struct.i14*, %struct.i14** %p, align 8, !dbg !20
-  %3 = getelementptr inbounds %struct.i14, %struct.i14* %2, i32 0, i32 0, !dbg !20
-  %4 = load i64, i64* %3, align 8, !dbg !20
-  %5 = or i64 %4, 4, !dbg !20
-  store i64 %5, i64* %3, align 8, !dbg !20
-  %6 = call i32 @foo(%struct.i14** %p), !dbg !21
+  %p = alloca ptr, align 8
+  call void @llvm.dbg.declare(metadata ptr %p, metadata !11, metadata !DIExpression()), !dbg !18
+  store ptr null, ptr %p, align 8, !dbg !18
+  %1 = call i32 @foo(ptr %p), !dbg !19
+  %2 = load ptr, ptr %p, align 8, !dbg !20
+  %3 = load i64, ptr %2, align 8, !dbg !20
+  %4 = or i64 %3, 4, !dbg !20
+  store i64 %4, ptr %2, align 8, !dbg !20
+  %5 = call i32 @foo(ptr %p), !dbg !21
   ret void, !dbg !22
 }
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare i32 @foo(%struct.i14**)
+declare i32 @foo(ptr)
 
 attributes #0 = { nounwind ssp uwtable }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-dbg-declare.ll b/llvm/test/DebugInfo/X86/instr-ref-dbg-declare.ll
index 7536a712e72ad..97b9bf1324470 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-dbg-declare.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-dbg-declare.ll
@@ -20,7 +20,7 @@ target triple = "i686-pc-windows-msvc18.0.31101"
 %struct.incomplete_struct = type { i32 }
 
 @"\01?multi_dim_arr@@3PAY146DA" = global [2 x [5 x [7 x i8]]] zeroinitializer, align 1, !dbg !0
-@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global [3 x i8]* null, align 4, !dbg !6
+@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global ptr null, align 4, !dbg !6
 @"\01?incomplete_struct_arr@@3PAUincomplete_struct@@A" = global [3 x %struct.incomplete_struct] zeroinitializer, align 4, !dbg !16
 @"\01?typedef_arr@@3SDHD" = constant [4 x i32] zeroinitializer, align 4, !dbg !18
 
@@ -28,19 +28,18 @@ target triple = "i686-pc-windows-msvc18.0.31101"
 define void @"\01?foo@@YAXH at Z"(i32 %x) #0 !dbg !35 {
 entry:
   %x.addr = alloca i32, align 4
-  %saved_stack = alloca i8*, align 4
-  store i32 %x, i32* %x.addr, align 4
-  %0 = load i32, i32* %x.addr, align 4, !dbg !41
-  %1 = call i8* @llvm.stacksave(), !dbg !42
-  store i8* %1, i8** %saved_stack, align 4, !dbg !42
+  %saved_stack = alloca ptr, align 4
+  store i32 %x, ptr %x.addr, align 4
+  %0 = load i32, ptr %x.addr, align 4, !dbg !41
+  %1 = call ptr @llvm.stacksave(), !dbg !42
+  store ptr %1, ptr %saved_stack, align 4, !dbg !42
   %vla = alloca i32, i32 %0, align 4, !dbg !42
   ;; This dbg.declare turns into a DBG_INSTR_REF, rather than an argument
   ;; DBG_VALUE. It needs to keep the extra indirectness.
-  call void @llvm.dbg.declare(metadata i32* %vla, metadata !43, metadata !47), !dbg !48
-  %arrayidx = getelementptr inbounds i32, i32* %vla, i32 0, !dbg !49
-  store i32 0, i32* %arrayidx, align 4, !dbg !50
-  %2 = load i8*, i8** %saved_stack, align 4, !dbg !51
-  call void @llvm.stackrestore(i8* %2), !dbg !51
+  call void @llvm.dbg.declare(metadata ptr %vla, metadata !43, metadata !47), !dbg !48
+  store i32 0, ptr %vla, align 4, !dbg !50
+  %2 = load ptr, ptr %saved_stack, align 4, !dbg !51
+  call void @llvm.stackrestore(ptr %2), !dbg !51
   ret void, !dbg !51
 }
 
@@ -48,10 +47,10 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata)
 
 ; Function Attrs: nounwind
-declare i8* @llvm.stacksave()
+declare ptr @llvm.stacksave()
 
 ; Function Attrs: nounwind
-declare void @llvm.stackrestore(i8*)
+declare void @llvm.stackrestore(ptr)
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!32, !33}

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-dyn-alloca-win32.ll b/llvm/test/DebugInfo/X86/instr-ref-dyn-alloca-win32.ll
index 14f9fd166b184..aa6c87b54efbb 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-dyn-alloca-win32.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-dyn-alloca-win32.ll
@@ -32,7 +32,7 @@ target triple = "i686-pc-windows-msvc18.0.31101"
 %struct.incomplete_struct = type { i32 }
 
 @"\01?multi_dim_arr@@3PAY146DA" = global [2 x [5 x [7 x i8]]] zeroinitializer, align 1, !dbg !0
-@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global [3 x i8]* null, align 4, !dbg !6
+@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global ptr null, align 4, !dbg !6
 @"\01?incomplete_struct_arr@@3PAUincomplete_struct@@A" = global [3 x %struct.incomplete_struct] zeroinitializer, align 4, !dbg !16
 @"\01?typedef_arr@@3SDHD" = constant [4 x i32] zeroinitializer, align 4, !dbg !18
 
@@ -40,18 +40,17 @@ target triple = "i686-pc-windows-msvc18.0.31101"
 define void @"\01?foo@@YAXH at Z"(i32 %x) #0 !dbg !35 {
 entry:
   %x.addr = alloca i32, align 4
-  %saved_stack = alloca i8*, align 4
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !38, metadata !39), !dbg !40
-  %0 = load i32, i32* %x.addr, align 4, !dbg !41
-  %1 = call i8* @llvm.stacksave(), !dbg !42
-  store i8* %1, i8** %saved_stack, align 4, !dbg !42
+  %saved_stack = alloca ptr, align 4
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !38, metadata !39), !dbg !40
+  %0 = load i32, ptr %x.addr, align 4, !dbg !41
+  %1 = call ptr @llvm.stacksave(), !dbg !42
+  store ptr %1, ptr %saved_stack, align 4, !dbg !42
   %vla = alloca i32, i32 %0, align 4, !dbg !42
-  call void @llvm.dbg.declare(metadata i32* %vla, metadata !43, metadata !47), !dbg !48
-  %arrayidx = getelementptr inbounds i32, i32* %vla, i32 0, !dbg !49
-  store i32 0, i32* %arrayidx, align 4, !dbg !50
-  %2 = load i8*, i8** %saved_stack, align 4, !dbg !51
-  call void @llvm.stackrestore(i8* %2), !dbg !51
+  call void @llvm.dbg.declare(metadata ptr %vla, metadata !43, metadata !47), !dbg !48
+  store i32 0, ptr %vla, align 4, !dbg !50
+  %2 = load ptr, ptr %saved_stack, align 4, !dbg !51
+  call void @llvm.stackrestore(ptr %2), !dbg !51
   ret void, !dbg !51
 }
 
@@ -59,10 +58,10 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata)
 
 ; Function Attrs: nounwind
-declare i8* @llvm.stacksave()
+declare ptr @llvm.stacksave()
 
 ; Function Attrs: nounwind
-declare void @llvm.stackrestore(i8*)
+declare void @llvm.stackrestore(ptr)
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!32, !33}

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-dyn-alloca.ll b/llvm/test/DebugInfo/X86/instr-ref-dyn-alloca.ll
index 07b1c6e24c56f..5af743caee433 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-dyn-alloca.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-dyn-alloca.ll
@@ -19,7 +19,7 @@ target triple = "x86_64-pc-windows-msvc19.0.24210"
 %struct.incomplete_struct = type { i32 }
 
 @"\01?multi_dim_arr@@3PAY146DA" = global [2 x [5 x [7 x i8]]] zeroinitializer, align 1, !dbg !0
-@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global [3 x i8]* null, align 4, !dbg !6
+@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global ptr null, align 4, !dbg !6
 @"\01?incomplete_struct_arr@@3PAUincomplete_struct@@A" = global [3 x %struct.incomplete_struct] zeroinitializer, align 4, !dbg !16
 @"\01?typedef_arr@@3SDHD" = constant [4 x i32] zeroinitializer, align 4, !dbg !18
 
@@ -27,18 +27,17 @@ target triple = "x86_64-pc-windows-msvc19.0.24210"
 define void @"\01?foo@@YAXH at Z"(i32 %x) #0 !dbg !35 {
 entry:
   %x.addr = alloca i32, align 4
-  %saved_stack = alloca i8*, align 4
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !38, metadata !39), !dbg !40
-  %0 = load i32, i32* %x.addr, align 4, !dbg !41
-  %1 = call i8* @llvm.stacksave(), !dbg !42
-  store i8* %1, i8** %saved_stack, align 4, !dbg !42
+  %saved_stack = alloca ptr, align 4
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !38, metadata !39), !dbg !40
+  %0 = load i32, ptr %x.addr, align 4, !dbg !41
+  %1 = call ptr @llvm.stacksave(), !dbg !42
+  store ptr %1, ptr %saved_stack, align 4, !dbg !42
   %vla = alloca i32, i32 %0, align 4, !dbg !42
-  call void @llvm.dbg.declare(metadata i32* %vla, metadata !43, metadata !47), !dbg !48
-  %arrayidx = getelementptr inbounds i32, i32* %vla, i32 0, !dbg !49
-  store i32 0, i32* %arrayidx, align 4, !dbg !50
-  %2 = load i8*, i8** %saved_stack, align 4, !dbg !51
-  call void @llvm.stackrestore(i8* %2), !dbg !51
+  call void @llvm.dbg.declare(metadata ptr %vla, metadata !43, metadata !47), !dbg !48
+  store i32 0, ptr %vla, align 4, !dbg !50
+  %2 = load ptr, ptr %saved_stack, align 4, !dbg !51
+  call void @llvm.stackrestore(ptr %2), !dbg !51
   ret void, !dbg !51
 }
 
@@ -46,10 +45,10 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata)
 
 ; Function Attrs: nounwind
-declare i8* @llvm.stacksave()
+declare ptr @llvm.stacksave()
 
 ; Function Attrs: nounwind
-declare void @llvm.stackrestore(i8*)
+declare void @llvm.stackrestore(ptr)
 
 !llvm.dbg.cu = !{!2}
 !llvm.module.flags = !{!32, !33}

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-eh-landing-pad.ll b/llvm/test/DebugInfo/X86/instr-ref-eh-landing-pad.ll
index 49894989fb565..145b1da1898d8 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-eh-landing-pad.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-eh-landing-pad.ll
@@ -20,25 +20,25 @@
 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
- at _ZTIPi = external dso_local constant i8*
+ at _ZTIPi = external dso_local constant ptr
 
-define dso_local void @_Z1av() local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !8 {
+define dso_local void @_Z1av() local_unnamed_addr #0 personality ptr @__gxx_personality_v0 !dbg !8 {
 entry:
   invoke void @_Z1av()
           to label %try.cont unwind label %lpad, !dbg !17
 
 lpad:                                             ; preds = %entry
-  %0 = landingpad { i8*, i32 }
-          catch i8* bitcast (i8** @_ZTIPi to i8*), !dbg !19
-  %1 = extractvalue { i8*, i32 } %0, 1, !dbg !19
-  %2 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIPi to i8*)) #3, !dbg !20
+  %0 = landingpad { ptr, i32 }
+          catch ptr @_ZTIPi, !dbg !19
+  %1 = extractvalue { ptr, i32 } %0, 1, !dbg !19
+  %2 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIPi) #3, !dbg !20
   %matches = icmp eq i32 %1, %2, !dbg !20
   br i1 %matches, label %catch, label %eh.resume, !dbg !20
 
 catch:                                            ; preds = %lpad
-  %3 = extractvalue { i8*, i32 } %0, 0, !dbg !19
-  %4 = tail call i8* @__cxa_begin_catch(i8* %3) #3, !dbg !20
-  call void @llvm.dbg.value(metadata i8* %3, metadata !13, metadata !DIExpression(DW_OP_plus_uconst, 32, DW_OP_stack_value)), !dbg !21
+  %3 = extractvalue { ptr, i32 } %0, 0, !dbg !19
+  %4 = tail call ptr @__cxa_begin_catch(ptr %3) #3, !dbg !20
+  call void @llvm.dbg.value(metadata ptr %3, metadata !13, metadata !DIExpression(DW_OP_plus_uconst, 32, DW_OP_stack_value)), !dbg !21
   tail call void @__cxa_end_catch() #3, !dbg !22
   br label %try.cont, !dbg !22
 
@@ -46,15 +46,15 @@ try.cont:                                         ; preds = %entry, %catch
   ret void, !dbg !24
 
 eh.resume:                                        ; preds = %lpad
-  resume { i8*, i32 } %0, !dbg !20
+  resume { ptr, i32 } %0, !dbg !20
 }
 
 declare dso_local i32 @__gxx_personality_v0(...)
 
 ; Function Attrs: nofree nosync nounwind readnone
-declare i32 @llvm.eh.typeid.for(i8*) #1
+declare i32 @llvm.eh.typeid.for(ptr) #1
 
-declare dso_local i8* @__cxa_begin_catch(i8*) local_unnamed_addr
+declare dso_local ptr @__cxa_begin_catch(ptr) local_unnamed_addr
 
 declare dso_local void @__cxa_end_catch() local_unnamed_addr
 

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-framereg-read.ll b/llvm/test/DebugInfo/X86/instr-ref-framereg-read.ll
index 7ed037d7b652e..a87ea8a4bd356 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-framereg-read.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-framereg-read.ll
@@ -12,17 +12,17 @@
 ; CHECK: DBG_PHI $rbp
 
 declare void @llvm.dbg.value(metadata, metadata, metadata)
-declare i8 *@llvm.frameaddress.p0i8(i32)
+declare ptr @llvm.frameaddress.p0(i32)
 
  ; Function Attrs: mustprogress nofree nosync nounwind sspstrong uwtable
-define hidden i8 * @foo() !dbg !7 {
+define hidden ptr @foo() !dbg !7 {
 entry:
   br label  %notentry
 
 notentry:
-  %0 = tail call i8* @llvm.frameaddress.p0i8(i32 0), !dbg !12
-  call void @llvm.dbg.value(metadata i8* %0, metadata !11, metadata !DIExpression()), !dbg !12
-  ret i8 *%0
+  %0 = tail call ptr @llvm.frameaddress.p0(i32 0), !dbg !12
+  call void @llvm.dbg.value(metadata ptr %0, metadata !11, metadata !DIExpression()), !dbg !12
+  ret ptr %0
 }
 
 !llvm.dbg.cu = !{!0}

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-ir-reg-read.ll b/llvm/test/DebugInfo/X86/instr-ref-ir-reg-read.ll
index ff1ccd939d711..228c0a369e488 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-ir-reg-read.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-ir-reg-read.ll
@@ -20,7 +20,7 @@ target triple = "x86_64-cros-linux-gnu"
 ; Function Attrs: noredzone nounwind null_pointer_is_valid optsize sspstrong
 define dso_local void @switch_mm_irqs_off() local_unnamed_addr #0 !dbg !16 {
 entry:
-  %0 = load i32, i32* @c, align 4, !dbg !24
+  %0 = load i32, ptr @c, align 4, !dbg !24
   %tobool.not = icmp eq i32 %0, 0, !dbg !24
   br i1 %tobool.not, label %if.end, label %if.then, !dbg !25
 

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-opt-bisect.ll b/llvm/test/DebugInfo/X86/instr-ref-opt-bisect.ll
index 3afa9e611c121..215a73be1c4b6 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-opt-bisect.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-opt-bisect.ll
@@ -43,33 +43,32 @@ target triple = "x86_64-unknown-linux-gnu"
 %class.Class = type { i8 }
 
 ; Function Attrs: mustprogress uwtable
-define dso_local void @_Z4FuncP5Class(%class.Class* noundef %c) local_unnamed_addr !dbg !7 {
+define dso_local void @_Z4FuncP5Class(ptr noundef %c) local_unnamed_addr !dbg !7 {
 entry:
-  call void @llvm.dbg.value(metadata %class.Class* %c, metadata !15, metadata !DIExpression()), !dbg !16
-  %tobool.not = icmp eq %class.Class* %c, null, !dbg !17
+  call void @llvm.dbg.value(metadata ptr %c, metadata !15, metadata !DIExpression()), !dbg !16
+  %tobool.not = icmp eq ptr %c, null, !dbg !17
   br i1 %tobool.not, label %land.lhs.true, label %if.end, !dbg !19
 
 land.lhs.true:                                    ; preds = %entry
   %call = call noundef zeroext i1 @_Z4Condv(), !dbg !20
   call void @llvm.assume(i1 %call), !dbg !21
-  %call1 = call noalias noundef nonnull dereferenceable(1) i8* @_Znwm(i64 noundef 1), !dbg !22, !heapallocsite !12
-  %0 = bitcast i8* %call1 to %class.Class*, !dbg !22
-  call void @llvm.dbg.value(metadata %class.Class* %0, metadata !15, metadata !DIExpression()), !dbg !16
+  %call1 = call noalias noundef nonnull dereferenceable(1) ptr @_Znwm(i64 noundef 1), !dbg !22, !heapallocsite !12
+  call void @llvm.dbg.value(metadata ptr %call1, metadata !15, metadata !DIExpression()), !dbg !16
   br label %if.end, !dbg !23
 
 if.end:                                           ; preds = %land.lhs.true, %entry
-  %c.addr.0 = phi %class.Class* [ %c, %entry ], [ %0, %land.lhs.true ]
-  call void @llvm.dbg.value(metadata %class.Class* %c.addr.0, metadata !15, metadata !DIExpression()), !dbg !16
-  call void @_Z11DoSomethingR5Class(%class.Class* noundef nonnull align 1 dereferenceable(1) %c.addr.0), !dbg !24
+  %c.addr.0 = phi ptr [ %c, %entry ], [ %call1, %land.lhs.true ]
+  call void @llvm.dbg.value(metadata ptr %c.addr.0, metadata !15, metadata !DIExpression()), !dbg !16
+  call void @_Z11DoSomethingR5Class(ptr noundef nonnull align 1 dereferenceable(1) %c.addr.0), !dbg !24
   ret void, !dbg !25
 }
 
 declare !dbg !26 dso_local noundef zeroext i1 @_Z4Condv() local_unnamed_addr
 
 ; Function Attrs: nobuiltin allocsize(0)
-declare dso_local noundef nonnull i8* @_Znwm(i64 noundef) local_unnamed_addr
+declare dso_local noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr
 
-declare !dbg !30 dso_local void @_Z11DoSomethingR5Class(%class.Class* noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr
+declare !dbg !30 dso_local void @_Z11DoSomethingR5Class(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr
 
 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
 declare void @llvm.dbg.value(metadata, metadata, metadata)

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-opt-levels.ll b/llvm/test/DebugInfo/X86/instr-ref-opt-levels.ll
index 2a4fd334f2fad..23eaacac6a743 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-opt-levels.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-opt-levels.ll
@@ -32,17 +32,17 @@
 
 define dso_local i32 @main() local_unnamed_addr !dbg !7 {
   %1 = alloca i32, align 4
-  %2 = load i32, i32* @b, align 1, !dbg !13
+  %2 = load i32, ptr @b, align 1, !dbg !13
   call void @llvm.dbg.value(metadata i32 %2, metadata !12, metadata !DIExpression()), !dbg !13
-  store i32 %2, i32* %1, align 4, !dbg !13
+  store i32 %2, ptr %1, align 4, !dbg !13
   ret i32 0, !dbg !13
 }
 
 define dso_local i32 @fn_optnone() local_unnamed_addr #0 !dbg !27 {
   %1 = alloca i32, align 4
-  %2 = load i32, i32* @b, align 1, !dbg !33
+  %2 = load i32, ptr @b, align 1, !dbg !33
   call void @llvm.dbg.value(metadata i32 %2, metadata !32, metadata !DIExpression()), !dbg !33
-  store i32 %2, i32* %1, align 4, !dbg !33
+  store i32 %2, ptr %1, align 4, !dbg !33
   ret i32 0, !dbg !33
 }
 

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-sdag-empty-vreg.ll b/llvm/test/DebugInfo/X86/instr-ref-sdag-empty-vreg.ll
index 423da3c72fe06..64e1e8ea605b2 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-sdag-empty-vreg.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-sdag-empty-vreg.ll
@@ -14,7 +14,7 @@ target triple = "x86_64-unknown-unknown"
 
 %class.Color = type { i8 }
 
-define hidden void @_Z14drawXZWideLineR4Vec3RK5Colorf(%class.Color* %color, float %width) local_unnamed_addr !dbg !7 {
+define hidden void @_Z14drawXZWideLineR4Vec3RK5Colorf(ptr %color, float %width) local_unnamed_addr !dbg !7 {
 cond.false.i:
   br label %_ZN4Vec39normalizeEv.exit, !dbg !12
 

diff  --git a/llvm/test/DebugInfo/X86/instr-ref-selectiondag.ll b/llvm/test/DebugInfo/X86/instr-ref-selectiondag.ll
index 34eab5e2beea9..2f9f00ca594b4 100644
--- a/llvm/test/DebugInfo/X86/instr-ref-selectiondag.ll
+++ b/llvm/test/DebugInfo/X86/instr-ref-selectiondag.ll
@@ -139,13 +139,13 @@ entry:
   call void @llvm.dbg.value(metadata i64 %bar, metadata !21, metadata !DIExpression()), !dbg !22
   %0 = trunc i64 %bar to i32, !dbg !22
   call void @llvm.dbg.value(metadata i32 %0, metadata !21, metadata !DIExpression()), !dbg !22
-  store i32 %0, i32 *@glob32, !dbg !22
+  store i32 %0, ptr @glob32, !dbg !22
   %1 = trunc i32 %0 to i16, !dbg !22
   call void @llvm.dbg.value(metadata i16 %1, metadata !21, metadata !DIExpression()), !dbg !22
-  store i16 %1, i16 *@glob16, !dbg !22
+  store i16 %1, ptr @glob16, !dbg !22
   %2 = trunc i16 %1 to i8, !dbg !22
   call void @llvm.dbg.value(metadata i8 %2, metadata !21, metadata !DIExpression()), !dbg !22
-  store i8 %2, i8 *@glob8, !dbg !22
+  store i8 %2, ptr @glob8, !dbg !22
   ret i32 0, !dbg !22
 }
 
@@ -197,7 +197,7 @@ entry:
 
 slippers:
   call void @llvm.dbg.value(metadata i16 %moo, metadata !31, metadata !DIExpression()), !dbg !32
-  store i16 %moo, i16 *@glob16, !dbg !32
+  store i16 %moo, ptr @glob16, !dbg !32
   ret i32 0, !dbg !32
 
 shoes:
@@ -242,16 +242,16 @@ shoes:
 
 ; FASTISEL-INSTRREF-LABEL: bb.1.lala:
 ; FASTISEL-INSTRREF:      DBG_INSTR_REF 1, 0, ![[KNEES]], !DIExpression(DW_OP_deref),
-declare i64 @cheddar(i32 *%arg)
+declare i64 @cheddar(ptr %arg)
 
-define void @qux(i32* noalias sret(i32) %agg.result) !dbg !40 {
+define void @qux(ptr noalias sret(i32) %agg.result) !dbg !40 {
 entry:
-  call void @llvm.dbg.declare(metadata i32 *%agg.result, metadata !41, metadata !DIExpression()), !dbg !42
-  %foo = call i64 @cheddar(i32 *%agg.result), !dbg !42
+  call void @llvm.dbg.declare(metadata ptr %agg.result, metadata !41, metadata !DIExpression()), !dbg !42
+  %foo = call i64 @cheddar(ptr %agg.result), !dbg !42
   br label %lala
 
 lala:
-  call void @llvm.dbg.declare(metadata i32 *%agg.result, metadata !45, metadata !DIExpression()), !dbg !44
+  call void @llvm.dbg.declare(metadata ptr %agg.result, metadata !45, metadata !DIExpression()), !dbg !44
   ret void, !dbg !44
 }
 

diff  --git a/llvm/test/DebugInfo/X86/invalid-prologue-end.ll b/llvm/test/DebugInfo/X86/invalid-prologue-end.ll
index 6b4a31ca414ff..64445e6ba68c4 100644
--- a/llvm/test/DebugInfo/X86/invalid-prologue-end.ll
+++ b/llvm/test/DebugInfo/X86/invalid-prologue-end.ll
@@ -60,7 +60,7 @@
 define i32 @main() #0 !dbg !7 {
 entry:
   %a = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %a, metadata !11, metadata !DIExpression()), !dbg !12
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !11, metadata !DIExpression()), !dbg !12
   %call = call i32 @_Z7get_argv(), !dbg !13
   call void @_Z4funci(i32 %call), !dbg !14
   ret i32 0, !dbg !15

diff  --git a/llvm/test/DebugInfo/X86/invalidated-dbg-value-is-undef.ll b/llvm/test/DebugInfo/X86/invalidated-dbg-value-is-undef.ll
index b637f999289ec..b69021637c05a 100644
--- a/llvm/test/DebugInfo/X86/invalidated-dbg-value-is-undef.ll
+++ b/llvm/test/DebugInfo/X86/invalidated-dbg-value-is-undef.ll
@@ -15,7 +15,7 @@ target triple = "x86_64-unknown-linux-gnu"
 define dso_local i32 @intel_pmu_enable_bts() local_unnamed_addr !dbg !16 {
 entry:
   %0 = extractvalue { i32, i64 } zeroinitializer, 1
-  %1 = load i32, i32* @intel_pmu_enable_bts_config, align 4
+  %1 = load i32, ptr @intel_pmu_enable_bts_config, align 4
   call void @llvm.dbg.value(metadata !DIArgList(i64 %0, i32 %1), metadata !20, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_or, DW_OP_stack_value)), !dbg !23
   ret i32 %1
 }

diff  --git a/llvm/test/DebugInfo/X86/isel-cse-line.ll b/llvm/test/DebugInfo/X86/isel-cse-line.ll
index b005ea4207b5e..805f6d7dfb9e5 100644
--- a/llvm/test/DebugInfo/X86/isel-cse-line.ll
+++ b/llvm/test/DebugInfo/X86/isel-cse-line.ll
@@ -41,21 +41,21 @@ define i32 @main() !dbg !16 {
   %3 = alloca i64, align 8
   %4 = alloca double, align 8
   %5 = alloca double, align 8
-  store i32 0, i32* %1, align 4
-  call void @llvm.dbg.declare(metadata i64* %2, metadata !20, metadata !21), !dbg !22
-  %6 = load i64, i64* @glb_start, align 8, !dbg !23
-  store i64 %6, i64* %2, align 8, !dbg !22
-  call void @llvm.dbg.declare(metadata i64* %3, metadata !24, metadata !21), !dbg !25
-  %7 = load i64, i64* @glb_end, align 8, !dbg !26
-  store i64 %7, i64* %3, align 8, !dbg !25
-  call void @llvm.dbg.declare(metadata double* %4, metadata !27, metadata !21), !dbg !28
-  %8 = load i64, i64* %2, align 8, !dbg !29
+  store i32 0, ptr %1, align 4
+  call void @llvm.dbg.declare(metadata ptr %2, metadata !20, metadata !21), !dbg !22
+  %6 = load i64, ptr @glb_start, align 8, !dbg !23
+  store i64 %6, ptr %2, align 8, !dbg !22
+  call void @llvm.dbg.declare(metadata ptr %3, metadata !24, metadata !21), !dbg !25
+  %7 = load i64, ptr @glb_end, align 8, !dbg !26
+  store i64 %7, ptr %3, align 8, !dbg !25
+  call void @llvm.dbg.declare(metadata ptr %4, metadata !27, metadata !21), !dbg !28
+  %8 = load i64, ptr %2, align 8, !dbg !29
   %9 = uitofp i64 %8 to double, !dbg !29
-  store double %9, double* %4, align 8, !dbg !28
-  call void @llvm.dbg.declare(metadata double* %5, metadata !30, metadata !21), !dbg !31
-  %10 = load i64, i64* %3, align 8, !dbg !32
+  store double %9, ptr %4, align 8, !dbg !28
+  call void @llvm.dbg.declare(metadata ptr %5, metadata !30, metadata !21), !dbg !31
+  %10 = load i64, ptr %3, align 8, !dbg !32
   %11 = uitofp i64 %10 to double, !dbg !32
-  store double %11, double* %5, align 8, !dbg !31
+  store double %11, ptr %5, align 8, !dbg !31
   ret i32 0, !dbg !33
 }
 

diff  --git a/llvm/test/DebugInfo/X86/lexical-block-file-inline.ll b/llvm/test/DebugInfo/X86/lexical-block-file-inline.ll
index 13a8c0acb277b..07dcf23bb814e 100644
--- a/llvm/test/DebugInfo/X86/lexical-block-file-inline.ll
+++ b/llvm/test/DebugInfo/X86/lexical-block-file-inline.ll
@@ -69,24 +69,24 @@ define i32 @_Z3barv() #0 !dbg !4 {
 entry:
   %retval = alloca i32, align 4
   %y = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %y, metadata !18, metadata !19), !dbg !20
+  call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !19), !dbg !20
   br label %while.cond, !dbg !21
 
 while.cond:                                       ; preds = %entry
-  %0 = load i32, i32* %y, align 4, !dbg !22
+  %0 = load i32, ptr %y, align 4, !dbg !22
   %cmp = icmp slt i32 %0, 0, !dbg !22
   br i1 %cmp, label %while.body, label %while.end, !dbg !22
 
 while.body:                                       ; preds = %while.cond
-  store i32 2, i32* %retval, align 4, !dbg !24
+  store i32 2, ptr %retval, align 4, !dbg !24
   br label %return, !dbg !24
 
 while.end:                                        ; preds = %while.cond
-  store i32 0, i32* %retval, align 4, !dbg !26
+  store i32 0, ptr %retval, align 4, !dbg !26
   br label %return, !dbg !26
 
 return:                                           ; preds = %while.end, %while.body
-  %1 = load i32, i32* %retval, align 4, !dbg !27
+  %1 = load i32, ptr %retval, align 4, !dbg !27
   ret i32 %1, !dbg !27
 }
 
@@ -98,21 +98,21 @@ define i32 @_Z3foov() #2 !dbg !8 {
 entry:
   %retval.i = alloca i32, align 4
   %y.i = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %y.i, metadata !18, metadata !19), !dbg !29
-  %0 = load i32, i32* %y.i, align 4, !dbg !31
+  call void @llvm.dbg.declare(metadata ptr %y.i, metadata !18, metadata !19), !dbg !29
+  %0 = load i32, ptr %y.i, align 4, !dbg !31
   %cmp.i = icmp slt i32 %0, 0, !dbg !31
   br i1 %cmp.i, label %while.body.i, label %while.end.i, !dbg !31
 
 while.body.i:                                     ; preds = %entry
-  store i32 2, i32* %retval.i, align 4, !dbg !32
+  store i32 2, ptr %retval.i, align 4, !dbg !32
   br label %_Z3barv.exit, !dbg !32
 
 while.end.i:                                      ; preds = %entry
-  store i32 0, i32* %retval.i, align 4, !dbg !33
+  store i32 0, ptr %retval.i, align 4, !dbg !33
   br label %_Z3barv.exit, !dbg !33
 
 _Z3barv.exit:                                     ; preds = %while.end.i, %while.body.i
-  %1 = load i32, i32* %retval.i, align 4, !dbg !34
+  %1 = load i32, ptr %retval.i, align 4, !dbg !34
   ret i32 %1, !dbg !35
 }
 

diff  --git a/llvm/test/DebugInfo/X86/lexical_block.ll b/llvm/test/DebugInfo/X86/lexical_block.ll
index 1af231e8dfe0a..8063427245668 100644
--- a/llvm/test/DebugInfo/X86/lexical_block.ll
+++ b/llvm/test/DebugInfo/X86/lexical_block.ll
@@ -24,9 +24,9 @@
 define void @_Z1bv() #0 !dbg !4 {
 entry:
   %i = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata i32* %i, metadata !11, metadata !DIExpression()), !dbg !14
-  store i32 3, i32* %i, align 4, !dbg !14
-  %0 = load i32, i32* %i, align 4, !dbg !14
+  call void @llvm.dbg.declare(metadata ptr %i, metadata !11, metadata !DIExpression()), !dbg !14
+  store i32 3, ptr %i, align 4, !dbg !14
+  %0 = load i32, ptr %i, align 4, !dbg !14
   %tobool = icmp ne i32 %0, 0, !dbg !14
   br i1 %tobool, label %if.then, label %if.end, !dbg !14
 

diff  --git a/llvm/test/DebugInfo/X86/licm-undef-dbg-value.ll b/llvm/test/DebugInfo/X86/licm-undef-dbg-value.ll
index 942ecacc8618f..3d8229e7faa98 100644
--- a/llvm/test/DebugInfo/X86/licm-undef-dbg-value.ll
+++ b/llvm/test/DebugInfo/X86/licm-undef-dbg-value.ll
@@ -25,7 +25,7 @@
 define dso_local void @_Z3funv() !dbg !12 {
 entry:
   call void @llvm.dbg.value(metadata i8 0, metadata !16, metadata !DIExpression()), !dbg !17
-  %0 = load i8, i8* @b, align 1, !dbg !18
+  %0 = load i8, ptr @b, align 1, !dbg !18
   %tobool1 = icmp ne i8 %0, 0, !dbg !18
   br i1 %tobool1, label %for.body.lr.ph, label %for.end, !dbg !24
 
@@ -33,9 +33,9 @@ for.body.lr.ph:                                   ; preds = %entry
   br label %for.body, !dbg !24
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
-  %1 = load i8, i8* @a, align 1, !dbg !25
+  %1 = load i8, ptr @a, align 1, !dbg !25
   call void @llvm.dbg.value(metadata i8 %1, metadata !16, metadata !DIExpression()), !dbg !17
-  %2 = load i8, i8* @b, align 1, !dbg !18
+  %2 = load i8, ptr @b, align 1, !dbg !18
   %tobool = icmp ne i8 %2, 0, !dbg !18
   br i1 %tobool, label %for.body, label %for.cond.for.end_crit_edge, !dbg !24, !llvm.loop !26
 

diff  --git a/llvm/test/DebugInfo/X86/line-info.ll b/llvm/test/DebugInfo/X86/line-info.ll
index e928fe4fef5f7..473dcb3c1c130 100644
--- a/llvm/test/DebugInfo/X86/line-info.ll
+++ b/llvm/test/DebugInfo/X86/line-info.ll
@@ -17,11 +17,11 @@
 define i32 @foo(i32 %x) #0 !dbg !4 {
 entry:
   %x.addr = alloca i32, align 4
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !14, metadata !DIExpression()), !dbg !15
-  %0 = load i32, i32* %x.addr, align 4, !dbg !16
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !14, metadata !DIExpression()), !dbg !15
+  %0 = load i32, ptr %x.addr, align 4, !dbg !16
   %inc = add nsw i32 %0, 1, !dbg !16
-  store i32 %inc, i32* %x.addr, align 4, !dbg !16
+  store i32 %inc, ptr %x.addr, align 4, !dbg !16
   ret i32 %inc, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/X86/live-debug-values-remove-range.ll b/llvm/test/DebugInfo/X86/live-debug-values-remove-range.ll
index fc48b21b8da9c..e656c6237c068 100644
--- a/llvm/test/DebugInfo/X86/live-debug-values-remove-range.ll
+++ b/llvm/test/DebugInfo/X86/live-debug-values-remove-range.ll
@@ -57,7 +57,7 @@ loop:
   call void @llvm.dbg.value(metadata i32 0, metadata !3, metadata !DIExpression()), !dbg !6
   br i1 %retval, label %loop2, label %exit
 loop2:
-  store i32 %bar, i32 *@glob
+  store i32 %bar, ptr @glob
   br label %loop
 exit:
   ret i32 %bar

diff  --git a/llvm/test/DebugInfo/X86/live-debug-values.ll b/llvm/test/DebugInfo/X86/live-debug-values.ll
index 4b8c9b66fad99..db524d2b3bc98 100644
--- a/llvm/test/DebugInfo/X86/live-debug-values.ll
+++ b/llvm/test/DebugInfo/X86/live-debug-values.ll
@@ -47,17 +47,17 @@ target triple = "x86_64-unknown-linux-gnu"
 @.str = private unnamed_addr constant [13 x i8] c"m(main): %d\0A\00", align 1
 
 ; Function Attrs: nounwind uwtable
-define dso_local i32 @main(i32 %argc, i8** nocapture readonly %argv) #0 !dbg !10 {
+define dso_local i32 @main(i32 %argc, ptr nocapture readonly %argv) #0 !dbg !10 {
 entry:
   tail call void @llvm.dbg.value(metadata i32 %argc, metadata !17, metadata !20), !dbg !21
-  tail call void @llvm.dbg.value(metadata i8** %argv, metadata !18, metadata !20), !dbg !22
+  tail call void @llvm.dbg.value(metadata ptr %argv, metadata !18, metadata !20), !dbg !22
   %cmp = icmp eq i32 %argc, 2, !dbg !24
   br i1 %cmp, label %if.else, label %if.end, !dbg !26
 
 if.else:                                          ; preds = %entry
-  %arrayidx = getelementptr inbounds i8*, i8** %argv, i64 1, !dbg !27
-  %0 = load i8*, i8** %arrayidx, align 8, !dbg !27, !tbaa !28
-  %call = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %0) #1, !dbg !32
+  %arrayidx = getelementptr inbounds ptr, ptr %argv, i64 1, !dbg !27
+  %0 = load ptr, ptr %arrayidx, align 8, !dbg !27, !tbaa !28
+  %call = tail call i32 (ptr, ...) @atoi(ptr %0) #1, !dbg !32
   tail call void @llvm.dbg.value(metadata i32 %call, metadata !19, metadata !20), !dbg !33
   br label %if.end
 
@@ -79,8 +79,8 @@ if.else.5:                                        ; preds = %if.end
 
 if.end.7:                                         ; preds = %if.else.5, %if.then.3
   %storemerge = phi i32 [ %call6, %if.else.5 ], [ %add, %if.then.3 ]
-  store i32 %storemerge, i32* @m, align 4, !dbg !43, !tbaa !44
-  %call8 = tail call i32 (i8*, ...) @printf(i8* nonnull getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 %storemerge) #1, !dbg !46
+  store i32 %storemerge, ptr @m, align 4, !dbg !43, !tbaa !44
+  %call8 = tail call i32 (ptr, ...) @printf(ptr nonnull @.str, i32 %storemerge) #1, !dbg !46
   ret i32 0, !dbg !47
 }
 
@@ -97,7 +97,7 @@ declare i32 @modify(i32) #1
 declare i32 @inc(i32) #1
 
 ; Function Attrs: nounwind
-declare i32 @printf(i8* nocapture readonly, ...) #1
+declare i32 @printf(ptr nocapture readonly, ...) #1
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, metadata, metadata) #2

diff  --git a/llvm/test/DebugInfo/X86/machinecse-wrongdebug-hoist.ll b/llvm/test/DebugInfo/X86/machinecse-wrongdebug-hoist.ll
index 4d552b1d62003..c9f32f8379587 100644
--- a/llvm/test/DebugInfo/X86/machinecse-wrongdebug-hoist.ll
+++ b/llvm/test/DebugInfo/X86/machinecse-wrongdebug-hoist.ll
@@ -12,7 +12,7 @@ target triple = "x86_64-apple-macosx10.15.0"
 ; Function Attrs: norecurse nounwind readonly ssp uwtable
 define dso_local i32 @b(i8 signext %0) local_unnamed_addr #0 !dbg !12 {
   call void @llvm.dbg.value(metadata i8 %0, metadata !17, metadata !DIExpression()), !dbg !18
-  %2 = load i32, i32* @a, align 4, !dbg !19, !tbaa !20
+  %2 = load i32, ptr @a, align 4, !dbg !19, !tbaa !20
   %3 = icmp sgt i32 %2, 1, !dbg !24
   br i1 %3, label %8, label %4, !dbg !25
 

diff  --git a/llvm/test/DebugInfo/X86/missing-abstract-variable.ll b/llvm/test/DebugInfo/X86/missing-abstract-variable.ll
index bf63cb41428a2..175a306bdaf6b 100644
--- a/llvm/test/DebugInfo/X86/missing-abstract-variable.ll
+++ b/llvm/test/DebugInfo/X86/missing-abstract-variable.ll
@@ -106,7 +106,7 @@ entry:
   br i1 %u, label %if.then.i, label %_Z1xb.exit, !dbg !34
 
 if.then.i:                                        ; preds = %entry
-  %0 = load i32, i32* @t, align 4, !dbg !35, !tbaa !36
+  %0 = load i32, ptr @t, align 4, !dbg !35, !tbaa !36
   tail call void @llvm.dbg.value(metadata i32 %0, metadata !40, metadata !DIExpression()), !dbg !35
   tail call void @_Z1fi(i32 %0), !dbg !41
   br label %_Z1xb.exit, !dbg !42

diff  --git a/llvm/test/DebugInfo/X86/multiple-at-const-val.ll b/llvm/test/DebugInfo/X86/multiple-at-const-val.ll
index 9bbbacc030c13..8a2439d769b1f 100644
--- a/llvm/test/DebugInfo/X86/multiple-at-const-val.ll
+++ b/llvm/test/DebugInfo/X86/multiple-at-const-val.ll
@@ -12,20 +12,20 @@
 ; CHECK-NOT: DW_AT_const_value
 ; CHECK: NULL
 
-%"class.std::basic_ostream" = type { i32 (...)**, %"class.std::basic_os" }
-%"class.std::basic_os" = type { %"class.std::os_base", %"class.std::basic_ostream"*, i8, i8 }
-%"class.std::os_base" = type { i32 (...)**, i64, i64, i32, i32, i32 }
+%"class.std::basic_ostream" = type { ptr, %"class.std::basic_os" }
+%"class.std::basic_os" = type { %"class.std::os_base", ptr, i8, i8 }
+%"class.std::os_base" = type { ptr, i64, i64, i32, i32, i32 }
 
 @_ZSt4cout = external global %"class.std::basic_ostream"
 @.str = private unnamed_addr constant [6 x i8] c"c is \00", align 1
 
 define i32 @main() !dbg !960 {
 entry:
-  %call1.i = tail call %"class.std::basic_ostream"* @test(%"class.std::basic_ostream"* @_ZSt4cout, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i64 5)
+  %call1.i = tail call ptr @test(ptr @_ZSt4cout, ptr @.str, i64 5)
   ret i32 0
 }
 
-declare %"class.std::basic_ostream"* @test(%"class.std::basic_ostream"*, i8*, i64)
+declare ptr @test(ptr, ptr, i64)
 
 declare void @llvm.dbg.value(metadata, metadata, metadata) nounwind readnone
 

diff  --git a/llvm/test/DebugInfo/X86/no-entry-values-with-O0.ll b/llvm/test/DebugInfo/X86/no-entry-values-with-O0.ll
index 4256679b43634..e4aaad24a0720 100644
--- a/llvm/test/DebugInfo/X86/no-entry-values-with-O0.ll
+++ b/llvm/test/DebugInfo/X86/no-entry-values-with-O0.ll
@@ -25,39 +25,39 @@ entry:
   %y.addr = alloca i32, align 4
   %u = alloca i32, align 4
   %a = alloca i32, align 4
-  store i32 %x, i32* %x.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !11, metadata !DIExpression()), !dbg !12
-  store i32 %y, i32* %y.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %y.addr, metadata !13, metadata !DIExpression()), !dbg !14
-  call void @llvm.dbg.declare(metadata i32* %u, metadata !15, metadata !DIExpression()), !dbg !16
-  %0 = load i32, i32* %x.addr, align 4, !dbg !16
-  %1 = load i32, i32* %y.addr, align 4, !dbg !16
+  store i32 %x, ptr %x.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !11, metadata !DIExpression()), !dbg !12
+  store i32 %y, ptr %y.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %y.addr, metadata !13, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.declare(metadata ptr %u, metadata !15, metadata !DIExpression()), !dbg !16
+  %0 = load i32, ptr %x.addr, align 4, !dbg !16
+  %1 = load i32, ptr %y.addr, align 4, !dbg !16
   %add = add nsw i32 %0, %1, !dbg !16
-  store i32 %add, i32* %u, align 4, !dbg !16
-  %2 = load i32, i32* %x.addr, align 4, !dbg !17
+  store i32 %add, ptr %u, align 4, !dbg !16
+  %2 = load i32, ptr %x.addr, align 4, !dbg !17
   %cmp = icmp sgt i32 %2, 1, !dbg !17
   br i1 %cmp, label %if.then, label %if.else, !dbg !16
 
 if.then:                                          ; preds = %entry
-  %3 = load i32, i32* %u, align 4, !dbg !17
+  %3 = load i32, ptr %u, align 4, !dbg !17
   %add1 = add nsw i32 %3, 1, !dbg !17
-  store i32 %add1, i32* %u, align 4, !dbg !17
+  store i32 %add1, ptr %u, align 4, !dbg !17
   br label %if.end, !dbg !17
 
 if.else:                                          ; preds = %entry
-  %4 = load i32, i32* %u, align 4, !dbg !17
+  %4 = load i32, ptr %u, align 4, !dbg !17
   %add2 = add nsw i32 %4, 2, !dbg !17
-  store i32 %add2, i32* %u, align 4, !dbg !17
+  store i32 %add2, ptr %u, align 4, !dbg !17
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then
-  call void @llvm.dbg.declare(metadata i32* %a, metadata !19, metadata !DIExpression()), !dbg !16
-  store i32 7, i32* %a, align 4, !dbg !16
-  %5 = load i32, i32* %a, align 4, !dbg !16
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !19, metadata !DIExpression()), !dbg !16
+  store i32 7, ptr %a, align 4, !dbg !16
+  %5 = load i32, ptr %a, align 4, !dbg !16
   call void @fn2(i32 %5), !dbg !16
-  %6 = load i32, i32* %u, align 4, !dbg !16
+  %6 = load i32, ptr %u, align 4, !dbg !16
   %dec = add nsw i32 %6, -1, !dbg !16
-  store i32 %dec, i32* %u, align 4, !dbg !16
+  store i32 %dec, ptr %u, align 4, !dbg !16
   ret void, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/X86/nodebug_with_debug_loc.ll b/llvm/test/DebugInfo/X86/nodebug_with_debug_loc.ll
index a01e6c06398aa..6bcc34931cc65 100644
--- a/llvm/test/DebugInfo/X86/nodebug_with_debug_loc.ll
+++ b/llvm/test/DebugInfo/X86/nodebug_with_debug_loc.ll
@@ -14,7 +14,7 @@
 
 ; Generated from:
 ; $ clang-tot -cc1 -triple i386 -emit-obj -g -O3 repro.cpp
-; void sink(const void *);
+; void sink(const ptr);
 ; int source();
 ; void f3(int);
 ; 
@@ -40,33 +40,30 @@
 ;   }
 ; }
 
-%struct.string = type { i32* }
+%struct.string = type { ptr }
 
- at str = external constant %struct.string*
+ at str = external constant ptr
 @b = external global i8
 
 ; Function Attrs: nounwind
 define void @_Z2f1v() #0 {
 entry:
   %str2.i = alloca %struct.string, align 4
-  %0 = bitcast %struct.string* %str2.i to i8*, !dbg !26
-  %1 = load %struct.string*, %struct.string** @str, align 4
-  %mem = getelementptr inbounds %struct.string, %struct.string* %1, i32 0, i32 0
+  %0 = load ptr, ptr @str, align 4
   br label %for.body
 
 for.body:                                         ; preds = %for.body, %entry
   %iter.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
-  call void @llvm.lifetime.start(i64 4, i8* %0), !dbg !26
-  call void @llvm.dbg.value(metadata %struct.string* %str2.i, metadata !16, metadata !DIExpression(DW_OP_deref)) #3, !dbg !26
-  call void @llvm.dbg.value(metadata %struct.string* %str2.i, metadata !27, metadata !DIExpression(DW_OP_deref)) #3, !dbg !29
-  call void @_Z4sinkPKv(i8* undef) #3, !dbg !29
-  call void @_Z4sinkPKv(i8* %0) #3, !dbg !30
-  call void @llvm.lifetime.end(i64 4, i8* %0), !dbg !31
-  %2 = load i32*, i32** %mem, align 4, !tbaa !32
-  %3 = bitcast i32* %2 to i8*
-  call void @_Z4sinkPKv(i8* %3) #3
-  %4 = load i8, i8* @b, align 1, !tbaa !37, !range !39
-  %tobool = icmp ne i8 %4, 0
+  call void @llvm.lifetime.start(i64 4, ptr %str2.i), !dbg !26
+  call void @llvm.dbg.value(metadata ptr %str2.i, metadata !16, metadata !DIExpression(DW_OP_deref)) #3, !dbg !26
+  call void @llvm.dbg.value(metadata ptr %str2.i, metadata !27, metadata !DIExpression(DW_OP_deref)) #3, !dbg !29
+  call void @_Z4sinkPKv(ptr undef) #3, !dbg !29
+  call void @_Z4sinkPKv(ptr %str2.i) #3, !dbg !30
+  call void @llvm.lifetime.end(i64 4, ptr %str2.i), !dbg !31
+  %1 = load ptr, ptr %0, align 4, !tbaa !32
+  call void @_Z4sinkPKv(ptr %1) #3
+  %2 = load i8, ptr @b, align 1, !tbaa !37, !range !39
+  %tobool = icmp ne i8 %2, 0
   %inc = add nsw i32 %iter.02, 1
   %cmp = icmp eq i32 %inc, 2
   %or.cond = or i1 %tobool, %cmp
@@ -76,16 +73,16 @@ for.end:                                          ; preds = %for.body
   ret void
 }
 
-declare void @_Z4sinkPKv(i8*) #1
+declare void @_Z4sinkPKv(ptr) #1
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, metadata, metadata) #2
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #3
+declare void @llvm.lifetime.start(i64, ptr nocapture) #3
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #3
+declare void @llvm.lifetime.end(i64, ptr nocapture) #3
 
 attributes #0 = { nounwind "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }

diff  --git a/llvm/test/DebugInfo/X86/nophysreg.ll b/llvm/test/DebugInfo/X86/nophysreg.ll
index 514dea28f0061..603397e646d21 100644
--- a/llvm/test/DebugInfo/X86/nophysreg.ll
+++ b/llvm/test/DebugInfo/X86/nophysreg.ll
@@ -25,7 +25,7 @@
 ; void f1(int *p1, int p2);
 ; void __attribute__((always_inline)) f2(A p5) { f1(p5.m1, p5.m2); }
 ;
-; void func(void*);
+; void func(ptr);
 ; void func(const int &, const int&);
 ; int cond();
 ; void f() {
@@ -50,22 +50,22 @@
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.10.0"
 
-%struct.A = type { i32*, i32 }
+%struct.A = type { ptr, i32 }
 
 ; Function Attrs: alwaysinline ssp uwtable
-define void @_Z2f21A(i32* %p5.coerce0, i32 %p5.coerce1) #0 !dbg !11 {
+define void @_Z2f21A(ptr %p5.coerce0, i32 %p5.coerce1) #0 !dbg !11 {
 entry:
-  tail call void @llvm.dbg.value(metadata i32* %p5.coerce0, metadata !16, metadata !33), !dbg !34
+  tail call void @llvm.dbg.value(metadata ptr %p5.coerce0, metadata !16, metadata !33), !dbg !34
   tail call void @llvm.dbg.value(metadata i32 %p5.coerce1, metadata !16, metadata !35), !dbg !34
-  tail call void @llvm.dbg.declare(metadata %struct.A* undef, metadata !16, metadata !36), !dbg !34
-  tail call void @_Z2f1Pii(i32* %p5.coerce0, i32 %p5.coerce1), !dbg !37
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !16, metadata !36), !dbg !34
+  tail call void @_Z2f1Pii(ptr %p5.coerce0, i32 %p5.coerce1), !dbg !37
   ret void, !dbg !38
 }
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare void @_Z2f1Pii(i32*, i32) #2
+declare void @_Z2f1Pii(ptr, i32) #2
 
 ; Function Attrs: ssp uwtable
 define void @_Z1fv() #3 !dbg !17 {
@@ -87,30 +87,30 @@ while.cond.loopexit:                              ; preds = %while.body4, %while
   br i1 %tobool, label %while.end7, label %while.body, !dbg !40
 
 while.body:                                       ; preds = %entry, %while.cond.loopexit
-  store i32 0, i32* %ref.tmp, align 4, !dbg !41, !tbaa !42
-  call void @llvm.dbg.value(metadata i32* %x, metadata !21, metadata !DIExpression(DW_OP_deref)), !dbg !46
-  call void @_Z4funcRKiS0_(i32* dereferenceable(4) %x, i32* dereferenceable(4) %ref.tmp), !dbg !47
+  store i32 0, ptr %ref.tmp, align 4, !dbg !41, !tbaa !42
+  call void @llvm.dbg.value(metadata ptr %x, metadata !21, metadata !DIExpression(DW_OP_deref)), !dbg !46
+  call void @_Z4funcRKiS0_(ptr dereferenceable(4) %x, ptr dereferenceable(4) %ref.tmp), !dbg !47
   %call29 = call i32 @_Z4condv(), !dbg !48
   %tobool310 = icmp eq i32 %call29, 0, !dbg !48
   br i1 %tobool310, label %while.cond.loopexit, label %while.body4, !dbg !49
 
 while.body4:                                      ; preds = %while.body, %while.body4
-  call void @llvm.dbg.value(metadata i8* %y, metadata !23, metadata !DIExpression(DW_OP_deref)), !dbg !50
-  call void @_Z4funcPv(i8* %y), !dbg !51
-  call void @llvm.dbg.value(metadata i8* %j, metadata !26, metadata !DIExpression(DW_OP_deref)), !dbg !52
-  call void @_Z4funcPv(i8* %j), !dbg !53
-  call void @llvm.dbg.value(metadata i8* %I, metadata !27, metadata !DIExpression(DW_OP_deref)), !dbg !54
-  call void @_Z4funcPv(i8* %I), !dbg !55
-  store i32 0, i32* %ref.tmp5, align 4, !dbg !56, !tbaa !42
-  store i32 0, i32* %ref.tmp6, align 4, !dbg !57, !tbaa !42
-  call void @_Z4funcRKiS0_(i32* dereferenceable(4) %ref.tmp5, i32* dereferenceable(4) %ref.tmp6), !dbg !58
-  call void @llvm.dbg.declare(metadata %struct.A* undef, metadata !28, metadata !36), !dbg !59
-  call void @llvm.dbg.value(metadata i32* %x, metadata !28, metadata !33), !dbg !59
-  call void @llvm.dbg.value(metadata i32* %x, metadata !21, metadata !DIExpression(DW_OP_deref)), !dbg !46
-  call void @llvm.dbg.value(metadata i32* %x, metadata !60, metadata !33), !dbg !62
+  call void @llvm.dbg.value(metadata ptr %y, metadata !23, metadata !DIExpression(DW_OP_deref)), !dbg !50
+  call void @_Z4funcPv(ptr %y), !dbg !51
+  call void @llvm.dbg.value(metadata ptr %j, metadata !26, metadata !DIExpression(DW_OP_deref)), !dbg !52
+  call void @_Z4funcPv(ptr %j), !dbg !53
+  call void @llvm.dbg.value(metadata ptr %I, metadata !27, metadata !DIExpression(DW_OP_deref)), !dbg !54
+  call void @_Z4funcPv(ptr %I), !dbg !55
+  store i32 0, ptr %ref.tmp5, align 4, !dbg !56, !tbaa !42
+  store i32 0, ptr %ref.tmp6, align 4, !dbg !57, !tbaa !42
+  call void @_Z4funcRKiS0_(ptr dereferenceable(4) %ref.tmp5, ptr dereferenceable(4) %ref.tmp6), !dbg !58
+  call void @llvm.dbg.declare(metadata ptr undef, metadata !28, metadata !36), !dbg !59
+  call void @llvm.dbg.value(metadata ptr %x, metadata !28, metadata !33), !dbg !59
+  call void @llvm.dbg.value(metadata ptr %x, metadata !21, metadata !DIExpression(DW_OP_deref)), !dbg !46
+  call void @llvm.dbg.value(metadata ptr %x, metadata !60, metadata !33), !dbg !62
   call void @llvm.dbg.value(metadata i32 undef, metadata !60, metadata !35), !dbg !62
-  call void @llvm.dbg.declare(metadata %struct.A* undef, metadata !60, metadata !36), !dbg !62
-  call void @_Z2f1Pii(i32* %x, i32 undef), !dbg !63
+  call void @llvm.dbg.declare(metadata ptr undef, metadata !60, metadata !36), !dbg !62
+  call void @_Z2f1Pii(ptr %x, i32 undef), !dbg !63
   %call2 = call i32 @_Z4condv(), !dbg !48
   %tobool3 = icmp eq i32 %call2, 0, !dbg !48
   br i1 %tobool3, label %while.cond.loopexit, label %while.body4, !dbg !49
@@ -121,9 +121,9 @@ while.end7:                                       ; preds = %while.cond.loopexit
 
 declare i32 @_Z4condv()
 
-declare void @_Z4funcRKiS0_(i32* dereferenceable(4), i32* dereferenceable(4))
+declare void @_Z4funcRKiS0_(ptr dereferenceable(4), ptr dereferenceable(4))
 
-declare void @_Z4funcPv(i8*)
+declare void @_Z4funcPv(ptr)
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1

diff  --git a/llvm/test/DebugInfo/X86/noreturn_cpp11.ll b/llvm/test/DebugInfo/X86/noreturn_cpp11.ll
index 88c9b1e8db9ba..fca40e0f1e25d 100644
--- a/llvm/test/DebugInfo/X86/noreturn_cpp11.ll
+++ b/llvm/test/DebugInfo/X86/noreturn_cpp11.ll
@@ -30,25 +30,24 @@ target triple = "x86_64-unknown-linux-gnu"
 
 %class.foo = type { i8 }
 
- at _ZTIi = external dso_local constant i8*
+ at _ZTIi = external dso_local constant ptr
 
 ; Function Attrs: noinline noreturn optnone uwtable
 define dso_local void @_Z1fv() #0 !dbg !7 {
-  %1 = call i8* @__cxa_allocate_exception(i64 4) #3, !dbg !10
-  %2 = bitcast i8* %1 to i32*, !dbg !10
-  store i32 1, i32* %2, align 16, !dbg !10
-  call void @__cxa_throw(i8* %1, i8* bitcast (i8** @_ZTIi to i8*), i8* null) #4, !dbg !10
+  %1 = call ptr @__cxa_allocate_exception(i64 4) #3, !dbg !10
+  store i32 1, ptr %1, align 16, !dbg !10
+  call void @__cxa_throw(ptr %1, ptr @_ZTIi, ptr null) #4, !dbg !10
   unreachable, !dbg !10
 }
 
-declare dso_local i8* @__cxa_allocate_exception(i64)
+declare dso_local ptr @__cxa_allocate_exception(i64)
 
-declare dso_local void @__cxa_throw(i8*, i8*, i8*)
+declare dso_local void @__cxa_throw(ptr, ptr, ptr)
 
 ; Function Attrs: noinline nounwind optnone uwtable
 define dso_local void @_Z4funcv() #1 !dbg !11 {
   %1 = alloca %class.foo, align 1
-  call void @llvm.dbg.declare(metadata %class.foo* %1, metadata !12, metadata !DIExpression()), !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %1, metadata !12, metadata !DIExpression()), !dbg !19
   ret void, !dbg !20
 }
 

diff  --git a/llvm/test/DebugInfo/X86/objc-fwd-decl.ll b/llvm/test/DebugInfo/X86/objc-fwd-decl.ll
index 3c788cf7ddb7e..2b69528d692e6 100644
--- a/llvm/test/DebugInfo/X86/objc-fwd-decl.ll
+++ b/llvm/test/DebugInfo/X86/objc-fwd-decl.ll
@@ -9,7 +9,7 @@ source_filename = "test/DebugInfo/X86/objc-fwd-decl.ll"
 
 %0 = type opaque
 
- at a = common global %0* null, align 8, !dbg !0
+ at a = common global ptr null, align 8, !dbg !0
 
 !llvm.dbg.cu = !{!5}
 !llvm.module.flags = !{!8, !9, !10, !11, !12, !13}

diff  --git a/llvm/test/DebugInfo/X86/objc-property-void.ll b/llvm/test/DebugInfo/X86/objc-property-void.ll
index 8167098aca9e8..4c5c16a4eba81 100644
--- a/llvm/test/DebugInfo/X86/objc-property-void.ll
+++ b/llvm/test/DebugInfo/X86/objc-property-void.ll
@@ -25,41 +25,41 @@ target triple = "x86_64-apple-macosx10.9.0"
 
 %0 = type opaque
 %struct._objc_cache = type opaque
-%struct._class_t = type { %struct._class_t*, %struct._class_t*, %struct._objc_cache*, i8* (i8*, i8*)**, %struct._class_ro_t* }
-%struct._class_ro_t = type { i32, i32, i32, i8*, i8*, %struct.__method_list_t*, %struct._objc_protocol_list*, %struct._ivar_list_t*, i8*, %struct._prop_list_t* }
+%struct._class_t = type { ptr, ptr, ptr, ptr, ptr }
+%struct._class_ro_t = type { i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
 %struct.__method_list_t = type { i32, i32, [0 x %struct._objc_method] }
-%struct._objc_method = type { i8*, i8*, i8* }
-%struct._objc_protocol_list = type { i64, [0 x %struct._protocol_t*] }
-%struct._protocol_t = type { i8*, i8*, %struct._objc_protocol_list*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct._prop_list_t*, i32, i32, i8** }
+%struct._objc_method = type { ptr, ptr, ptr }
+%struct._objc_protocol_list = type { i64, [0 x ptr] }
+%struct._protocol_t = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr }
 %struct._ivar_list_t = type { i32, i32, [0 x %struct._ivar_t] }
-%struct._ivar_t = type { i64*, i8*, i8*, i32, i32 }
+%struct._ivar_t = type { ptr, ptr, ptr, i32, i32 }
 %struct._prop_list_t = type { i32, i32, [0 x %struct._prop_t] }
-%struct._prop_t = type { i8*, i8* }
+%struct._prop_t = type { ptr, ptr }
 
 @_objc_empty_cache = external global %struct._objc_cache
-@"OBJC_CLASS_$_Foo" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_Foo", %struct._class_t* null, %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** null, %struct._class_ro_t* @"\01l_OBJC_CLASS_RO_$_Foo" }, section "__DATA, __objc_data", align 8
-@"OBJC_METACLASS_$_Foo" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_Foo", %struct._class_t* @"OBJC_CLASS_$_Foo", %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** null, %struct._class_ro_t* @"\01l_OBJC_METACLASS_RO_$_Foo" }, section "__DATA, __objc_data", align 8
+@"OBJC_CLASS_$_Foo" = global %struct._class_t { ptr @"OBJC_METACLASS_$_Foo", ptr null, ptr @_objc_empty_cache, ptr null, ptr @"\01l_OBJC_CLASS_RO_$_Foo" }, section "__DATA, __objc_data", align 8
+@"OBJC_METACLASS_$_Foo" = global %struct._class_t { ptr @"OBJC_METACLASS_$_Foo", ptr @"OBJC_CLASS_$_Foo", ptr @_objc_empty_cache, ptr null, ptr @"\01l_OBJC_METACLASS_RO_$_Foo" }, section "__DATA, __objc_data", align 8
 @"\01L_OBJC_CLASS_NAME_" = internal global [4 x i8] c"Foo\00", section "__TEXT,__objc_classname,cstring_literals", align 1
-@"\01l_OBJC_METACLASS_RO_$_Foo" = internal global %struct._class_ro_t { i32 3, i32 40, i32 40, i8* null, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), %struct.__method_list_t* null, %struct._objc_protocol_list* null, %struct._ivar_list_t* null, i8* null, %struct._prop_list_t* null }, section "__DATA, __objc_const", align 8
+@"\01l_OBJC_METACLASS_RO_$_Foo" = internal global %struct._class_ro_t { i32 3, i32 40, i32 40, ptr null, ptr @"\01L_OBJC_CLASS_NAME_", ptr null, ptr null, ptr null, ptr null, ptr null }, section "__DATA, __objc_const", align 8
 @"\01L_OBJC_METH_VAR_NAME_" = internal global [4 x i8] c"foo\00", section "__TEXT,__objc_methname,cstring_literals", align 1
 @"\01L_OBJC_METH_VAR_TYPE_" = internal global [8 x i8] c"v16 at 0:8\00", section "__TEXT,__objc_methtype,cstring_literals", align 1
-@"\01l_OBJC_$_INSTANCE_METHODS_Foo" = internal global { i32, i32, [1 x %struct._objc_method] } { i32 24, i32 1, [1 x %struct._objc_method] [%struct._objc_method { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"\01L_OBJC_METH_VAR_NAME_", i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"\01L_OBJC_METH_VAR_TYPE_", i32 0, i32 0), i8* bitcast (void (%0*, i8*)* @"\01-[Foo foo]" to i8*) }] }, section "__DATA, __objc_const", align 8
+@"\01l_OBJC_$_INSTANCE_METHODS_Foo" = internal global { i32, i32, [1 x %struct._objc_method] } { i32 24, i32 1, [1 x %struct._objc_method] [%struct._objc_method { ptr @"\01L_OBJC_METH_VAR_NAME_", ptr @"\01L_OBJC_METH_VAR_TYPE_", ptr @"\01-[Foo foo]" }] }, section "__DATA, __objc_const", align 8
 @"\01L_OBJC_PROP_NAME_ATTR_" = internal global [4 x i8] c"foo\00", section "__TEXT,__cstring,cstring_literals", align 1
 @"\01L_OBJC_PROP_NAME_ATTR_1" = internal global [7 x i8] c"Tv,R,N\00", section "__TEXT,__cstring,cstring_literals", align 1
-@"\01l_OBJC_$_PROP_LIST_Foo" = internal global { i32, i32, [1 x %struct._prop_t] } { i32 16, i32 1, [1 x %struct._prop_t] [%struct._prop_t { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"\01L_OBJC_PROP_NAME_ATTR_", i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"\01L_OBJC_PROP_NAME_ATTR_1", i32 0, i32 0) }] }, section "__DATA, __objc_const", align 8
-@"\01l_OBJC_CLASS_RO_$_Foo" = internal global %struct._class_ro_t { i32 2, i32 0, i32 0, i8* null, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), %struct.__method_list_t* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_INSTANCE_METHODS_Foo" to %struct.__method_list_t*), %struct._objc_protocol_list* null, %struct._ivar_list_t* null, i8* null, %struct._prop_list_t* bitcast ({ i32, i32, [1 x %struct._prop_t] }* @"\01l_OBJC_$_PROP_LIST_Foo" to %struct._prop_list_t*) }, section "__DATA, __objc_const", align 8
-@"\01L_OBJC_LABEL_CLASS_$" = internal global [1 x i8*] [i8* bitcast (%struct._class_t* @"OBJC_CLASS_$_Foo" to i8*)], section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
- at llvm.used = appending global [8 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"\01L_OBJC_METH_VAR_NAME_", i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"\01L_OBJC_METH_VAR_TYPE_", i32 0, i32 0), i8* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_INSTANCE_METHODS_Foo" to i8*), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"\01L_OBJC_PROP_NAME_ATTR_", i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"\01L_OBJC_PROP_NAME_ATTR_1", i32 0, i32 0), i8* bitcast ({ i32, i32, [1 x %struct._prop_t] }* @"\01l_OBJC_$_PROP_LIST_Foo" to i8*), i8* bitcast ([1 x i8*]* @"\01L_OBJC_LABEL_CLASS_$" to i8*)], section "llvm.metadata"
+@"\01l_OBJC_$_PROP_LIST_Foo" = internal global { i32, i32, [1 x %struct._prop_t] } { i32 16, i32 1, [1 x %struct._prop_t] [%struct._prop_t { ptr @"\01L_OBJC_PROP_NAME_ATTR_", ptr @"\01L_OBJC_PROP_NAME_ATTR_1" }] }, section "__DATA, __objc_const", align 8
+@"\01l_OBJC_CLASS_RO_$_Foo" = internal global %struct._class_ro_t { i32 2, i32 0, i32 0, ptr null, ptr @"\01L_OBJC_CLASS_NAME_", ptr @"\01l_OBJC_$_INSTANCE_METHODS_Foo", ptr null, ptr null, ptr null, ptr @"\01l_OBJC_$_PROP_LIST_Foo" }, section "__DATA, __objc_const", align 8
+@"\01L_OBJC_LABEL_CLASS_$" = internal global [1 x ptr] [ptr @"OBJC_CLASS_$_Foo"], section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
+ at llvm.used = appending global [8 x ptr] [ptr @"\01L_OBJC_CLASS_NAME_", ptr @"\01L_OBJC_METH_VAR_NAME_", ptr @"\01L_OBJC_METH_VAR_TYPE_", ptr @"\01l_OBJC_$_INSTANCE_METHODS_Foo", ptr @"\01L_OBJC_PROP_NAME_ATTR_", ptr @"\01L_OBJC_PROP_NAME_ATTR_1", ptr @"\01l_OBJC_$_PROP_LIST_Foo", ptr @"\01L_OBJC_LABEL_CLASS_$"], section "llvm.metadata"
 
 ; Function Attrs: ssp uwtable
-define internal void @"\01-[Foo foo]"(%0* %self, i8* %_cmd) #0 !dbg !10 {
+define internal void @"\01-[Foo foo]"(ptr %self, ptr %_cmd) #0 !dbg !10 {
 entry:
-  %self.addr = alloca %0*, align 8
-  %_cmd.addr = alloca i8*, align 8
-  store %0* %self, %0** %self.addr, align 8
-  call void @llvm.dbg.declare(metadata %0** %self.addr, metadata !24, metadata !DIExpression()), !dbg !26
-  store i8* %_cmd, i8** %_cmd.addr, align 8
-  call void @llvm.dbg.declare(metadata i8** %_cmd.addr, metadata !27, metadata !DIExpression()), !dbg !26
+  %self.addr = alloca ptr, align 8
+  %_cmd.addr = alloca ptr, align 8
+  store ptr %self, ptr %self.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %self.addr, metadata !24, metadata !DIExpression()), !dbg !26
+  store ptr %_cmd, ptr %_cmd.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %_cmd.addr, metadata !27, metadata !DIExpression()), !dbg !26
   ret void, !dbg !29
 }
 

diff  --git a/llvm/test/DebugInfo/X86/objc_direct.ll b/llvm/test/DebugInfo/X86/objc_direct.ll
index b6435149108ae..410ba261a06d7 100644
--- a/llvm/test/DebugInfo/X86/objc_direct.ll
+++ b/llvm/test/DebugInfo/X86/objc_direct.ll
@@ -25,10 +25,10 @@ source_filename = "direct.m"
 
 %0 = type opaque
 
-define hidden i32 @"\01-[Root direct_method]"(%0* %self, i8* %_cmd) {
+define hidden i32 @"\01-[Root direct_method]"(ptr %self, ptr %_cmd) {
 entry:
   %retval = alloca i32, align 4
-  %0 = load i32, i32* %retval, align 4
+  %0 = load i32, ptr %retval, align 4
   ret i32 %0
 }
 

diff  --git a/llvm/test/DebugInfo/X86/op_deref.ll b/llvm/test/DebugInfo/X86/op_deref.ll
index 09c45308736f3..d55f0161c6e43 100644
--- a/llvm/test/DebugInfo/X86/op_deref.ll
+++ b/llvm/test/DebugInfo/X86/op_deref.ll
@@ -29,53 +29,53 @@
 define void @testVLAwithSize(i32 %s) nounwind uwtable ssp !dbg !5 {
 entry:
   %s.addr = alloca i32, align 4
-  %saved_stack = alloca i8*
+  %saved_stack = alloca ptr
   %i = alloca i32, align 4
-  store i32 %s, i32* %s.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %s.addr, metadata !10, metadata !DIExpression()), !dbg !11
-  %0 = load i32, i32* %s.addr, align 4, !dbg !12
+  store i32 %s, ptr %s.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %s.addr, metadata !10, metadata !DIExpression()), !dbg !11
+  %0 = load i32, ptr %s.addr, align 4, !dbg !12
   %1 = zext i32 %0 to i64, !dbg !12
-  %2 = call i8* @llvm.stacksave(), !dbg !12
-  store i8* %2, i8** %saved_stack, !dbg !12
+  %2 = call ptr @llvm.stacksave(), !dbg !12
+  store ptr %2, ptr %saved_stack, !dbg !12
   %vla = alloca i32, i64 %1, align 16, !dbg !12
-  call void @llvm.dbg.declare(metadata i32* %vla, metadata !14, metadata !30), !dbg !18
-  call void @llvm.dbg.declare(metadata i32* %i, metadata !19, metadata !DIExpression()), !dbg !20
-  store i32 0, i32* %i, align 4, !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %vla, metadata !14, metadata !30), !dbg !18
+  call void @llvm.dbg.declare(metadata ptr %i, metadata !19, metadata !DIExpression()), !dbg !20
+  store i32 0, ptr %i, align 4, !dbg !21
   br label %for.cond, !dbg !21
 
 for.cond:                                         ; preds = %for.inc, %entry
-  %3 = load i32, i32* %i, align 4, !dbg !21
-  %4 = load i32, i32* %s.addr, align 4, !dbg !21
+  %3 = load i32, ptr %i, align 4, !dbg !21
+  %4 = load i32, ptr %s.addr, align 4, !dbg !21
   %cmp = icmp slt i32 %3, %4, !dbg !21
   br i1 %cmp, label %for.body, label %for.end, !dbg !21
 
 for.body:                                         ; preds = %for.cond
-  %5 = load i32, i32* %i, align 4, !dbg !23
-  %6 = load i32, i32* %i, align 4, !dbg !23
+  %5 = load i32, ptr %i, align 4, !dbg !23
+  %6 = load i32, ptr %i, align 4, !dbg !23
   %mul = mul nsw i32 %5, %6, !dbg !23
-  %7 = load i32, i32* %i, align 4, !dbg !23
+  %7 = load i32, ptr %i, align 4, !dbg !23
   %idxprom = sext i32 %7 to i64, !dbg !23
-  %arrayidx = getelementptr inbounds i32, i32* %vla, i64 %idxprom, !dbg !23
-  store i32 %mul, i32* %arrayidx, align 4, !dbg !23
+  %arrayidx = getelementptr inbounds i32, ptr %vla, i64 %idxprom, !dbg !23
+  store i32 %mul, ptr %arrayidx, align 4, !dbg !23
   br label %for.inc, !dbg !25
 
 for.inc:                                          ; preds = %for.body
-  %8 = load i32, i32* %i, align 4, !dbg !26
+  %8 = load i32, ptr %i, align 4, !dbg !26
   %inc = add nsw i32 %8, 1, !dbg !26
-  store i32 %inc, i32* %i, align 4, !dbg !26
+  store i32 %inc, ptr %i, align 4, !dbg !26
   br label %for.cond, !dbg !26
 
 for.end:                                          ; preds = %for.cond
-  %9 = load i8*, i8** %saved_stack, !dbg !27
-  call void @llvm.stackrestore(i8* %9), !dbg !27
+  %9 = load ptr, ptr %saved_stack, !dbg !27
+  call void @llvm.stackrestore(ptr %9), !dbg !27
   ret void, !dbg !27
 }
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 
-declare i8* @llvm.stacksave() nounwind
+declare ptr @llvm.stacksave() nounwind
 
-declare void @llvm.stackrestore(i8*) nounwind
+declare void @llvm.stackrestore(ptr) nounwind
 
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!29}

diff  --git a/llvm/test/DebugInfo/X86/parameters.ll b/llvm/test/DebugInfo/X86/parameters.ll
index 2eff34a43c6e7..5254fadecbd7e 100644
--- a/llvm/test/DebugInfo/X86/parameters.ll
+++ b/llvm/test/DebugInfo/X86/parameters.ll
@@ -12,7 +12,7 @@
 ;   return f; // reference 'f' for now because otherwise we hit another bug
 ; }
 ;
-; void sink(void*);
+; void sink(ptr);
 ;
 ; void func2(bool b, foo g) {
 ;   if (b)
@@ -46,40 +46,39 @@
 %"struct.pr14763::foo" = type { i8 }
 
 ; Function Attrs: uwtable
-define void @_ZN7pr147634funcENS_3fooE(%"struct.pr14763::foo"* noalias sret(%"struct.pr14763::foo") %agg.result, %"struct.pr14763::foo"* %f) #0 !dbg !4 {
+define void @_ZN7pr147634funcENS_3fooE(ptr noalias sret(%"struct.pr14763::foo") %agg.result, ptr %f) #0 !dbg !4 {
 entry:
-  call void @llvm.dbg.declare(metadata %"struct.pr14763::foo"* %f, metadata !22, metadata !DIExpression(DW_OP_deref)), !dbg !24
-  call void @_ZN7pr147633fooC1ERKS0_(%"struct.pr14763::foo"* %agg.result, %"struct.pr14763::foo"* %f), !dbg !25
+  call void @llvm.dbg.declare(metadata ptr %f, metadata !22, metadata !DIExpression(DW_OP_deref)), !dbg !24
+  call void @_ZN7pr147633fooC1ERKS0_(ptr %agg.result, ptr %f), !dbg !25
   ret void, !dbg !25
 }
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare void @_ZN7pr147633fooC1ERKS0_(%"struct.pr14763::foo"*, %"struct.pr14763::foo"*) #2
+declare void @_ZN7pr147633fooC1ERKS0_(ptr, ptr) #2
 
 ; Function Attrs: uwtable
-define void @_ZN7pr147635func2EbNS_3fooE(i1 zeroext %b, %"struct.pr14763::foo"* %g) #0 !dbg !17 {
+define void @_ZN7pr147635func2EbNS_3fooE(i1 zeroext %b, ptr %g) #0 !dbg !17 {
 entry:
   %b.addr = alloca i8, align 1
   %frombool = zext i1 %b to i8
-  store i8 %frombool, i8* %b.addr, align 1
-  call void @llvm.dbg.declare(metadata i8* %b.addr, metadata !26, metadata !DIExpression()), !dbg !27
-  call void @llvm.dbg.declare(metadata %"struct.pr14763::foo"* %g, metadata !28, metadata !DIExpression(DW_OP_deref)), !dbg !27
-  %0 = load i8, i8* %b.addr, align 1, !dbg !29
+  store i8 %frombool, ptr %b.addr, align 1
+  call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !26, metadata !DIExpression()), !dbg !27
+  call void @llvm.dbg.declare(metadata ptr %g, metadata !28, metadata !DIExpression(DW_OP_deref)), !dbg !27
+  %0 = load i8, ptr %b.addr, align 1, !dbg !29
   %tobool = trunc i8 %0 to i1, !dbg !29
   br i1 %tobool, label %if.then, label %if.end, !dbg !29
 
 if.then:                                          ; preds = %entry
-  %1 = bitcast %"struct.pr14763::foo"* %g to i8*, !dbg !31
-  call void @_ZN7pr147634sinkEPv(i8* %1), !dbg !31
+  call void @_ZN7pr147634sinkEPv(ptr %g), !dbg !31
   br label %if.end, !dbg !31
 
 if.end:                                           ; preds = %if.then, %entry
   ret void, !dbg !32
 }
 
-declare void @_ZN7pr147634sinkEPv(i8*)
+declare void @_ZN7pr147634sinkEPv(ptr)
 
 attributes #0 = { uwtable }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/pr28270.ll b/llvm/test/DebugInfo/X86/pr28270.ll
index b4ad1421ccef2..e537be51753d3 100644
--- a/llvm/test/DebugInfo/X86/pr28270.ll
+++ b/llvm/test/DebugInfo/X86/pr28270.ll
@@ -14,43 +14,40 @@ entry:
   %agg.tmp.i.i = alloca %class.A, align 1
   %text.i = alloca %class.A, align 1
   %v = alloca %class.B, align 1
-  %0 = getelementptr inbounds %class.B, %class.B* %v, i64 0, i32 0, !dbg !40
-  call void @llvm.lifetime.start(i64 1, i8* %0) #4, !dbg !40
-  %1 = getelementptr inbounds %class.A, %class.A* %text.i, i64 0, i32 0, !dbg !41
-  %2 = getelementptr inbounds %class.A, %class.A* %agg.tmp.i.i, i64 0, i32 0, !dbg !59
+  call void @llvm.lifetime.start(i64 1, ptr %v) #4, !dbg !40
   br label %for.cond, !dbg !65
 
 for.cond:                                         ; preds = %for.cond, %entry
-  call void @llvm.dbg.value(metadata %class.B* %v, metadata !29, metadata !66), !dbg !67
-  %call = call double @_ZN1BixEj(%class.B* nonnull %v, i32 undef), !dbg !68
+  call void @llvm.dbg.value(metadata ptr %v, metadata !29, metadata !66), !dbg !67
+  %call = call double @_ZN1BixEj(ptr nonnull %v, i32 undef), !dbg !68
   call void @llvm.dbg.value(metadata double %call, metadata !49, metadata !69), !dbg !70
-  call void @llvm.dbg.value(metadata i32* null, metadata !52, metadata !69), !dbg !71
-  call void @llvm.dbg.value(metadata %class.A* undef, metadata !54, metadata !69), !dbg !72
-  call void @llvm.lifetime.start(i64 1, i8* %1) #4, !dbg !41
+  call void @llvm.dbg.value(metadata ptr null, metadata !52, metadata !69), !dbg !71
+  call void @llvm.dbg.value(metadata ptr undef, metadata !54, metadata !69), !dbg !72
+  call void @llvm.lifetime.start(i64 1, ptr %text.i) #4, !dbg !41
   %tobool.i = fcmp une double %call, 0.000000e+00, !dbg !73
-  %cond.i = select i1 %tobool.i, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), !dbg !73
-  call void @llvm.dbg.value(metadata %class.A* %text.i, metadata !55, metadata !66), !dbg !74
-  call void @llvm.lifetime.start(i64 1, i8* %2), !dbg !59
-  call void @llvm.dbg.value(metadata %class.A* %text.i, metadata !62, metadata !69), !dbg !59
-  call void @llvm.dbg.value(metadata i8* %cond.i, metadata !63, metadata !69), !dbg !75
-  call void @_ZN1AC1EPKc(%class.A* nonnull %agg.tmp.i.i, i8* %cond.i), !dbg !76
-  call void @_ZN1A5m_fn1ES_(%class.A* nonnull %text.i), !dbg !77
-  call void @llvm.lifetime.end(i64 1, i8* %2), !dbg !79
-  call void @llvm.lifetime.end(i64 1, i8* %1) #4, !dbg !80
+  %cond.i = select i1 %tobool.i, ptr @.str, ptr @.str.1, !dbg !73
+  call void @llvm.dbg.value(metadata ptr %text.i, metadata !55, metadata !66), !dbg !74
+  call void @llvm.lifetime.start(i64 1, ptr %agg.tmp.i.i), !dbg !59
+  call void @llvm.dbg.value(metadata ptr %text.i, metadata !62, metadata !69), !dbg !59
+  call void @llvm.dbg.value(metadata ptr %cond.i, metadata !63, metadata !69), !dbg !75
+  call void @_ZN1AC1EPKc(ptr nonnull %agg.tmp.i.i, ptr %cond.i), !dbg !76
+  call void @_ZN1A5m_fn1ES_(ptr nonnull %text.i), !dbg !77
+  call void @llvm.lifetime.end(i64 1, ptr %agg.tmp.i.i), !dbg !79
+  call void @llvm.lifetime.end(i64 1, ptr %text.i) #4, !dbg !80
   br label %for.cond, !dbg !81, !llvm.loop !82
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start(i64, ptr nocapture) #1
 
-declare double @_ZN1BixEj(%class.B*, i32) local_unnamed_addr #2
+declare double @_ZN1BixEj(ptr, i32) local_unnamed_addr #2
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end(i64, ptr nocapture) #1
 
-declare void @_ZN1A5m_fn1ES_(%class.A*) local_unnamed_addr #2
+declare void @_ZN1A5m_fn1ES_(ptr) local_unnamed_addr #2
 
-declare void @_ZN1AC1EPKc(%class.A*, i8*) unnamed_addr #2
+declare void @_ZN1AC1EPKc(ptr, ptr) unnamed_addr #2
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, metadata, metadata) #3

diff  --git a/llvm/test/DebugInfo/X86/pr34545.ll b/llvm/test/DebugInfo/X86/pr34545.ll
index 68603fc54acb0..634cad2e17a61 100644
--- a/llvm/test/DebugInfo/X86/pr34545.ll
+++ b/llvm/test/DebugInfo/X86/pr34545.ll
@@ -31,16 +31,16 @@ target triple = "x86_64-unknown-linux-gnu"
 
 define i32 @main() local_unnamed_addr !dbg !14 {
 entry:
-  %0 = load i32, i32* @var
+  %0 = load i32, ptr @var
   tail call void @llvm.dbg.value(metadata i32 %0, metadata !18, metadata !DIExpression()), !dbg !20
-  %1 = load i32, i32* @sc
+  %1 = load i32, ptr @sc
   %shl = shl i32 %0, %1
   tail call void @llvm.dbg.value(metadata i32 %shl, metadata !18, metadata !DIExpression()), !dbg !20
   tail call void asm sideeffect "", "~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15},~{dirflag},~{fpsr},~{flags}"(), !srcloc !25
-  %2 = load i32, i32* @sc
+  %2 = load i32, ptr @sc
   %shl2 = shl i32 %shl, %2
   tail call void @llvm.dbg.value(metadata i32 %shl2, metadata !18, metadata !DIExpression()), !dbg !20
-  store i32 %shl2, i32* @var
+  store i32 %shl2, ptr @var
   ret i32 %shl2, !dbg !20
 }
 

diff  --git a/llvm/test/DebugInfo/X86/pr40427.ll b/llvm/test/DebugInfo/X86/pr40427.ll
index 2848b892f1ce6..777db13bc780f 100644
--- a/llvm/test/DebugInfo/X86/pr40427.ll
+++ b/llvm/test/DebugInfo/X86/pr40427.ll
@@ -18,7 +18,7 @@
 
 target triple = "x86_64-unknown-linux-gnu"
 
-define i16 @lolwat(i1 %spoons, i64 *%bees, i16 %yellow, i64 *%more) {
+define i16 @lolwat(i1 %spoons, ptr %bees, i16 %yellow, ptr %more) {
 entry:
   br i1 %spoons, label %trueb, label %falseb
 trueb:
@@ -32,9 +32,8 @@ block:
 ; DBGVALUE-NEXT: DBG_VALUE [[LOADR]], $noreg, ![[DBGVAR]]
 ; INSTRREF-NEXT: DBG_INSTR_REF 1, 0, ![[DBGVAR]]
 ; CHECK-NEXT: %{{[0-9]+}}:gr32 = IMPLICIT_DEF
-  %foo = phi i64 *[%bees, %trueb], [%more, %falseb]
-  %forks = bitcast i64 *%foo to i32 *
-  %ret = load i32, i32 *%forks, !dbg !6
+  %foo = phi ptr[%bees, %trueb], [%more, %falseb]
+  %ret = load i32, ptr %foo, !dbg !6
   %cast = trunc i32 %ret to i16, !dbg !6
   call void @llvm.dbg.value(metadata i16 %cast, metadata !1, metadata !DIExpression()), !dbg !6
   %orly2 = add i16 %yellow, 1

diff  --git a/llvm/test/DebugInfo/X86/pr45181.ll b/llvm/test/DebugInfo/X86/pr45181.ll
index c45799c4acc87..3a469309642eb 100644
--- a/llvm/test/DebugInfo/X86/pr45181.ll
+++ b/llvm/test/DebugInfo/X86/pr45181.ll
@@ -17,14 +17,13 @@ target triple = "x86_64-apple-macosx10.14.0"
 %struct.r = type opaque
 
 @o = local_unnamed_addr global i32 0, align 4, !dbg !0
- at p = local_unnamed_addr global %struct.e* null, align 8, !dbg !42
+ at p = local_unnamed_addr global ptr null, align 8, !dbg !42
 
 ; Function Attrs: optsize ssp uwtable
-define void @_ZN2aa2aq2arEv(%"class.aa::aq"* %this) local_unnamed_addr #0 align 2 !dbg !50 {
+define void @_ZN2aa2aq2arEv(ptr %this) local_unnamed_addr #0 align 2 !dbg !50 {
 entry:
-  call void @llvm.dbg.value(metadata %"class.aa::aq"* %this, metadata !71, metadata !DIExpression()), !dbg !75
-  %0 = bitcast %"class.aa::aq"* %this to %"class.aa::ah"*, !dbg !76
-  tail call void @_ZN2aa2ah2aiEiib(%"class.aa::ah"* %0, i32 undef, i32 undef, i1 zeroext true) #5, !dbg !76
+  call void @llvm.dbg.value(metadata ptr %this, metadata !71, metadata !DIExpression()), !dbg !75
+  tail call void @_ZN2aa2ah2aiEiib(ptr %this, i32 undef, i32 undef, i1 zeroext true) #5, !dbg !76
   ret void, !dbg !77
 }
 
@@ -32,113 +31,111 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind willreturn
-declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2
 
 ; Function Attrs: optsize ssp uwtable
-define linkonce_odr void @_ZN2aa2ah2aiEiib(%"class.aa::ah"* %this, i32 %aj, i32 %0, i1 zeroext %1) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !78 {
+define linkonce_odr void @_ZN2aa2ah2aiEiib(ptr %this, i32 %aj, i32 %0, i1 zeroext %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 !dbg !78 {
 entry:
   %ao = alloca %"class.aa::y", align 1
   %ap = alloca %"class.aa::y.0", align 1
-  call void @llvm.dbg.value(metadata %"class.aa::ah"* %this, metadata !80, metadata !DIExpression()), !dbg !126
+  call void @llvm.dbg.value(metadata ptr %this, metadata !80, metadata !DIExpression()), !dbg !126
   call void @llvm.dbg.value(metadata i32 %aj, metadata !82, metadata !DIExpression()), !dbg !126
   call void @llvm.dbg.value(metadata i32 %0, metadata !83, metadata !DIExpression()), !dbg !126
   call void @llvm.dbg.value(metadata i1 %1, metadata !84, metadata !DIExpression()), !dbg !126
   call void @llvm.dbg.value(metadata i32 %aj, metadata !85, metadata !DIExpression()), !dbg !126
-  %2 = getelementptr inbounds %"class.aa::y", %"class.aa::y"* %ao, i64 0, i32 0, !dbg !127
-  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %2) #6, !dbg !127
-  call void @llvm.dbg.declare(metadata %"class.aa::y"* %ao, metadata !91, metadata !DIExpression()), !dbg !128
-  %call = tail call %struct.j* @_Z1mPvS_lPFvS_PKvlE(i8* undef, i8* undef, i64 0, void (i8*, i8*, i64)* nonnull @_ZN2aa12_GLOBAL__N_12agEPvPKvl) #5, !dbg !129
-  call void @_ZN2aa1yIP1jNS_2ac1zI1eEEEC1ES2_(%"class.aa::y"* nonnull %ao, %struct.j* %call) #5, !dbg !128
-  %3 = getelementptr inbounds %"class.aa::y.0", %"class.aa::y.0"* %ap, i64 0, i32 0, !dbg !130
-  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %3) #6, !dbg !130
-  call void @llvm.dbg.declare(metadata %"class.aa::y.0"* %ap, metadata !110, metadata !DIExpression()), !dbg !131
-  %4 = load %struct.e*, %struct.e** @p, align 8, !dbg !132, !tbaa !133
-  %call3 = invoke %struct.h* @_Z1qP1e(%struct.e* %4) #5
+  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ao) #6, !dbg !127
+  call void @llvm.dbg.declare(metadata ptr %ao, metadata !91, metadata !DIExpression()), !dbg !128
+  %call = tail call ptr @_Z1mPvS_lPFvS_PKvlE(ptr undef, ptr undef, i64 0, ptr nonnull @_ZN2aa12_GLOBAL__N_12agEPvPKvl) #5, !dbg !129
+  call void @_ZN2aa1yIP1jNS_2ac1zI1eEEEC1ES2_(ptr nonnull %ao, ptr %call) #5, !dbg !128
+  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ap) #6, !dbg !130
+  call void @llvm.dbg.declare(metadata ptr %ap, metadata !110, metadata !DIExpression()), !dbg !131
+  %2 = load ptr, ptr @p, align 8, !dbg !132, !tbaa !133
+  %call3 = invoke ptr @_Z1qP1e(ptr %2) #5
           to label %invoke.cont unwind label %lpad, !dbg !137
 
 invoke.cont:                                      ; preds = %entry
-  invoke void @_ZN2aa1yIP1hNS_2ac1zI1eEEEC1ES2_(%"class.aa::y.0"* nonnull %ap, %struct.h* %call3) #5
+  invoke void @_ZN2aa1yIP1hNS_2ac1zI1eEEEC1ES2_(ptr nonnull %ap, ptr %call3) #5
           to label %invoke.cont4 unwind label %lpad, !dbg !131
 
 invoke.cont4:                                     ; preds = %invoke.cont
   %conv = sext i32 %aj to i64, !dbg !138
   %mul = shl nsw i32 %aj, 2, !dbg !139
   %conv6 = sext i32 %mul to i64, !dbg !140
-  %call9 = invoke %struct.h* @_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv(%"class.aa::y.0"* nonnull %ap) #5
+  %call9 = invoke ptr @_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv(ptr nonnull %ap) #5
           to label %invoke.cont8 unwind label %lpad7, !dbg !141
 
 invoke.cont8:                                     ; preds = %invoke.cont4
-  %call11 = invoke %struct.j* @_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv(%"class.aa::y"* nonnull %ao) #5
+  %call11 = invoke ptr @_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv(ptr nonnull %ao) #5
           to label %invoke.cont10 unwind label %lpad7, !dbg !142
 
 invoke.cont10:                                    ; preds = %invoke.cont8
-  %5 = load i32, i32* @o, align 4, !dbg !143, !tbaa !144
-  %call13 = invoke %struct.r* @_Z1vlllllP1hiP1jPdb1n(i64 %conv, i64 0, i64 8, i64 2, i64 %conv6, %struct.h* %call9, i32 0, %struct.j* %call11, double* null, i1 zeroext false, i32 %5) #5
+  %3 = load i32, ptr @o, align 4, !dbg !143, !tbaa !144
+  %call13 = invoke ptr @_Z1vlllllP1hiP1jPdb1n(i64 %conv, i64 0, i64 8, i64 2, i64 %conv6, ptr %call9, i32 0, ptr %call11, ptr null, i1 zeroext false, i32 %3) #5
           to label %invoke.cont12 unwind label %lpad7, !dbg !146
 
 invoke.cont12:                                    ; preds = %invoke.cont10
   unreachable, !dbg !146
 
 lpad:                                             ; preds = %invoke.cont, %entry
-  %6 = landingpad { i8*, i32 }
+  %4 = landingpad { ptr, i32 }
           cleanup, !dbg !147
-  %7 = extractvalue { i8*, i32 } %6, 0, !dbg !147
-  %8 = extractvalue { i8*, i32 } %6, 1, !dbg !147
+  %5 = extractvalue { ptr, i32 } %4, 0, !dbg !147
+  %6 = extractvalue { ptr, i32 } %4, 1, !dbg !147
   br label %ehcleanup, !dbg !147
 
 lpad7:                                            ; preds = %invoke.cont10, %invoke.cont8, %invoke.cont4
-  %9 = landingpad { i8*, i32 }
+  %7 = landingpad { ptr, i32 }
           cleanup, !dbg !147
-  %10 = extractvalue { i8*, i32 } %9, 0, !dbg !147
-  %11 = extractvalue { i8*, i32 } %9, 1, !dbg !147
-  call void @_ZN2aa1yIP1hNS_2ac1zI1eEEED1Ev(%"class.aa::y.0"* nonnull %ap) #7, !dbg !147
+  %8 = extractvalue { ptr, i32 } %7, 0, !dbg !147
+  %9 = extractvalue { ptr, i32 } %7, 1, !dbg !147
+  call void @_ZN2aa1yIP1hNS_2ac1zI1eEEED1Ev(ptr nonnull %ap) #7, !dbg !147
   br label %ehcleanup, !dbg !147
 
 ehcleanup:                                        ; preds = %lpad7, %lpad
-  %exn.slot.0 = phi i8* [ %10, %lpad7 ], [ %7, %lpad ], !dbg !147
-  %ehselector.slot.0 = phi i32 [ %11, %lpad7 ], [ %8, %lpad ], !dbg !147
-  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %3) #6, !dbg !147
-  call void @_ZN2aa1yIP1jNS_2ac1zI1eEEED1Ev(%"class.aa::y"* nonnull %ao) #7, !dbg !147
-  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %2) #6, !dbg !147
-  %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn.slot.0, 0, !dbg !147
-  %lpad.val19 = insertvalue { i8*, i32 } %lpad.val, i32 %ehselector.slot.0, 1, !dbg !147
-  resume { i8*, i32 } %lpad.val19, !dbg !147
+  %exn.slot.0 = phi ptr [ %8, %lpad7 ], [ %5, %lpad ], !dbg !147
+  %ehselector.slot.0 = phi i32 [ %9, %lpad7 ], [ %6, %lpad ], !dbg !147
+  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ap) #6, !dbg !147
+  call void @_ZN2aa1yIP1jNS_2ac1zI1eEEED1Ev(ptr nonnull %ao) #7, !dbg !147
+  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ao) #6, !dbg !147
+  %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn.slot.0, 0, !dbg !147
+  %lpad.val19 = insertvalue { ptr, i32 } %lpad.val, i32 %ehselector.slot.0, 1, !dbg !147
+  resume { ptr, i32 } %lpad.val19, !dbg !147
 }
 
 ; Function Attrs: argmemonly nounwind willreturn
-declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2
 
 ; Function Attrs: optsize
-declare !dbg !11 %struct.j* @_Z1mPvS_lPFvS_PKvlE(i8*, i8*, i64, void (i8*, i8*, i64)*) local_unnamed_addr #3
+declare !dbg !11 ptr @_Z1mPvS_lPFvS_PKvlE(ptr, ptr, i64, ptr) local_unnamed_addr #3
 
 ; Function Attrs: optsize
-declare void @_ZN2aa12_GLOBAL__N_12agEPvPKvl(i8*, i8*, i64) #3
+declare void @_ZN2aa12_GLOBAL__N_12agEPvPKvl(ptr, ptr, i64) #3
 
 ; Function Attrs: optsize
-declare void @_ZN2aa1yIP1jNS_2ac1zI1eEEEC1ES2_(%"class.aa::y"*, %struct.j*) unnamed_addr #3
+declare void @_ZN2aa1yIP1jNS_2ac1zI1eEEEC1ES2_(ptr, ptr) unnamed_addr #3
 
 ; Function Attrs: optsize
-declare !dbg !24 %struct.h* @_Z1qP1e(%struct.e*) local_unnamed_addr #3
+declare !dbg !24 ptr @_Z1qP1e(ptr) local_unnamed_addr #3
 
 declare i32 @__gxx_personality_v0(...)
 
 ; Function Attrs: optsize
-declare void @_ZN2aa1yIP1hNS_2ac1zI1eEEEC1ES2_(%"class.aa::y.0"*, %struct.h*) unnamed_addr #3
+declare void @_ZN2aa1yIP1hNS_2ac1zI1eEEEC1ES2_(ptr, ptr) unnamed_addr #3
 
 ; Function Attrs: optsize
-declare !dbg !31 %struct.r* @_Z1vlllllP1hiP1jPdb1n(i64, i64, i64, i64, i64, %struct.h*, i32, %struct.j*, double*, i1 zeroext, i32) local_unnamed_addr #3
+declare !dbg !31 ptr @_Z1vlllllP1hiP1jPdb1n(i64, i64, i64, i64, i64, ptr, i32, ptr, ptr, i1 zeroext, i32) local_unnamed_addr #3
 
 ; Function Attrs: optsize
-declare %struct.h* @_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv(%"class.aa::y.0"*) local_unnamed_addr #3
+declare ptr @_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv(ptr) local_unnamed_addr #3
 
 ; Function Attrs: optsize
-declare %struct.j* @_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv(%"class.aa::y"*) local_unnamed_addr #3
+declare ptr @_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv(ptr) local_unnamed_addr #3
 
 ; Function Attrs: nounwind optsize
-declare void @_ZN2aa1yIP1hNS_2ac1zI1eEEED1Ev(%"class.aa::y.0"*) unnamed_addr #4
+declare void @_ZN2aa1yIP1hNS_2ac1zI1eEEED1Ev(ptr) unnamed_addr #4
 
 ; Function Attrs: nounwind optsize
-declare void @_ZN2aa1yIP1jNS_2ac1zI1eEEED1Ev(%"class.aa::y"*) unnamed_addr #4
+declare void @_ZN2aa1yIP1jNS_2ac1zI1eEEED1Ev(ptr) unnamed_addr #4
 
 ; Function Attrs: nounwind readnone speculatable willreturn
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1

diff  --git a/llvm/test/DebugInfo/X86/range_reloc_base.ll b/llvm/test/DebugInfo/X86/range_reloc_base.ll
index 812bed58b5bdc..53af62ea76e63 100644
--- a/llvm/test/DebugInfo/X86/range_reloc_base.ll
+++ b/llvm/test/DebugInfo/X86/range_reloc_base.ll
@@ -23,7 +23,7 @@
 define dso_local void @_Z2f2v() !dbg !7 {
 entry:
   %b = alloca i8, align 1
-  call void @llvm.dbg.declare(metadata i8* %b, metadata !11, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !11, metadata !DIExpression()), !dbg !14
   call void @_Z2f1v(), !dbg !15
   call void @_Z2f1v(), !dbg !10
   call void @_Z2f1v(), !dbg !16

diff  --git a/llvm/test/DebugInfo/X86/reference-argument.ll b/llvm/test/DebugInfo/X86/reference-argument.ll
index 3beb16e2ff145..8747da5071a8b 100644
--- a/llvm/test/DebugInfo/X86/reference-argument.ll
+++ b/llvm/test/DebugInfo/X86/reference-argument.ll
@@ -19,26 +19,26 @@
 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.9.0"
 
-%class.SVal = type { i8*, i32 }
+%class.SVal = type { ptr, i32 }
 %class.A = type { i8 }
 
-declare void @_Z3barR4SVal(%class.SVal* %v)
+declare void @_Z3barR4SVal(ptr %v)
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
 declare i32 @main()
 ; Function Attrs: nounwind ssp uwtable
-define linkonce_odr void @_ZN1A3fooE4SVal(%class.A* %this, %class.SVal* %v) nounwind ssp uwtable align 2 !dbg !35 {
+define linkonce_odr void @_ZN1A3fooE4SVal(ptr %this, ptr %v) nounwind ssp uwtable align 2 !dbg !35 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !59, metadata !DIExpression()), !dbg !61
-  call void @llvm.dbg.value(metadata %class.SVal* %v, metadata !62, metadata !DIExpression(DW_OP_deref)), !dbg !61
-  %this1 = load %class.A*, %class.A** %this.addr
-  call void @_Z3barR4SVal(%class.SVal* %v), !dbg !61
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !59, metadata !DIExpression()), !dbg !61
+  call void @llvm.dbg.value(metadata ptr %v, metadata !62, metadata !DIExpression(DW_OP_deref)), !dbg !61
+  %this1 = load ptr, ptr %this.addr
+  call void @_Z3barR4SVal(ptr %v), !dbg !61
   ret void, !dbg !61
 }
-declare void @_ZN4SValD1Ev(%class.SVal* %this)
-declare void @_ZN4SValD2Ev(%class.SVal* %this)
+declare void @_ZN4SValD1Ev(ptr %this)
+declare void @_ZN4SValD2Ev(ptr %this)
 
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!47, !68}

diff  --git a/llvm/test/DebugInfo/X86/rnglists_base_attr.ll b/llvm/test/DebugInfo/X86/rnglists_base_attr.ll
index c55626cfd6ad6..1e737b2608e70 100644
--- a/llvm/test/DebugInfo/X86/rnglists_base_attr.ll
+++ b/llvm/test/DebugInfo/X86/rnglists_base_attr.ll
@@ -46,7 +46,7 @@
 define dso_local void @_Z2f2v() !dbg !7 {
 entry:
   %b = alloca i8, align 1
-  call void @llvm.dbg.declare(metadata i8* %b, metadata !11, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !11, metadata !DIExpression()), !dbg !14
   call void @_Z2f1v(), !dbg !15
   ; The following call has been moved here from right after the alloca
   call void @_Z2f1v(), !dbg !10  

diff  --git a/llvm/test/DebugInfo/X86/rvalue-ref.ll b/llvm/test/DebugInfo/X86/rvalue-ref.ll
index 5cb9349c5c4b4..05ba0afbbd5ff 100644
--- a/llvm/test/DebugInfo/X86/rvalue-ref.ll
+++ b/llvm/test/DebugInfo/X86/rvalue-ref.ll
@@ -5,20 +5,20 @@
 
 @.str = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
 
-define void @_Z3fooOi(i32* %i) uwtable ssp !dbg !5 {
+define void @_Z3fooOi(ptr %i) uwtable ssp !dbg !5 {
 entry:
-  %i.addr = alloca i32*, align 8
-  store i32* %i, i32** %i.addr, align 8
-  call void @llvm.dbg.declare(metadata i32** %i.addr, metadata !11, metadata !DIExpression()), !dbg !12
-  %0 = load i32*, i32** %i.addr, align 8, !dbg !13
-  %1 = load i32, i32* %0, align 4, !dbg !13
-  %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 %1), !dbg !13
+  %i.addr = alloca ptr, align 8
+  store ptr %i, ptr %i.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !11, metadata !DIExpression()), !dbg !12
+  %0 = load ptr, ptr %i.addr, align 8, !dbg !13
+  %1 = load i32, ptr %0, align 4, !dbg !13
+  %call = call i32 (ptr, ...) @printf(ptr @.str, i32 %1), !dbg !13
   ret void, !dbg !15
 }
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
 
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!17}

diff  --git a/llvm/test/DebugInfo/X86/safestack-byval.ll b/llvm/test/DebugInfo/X86/safestack-byval.ll
index 7e4d9fc5ab5f2..e0e26dddba98a 100644
--- a/llvm/test/DebugInfo/X86/safestack-byval.ll
+++ b/llvm/test/DebugInfo/X86/safestack-byval.ll
@@ -18,25 +18,23 @@
 
 %struct.S = type { [100 x i32] }
 
- at __safestack_unsafe_stack_ptr = external thread_local(initialexec) global i8*
+ at __safestack_unsafe_stack_ptr = external thread_local(initialexec) global ptr
 
 ; Function Attrs: norecurse nounwind readonly safestack uwtable
-define i32 @_Z1f1Sm(%struct.S* byval(%struct.S) nocapture readonly align 8 %zzz, i64 %len) #0 !dbg !12 {
+define i32 @_Z1f1Sm(ptr byval(%struct.S) nocapture readonly align 8 %zzz, i64 %len) #0 !dbg !12 {
 entry:
-  %unsafe_stack_ptr = load i8*, i8** @__safestack_unsafe_stack_ptr, !dbg !22
-  %unsafe_stack_static_top = getelementptr i8, i8* %unsafe_stack_ptr, i32 -400, !dbg !22
-  store i8* %unsafe_stack_static_top, i8** @__safestack_unsafe_stack_ptr, !dbg !22
+  %unsafe_stack_ptr = load ptr, ptr @__safestack_unsafe_stack_ptr, !dbg !22
+  %unsafe_stack_static_top = getelementptr i8, ptr %unsafe_stack_ptr, i32 -400, !dbg !22
+  store ptr %unsafe_stack_static_top, ptr @__safestack_unsafe_stack_ptr, !dbg !22
 ; !17 describes "zzz"
-  call void @llvm.dbg.declare(metadata i8* %unsafe_stack_ptr, metadata !17, metadata !23), !dbg !22
-  %0 = getelementptr i8, i8* %unsafe_stack_ptr, i32 -400, !dbg !22
-  %zzz.unsafe-byval = bitcast i8* %0 to %struct.S*, !dbg !22
-  %1 = bitcast %struct.S* %zzz to i8*, !dbg !24
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 400, i1 false), !dbg !24
+  call void @llvm.dbg.declare(metadata ptr %unsafe_stack_ptr, metadata !17, metadata !23), !dbg !22
+  %0 = getelementptr i8, ptr %unsafe_stack_ptr, i32 -400, !dbg !22
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 8 %zzz, i64 400, i1 false), !dbg !24
   tail call void @llvm.dbg.value(metadata i64 %len, metadata !18, metadata !25), !dbg !24
-  %arrayidx = getelementptr inbounds %struct.S, %struct.S* %zzz.unsafe-byval, i64 0, i32 0, i64 %len, !dbg !26
-  %2 = load i32, i32* %arrayidx, align 4, !dbg !26, !tbaa !27
-  store i8* %unsafe_stack_ptr, i8** @__safestack_unsafe_stack_ptr, !dbg !31
-  ret i32 %2, !dbg !31
+  %arrayidx = getelementptr inbounds %struct.S, ptr %0, i64 0, i32 0, i64 %len, !dbg !26
+  %1 = load i32, ptr %arrayidx, align 4, !dbg !26, !tbaa !27
+  store ptr %unsafe_stack_ptr, ptr @__safestack_unsafe_stack_ptr, !dbg !31
+  ret i32 %1, !dbg !31
 }
 
 ; Function Attrs: nounwind readnone
@@ -46,7 +44,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1) #2
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) #2
 
 attributes #0 = { norecurse nounwind readonly safestack uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/sret.ll b/llvm/test/DebugInfo/X86/sret.ll
index ccd1cefca31aa..644f0c6bcd25f 100644
--- a/llvm/test/DebugInfo/X86/sret.ll
+++ b/llvm/test/DebugInfo/X86/sret.ll
@@ -18,32 +18,31 @@
 ; SDAG-NEXT:     [{{.*}}, {{.*}}): DW_OP_breg6 RBP-32, DW_OP_deref)
 ; CHECK-NEXT:   DW_AT_name {{.*}}"a"
 
-%class.A = type { i32 (...)**, i32 }
+%class.A = type { ptr, i32 }
 %class.B = type { i8 }
 
- at _ZTV1A = linkonce_odr unnamed_addr constant [4 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast (void (%class.A*)* @_ZN1AD2Ev to i8*), i8* bitcast (void (%class.A*)* @_ZN1AD0Ev to i8*)]
- at _ZTVN10__cxxabiv117__class_type_infoE = external global i8*
+ at _ZTV1A = linkonce_odr unnamed_addr constant [4 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1AD2Ev, ptr @_ZN1AD0Ev]
+ at _ZTVN10__cxxabiv117__class_type_infoE = external global ptr
 @_ZTS1A = linkonce_odr constant [3 x i8] c"1A\00"
- at _ZTI1A = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @_ZTS1A, i32 0, i32 0) }
+ at _ZTI1A = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }
 
- at _ZN1AC1Ei = alias void (%class.A*, i32), void (%class.A*, i32)* @_ZN1AC2Ei
- at _ZN1AC1ERKS_ = alias void (%class.A*, %class.A*), void (%class.A*, %class.A*)* @_ZN1AC2ERKS_
+ at _ZN1AC1Ei = alias void (ptr, i32), ptr @_ZN1AC2Ei
+ at _ZN1AC1ERKS_ = alias void (ptr, ptr), ptr @_ZN1AC2ERKS_
 
 ; Function Attrs: nounwind uwtable
-define void @_ZN1AC2Ei(%class.A* %this, i32 %i) unnamed_addr #0 align 2 !dbg !49 {
+define void @_ZN1AC2Ei(ptr %this, i32 %i) unnamed_addr #0 align 2 !dbg !49 {
 entry:
-  %this.addr = alloca %class.A*, align 8
+  %this.addr = alloca ptr, align 8
   %i.addr = alloca i32, align 4
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !67, metadata !DIExpression()), !dbg !69
-  store i32 %i, i32* %i.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %i.addr, metadata !70, metadata !DIExpression()), !dbg !71
-  %this1 = load %class.A*, %class.A** %this.addr
-  %0 = bitcast %class.A* %this1 to i8***, !dbg !72
-  store i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @_ZTV1A, i64 0, i64 2), i8*** %0, !dbg !72
-  %m_int = getelementptr inbounds %class.A, %class.A* %this1, i32 0, i32 1, !dbg !72
-  %1 = load i32, i32* %i.addr, align 4, !dbg !72
-  store i32 %1, i32* %m_int, align 4, !dbg !72
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !67, metadata !DIExpression()), !dbg !69
+  store i32 %i, ptr %i.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !70, metadata !DIExpression()), !dbg !71
+  %this1 = load ptr, ptr %this.addr
+  store ptr getelementptr inbounds ([4 x ptr], ptr @_ZTV1A, i64 0, i64 2), ptr %this1, !dbg !72
+  %m_int = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1, !dbg !72
+  %0 = load i32, ptr %i.addr, align 4, !dbg !72
+  store i32 %0, ptr %m_int, align 4, !dbg !72
   ret void, !dbg !73
 }
 
@@ -51,74 +50,73 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind uwtable
-define void @_ZN1AC2ERKS_(%class.A* %this, %class.A* %rhs) unnamed_addr #0 align 2 !dbg !50 {
+define void @_ZN1AC2ERKS_(ptr %this, ptr %rhs) unnamed_addr #0 align 2 !dbg !50 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  %rhs.addr = alloca %class.A*, align 8
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !74, metadata !DIExpression()), !dbg !75
-  store %class.A* %rhs, %class.A** %rhs.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %rhs.addr, metadata !76, metadata !DIExpression()), !dbg !77
-  %this1 = load %class.A*, %class.A** %this.addr
-  %0 = bitcast %class.A* %this1 to i8***, !dbg !78
-  store i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @_ZTV1A, i64 0, i64 2), i8*** %0, !dbg !78
-  %m_int = getelementptr inbounds %class.A, %class.A* %this1, i32 0, i32 1, !dbg !78
-  %1 = load %class.A*, %class.A** %rhs.addr, align 8, !dbg !78
-  %m_int2 = getelementptr inbounds %class.A, %class.A* %1, i32 0, i32 1, !dbg !78
-  %2 = load i32, i32* %m_int2, align 4, !dbg !78
-  store i32 %2, i32* %m_int, align 4, !dbg !78
+  %this.addr = alloca ptr, align 8
+  %rhs.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !74, metadata !DIExpression()), !dbg !75
+  store ptr %rhs, ptr %rhs.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %rhs.addr, metadata !76, metadata !DIExpression()), !dbg !77
+  %this1 = load ptr, ptr %this.addr
+  store ptr getelementptr inbounds ([4 x ptr], ptr @_ZTV1A, i64 0, i64 2), ptr %this1, !dbg !78
+  %m_int = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1, !dbg !78
+  %0 = load ptr, ptr %rhs.addr, align 8, !dbg !78
+  %m_int2 = getelementptr inbounds %class.A, ptr %0, i32 0, i32 1, !dbg !78
+  %1 = load i32, ptr %m_int2, align 4, !dbg !78
+  store i32 %1, ptr %m_int, align 4, !dbg !78
   ret void, !dbg !79
 }
 
 ; Function Attrs: nounwind uwtable
-define %class.A* @_ZN1AaSERKS_(%class.A* %this, %class.A* %rhs) #0 align 2 !dbg !51 {
+define ptr @_ZN1AaSERKS_(ptr %this, ptr %rhs) #0 align 2 !dbg !51 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  %rhs.addr = alloca %class.A*, align 8
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !80, metadata !DIExpression()), !dbg !81
-  store %class.A* %rhs, %class.A** %rhs.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %rhs.addr, metadata !82, metadata !DIExpression()), !dbg !83
-  %this1 = load %class.A*, %class.A** %this.addr
-  %0 = load %class.A*, %class.A** %rhs.addr, align 8, !dbg !84
-  %m_int = getelementptr inbounds %class.A, %class.A* %0, i32 0, i32 1, !dbg !84
-  %1 = load i32, i32* %m_int, align 4, !dbg !84
-  %m_int2 = getelementptr inbounds %class.A, %class.A* %this1, i32 0, i32 1, !dbg !84
-  store i32 %1, i32* %m_int2, align 4, !dbg !84
-  ret %class.A* %this1, !dbg !85
+  %this.addr = alloca ptr, align 8
+  %rhs.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !80, metadata !DIExpression()), !dbg !81
+  store ptr %rhs, ptr %rhs.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %rhs.addr, metadata !82, metadata !DIExpression()), !dbg !83
+  %this1 = load ptr, ptr %this.addr
+  %0 = load ptr, ptr %rhs.addr, align 8, !dbg !84
+  %m_int = getelementptr inbounds %class.A, ptr %0, i32 0, i32 1, !dbg !84
+  %1 = load i32, ptr %m_int, align 4, !dbg !84
+  %m_int2 = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1, !dbg !84
+  store i32 %1, ptr %m_int2, align 4, !dbg !84
+  ret ptr %this1, !dbg !85
 }
 
 ; Function Attrs: nounwind uwtable
-define i32 @_ZN1A7get_intEv(%class.A* %this) #0 align 2 !dbg !52 {
+define i32 @_ZN1A7get_intEv(ptr %this) #0 align 2 !dbg !52 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !86, metadata !DIExpression()), !dbg !87
-  %this1 = load %class.A*, %class.A** %this.addr
-  %m_int = getelementptr inbounds %class.A, %class.A* %this1, i32 0, i32 1, !dbg !88
-  %0 = load i32, i32* %m_int, align 4, !dbg !88
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !86, metadata !DIExpression()), !dbg !87
+  %this1 = load ptr, ptr %this.addr
+  %m_int = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1, !dbg !88
+  %0 = load i32, ptr %m_int, align 4, !dbg !88
   ret i32 %0, !dbg !88
 }
 
 ; Function Attrs: uwtable
-define void @_ZN1B9AInstanceEv(%class.A* noalias sret(%class.A) %agg.result, %class.B* %this) #2 align 2 !dbg !53 {
+define void @_ZN1B9AInstanceEv(ptr noalias sret(%class.A) %agg.result, ptr %this) #2 align 2 !dbg !53 {
 entry:
-  %this.addr = alloca %class.B*, align 8
+  %this.addr = alloca ptr, align 8
   %nrvo = alloca i1
   %cleanup.dest.slot = alloca i32
-  store %class.B* %this, %class.B** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.B** %this.addr, metadata !89, metadata !DIExpression()), !dbg !91
-  %this1 = load %class.B*, %class.B** %this.addr
-  store i1 false, i1* %nrvo, !dbg !92
-  call void @llvm.dbg.declare(metadata %class.A* %agg.result, metadata !93, metadata !DIExpression()), !dbg !92
-  call void @_ZN1AC1Ei(%class.A* %agg.result, i32 12), !dbg !92
-  store i1 true, i1* %nrvo, !dbg !94
-  store i32 1, i32* %cleanup.dest.slot
-  %nrvo.val = load i1, i1* %nrvo, !dbg !95
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !89, metadata !DIExpression()), !dbg !91
+  %this1 = load ptr, ptr %this.addr
+  store i1 false, ptr %nrvo, !dbg !92
+  call void @llvm.dbg.declare(metadata ptr %agg.result, metadata !93, metadata !DIExpression()), !dbg !92
+  call void @_ZN1AC1Ei(ptr %agg.result, i32 12), !dbg !92
+  store i1 true, ptr %nrvo, !dbg !94
+  store i32 1, ptr %cleanup.dest.slot
+  %nrvo.val = load i1, ptr %nrvo, !dbg !95
   br i1 %nrvo.val, label %nrvo.skipdtor, label %nrvo.unused, !dbg !95
 
 nrvo.unused:                                      ; preds = %entry
-  call void @_ZN1AD2Ev(%class.A* %agg.result), !dbg !96
+  call void @_ZN1AD2Ev(ptr %agg.result), !dbg !96
   br label %nrvo.skipdtor, !dbg !96
 
 nrvo.skipdtor:                                    ; preds = %nrvo.unused, %entry
@@ -126,141 +124,139 @@ nrvo.skipdtor:                                    ; preds = %nrvo.unused, %entry
 }
 
 ; Function Attrs: nounwind uwtable
-define linkonce_odr void @_ZN1AD2Ev(%class.A* %this) unnamed_addr #0 align 2 !dbg !63 {
+define linkonce_odr void @_ZN1AD2Ev(ptr %this) unnamed_addr #0 align 2 !dbg !63 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !101, metadata !DIExpression()), !dbg !102
-  %this1 = load %class.A*, %class.A** %this.addr
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !101, metadata !DIExpression()), !dbg !102
+  %this1 = load ptr, ptr %this.addr
   ret void, !dbg !103
 }
 
 ; Function Attrs: uwtable
-define i32 @main(i32 %argc, i8** %argv) #2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !54 {
+define i32 @main(i32 %argc, ptr %argv) #2 personality ptr @__gxx_personality_v0 !dbg !54 {
 entry:
   %retval = alloca i32, align 4
   %argc.addr = alloca i32, align 4
-  %argv.addr = alloca i8**, align 8
+  %argv.addr = alloca ptr, align 8
   %b = alloca %class.B, align 1
   %return_val = alloca i32, align 4
   %temp.lvalue = alloca %class.A, align 8
-  %exn.slot = alloca i8*
+  %exn.slot = alloca ptr
   %ehselector.slot = alloca i32
   %a = alloca %class.A, align 8
   %cleanup.dest.slot = alloca i32
-  store i32 0, i32* %retval
-  store i32 %argc, i32* %argc.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %argc.addr, metadata !104, metadata !DIExpression()), !dbg !105
-  store i8** %argv, i8*** %argv.addr, align 8
-  call void @llvm.dbg.declare(metadata i8*** %argv.addr, metadata !106, metadata !DIExpression()), !dbg !105
-  call void @llvm.dbg.declare(metadata %class.B* %b, metadata !107, metadata !DIExpression()), !dbg !108
-  call void @_ZN1BC2Ev(%class.B* %b), !dbg !108
-  call void @llvm.dbg.declare(metadata i32* %return_val, metadata !109, metadata !DIExpression()), !dbg !110
-  call void @_ZN1B9AInstanceEv(%class.A* sret(%class.A) %temp.lvalue, %class.B* %b), !dbg !110
-  %call = invoke i32 @_ZN1A7get_intEv(%class.A* %temp.lvalue)
+  store i32 0, ptr %retval
+  store i32 %argc, ptr %argc.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !104, metadata !DIExpression()), !dbg !105
+  store ptr %argv, ptr %argv.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !106, metadata !DIExpression()), !dbg !105
+  call void @llvm.dbg.declare(metadata ptr %b, metadata !107, metadata !DIExpression()), !dbg !108
+  call void @_ZN1BC2Ev(ptr %b), !dbg !108
+  call void @llvm.dbg.declare(metadata ptr %return_val, metadata !109, metadata !DIExpression()), !dbg !110
+  call void @_ZN1B9AInstanceEv(ptr sret(%class.A) %temp.lvalue, ptr %b), !dbg !110
+  %call = invoke i32 @_ZN1A7get_intEv(ptr %temp.lvalue)
           to label %invoke.cont unwind label %lpad, !dbg !110
 
 invoke.cont:                                      ; preds = %entry
-  call void @_ZN1AD2Ev(%class.A* %temp.lvalue), !dbg !111
-  store i32 %call, i32* %return_val, align 4, !dbg !111
-  call void @llvm.dbg.declare(metadata %class.A* %a, metadata !113, metadata !DIExpression()), !dbg !114
-  call void @_ZN1B9AInstanceEv(%class.A* sret(%class.A) %a, %class.B* %b), !dbg !114
-  %0 = load i32, i32* %return_val, align 4, !dbg !115
-  store i32 %0, i32* %retval, !dbg !115
-  store i32 1, i32* %cleanup.dest.slot
-  call void @_ZN1AD2Ev(%class.A* %a), !dbg !116
-  %1 = load i32, i32* %retval, !dbg !116
+  call void @_ZN1AD2Ev(ptr %temp.lvalue), !dbg !111
+  store i32 %call, ptr %return_val, align 4, !dbg !111
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !113, metadata !DIExpression()), !dbg !114
+  call void @_ZN1B9AInstanceEv(ptr sret(%class.A) %a, ptr %b), !dbg !114
+  %0 = load i32, ptr %return_val, align 4, !dbg !115
+  store i32 %0, ptr %retval, !dbg !115
+  store i32 1, ptr %cleanup.dest.slot
+  call void @_ZN1AD2Ev(ptr %a), !dbg !116
+  %1 = load i32, ptr %retval, !dbg !116
   ret i32 %1, !dbg !116
 
 lpad:                                             ; preds = %entry
-  %2 = landingpad { i8*, i32 }
+  %2 = landingpad { ptr, i32 }
           cleanup, !dbg !116
-  %3 = extractvalue { i8*, i32 } %2, 0, !dbg !116
-  store i8* %3, i8** %exn.slot, !dbg !116
-  %4 = extractvalue { i8*, i32 } %2, 1, !dbg !116
-  store i32 %4, i32* %ehselector.slot, !dbg !116
-  invoke void @_ZN1AD2Ev(%class.A* %temp.lvalue)
+  %3 = extractvalue { ptr, i32 } %2, 0, !dbg !116
+  store ptr %3, ptr %exn.slot, !dbg !116
+  %4 = extractvalue { ptr, i32 } %2, 1, !dbg !116
+  store i32 %4, ptr %ehselector.slot, !dbg !116
+  invoke void @_ZN1AD2Ev(ptr %temp.lvalue)
           to label %invoke.cont1 unwind label %terminate.lpad, !dbg !116
 
 invoke.cont1:                                     ; preds = %lpad
   br label %eh.resume, !dbg !117
 
 eh.resume:                                        ; preds = %invoke.cont1
-  %exn = load i8*, i8** %exn.slot, !dbg !119
-  %sel = load i32, i32* %ehselector.slot, !dbg !119
-  %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0, !dbg !119
-  %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1, !dbg !119
-  resume { i8*, i32 } %lpad.val2, !dbg !119
+  %exn = load ptr, ptr %exn.slot, !dbg !119
+  %sel = load i32, ptr %ehselector.slot, !dbg !119
+  %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn, 0, !dbg !119
+  %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1, !dbg !119
+  resume { ptr, i32 } %lpad.val2, !dbg !119
 
 terminate.lpad:                                   ; preds = %lpad
-  %5 = landingpad { i8*, i32 }
-          catch i8* null, !dbg !121
-  %6 = extractvalue { i8*, i32 } %5, 0, !dbg !121
-  call void @__clang_call_terminate(i8* %6) #5, !dbg !121
+  %5 = landingpad { ptr, i32 }
+          catch ptr null, !dbg !121
+  %6 = extractvalue { ptr, i32 } %5, 0, !dbg !121
+  call void @__clang_call_terminate(ptr %6) #5, !dbg !121
   unreachable, !dbg !121
 }
 
 ; Function Attrs: nounwind uwtable
-define linkonce_odr void @_ZN1BC2Ev(%class.B* %this) unnamed_addr #0 align 2 !dbg !62 {
+define linkonce_odr void @_ZN1BC2Ev(ptr %this) unnamed_addr #0 align 2 !dbg !62 {
 entry:
-  %this.addr = alloca %class.B*, align 8
-  store %class.B* %this, %class.B** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.B** %this.addr, metadata !123, metadata !DIExpression()), !dbg !124
-  %this1 = load %class.B*, %class.B** %this.addr
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !123, metadata !DIExpression()), !dbg !124
+  %this1 = load ptr, ptr %this.addr
   ret void, !dbg !125
 }
 
 declare i32 @__gxx_personality_v0(...)
 
 ; Function Attrs: noinline noreturn nounwind
-define linkonce_odr hidden void @__clang_call_terminate(i8*) #3 {
-  %2 = call i8* @__cxa_begin_catch(i8* %0) #6
+define linkonce_odr hidden void @__clang_call_terminate(ptr) #3 {
+  %2 = call ptr @__cxa_begin_catch(ptr %0) #6
   call void @_ZSt9terminatev() #5
   unreachable
 }
 
-declare i8* @__cxa_begin_catch(i8*)
+declare ptr @__cxa_begin_catch(ptr)
 
 declare void @_ZSt9terminatev()
 
 ; Function Attrs: uwtable
-define linkonce_odr void @_ZN1AD0Ev(%class.A* %this) unnamed_addr #2 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !61 {
+define linkonce_odr void @_ZN1AD0Ev(ptr %this) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 !dbg !61 {
 entry:
-  %this.addr = alloca %class.A*, align 8
-  %exn.slot = alloca i8*
+  %this.addr = alloca ptr, align 8
+  %exn.slot = alloca ptr
   %ehselector.slot = alloca i32
-  store %class.A* %this, %class.A** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %class.A** %this.addr, metadata !126, metadata !DIExpression()), !dbg !127
-  %this1 = load %class.A*, %class.A** %this.addr
-  invoke void @_ZN1AD2Ev(%class.A* %this1)
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !126, metadata !DIExpression()), !dbg !127
+  %this1 = load ptr, ptr %this.addr
+  invoke void @_ZN1AD2Ev(ptr %this1)
           to label %invoke.cont unwind label %lpad, !dbg !128
 
 invoke.cont:                                      ; preds = %entry
-  %0 = bitcast %class.A* %this1 to i8*, !dbg !129
-  call void @_ZdlPv(i8* %0) #7, !dbg !129
+  call void @_ZdlPv(ptr %this1) #7, !dbg !129
   ret void, !dbg !129
 
 lpad:                                             ; preds = %entry
-  %1 = landingpad { i8*, i32 }
+  %0 = landingpad { ptr, i32 }
           cleanup, !dbg !131
-  %2 = extractvalue { i8*, i32 } %1, 0, !dbg !131
-  store i8* %2, i8** %exn.slot, !dbg !131
-  %3 = extractvalue { i8*, i32 } %1, 1, !dbg !131
-  store i32 %3, i32* %ehselector.slot, !dbg !131
-  %4 = bitcast %class.A* %this1 to i8*, !dbg !131
-  call void @_ZdlPv(i8* %4) #7, !dbg !131
+  %1 = extractvalue { ptr, i32 } %0, 0, !dbg !131
+  store ptr %1, ptr %exn.slot, !dbg !131
+  %2 = extractvalue { ptr, i32 } %0, 1, !dbg !131
+  store i32 %2, ptr %ehselector.slot, !dbg !131
+  call void @_ZdlPv(ptr %this1) #7, !dbg !131
   br label %eh.resume, !dbg !131
 
 eh.resume:                                        ; preds = %lpad
-  %exn = load i8*, i8** %exn.slot, !dbg !133
-  %sel = load i32, i32* %ehselector.slot, !dbg !133
-  %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0, !dbg !133
-  %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1, !dbg !133
-  resume { i8*, i32 } %lpad.val2, !dbg !133
+  %exn = load ptr, ptr %exn.slot, !dbg !133
+  %sel = load i32, ptr %ehselector.slot, !dbg !133
+  %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn, 0, !dbg !133
+  %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1, !dbg !133
+  resume { ptr, i32 } %lpad.val2, !dbg !133
 }
 
 ; Function Attrs: nobuiltin nounwind
-declare void @_ZdlPv(i8*) #4
+declare void @_ZdlPv(ptr) #4
 
 attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/sroa-after-inlining.ll b/llvm/test/DebugInfo/X86/sroa-after-inlining.ll
index 50cc0f351f90a..c648547f4a90f 100644
--- a/llvm/test/DebugInfo/X86/sroa-after-inlining.ll
+++ b/llvm/test/DebugInfo/X86/sroa-after-inlining.ll
@@ -50,54 +50,49 @@ entry:
   %retval = alloca i32, align 4
   %result = alloca %struct.S1, align 4
   %cleanup.dest.slot = alloca i32, align 4
-  %0 = bitcast %struct.S1* %result to i8*, !dbg !21
-  call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #5, !dbg !21
-  call void @llvm.dbg.declare(metadata %struct.S1* %result, metadata !12, metadata !DIExpression()), !dbg !21
+  call void @llvm.lifetime.start.p0(i64 4, ptr %result) #5, !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %result, metadata !12, metadata !DIExpression()), !dbg !21
   %call = call i32 @_Z3foov(), !dbg !21
-  %coerce.dive = getelementptr inbounds %struct.S1, %struct.S1* %result, i32 0, i32 0, !dbg !21
-  store i32 %call, i32* %coerce.dive, align 4, !dbg !21
-  %call1 = call zeroext i1 @_ZN2S16IsNullEv(%struct.S1* %result), !dbg !22
+  store i32 %call, ptr %result, align 4, !dbg !21
+  %call1 = call zeroext i1 @_ZN2S16IsNullEv(ptr %result), !dbg !22
   br i1 %call1, label %if.then, label %if.end, !dbg !24
 
 if.then:                                          ; preds = %entry
-  store i32 0, i32* %retval, align 4, !dbg !25
-  store i32 1, i32* %cleanup.dest.slot, align 4
+  store i32 0, ptr %retval, align 4, !dbg !25
+  store i32 1, ptr %cleanup.dest.slot, align 4
   br label %cleanup, !dbg !25
 
 if.end:                                           ; preds = %entry
-  %p1 = getelementptr inbounds %struct.S1, %struct.S1* %result, i32 0, i32 0, !dbg !26
-  %1 = load i32, i32* %p1, align 4, !dbg !26
-  %add = add nsw i32 %1, 1, !dbg !26
-  store i32 %add, i32* %retval, align 4, !dbg !26
-  store i32 1, i32* %cleanup.dest.slot, align 4
+  %0 = load i32, ptr %result, align 4, !dbg !26
+  %add = add nsw i32 %0, 1, !dbg !26
+  store i32 %add, ptr %retval, align 4, !dbg !26
+  store i32 1, ptr %cleanup.dest.slot, align 4
   br label %cleanup, !dbg !26
 
 cleanup:                                          ; preds = %if.end, %if.then
-  %2 = bitcast %struct.S1* %result to i8*, !dbg !32
-  call void @llvm.lifetime.end.p0i8(i64 4, i8* %2) #5, !dbg !32
-  %3 = load i32, i32* %retval, align 4, !dbg !32
-  ret i32 %3, !dbg !32
+  call void @llvm.lifetime.end.p0(i64 4, ptr %result) #5, !dbg !32
+  %1 = load i32, ptr %retval, align 4, !dbg !32
+  ret i32 %1, !dbg !32
 }
 
-declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture)
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture)
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata)
 
 declare dso_local i32 @_Z3foov()
 
-define linkonce_odr dso_local zeroext i1 @_ZN2S16IsNullEv(%struct.S1* %this) #4 comdat align 2 !dbg !33 {
+define linkonce_odr dso_local zeroext i1 @_ZN2S16IsNullEv(ptr %this) #4 comdat align 2 !dbg !33 {
 entry:
-  %this.addr = alloca %struct.S1*, align 8
-  store %struct.S1* %this, %struct.S1** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.S1** %this.addr, metadata !35, metadata !DIExpression()), !dbg !39
-  %this1 = load %struct.S1*, %struct.S1** %this.addr, align 8
-  %p1 = getelementptr inbounds %struct.S1, %struct.S1* %this1, i32 0, i32 0, !dbg !40
-  %0 = load i32, i32* %p1, align 4, !dbg !40
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !35, metadata !DIExpression()), !dbg !39
+  %this1 = load ptr, ptr %this.addr, align 8
+  %0 = load i32, ptr %this1, align 4, !dbg !40
   %cmp = icmp eq i32 %0, 0, !dbg !40
   ret i1 %cmp, !dbg !40
 }
 
-declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture)
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)
 
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!3, !4, !5}

diff  --git a/llvm/test/DebugInfo/X86/sroasplit-1.ll b/llvm/test/DebugInfo/X86/sroasplit-1.ll
index 6c3333db8b750..5ac5c828b11ed 100644
--- a/llvm/test/DebugInfo/X86/sroasplit-1.ll
+++ b/llvm/test/DebugInfo/X86/sroasplit-1.ll
@@ -21,7 +21,7 @@
 
 ; Verify that SROA creates a variable piece when splitting i1.
 ; CHECK: %[[I1:.*]] = alloca [12 x i8], align 4
-; CHECK: call void @llvm.dbg.declare(metadata [12 x i8]* %[[I1]], metadata ![[VAR:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 32, 96))
+; CHECK: call void @llvm.dbg.declare(metadata ptr %[[I1]], metadata ![[VAR:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 32, 96))
 ; CHECK: call void @llvm.dbg.value(metadata i32 %[[A:.*]], metadata ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 32))
 ; CHECK: ret i32 %[[A]]
 ; Read Var and Piece:
@@ -34,26 +34,22 @@ target triple = "x86_64-apple-macosx10.9.0"
 %struct.Inner = type { i32, i64 }
 
 ; Function Attrs: nounwind ssp uwtable
-define i32 @foo(%struct.Outer* byval(%struct.Outer) align 8 %outer) #0 !dbg !4 {
+define i32 @foo(ptr byval(%struct.Outer) align 8 %outer) #0 !dbg !4 {
 entry:
   %i1 = alloca %struct.Inner, align 8
-  call void @llvm.dbg.declare(metadata %struct.Outer* %outer, metadata !25, metadata !2), !dbg !26
-  call void @llvm.dbg.declare(metadata %struct.Inner* %i1, metadata !27, metadata !2), !dbg !28
-  %inner = getelementptr inbounds %struct.Outer, %struct.Outer* %outer, i32 0, i32 0, !dbg !28
-  %arrayidx = getelementptr inbounds [2 x %struct.Inner], [2 x %struct.Inner]* %inner, i32 0, i64 1, !dbg !28
-  %0 = bitcast %struct.Inner* %i1 to i8*, !dbg !28
-  %1 = bitcast %struct.Inner* %arrayidx to i8*, !dbg !28
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 16, i1 false), !dbg !28
-  %a = getelementptr inbounds %struct.Inner, %struct.Inner* %i1, i32 0, i32 0, !dbg !29
-  %2 = load i32, i32* %a, align 4, !dbg !29
-  ret i32 %2, !dbg !29
+  call void @llvm.dbg.declare(metadata ptr %outer, metadata !25, metadata !2), !dbg !26
+  call void @llvm.dbg.declare(metadata ptr %i1, metadata !27, metadata !2), !dbg !28
+  %arrayidx = getelementptr inbounds [2 x %struct.Inner], ptr %outer, i32 0, i64 1, !dbg !28
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %i1, ptr align 8 %arrayidx, i64 16, i1 false), !dbg !28
+  %0 = load i32, ptr %i1, align 4, !dbg !29
+  ret i32 %0, !dbg !29
 }
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1) #2
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) #2
 
 attributes #0 = { nounwind ssp uwtable }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/sroasplit-2.ll b/llvm/test/DebugInfo/X86/sroasplit-2.ll
index 8d70c88c96d3d..d002bcf6a1b64 100644
--- a/llvm/test/DebugInfo/X86/sroasplit-2.ll
+++ b/llvm/test/DebugInfo/X86/sroasplit-2.ll
@@ -38,28 +38,23 @@ target triple = "x86_64-apple-macosx10.9.0"
 define i32 @foo(i64 %outer.coerce0, i64 %outer.coerce1) #0 !dbg !4 {
   %outer = alloca %struct.Outer, align 8
   %i1 = alloca %struct.Inner, align 4
-  %1 = bitcast %struct.Outer* %outer to { i64, i64 }*
-  %2 = getelementptr { i64, i64 }, { i64, i64 }* %1, i32 0, i32 0
-  store i64 %outer.coerce0, i64* %2
-  %3 = getelementptr { i64, i64 }, { i64, i64 }* %1, i32 0, i32 1
-  store i64 %outer.coerce1, i64* %3
-  call void @llvm.dbg.declare(metadata %struct.Outer* %outer, metadata !24, metadata !2), !dbg !25
-  call void @llvm.dbg.declare(metadata %struct.Inner* %i1, metadata !26, metadata !2), !dbg !27
-  %4 = getelementptr inbounds %struct.Outer, %struct.Outer* %outer, i32 0, i32 0, !dbg !27
-  %5 = getelementptr inbounds [2 x %struct.Inner], [2 x %struct.Inner]* %4, i32 0, i64 1, !dbg !27
-  %6 = bitcast %struct.Inner* %i1 to i8*, !dbg !27
-  %7 = bitcast %struct.Inner* %5 to i8*, !dbg !27
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %6, i8* align 4 %7, i64 8, i1 false), !dbg !27
-  %8 = getelementptr inbounds %struct.Inner, %struct.Inner* %i1, i32 0, i32 0, !dbg !28
-  %9 = load i32, i32* %8, align 4, !dbg !28
-  ret i32 %9, !dbg !28
+  %1 = getelementptr { i64, i64 }, ptr %outer, i32 0, i32 0
+  store i64 %outer.coerce0, ptr %1
+  %2 = getelementptr { i64, i64 }, ptr %outer, i32 0, i32 1
+  store i64 %outer.coerce1, ptr %2
+  call void @llvm.dbg.declare(metadata ptr %outer, metadata !24, metadata !2), !dbg !25
+  call void @llvm.dbg.declare(metadata ptr %i1, metadata !26, metadata !2), !dbg !27
+  %3 = getelementptr inbounds [2 x %struct.Inner], ptr %outer, i32 0, i64 1, !dbg !27
+  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %i1, ptr align 4 %3, i64 8, i1 false), !dbg !27
+  %4 = load i32, ptr %i1, align 4, !dbg !28
+  ret i32 %4, !dbg !28
 }
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1) #2
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) #2
 
 attributes #0 = { nounwind ssp uwtable "frame-pointer"="all" }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/sroasplit-3.ll b/llvm/test/DebugInfo/X86/sroasplit-3.ll
index 271bdc438872a..48575ec018d93 100644
--- a/llvm/test/DebugInfo/X86/sroasplit-3.ll
+++ b/llvm/test/DebugInfo/X86/sroasplit-3.ll
@@ -21,11 +21,9 @@ target triple = "x86_64-apple-macosx10.10.0"
 define float @foo(float %s.coerce) #0 !dbg !4 {
 entry:
   %s = alloca %struct.S, align 4
-  %coerce.dive = getelementptr %struct.S, %struct.S* %s, i32 0, i32 0
-  store float %s.coerce, float* %coerce.dive, align 1
-  call void @llvm.dbg.declare(metadata %struct.S* %s, metadata !16, metadata !17), !dbg !18
-  %f = getelementptr inbounds %struct.S, %struct.S* %s, i32 0, i32 0, !dbg !19
-  %0 = load float, float* %f, align 4, !dbg !19
+  store float %s.coerce, ptr %s, align 1
+  call void @llvm.dbg.declare(metadata ptr %s, metadata !16, metadata !17), !dbg !18
+  %0 = load float, ptr %s, align 4, !dbg !19
   ret float %0, !dbg !19
 }
 

diff  --git a/llvm/test/DebugInfo/X86/sroasplit-4.ll b/llvm/test/DebugInfo/X86/sroasplit-4.ll
index 59249cb74fcf4..7f6cd3dde73a4 100644
--- a/llvm/test/DebugInfo/X86/sroasplit-4.ll
+++ b/llvm/test/DebugInfo/X86/sroasplit-4.ll
@@ -1,9 +1,9 @@
 ; RUN: opt -passes='sroa' < %s -S -o - | FileCheck %s
 ;
 ; Test that recursively splitting an alloca updates the debug info correctly.
-; CHECK: %[[T:.*]] = load i64, i64* @t, align 8
+; CHECK: %[[T:.*]] = load i64, ptr @t, align 8
 ; CHECK: call void @llvm.dbg.value(metadata i64 %[[T]], metadata ![[Y:.*]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64))
-; CHECK: %[[T1:.*]] = load i64, i64* @t, align 8
+; CHECK: %[[T1:.*]] = load i64, ptr @t, align 8
 ; CHECK: call void @llvm.dbg.value(metadata i64 %[[T1]], metadata ![[Y]], metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64))
 ; CHECK: call void @llvm.dbg.value(metadata i64 %[[T]], metadata ![[R:.*]], metadata !DIExpression(DW_OP_LLVM_fragment, 192, 64))
 ; CHECK: call void @llvm.dbg.value(metadata i64 %[[T1]], metadata ![[R]], metadata !DIExpression(DW_OP_LLVM_fragment, 256, 64))
@@ -52,39 +52,32 @@ entry:
   br i1 %tobool, label %if.then, label %if.end, !dbg !26
 
 if.then:                                          ; preds = %entry
-  store i32 0, i32* %retval, !dbg !27
+  store i32 0, ptr %retval, !dbg !27
   br label %return, !dbg !27
 
 if.end:                                           ; preds = %entry
-  call void @llvm.dbg.declare(metadata %struct.p* %y, metadata !28, metadata !29), !dbg !30
-  %s = getelementptr inbounds %struct.p, %struct.p* %y, i32 0, i32 0, !dbg !30
-  %0 = load i64, i64* @t, align 8, !dbg !30
-  store i64 %0, i64* %s, align 8, !dbg !30
-  %t = getelementptr inbounds %struct.p, %struct.p* %y, i32 0, i32 1, !dbg !30
-  %1 = load i64, i64* @t, align 8, !dbg !30
-  store i64 %1, i64* %t, align 8, !dbg !30
-  call void @llvm.dbg.declare(metadata %struct.r* %r, metadata !31, metadata !29), !dbg !32
-  %i = getelementptr inbounds %struct.r, %struct.r* %r, i32 0, i32 0, !dbg !32
-  store i32 0, i32* %i, align 4, !dbg !32
-  %x = getelementptr inbounds %struct.r, %struct.r* %r, i32 0, i32 1, !dbg !32
-  %s1 = getelementptr inbounds %struct.p, %struct.p* %x, i32 0, i32 0, !dbg !32
-  store i64 0, i64* %s1, align 8, !dbg !32
-  %t2 = getelementptr inbounds %struct.p, %struct.p* %x, i32 0, i32 1, !dbg !32
-  store i64 0, i64* %t2, align 8, !dbg !32
-  %y3 = getelementptr inbounds %struct.r, %struct.r* %r, i32 0, i32 2, !dbg !32
-  %2 = bitcast %struct.p* %y3 to i8*, !dbg !32
-  %3 = bitcast %struct.p* %y to i8*, !dbg !32
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %3, i64 16, i1 false), !dbg !32
-  %4 = bitcast %struct.r* %agg.tmp to i8*, !dbg !33
-  %5 = bitcast %struct.r* %r to i8*, !dbg !33
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %5, i64 40, i1 false), !dbg !33
-  %call4 = call i32 @_Z7call_me1r(%struct.r* byval(%struct.r) align 8 %agg.tmp), !dbg !33
-  store i32 %call4, i32* %retval, !dbg !33
+  call void @llvm.dbg.declare(metadata ptr %y, metadata !28, metadata !29), !dbg !30
+  %0 = load i64, ptr @t, align 8, !dbg !30
+  store i64 %0, ptr %y, align 8, !dbg !30
+  %t = getelementptr inbounds %struct.p, ptr %y, i32 0, i32 1, !dbg !30
+  %1 = load i64, ptr @t, align 8, !dbg !30
+  store i64 %1, ptr %t, align 8, !dbg !30
+  call void @llvm.dbg.declare(metadata ptr %r, metadata !31, metadata !29), !dbg !32
+  store i32 0, ptr %r, align 4, !dbg !32
+  %x = getelementptr inbounds %struct.r, ptr %r, i32 0, i32 1, !dbg !32
+  store i64 0, ptr %x, align 8, !dbg !32
+  %t2 = getelementptr inbounds %struct.p, ptr %x, i32 0, i32 1, !dbg !32
+  store i64 0, ptr %t2, align 8, !dbg !32
+  %y3 = getelementptr inbounds %struct.r, ptr %r, i32 0, i32 2, !dbg !32
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %y3, ptr align 8 %y, i64 16, i1 false), !dbg !32
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %agg.tmp, ptr align 8 %r, i64 40, i1 false), !dbg !33
+  %call4 = call i32 @_Z7call_me1r(ptr byval(%struct.r) align 8 %agg.tmp), !dbg !33
+  store i32 %call4, ptr %retval, !dbg !33
   br label %return, !dbg !33
 
 return:                                           ; preds = %if.end, %if.then
-  %6 = load i32, i32* %retval, !dbg !34
-  ret i32 %6, !dbg !34
+  %2 = load i32, ptr %retval, !dbg !34
+  ret i32 %2, !dbg !34
 }
 
 declare i32 @_Z5maybev()
@@ -93,9 +86,9 @@ declare i32 @_Z5maybev()
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #2
 
 ; Function Attrs: nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1) #3
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) #3
 
-declare i32 @_Z7call_me1r(%struct.r* byval(%struct.r) align 8)
+declare i32 @_Z7call_me1r(ptr byval(%struct.r) align 8)
 
 attributes #0 = { nounwind }
 attributes #2 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/sroasplit-5.ll b/llvm/test/DebugInfo/X86/sroasplit-5.ll
index 04c5bf3ba4a9c..d9dab2cad7952 100644
--- a/llvm/test/DebugInfo/X86/sroasplit-5.ll
+++ b/llvm/test/DebugInfo/X86/sroasplit-5.ll
@@ -32,31 +32,26 @@ entry:
   %retval = alloca %struct.prog_src_register, align 4
   %a = alloca %struct.prog_src_register, align 4
   %local = alloca i32, align 4
-  call void @llvm.dbg.declare(metadata %struct.prog_src_register* %a, metadata !16, metadata !17), !dbg !18
-  %0 = bitcast %struct.prog_src_register* %a to i8*, !dbg !19
-  call void @llvm.memset.p0i8.i64(i8* align 4 %0, i8 0, i64 8, i1 false), !dbg !19
-  call void @llvm.dbg.declare(metadata i32* %local, metadata !20, metadata !17), !dbg !21
-  %1 = bitcast %struct.prog_src_register* %a to i32*, !dbg !21
-  %bf.load = load i32, i32* %1, align 4, !dbg !21
+  call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !17), !dbg !18
+  call void @llvm.memset.p0.i64(ptr align 4 %a, i8 0, i64 8, i1 false), !dbg !19
+  call void @llvm.dbg.declare(metadata ptr %local, metadata !20, metadata !17), !dbg !21
+  %bf.load = load i32, ptr %a, align 4, !dbg !21
   %bf.shl = shl i32 %bf.load, 15, !dbg !21
   %bf.ashr = ashr i32 %bf.shl, 19, !dbg !21
-  store i32 %bf.ashr, i32* %local, align 4, !dbg !21
-  %2 = bitcast %struct.prog_src_register* %retval to i8*, !dbg !22
-  %3 = bitcast %struct.prog_src_register* %a to i8*, !dbg !22
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %2, i8* align 4 %3, i64 8, i1 false), !dbg !22
-  %4 = bitcast %struct.prog_src_register* %retval to i64*, !dbg !22
-  %5 = load i64, i64* %4, align 1, !dbg !22
-  ret i64 %5, !dbg !22
+  store i32 %bf.ashr, ptr %local, align 4, !dbg !21
+  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %retval, ptr align 4 %a, i64 8, i1 false), !dbg !22
+  %0 = load i64, ptr %retval, align 1, !dbg !22
+  ret i64 %0, !dbg !22
 }
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) #2
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) #2
 
 ; Function Attrs: nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1) #2
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) #2
 
 attributes #0 = { nounwind }
 attributes #1 = { nounwind readnone }

diff  --git a/llvm/test/DebugInfo/X86/sroasplit-dbg-declare.ll b/llvm/test/DebugInfo/X86/sroasplit-dbg-declare.ll
index 3225f886a05bc..6a9f749b5c68a 100644
--- a/llvm/test/DebugInfo/X86/sroasplit-dbg-declare.ll
+++ b/llvm/test/DebugInfo/X86/sroasplit-dbg-declare.ll
@@ -6,11 +6,9 @@
 define void @f1() {
 entry:
   %0 = alloca [9 x i32]
-  call void @llvm.dbg.declare(metadata [9 x i32]* %0, metadata !11, metadata !DIExpression()), !dbg !17
-  %1 = bitcast [9 x i32]* %0 to i8*
-  call void @llvm.memset.p0i8.i64(i8* align 16 %1, i8 0, i64 36, i1 true)
-  %2 = getelementptr [9 x i32], [9 x i32]* %0, i32 0, i32 0
-  store volatile i32 1, i32* %2
+  call void @llvm.dbg.declare(metadata ptr %0, metadata !11, metadata !DIExpression()), !dbg !17
+  call void @llvm.memset.p0.i64(ptr align 16 %0, i8 0, i64 36, i1 true)
+  store volatile i32 1, ptr %0
   ret void
 }
 
@@ -18,7 +16,7 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1) #0
+declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1) #0
 
 attributes #0 = { argmemonly nounwind }
 attributes #1 = { nounwind readnone speculatable }
@@ -47,13 +45,13 @@ attributes #1 = { nounwind readnone speculatable }
 !17 = !DILocation(line: 3, column: 18, scope: !7)
 
 ; CHECK-NOT:  = alloca [9 x i32]
-; CHECK-NOT:  call void @llvm.dbg.declare(metadata [9 x i32]*
+; CHECK-NOT:  call void @llvm.dbg.declare(metadata ptr
 
 ; CHECK:      %[[VAR1:.*]] = alloca i32
 ; CHECK-NEXT: %[[VAR2:.*]] = alloca [8 x i32]
-; CHECK-NEXT: call void @llvm.dbg.declare(metadata i32* %[[VAR1]]
-; CHECK-NEXT: call void @llvm.dbg.declare(metadata [8 x i32]* %[[VAR2]]
+; CHECK-NEXT: call void @llvm.dbg.declare(metadata ptr %[[VAR1]]
+; CHECK-NEXT: call void @llvm.dbg.declare(metadata ptr %[[VAR2]]
 
 ; CHECK-NOT:  = alloca [9 x i32]
-; CHECK-NOT:  call void @llvm.dbg.declare(metadata [9 x i32]*
+; CHECK-NOT:  call void @llvm.dbg.declare(metadata ptr
 

diff  --git a/llvm/test/DebugInfo/X86/stack-args.ll b/llvm/test/DebugInfo/X86/stack-args.ll
index 085585ecf8739..9c82c1ce19fee 100644
--- a/llvm/test/DebugInfo/X86/stack-args.ll
+++ b/llvm/test/DebugInfo/X86/stack-args.ll
@@ -1,11 +1,11 @@
 ; RUN: llc -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
 ; Generated from:
-; void * __attribute__ (( regparm(2) )) f(void *, void *);
-; void * __attribute__ (( regparm(0) )) g(void *, void *);
+; ptr __attribute__ (( regparm(2) )) f(ptr, ptr);
+; ptr __attribute__ (( regparm(0) )) g(ptr, ptr);
 ;  
-; void *g(void *t, void *k) {
-;   if (k == (void *)0)
-;     return (void *)0;
+; ptr g(ptr t, ptr k) {
+;   if (k == (ptr)0)
+;     return (ptr)0;
 ;   return f(t, k);
 ; }
 
@@ -21,23 +21,23 @@ target datalayout = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
 target triple = "i386--linux-gnu"
 
 ; Function Attrs: nounwind
-define i8* @g(i8* %t, i8* %k) local_unnamed_addr #0 !dbg !10 {
+define ptr @g(ptr %t, ptr %k) local_unnamed_addr #0 !dbg !10 {
 entry:
-  call void @llvm.dbg.value(metadata i8* %t, metadata !14, metadata !DIExpression()), !dbg !16
-  call void @llvm.dbg.value(metadata i8* %k, metadata !15, metadata !DIExpression()), !dbg !17
-  %cmp = icmp eq i8* %k, null, !dbg !18
+  call void @llvm.dbg.value(metadata ptr %t, metadata !14, metadata !DIExpression()), !dbg !16
+  call void @llvm.dbg.value(metadata ptr %k, metadata !15, metadata !DIExpression()), !dbg !17
+  %cmp = icmp eq ptr %k, null, !dbg !18
   br i1 %cmp, label %return, label %if.end, !dbg !20
 
 if.end:                                           ; preds = %entry
-  %call = tail call i8* @f(i8* inreg %t, i8* inreg nonnull %k) #3, !dbg !21
+  %call = tail call ptr @f(ptr inreg %t, ptr inreg nonnull %k) #3, !dbg !21
   br label %return, !dbg !22
 
 return:                                           ; preds = %entry, %if.end
-  %retval.0 = phi i8* [ %call, %if.end ], [ null, %entry ]
-  ret i8* %retval.0, !dbg !23
+  %retval.0 = phi ptr [ %call, %if.end ], [ null, %entry ]
+  ret ptr %retval.0, !dbg !23
 }
 
-declare i8* @f(i8* inreg, i8* inreg) local_unnamed_addr
+declare ptr @f(ptr inreg, ptr inreg) local_unnamed_addr
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, metadata, metadata) #2

diff  --git a/llvm/test/DebugInfo/X86/stack-value-dwarf2.ll b/llvm/test/DebugInfo/X86/stack-value-dwarf2.ll
index 094dd94547507..24b9df1abaefd 100644
--- a/llvm/test/DebugInfo/X86/stack-value-dwarf2.ll
+++ b/llvm/test/DebugInfo/X86/stack-value-dwarf2.ll
@@ -22,50 +22,45 @@ target triple = "i386-apple-ios7.0.0"
 define void @_Z34swift_getGenericMetadata_argumentsv() #0 !dbg !5 {
 entry:
   %ref.tmp = alloca %class.K, align 8
-  %0 = getelementptr inbounds %class.K, %class.K* %ref.tmp, i32 0, i32 0, i32 0, i32 0
-  %call = tail call i64 @_Z8getCacheP23ConditionPlatformHelper(%struct.ConditionPlatformHelper* undef)
-  %1 = bitcast %class.K* %ref.tmp to i64*
-  %LastSearch.i.i = getelementptr inbounds %class.K, %class.K* %ref.tmp, i32 0, i32 0, i32 0
-  %call.i.i = call %"struct.J<K::L, false, int>::Node"* @_ZN1BIPN1JIN1K1LELb0EiE4NodeEE4loadEv(%struct.B* nonnull %LastSearch.i.i)
-  %tobool.i.i = icmp eq %"struct.J<K::L, false, int>::Node"* %call.i.i, null
+  %call = tail call i64 @_Z8getCacheP23ConditionPlatformHelper(ptr undef)
+  %call.i.i = call ptr @_ZN1BIPN1JIN1K1LELb0EiE4NodeEE4loadEv(ptr nonnull %ref.tmp)
+  %tobool.i.i = icmp eq ptr %call.i.i, null
   br i1 %tobool.i.i, label %_ZN1NIN1K1LELi0EE11getOrInsertIiEE1AIPS1_ET_.exit.i, label %if.then.i.i
 
 if.then.i.i:
-  %2 = lshr i64 %call, 32
-  %3 = trunc i64 %2 to i32
-  %Payload.i.i = getelementptr inbounds %"struct.J<K::L, false, int>::Node", %"struct.J<K::L, false, int>::Node"* %call.i.i, i32 0, i32 0
+  %0 = lshr i64 %call, 32
+  %1 = trunc i64 %0 to i32
+  %Payload.i.i = getelementptr inbounds %"struct.J<K::L, false, int>::Node", ptr %call.i.i, i32 0, i32 0
   br label %_ZN1NIN1K1LELi0EE11getOrInsertIiEE1AIPS1_ET_.exit.i
 
 _ZN1NIN1K1LELi0EE11getOrInsertIiEE1AIPS1_ET_.exit.i: ; preds = %if.then.i.i, %entry
-  %retval.sroa.0.0.i.i = phi %"class.K::L"* [ %Payload.i.i, %if.then.i.i ], [ undef, %entry ]
-  %call4.i = call %"struct.K::M"* @_ZN1FIN1K1MEE3getEv(%struct.F* undef)
-  call void @llvm.dbg.value(metadata %"struct.K::M"* %call4.i, metadata !7, metadata !11), !dbg !12
-  call void @llvm.dbg.value(metadata %"struct.K::M"* %call4.i, metadata !7, metadata !18), !dbg !12
-  %Handle2.i.i.i.i.i = getelementptr inbounds %"struct.K::M", %"struct.K::M"* %call4.i, i32 0, i32 0, i32 0
-  %Handle.i.i.i.i.i = getelementptr inbounds %"struct.K::M", %"struct.K::M"* %call4.i, i32 0, i32 1, i32 0
-  %4 = getelementptr inbounds %"class.K::L", %"class.K::L"* %retval.sroa.0.0.i.i, i32 0, i32 0, i32 0
+  %retval.sroa.0.0.i.i = phi ptr [ %Payload.i.i, %if.then.i.i ], [ undef, %entry ]
+  %call4.i = call ptr @_ZN1FIN1K1MEE3getEv(ptr undef)
+  call void @llvm.dbg.value(metadata ptr %call4.i, metadata !7, metadata !11), !dbg !12
+  call void @llvm.dbg.value(metadata ptr %call4.i, metadata !7, metadata !18), !dbg !12
+  %Handle.i.i.i.i.i = getelementptr inbounds %"struct.K::M", ptr %call4.i, i32 0, i32 1, i32 0
   br label %while.body.i.i.i.i
 
 while.body.i.i.i.i:
-  %5 = load i32, i32* %4, align 4
+  %2 = load i32, ptr %retval.sroa.0.0.i.i, align 4
   %call.i.i.i.i.i.i = call i32 @_Z6get_idv(), !dbg !12
-  %call.i.i.i.i.i.i.i = call zeroext i1 @_Z24__libcpp_thread_id_equalii(i32 %5, i32 %call.i.i.i.i.i.i)
-  %6 = load i32, i32* %Handle2.i.i.i.i.i, align 4
-  call void @_ZN23ConditionPlatformHelper4waitERii(i32* nonnull dereferenceable(4) %Handle.i.i.i.i.i, i32 %6)
+  %call.i.i.i.i.i.i.i = call zeroext i1 @_Z24__libcpp_thread_id_equalii(i32 %2, i32 %call.i.i.i.i.i.i)
+  %3 = load i32, ptr %call4.i, align 4
+  call void @_ZN23ConditionPlatformHelper4waitERii(ptr nonnull dereferenceable(4) %Handle.i.i.i.i.i, i32 %3)
   br label %while.body.i.i.i.i
 }
 
-declare i64 @_Z8getCacheP23ConditionPlatformHelper(%struct.ConditionPlatformHelper*) local_unnamed_addr
+declare i64 @_Z8getCacheP23ConditionPlatformHelper(ptr) local_unnamed_addr
 
-declare %"struct.K::M"* @_ZN1FIN1K1MEE3getEv(%struct.F*) local_unnamed_addr
+declare ptr @_ZN1FIN1K1MEE3getEv(ptr) local_unnamed_addr
 
-declare %"struct.J<K::L, false, int>::Node"* @_ZN1BIPN1JIN1K1LELb0EiE4NodeEE4loadEv(%struct.B*) local_unnamed_addr
+declare ptr @_ZN1BIPN1JIN1K1LELb0EiE4NodeEE4loadEv(ptr) local_unnamed_addr
 
 declare i32 @_Z6get_idv() local_unnamed_addr
 
 declare zeroext i1 @_Z24__libcpp_thread_id_equalii(i32, i32) local_unnamed_addr
 
-declare void @_ZN23ConditionPlatformHelper4waitERii(i32* dereferenceable(4), i32) local_unnamed_addr
+declare void @_ZN23ConditionPlatformHelper4waitERii(ptr dereferenceable(4), i32) local_unnamed_addr
 
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1

diff  --git a/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll b/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
index 510470fb1f90c..446f31f9a9126 100644
--- a/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
+++ b/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
@@ -73,9 +73,9 @@
 define i32 @test(i32 %a) nounwind uwtable ssp !dbg !5 {
 entry:
   %a.addr = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !15, metadata !DIExpression()), !dbg !16
-  %0 = load i32, i32* %a.addr, align 4, !dbg !17
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !15, metadata !DIExpression()), !dbg !16
+  %0 = load i32, ptr %a.addr, align 4, !dbg !17
   %call = call i32 @fn(i32 %0), !dbg !17
   ret i32 %call, !dbg !17
 }
@@ -85,9 +85,9 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
 define i32 @fn(i32 %a) nounwind uwtable ssp !dbg !13 {
 entry:
   %a.addr = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !19, metadata !DIExpression()), !dbg !20
-  %0 = load i32, i32* %a.addr, align 4, !dbg !21
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !19, metadata !DIExpression()), !dbg !20
+  %0 = load i32, ptr %a.addr, align 4, !dbg !21
   ret i32 %0, !dbg !21
 }
 

diff  --git a/llvm/test/DebugInfo/X86/subrange-type.ll b/llvm/test/DebugInfo/X86/subrange-type.ll
index e1aa08ae03d50..4b4a29c19eee2 100644
--- a/llvm/test/DebugInfo/X86/subrange-type.ll
+++ b/llvm/test/DebugInfo/X86/subrange-type.ll
@@ -11,8 +11,8 @@ define i32 @main() nounwind uwtable !dbg !5 {
 entry:
   %retval = alloca i32, align 4
   %i = alloca [2 x i32], align 4
-  store i32 0, i32* %retval
-  call void @llvm.dbg.declare(metadata [2 x i32]* %i, metadata !10, metadata !DIExpression()), !dbg !15
+  store i32 0, ptr %retval
+  call void @llvm.dbg.declare(metadata ptr %i, metadata !10, metadata !DIExpression()), !dbg !15
   ret i32 0, !dbg !16
 }
 

diff  --git a/llvm/test/DebugInfo/X86/template.ll b/llvm/test/DebugInfo/X86/template.ll
index 6ac7f2bc0a577..227aefd224c2b 100644
--- a/llvm/test/DebugInfo/X86/template.ll
+++ b/llvm/test/DebugInfo/X86/template.ll
@@ -90,21 +90,21 @@ $_Z3varIiE = comdat any
 @glbl = dso_local global i32 0, align 4, !dbg !0
 @n = dso_local global %"struct.y_impl<int>::nested" zeroinitializer, align 1, !dbg !10
 @_Z3varIiE = linkonce_odr dso_local global i32 0, comdat, align 4, !dbg !18
- at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_test.cpp, i8* null }]
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_test.cpp, ptr null }]
 
 ; Function Attrs: noinline uwtable
 define internal void @__cxx_global_var_init() #0 section ".text.startup" !dbg !28 {
 entry:
   %call = call i32 @_Z4funcILi3EXadL_Z4glblEE6y_implLDn0EL1e255EJLi1ELi2EEEiv(), !dbg !31
-  store i32 %call, i32* @glbl, align 4, !dbg !32
+  store i32 %call, ptr @glbl, align 4, !dbg !32
   ret void, !dbg !31
 }
 
 ; Function Attrs: mustprogress noinline nounwind optnone uwtable
 define linkonce_odr dso_local i32 @_Z4funcILi3EXadL_Z4glblEE6y_implLDn0EL1e255EJLi1ELi2EEEiv() #1 comdat !dbg !33 {
 entry:
-  store i32 5, i32* @_Z3varIiE, align 4, !dbg !48
-  %0 = load i32, i32* @_Z3varIiE, align 4, !dbg !49
+  store i32 5, ptr @_Z3varIiE, align 4, !dbg !48
+  %0 = load i32, ptr @_Z3varIiE, align 4, !dbg !49
   ret i32 %0, !dbg !50
 }
 
@@ -160,7 +160,7 @@ attributes #1 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"
 !35 = !{!17}
 !36 = !{!37, !38, !40, !41, !43, !44}
 !37 = !DITemplateValueParameter(name: "x", type: !17, value: i32 3)
-!38 = !DITemplateValueParameter(type: !39, value: i32* @glbl)
+!38 = !DITemplateValueParameter(type: !39, value: ptr @glbl)
 !39 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !17, size: 64)
 !40 = !DITemplateValueParameter(tag: DW_TAG_GNU_template_template_param, name: "y", value: !"y_impl")
 !41 = !DITemplateValueParameter(name: "n", type: !42, value: i8 0)

diff  --git a/llvm/test/DebugInfo/X86/this-stack_value.ll b/llvm/test/DebugInfo/X86/this-stack_value.ll
index f734bf3e043e6..a02ab54331061 100644
--- a/llvm/test/DebugInfo/X86/this-stack_value.ll
+++ b/llvm/test/DebugInfo/X86/this-stack_value.ll
@@ -28,26 +28,22 @@ target triple = "x86_64-apple-macosx10.12.0"
 %class.A = type { i32, i32 }
 
 ; Function Attrs: ssp uwtable
-define noalias nonnull %struct.B* @_Z4getBv() local_unnamed_addr #0 !dbg !7 {
+define noalias nonnull ptr @_Z4getBv() local_unnamed_addr #0 !dbg !7 {
 entry:
-  %call = tail call i8* @_Znwm(i64 12) #3, !dbg !20
-  %0 = bitcast i8* %call to %struct.B*, !dbg !20
-  tail call void @llvm.dbg.value(metadata %struct.B* %0, metadata !21, metadata !28), !dbg !29
-  tail call void @llvm.dbg.value(metadata %struct.B* %0, metadata !31, metadata !28), !dbg !34
-  tail call void @llvm.dbg.value(metadata %struct.B* %0, metadata !36, metadata !44), !dbg !45
-  tail call void @llvm.dbg.value(metadata %struct.B* %0, metadata !47, metadata !44), !dbg !50
-  %a1.i.i.i.i = bitcast i8* %call to i32*, !dbg !52
-  store i32 23, i32* %a1.i.i.i.i, align 4, !dbg !52, !tbaa !53
-  %a2.i.i.i.i = getelementptr inbounds i8, i8* %call, i64 4, !dbg !58
-  %1 = bitcast i8* %a2.i.i.i.i to i32*, !dbg !58
-  store i32 42, i32* %1, align 4, !dbg !58, !tbaa !59
-  %b.i.i = getelementptr inbounds i8, i8* %call, i64 8, !dbg !60
-  %2 = bitcast i8* %b.i.i to i32*, !dbg !60
-  store i32 48, i32* %2, align 4, !dbg !60, !tbaa !61
-  ret %struct.B* %0, !dbg !63
+  %call = tail call ptr @_Znwm(i64 12) #3, !dbg !20
+  tail call void @llvm.dbg.value(metadata ptr %call, metadata !21, metadata !28), !dbg !29
+  tail call void @llvm.dbg.value(metadata ptr %call, metadata !31, metadata !28), !dbg !34
+  tail call void @llvm.dbg.value(metadata ptr %call, metadata !36, metadata !44), !dbg !45
+  tail call void @llvm.dbg.value(metadata ptr %call, metadata !47, metadata !44), !dbg !50
+  store i32 23, ptr %call, align 4, !dbg !52, !tbaa !53
+  %a2.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 4, !dbg !58
+  store i32 42, ptr %a2.i.i.i.i, align 4, !dbg !58, !tbaa !59
+  %b.i.i = getelementptr inbounds i8, ptr %call, i64 8, !dbg !60
+  store i32 48, ptr %b.i.i, align 4, !dbg !60, !tbaa !61
+  ret ptr %call, !dbg !63
 }
 
-declare noalias nonnull i8* @_Znwm(i64) local_unnamed_addr #1
+declare noalias nonnull ptr @_Znwm(i64) local_unnamed_addr #1
 declare void @llvm.dbg.value(metadata, metadata, metadata) #2
 
 attributes #0 = { ssp uwtable }

diff  --git a/llvm/test/DebugInfo/X86/tls.ll b/llvm/test/DebugInfo/X86/tls.ll
index ecb1d93bbd285..d9c174491ef96 100644
--- a/llvm/test/DebugInfo/X86/tls.ll
+++ b/llvm/test/DebugInfo/X86/tls.ll
@@ -128,7 +128,7 @@ attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "frame-pointer"=
 !13 = !DISubroutineType(types: !14)
 !14 = !{!3}
 !15 = !{!16}
-!16 = !DITemplateValueParameter(name: "I", type: !17, value: i32* @glbl)
+!16 = !DITemplateValueParameter(name: "I", type: !17, value: ptr @glbl)
 !17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !3, size: 64, align: 64)
 !18 = !DILocation(line: 6, scope: !12)
 

diff  --git a/llvm/test/DebugInfo/X86/tu-to-non-named-type.ll b/llvm/test/DebugInfo/X86/tu-to-non-named-type.ll
index 883bab142ec7e..02d9b92d2ae7b 100644
--- a/llvm/test/DebugInfo/X86/tu-to-non-named-type.ll
+++ b/llvm/test/DebugInfo/X86/tu-to-non-named-type.ll
@@ -33,11 +33,9 @@ define dso_local void @_Z1f3foo3bar(i32 %.coerce) #0 !dbg !7 {
 entry:
   %0 = alloca %struct.foo, align 4
   %1 = alloca %struct.bar, align 1
-  %coerce.dive = getelementptr inbounds %struct.foo, %struct.foo* %0, i32 0, i32 0
-  %2 = bitcast [1 x i32]* %coerce.dive to i32*
-  store i32 %.coerce, i32* %2, align 4
-  call void @llvm.dbg.declare(metadata %struct.foo* %0, metadata !19, metadata !DIExpression()), !dbg !20
-  call void @llvm.dbg.declare(metadata %struct.bar* %1, metadata !21, metadata !DIExpression()), !dbg !22
+  store i32 %.coerce, ptr %0, align 4
+  call void @llvm.dbg.declare(metadata ptr %0, metadata !19, metadata !DIExpression()), !dbg !20
+  call void @llvm.dbg.declare(metadata ptr %1, metadata !21, metadata !DIExpression()), !dbg !22
   ret void, !dbg !23
 }
 

diff  --git a/llvm/test/DebugInfo/X86/tu-to-non-tu.ll b/llvm/test/DebugInfo/X86/tu-to-non-tu.ll
index 119c4884900a9..3ad97adbb5ada 100644
--- a/llvm/test/DebugInfo/X86/tu-to-non-tu.ll
+++ b/llvm/test/DebugInfo/X86/tu-to-non-tu.ll
@@ -150,39 +150,39 @@
 %class.ref_internal_template = type { %"struct.(anonymous namespace)::internal_template" }
 %"struct.(anonymous namespace)::internal_template" = type { i8 }
 %class.ref_from_ref_internal_template = type { i8 }
-%struct.non_tu = type { i32 (...)** }
-%struct.templ_non_tu = type { i32 (...)** }
-%struct.templ_non_tu.0 = type { i32 (...)** }
-%struct.templ_non_tu.1 = type { i32 (...)** }
+%struct.non_tu = type { ptr }
+%struct.templ_non_tu = type { ptr }
+%struct.templ_non_tu.0 = type { ptr }
+%struct.templ_non_tu.1 = type { ptr }
 
- at _ZTV6non_tu = dso_local unnamed_addr constant { [3 x i8*] } { [3 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI6non_tu to i8*), i8* bitcast (void (%struct.non_tu*)* @_ZN6non_tu2f1Ev to i8*)] }, align 8
- at v1 = dso_local global { { i8** } } { { i8** } { i8** getelementptr inbounds ({ [3 x i8*] }, { [3 x i8*] }* @_ZTV6non_tu, i32 0, inrange i32 0, i32 2) } }, align 8, !dbg !0
+ at _ZTV6non_tu = dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI6non_tu, ptr @_ZN6non_tu2f1Ev] }, align 8
+ at v1 = dso_local global { { ptr } } { { ptr } { ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV6non_tu, i32 0, inrange i32 0, i32 2) } }, align 8, !dbg !0
 @v5 = dso_local global %struct.ref_internal zeroinitializer, align 1, !dbg !5
- at _ZTV12templ_non_tuIiE = dso_local unnamed_addr constant { [3 x i8*] } { [3 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI12templ_non_tuIiE to i8*), i8* bitcast (void (%struct.templ_non_tu*)* @_ZN12templ_non_tuIiE2f1Ev to i8*)] }, align 8
- at v2 = dso_local global { { i8** } } { { i8** } { i8** getelementptr inbounds ({ [3 x i8*] }, { [3 x i8*] }* @_ZTV12templ_non_tuIiE, i32 0, inrange i32 0, i32 2) } }, align 8, !dbg !13
- at _ZTV12templ_non_tuIlE = dso_local unnamed_addr constant { [3 x i8*] } { [3 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI12templ_non_tuIlE to i8*), i8* bitcast (void (%struct.templ_non_tu.0*)* @_ZN12templ_non_tuIlE2f1Ev to i8*)] }, align 8
- at v3 = dso_local global { { i8** } } { { i8** } { i8** getelementptr inbounds ({ [3 x i8*] }, { [3 x i8*] }* @_ZTV12templ_non_tuIlE, i32 0, inrange i32 0, i32 2) } }, align 8, !dbg !32
- at _ZTV12templ_non_tuIbE = dso_local unnamed_addr constant { [3 x i8*] } { [3 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI12templ_non_tuIbE to i8*), i8* bitcast (void (%struct.templ_non_tu.1*)* @_ZN12templ_non_tuIbE2f1Ev to i8*)] }, align 8
- at v4 = dso_local global { { i8** } } { { i8** } { i8** getelementptr inbounds ({ [3 x i8*] }, { [3 x i8*] }* @_ZTV12templ_non_tuIbE, i32 0, inrange i32 0, i32 2) } }, align 8, !dbg !46
+ at _ZTV12templ_non_tuIiE = dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI12templ_non_tuIiE, ptr @_ZN12templ_non_tuIiE2f1Ev] }, align 8
+ at v2 = dso_local global { { ptr } } { { ptr } { ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV12templ_non_tuIiE, i32 0, inrange i32 0, i32 2) } }, align 8, !dbg !13
+ at _ZTV12templ_non_tuIlE = dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI12templ_non_tuIlE, ptr @_ZN12templ_non_tuIlE2f1Ev] }, align 8
+ at v3 = dso_local global { { ptr } } { { ptr } { ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV12templ_non_tuIlE, i32 0, inrange i32 0, i32 2) } }, align 8, !dbg !32
+ at _ZTV12templ_non_tuIbE = dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI12templ_non_tuIbE, ptr @_ZN12templ_non_tuIbE2f1Ev] }, align 8
+ at v4 = dso_local global { { ptr } } { { ptr } { ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV12templ_non_tuIbE, i32 0, inrange i32 0, i32 2) } }, align 8, !dbg !46
 @v6 = dso_local global %class.ref_internal_template zeroinitializer, align 1, !dbg !60
 @v7 = dso_local global %class.ref_from_ref_internal_template zeroinitializer, align 1, !dbg !69
- at _ZTVN10__cxxabiv117__class_type_infoE = external dso_local global i8*
+ at _ZTVN10__cxxabiv117__class_type_infoE = external dso_local global ptr
 @_ZTS6non_tu = dso_local constant [8 x i8] c"6non_tu\00", align 1
- at _ZTI6non_tu = dso_local constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @_ZTS6non_tu, i32 0, i32 0) }, align 8
+ at _ZTI6non_tu = dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS6non_tu }, align 8
 @_ZTS12templ_non_tuIiE = dso_local constant [18 x i8] c"12templ_non_tuIiE\00", align 1
- at _ZTI12templ_non_tuIiE = dso_local constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @_ZTS12templ_non_tuIiE, i32 0, i32 0) }, align 8
+ at _ZTI12templ_non_tuIiE = dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS12templ_non_tuIiE }, align 8
 @_ZTS12templ_non_tuIlE = dso_local constant [18 x i8] c"12templ_non_tuIlE\00", align 1
- at _ZTI12templ_non_tuIlE = dso_local constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @_ZTS12templ_non_tuIlE, i32 0, i32 0) }, align 8
+ at _ZTI12templ_non_tuIlE = dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS12templ_non_tuIlE }, align 8
 @_ZTS12templ_non_tuIbE = dso_local constant [18 x i8] c"12templ_non_tuIbE\00", align 1
- at _ZTI12templ_non_tuIbE = dso_local constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @_ZTS12templ_non_tuIbE, i32 0, i32 0) }, align 8
+ at _ZTI12templ_non_tuIbE = dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS12templ_non_tuIbE }, align 8
 
 ; Function Attrs: mustprogress noinline nounwind optnone uwtable
-define dso_local void @_ZN6non_tu2f1Ev(%struct.non_tu* noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #0 align 2 !dbg !87 {
+define dso_local void @_ZN6non_tu2f1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #0 align 2 !dbg !87 {
 entry:
-  %this.addr = alloca %struct.non_tu*, align 8
-  store %struct.non_tu* %this, %struct.non_tu** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.non_tu** %this.addr, metadata !88, metadata !DIExpression()), !dbg !90
-  %this1 = load %struct.non_tu*, %struct.non_tu** %this.addr, align 8
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !88, metadata !DIExpression()), !dbg !90
+  %this1 = load ptr, ptr %this.addr, align 8
   ret void, !dbg !91
 }
 
@@ -190,32 +190,32 @@ entry:
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: mustprogress noinline nounwind optnone uwtable
-define dso_local void @_ZN12templ_non_tuIiE2f1Ev(%struct.templ_non_tu* noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #0 align 2 !dbg !92 {
+define dso_local void @_ZN12templ_non_tuIiE2f1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #0 align 2 !dbg !92 {
 entry:
-  %this.addr = alloca %struct.templ_non_tu*, align 8
-  store %struct.templ_non_tu* %this, %struct.templ_non_tu** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.templ_non_tu** %this.addr, metadata !93, metadata !DIExpression()), !dbg !95
-  %this1 = load %struct.templ_non_tu*, %struct.templ_non_tu** %this.addr, align 8
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !93, metadata !DIExpression()), !dbg !95
+  %this1 = load ptr, ptr %this.addr, align 8
   ret void, !dbg !96
 }
 
 ; Function Attrs: mustprogress noinline nounwind optnone uwtable
-define dso_local void @_ZN12templ_non_tuIlE2f1Ev(%struct.templ_non_tu.0* noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #0 align 2 !dbg !97 {
+define dso_local void @_ZN12templ_non_tuIlE2f1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #0 align 2 !dbg !97 {
 entry:
-  %this.addr = alloca %struct.templ_non_tu.0*, align 8
-  store %struct.templ_non_tu.0* %this, %struct.templ_non_tu.0** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.templ_non_tu.0** %this.addr, metadata !98, metadata !DIExpression()), !dbg !100
-  %this1 = load %struct.templ_non_tu.0*, %struct.templ_non_tu.0** %this.addr, align 8
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !98, metadata !DIExpression()), !dbg !100
+  %this1 = load ptr, ptr %this.addr, align 8
   ret void, !dbg !101
 }
 
 ; Function Attrs: mustprogress noinline nounwind optnone uwtable
-define dso_local void @_ZN12templ_non_tuIbE2f1Ev(%struct.templ_non_tu.1* noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #0 align 2 !dbg !102 {
+define dso_local void @_ZN12templ_non_tuIbE2f1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #0 align 2 !dbg !102 {
 entry:
-  %this.addr = alloca %struct.templ_non_tu.1*, align 8
-  store %struct.templ_non_tu.1* %this, %struct.templ_non_tu.1** %this.addr, align 8
-  call void @llvm.dbg.declare(metadata %struct.templ_non_tu.1** %this.addr, metadata !103, metadata !DIExpression()), !dbg !105
-  %this1 = load %struct.templ_non_tu.1*, %struct.templ_non_tu.1** %this.addr, align 8
+  %this.addr = alloca ptr, align 8
+  store ptr %this, ptr %this.addr, align 8
+  call void @llvm.dbg.declare(metadata ptr %this.addr, metadata !103, metadata !DIExpression()), !dbg !105
+  %this1 = load ptr, ptr %this.addr, align 8
   ret void, !dbg !106
 }
 

diff  --git a/llvm/test/DebugInfo/X86/type_units_with_addresses.ll b/llvm/test/DebugInfo/X86/type_units_with_addresses.ll
index 0f33ee2209f64..0ddb5ec34246a 100644
--- a/llvm/test/DebugInfo/X86/type_units_with_addresses.ll
+++ b/llvm/test/DebugInfo/X86/type_units_with_addresses.ll
@@ -121,7 +121,7 @@ source_filename = "test/DebugInfo/X86/type_units_with_addresses.ll"
 !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "S1<&i>", file: !2, line: 4, size: 8, align: 8, elements: !7, templateParams: !8, identifier: "_ZTS2S1IXadL_Z1iEEE")
 !7 = !{}
 !8 = !{!9}
-!9 = !DITemplateValueParameter(name: "I", type: !10, value: i32* @i)
+!9 = !DITemplateValueParameter(name: "I", type: !10, value: ptr @i)
 !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !3, size: 64, align: 64)
 !11 = !DIGlobalVariableExpression(var: !12, expr: !DIExpression())
 !12 = !DIGlobalVariable(name: "s2", scope: null, file: !2, line: 15, type: !13, isLocal: false, isDefinition: true)
@@ -146,7 +146,7 @@ source_filename = "test/DebugInfo/X86/type_units_with_addresses.ll"
 !31 = !DIDerivedType(tag: DW_TAG_member, name: "s4_2", scope: !27, file: !2, line: 36, baseType: !32, size: 8, align: 8, offset: 8)
 !32 = !DICompositeType(tag: DW_TAG_structure_type, name: "S4_2<&i>", file: !2, line: 32, size: 8, align: 8, elements: !7, templateParams: !33, identifier: "_ZTS4S4_2IXadL_Z1iEEE")
 !33 = !{!34}
-!34 = !DITemplateValueParameter(name: "T", type: !10, value: i32* @i)
+!34 = !DITemplateValueParameter(name: "T", type: !10, value: ptr @i)
 !35 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !2, producer: "clang version 3.5.0 ", isOptimized: false, runtimeVersion: 0, splitDebugFilename: "tu.dwo", emissionKind: FullDebug, enums: !7, retainedTypes: !36, globals: !37, imports: !7)
 !36 = !{!6, !13, !16, !19, !22, !24, !27, !30, !32}
 !37 = !{!0, !4, !11, !17, !25}

diff  --git a/llvm/test/DebugInfo/X86/union-const.ll b/llvm/test/DebugInfo/X86/union-const.ll
index 250c3169daf0c..e9aafc9c228e4 100644
--- a/llvm/test/DebugInfo/X86/union-const.ll
+++ b/llvm/test/DebugInfo/X86/union-const.ll
@@ -22,7 +22,7 @@ target triple = "x86_64-apple-macosx10.10.0"
 ; Function Attrs: nounwind readnone ssp uwtable
 define i32 @mfi_aen_setup() #0 !dbg !4 {
 entry:
-  tail call void @llvm.dbg.declare(metadata %union.mfi_evt* undef, metadata !16, metadata !21), !dbg !22
+  tail call void @llvm.dbg.declare(metadata ptr undef, metadata !16, metadata !21), !dbg !22
   tail call void @llvm.dbg.value(metadata i32 0, metadata !16, metadata !21), !dbg !22
   ret i32 undef, !dbg !23
 }

diff  --git a/llvm/test/DebugInfo/X86/vla-dependencies.ll b/llvm/test/DebugInfo/X86/vla-dependencies.ll
index c9514c14969ff..280e95598e939 100644
--- a/llvm/test/DebugInfo/X86/vla-dependencies.ll
+++ b/llvm/test/DebugInfo/X86/vla-dependencies.ll
@@ -16,7 +16,7 @@
 ; #define DECLARE_ARRAY(type, var_name, size) type var_name[size]
 ;
 ; void h(void);
-; void k(void *);
+; void k(ptr);
 ;
 ; void g() {
 ;   h();
@@ -25,7 +25,7 @@
 ; void h() {
 ;   int count = 2;
 ;   DECLARE_ARRAY(int, array, count);
-;   k((void *)array);
+;   k((ptr)array);
 ; }
 source_filename = "/tmp/test.c"
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
@@ -35,31 +35,30 @@ target triple = "x86_64-apple-macosx10.13.0"
 define void @g() local_unnamed_addr #0 !dbg !10 {
 entry:
   %vla2.i = alloca [2 x i32], align 16, !dbg !13
-  call void @llvm.dbg.declare(metadata [2 x i32]* %vla2.i, metadata !20, metadata !DIExpression(DW_OP_stack_value)), !dbg !13
-  %0 = bitcast [2 x i32]* %vla2.i to i8*, !dbg !25
-  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %0), !dbg !25
+  call void @llvm.dbg.declare(metadata ptr %vla2.i, metadata !20, metadata !DIExpression(DW_OP_stack_value)), !dbg !13
+  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %vla2.i), !dbg !25
   call void @llvm.dbg.value(metadata i32 2, metadata !16, metadata !DIExpression()) #3, !dbg !25
   call void @llvm.dbg.value(metadata i64 2, metadata !18, metadata !DIExpression()) #3, !dbg !13
   call void @llvm.dbg.value(metadata i32 2, metadata !16, metadata !DIExpression()) #3, !dbg !25
   call void @llvm.dbg.value(metadata i64 2, metadata !18, metadata !DIExpression()) #3, !dbg !13
-  call void @k(i8* nonnull %0) #3, !dbg !26
-  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %0), !dbg !27
+  call void @k(ptr nonnull %vla2.i) #3, !dbg !26
+  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %vla2.i), !dbg !27
   ret void, !dbg !28
 }
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare void @k(i8*) local_unnamed_addr
+declare void @k(ptr) local_unnamed_addr
 
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2
 
 attributes #0 = { nounwind ssp uwtable }
 attributes #1 = { nounwind readnone speculatable }

diff  --git a/llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def-2.ll b/llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def-2.ll
index 0b61a118aa532..c5d3b218e9cba 100644
--- a/llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def-2.ll
+++ b/llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def-2.ll
@@ -30,32 +30,31 @@ target triple = "x86_64-unknown-linux-gnu"
 define dso_local void @b() local_unnamed_addr #0 !dbg !7 {
 entry:
   %c = alloca i64, align 1, !DIAssignID !13
-  call void @llvm.dbg.assign(metadata i1 undef, metadata !11, metadata !DIExpression(), metadata !13, metadata i64* %c, metadata !DIExpression()), !dbg !14
-  call void @llvm.lifetime.start.p0i64(i64 1, i64* nonnull %c) #4, !dbg !15
-  store i64 5, i64* %c, align 1, !dbg !16, !DIAssignID !20
-  call void @llvm.dbg.assign(metadata i64 5, metadata !11, metadata !DIExpression(), metadata !20, metadata i64* %c, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.assign(metadata i1 undef, metadata !11, metadata !DIExpression(), metadata !13, metadata ptr %c, metadata !DIExpression()), !dbg !14
+  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %c) #4, !dbg !15
+  store i64 5, ptr %c, align 1, !dbg !16, !DIAssignID !20
+  call void @llvm.dbg.assign(metadata i64 5, metadata !11, metadata !DIExpression(), metadata !20, metadata ptr %c, metadata !DIExpression()), !dbg !14
   tail call void (...) @d() #4, !dbg !21
 
   ; --- VV  Hand written  VV --- ;
-  %bc = bitcast i64* %c to i32*
-  store i32 1, i32* %bc, align 1, !dbg !16, !DIAssignID !31
+  store i32 1, ptr %c, align 1, !dbg !16, !DIAssignID !31
   ;; Check that a dbg.value(undef, frag(0, 32)) is inserted here. The value of
   ;; the fragment is "unknown". TODO: In this case the value of the fragment is
   ;; still obviously 5; a future improvement could be to be smarter and work
   ;; this out. But that's a lot of work for an uncommon case.
   tail call void (...) @d() #4, !dbg !21
-  call void @llvm.dbg.assign(metadata i32 1, metadata !11, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 32), metadata !31, metadata i32* %bc, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.assign(metadata i32 1, metadata !11, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 32), metadata !31, metadata ptr %c, metadata !DIExpression()), !dbg !14
   ; --- AA  Hand written  AA --- ;
 
-  call void @a(i64* nonnull %c) #4, !dbg !22
-  call void @llvm.lifetime.end.p0i64(i64 1, i64* nonnull %c) #4, !dbg !23
+  call void @a(ptr nonnull %c) #4, !dbg !22
+  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %c) #4, !dbg !23
   ret void, !dbg !23
 }
 
-declare void @llvm.lifetime.start.p0i64(i64 immarg, i64* nocapture) #1
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1
 declare !dbg !24 dso_local void @d(...) local_unnamed_addr #2
-declare !dbg !27 dso_local void @a(i64*) local_unnamed_addr #2
-declare void @llvm.lifetime.end.p0i64(i64 immarg, i64* nocapture) #1
+declare !dbg !27 dso_local void @a(ptr) local_unnamed_addr #2
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1
 declare void @llvm.dbg.assign(metadata, metadata, metadata, metadata, metadata, metadata) #3
 
 !llvm.dbg.cu = !{!0}

diff  --git a/llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def.ll b/llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def.ll
index 86673af1361eb..02c0421b9f677 100644
--- a/llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def.ll
+++ b/llvm/test/DebugInfo/assignment-tracking/X86/use-known-value-at-early-mem-def.ll
@@ -24,28 +24,28 @@ target triple = "x86_64-unknown-linux-gnu"
 define dso_local void @b() local_unnamed_addr #0 !dbg !7 {
 entry:
   %c = alloca i8, align 1, !DIAssignID !13
-  call void @llvm.dbg.assign(metadata i1 undef, metadata !11, metadata !DIExpression(), metadata !13, metadata i8* %c, metadata !DIExpression()), !dbg !14
-  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %c) #4, !dbg !15
-  store i8 0, i8* %c, align 1, !dbg !16, !DIAssignID !20
-  call void @llvm.dbg.assign(metadata i8 0, metadata !11, metadata !DIExpression(), metadata !20, metadata i8* %c, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.assign(metadata i1 undef, metadata !11, metadata !DIExpression(), metadata !13, metadata ptr %c, metadata !DIExpression()), !dbg !14
+  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %c) #4, !dbg !15
+  store i8 0, ptr %c, align 1, !dbg !16, !DIAssignID !20
+  call void @llvm.dbg.assign(metadata i8 0, metadata !11, metadata !DIExpression(), metadata !20, metadata ptr %c, metadata !DIExpression()), !dbg !14
   tail call void (...) @d() #4, !dbg !21
 
   ; --- VV  Hand written  VV --- ;
-  store i8 1, i8* %c, align 1, !dbg !16, !DIAssignID !31
+  store i8 1, ptr %c, align 1, !dbg !16, !DIAssignID !31
   ; Check that a dbg.value(0) is inserted here.
   tail call void (...) @d() #4, !dbg !21
-  call void @llvm.dbg.assign(metadata i8 1, metadata !11, metadata !DIExpression(), metadata !31, metadata i8* %c, metadata !DIExpression()), !dbg !14
+  call void @llvm.dbg.assign(metadata i8 1, metadata !11, metadata !DIExpression(), metadata !31, metadata ptr %c, metadata !DIExpression()), !dbg !14
   ; --- AA  Hand written  AA --- ;
 
-  call void @a(i8* nonnull %c) #4, !dbg !22
-  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %c) #4, !dbg !23
+  call void @a(ptr nonnull %c) #4, !dbg !22
+  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %c) #4, !dbg !23
   ret void, !dbg !23
 }
 
-declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1
 declare !dbg !24 dso_local void @d(...) local_unnamed_addr #2
-declare !dbg !27 dso_local void @a(i8*) local_unnamed_addr #2
-declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1
+declare !dbg !27 dso_local void @a(ptr) local_unnamed_addr #2
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1
 declare void @llvm.dbg.assign(metadata, metadata, metadata, metadata, metadata, metadata) #3
 
 !llvm.dbg.cu = !{!0}


        


More information about the llvm-commits mailing list