[polly] b332499 - [Polly] Convert some tests to opaque pointers (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 17 01:16:09 PST 2023


Author: Nikita Popov
Date: 2023-01-17T10:15:18+01:00
New Revision: b332499a94df11870dfc7598645c59656deb933d

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

LOG: [Polly] Convert some tests to opaque pointers (NFC)

Added: 
    

Modified: 
    polly/test/CodeGen/20100707_2.ll
    polly/test/CodeGen/20100708_2.ll
    polly/test/CodeGen/20100713.ll
    polly/test/CodeGen/20100713_2.ll
    polly/test/CodeGen/20100717.ll
    polly/test/CodeGen/20100720-MultipleConditions.ll
    polly/test/CodeGen/20100809-IndependentBlock.ll
    polly/test/CodeGen/20101030-Overflow.ll
    polly/test/CodeGen/20101103-Overflow3.ll
    polly/test/CodeGen/20101103-signmissmatch.ll
    polly/test/CodeGen/20120316-InvalidCast.ll
    polly/test/CodeGen/20120403-RHS-type-mismatch.ll
    polly/test/CodeGen/20130211-getNumberOfIterations.ll
    polly/test/CodeGen/20130221.ll
    polly/test/CodeGen/20150328-SCEVExpanderIntroducesNewIV.ll
    polly/test/CodeGen/LoopParallelMD/do_not_mutate_debug_info.ll
    polly/test/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll
    polly/test/CodeGen/MemAccess/bad_alignment.ll
    polly/test/CodeGen/MemAccess/default_aligned_new_access_function.ll
    polly/test/CodeGen/MemAccess/simple.ll
    polly/test/CodeGen/MemAccess/simple_analyze.ll
    polly/test/CodeGen/MemAccess/update_access_functions.ll
    polly/test/CodeGen/OpenMP/floord-as-argument-to-subfunction.ll
    polly/test/CodeGen/OpenMP/inlineasm.ll
    polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded.ll
    polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_different_bb.ll
    polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll
    polly/test/CodeGen/OpenMP/invariant_base_pointers_preloaded.ll
    polly/test/CodeGen/OpenMP/loop-body-references-outer-iv.ll
    polly/test/CodeGen/OpenMP/loop-body-references-outer-values-2.ll
    polly/test/CodeGen/OpenMP/loop-body-references-outer-values-3.ll
    polly/test/CodeGen/OpenMP/matmul-parallel.ll
    polly/test/CodeGen/OpenMP/reference-argument-from-non-affine-region.ll
    polly/test/CodeGen/OpenMP/reference-other-bb.ll
    polly/test/CodeGen/OpenMP/reference-preceeding-loop.ll
    polly/test/CodeGen/OpenMP/reference_latest.ll
    polly/test/CodeGen/OpenMP/single_loop_with_param.ll
    polly/test/CodeGen/OpenMP/two-parallel-loops-reference-outer-indvar.ll
    polly/test/CodeGen/PHIInExit.ll
    polly/test/CodeGen/RuntimeDebugBuilder/stmt_tracing.ll
    polly/test/CodeGen/alias-check-multi-dim.ll
    polly/test/CodeGen/alias_metadata_too_many_arrays.ll
    polly/test/CodeGen/aliasing_multidimensional_access.ll
    polly/test/CodeGen/aliasing_struct_element.ll
    polly/test/CodeGen/alignment.ll
    polly/test/CodeGen/blas_sscal_simplified.ll
    polly/test/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll
    polly/test/CodeGen/constant_condition.ll
    polly/test/CodeGen/create-conditional-scop.ll
    polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_1.ll
    polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_2.ll
    polly/test/CodeGen/debug-intrinsics.ll
    polly/test/CodeGen/dominance_problem_after_early_codegen_bailout.ll
    polly/test/CodeGen/empty_domain_in_context.ll
    polly/test/CodeGen/entry_with_trivial_phi.ll
    polly/test/CodeGen/entry_with_trivial_phi_other_bb.ll
    polly/test/CodeGen/error-stmt-in-non-affine-region.ll
    polly/test/CodeGen/error_block_contains_invalid_memory_access.ll
    polly/test/CodeGen/exprModDiv.ll
    polly/test/CodeGen/hoisted_load_escapes_through_phi.ll
    polly/test/CodeGen/hoisting_1.ll
    polly/test/CodeGen/hoisting_2.ll
    polly/test/CodeGen/if-conditions-in-vector-code.ll
    polly/test/CodeGen/inner_scev_sdiv_1.ll
    polly/test/CodeGen/inner_scev_sdiv_2.ll
    polly/test/CodeGen/inner_scev_sdiv_3.ll
    polly/test/CodeGen/inner_scev_sdiv_in_lb.ll
    polly/test/CodeGen/inner_scev_sdiv_in_lb_invariant.ll
    polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll
    polly/test/CodeGen/intrinsics_lifetime.ll
    polly/test/CodeGen/intrinsics_misc.ll
    polly/test/CodeGen/inv-load-lnt-crash-wrong-order-2.ll
    polly/test/CodeGen/inv-load-lnt-crash-wrong-order-3.ll
    polly/test/CodeGen/inv-load-lnt-crash-wrong-order.ll
    polly/test/CodeGen/invariant-load-dimension.ll
    polly/test/CodeGen/invariant-load-preload-base-pointer-origin-first.ll
    polly/test/CodeGen/invariant_cannot_handle_void.ll
    polly/test/CodeGen/invariant_load_alias_metadata.ll
    polly/test/CodeGen/invariant_load_different_sized_types.ll
    polly/test/CodeGen/invariant_load_escaping_second_scop.ll
    polly/test/CodeGen/invariant_load_loop_ub.ll
    polly/test/CodeGen/invariant_load_not_executed_but_in_parameters.ll
    polly/test/CodeGen/invariant_load_outermost.ll
    polly/test/CodeGen/invariant_load_scalar_escape_alloca_sharing.ll
    polly/test/CodeGen/invariant_loads_from_struct_with_different_types_1.ll
    polly/test/CodeGen/invariant_loads_from_struct_with_different_types_2.ll
    polly/test/CodeGen/invariant_loads_ignore_parameter_bounds.ll
    polly/test/CodeGen/invariant_verify_function_failed.ll
    polly/test/CodeGen/invariant_verify_function_failed_2.ll
    polly/test/CodeGen/large-numbers-in-boundary-context.ll
    polly/test/CodeGen/loop-invariant-load-type-mismatch.ll
    polly/test/CodeGen/loop_with_condition.ll
    polly/test/CodeGen/loop_with_condition_2.ll
    polly/test/CodeGen/loop_with_condition_ineq.ll
    polly/test/CodeGen/loop_with_conditional_entry_edge_split_hard_case.ll
    polly/test/CodeGen/memcpy_annotations.ll
    polly/test/CodeGen/multidim-non-matching-typesize-2.ll
    polly/test/CodeGen/multidim-non-matching-typesize.ll
    polly/test/CodeGen/multidim_2d_parametric_array_static_loop_bounds.ll
    polly/test/CodeGen/multidim_alias_check.ll
    polly/test/CodeGen/multiple-codegens.ll
    polly/test/CodeGen/multiple-scops-in-a-row.ll
    polly/test/CodeGen/multiple-types-invariant-load-2.ll
    polly/test/CodeGen/multiple_sai_fro_same_base_address.ll
    polly/test/CodeGen/no_guard_bb.ll
    polly/test/CodeGen/non-affine-dominance-generated-entering.ll
    polly/test/CodeGen/non-affine-phi-node-expansion-2.ll
    polly/test/CodeGen/non-affine-phi-node-expansion-3.ll
    polly/test/CodeGen/non-affine-phi-node-expansion-4.ll
    polly/test/CodeGen/non-affine-phi-node-expansion.ll
    polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize-2.ll
    polly/test/CodeGen/non-affine-region-phi-references-in-scop-value.ll
    polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll
    polly/test/CodeGen/only_non_affine_error_region.ll
    polly/test/CodeGen/openmp_limit_threads.ll
    polly/test/CodeGen/param_div_div_div_2.ll
    polly/test/CodeGen/partial_write_emptyset.ll
    polly/test/CodeGen/partial_write_in_region_with_loop.ll
    polly/test/CodeGen/partial_write_mapped_scalar.ll
    polly/test/CodeGen/partial_write_mapped_scalar_subregion.ll
    polly/test/CodeGen/partial_write_mapped_vector.ll
    polly/test/CodeGen/perf_monitoring.ll
    polly/test/CodeGen/perf_monitoring_cycles_per_scop.ll
    polly/test/CodeGen/perf_monitoring_trip_counts_per_scop.ll
    polly/test/CodeGen/phi-defined-before-scop.ll
    polly/test/CodeGen/phi_after_error_block_outside_of_scop.ll
    polly/test/CodeGen/phi_condition_modeling_1.ll
    polly/test/CodeGen/phi_condition_modeling_2.ll
    polly/test/CodeGen/phi_in_exit_early_lnt_failure_1.ll
    polly/test/CodeGen/phi_in_exit_early_lnt_failure_2.ll
    polly/test/CodeGen/phi_in_exit_early_lnt_failure_3.ll
    polly/test/CodeGen/phi_in_exit_early_lnt_failure_5.ll
    polly/test/CodeGen/phi_scalar_simple_1.ll
    polly/test/CodeGen/phi_scalar_simple_2.ll
    polly/test/CodeGen/phi_with_multi_exiting_edges_2.ll
    polly/test/CodeGen/phi_with_one_exit_edge.ll
    polly/test/CodeGen/pointer-type-expressions-2.ll
    polly/test/CodeGen/pointer-type-expressions.ll
    polly/test/CodeGen/pointer-type-pointer-type-comparison.ll
    polly/test/CodeGen/pointer_rem.ll
    polly/test/CodeGen/pr25241.ll
    polly/test/CodeGen/ptrtoint_as_parameter.ll
    polly/test/CodeGen/read-only-scalars.ll
    polly/test/CodeGen/reduction.ll
    polly/test/CodeGen/reduction_2.ll
    polly/test/CodeGen/reduction_simple_binary.ll
    polly/test/CodeGen/region_exiting-domtree.ll
    polly/test/CodeGen/region_multiexit_partialwrite.ll
    polly/test/CodeGen/run-time-condition-with-scev-parameters.ll
    polly/test/CodeGen/run-time-condition.ll
    polly/test/CodeGen/scalar-references-used-in-scop-compute.ll
    polly/test/CodeGen/scalar-store-from-same-bb.ll
    polly/test/CodeGen/scalar_codegen_crash.ll
    polly/test/CodeGen/scev-division-invariant-load.ll
    polly/test/CodeGen/scop_expander_insert_point.ll
    polly/test/CodeGen/scop_expander_segfault.ll
    polly/test/CodeGen/scop_never_executed_runtime_check_location.ll
    polly/test/CodeGen/select-base-pointer.ll
    polly/test/CodeGen/sequential_loops.ll
    polly/test/CodeGen/simple_loop_non_single_exit.ll
    polly/test/CodeGen/simple_loop_non_single_exit_2.ll
    polly/test/CodeGen/simple_non_single_entry.ll
    polly/test/CodeGen/simple_nonaffine_loop.ll
    polly/test/CodeGen/simple_vec_assign_scalar.ll
    polly/test/CodeGen/simple_vec_assign_scalar_2.ll
    polly/test/CodeGen/simple_vec_large_width.ll
    polly/test/CodeGen/simple_vec_stride_negative_one.ll
    polly/test/CodeGen/simple_vec_stride_x.ll
    polly/test/CodeGen/simple_vec_strides_multidim.ll
    polly/test/CodeGen/simple_vec_two_stmts.ll
    polly/test/CodeGen/single_do_loop_int_max_iterations.ll
    polly/test/CodeGen/single_do_loop_int_param_iterations.ll
    polly/test/CodeGen/single_do_loop_ll_max_iterations.ll
    polly/test/CodeGen/single_do_loop_one_iteration.ll
    polly/test/CodeGen/single_do_loop_scev_replace.ll
    polly/test/CodeGen/single_loop.ll
    polly/test/CodeGen/single_loop_int_max_iterations.ll
    polly/test/CodeGen/single_loop_ll_max_iterations.ll
    polly/test/CodeGen/single_loop_one_iteration.ll
    polly/test/CodeGen/single_loop_param.ll
    polly/test/CodeGen/single_loop_zero_iterations.ll
    polly/test/CodeGen/split_edge_of_exit.ll
    polly/test/CodeGen/split_edges.ll
    polly/test/CodeGen/split_edges_2.ll
    polly/test/CodeGen/srem-in-other-bb.ll
    polly/test/CodeGen/stack-overflow-in-load-hoisting.ll
    polly/test/CodeGen/test-invalid-operands-for-select-2.ll
    polly/test/CodeGen/test-invalid-operands-for-select.ll
    polly/test/CodeGen/test.ll
    polly/test/CodeGen/two-loops-right-after-each-other-2.ll
    polly/test/CodeGen/two-scops-in-row-invalidate-scevs.ll
    polly/test/CodeGen/two-scops-in-row.ll
    polly/test/CodeGen/udiv_expansion_position.ll
    polly/test/CodeGen/uninitialized_scalar_memory.ll
    polly/test/CodeGen/unpredictable-loop-unsynthesizable.ll
    polly/test/CodeGen/variant_load_empty_domain.ll
    polly/test/CodeGen/whole-scop-non-affine-subregion.ll
    polly/test/DeLICM/confused_order.ll
    polly/test/DeLICM/contradicting_assumed_context_and_domain.ll
    polly/test/DeLICM/load-in-cond-inf-loop.ll
    polly/test/DeLICM/map_memset_zero.ll
    polly/test/DeLICM/nomap_alreadymapped.ll
    polly/test/DeLICM/nomap_escaping.ll
    polly/test/DeLICM/nomap_occupied.ll
    polly/test/DeLICM/nomap_readonly.ll
    polly/test/DeLICM/nomap_spuriouswrite.ll
    polly/test/DeLICM/nomap_storagesize.ll
    polly/test/DeLICM/nomap_writewrite.ll
    polly/test/DeLICM/outofquota-reverseDomain.ll
    polly/test/DeLICM/pass_existence.ll
    polly/test/DeLICM/pr41656.ll
    polly/test/DeLICM/pr48783.ll
    polly/test/DeLICM/reduction.ll
    polly/test/DeLICM/reduction_constant_selfconflict.ll
    polly/test/DeLICM/reduction_looprotate.ll
    polly/test/DeLICM/reduction_looprotate_alwaystaken.ll
    polly/test/DeLICM/reduction_looprotate_gvnpre.ll
    polly/test/DeLICM/reduction_looprotate_gvnpre_cond1.ll
    polly/test/DeLICM/reduction_looprotate_gvnpre_cond2.ll
    polly/test/DeLICM/reduction_looprotate_gvnpre_nopreheader.ll
    polly/test/DeLICM/reduction_looprotate_hoisted.ll
    polly/test/DeLICM/reduction_looprotate_licm.ll
    polly/test/DeLICM/reduction_looprotate_licm2.ll
    polly/test/DeLICM/reduction_looprotate_licm_double_write.ll
    polly/test/DeLICM/reduction_looprotate_licm_nopreheader.ll
    polly/test/DeLICM/reduction_looprotate_load.ll
    polly/test/DeLICM/reduction_looprotate_loopguard_gvnpre.ll
    polly/test/DeLICM/reduction_looprotate_loopguard_licm1.ll
    polly/test/DeLICM/reduction_looprotate_loopguard_licm2.ll
    polly/test/DeLICM/reduction_looprotate_loopguard_licm3.ll
    polly/test/DeLICM/reduction_looprotate_readonly.ll
    polly/test/DeLICM/reduction_looprotate_synthesizable.ll
    polly/test/DeLICM/reduction_looprotate_undef.ll
    polly/test/DeLICM/reduction_overapproximate.ll
    polly/test/DeLICM/reduction_preheader.ll
    polly/test/DeLICM/reduction_unrelatedunusual.ll
    polly/test/DeLICM/reject_loadafterstore.ll
    polly/test/DeLICM/reject_outofquota.ll
    polly/test/DeLICM/reject_storeafterstore.ll
    polly/test/DeLICM/reject_storeinsubregion.ll
    polly/test/DeLICM/reject_unusualstore.ll
    polly/test/DeLICM/skip_maywrite.ll
    polly/test/DeLICM/skip_multiaccess.ll
    polly/test/DeLICM/skip_notinloop.ll
    polly/test/DeLICM/skip_scalaraccess.ll
    polly/test/DeadCodeElimination/chained_iterations.ll
    polly/test/DeadCodeElimination/chained_iterations_2.ll
    polly/test/DeadCodeElimination/computeout.ll
    polly/test/DeadCodeElimination/dead_iteration_elimination.ll
    polly/test/DeadCodeElimination/non-affine-affine-mix.ll
    polly/test/DeadCodeElimination/non-affine.ll
    polly/test/DeadCodeElimination/null_schedule.ll
    polly/test/DependenceInfo/computeout.ll
    polly/test/DependenceInfo/different_schedule_dimensions.ll
    polly/test/DependenceInfo/do_pluto_matmult.ll
    polly/test/DependenceInfo/fine_grain_dep_0.ll
    polly/test/DependenceInfo/generate_may_write_dependence_info.ll
    polly/test/DependenceInfo/infeasible_context.ll
    polly/test/DependenceInfo/may_writes_do_not_block_must_writes_for_war.ll
    polly/test/DependenceInfo/nonaffine-condition-buildMemoryAccess.ll
    polly/test/DependenceInfo/reduction_complex_location.ll
    polly/test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll
    polly/test/DependenceInfo/reduction_dependences_not_null.ll
    polly/test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll
    polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll
    polly/test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll
    polly/test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll
    polly/test/DependenceInfo/reduction_multiple_reductions.ll
    polly/test/DependenceInfo/reduction_multiple_reductions_2.ll
    polly/test/DependenceInfo/reduction_only_reduction_like_access.ll
    polly/test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll
    polly/test/DependenceInfo/reduction_privatization_deps.ll
    polly/test/DependenceInfo/reduction_privatization_deps_2.ll
    polly/test/DependenceInfo/reduction_privatization_deps_3.ll
    polly/test/DependenceInfo/reduction_privatization_deps_4.ll
    polly/test/DependenceInfo/reduction_privatization_deps_5.ll
    polly/test/DependenceInfo/reduction_sequence.ll
    polly/test/DependenceInfo/reduction_simple_iv.ll
    polly/test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll
    polly/test/DependenceInfo/reduction_simple_privatization_deps_2.ll
    polly/test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll
    polly/test/DependenceInfo/reduction_two_reductions_different_rloops.ll
    polly/test/DependenceInfo/sequential_loops.ll
    polly/test/FlattenSchedule/gemm.ll
    polly/test/ForwardOpTree/atax.ll
    polly/test/ForwardOpTree/changed-kind.ll
    polly/test/ForwardOpTree/forward_from_region.ll
    polly/test/ForwardOpTree/forward_hoisted.ll
    polly/test/ForwardOpTree/forward_instruction.ll
    polly/test/ForwardOpTree/forward_into_region.ll
    polly/test/ForwardOpTree/forward_into_region_redundant_use.ll
    polly/test/ForwardOpTree/forward_load.ll
    polly/test/ForwardOpTree/forward_load_differentarray.ll
    polly/test/ForwardOpTree/forward_load_double_write.ll
    polly/test/ForwardOpTree/forward_load_fromloop.ll
    polly/test/ForwardOpTree/forward_load_indirect.ll
    polly/test/ForwardOpTree/forward_load_memset_after.ll
    polly/test/ForwardOpTree/forward_load_memset_before.ll
    polly/test/ForwardOpTree/forward_load_tripleuse.ll
    polly/test/ForwardOpTree/forward_load_unrelatedunusual.ll
    polly/test/ForwardOpTree/forward_phi_load.ll
    polly/test/ForwardOpTree/forward_readonly.ll
    polly/test/ForwardOpTree/forward_reusue.ll
    polly/test/ForwardOpTree/forward_store.ll
    polly/test/ForwardOpTree/forward_synthesizable_definloop.ll
    polly/test/ForwardOpTree/forward_synthesizable_indvar.ll
    polly/test/ForwardOpTree/forward_synthesizable_useinloop.ll
    polly/test/ForwardOpTree/forward_transitive.ll
    polly/test/ForwardOpTree/jacobi-1d.ll
    polly/test/ForwardOpTree/noforward_from_region.ll
    polly/test/ForwardOpTree/noforward_load_conditional.ll
    polly/test/ForwardOpTree/noforward_load_writebetween.ll
    polly/test/ForwardOpTree/noforward_outofquota.ll
    polly/test/ForwardOpTree/noforward_partial.ll
    polly/test/ForwardOpTree/noforward_phi.ll
    polly/test/ForwardOpTree/noforward_selfrefphi.ll
    polly/test/ForwardOpTree/noforward_sideffects.ll
    polly/test/ForwardOpTree/noforward_synthesizable_unknownit.ll
    polly/test/ForwardOpTree/out-of-quota1.ll
    polly/test/GPGPU/add-scalars-in-scop-to-kills.ll
    polly/test/GPGPU/align-params-in-schedule.ll
    polly/test/GPGPU/array-with-elem-type-smaller-than-byte.ll
    polly/test/GPGPU/bounds-construction-with-ignore-param-bounds.ll
    polly/test/GPGPU/cuda-annotations.ll
    polly/test/GPGPU/debug-metadata-leak.ll
    polly/test/GPGPU/double-parallel-loop.ll
    polly/test/GPGPU/failing-invariant-load-handling.ll
    polly/test/GPGPU/failing-invariant-load-hoisting.ll
    polly/test/GPGPU/host-statement.ll
    polly/test/GPGPU/ignore-parameter-bounds.ll
    polly/test/GPGPU/invalid-kernel-assert-verifymodule.ll
    polly/test/GPGPU/invalid-kernel.ll
    polly/test/GPGPU/invariant-load-array-access.ll
    polly/test/GPGPU/invariant-load-escaping-values.ll
    polly/test/GPGPU/invariant-load-hoisting-read-in-kernel.ll
    polly/test/GPGPU/invariant-load-hoisting-with-variable-bounds.ll
    polly/test/GPGPU/invariant-load-hoisting-with-variable-lower-bound.ll
    polly/test/GPGPU/invariant-load-hoisting-with-variable-upper-bound.ll
    polly/test/GPGPU/invariant-load-hoisting.ll
    polly/test/GPGPU/invariant-load-of-scalar.ll
    polly/test/GPGPU/kernel-params-scop-parameter.ll
    polly/test/GPGPU/kernels-names-across-scops-funcs.ll
    polly/test/GPGPU/libdevice-functions-copied-into-kernel.ll
    polly/test/GPGPU/live-range-reordering-with-privatization.ll
    polly/test/GPGPU/loops-outside-scop.ll
    polly/test/GPGPU/managed-memory-rewrite-alloca.ll
    polly/test/GPGPU/managed-memory-rewrite-malloc-free-inside-constexpr.ll
    polly/test/GPGPU/managed-memory-rewrite-malloc-free.ll
    polly/test/GPGPU/managed-pointers-preparation.ll
    polly/test/GPGPU/memory-only-referenced-from-access.ll
    polly/test/GPGPU/mostly-sequential.ll
    polly/test/GPGPU/non-read-only-scalars.ll
    polly/test/GPGPU/non-zero-array-offset.ll
    polly/test/GPGPU/only-part-of-array-modified.ll
    polly/test/GPGPU/parametric-loop-bound.ll
    polly/test/GPGPU/partial_writes.ll
    polly/test/GPGPU/privatization-simple.ll
    polly/test/GPGPU/privatization.ll
    polly/test/GPGPU/region-stmt.ll
    polly/test/GPGPU/remove-dead-instructions-in-stmt-2.ll
    polly/test/GPGPU/remove-dead-instructions-in-stmt.ll
    polly/test/GPGPU/run-time-check.ll
    polly/test/GPGPU/scalar-param-and-value-32-bit.ll
    polly/test/GPGPU/scalar-param-and-value-use.ll
    polly/test/GPGPU/scalar-parameter-fp128.ll
    polly/test/GPGPU/scalar-parameter-half.ll
    polly/test/GPGPU/scalar-parameter-i120.ll
    polly/test/GPGPU/scalar-parameter-i128.ll
    polly/test/GPGPU/scalar-parameter-i3000.ll
    polly/test/GPGPU/scalar-parameter-i80.ll
    polly/test/GPGPU/scalar-parameter-ppc_fp128.ll
    polly/test/GPGPU/scalar-parameter-x86_fp80.ll
    polly/test/GPGPU/scalar-parameter.ll
    polly/test/GPGPU/scalar-writes-in-scop-requires-abort.ll
    polly/test/GPGPU/scheduler-timeout.ll
    polly/test/GPGPU/shared-memory-scalar.ll
    polly/test/GPGPU/simple-managed-memory-rewrite.ll
    polly/test/GPGPU/size-cast.ll
    polly/test/GPGPU/spir-typesize.ll
    polly/test/GPGPU/unknown-fn-call-not-copied-into-kernel.ll
    polly/test/GPGPU/untouched-arrays.ll
    polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll
    polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll
    polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll
    polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll
    polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll
    polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll
    polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll
    polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll
    polly/test/IstAstInfo/alias_checks_with_empty_context.ll
    polly/test/IstAstInfo/alias_simple_1.ll
    polly/test/IstAstInfo/alias_simple_2.ll
    polly/test/IstAstInfo/alias_simple_3.ll
    polly/test/IstAstInfo/aliasing_arrays_with_identical_base.ll
    polly/test/IstAstInfo/aliasing_multiple_alias_groups.ll
    polly/test/IstAstInfo/aliasing_parametric_simple_1.ll
    polly/test/IstAstInfo/aliasing_parametric_simple_2.ll
    polly/test/IstAstInfo/dependence_distance_constant.ll
    polly/test/IstAstInfo/dependence_distance_minimal.ll
    polly/test/IstAstInfo/dependence_distance_multiple_constant.ll
    polly/test/IstAstInfo/dependence_distance_parametric.ll
    polly/test/IstAstInfo/dependence_distance_parametric_expr.ll
    polly/test/IstAstInfo/dependence_distance_varying.ll
    polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll
    polly/test/IstAstInfo/dependence_distance_varying_multiple.ll
    polly/test/IstAstInfo/domain_bounded_only_with_context.ll
    polly/test/IstAstInfo/non_affine_access.ll
    polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll
    polly/test/IstAstInfo/reduction_clauses_onedimensional_access.ll
    polly/test/IstAstInfo/reduction_dependences_equal_non_reduction_dependences.ll
    polly/test/IstAstInfo/reduction_different_reduction_clauses.ll
    polly/test/IstAstInfo/reduction_in_one_dimension.ll
    polly/test/IstAstInfo/reduction_loop_reversal.ll
    polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule.ll
    polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule_2.ll
    polly/test/IstAstInfo/reduction_modulo_schedule.ll
    polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions.ll
    polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_2.ll
    polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_3.ll
    polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_4.ll
    polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_5.ll
    polly/test/IstAstInfo/reduction_multiple_dimensions.ll
    polly/test/IstAstInfo/reduction_multiple_dimensions_2.ll
    polly/test/IstAstInfo/reduction_multiple_dimensions_3.ll
    polly/test/IstAstInfo/reduction_multiple_dimensions_4.ll
    polly/test/IstAstInfo/run-time-condition.ll
    polly/test/IstAstInfo/runtime_context_with_error_blocks.ll
    polly/test/IstAstInfo/simple-run-time-condition.ll
    polly/test/IstAstInfo/single_loop_strip_mine.ll
    polly/test/IstAstInfo/single_loop_uint_max_iterations.ll
    polly/test/IstAstInfo/single_loop_ull_max_iterations.ll
    polly/test/JSONExporter/ImportAccesses/ImportAccesses-Bad-relation.ll
    polly/test/JSONExporter/ImportAccesses/ImportAccesses-No-accesses-key.ll
    polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-MemAcc.ll
    polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-statements.ll
    polly/test/JSONExporter/ImportAccesses/ImportAccesses-Relation-mispelled.ll
    polly/test/JSONExporter/ImportAccesses/ImportAccesses-Statements-mispelled.ll
    polly/test/JSONExporter/ImportAccesses/ImportAccesses-Undeclared-ScopArrayInfo.ll
    polly/test/JSONExporter/ImportAccesses/ImportAccesses-Wrong-number-dimensions.ll
    polly/test/JSONExporter/ImportArrays/ImportArrays-Mispelled-type.ll
    polly/test/JSONExporter/ImportArrays/ImportArrays-Negative-size.ll
    polly/test/JSONExporter/ImportArrays/ImportArrays-No-name.ll
    polly/test/JSONExporter/ImportArrays/ImportArrays-No-sizes-key.ll
    polly/test/JSONExporter/ImportArrays/ImportArrays-No-type-key.ll
    polly/test/JSONExporter/ImportContext/ImportContext-Context-mispelled.ll
    polly/test/JSONExporter/ImportContext/ImportContext-Not-parameter-set.ll
    polly/test/JSONExporter/ImportContext/ImportContext-Unvalid-Context.ll
    polly/test/JSONExporter/ImportContext/ImportContext-Wrong-dimension.ll
    polly/test/JSONExporter/ImportSchedule/ImportSchedule-No-schedule-key.ll
    polly/test/JSONExporter/ImportSchedule/ImportSchedule-Schedule-not-valid.ll
    polly/test/JSONExporter/ImportSchedule/ImportSchedule-Statements-mispelled.ll
    polly/test/JSONExporter/ImportSchedule/ImportSchedule-Wrong-number-statements.ll
    polly/test/MaximalStaticExpansion/load_after_store_same_statement.ll
    polly/test/MaximalStaticExpansion/read_from_original.ll
    polly/test/MaximalStaticExpansion/too_many_writes.ll
    polly/test/MaximalStaticExpansion/working_deps_between_inners.ll
    polly/test/MaximalStaticExpansion/working_deps_between_inners_phi.ll
    polly/test/MaximalStaticExpansion/working_expansion.ll
    polly/test/MaximalStaticExpansion/working_expansion_multiple_dependences_per_statement.ll
    polly/test/MaximalStaticExpansion/working_expansion_multiple_instruction_per_statement.ll
    polly/test/MaximalStaticExpansion/working_phi_expansion.ll
    polly/test/MaximalStaticExpansion/working_phi_two_scalars.ll
    polly/test/MaximalStaticExpansion/working_value_expansion.ll
    polly/test/PruneUnprofitable/prune_only_scalardeps.ll
    polly/test/ScheduleOptimizer/2012-04-16-Trivially-vectorizable-loops.ll
    polly/test/ScheduleOptimizer/2013-04-11-Empty-Domain-two.ll
    polly/test/ScheduleOptimizer/GreedyFuse/fuse-double.ll
    polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-first.ll
    polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-third.ll
    polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-carried.ll
    polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-third.ll
    polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner.ll
    polly/test/ScheduleOptimizer/GreedyFuse/fuse-simple.ll
    polly/test/ScheduleOptimizer/GreedyFuse/nofuse-simple.ll
    polly/test/ScheduleOptimizer/GreedyFuse/nofuse-with-middle.ll
    polly/test/ScheduleOptimizer/ManualOptimization/disable_nonforced.ll
    polly/test/ScheduleOptimizer/ManualOptimization/distribute_heuristic.ll
    polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_looploc.ll
    polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_pragmaloc.ll
    polly/test/ScheduleOptimizer/ManualOptimization/unroll_disable.ll
    polly/test/ScheduleOptimizer/ManualOptimization/unroll_double.ll
    polly/test/ScheduleOptimizer/ManualOptimization/unroll_full.ll
    polly/test/ScheduleOptimizer/ManualOptimization/unroll_heuristic.ll
    polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial.ll
    polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial_followup.ll
    polly/test/ScheduleOptimizer/SIMDInParallelFor.ll
    polly/test/ScheduleOptimizer/computeout.ll
    polly/test/ScheduleOptimizer/ensure-correct-tile-sizes.ll
    polly/test/ScheduleOptimizer/focaltech_test_detail_threshold-7bc17e.ll
    polly/test/ScheduleOptimizer/full_partial_tile_separation.ll
    polly/test/ScheduleOptimizer/line-tiling-2.ll
    polly/test/ScheduleOptimizer/line-tiling.ll
    polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout.ll
    polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout_2.ll
    polly/test/ScheduleOptimizer/one-dimensional-band.ll
    polly/test/ScheduleOptimizer/outer_coincidence.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm_2.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_11.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_12.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_13.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_16.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_17.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_18.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_19.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_2.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_20.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_21.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_22.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_24.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_25.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_4.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_5.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_6.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_7.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_8.ll
    polly/test/ScheduleOptimizer/pattern-matching-based-opts_9.ll
    polly/test/ScheduleOptimizer/pattern_matching_based_opts_splitmap.ll
    polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll
    polly/test/ScheduleOptimizer/prevectorization.ll
    polly/test/ScheduleOptimizer/rectangular-tiling.ll
    polly/test/ScheduleOptimizer/statistics.ll
    polly/test/ScheduleOptimizer/tile_after_fusion.ll
    polly/test/ScheduleOptimizer/vec-addr-space.ll
    polly/test/ScheduleOptimizer/vivid-vbi-gen-vivid_vbi_gen_sliced-before-llvmreduced.ll
    polly/test/ScopDetect/aliasing_parametric_simple_1.ll
    polly/test/ScopDetect/aliasing_parametric_simple_2.ll
    polly/test/ScopDetect/aliasing_simple_1.ll
    polly/test/ScopDetect/aliasing_simple_2.ll
    polly/test/ScopDetect/base_pointer.ll
    polly/test/ScopDetect/base_pointer_setNewAccessRelation.ll
    polly/test/ScopDetect/callbr.ll
    polly/test/ScopDetect/collective_invariant_loads.ll
    polly/test/ScopDetect/cross_loop_non_single_exit.ll
    polly/test/ScopDetect/cross_loop_non_single_exit_2.ll
    polly/test/ScopDetect/dependency_to_phi_node_outside_of_region.ll
    polly/test/ScopDetect/dot-scops-npm.ll
    polly/test/ScopDetect/dot-scops.ll
    polly/test/ScopDetect/error-block-always-executed.ll
    polly/test/ScopDetect/error-block-referenced-from-scop.ll
    polly/test/ScopDetect/ignore_func_flag_regex.ll
    polly/test/ScopDetect/index_from_unpredictable_loop.ll
    polly/test/ScopDetect/index_from_unpredictable_loop2.ll
    polly/test/ScopDetect/indvars.ll
    polly/test/ScopDetect/intrinsics_1.ll
    polly/test/ScopDetect/intrinsics_2.ll
    polly/test/ScopDetect/intrinsics_3.ll
    polly/test/ScopDetect/invalid-latch-conditions.ll
    polly/test/ScopDetect/invalidate_scalar_evolution.ll
    polly/test/ScopDetect/invariant-load-before-scop.ll
    polly/test/ScopDetect/keep_going_expansion.ll
    polly/test/ScopDetect/mod_ref_read_pointer.ll
    polly/test/ScopDetect/more-than-one-loop.ll
    polly/test/ScopDetect/multidim-with-undef-size.ll
    polly/test/ScopDetect/multidim.ll
    polly/test/ScopDetect/multidim_indirect_access.ll
    polly/test/ScopDetect/multidim_two_accesses_different_delinearization.ll
    polly/test/ScopDetect/nested_loop_single_exit.ll
    polly/test/ScopDetect/non-affine-conditional.ll
    polly/test/ScopDetect/non-affine-float-compare.ll
    polly/test/ScopDetect/non-affine-loop-condition-dependent-access.ll
    polly/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll
    polly/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll
    polly/test/ScopDetect/non-affine-loop.ll
    polly/test/ScopDetect/non-beneficial-loops-small-trip-count.ll
    polly/test/ScopDetect/non-constant-add-rec-start-expr.ll
    polly/test/ScopDetect/non-simple-memory-accesses.ll
    polly/test/ScopDetect/non_affine_loop_condition.ll
    polly/test/ScopDetect/only-one-affine-loop.ll
    polly/test/ScopDetect/only_func_flag.ll
    polly/test/ScopDetect/only_func_flag_regex.ll
    polly/test/ScopDetect/parametric-multiply-in-scev-2.ll
    polly/test/ScopDetect/parametric-multiply-in-scev.ll
    polly/test/ScopDetect/phi_with_multi_exiting_edges.ll
    polly/test/ScopDetect/profitability-large-basic-blocks.ll
    polly/test/ScopDetect/profitability-two-nested-loops.ll
    polly/test/ScopDetect/remove_all_children.ll
    polly/test/ScopDetect/report-scop-location.ll
    polly/test/ScopDetect/restrict-undef-size-scopdetect.ll
    polly/test/ScopDetect/run_time_alias_check.ll
    polly/test/ScopDetect/scev_remove_max.ll
    polly/test/ScopDetect/sequential_loops.ll
    polly/test/ScopDetect/simple_loop.ll
    polly/test/ScopDetect/simple_loop_non_single_entry.ll
    polly/test/ScopDetect/simple_loop_non_single_exit.ll
    polly/test/ScopDetect/simple_loop_non_single_exit_2.ll
    polly/test/ScopDetect/simple_loop_two_phi_nodes.ll
    polly/test/ScopDetect/simple_loop_with_param.ll
    polly/test/ScopDetect/simple_loop_with_param_2.ll
    polly/test/ScopDetect/simple_non_single_entry.ll
    polly/test/ScopDetect/skip_function_attribute.ll
    polly/test/ScopDetect/srem_with_parametric_divisor.ll
    polly/test/ScopDetect/statistics.ll
    polly/test/ScopDetect/tlr_is_hoistable_load.ll
    polly/test/ScopDetectionDiagnostics/ReportAlias-01.ll
    polly/test/ScopDetectionDiagnostics/ReportEntry.ll
    polly/test/ScopDetectionDiagnostics/ReportFuncCall-01.ll
    polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegion.ll
    polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegionWithoutDebugLoc.ll
    polly/test/ScopDetectionDiagnostics/ReportLoopBound-01.ll
    polly/test/ScopDetectionDiagnostics/ReportLoopHasNoExit.ll
    polly/test/ScopDetectionDiagnostics/ReportMultipleNonAffineAccesses.ll
    polly/test/ScopDetectionDiagnostics/ReportNonAffineAccess-01.ll
    polly/test/ScopDetectionDiagnostics/ReportUnprofitable.ll
    polly/test/ScopDetectionDiagnostics/ReportUnreachableInExit.ll
    polly/test/ScopDetectionDiagnostics/ReportVariantBasePtr-01.ll
    polly/test/ScopDetectionDiagnostics/loop_has_multiple_exits.ll
    polly/test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll
    polly/test/ScopInfo/20110312-Fail-without-basicaa.ll
    polly/test/ScopInfo/20111108-Parameter-not-detected.ll
    polly/test/ScopInfo/2012-03-16-Crash-because-of-unsigned-in-scev.ll
    polly/test/ScopInfo/2015-10-04-Crash-in-domain-generation.ll
    polly/test/ScopInfo/Alias-0.ll
    polly/test/ScopInfo/Alias-1.ll
    polly/test/ScopInfo/Alias-2.ll
    polly/test/ScopInfo/Alias-3.ll
    polly/test/ScopInfo/Alias-4.ll
    polly/test/ScopInfo/BoundChecks/single-loop.ll
    polly/test/ScopInfo/BoundChecks/two-loops.ll
    polly/test/ScopInfo/NonAffine/div_backedge.ll
    polly/test/ScopInfo/NonAffine/div_domain.ll
    polly/test/ScopInfo/NonAffine/invariant_loads_dependent_in_non_affine_region.ll
    polly/test/ScopInfo/NonAffine/modulo_backedge.ll
    polly/test/ScopInfo/NonAffine/modulo_domain.ll
    polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll
    polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll
    polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll
    polly/test/ScopInfo/NonAffine/non_affine_access_with_range_2.ll
    polly/test/ScopInfo/NonAffine/non_affine_but_sdiv.ll
    polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll
    polly/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll
    polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll
    polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll
    polly/test/ScopInfo/NonAffine/non_affine_float_compare.ll
    polly/test/ScopInfo/NonAffine/non_affine_loop_condition.ll
    polly/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
    polly/test/ScopInfo/NonAffine/non_affine_parametric_loop.ll
    polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll
    polly/test/ScopInfo/aliasing_conditional_alias_groups_1.ll
    polly/test/ScopInfo/aliasing_conditional_alias_groups_2.ll
    polly/test/ScopInfo/aliasing_dead_access.ll
    polly/test/ScopInfo/aliasing_many_arrays_to_compare.ll
    polly/test/ScopInfo/aliasing_many_parameters_not_all_involved.ll
    polly/test/ScopInfo/aliasing_many_read_only_acesses.ll
    polly/test/ScopInfo/aliasing_multiple_alias_groups.ll
    polly/test/ScopInfo/aliasing_with_non_affine_access.ll
    polly/test/ScopInfo/allow-all-parameters-dereferencable.ll
    polly/test/ScopInfo/assume_gep_bounds.ll
    polly/test/ScopInfo/assume_gep_bounds_2.ll
    polly/test/ScopInfo/assume_gep_bounds_many.ll
    polly/test/ScopInfo/avoid_new_parameters_from_geps.ll
    polly/test/ScopInfo/bool-addrec.ll
    polly/test/ScopInfo/bounded_loop_assumptions.ll
    polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-2.ll
    polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-3.ll
    polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations.ll
    polly/test/ScopInfo/bug_2011_1_5.ll
    polly/test/ScopInfo/bug_scev_not_fully_eval.ll
    polly/test/ScopInfo/cfg_consequences.ll
    polly/test/ScopInfo/complex-branch-structure.ll
    polly/test/ScopInfo/complex-condition.ll
    polly/test/ScopInfo/complex-expression.ll
    polly/test/ScopInfo/complex-loop-nesting.ll
    polly/test/ScopInfo/complex-successor-structure-2.ll
    polly/test/ScopInfo/complex-successor-structure-3.ll
    polly/test/ScopInfo/complex-successor-structure.ll
    polly/test/ScopInfo/complex_domain_binary_condition.ll
    polly/test/ScopInfo/complex_execution_context.ll
    polly/test/ScopInfo/cond_constant_in_loop.ll
    polly/test/ScopInfo/cond_in_loop.ll
    polly/test/ScopInfo/condition-after-error-block-2.ll
    polly/test/ScopInfo/condition-after-error-block-before-scop.ll
    polly/test/ScopInfo/condtion-after-error-block.ll
    polly/test/ScopInfo/const_srem_sdiv.ll
    polly/test/ScopInfo/constant-non-integer-branch-condition.ll
    polly/test/ScopInfo/constant_functions_outside_scop_as_unknown.ll
    polly/test/ScopInfo/constant_start_integer.ll
    polly/test/ScopInfo/debug_call.ll
    polly/test/ScopInfo/delinearize-together-all-data-refs.ll
    polly/test/ScopInfo/div_by_zero.ll
    polly/test/ScopInfo/do-not-model-error-block-accesses.ll
    polly/test/ScopInfo/eager-binary-and-or-conditions.ll
    polly/test/ScopInfo/early_exit_for_complex_domains.ll
    polly/test/ScopInfo/error-blocks-1.ll
    polly/test/ScopInfo/error-blocks-2.ll
    polly/test/ScopInfo/error-blocks-3.ll
    polly/test/ScopInfo/escaping_empty_scop.ll
    polly/test/ScopInfo/exit-phi-1.ll
    polly/test/ScopInfo/exit-phi-2.ll
    polly/test/ScopInfo/exit_phi_accesses-2.ll
    polly/test/ScopInfo/exit_phi_accesses.ll
    polly/test/ScopInfo/expensive-boundary-context.ll
    polly/test/ScopInfo/extract_constant_factor_introduces_new_parameter.ll
    polly/test/ScopInfo/full-function.ll
    polly/test/ScopInfo/granularity_same_name.ll
    polly/test/ScopInfo/granularity_scalar-indep.ll
    polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi1.ll
    polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi2.ll
    polly/test/ScopInfo/granularity_scalar-indep_epilogue.ll
    polly/test/ScopInfo/granularity_scalar-indep_epilogue_last.ll
    polly/test/ScopInfo/granularity_scalar-indep_noepilogue.ll
    polly/test/ScopInfo/granularity_scalar-indep_ordered-2.ll
    polly/test/ScopInfo/granularity_scalar-indep_ordered.ll
    polly/test/ScopInfo/i1_params.ll
    polly/test/ScopInfo/infeasible-rtc.ll
    polly/test/ScopInfo/infeasible_invalid_context.ll
    polly/test/ScopInfo/integers.ll
    polly/test/ScopInfo/inter-error-bb-dependence.ll
    polly/test/ScopInfo/inter_bb_scalar_dep.ll
    polly/test/ScopInfo/intra-non-affine-stmt-phi-node.ll
    polly/test/ScopInfo/intra_and_inter_bb_scalar_dep.ll
    polly/test/ScopInfo/intra_bb_scalar_dep.ll
    polly/test/ScopInfo/intrinsics.ll
    polly/test/ScopInfo/invalid_add_rec_after_invariant_load_remapping.ll
    polly/test/ScopInfo/invalidate_iterator_during_MA_removal.ll
    polly/test/ScopInfo/invariant-load-instlist.ll
    polly/test/ScopInfo/invariant-loads-leave-read-only-statements.ll
    polly/test/ScopInfo/invariant_load.ll
    polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer.ll
    polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer_escaping.ll
    polly/test/ScopInfo/invariant_load_addrec_sum.ll
    polly/test/ScopInfo/invariant_load_base_pointer.ll
    polly/test/ScopInfo/invariant_load_base_pointer_conditional.ll
    polly/test/ScopInfo/invariant_load_base_pointer_in_conditional.ll
    polly/test/ScopInfo/invariant_load_branch_condition.ll
    polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs.ll
    polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_2.ll
    polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_3.ll
    polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4.ll
    polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4b.ll
    polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4c.ll
    polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_5.ll
    polly/test/ScopInfo/invariant_load_complex_condition.ll
    polly/test/ScopInfo/invariant_load_condition.ll
    polly/test/ScopInfo/invariant_load_dereferenceable.ll
    polly/test/ScopInfo/invariant_load_distinct_parameter_valuations.ll
    polly/test/ScopInfo/invariant_load_in_non_affine.ll
    polly/test/ScopInfo/invariant_load_loop_ub.ll
    polly/test/ScopInfo/invariant_load_ptr_ptr_noalias.ll
    polly/test/ScopInfo/invariant_load_scalar_dep.ll
    polly/test/ScopInfo/invariant_load_stmt_domain.ll
    polly/test/ScopInfo/invariant_load_zext_parameter-2.ll
    polly/test/ScopInfo/invariant_load_zextended_in_own_execution_context.ll
    polly/test/ScopInfo/invariant_loads_complicated_dependences.ll
    polly/test/ScopInfo/invariant_loads_cyclic_dependences.ll
    polly/test/ScopInfo/invariant_loop_bounds.ll
    polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-1.ll
    polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-2.ll
    polly/test/ScopInfo/isl_aff_out_of_bounds.ll
    polly/test/ScopInfo/isl_trip_count_01.ll
    polly/test/ScopInfo/isl_trip_count_02.ll
    polly/test/ScopInfo/isl_trip_count_03.ll
    polly/test/ScopInfo/isl_trip_count_multiple_exiting_blocks.ll
    polly/test/ScopInfo/licm_load.ll
    polly/test/ScopInfo/licm_potential_store.ll
    polly/test/ScopInfo/licm_reduction_nested.ll
    polly/test/ScopInfo/long-compile-time-alias-analysis.ll
    polly/test/ScopInfo/long-sequence-of-error-blocks-2.ll
    polly/test/ScopInfo/long-sequence-of-error-blocks.ll
    polly/test/ScopInfo/loop-multiexit-succ-cond.ll
    polly/test/ScopInfo/loop_affine_bound_0.ll
    polly/test/ScopInfo/loop_affine_bound_1.ll
    polly/test/ScopInfo/loop_affine_bound_2.ll
    polly/test/ScopInfo/loop_carry.ll
    polly/test/ScopInfo/many-scalar-dependences.ll
    polly/test/ScopInfo/max-loop-depth.ll
    polly/test/ScopInfo/memcpy-raw-source.ll
    polly/test/ScopInfo/memset.ll
    polly/test/ScopInfo/memset_null.ll
    polly/test/ScopInfo/mismatching-array-dimensions.ll
    polly/test/ScopInfo/mod_ref_access_pointee_arguments.ll
    polly/test/ScopInfo/mod_ref_read_pointee_arguments.ll
    polly/test/ScopInfo/mod_ref_read_pointer.ll
    polly/test/ScopInfo/mod_ref_read_pointers.ll
    polly/test/ScopInfo/modulo_zext_1.ll
    polly/test/ScopInfo/modulo_zext_2.ll
    polly/test/ScopInfo/modulo_zext_3.ll
    polly/test/ScopInfo/multi-scop.ll
    polly/test/ScopInfo/multidim_2d-diagonal-matrix.ll
    polly/test/ScopInfo/multidim_2d_outer_parametric_offset.ll
    polly/test/ScopInfo/multidim_2d_parametric_array_static_loop_bounds.ll
    polly/test/ScopInfo/multidim_2d_with_modref_call.ll
    polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll
    polly/test/ScopInfo/multidim_3d_parametric_array_static_loop_bounds.ll
    polly/test/ScopInfo/multidim_fixedsize_different_dimensionality.ll
    polly/test/ScopInfo/multidim_fixedsize_multi_offset.ll
    polly/test/ScopInfo/multidim_fold_constant_dim.ll
    polly/test/ScopInfo/multidim_fortran_2d.ll
    polly/test/ScopInfo/multidim_fortran_2d_params.ll
    polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll
    polly/test/ScopInfo/multidim_fortran_srem.ll
    polly/test/ScopInfo/multidim_gep_pointercast.ll
    polly/test/ScopInfo/multidim_gep_pointercast2.ll
    polly/test/ScopInfo/multidim_invalid_dimension.ll
    polly/test/ScopInfo/multidim_ivs_and_integer_offsets_3d.ll
    polly/test/ScopInfo/multidim_ivs_and_parameteric_offsets_3d.ll
    polly/test/ScopInfo/multidim_many_references.ll
    polly/test/ScopInfo/multidim_nested_start_integer.ll
    polly/test/ScopInfo/multidim_nested_start_share_parameter.ll
    polly/test/ScopInfo/multidim_only_ivs_2d.ll
    polly/test/ScopInfo/multidim_only_ivs_3d.ll
    polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll
    polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll
    polly/test/ScopInfo/multidim_param_in_subscript-2.ll
    polly/test/ScopInfo/multidim_param_in_subscript.ll
    polly/test/ScopInfo/multidim_parameter_addrec_product.ll
    polly/test/ScopInfo/multidim_single_and_multidim_array.ll
    polly/test/ScopInfo/multidim_srem.ll
    polly/test/ScopInfo/multidim_with_bitcast.ll
    polly/test/ScopInfo/multiple-binary-or-conditions.ll
    polly/test/ScopInfo/multiple-types-access-offset-not-dividable-by-element-size.ll
    polly/test/ScopInfo/multiple-types-non-affine-2.ll
    polly/test/ScopInfo/multiple-types-non-affine.ll
    polly/test/ScopInfo/multiple-types-non-power-of-two-2.ll
    polly/test/ScopInfo/multiple-types-non-power-of-two.ll
    polly/test/ScopInfo/multiple-types-two-dimensional-2.ll
    polly/test/ScopInfo/multiple-types-two-dimensional.ll
    polly/test/ScopInfo/multiple-types.ll
    polly/test/ScopInfo/multiple_exiting_blocks.ll
    polly/test/ScopInfo/multiple_exiting_blocks_two_loop.ll
    polly/test/ScopInfo/multiple_latch_blocks.ll
    polly/test/ScopInfo/nested-loops.ll
    polly/test/ScopInfo/no-scalar-deps-in-non-affine-subregion.ll
    polly/test/ScopInfo/non-affine-region-phi.ll
    polly/test/ScopInfo/non-affine-region-with-loop-2.ll
    polly/test/ScopInfo/non-affine-region-with-loop.ll
    polly/test/ScopInfo/non-precise-inv-load-1.ll
    polly/test/ScopInfo/non-precise-inv-load-2.ll
    polly/test/ScopInfo/non-precise-inv-load-3.ll
    polly/test/ScopInfo/non-precise-inv-load-4.ll
    polly/test/ScopInfo/non-precise-inv-load-5.ll
    polly/test/ScopInfo/non-precise-inv-load-6.ll
    polly/test/ScopInfo/non-pure-function-call.ll
    polly/test/ScopInfo/non-pure-function-calls-causes-dead-blocks.ll
    polly/test/ScopInfo/non-pure-function-calls.ll
    polly/test/ScopInfo/non_affine_access.ll
    polly/test/ScopInfo/non_affine_region_1.ll
    polly/test/ScopInfo/non_affine_region_2.ll
    polly/test/ScopInfo/non_affine_region_3.ll
    polly/test/ScopInfo/non_affine_region_4.ll
    polly/test/ScopInfo/nonaffine-buildMemoryAccess.ll
    polly/test/ScopInfo/not-a-reduction.ll
    polly/test/ScopInfo/opaque-struct.ll
    polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node.ll
    polly/test/ScopInfo/parameter-constant-division.ll
    polly/test/ScopInfo/parameter_in_dead_statement.ll
    polly/test/ScopInfo/parameter_with_constant_factor_in_add.ll
    polly/test/ScopInfo/partially_invariant_load_1.ll
    polly/test/ScopInfo/partially_invariant_load_2.ll
    polly/test/ScopInfo/phi-in-non-affine-region.ll
    polly/test/ScopInfo/phi_after_error_block.ll
    polly/test/ScopInfo/phi_condition_modeling_1.ll
    polly/test/ScopInfo/phi_condition_modeling_2.ll
    polly/test/ScopInfo/phi_conditional_simple_1.ll
    polly/test/ScopInfo/phi_loop_carried_float.ll
    polly/test/ScopInfo/phi_not_grouped_at_top.ll
    polly/test/ScopInfo/phi_scalar_simple_1.ll
    polly/test/ScopInfo/phi_scalar_simple_2.ll
    polly/test/ScopInfo/phi_with_invoke_edge.ll
    polly/test/ScopInfo/pointer-comparison-no-nsw.ll
    polly/test/ScopInfo/pointer-comparison.ll
    polly/test/ScopInfo/pointer-type-expressions.ll
    polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll
    polly/test/ScopInfo/polly-timeout-parameter-bounds.ll
    polly/test/ScopInfo/pr38218.ll
    polly/test/ScopInfo/preserve-equiv-class-order-in-basic_block.ll
    polly/test/ScopInfo/process_added_dimensions.ll
    polly/test/ScopInfo/ranged_parameter.ll
    polly/test/ScopInfo/ranged_parameter_2.ll
    polly/test/ScopInfo/ranged_parameter_wrap.ll
    polly/test/ScopInfo/ranged_parameter_wrap_2.ll
    polly/test/ScopInfo/read-only-scalar-used-in-phi-2.ll
    polly/test/ScopInfo/read-only-scalar-used-in-phi.ll
    polly/test/ScopInfo/read-only-scalars.ll
    polly/test/ScopInfo/read-only-statements.ll
    polly/test/ScopInfo/reduction_alternating_base.ll
    polly/test/ScopInfo/reduction_chain_partially_outside_the_scop.ll
    polly/test/ScopInfo/reduction_disabled_multiplicative.ll
    polly/test/ScopInfo/reduction_escaping_intermediate.ll
    polly/test/ScopInfo/reduction_escaping_intermediate_2.ll
    polly/test/ScopInfo/reduction_invalid_different_operators.ll
    polly/test/ScopInfo/reduction_invalid_overlapping_accesses.ll
    polly/test/ScopInfo/reduction_multiple_loops_array_sum.ll
    polly/test/ScopInfo/reduction_multiple_loops_array_sum_1.ll
    polly/test/ScopInfo/reduction_multiple_simple_binary.ll
    polly/test/ScopInfo/reduction_non_overlapping_chains.ll
    polly/test/ScopInfo/reduction_only_reduction_like_access.ll
    polly/test/ScopInfo/reduction_simple_fp.ll
    polly/test/ScopInfo/reduction_simple_w_constant.ll
    polly/test/ScopInfo/reduction_simple_w_iv.ll
    polly/test/ScopInfo/reduction_two_identical_reads.ll
    polly/test/ScopInfo/redundant_parameter_constraint.ll
    polly/test/ScopInfo/region-with-instructions.ll
    polly/test/ScopInfo/remarks.ll
    polly/test/ScopInfo/required-invariant-loop-bounds.ll
    polly/test/ScopInfo/restriction_in_dead_block.ll
    polly/test/ScopInfo/run-time-check-many-array-disjuncts.ll
    polly/test/ScopInfo/run-time-check-many-parameters.ll
    polly/test/ScopInfo/run-time-check-many-piecewise-aliasing.ll
    polly/test/ScopInfo/run-time-check-read-only-arrays.ll
    polly/test/ScopInfo/same-base-address-scalar-and-array.ll
    polly/test/ScopInfo/scalar.ll
    polly/test/ScopInfo/scalar_dependence_cond_br.ll
    polly/test/ScopInfo/scalar_to_array.ll
    polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll
    polly/test/ScopInfo/scev-invalidated.ll
    polly/test/ScopInfo/schedule-const-post-dominator-walk-2.ll
    polly/test/ScopInfo/schedule-constuction-endless-loop1.ll
    polly/test/ScopInfo/schedule-constuction-endless-loop2.ll
    polly/test/ScopInfo/schedule-incorrectly-contructed-in-case-of-infinite-loop.ll
    polly/test/ScopInfo/scop-affine-parameter-ordering.ll
    polly/test/ScopInfo/sign_wrapped_set.ll
    polly/test/ScopInfo/simple_loop_1.ll
    polly/test/ScopInfo/simple_loop_2.ll
    polly/test/ScopInfo/simple_loop_unsigned.ll
    polly/test/ScopInfo/simple_loop_unsigned_2.ll
    polly/test/ScopInfo/simple_loop_unsigned_3.ll
    polly/test/ScopInfo/simple_nonaffine_loop_not.ll
    polly/test/ScopInfo/smax.ll
    polly/test/ScopInfo/statistics.ll
    polly/test/ScopInfo/stmt_split_exit_of_region_stmt.ll
    polly/test/ScopInfo/stmt_split_no_after_split.ll
    polly/test/ScopInfo/stmt_split_no_dependence.ll
    polly/test/ScopInfo/stmt_split_on_store.ll
    polly/test/ScopInfo/stmt_split_on_synthesizable.ll
    polly/test/ScopInfo/stmt_split_phi_in_beginning_bb.ll
    polly/test/ScopInfo/stmt_split_phi_in_stmt.ll
    polly/test/ScopInfo/stmt_split_scalar_dependence.ll
    polly/test/ScopInfo/stmt_split_within_loop.ll
    polly/test/ScopInfo/stmt_with_read_but_without_sideffect.ll
    polly/test/ScopInfo/switch-1.ll
    polly/test/ScopInfo/switch-2.ll
    polly/test/ScopInfo/switch-3.ll
    polly/test/ScopInfo/switch-4.ll
    polly/test/ScopInfo/switch-5.ll
    polly/test/ScopInfo/switch-6.ll
    polly/test/ScopInfo/switch-7.ll
    polly/test/ScopInfo/tempscop-printing.ll
    polly/test/ScopInfo/test-wrapping-in-condition.ll
    polly/test/ScopInfo/truncate-1.ll
    polly/test/ScopInfo/truncate-2.ll
    polly/test/ScopInfo/truncate-3.ll
    polly/test/ScopInfo/two-loops-one-infinite.ll
    polly/test/ScopInfo/two-loops-right-after-each-other.ll
    polly/test/ScopInfo/unnamed_nonaffine.ll
    polly/test/ScopInfo/unnamed_stmts.ll
    polly/test/ScopInfo/unprofitable_scalar-accs.ll
    polly/test/ScopInfo/unsigned-condition.ll
    polly/test/ScopInfo/unsigned-division-1.ll
    polly/test/ScopInfo/unsigned-division-2.ll
    polly/test/ScopInfo/unsigned-division-3.ll
    polly/test/ScopInfo/unsigned-division-4.ll
    polly/test/ScopInfo/unsigned-division-5.ll
    polly/test/ScopInfo/unsigned_wrap_uge.ll
    polly/test/ScopInfo/unsigned_wrap_ugt.ll
    polly/test/ScopInfo/unsigned_wrap_ule.ll
    polly/test/ScopInfo/unsigned_wrap_ult.ll
    polly/test/ScopInfo/user_context.ll
    polly/test/ScopInfo/user_provided_assumptions-in-bb-signed-conditional.ll
    polly/test/ScopInfo/user_provided_assumptions-in-bb-signed.ll
    polly/test/ScopInfo/user_provided_assumptions-in-bb-unsigned.ll
    polly/test/ScopInfo/user_provided_assumptions.ll
    polly/test/ScopInfo/user_provided_assumptions_2.ll
    polly/test/ScopInfo/user_provided_assumptions_3.ll
    polly/test/ScopInfo/user_provided_non_dominating_assumptions.ll
    polly/test/ScopInfo/variant_base_pointer.ll
    polly/test/ScopInfo/variant_load_empty_domain.ll
    polly/test/ScopInfo/wraping_signed_expr_0.ll
    polly/test/ScopInfo/wraping_signed_expr_1.ll
    polly/test/ScopInfo/wraping_signed_expr_2.ll
    polly/test/ScopInfo/wraping_signed_expr_3.ll
    polly/test/ScopInfo/wraping_signed_expr_4.ll
    polly/test/ScopInfo/wraping_signed_expr_5.ll
    polly/test/ScopInfo/wraping_signed_expr_6.ll
    polly/test/ScopInfo/wraping_signed_expr_7.ll
    polly/test/ScopInfo/wraping_signed_expr_slow_1.ll
    polly/test/ScopInfo/wraping_signed_expr_slow_2.ll
    polly/test/ScopInfo/zero_ext_of_truncate.ll
    polly/test/ScopInfo/zero_ext_of_truncate_2.ll
    polly/test/ScopInfo/zero_ext_space_mismatch.ll
    polly/test/ScopInliner/invariant-load-func.ll
    polly/test/ScopInliner/simple-inline-loop.ll
    polly/test/Simplify/coalesce_3partials.ll
    polly/test/Simplify/coalesce_disjointelements.ll
    polly/test/Simplify/coalesce_overlapping.ll
    polly/test/Simplify/coalesce_partial.ll
    polly/test/Simplify/dead_access_load.ll
    polly/test/Simplify/dead_access_phi.ll
    polly/test/Simplify/dead_access_value.ll
    polly/test/Simplify/dead_instruction.ll
    polly/test/Simplify/emptyaccessdomain.ll
    polly/test/Simplify/exit_phi_accesses-2.ll
    polly/test/Simplify/func-b320a7.ll
    polly/test/Simplify/gemm.ll
    polly/test/Simplify/nocoalesce_differentvalues.ll
    polly/test/Simplify/nocoalesce_elementmismatch.ll
    polly/test/Simplify/nocoalesce_readbetween.ll
    polly/test/Simplify/nocoalesce_writebetween.ll
    polly/test/Simplify/notdead_region_exitphi.ll
    polly/test/Simplify/notdead_region_innerphi.ll
    polly/test/Simplify/notredundant_region_loop.ll
    polly/test/Simplify/notredundant_region_middle.ll
    polly/test/Simplify/notredundant_synthesizable_unknownit.ll
    polly/test/Simplify/out-of-scop-use-in-region-entry-phi-node.ll
    polly/test/Simplify/overwritten.ll
    polly/test/Simplify/overwritten_3phi.ll
    polly/test/Simplify/overwritten_3store.ll
    polly/test/Simplify/overwritten_implicit_and_explicit.ll
    polly/test/Simplify/overwritten_loadbetween.ll
    polly/test/Simplify/overwritten_scalar.ll
    polly/test/Simplify/pass_existence.ll
    polly/test/Simplify/phi_in_regionstmt.ll
    polly/test/Simplify/pr33323.ll
    polly/test/Simplify/redundant.ll
    polly/test/Simplify/redundant_differentindex.ll
    polly/test/Simplify/redundant_partialwrite.ll
    polly/test/Simplify/redundant_region.ll
    polly/test/Simplify/redundant_region_scalar.ll
    polly/test/Simplify/redundant_scalarwrite.ll
    polly/test/Simplify/redundant_storebetween.ll
    polly/test/Simplify/scalability1.ll
    polly/test/Simplify/scalability2.ll
    polly/test/Simplify/sweep_mapped_phi.ll
    polly/test/Simplify/sweep_mapped_value.ll
    polly/test/Simplify/ununsed_read_in_region_entry.ll
    polly/test/Support/defaultpipelines.ll
    polly/test/Support/dumpfunction.ll
    polly/test/Support/dumpmodule.ll
    polly/test/Support/exportjson.ll
    polly/test/Support/isl-args.ll
    polly/test/Support/pipelineposition.ll

Removed: 
    


################################################################################
diff  --git a/polly/test/CodeGen/20100707_2.ll b/polly/test/CodeGen/20100707_2.ll
index adbfd2b773f4f..df784c6d7957c 100644
--- a/polly/test/CodeGen/20100707_2.ll
+++ b/polly/test/CodeGen/20100707_2.ll
@@ -1,8 +1,8 @@
 ; RUN: opt %loadPolly -polly-codegen < %s
 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"
 
- at win193 = external global [4 x [36 x double]], align 32 ; <[4 x [36 x double]]*> [#uses=3]
- at sb_sample = external global [2 x [2 x [18 x [32 x double]]]], align 32 ; <[2 x [2 x [18 x [32 x double]]]]*> [#uses=2]
+ at win193 = external global [4 x [36 x double]], align 32 ; <ptr> [#uses=3]
+ at sb_sample = external global [2 x [2 x [18 x [32 x double]]]], align 32 ; <ptr> [#uses=2]
 
 define void @mdct_sub48() nounwind {
 entry:
@@ -36,45 +36,45 @@ bb32:                                             ; preds = %bb27
   br label %bb37
 
 bb34:                                             ; preds = %bb35
-  %0 = getelementptr inbounds [36 x double], [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
-  %1 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* undef, i64 0, i64 0 ; <[32 x double]*> [#uses=1]
-  %2 = getelementptr inbounds [32 x double], [32 x double]* %1, i64 0, i64 0 ; <double*> [#uses=0]
-  %3 = getelementptr inbounds [36 x double], [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
+  %0 = getelementptr inbounds [36 x double], ptr undef, i64 0, i64 0 ; <ptr> [#uses=0]
+  %1 = getelementptr inbounds [18 x [32 x double]], ptr undef, i64 0, i64 0 ; <ptr> [#uses=1]
+  %2 = getelementptr inbounds [32 x double], ptr %1, i64 0, i64 0 ; <ptr> [#uses=0]
+  %3 = getelementptr inbounds [36 x double], ptr undef, i64 0, i64 0 ; <ptr> [#uses=0]
   %4 = sub nsw i32 17, %k.4                       ; <i32> [#uses=1]
-  %5 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
-  %6 = getelementptr inbounds [2 x [18 x [32 x double]]], [2 x [18 x [32 x double]]]* %5, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
+  %5 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], ptr @sb_sample, i64 0, i64 0 ; <ptr> [#uses=1]
+  %6 = getelementptr inbounds [2 x [18 x [32 x double]]], ptr %5, i64 0, i64 0 ; <ptr> [#uses=1]
   %7 = sext i32 %4 to i64                         ; <i64> [#uses=1]
-  %8 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* %6, i64 0, i64 %7 ; <[32 x double]*> [#uses=1]
-  %9 = getelementptr inbounds [32 x double], [32 x double]* %8, i64 0, i64 0 ; <double*> [#uses=1]
-  %10 = load double, double* %9, align 8                  ; <double> [#uses=0]
+  %8 = getelementptr inbounds [18 x [32 x double]], ptr %6, i64 0, i64 %7 ; <ptr> [#uses=1]
+  %9 = getelementptr inbounds [32 x double], ptr %8, i64 0, i64 0 ; <ptr> [#uses=1]
+  %10 = load double, ptr %9, align 8                  ; <double> [#uses=0]
   %11 = fsub double 0.000000e+00, undef           ; <double> [#uses=1]
-  %12 = getelementptr inbounds double, double* getelementptr inbounds ([4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 0 ; <double*> [#uses=1]
-  store double %11, double* %12, align 8
+  %12 = getelementptr inbounds double, ptr getelementptr inbounds ([4 x [36 x double]], ptr @win193, i64 0, i64 2, i64 4), i64 0 ; <ptr> [#uses=1]
+  store double %11, ptr %12, align 8
   %13 = add nsw i32 %k.4, 9                       ; <i32> [#uses=1]
   %14 = add nsw i32 %k.4, 18                      ; <i32> [#uses=1]
-  %15 = getelementptr inbounds [4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 0 ; <[36 x double]*> [#uses=1]
+  %15 = getelementptr inbounds [4 x [36 x double]], ptr @win193, i64 0, i64 0 ; <ptr> [#uses=1]
   %16 = sext i32 %14 to i64                       ; <i64> [#uses=1]
-  %17 = getelementptr inbounds [36 x double], [36 x double]* %15, i64 0, i64 %16 ; <double*> [#uses=1]
-  %18 = load double, double* %17, align 8                 ; <double> [#uses=0]
+  %17 = getelementptr inbounds [36 x double], ptr %15, i64 0, i64 %16 ; <ptr> [#uses=1]
+  %18 = load double, ptr %17, align 8                 ; <double> [#uses=0]
   %19 = sext i32 %k.4 to i64                      ; <i64> [#uses=1]
-  %20 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* undef, i64 0, i64 %19 ; <[32 x double]*> [#uses=1]
+  %20 = getelementptr inbounds [18 x [32 x double]], ptr undef, i64 0, i64 %19 ; <ptr> [#uses=1]
   %21 = sext i32 %band.2 to i64                   ; <i64> [#uses=1]
-  %22 = getelementptr inbounds [32 x double], [32 x double]* %20, i64 0, i64 %21 ; <double*> [#uses=1]
-  %23 = load double, double* %22, align 8                 ; <double> [#uses=0]
+  %22 = getelementptr inbounds [32 x double], ptr %20, i64 0, i64 %21 ; <ptr> [#uses=1]
+  %23 = load double, ptr %22, align 8                 ; <double> [#uses=0]
   %24 = sext i32 %39 to i64                       ; <i64> [#uses=1]
-  %25 = getelementptr inbounds [4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 %24 ; <[36 x double]*> [#uses=1]
-  %26 = getelementptr inbounds [36 x double], [36 x double]* %25, i64 0, i64 0 ; <double*> [#uses=1]
-  %27 = load double, double* %26, align 8                 ; <double> [#uses=0]
+  %25 = getelementptr inbounds [4 x [36 x double]], ptr @win193, i64 0, i64 %24 ; <ptr> [#uses=1]
+  %26 = getelementptr inbounds [36 x double], ptr %25, i64 0, i64 0 ; <ptr> [#uses=1]
+  %27 = load double, ptr %26, align 8                 ; <double> [#uses=0]
   %28 = sub nsw i32 17, %k.4                      ; <i32> [#uses=1]
-  %29 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
-  %30 = getelementptr inbounds [2 x [18 x [32 x double]]], [2 x [18 x [32 x double]]]* %29, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
+  %29 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], ptr @sb_sample, i64 0, i64 0 ; <ptr> [#uses=1]
+  %30 = getelementptr inbounds [2 x [18 x [32 x double]]], ptr %29, i64 0, i64 0 ; <ptr> [#uses=1]
   %31 = sext i32 %28 to i64                       ; <i64> [#uses=1]
-  %32 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* %30, i64 0, i64 %31 ; <[32 x double]*> [#uses=1]
-  %33 = getelementptr inbounds [32 x double], [32 x double]* %32, i64 0, i64 0 ; <double*> [#uses=1]
-  %34 = load double, double* %33, align 8                 ; <double> [#uses=0]
+  %32 = getelementptr inbounds [18 x [32 x double]], ptr %30, i64 0, i64 %31 ; <ptr> [#uses=1]
+  %33 = getelementptr inbounds [32 x double], ptr %32, i64 0, i64 0 ; <ptr> [#uses=1]
+  %34 = load double, ptr %33, align 8                 ; <double> [#uses=0]
   %35 = sext i32 %13 to i64                       ; <i64> [#uses=1]
-  %36 = getelementptr inbounds double, double* getelementptr inbounds ([4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 %35 ; <double*> [#uses=1]
-  store double 0.000000e+00, double* %36, align 8
+  %36 = getelementptr inbounds double, ptr getelementptr inbounds ([4 x [36 x double]], ptr @win193, i64 0, i64 2, i64 4), i64 %35 ; <ptr> [#uses=1]
+  store double 0.000000e+00, ptr %36, align 8
   %37 = sub nsw i32 %k.4, 1                       ; <i32> [#uses=1]
   br label %bb35
 
@@ -91,7 +91,7 @@ bb37:                                             ; preds = %bb32, %bb26
 
 bb48:                                             ; preds = %bb37, %bb9
   %band.2 = phi i32 [ %38, %bb37 ], [ 0, %bb9 ]   ; <i32> [#uses=2]
-  %39 = load i32, i32* null, align 8                   ; <i32> [#uses=1]
+  %39 = load i32, ptr null, align 8                   ; <i32> [#uses=1]
   br i1 undef, label %bb26, label %bb25
 
 bb50:                                             ; preds = %bb54

diff  --git a/polly/test/CodeGen/20100708_2.ll b/polly/test/CodeGen/20100708_2.ll
index 58ef5a4fe3ce5..2f4807d9e4d75 100644
--- a/polly/test/CodeGen/20100708_2.ll
+++ b/polly/test/CodeGen/20100708_2.ll
@@ -15,7 +15,7 @@ bb2:                                              ; preds = %bb3, %bb1
 
 bb3:                                              ; preds = %bb2
   %tmp = srem i32 %tmp3, 1024                     ; <i32> [#uses=0]
-  store double undef, double* undef
+  store double undef, ptr undef
   %indvar.next = add i64 %indvar, 1               ; <i64> [#uses=1]
   br label %bb2
 

diff  --git a/polly/test/CodeGen/20100713.ll b/polly/test/CodeGen/20100713.ll
index c322db1d4bd3c..edd352a4c4ccf 100644
--- a/polly/test/CodeGen/20100713.ll
+++ b/polly/test/CodeGen/20100713.ll
@@ -12,7 +12,7 @@ bb19:                                             ; preds = %bb18
   br label %bb21
 
 bb20:                                             ; preds = %bb21
-  %1 = load float, float* undef, align 4                 ; <float> [#uses=0]
+  %1 = load float, ptr undef, align 4                 ; <float> [#uses=0]
   %2 = fpext float undef to double                ; <double> [#uses=1]
   %3 = fdiv double %2, %a ; <double> [#uses=0]
   %indvar.next = add i64 %indvar, 1               ; <i64> [#uses=1]

diff  --git a/polly/test/CodeGen/20100713_2.ll b/polly/test/CodeGen/20100713_2.ll
index 62cbc67623ed3..92f8959d91d69 100644
--- a/polly/test/CodeGen/20100713_2.ll
+++ b/polly/test/CodeGen/20100713_2.ll
@@ -25,7 +25,7 @@ bb5:                                              ; preds = %bb4
   unreachable
 
 bb6:                                              ; preds = %bb4
-  %1 = getelementptr inbounds i8, i8* undef, i64 %0   ; <i8*> [#uses=0]
+  %1 = getelementptr inbounds i8, ptr undef, i64 %0   ; <ptr> [#uses=0]
   ret void
 
 return:                                           ; preds = %bb, %entry

diff  --git a/polly/test/CodeGen/20100717.ll b/polly/test/CodeGen/20100717.ll
index 36ca35ed32093..a400eeaa33704 100644
--- a/polly/test/CodeGen/20100717.ll
+++ b/polly/test/CodeGen/20100717.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly  -polly-codegen -disable-output < %s
 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"
 
-define void @matrixTranspose(double** %A) nounwind {
+define void @matrixTranspose(ptr %A) nounwind {
 entry:
   br label %bb4
 
@@ -10,12 +10,12 @@ bb:                                               ; preds = %bb4
   br label %bb2
 
 bb1:                                              ; preds = %bb2
-  %1 = getelementptr inbounds double*, double** %A, i64 0  ; <double**> [#uses=0]
-  %2 = getelementptr inbounds double*, double** %A, i64 0  ; <double**> [#uses=0]
-  %3 = getelementptr inbounds double*, double** %A, i64 0  ; <double**> [#uses=0]
+  %1 = getelementptr inbounds ptr, ptr %A, i64 0  ; <ptr> [#uses=0]
+  %2 = getelementptr inbounds ptr, ptr %A, i64 0  ; <ptr> [#uses=0]
+  %3 = getelementptr inbounds ptr, ptr %A, i64 0  ; <ptr> [#uses=0]
   %4 = sext i32 %j.0 to i64                       ; <i64> [#uses=1]
-  %5 = getelementptr inbounds double*, double** %A, i64 %4 ; <double**> [#uses=1]
-  %6 = load double*, double** %5, align 8                  ; <double*> [#uses=0]
+  %5 = getelementptr inbounds ptr, ptr %A, i64 %4 ; <ptr> [#uses=1]
+  %6 = load ptr, ptr %5, align 8                  ; <ptr> [#uses=0]
   %7 = add nsw i32 %j.0, 1                        ; <i32> [#uses=1]
   br label %bb2
 

diff  --git a/polly/test/CodeGen/20100720-MultipleConditions.ll b/polly/test/CodeGen/20100720-MultipleConditions.ll
index eeb54f67de943..9f2268713853c 100644
--- a/polly/test/CodeGen/20100720-MultipleConditions.ll
+++ b/polly/test/CodeGen/20100720-MultipleConditions.ll
@@ -26,8 +26,8 @@
 
 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"
 
- at A = common global [100 x i32] zeroinitializer, align 16 ; <[100 x i32]*> [#uses=2]
- at k = common global i32 0, align 4                 ; <i32*> [#uses=0]
+ at A = common global [100 x i32] zeroinitializer, align 16 ; <ptr> [#uses=2]
+ at k = common global i32 0, align 4                 ; <ptr> [#uses=0]
 
 define i32 @main() nounwind {
 ; <label>:0
@@ -36,7 +36,7 @@ define i32 @main() nounwind {
 
 ; <label>:1                                       ; preds = %12, %0
   %indvar = phi i64 [ %indvar.next, %12 ], [ 0, %0 ] ; <i64> [#uses=4]
-  %scevgep = getelementptr [100 x i32], [100 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=3]
+  %scevgep = getelementptr [100 x i32], ptr @A, i64 0, i64 %indvar ; <ptr> [#uses=3]
   %i.0 = trunc i64 %indvar to i32                 ; <i32> [#uses=3]
   %exitcond = icmp ne i64 %indvar, 100            ; <i1> [#uses=1]
   br i1 %exitcond, label %2, label %13
@@ -46,7 +46,7 @@ define i32 @main() nounwind {
   br i1 %3, label %4, label %5
 
 ; <label>:4                                       ; preds = %2
-  store i32 8, i32* %scevgep
+  store i32 8, ptr %scevgep
   br label %5
 
 ; <label>:5                                       ; preds = %4, %2
@@ -54,7 +54,7 @@ define i32 @main() nounwind {
   br i1 %6, label %7, label %8
 
 ; <label>:7                                       ; preds = %5
-  store i32 9, i32* %scevgep
+  store i32 9, ptr %scevgep
   br label %8
 
 ; <label>:8                                       ; preds = %7, %5
@@ -62,7 +62,7 @@ define i32 @main() nounwind {
   br i1 %9, label %10, label %11
 
 ; <label>:10                                      ; preds = %8
-  store i32 10, i32* %scevgep
+  store i32 10, ptr %scevgep
   br label %11
 
 ; <label>:11                                      ; preds = %10, %8
@@ -75,8 +75,8 @@ define i32 @main() nounwind {
 ; <label>:13                                      ; preds = %1
   fence seq_cst
   %14 = sext i32 undef to i64                     ; <i64> [#uses=1]
-  %15 = getelementptr inbounds i32, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0), i64 %14 ; <i32*> [#uses=1]
-  %16 = load i32, i32* %15                             ; <i32> [#uses=1]
+  %15 = getelementptr inbounds i32, ptr @A, i64 %14 ; <ptr> [#uses=1]
+  %16 = load i32, ptr %15                             ; <i32> [#uses=1]
   ret i32 %16
 }
 

diff  --git a/polly/test/CodeGen/20100809-IndependentBlock.ll b/polly/test/CodeGen/20100809-IndependentBlock.ll
index 4d143e12c30e9..8d596689d8ae2 100644
--- a/polly/test/CodeGen/20100809-IndependentBlock.ll
+++ b/polly/test/CodeGen/20100809-IndependentBlock.ll
@@ -1,28 +1,28 @@
 ; RUN: opt %loadPolly -polly-codegen -disable-output < %s
 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"
-define void @cfft2([2 x float]* %x) nounwind {
+define void @cfft2(ptr %x) nounwind {
 entry:
-  %d.1.reg2mem = alloca [2 x float]*              ; <[2 x float]**> [#uses=3]
+  %d.1.reg2mem = alloca ptr              ; <ptr> [#uses=3]
   br i1 undef, label %bb2, label %bb34
 
 bb2:                                              ; preds = %bb34, %entry
   ret void
 
 bb20:                                             ; preds = %bb34
-  store [2 x float]* undef, [2 x float]** %d.1.reg2mem
+  store ptr undef, ptr %d.1.reg2mem
   br i1 false, label %bb21, label %bb23
 
 bb21:                                             ; preds = %bb20
-  %0 = getelementptr inbounds [2 x float], [2 x float]* %x, i64 undef ; <[2 x float]*> [#uses=1]
-  store [2 x float]* %0, [2 x float]** %d.1.reg2mem
+  %0 = getelementptr inbounds [2 x float], ptr %x, i64 undef ; <ptr> [#uses=1]
+  store ptr %0, ptr %d.1.reg2mem
   br label %bb23
 
 bb23:                                             ; preds = %bb21, %bb20
-  %d.1.reload = load [2 x float]*, [2 x float]** %d.1.reg2mem   ; <[2 x float]*> [#uses=1]
+  %d.1.reload = load ptr, ptr %d.1.reg2mem   ; <ptr> [#uses=1]
   br i1 undef, label %bb29, label %bb34
 
 bb29:                                             ; preds = %bb23
-  %1 = getelementptr inbounds [2 x float], [2 x float]* %d.1.reload, i64 undef ; <[2 x float]*> [#uses=0]
+  %1 = getelementptr inbounds [2 x float], ptr %d.1.reload, i64 undef ; <ptr> [#uses=0]
   br label %bb34
 
 bb34:                                             ; preds = %bb29, %bb23, %entry

diff  --git a/polly/test/CodeGen/20101030-Overflow.ll b/polly/test/CodeGen/20101030-Overflow.ll
index 6ea83e31a9c8a..caaa4851f93e4 100644
--- a/polly/test/CodeGen/20101030-Overflow.ll
+++ b/polly/test/CodeGen/20101030-Overflow.ll
@@ -4,7 +4,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 define void @compdecomp() nounwind {
 entry:
   %max = alloca i64
-  %i = load i64, i64* undef
+  %i = load i64, ptr undef
   br label %bb37
 
 bb37:                                             ; preds = %bb36, %bb28
@@ -12,7 +12,7 @@ bb37:                                             ; preds = %bb36, %bb28
   br i1 %tmp, label %bb38, label %bb39
 
 bb38:                                             ; preds = %bb37
-  store i64 %i, i64* %max
+  store i64 %i, ptr %max
   br label %bb39
 
 bb39:                                             ; preds = %bb38, %bb37

diff  --git a/polly/test/CodeGen/20101103-Overflow3.ll b/polly/test/CodeGen/20101103-Overflow3.ll
index e81d7720e6fd9..b2faf14fba0b1 100644
--- a/polly/test/CodeGen/20101103-Overflow3.ll
+++ b/polly/test/CodeGen/20101103-Overflow3.ll
@@ -1,15 +1,14 @@
 ; RUN: opt %loadPolly -polly-codegen < %s
 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"
-define void @Reflection_coefficients(i16* %r) nounwind {
+define void @Reflection_coefficients(ptr %r) nounwind {
 bb20:
-  %indvar3.lcssa20.reload = load i64, i64* undef
+  %indvar3.lcssa20.reload = load i64, ptr undef
   %tmp = mul i64 %indvar3.lcssa20.reload, -1
   %tmp5 = add i64 %tmp, 8
   br label %bb22
 
 bb21:                                             ; preds = %bb22
-  %r_addr.1.moved.to.bb21 = getelementptr i16, i16* %r, i64 0
-  store i16 0, i16* %r_addr.1.moved.to.bb21, align 2
+  store i16 0, ptr %r, align 2
   %indvar.next = add i64 %indvar, 1
   br label %bb22
 

diff  --git a/polly/test/CodeGen/20101103-signmissmatch.ll b/polly/test/CodeGen/20101103-signmissmatch.ll
index 4f32a6b0e3081..e157d292dc8a3 100644
--- a/polly/test/CodeGen/20101103-signmissmatch.ll
+++ b/polly/test/CodeGen/20101103-signmissmatch.ll
@@ -10,7 +10,7 @@ bb7:                                              ; preds = %bb7, %entry
   br i1 undef, label %bb7, label %bb8
 
 bb8:                                              ; preds = %bb7
-  %indvar5.lcssa.reload = load i64, i64* undef
+  %indvar5.lcssa.reload = load i64, ptr undef
   %tmp17 = mul i64 %indvar5.lcssa.reload, -1
   %tmp18 = add i64 0, %tmp17
   br label %bb18
@@ -20,7 +20,7 @@ bb13:                                             ; preds = %bb18
   br i1 %0, label %bb14, label %bb17
 
 bb14:                                             ; preds = %bb13
-  store i64 %i.1, i64* %firstVia.0.reg2mem
+  store i64 %i.1, ptr %firstVia.0.reg2mem
   br label %bb17
 
 bb17:                                             ; preds = %bb14, %bb13

diff  --git a/polly/test/CodeGen/20120316-InvalidCast.ll b/polly/test/CodeGen/20120316-InvalidCast.ll
index 165b9102f04f6..8355cc51c4687 100644
--- a/polly/test/CodeGen/20120316-InvalidCast.ll
+++ b/polly/test/CodeGen/20120316-InvalidCast.ll
@@ -4,16 +4,16 @@
 
 target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-a0:0-n32"
 
-define void @fixup_gotos(i32* %A, i32* %data) nounwind {
+define void @fixup_gotos(ptr %A, ptr %data) nounwind {
 entry:
   br label %if
 
 if:
-  %cond = icmp eq i32* %A, null
+  %cond = icmp eq ptr %A, null
   br i1 %cond, label %last, label %then
 
 then:
-  store i32 1, i32* %data, align 4
+  store i32 1, ptr %data, align 4
   br label %last
 
 last:

diff  --git a/polly/test/CodeGen/20120403-RHS-type-mismatch.ll b/polly/test/CodeGen/20120403-RHS-type-mismatch.ll
index f612d44ea7b3c..1d629e3884520 100644
--- a/polly/test/CodeGen/20120403-RHS-type-mismatch.ll
+++ b/polly/test/CodeGen/20120403-RHS-type-mismatch.ll
@@ -18,7 +18,7 @@ for.body:                                         ; preds = %for.body, %entry
 for.body7:                                        ; preds = %for.body7, %for.cond5.preheader
   %i.128 = phi i64 [ 0, %for.cond5.preheader ], [ %inc07, %for.body7 ]
   %inc07 = add nsw i64 %i.128, 1
-  store i64 undef, i64* %hi.129.reg2mem
+  store i64 undef, ptr %hi.129.reg2mem
   br i1 false, label %for.body7, label %for.end18
 
 for.end18:                                        ; preds = %for.body7

diff  --git a/polly/test/CodeGen/20130211-getNumberOfIterations.ll b/polly/test/CodeGen/20130211-getNumberOfIterations.ll
index fda164b86de34..cef0dd559e957 100644
--- a/polly/test/CodeGen/20130211-getNumberOfIterations.ll
+++ b/polly/test/CodeGen/20130211-getNumberOfIterations.ll
@@ -16,8 +16,8 @@ for.cond:                                         ; preds = %for.body, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds [2048 x i64], [2048 x i64]* @b, i64 0, i64 %indvar
-  store i64 1, i64* %arrayidx
+  %arrayidx = getelementptr inbounds [2048 x i64], ptr @b, i64 0, i64 %indvar
+  store i64 1, ptr %arrayidx
   %inc = add nsw i64 %indvar, 1
   br label %for.cond
 

diff  --git a/polly/test/CodeGen/20130221.ll b/polly/test/CodeGen/20130221.ll
index 1714048d529d2..45414671081a4 100644
--- a/polly/test/CodeGen/20130221.ll
+++ b/polly/test/CodeGen/20130221.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-codegen -S < %s
 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"
 
-define void @list_sequence(i32* %A) {
+define void @list_sequence(ptr %A) {
 entry:
   br label %for.body
 
@@ -12,7 +12,7 @@ for.body:
   br i1 %cmp5, label %for.body, label %for.next
 
 for.next:
-  store i32 %i.inc, i32* %A
+  store i32 %i.inc, ptr %A
   br label %for.end
 
 for.end:

diff  --git a/polly/test/CodeGen/20150328-SCEVExpanderIntroducesNewIV.ll b/polly/test/CodeGen/20150328-SCEVExpanderIntroducesNewIV.ll
index 57eba11204ad1..d54be5c3f35f7 100644
--- a/polly/test/CodeGen/20150328-SCEVExpanderIntroducesNewIV.ll
+++ b/polly/test/CodeGen/20150328-SCEVExpanderIntroducesNewIV.ll
@@ -28,8 +28,8 @@ unreachableA:
 
 for.body121:
   %indvar = phi i32 [ 0, %switchbb ], [ %indvar.next, %for.body121 ]
-  %ptr = getelementptr [1536 x float], [1536 x float]* @A, i64 0, i32 %indvar
-  store float undef, float* %ptr
+  %ptr = getelementptr [1536 x float], ptr @A, i64 0, i32 %indvar
+  store float undef, ptr %ptr
   %indvar.next = add nsw i32 %indvar, 1
   br i1 false, label %for.body121, label %while.cond.loopexit3
 

diff  --git a/polly/test/CodeGen/LoopParallelMD/do_not_mutate_debug_info.ll b/polly/test/CodeGen/LoopParallelMD/do_not_mutate_debug_info.ll
index 893b12bd16bb8..b04319550938a 100644
--- a/polly/test/CodeGen/LoopParallelMD/do_not_mutate_debug_info.ll
+++ b/polly/test/CodeGen/LoopParallelMD/do_not_mutate_debug_info.ll
@@ -4,21 +4,21 @@
 ; CHECK-NOT: !7 = !{!7}
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
- at A = common global i32* null, align 8
+ at A = common global ptr null, align 8
 
 ; Function Attrs: nounwind uwtable
 define void @foo() !dbg !4 {
 entry:
   tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !9, metadata !19), !dbg !20
-  %0 = load i32*, i32** @A, align 8, !dbg !21, !tbaa !23
+  %0 = load ptr, ptr @A, align 8, !dbg !21, !tbaa !23
   br label %for.body, !dbg !27
 
 for.body:                                         ; preds = %for.body, %entry
   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %0, i64 %indvars.iv, !dbg !21
-  %1 = load i32, i32* %arrayidx, align 4, !dbg !21, !tbaa !30
+  %arrayidx = getelementptr inbounds i32, ptr %0, i64 %indvars.iv, !dbg !21
+  %1 = load i32, ptr %arrayidx, align 4, !dbg !21, !tbaa !30
   %add = add nsw i32 %1, 1, !dbg !21
-  store i32 %add, i32* %arrayidx, align 4, !dbg !21, !tbaa !30
+  store i32 %add, ptr %arrayidx, align 4, !dbg !21, !tbaa !30
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1, !dbg !27
   %exitcond = icmp eq i64 %indvars.iv, 1, !dbg !27
   br i1 %exitcond, label %for.end, label %for.body, !dbg !27

diff  --git a/polly/test/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll b/polly/test/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll
index 617aaa7555357..7b131c5ebcbd1 100644
--- a/polly/test/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll
+++ b/polly/test/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll
@@ -8,7 +8,7 @@
 ; CHECK-DAG:  %polly.loop_cond[[CInner:[0-9]*]] = icmp sle i64 %polly.indvar_next{{[0-9]*}}, 511
 ; CHECK-DAG:  br i1 %polly.loop_cond[[CInner]], label %polly.loop_header{{[0-9]*}}, label %polly.loop_exit{{[0-9]*}}, !llvm.loop ![[IDInner:[0-9]*]]
 ;
-; CHECK-DAG: store i32 %{{[a-z_0-9]*}}, i32* %{{[a-z_0-9]*}}, {{[ ._!,a-zA-Z0-9]*}}, !llvm.access.group ![[GROUPLST6:[0-9]+]]
+; CHECK-DAG: store i32 %{{[a-z_0-9]*}}, ptr %{{[a-z_0-9]*}}, {{[ ._!,a-zA-Z0-9]*}}, !llvm.access.group ![[GROUPLST6:[0-9]+]]
 ;
 ; CHECK-DAG: ![[IDOuter]] = distinct !{![[IDOuter]], ![[ACCGROUP1:[0-9]+]]}
 ; CHECK-DAG: ![[ACCGROUP1]] = !{!"llvm.loop.parallel_accesses", ![[GROUP2:[0-9]+]]}
@@ -28,7 +28,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A) {
+define void @jd(ptr %A) {
 entry:
   br label %for.cond
 
@@ -49,9 +49,9 @@ for.body3:                                        ; preds = %for.cond1
   %tmp = add nsw i64 %indvars.iv3, %indvars.iv
   %tmp7 = shl nsw i64 %indvars.iv3, 9
   %tmp8 = add nsw i64 %tmp7, %indvars.iv
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %tmp8
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %tmp8
   %tmp9 = trunc i64 %tmp to i32
-  store i32 %tmp9, i32* %arrayidx, align 4
+  store i32 %tmp9, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/CodeGen/MemAccess/bad_alignment.ll b/polly/test/CodeGen/MemAccess/bad_alignment.ll
index ab519aa333f6f..32f3cfe963b73 100644
--- a/polly/test/CodeGen/MemAccess/bad_alignment.ll
+++ b/polly/test/CodeGen/MemAccess/bad_alignment.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @bad_alignment(i32* %A) {
+define void @bad_alignment(ptr %A) {
 entry:
   br label %for.cond
 
@@ -22,9 +22,9 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
   %tmp = trunc i64 %indvars.iv to i32
-  store i32 %tmp, i32* %arrayidx, align 8
+  store i32 %tmp, ptr %arrayidx, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/MemAccess/default_aligned_new_access_function.ll b/polly/test/CodeGen/MemAccess/default_aligned_new_access_function.ll
index 873c3d547d9b5..7d8083cc55846 100644
--- a/polly/test/CodeGen/MemAccess/default_aligned_new_access_function.ll
+++ b/polly/test/CodeGen/MemAccess/default_aligned_new_access_function.ll
@@ -14,7 +14,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @simple_stride(i32* noalias %A, i32* noalias %B) {
+define void @simple_stride(ptr noalias %A, ptr noalias %B) {
 entry:
   br label %for.cond
 
@@ -25,11 +25,11 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %tmp = shl nsw i64 %indvars.iv, 1
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %tmp
-  %tmp4 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %tmp
+  %tmp4 = load i32, ptr %arrayidx, align 4
   %tmp5 = shl nsw i64 %indvars.iv, 1
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %tmp5
-  store i32 %tmp4, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %tmp5
+  store i32 %tmp4, ptr %arrayidx3, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/MemAccess/simple.ll b/polly/test/CodeGen/MemAccess/simple.ll
index 0b01310728e39..39e8a2c91b790 100644
--- a/polly/test/CodeGen/MemAccess/simple.ll
+++ b/polly/test/CodeGen/MemAccess/simple.ll
@@ -30,12 +30,12 @@ entry:
 
 for.cond:                                         ; preds = %for.inc, %entry
   %0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
-  %arrayidx = getelementptr [100 x i32], [100 x i32]* @A, i32 0, i32 %0
+  %arrayidx = getelementptr [100 x i32], ptr @A, i32 0, i32 %0
   %exitcond1 = icmp ne i32 %0, 12
   br i1 %exitcond1, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 %0, i32* %arrayidx
+  store i32 %0, ptr %arrayidx
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -47,12 +47,12 @@ for.end:                                          ; preds = %for.cond
 
 for.cond4:                                        ; preds = %for.inc11, %for.end
   %1 = phi i32 [ 0, %for.end ], [ %inc13, %for.inc11 ]
-  %arrayidx10 = getelementptr [100 x i32], [100 x i32]* @B, i32 0, i32 %1
+  %arrayidx10 = getelementptr [100 x i32], ptr @B, i32 0, i32 %1
   %exitcond = icmp ne i32 %1, 12
   br i1 %exitcond, label %for.body7, label %for.end14
 
 for.body7:                                        ; preds = %for.cond4
-  store i32 %1, i32* %arrayidx10
+  store i32 %1, ptr %arrayidx10
   br label %for.inc11
 
 for.inc11:                                        ; preds = %for.body7

diff  --git a/polly/test/CodeGen/MemAccess/simple_analyze.ll b/polly/test/CodeGen/MemAccess/simple_analyze.ll
index bdea9a53a60f3..00c90822d6565 100644
--- a/polly/test/CodeGen/MemAccess/simple_analyze.ll
+++ b/polly/test/CodeGen/MemAccess/simple_analyze.ll
@@ -11,12 +11,12 @@ entry:
 
 for.cond:                                         ; preds = %for.inc, %entry
   %0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
-  %arrayidx = getelementptr [100 x i32], [100 x i32]* @A, i32 0, i32 %0
+  %arrayidx = getelementptr [100 x i32], ptr @A, i32 0, i32 %0
   %exitcond1 = icmp ne i32 %0, 12
   br i1 %exitcond1, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 %0, i32* %arrayidx
+  store i32 %0, ptr %arrayidx
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -29,12 +29,12 @@ for.end:                                          ; preds = %for.cond
 
 for.cond4:                                        ; preds = %for.inc11, %for.end
   %1 = phi i32 [ 0, %for.end ], [ %inc13, %for.inc11 ]
-  %arrayidx10 = getelementptr [100 x i32], [100 x i32]* @B, i32 0, i32 %1
+  %arrayidx10 = getelementptr [100 x i32], ptr @B, i32 0, i32 %1
   %exitcond = icmp ne i32 %1, 12
   br i1 %exitcond, label %for.body7, label %for.end14
 
 for.body7:                                        ; preds = %for.cond4
-  store i32 %1, i32* %arrayidx10
+  store i32 %1, ptr %arrayidx10
   br label %for.inc11
 
 for.inc11:                                        ; preds = %for.body7
@@ -49,28 +49,28 @@ for.end14:                                        ; preds = %for.cond4
 
 ; Verify that the new access function (see above) is actually used during vector code generation.
 
-; JSCOPVEC:  store i32 0, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 1, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 2, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 3, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 4, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 5, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 6, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 7, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 8, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 9, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 10, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
-; JSCOPVEC:  store i32 11, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @B, i32 0, i32 0)
+; JSCOPVEC:  store i32 0, ptr @B
+; JSCOPVEC:  store i32 1, ptr @B
+; JSCOPVEC:  store i32 2, ptr @B
+; JSCOPVEC:  store i32 3, ptr @B
+; JSCOPVEC:  store i32 4, ptr @B
+; JSCOPVEC:  store i32 5, ptr @B
+; JSCOPVEC:  store i32 6, ptr @B
+; JSCOPVEC:  store i32 7, ptr @B
+; JSCOPVEC:  store i32 8, ptr @B
+; JSCOPVEC:  store i32 9, ptr @B
+; JSCOPVEC:  store i32 10, ptr @B
+; JSCOPVEC:  store i32 11, ptr @B
 
-; JSCOPVEC:  store i32 0, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 1, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 2, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 3, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 4, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 5, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 6, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 7, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 8, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 9, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 10, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
-; JSCOPVEC:  store i32 11, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @A, i32 0, i32 0)
+; JSCOPVEC:  store i32 0, ptr @A
+; JSCOPVEC:  store i32 1, ptr @A
+; JSCOPVEC:  store i32 2, ptr @A
+; JSCOPVEC:  store i32 3, ptr @A
+; JSCOPVEC:  store i32 4, ptr @A
+; JSCOPVEC:  store i32 5, ptr @A
+; JSCOPVEC:  store i32 6, ptr @A
+; JSCOPVEC:  store i32 7, ptr @A
+; JSCOPVEC:  store i32 8, ptr @A
+; JSCOPVEC:  store i32 9, ptr @A
+; JSCOPVEC:  store i32 10, ptr @A
+; JSCOPVEC:  store i32 11, ptr @A

diff  --git a/polly/test/CodeGen/MemAccess/update_access_functions.ll b/polly/test/CodeGen/MemAccess/update_access_functions.ll
index 969b8e2d6896d..05d208708a361 100644
--- a/polly/test/CodeGen/MemAccess/update_access_functions.ll
+++ b/polly/test/CodeGen/MemAccess/update_access_functions.ll
@@ -5,46 +5,46 @@
 ; CHECK-LABEL: polly.stmt.loop1:
 ; CHECK-NEXT:   %3 = mul nsw i64 5, %polly.indvar{{[0-9]*}}
 ; CHECK-NEXT:   %4 = sub nsw i64 %3, 10
-; CHECK-NEXT:   %polly.access.A = getelementptr double, double* %A, i64 %4
-; CHECK-NEXT:   store double 4.200000e+01, double* %polly.access.A, align 8
+; CHECK-NEXT:   %polly.access.A = getelementptr double, ptr %A, i64 %4
+; CHECK-NEXT:   store double 4.200000e+01, ptr %polly.access.A, align 8
 
 ; CHECK-LABEL: polly.stmt.loop2:
-; CHECK-NEXT:   %polly.access.A[[Num0:[0-9]*]] = getelementptr double, double* %A, i64 42
-; CHECK-NEXT:   %val_p_scalar_ = load double, double* %polly.access.A[[Num0]], align 8
+; CHECK-NEXT:   %polly.access.A[[Num0:[0-9]*]] = getelementptr double, ptr %A, i64 42
+; CHECK-NEXT:   %val_p_scalar_ = load double, ptr %polly.access.A[[Num0]], align 8
 
 ; CHECK-LABEL: polly.stmt.loop3:
-; CHECK-NEXT:   %val.s2a.reload = load double, double* %val.s2a
+; CHECK-NEXT:   %val.s2a.reload = load double, ptr %val.s2a
 ; CHECK-NEXT:   [[REG0:%.*]] = mul nsw i64 13, %polly.indvar{{[0-9]*}}
 ; CHECK-NEXT:   [[REG1:%.*]] = add nsw i64 [[REG0]], 5
-; CHECK-NEXT:   %polly.access.A[[Num1:[0-9]*]] = getelementptr double, double* %A, i64 [[REG1]]
-; CHECK-NEXT:   store double %val.s2a.reload, double* %polly.access.A[[Num1]], align 8,
+; CHECK-NEXT:   %polly.access.A[[Num1:[0-9]*]] = getelementptr double, ptr %A, i64 [[REG1]]
+; CHECK-NEXT:   store double %val.s2a.reload, ptr %polly.access.A[[Num1]], align 8,
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @update_access_functions(i64 %arg, double* %A) {
+define void @update_access_functions(i64 %arg, ptr %A) {
 bb3:
   br label %loop1
 
 loop1:
   %indvar = phi i64 [ %indvar.next, %loop1 ], [ 1, %bb3 ]
-  %ptr1 = getelementptr inbounds double, double* %A, i64 %indvar
-  store double 42.0, double* %ptr1, align 8
+  %ptr1 = getelementptr inbounds double, ptr %A, i64 %indvar
+  store double 42.0, ptr %ptr1, align 8
   %indvar.next = add nuw nsw i64 %indvar, 1
   %cmp = icmp ne i64 %indvar.next, %arg
   br i1 %cmp, label %loop1, label %loop2
 
 loop2:
   %indvar.2 = phi i64 [ %indvar.2.next, %loop2 ], [ 1, %loop1 ]
-  %ptr2 = getelementptr inbounds double, double* %A, i64 %indvar.2
-  %val = load double, double* %ptr2, align 8
+  %ptr2 = getelementptr inbounds double, ptr %A, i64 %indvar.2
+  %val = load double, ptr %ptr2, align 8
   %indvar.2.next = add nuw nsw i64 %indvar.2, 1
   %cmp.2 = icmp ne i64 %indvar.2.next, %arg
   br i1 %cmp.2, label %loop2, label %loop3
 
 loop3:
   %indvar.3 = phi i64 [ %indvar.3.next, %loop3 ], [ 1, %loop2 ]
-  %ptr3 = getelementptr inbounds double, double* %A, i64 %indvar.3
-  store double %val, double* %ptr3, align 8
+  %ptr3 = getelementptr inbounds double, ptr %A, i64 %indvar.3
+  store double %val, ptr %ptr3, align 8
   %indvar.3.next = add nuw nsw i64 %indvar.3, 1
   %cmp.3 = icmp ne i64 %indvar.3.next, %arg
   br i1 %cmp.3, label %loop3, label %exit

diff  --git a/polly/test/CodeGen/OpenMP/floord-as-argument-to-subfunction.ll b/polly/test/CodeGen/OpenMP/floord-as-argument-to-subfunction.ll
index 01497566f798c..eb9dfcd9e920f 100644
--- a/polly/test/CodeGen/OpenMP/floord-as-argument-to-subfunction.ll
+++ b/polly/test/CodeGen/OpenMP/floord-as-argument-to-subfunction.ll
@@ -8,49 +8,46 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @III_hybrid([32 x double]* %tsOut) #0 {
+define void @III_hybrid(ptr %tsOut) #0 {
 entry:
-  %0 = getelementptr inbounds [32 x double], [32 x double]* %tsOut, i64 0, i64 0
   br label %if.end
 
 if.end:                                           ; preds = %entry
   br i1 undef, label %for.body42, label %for.cond66.preheader
 
 for.cond39.for.cond66.preheader.loopexit67_crit_edge: ; preds = %for.body42
-  %add.ptr62.lcssa = phi double* [ undef, %for.body42 ]
+  %add.ptr62.lcssa = phi ptr [ undef, %for.body42 ]
   br label %for.cond66.preheader
 
 for.cond66.preheader:                             ; preds = %for.cond39.for.cond66.preheader.loopexit67_crit_edge, %if.end
-  %rawout1.3.ph = phi double* [ %add.ptr62.lcssa, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ undef, %if.end ]
+  %rawout1.3.ph = phi ptr [ %add.ptr62.lcssa, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ undef, %if.end ]
   %sb.3.ph = phi i32 [ 0, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ 0, %if.end ]
-  %tspnt.3.ph = phi double* [ undef, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ %0, %if.end ]
+  %tspnt.3.ph = phi ptr [ undef, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ %tsOut, %if.end ]
   br label %for.cond69.preheader
 
 for.body42:                                       ; preds = %if.end
   br label %for.cond39.for.cond66.preheader.loopexit67_crit_edge
 
 for.cond69.preheader:                             ; preds = %for.end76, %for.cond66.preheader
-  %tspnt.375 = phi double* [ %incdec.ptr79, %for.end76 ], [ %tspnt.3.ph, %for.cond66.preheader ]
+  %tspnt.375 = phi ptr [ %incdec.ptr79, %for.end76 ], [ %tspnt.3.ph, %for.cond66.preheader ]
   %sb.374 = phi i32 [ %inc78, %for.end76 ], [ %sb.3.ph, %for.cond66.preheader ]
-  %rawout1.373 = phi double* [ undef, %for.end76 ], [ %rawout1.3.ph, %for.cond66.preheader ]
+  %rawout1.373 = phi ptr [ undef, %for.end76 ], [ %rawout1.3.ph, %for.cond66.preheader ]
   br label %for.body71
 
 for.body71:                                       ; preds = %for.body71, %for.cond69.preheader
   %indvars.iv = phi i64 [ 0, %for.cond69.preheader ], [ %indvars.iv.next, %for.body71 ]
-  %rawout1.469 = phi double* [ %rawout1.373, %for.cond69.preheader ], [ undef, %for.body71 ]
-  %1 = bitcast double* %rawout1.469 to i64*
-  %2 = load i64, i64* %1, align 8
-  %3 = shl nsw i64 %indvars.iv, 5
-  %arrayidx73 = getelementptr inbounds double, double* %tspnt.375, i64 %3
-  %4 = bitcast double* %arrayidx73 to i64*
-  store i64 %2, i64* %4, align 8
+  %rawout1.469 = phi ptr [ %rawout1.373, %for.cond69.preheader ], [ undef, %for.body71 ]
+  %0 = load i64, ptr %rawout1.469, align 8
+  %1 = shl nsw i64 %indvars.iv, 5
+  %arrayidx73 = getelementptr inbounds double, ptr %tspnt.375, i64 %1
+  store i64 %0, ptr %arrayidx73, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 18
   br i1 %exitcond, label %for.body71, label %for.end76
 
 for.end76:                                        ; preds = %for.body71
   %inc78 = add nsw i32 %sb.374, 1
-  %incdec.ptr79 = getelementptr inbounds double, double* %tspnt.375, i64 1
+  %incdec.ptr79 = getelementptr inbounds double, ptr %tspnt.375, i64 1
   %exitcond95 = icmp ne i32 %inc78, 32
   br i1 %exitcond95, label %for.cond69.preheader, label %for.end80
 

diff  --git a/polly/test/CodeGen/OpenMP/inlineasm.ll b/polly/test/CodeGen/OpenMP/inlineasm.ll
index 2e936307c556f..69b1b0aa53f39 100644
--- a/polly/test/CodeGen/OpenMP/inlineasm.ll
+++ b/polly/test/CodeGen/OpenMP/inlineasm.ll
@@ -8,7 +8,7 @@
 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 i32 @foo([1 x i32]* %bar) {
+define i32 @foo(ptr %bar) {
 for.cond1.preheader.preheader:
   br label %for.cond1.preheader
 
@@ -19,8 +19,8 @@ for.cond1.preheader:
 for.body3:
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.body3 ], [ 0, %for.cond1.preheader ]
   %xyzzy = tail call i32 asm "664:\0A", "={ax},{di},~{dirflag},~{fpsr},~{flags}"(i32 0) #0
-  %arrayidx5 = getelementptr inbounds [1 x i32], [1 x i32]* %bar, i64 0, i64 %indvars.iv
-  store i32 %xyzzy, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds [1 x i32], ptr %bar, i64 0, i64 %indvars.iv
+  store i32 %xyzzy, ptr %arrayidx5, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond.not = icmp eq i64 %indvars.iv, 1
   br i1 %exitcond.not, label %for.inc6, label %for.body3

diff  --git a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded.ll b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded.ll
index 91d956dacc8a0..30beef5b07092 100644
--- a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded.ll
+++ b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded.ll
@@ -8,12 +8,12 @@
 ;        A[i] += A[0];
 ;    }
 ;
-; CHECK:  %polly.subfn.storeaddr.polly.access.A.load = getelementptr inbounds { float, float* }, { float, float* }* %polly.par.userContext, i32 0
-; CHECK:  store float %polly.access.A.load, float* %polly.subfn.storeaddr.polly.access.A.load
+; CHECK:  %polly.subfn.storeaddr.polly.access.A.load = getelementptr inbounds { float, ptr }, ptr %polly.par.userContext, i32 0
+; CHECK:  store float %polly.access.A.load, ptr %polly.subfn.storeaddr.polly.access.A.load
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(float* nocapture %A) {
+define void @f(ptr nocapture %A) {
 entry:
   br label %for.body
 
@@ -22,11 +22,11 @@ for.cond.cleanup:                                 ; preds = %for.body
 
 for.body:                                         ; preds = %for.body, %entry
   %indvars.iv = phi i64 [ 1, %entry ], [ %indvars.iv.next, %for.body ]
-  %tmp = load float, float* %A, align 4
-  %arrayidx1 = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp1 = load float, float* %arrayidx1, align 4
+  %tmp = load float, ptr %A, align 4
+  %arrayidx1 = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp1 = load float, ptr %arrayidx1, align 4
   %add = fadd float %tmp, %tmp1
-  store float %add, float* %arrayidx1, align 4
+  store float %add, ptr %arrayidx1, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 1000
   br i1 %exitcond, label %for.cond.cleanup, label %for.body

diff  --git a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_
diff erent_bb.ll b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_
diff erent_bb.ll
index aabaad433cd09..fe5d2ab8c96d4 100644
--- a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_
diff erent_bb.ll
+++ b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_
diff erent_bb.ll
@@ -8,14 +8,14 @@
 ;        A[i] += /* split bb */ A[0];
 ;    }
 ;                                           A[0]  tmp (unused)      A
-; CHECK: %polly.par.userContext = alloca { float,    float*,     float* }
+; CHECK: %polly.par.userContext = alloca { float,    ptr,     ptr }
 ;
 ; CHECK:  %polly.subfn.storeaddr.polly.access.A.load = getelementptr inbounds
-; CHECK:  store float %polly.access.A.load, float* %polly.subfn.storeaddr.polly.access.A.load
+; CHECK:  store float %polly.access.A.load, ptr %polly.subfn.storeaddr.polly.access.A.load
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(float* nocapture %A) {
+define void @f(ptr nocapture %A) {
 entry:
   br label %for.body
 
@@ -24,14 +24,14 @@ for.cond.cleanup:                                 ; preds = %for.body
 
 for.body:                                         ; preds = %for.body, %entry
   %indvars.iv = phi i64 [ 1, %entry ], [ %indvars.iv.next, %for.body.split ]
-  %tmp = load float, float* %A, align 4
+  %tmp = load float, ptr %A, align 4
   br label %for.body.split
 
 for.body.split:
-  %arrayidx1 = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp1 = load float, float* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp1 = load float, ptr %arrayidx1, align 4
   %add = fadd float %tmp, %tmp1
-  store float %add, float* %arrayidx1, align 4
+  store float %add, ptr %arrayidx1, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 1000
   br i1 %exitcond, label %for.cond.cleanup, label %for.body

diff  --git a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll
index b668c8480119c..49b9321c40b80 100644
--- a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll
+++ b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll
@@ -15,16 +15,16 @@
 ;    }
 ;
 ;                                           i    A[0]    A
-; CHECK: %polly.par.userContext = alloca { i64, float, float* }
+; CHECK: %polly.par.userContext = alloca { i64, float, ptr }
 ;
 ; CHECK:  %polly.access.B.load =
 ; CHECK:  %polly.subfn.storeaddr.polly.access.A.load = getelementptr inbounds
-; CHECK:  store float %polly.access.A.load, float* %polly.subfn.storeaddr.polly.access.A.load
-; CHECK-NOT:  store float %polly.access.B.load, float* %polly.subfn.storeaddr.polly.access.B.load
+; CHECK:  store float %polly.access.A.load, ptr %polly.subfn.storeaddr.polly.access.A.load
+; CHECK-NOT:  store float %polly.access.B.load, ptr %polly.subfn.storeaddr.polly.access.B.load
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(float* %A, float* %B) {
+define void @f(ptr %A, ptr %B) {
 entry:
   br label %for.cond
 
@@ -34,13 +34,13 @@ for.cond:                                         ; preds = %for.inc.9, %entry
   br i1 %exitcond3, label %for.body, label %for.end.11
 
 for.body:                                         ; preds = %for.cond
-  %tmp = load float, float* %B, align 4
-  %arrayidx1 = getelementptr inbounds float, float* %B, i64 %indvars.iv1
+  %tmp = load float, ptr %B, align 4
+  %arrayidx1 = getelementptr inbounds float, ptr %B, i64 %indvars.iv1
   %iv.add = add nsw i64 %indvars.iv1, 1
-  %arrayidx2 = getelementptr inbounds float, float* %B, i64 %iv.add
-  %tmp4 = load float, float* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds float, ptr %B, i64 %iv.add
+  %tmp4 = load float, ptr %arrayidx2, align 4
   %add = fadd float %tmp4, %tmp
-  store float %add, float* %arrayidx1, align 4
+  store float %add, ptr %arrayidx1, align 4
   br label %for.cond.2
 
 for.cond.2:                                       ; preds = %for.inc, %for.body
@@ -49,11 +49,11 @@ for.cond.2:                                       ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body.4, label %for.end
 
 for.body.4:                                       ; preds = %for.cond.2
-  %tmp5 = load float, float* %A, align 4
-  %arrayidx7 = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp6 = load float, float* %arrayidx7, align 4
+  %tmp5 = load float, ptr %A, align 4
+  %arrayidx7 = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp6 = load float, ptr %arrayidx7, align 4
   %add8 = fadd float %tmp6, %tmp5
-  store float %add8, float* %arrayidx7, align 4
+  store float %add8, ptr %arrayidx7, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.4

diff  --git a/polly/test/CodeGen/OpenMP/invariant_base_pointers_preloaded.ll b/polly/test/CodeGen/OpenMP/invariant_base_pointers_preloaded.ll
index 483e302852e6a..06c4cdab45f13 100644
--- a/polly/test/CodeGen/OpenMP/invariant_base_pointers_preloaded.ll
+++ b/polly/test/CodeGen/OpenMP/invariant_base_pointers_preloaded.ll
@@ -9,11 +9,11 @@
 ;    }
 ;
 ; CHECK:  %polly.subfn.storeaddr.polly.access.A.load = getelementptr inbounds
-; CHECK:  store float %polly.access.A.load, float* %polly.subfn.storeaddr.polly.access.A.load
+; CHECK:  store float %polly.access.A.load, ptr %polly.subfn.storeaddr.polly.access.A.load
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(float* nocapture %A) {
+define void @f(ptr nocapture %A) {
 entry:
   br label %for.body
 
@@ -22,13 +22,13 @@ for.cond.cleanup:                                 ; preds = %for.body
 
 for.body:                                         ; preds = %for.body, %entry
   %indvars.iv = phi i64 [ 1, %entry ], [ %indvars.iv.next, %for.body ]
-  %tmp = load float, float* %A, align 4
-  %tmp2 = load float, float* %A, align 4
+  %tmp = load float, ptr %A, align 4
+  %tmp2 = load float, ptr %A, align 4
   %tmpadd = fadd float %tmp, %tmp2
-  %arrayidx1 = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp1 = load float, float* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp1 = load float, ptr %arrayidx1, align 4
   %add = fadd float %tmp2, %tmp1
-  store float %add, float* %arrayidx1, align 4
+  store float %add, ptr %arrayidx1, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 1000
   br i1 %exitcond, label %for.cond.cleanup, label %for.body

diff  --git a/polly/test/CodeGen/OpenMP/loop-body-references-outer-iv.ll b/polly/test/CodeGen/OpenMP/loop-body-references-outer-iv.ll
index 884fdbee3812c..db58c3ab75934 100644
--- a/polly/test/CodeGen/OpenMP/loop-body-references-outer-iv.ll
+++ b/polly/test/CodeGen/OpenMP/loop-body-references-outer-iv.ll
@@ -26,8 +26,8 @@ for.i:
 for.j:
   %indvar.j = phi i64 [ %indvar.j.next, %for.j], [ 0, %for.i ]
   %sum = add i64 %indvar.j, %indvar.i
-  %scevgep = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %sum
-  store float 0.0, float *%scevgep
+  %scevgep = getelementptr [1024 x float], ptr @A, i64 0, i64 %sum
+  store float 0.0, ptr %scevgep
   %indvar.j.next = add i64 %indvar.j, 1
   %exitcond.j = icmp slt i64 %indvar.j.next, 1024
   br i1 %exitcond.j, label %for.j, label %for.i.inc

diff  --git a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-2.ll b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-2.ll
index 75a09a4348bcb..c2ddc1e264964 100644
--- a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-2.ll
+++ b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-2.ll
@@ -6,11 +6,11 @@
 ; AST: for (int c0 = 0; c0 <= 1023; c0 += 1)
 ; AST:   Stmt_for_i(c0);
 
-; IR: getelementptr inbounds { [1024 x double]* }, { [1024 x double]* }* %polly.par.userContext, i32 0, i32 0
+; IR: getelementptr inbounds { ptr }, ptr %polly.par.userContext, i32 0, i32 0
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @kernel_trmm([1024 x double]* %B) {
+define void @kernel_trmm(ptr %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -20,8 +20,8 @@ for.cond1.preheader:
 
 for.i:
   %indvar.i = phi i64 [ %indvar.i.next, %for.i ], [ 0, %for.cond1.preheader ]
-  %getelementptr = getelementptr [1024 x double], [1024 x double]* %B, i64 %extern, i64 %indvar.i
-  store double 0.000000e+00, double* %getelementptr
+  %getelementptr = getelementptr [1024 x double], ptr %B, i64 %extern, i64 %indvar.i
+  store double 0.000000e+00, ptr %getelementptr
   %indvar.i.next = add i64 %indvar.i, 1
   %exitcond.i = icmp ne i64 %indvar.i.next, 1024
   br i1 %exitcond.i, label %for.i, label %end

diff  --git a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-3.ll b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-3.ll
index fba23b40419cf..0f025bb941129 100644
--- a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-3.ll
+++ b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-3.ll
@@ -17,17 +17,15 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %cols, i8* noalias %call) {
+define void @foo(i64 %cols, ptr noalias %call) {
 entry:
-  %tmp = bitcast i8* %call to i64**
   br label %for.body
 
 for.body:
   %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
-  %arrayidx = getelementptr inbounds i64*, i64** %tmp, i64 0
-  %tmp1 = load i64*, i64** %arrayidx, align 8
-  %arrayidx.2 = getelementptr inbounds i64, i64* %tmp1, i64 %indvar
-  store i64 1, i64* %arrayidx.2, align 4
+  %tmp1 = load ptr, ptr %call, align 8
+  %arrayidx.2 = getelementptr inbounds i64, ptr %tmp1, i64 %indvar
+  store i64 1, ptr %arrayidx.2, align 4
   %indvar.next = add nsw i64 %indvar, 1
   %cmp = icmp slt i64 %indvar.next, %cols
   br i1 %cmp, label %for.body, label %end
@@ -47,17 +45,15 @@ end:
 
 ; IR: @bar_polly_subfn
 
-define void @bar(i64 %cols, i8* noalias %call) {
+define void @bar(i64 %cols, ptr noalias %call) {
 entry:
-  %tmp = bitcast i8* %call to i64**
-  %arrayidx = getelementptr inbounds i64*, i64** %tmp, i64 0
   br label %for.body
 
 for.body:
   %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
-  %tmp1 = load i64*, i64** %arrayidx, align 8
-  %arrayidx.2 = getelementptr inbounds i64, i64* %tmp1, i64 %indvar
-  store i64 1, i64* %arrayidx.2, align 4
+  %tmp1 = load ptr, ptr %call, align 8
+  %arrayidx.2 = getelementptr inbounds i64, ptr %tmp1, i64 %indvar
+  store i64 1, ptr %arrayidx.2, align 4
   %indvar.next = add nsw i64 %indvar, 1
   %cmp = icmp slt i64 %indvar.next, %cols
   br i1 %cmp, label %for.body, label %end

diff  --git a/polly/test/CodeGen/OpenMP/matmul-parallel.ll b/polly/test/CodeGen/OpenMP/matmul-parallel.ll
index 29a093901f14f..5ee9a7c7a824b 100644
--- a/polly/test/CodeGen/OpenMP/matmul-parallel.ll
+++ b/polly/test/CodeGen/OpenMP/matmul-parallel.ll
@@ -10,7 +10,7 @@
 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-msvc19.16.27034"
 
-define i32 @foo([1536 x float]* nocapture readonly %A, [1536 x float]* nocapture readonly %B, [1536 x float]* nocapture %C) {
+define i32 @foo(ptr nocapture readonly %A, ptr nocapture readonly %B, ptr nocapture %C) {
 entry:
   br label %entry.split
 
@@ -26,7 +26,7 @@ for.cond.cleanup:
 
 for.cond5.preheader:
   %indvars.iv47 = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next48, %for.cond.cleanup7 ]
-  %arrayidx10 = getelementptr inbounds [1536 x float], [1536 x float]* %C, i64 %indvars.iv50, i64 %indvars.iv47
+  %arrayidx10 = getelementptr inbounds [1536 x float], ptr %C, i64 %indvars.iv50, i64 %indvars.iv47
   br label %for.body8
 
 for.cond.cleanup3:
@@ -41,14 +41,14 @@ for.cond.cleanup7:
 
 for.body8:
   %indvars.iv = phi i64 [ 0, %for.cond5.preheader ], [ %indvars.iv.next, %for.body8 ]
-  %0 = load float, float* %arrayidx10, align 4
-  %arrayidx14 = getelementptr inbounds [1536 x float], [1536 x float]* %A, i64 %indvars.iv50, i64 %indvars.iv
-  %1 = load float, float* %arrayidx14, align 4
-  %arrayidx18 = getelementptr inbounds [1536 x float], [1536 x float]* %B, i64 %indvars.iv, i64 %indvars.iv47
-  %2 = load float, float* %arrayidx18, align 4
+  %0 = load float, ptr %arrayidx10, align 4
+  %arrayidx14 = getelementptr inbounds [1536 x float], ptr %A, i64 %indvars.iv50, i64 %indvars.iv
+  %1 = load float, ptr %arrayidx14, align 4
+  %arrayidx18 = getelementptr inbounds [1536 x float], ptr %B, i64 %indvars.iv, i64 %indvars.iv47
+  %2 = load float, ptr %arrayidx18, align 4
   %mul = fmul float %1, %2
   %add = fadd float %0, %mul
-  store float %add, float* %arrayidx10, align 4
+  store float %add, ptr %arrayidx10, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 1536
   br i1 %exitcond, label %for.cond.cleanup7, label %for.body8

diff  --git a/polly/test/CodeGen/OpenMP/reference-argument-from-non-affine-region.ll b/polly/test/CodeGen/OpenMP/reference-argument-from-non-affine-region.ll
index 7c71b7dfdf727..f243c3a049498 100644
--- a/polly/test/CodeGen/OpenMP/reference-argument-from-non-affine-region.ll
+++ b/polly/test/CodeGen/OpenMP/reference-argument-from-non-affine-region.ll
@@ -15,7 +15,7 @@
 
 ; IR: @GOMP_parallel_loop_runtime_start
 
-; LIBOMP-IR: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call
+; LIBOMP-IR: call void (ptr, i32, ptr, ...) @__kmpc_fork_call
 ; LIBOMP-IR: call void @__kmpc_dispatch_init_{{[4|8]}}
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
@@ -35,17 +35,17 @@ for.cond.533.preheader:                           ; preds = %for.inc.530
 
 for.cond.499.preheader:                           ; preds = %for.inc.530, %for.cond.463.preheader
   %indvars.iv140 = phi i64 [ 0, %for.cond.463.preheader ], [ %indvars.iv.next141, %for.inc.530 ]
-  %arrayidx483 = getelementptr inbounds [9 x [23 x i32]], [9 x [23 x i32]]* @longLimit, i64 0, i64 %indvars.iv140, i64 0
-  store i32 undef, i32* %arrayidx483, align 4, !tbaa !1
-  %arrayidx487 = getelementptr inbounds [9 x [23 x i32]], [9 x [23 x i32]]* @longLimit, i64 0, i64 %indvars.iv140, i64 0
-  %tmp = load i32, i32* %arrayidx487, align 4, !tbaa !1
+  %arrayidx483 = getelementptr inbounds [9 x [23 x i32]], ptr @longLimit, i64 0, i64 %indvars.iv140, i64 0
+  store i32 undef, ptr %arrayidx483, align 4, !tbaa !1
+  %arrayidx487 = getelementptr inbounds [9 x [23 x i32]], ptr @longLimit, i64 0, i64 %indvars.iv140, i64 0
+  %tmp = load i32, ptr %arrayidx487, align 4, !tbaa !1
   %indvars.iv.next135 = add nuw nsw i64 0, 1
   br label %for.body.502
 
 for.body.502:                                     ; preds = %for.inc.527, %for.cond.499.preheader
   %indvars.iv137 = phi i64 [ 0, %for.cond.499.preheader ], [ %indvars.iv.next138, %for.inc.527 ]
-  %arrayidx518 = getelementptr inbounds [9 x [14 x i32]], [9 x [14 x i32]]* @shortLimit, i64 0, i64 %indvars.iv140, i64 %indvars.iv137
-  %tmp1 = load i32, i32* %arrayidx518, align 4, !tbaa !1
+  %arrayidx518 = getelementptr inbounds [9 x [14 x i32]], ptr @shortLimit, i64 0, i64 %indvars.iv140, i64 %indvars.iv137
+  %tmp1 = load i32, ptr %arrayidx518, align 4, !tbaa !1
   %cmp519 = icmp sgt i32 %tmp1, %down_sample_sblimit
   br i1 %cmp519, label %if.then.521, label %for.inc.527
 

diff  --git a/polly/test/CodeGen/OpenMP/reference-other-bb.ll b/polly/test/CodeGen/OpenMP/reference-other-bb.ll
index b5370d8bf29dd..b7abdc23d2589 100644
--- a/polly/test/CodeGen/OpenMP/reference-other-bb.ll
+++ b/polly/test/CodeGen/OpenMP/reference-other-bb.ll
@@ -3,20 +3,19 @@
 ; IR: @foo_polly_subfn
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i32 %sendcount, i8* %recvbuf) {
+define void @foo(i32 %sendcount, ptr %recvbuf) {
 entry:
   br label %sw.bb3
 
 sw.bb3:
-  %tmp = bitcast i8* %recvbuf to double*
   %cmp75 = icmp sgt i32 %sendcount, 0
   br i1 %cmp75, label %for.body, label %end
 
 for.body:
   %i.16 = phi i32 [ %inc04, %for.body ], [ 0, %sw.bb3 ]
   %idxprom11 = sext i32 %i.16 to i64
-  %arrayidx12 = getelementptr inbounds double, double* %tmp, i64 %idxprom11
-  store double 1.0, double* %arrayidx12, align 8
+  %arrayidx12 = getelementptr inbounds double, ptr %recvbuf, i64 %idxprom11
+  store double 1.0, ptr %arrayidx12, align 8
   %inc04 = add nsw i32 %i.16, 1
   %cmp7 = icmp slt i32 %inc04, %sendcount
   br i1 %cmp7, label %for.body, label %end

diff  --git a/polly/test/CodeGen/OpenMP/reference-preceeding-loop.ll b/polly/test/CodeGen/OpenMP/reference-preceeding-loop.ll
index 659b9ad566c45..b88589f39a6fe 100644
--- a/polly/test/CodeGen/OpenMP/reference-preceeding-loop.ll
+++ b/polly/test/CodeGen/OpenMP/reference-preceeding-loop.ll
@@ -33,8 +33,8 @@ for.one:
 while.body:
   %indvar = phi i64 [ %sub42, %while.body ], [ %i.1, %for.one ]
   %sub42 = add nsw i64 %indvar, -1
-  %arrayidx44 = getelementptr inbounds [258 x i64], [258 x i64]* @cum_freq, i64 0, i64 %sub42
-  store i64 1, i64* %arrayidx44, align 4
+  %arrayidx44 = getelementptr inbounds [258 x i64], ptr @cum_freq, i64 0, i64 %sub42
+  store i64 1, ptr %arrayidx44, align 4
   %cmp40 = icmp sgt i64 %sub42, 0
   br i1 %cmp40, label %while.body, label %while.end
 

diff  --git a/polly/test/CodeGen/OpenMP/reference_latest.ll b/polly/test/CodeGen/OpenMP/reference_latest.ll
index 4622fbf2e0b54..54875c2630f0e 100644
--- a/polly/test/CodeGen/OpenMP/reference_latest.ll
+++ b/polly/test/CodeGen/OpenMP/reference_latest.ll
@@ -6,7 +6,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @reference_latest(float* nocapture readonly %data, i32 %n, i32 %m) {
+define void @reference_latest(ptr nocapture readonly %data, i32 %n, i32 %m) {
 entry:
   %0 = alloca double, i64 undef, align 16
   %conv1 = sext i32 %m to i64
@@ -18,8 +18,7 @@ while.body:
 
 for.body:
   %indvars.iv207 = phi i64 [ %indvars.iv211, %while.body ], [ %indvars.iv.next208, %for.body ]
-  %arrayidx7 = getelementptr inbounds float, float* %data, i64 0
-  %1 = load float, float* %arrayidx7, align 4
+  %1 = load float, ptr %data, align 4
   %add10 = fadd double undef, undef
   %indvars.iv.next208 = add nsw i64 %indvars.iv207, 1
   %lftr.wideiv = trunc i64 %indvars.iv.next208 to i32
@@ -27,8 +26,8 @@ for.body:
   br i1 %exitcond210, label %for.end, label %for.body
 
 for.end:
-  %arrayidx12 = getelementptr inbounds double, double* %0, i64 %indvars.iv211
-  store double %add10, double* %arrayidx12, align 8
+  %arrayidx12 = getelementptr inbounds double, ptr %0, i64 %indvars.iv211
+  store double %add10, ptr %arrayidx12, align 8
   %indvars.iv.next212 = add nsw i64 %indvars.iv211, -1
   %2 = trunc i64 %indvars.iv211 to i32
   %tobool = icmp eq i32 %2, 0
@@ -38,7 +37,7 @@ while.end:
   ret void
 }
 
-; CHECK-LABEL: define internal void @reference_latest_polly_subfn(i8* %polly.par.userContext)
+; CHECK-LABEL: define internal void @reference_latest_polly_subfn(ptr %polly.par.userContext)
 
-; CHECK:      %polly.access.polly.subfunc.arg. = getelementptr double, double* %polly.subfunc.arg., i64 %{{[0-9]+}}
-; CHECK-NEXT: store double %p_add{{[0-9]*}}, double* %polly.access.polly.subfunc.arg.
+; CHECK:      %polly.access.polly.subfunc.arg. = getelementptr double, ptr %polly.subfunc.arg., i64 %{{[0-9]+}}
+; CHECK-NEXT: store double %p_add{{[0-9]*}}, ptr %polly.access.polly.subfunc.arg.

diff  --git a/polly/test/CodeGen/OpenMP/single_loop_with_param.ll b/polly/test/CodeGen/OpenMP/single_loop_with_param.ll
index 4c3bc0ff1ede6..d01b7a2fdcad4 100644
--- a/polly/test/CodeGen/OpenMP/single_loop_with_param.ll
+++ b/polly/test/CodeGen/OpenMP/single_loop_with_param.ll
@@ -26,17 +26,17 @@
 ;
 
 ; IR-LABEL: polly.start:
-; IR-NEXT:    store float %alpha, float* %alpha.s2a
+; IR-NEXT:    store float %alpha, ptr %alpha.s2a
 
 ; IR: GOMP_parallel_loop_runtime_start
 
 ; LIBOMP-IR-LABEL: polly.start:
-; LIBOMP-IR-NEXT:    store float %alpha, float* %alpha.s2a
+; LIBOMP-IR-NEXT:    store float %alpha, ptr %alpha.s2a
 
-; LIBOMP-IR: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call
+; LIBOMP-IR: call void (ptr, i32, ptr, ...) @__kmpc_fork_call
 ; LIBOMP-IR: call void @__kmpc_dispatch_init_{{[4|8]}}
 
-; LIBOMP-STATIC-IR: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call
+; LIBOMP-STATIC-IR: call void (ptr, i32, ptr, ...) @__kmpc_fork_call
 ; LIBOMP-STATIC-IR: call void @__kmpc_for_static_init_{{[4|8]}}
 
 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"
@@ -49,13 +49,13 @@ entry:
 
 for.i:
   %indvar = phi i64 [ %indvar.next, %for.inc], [ 0, %entry ]
-  %scevgep = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
+  %scevgep = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
   %exitcond = icmp ne i64 %indvar, 1024
   br i1 %exitcond, label %S, label %exit
 
 S:
   %alphaplus = fadd float 1.0, %alpha
-  store float %alphaplus, float* %scevgep
+  store float %alphaplus, ptr %scevgep
   br label %for.inc
 
 for.inc:

diff  --git a/polly/test/CodeGen/OpenMP/two-parallel-loops-reference-outer-indvar.ll b/polly/test/CodeGen/OpenMP/two-parallel-loops-reference-outer-indvar.ll
index eeb98c00c62cc..05c6ed177e9cb 100644
--- a/polly/test/CodeGen/OpenMP/two-parallel-loops-reference-outer-indvar.ll
+++ b/polly/test/CodeGen/OpenMP/two-parallel-loops-reference-outer-indvar.ll
@@ -15,7 +15,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %nj, [512 x double]* %R) {
+define void @foo(i64 %nj, ptr %R) {
 entry:
   br label %for.cond1.preheader
 
@@ -26,8 +26,8 @@ for.cond1.preheader:
 
 for.body35:
   %j.012 = phi i64 [ %j.0, %for.body35 ], [ %j.010, %for.cond1.preheader ]
-  %arrayidx39 = getelementptr inbounds [512 x double], [512 x double]* %R, i64 0, i64 %j.012
-  store double 0.000000e+00, double* %arrayidx39
+  %arrayidx39 = getelementptr inbounds [512 x double], ptr %R, i64 0, i64 %j.012
+  store double 0.000000e+00, ptr %arrayidx39
   %j.0 = add nsw i64 %j.012, 1
   %cmp34 = icmp slt i64 %j.0, %nj
   br i1 %cmp34, label %for.body35, label %for.inc86

diff  --git a/polly/test/CodeGen/PHIInExit.ll b/polly/test/CodeGen/PHIInExit.ll
index 84ecaf30feed1..eadd6054386b2 100644
--- a/polly/test/CodeGen/PHIInExit.ll
+++ b/polly/test/CodeGen/PHIInExit.ll
@@ -2,25 +2,25 @@
 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"
 
 %struct..0__pthread_mutex_s = type { i32, i32, i32, i32, i32, i32, %struct.__pthread_list_t }
-%struct.__pthread_list_t = type { %struct.__pthread_list_t*, %struct.__pthread_list_t* }
+%struct.__pthread_list_t = type { ptr, ptr }
 %union.pthread_attr_t = type { i64, [12 x i32] }
 %union.pthread_mutex_t = type { %struct..0__pthread_mutex_s }
 %union.pthread_mutexattr_t = type { i32 }
 
- at _ZL20__gthrw_pthread_oncePiPFvvE = weak alias i32 (i32*, void ()*), i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
- at _ZL27__gthrw_pthread_getspecificj = weak alias i8* (i32), i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
- at _ZL27__gthrw_pthread_setspecificjPKv = weak alias i32 (i32, i8*), i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
- at _ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = weak alias i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*), i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)*> [#uses=0]
- at _ZL22__gthrw_pthread_cancelm = weak alias i32 (i64), i32 (i64)* @pthread_cancel ; <i32 (i64)*> [#uses=0]
- at _ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*), i32 (%union.pthread_mutex_t*)* @pthread_mutex_lock ; <i32 (%union.pthread_mutex_t*)*> [#uses=0]
- at _ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*), i32 (%union.pthread_mutex_t*)* @pthread_mutex_trylock ; <i32 (%union.pthread_mutex_t*)*> [#uses=0]
- at _ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*), i32 (%union.pthread_mutex_t*)* @pthread_mutex_unlock ; <i32 (%union.pthread_mutex_t*)*> [#uses=0]
- at _ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = weak alias i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*), i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)* @pthread_mutex_init ; <i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)*> [#uses=0]
- at _ZL26__gthrw_pthread_key_createPjPFvPvE = weak alias i32 (i32*, void (i8*)*), i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
- at _ZL26__gthrw_pthread_key_deletej = weak alias i32 (i32), i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
- at _ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = weak alias i32 (%union.pthread_mutexattr_t*), i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_init ; <i32 (%union.pthread_mutexattr_t*)*> [#uses=0]
- at _ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = weak alias i32 (%union.pthread_mutexattr_t*, i32), i32 (%union.pthread_mutexattr_t*, i32)* @pthread_mutexattr_settype ; <i32 (%union.pthread_mutexattr_t*, i32)*> [#uses=0]
- at _ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = weak alias i32 (%union.pthread_mutexattr_t*), i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_destroy ; <i32 (%union.pthread_mutexattr_t*)*> [#uses=0]
+ at _ZL20__gthrw_pthread_oncePiPFvvE = weak alias i32 (ptr, ptr), ptr @pthread_once ; <ptr> [#uses=0]
+ at _ZL27__gthrw_pthread_getspecificj = weak alias ptr (i32), ptr @pthread_getspecific ; <ptr> [#uses=0]
+ at _ZL27__gthrw_pthread_setspecificjPKv = weak alias i32 (i32, ptr), ptr @pthread_setspecific ; <ptr> [#uses=0]
+ at _ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = weak alias i32 (ptr, ptr, ptr, ptr), ptr @pthread_create ; <ptr> [#uses=0]
+ at _ZL22__gthrw_pthread_cancelm = weak alias i32 (i64), ptr @pthread_cancel ; <ptr> [#uses=0]
+ at _ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = weak alias i32 (ptr), ptr @pthread_mutex_lock ; <ptr> [#uses=0]
+ at _ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = weak alias i32 (ptr), ptr @pthread_mutex_trylock ; <ptr> [#uses=0]
+ at _ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = weak alias i32 (ptr), ptr @pthread_mutex_unlock ; <ptr> [#uses=0]
+ at _ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = weak alias i32 (ptr, ptr), ptr @pthread_mutex_init ; <ptr> [#uses=0]
+ at _ZL26__gthrw_pthread_key_createPjPFvPvE = weak alias i32 (ptr, ptr), ptr @pthread_key_create ; <ptr> [#uses=0]
+ at _ZL26__gthrw_pthread_key_deletej = weak alias i32 (i32), ptr @pthread_key_delete ; <ptr> [#uses=0]
+ at _ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = weak alias i32 (ptr), ptr @pthread_mutexattr_init ; <ptr> [#uses=0]
+ at _ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = weak alias i32 (ptr, i32), ptr @pthread_mutexattr_settype ; <ptr> [#uses=0]
+ at _ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = weak alias i32 (ptr), ptr @pthread_mutexattr_destroy ; <ptr> [#uses=0]
 
 define void @_ZL6createP6node_tii3v_tS1_d() {
 entry:
@@ -46,19 +46,19 @@ return:                                           ; preds = %bb5
   ret void
 }
 
-define i32 @pthread_once(i32*, void ()*) {
+define i32 @pthread_once(ptr, ptr) {
   ret i32 0
 }
 
-define i8* @pthread_getspecific(i32) {
-  ret i8* null
+define ptr @pthread_getspecific(i32) {
+  ret ptr null
 }
 
-define i32 @pthread_setspecific(i32, i8*) {
+define i32 @pthread_setspecific(i32, ptr) {
   ret i32 0
 }
 
-define i32 @pthread_create(i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*) {
+define i32 @pthread_create(ptr, ptr, ptr, ptr) {
   ret i32 0
 }
 
@@ -66,23 +66,23 @@ define i32 @pthread_cancel(i64) {
   ret i32 0
 }
 
-define i32 @pthread_mutex_lock(%union.pthread_mutex_t*) {
+define i32 @pthread_mutex_lock(ptr) {
   ret i32 0
 }
 
-define i32 @pthread_mutex_trylock(%union.pthread_mutex_t*) {
+define i32 @pthread_mutex_trylock(ptr) {
   ret i32 0
 }
 
-define i32 @pthread_mutex_unlock(%union.pthread_mutex_t*) {
+define i32 @pthread_mutex_unlock(ptr) {
   ret i32 0
 }
 
-define i32 @pthread_mutex_init(%union.pthread_mutex_t*, %union.pthread_mutexattr_t*) {
+define i32 @pthread_mutex_init(ptr, ptr) {
   ret i32 0
 }
 
-define i32 @pthread_key_create(i32*, void (i8*)*) {
+define i32 @pthread_key_create(ptr, ptr) {
   ret i32 0
 }
 
@@ -90,14 +90,14 @@ define i32 @pthread_key_delete(i32) {
   ret i32 0
 }
 
-define i32 @pthread_mutexattr_init(%union.pthread_mutexattr_t*) {
+define i32 @pthread_mutexattr_init(ptr) {
   ret i32 0
 }
 
-define i32 @pthread_mutexattr_settype(%union.pthread_mutexattr_t*, i32) {
+define i32 @pthread_mutexattr_settype(ptr, i32) {
   ret i32 0
 }
 
-define i32 @pthread_mutexattr_destroy(%union.pthread_mutexattr_t*) {
+define i32 @pthread_mutexattr_destroy(ptr) {
   ret i32 0
 }

diff  --git a/polly/test/CodeGen/RuntimeDebugBuilder/stmt_tracing.ll b/polly/test/CodeGen/RuntimeDebugBuilder/stmt_tracing.ll
index 456b33a0b7eb0..822eccc306ef2 100644
--- a/polly/test/CodeGen/RuntimeDebugBuilder/stmt_tracing.ll
+++ b/polly/test/CodeGen/RuntimeDebugBuilder/stmt_tracing.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-codegen-trace-stmts -polly-codegen-trace-scalars -polly-codegen -S < %s | FileCheck %s
 ;
 
-define void @func(i32 %n, double* %A) {
+define void @func(i32 %n, ptr %A) {
 entry:
   br label %for
 
@@ -11,8 +11,8 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double 0.0, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double 0.0, ptr %A_idx
       br label %inc
 
 inc:
@@ -34,5 +34,5 @@ return:
 ; CHECK: @4 = private unnamed_addr constant [12 x i8] c"%s%s%ld%s%s\00"
 
 ; CHECK:      polly.stmt.body:
-; CHECK:        call i32 (...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @4, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([10 x i8], [10 x i8] addrspace(4)* @0, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @1, i32 0, i32 0), i64 %polly.indvar, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @2, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @3, i32 0, i32 0))
-; CHECK-NEXT:   call i32 @fflush(i8* null)
+; CHECK:        call i32 (...) @printf(ptr @4, ptr addrspace(4) @0, ptr addrspace(4) @1, i64 %polly.indvar, ptr addrspace(4) @2, ptr addrspace(4) @3)
+; CHECK-NEXT:   call i32 @fflush(ptr null)

diff  --git a/polly/test/CodeGen/alias-check-multi-dim.ll b/polly/test/CodeGen/alias-check-multi-dim.ll
index 8dddb996aa739..d923a4cc14fd6 100644
--- a/polly/test/CodeGen/alias-check-multi-dim.ll
+++ b/polly/test/CodeGen/alias-check-multi-dim.ll
@@ -4,19 +4,17 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; CHECK: sext i32 %indvar.init to i64
 
-define void @foo(double* %A, double* %B, i32 %p, i32 %indvar.init) {
+define void @foo(ptr %A, ptr %B, i32 %p, i32 %indvar.init) {
 preheader:
   br label %for.body
 
 for.body:
   %indvar = phi i32 [ %indvar.next, %for.body ], [ %indvar.init, %preheader ]
-  %B.ptr0 = getelementptr inbounds double, double* %B, i64 0
-  %tmp1 = load double, double* %B.ptr0
-  %A.ptr = getelementptr inbounds double, double* %A, i64 0
-  store double undef, double* %A.ptr
+  %tmp1 = load double, ptr %B
+  store double undef, ptr %A
   %idxprom1329 = sext i32 %indvar to i64
-  %B.ptr1 = getelementptr inbounds double, double* %B, i64 %idxprom1329
-  store double 0.000000e+00, double* %B.ptr1
+  %B.ptr1 = getelementptr inbounds double, ptr %B, i64 %idxprom1329
+  store double 0.000000e+00, ptr %B.ptr1
   %indvar.next = add nsw i32 %indvar, %p
   br i1 false, label %for.body, label %exit
 

diff  --git a/polly/test/CodeGen/alias_metadata_too_many_arrays.ll b/polly/test/CodeGen/alias_metadata_too_many_arrays.ll
index 89b91ec1e10ee..7c5ca012a3783 100644
--- a/polly/test/CodeGen/alias_metadata_too_many_arrays.ll
+++ b/polly/test/CodeGen/alias_metadata_too_many_arrays.ll
@@ -59,7 +59,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @manyarrays(float* %A1, float* %A2, float* %A3, float* %A4, float* %A5, float* %A6, float* %A7, float* %A8, float* %A9) {
+define void @manyarrays(ptr %A1, ptr %A2, ptr %A3, ptr %A4, ptr %A5, ptr %A6, ptr %A7, ptr %A8, ptr %A9) {
 bb:
   br label %bb1
 
@@ -70,50 +70,50 @@ bb1:                                              ; preds = %bb38, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = sitofp i64 %i.0 to float
-  %tmp3 = getelementptr inbounds float, float* %A1, i64 %i.0
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A1, i64 %i.0
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, %tmp
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   %tmp6 = sitofp i64 %i.0 to float
-  %tmp7 = getelementptr inbounds float, float* %A2, i64 %i.0
-  %tmp8 = load float, float* %tmp7, align 4
+  %tmp7 = getelementptr inbounds float, ptr %A2, i64 %i.0
+  %tmp8 = load float, ptr %tmp7, align 4
   %tmp9 = fadd float %tmp8, %tmp6
-  store float %tmp9, float* %tmp7, align 4
+  store float %tmp9, ptr %tmp7, align 4
   %tmp10 = sitofp i64 %i.0 to float
-  %tmp11 = getelementptr inbounds float, float* %A3, i64 %i.0
-  %tmp12 = load float, float* %tmp11, align 4
+  %tmp11 = getelementptr inbounds float, ptr %A3, i64 %i.0
+  %tmp12 = load float, ptr %tmp11, align 4
   %tmp13 = fadd float %tmp12, %tmp10
-  store float %tmp13, float* %tmp11, align 4
+  store float %tmp13, ptr %tmp11, align 4
   %tmp14 = sitofp i64 %i.0 to float
-  %tmp15 = getelementptr inbounds float, float* %A4, i64 %i.0
-  %tmp16 = load float, float* %tmp15, align 4
+  %tmp15 = getelementptr inbounds float, ptr %A4, i64 %i.0
+  %tmp16 = load float, ptr %tmp15, align 4
   %tmp17 = fadd float %tmp16, %tmp14
-  store float %tmp17, float* %tmp15, align 4
+  store float %tmp17, ptr %tmp15, align 4
   %tmp18 = sitofp i64 %i.0 to float
-  %tmp19 = getelementptr inbounds float, float* %A5, i64 %i.0
-  %tmp20 = load float, float* %tmp19, align 4
+  %tmp19 = getelementptr inbounds float, ptr %A5, i64 %i.0
+  %tmp20 = load float, ptr %tmp19, align 4
   %tmp21 = fadd float %tmp20, %tmp18
-  store float %tmp21, float* %tmp19, align 4
+  store float %tmp21, ptr %tmp19, align 4
   %tmp22 = sitofp i64 %i.0 to float
-  %tmp23 = getelementptr inbounds float, float* %A6, i64 %i.0
-  %tmp24 = load float, float* %tmp23, align 4
+  %tmp23 = getelementptr inbounds float, ptr %A6, i64 %i.0
+  %tmp24 = load float, ptr %tmp23, align 4
   %tmp25 = fadd float %tmp24, %tmp22
-  store float %tmp25, float* %tmp23, align 4
+  store float %tmp25, ptr %tmp23, align 4
   %tmp26 = sitofp i64 %i.0 to float
-  %tmp27 = getelementptr inbounds float, float* %A7, i64 %i.0
-  %tmp28 = load float, float* %tmp27, align 4
+  %tmp27 = getelementptr inbounds float, ptr %A7, i64 %i.0
+  %tmp28 = load float, ptr %tmp27, align 4
   %tmp29 = fadd float %tmp28, %tmp26
-  store float %tmp29, float* %tmp27, align 4
+  store float %tmp29, ptr %tmp27, align 4
   %tmp30 = sitofp i64 %i.0 to float
-  %tmp31 = getelementptr inbounds float, float* %A8, i64 %i.0
-  %tmp32 = load float, float* %tmp31, align 4
+  %tmp31 = getelementptr inbounds float, ptr %A8, i64 %i.0
+  %tmp32 = load float, ptr %tmp31, align 4
   %tmp33 = fadd float %tmp32, %tmp30
-  store float %tmp33, float* %tmp31, align 4
+  store float %tmp33, ptr %tmp31, align 4
   %tmp34 = sitofp i64 %i.0 to float
-  %tmp35 = getelementptr inbounds float, float* %A9, i64 %i.0
-  %tmp36 = load float, float* %tmp35, align 4
+  %tmp35 = getelementptr inbounds float, ptr %A9, i64 %i.0
+  %tmp36 = load float, ptr %tmp35, align 4
   %tmp37 = fadd float %tmp36, %tmp34
-  store float %tmp37, float* %tmp35, align 4
+  store float %tmp37, ptr %tmp35, align 4
   br label %bb38
 
 bb38:                                             ; preds = %bb2
@@ -124,7 +124,7 @@ bb40:                                             ; preds = %bb1
   ret void
 }
 
-define void @toomanyarrays(float* %A1, float* %A2, float* %A3, float* %A4, float* %A5, float* %A6, float* %A7, float* %A8, float* %A9, float* %A10, float* %A11) {
+define void @toomanyarrays(ptr %A1, ptr %A2, ptr %A3, ptr %A4, ptr %A5, ptr %A6, ptr %A7, ptr %A8, ptr %A9, ptr %A10, ptr %A11) {
 bb:
   br label %bb1
 
@@ -135,60 +135,60 @@ bb1:                                              ; preds = %bb46, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = sitofp i64 %i.0 to float
-  %tmp3 = getelementptr inbounds float, float* %A1, i64 %i.0
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A1, i64 %i.0
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, %tmp
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   %tmp6 = sitofp i64 %i.0 to float
-  %tmp7 = getelementptr inbounds float, float* %A2, i64 %i.0
-  %tmp8 = load float, float* %tmp7, align 4
+  %tmp7 = getelementptr inbounds float, ptr %A2, i64 %i.0
+  %tmp8 = load float, ptr %tmp7, align 4
   %tmp9 = fadd float %tmp8, %tmp6
-  store float %tmp9, float* %tmp7, align 4
+  store float %tmp9, ptr %tmp7, align 4
   %tmp10 = sitofp i64 %i.0 to float
-  %tmp11 = getelementptr inbounds float, float* %A3, i64 %i.0
-  %tmp12 = load float, float* %tmp11, align 4
+  %tmp11 = getelementptr inbounds float, ptr %A3, i64 %i.0
+  %tmp12 = load float, ptr %tmp11, align 4
   %tmp13 = fadd float %tmp12, %tmp10
-  store float %tmp13, float* %tmp11, align 4
+  store float %tmp13, ptr %tmp11, align 4
   %tmp14 = sitofp i64 %i.0 to float
-  %tmp15 = getelementptr inbounds float, float* %A4, i64 %i.0
-  %tmp16 = load float, float* %tmp15, align 4
+  %tmp15 = getelementptr inbounds float, ptr %A4, i64 %i.0
+  %tmp16 = load float, ptr %tmp15, align 4
   %tmp17 = fadd float %tmp16, %tmp14
-  store float %tmp17, float* %tmp15, align 4
+  store float %tmp17, ptr %tmp15, align 4
   %tmp18 = sitofp i64 %i.0 to float
-  %tmp19 = getelementptr inbounds float, float* %A5, i64 %i.0
-  %tmp20 = load float, float* %tmp19, align 4
+  %tmp19 = getelementptr inbounds float, ptr %A5, i64 %i.0
+  %tmp20 = load float, ptr %tmp19, align 4
   %tmp21 = fadd float %tmp20, %tmp18
-  store float %tmp21, float* %tmp19, align 4
+  store float %tmp21, ptr %tmp19, align 4
   %tmp22 = sitofp i64 %i.0 to float
-  %tmp23 = getelementptr inbounds float, float* %A6, i64 %i.0
-  %tmp24 = load float, float* %tmp23, align 4
+  %tmp23 = getelementptr inbounds float, ptr %A6, i64 %i.0
+  %tmp24 = load float, ptr %tmp23, align 4
   %tmp25 = fadd float %tmp24, %tmp22
-  store float %tmp25, float* %tmp23, align 4
+  store float %tmp25, ptr %tmp23, align 4
   %tmp26 = sitofp i64 %i.0 to float
-  %tmp27 = getelementptr inbounds float, float* %A7, i64 %i.0
-  %tmp28 = load float, float* %tmp27, align 4
+  %tmp27 = getelementptr inbounds float, ptr %A7, i64 %i.0
+  %tmp28 = load float, ptr %tmp27, align 4
   %tmp29 = fadd float %tmp28, %tmp26
-  store float %tmp29, float* %tmp27, align 4
+  store float %tmp29, ptr %tmp27, align 4
   %tmp30 = sitofp i64 %i.0 to float
-  %tmp31 = getelementptr inbounds float, float* %A8, i64 %i.0
-  %tmp32 = load float, float* %tmp31, align 4
+  %tmp31 = getelementptr inbounds float, ptr %A8, i64 %i.0
+  %tmp32 = load float, ptr %tmp31, align 4
   %tmp33 = fadd float %tmp32, %tmp30
-  store float %tmp33, float* %tmp31, align 4
+  store float %tmp33, ptr %tmp31, align 4
   %tmp34 = sitofp i64 %i.0 to float
-  %tmp35 = getelementptr inbounds float, float* %A9, i64 %i.0
-  %tmp36 = load float, float* %tmp35, align 4
+  %tmp35 = getelementptr inbounds float, ptr %A9, i64 %i.0
+  %tmp36 = load float, ptr %tmp35, align 4
   %tmp37 = fadd float %tmp36, %tmp34
-  store float %tmp37, float* %tmp35, align 4
+  store float %tmp37, ptr %tmp35, align 4
   %tmp38 = sitofp i64 %i.0 to float
-  %tmp39 = getelementptr inbounds float, float* %A10, i64 %i.0
-  %tmp40 = load float, float* %tmp39, align 4
+  %tmp39 = getelementptr inbounds float, ptr %A10, i64 %i.0
+  %tmp40 = load float, ptr %tmp39, align 4
   %tmp41 = fadd float %tmp40, %tmp38
-  store float %tmp41, float* %tmp39, align 4
+  store float %tmp41, ptr %tmp39, align 4
   %tmp42 = sitofp i64 %i.0 to float
-  %tmp43 = getelementptr inbounds float, float* %A11, i64 %i.0
-  %tmp44 = load float, float* %tmp43, align 4
+  %tmp43 = getelementptr inbounds float, ptr %A11, i64 %i.0
+  %tmp44 = load float, ptr %tmp43, align 4
   %tmp45 = fadd float %tmp44, %tmp42
-  store float %tmp45, float* %tmp43, align 4
+  store float %tmp45, ptr %tmp43, align 4
   br label %bb46
 
 bb46:                                             ; preds = %bb2

diff  --git a/polly/test/CodeGen/aliasing_multidimensional_access.ll b/polly/test/CodeGen/aliasing_multidimensional_access.ll
index 9048c7588f470..48768399e850d 100644
--- a/polly/test/CodeGen/aliasing_multidimensional_access.ll
+++ b/polly/test/CodeGen/aliasing_multidimensional_access.ll
@@ -18,7 +18,7 @@
 ; CHECK:  %[[TMP3O:[._0-9a-zA-Z]*]] = extractvalue { i64, i1 } %[[TMP3]], 1
 ; CHECK:  %[[OS3:[._0-9a-zA-Z]*]]   = or i1 %[[OS2]], %[[TMP3O]]
 ; CHECK:  %[[TMP3R:[._0-9a-zA-Z]*]] = extractvalue { i64, i1 } %[[TMP3]], 0
-; CHECK:  %polly.access.A{{[0-9]*}} = getelementptr double, double* %A, i64 %[[TMP3R]]
+; CHECK:  %polly.access.A{{[0-9]*}} = getelementptr double, ptr %A, i64 %[[TMP3R]]
 ;
 ; CHECK:  %polly.rtc.overflown = xor i1 %[[OS3]], true
 ; CHECK:  %polly.rtc.result = and i1 %{{[^,]*}}, %polly.rtc.overflown
@@ -33,7 +33,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n, i64 %m, i64 %p, double* %A, i32* %B) {
+define void @foo(i64 %n, i64 %m, i64 %p, ptr %A, ptr %B) {
 entry:
   br label %for.cond
 
@@ -59,16 +59,16 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
   br i1 %exitcond, label %for.body6, label %for.end
 
 for.body6:                                        ; preds = %for.cond4
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %k.0
-  %tmp3 = load i32, i32* %arrayidx, align 2
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %k.0
+  %tmp3 = load i32, ptr %arrayidx, align 2
   %conv = sitofp i32 %tmp3 to double
   %tmp4 = mul nuw i64 %m, %p
   %tmp5 = mul nsw i64 %i.0, %tmp4
   %tmp6 = mul nsw i64 %j.0, %p
   %arrayidx7.sum = add i64 %tmp5, %tmp6
   %arrayidx8.sum = add i64 %arrayidx7.sum, %k.0
-  %arrayidx9 = getelementptr inbounds double, double* %A, i64 %arrayidx8.sum
-  store double %conv, double* %arrayidx9, align 8
+  %arrayidx9 = getelementptr inbounds double, ptr %A, i64 %arrayidx8.sum
+  store double %conv, ptr %arrayidx9, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body6

diff  --git a/polly/test/CodeGen/aliasing_struct_element.ll b/polly/test/CodeGen/aliasing_struct_element.ll
index ceec5ee8796da..2219ca9d28bbc 100644
--- a/polly/test/CodeGen/aliasing_struct_element.ll
+++ b/polly/test/CodeGen/aliasing_struct_element.ll
@@ -10,8 +10,7 @@
 ; Verify that we do not use the offset 1423 into a non existent S array when we
 ; compute runtime alias checks but treat it as if it was a char array.
 ;
-; CHECK: %polly.access.cast.S = bitcast %struct.st* %S to i8*
-; CHECK: %polly.access.S = getelementptr i8, i8* %polly.access.cast.S, i64 1424
+; CHECK: %polly.access.S = getelementptr i8, ptr %S, i64 1424
 ;
 ;    struct st {
 ;      int Dummy[100];
@@ -27,7 +26,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 %struct.st = type { [100 x i32], [100 x i8] }
 
-define void @jd(i32* %A, %struct.st* %S) {
+define void @jd(ptr %A, ptr %S) {
 entry:
   br label %for.cond
 
@@ -37,11 +36,11 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds %struct.st, %struct.st* %S, i64 0, i32 1, i64 %indvars.iv
-  %tmp = load i8, i8* %arrayidx, align 1
+  %arrayidx = getelementptr inbounds %struct.st, ptr %S, i64 0, i32 1, i64 %indvars.iv
+  %tmp = load i8, ptr %arrayidx, align 1
   %conv = sext i8 %tmp to i32
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %conv, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %conv, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/alignment.ll b/polly/test/CodeGen/alignment.ll
index 5a54fffe06bcc..a94b1f7e2883e 100644
--- a/polly/test/CodeGen/alignment.ll
+++ b/polly/test/CodeGen/alignment.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A) {
+define void @jd(ptr %A) {
 entry:
   br label %for.cond
 
@@ -22,9 +22,9 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
   %tmp = trunc i64 %indvars.iv to i32
-  store i32 %tmp, i32* %arrayidx, align 8
+  store i32 %tmp, ptr %arrayidx, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/blas_sscal_simplified.ll b/polly/test/CodeGen/blas_sscal_simplified.ll
index 6ad954bbb5861..a370fcff46f8a 100644
--- a/polly/test/CodeGen/blas_sscal_simplified.ll
+++ b/polly/test/CodeGen/blas_sscal_simplified.ll
@@ -14,7 +14,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @sscal(i32 %n, float %sa, float* %sx) {
+define i32 @sscal(i32 %n, float %sa, ptr %sx) {
 entry:
   br label %entry.split
 
@@ -28,10 +28,10 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %indvar = phi i64 [ 0, %for.body.lr.ph ], [ %indvar.next, %for.body ]
-  %sx.addr.02 = getelementptr float, float* %sx, i64 %indvar
-  %tmp = load float, float* %sx.addr.02, align 4
+  %sx.addr.02 = getelementptr float, ptr %sx, i64 %indvar
+  %tmp = load float, ptr %sx.addr.02, align 4
   %mul = fmul float %tmp, %sa
-  store float %mul, float* %sx.addr.02, align 4
+  store float %mul, ptr %sx.addr.02, align 4
   %indvar.next = add i64 %indvar, 1
   %exitcond = icmp ne i64 %indvar.next, %0
   br i1 %exitcond, label %for.body, label %for.cond.for.end_crit_edge

diff  --git a/polly/test/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll b/polly/test/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll
index 85dbbdd82cbca..e0f8c435879ac 100644
--- a/polly/test/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll
+++ b/polly/test/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll
@@ -1,14 +1,14 @@
 ; RUN: opt %loadPolly -polly-process-unprofitable -polly-codegen -disable-output < %s
 ;
-; CHECK: store i32 %tmp14_p_scalar_, i32* %tmp14.s2a
-; CHECK: %tmp14.final_reload = load i32, i32* %tmp14.s2a
-; CHECK: %tmp17b.final_reload = load i32, i32* %tmp17b.preload.s2a
-; CHECK: %tmp17.final_reload = load i32, i32* %tmp17.preload.s2a
+; CHECK: store i32 %tmp14_p_scalar_, ptr %tmp14.s2a
+; CHECK: %tmp14.final_reload = load i32, ptr %tmp14.s2a
+; CHECK: %tmp17b.final_reload = load i32, ptr %tmp17b.preload.s2a
+; CHECK: %tmp17.final_reload = load i32, ptr %tmp17.preload.s2a
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @hoge(i8* %arg, i32 %arg4) #0 {
+define void @hoge(ptr %arg, i32 %arg4) #0 {
 bb:
   br label %bb5
 
@@ -16,9 +16,8 @@ bb5:                                              ; preds = %bb
   br i1 undef, label %bb6, label %bb18
 
 bb6:                                              ; preds = %bb5
-  %tmp7 = getelementptr i8, i8* %arg, i64 0
-  %tmp8 = getelementptr inbounds i8, i8* %tmp7, i64 4
-  %tmp9 = getelementptr inbounds i8, i8* %tmp8, i64 20
+  %tmp8 = getelementptr inbounds i8, ptr %arg, i64 4
+  %tmp9 = getelementptr inbounds i8, ptr %tmp8, i64 20
   br label %bb10
 
 bb10:                                             ; preds = %bb10, %bb6
@@ -27,16 +26,13 @@ bb10:                                             ; preds = %bb10, %bb6
   br i1 false, label %bb10, label %bb13
 
 bb13:                                             ; preds = %bb10
-  %tmp = bitcast i8* %tmp9 to i32*
-  %tmp14 = load i32, i32* %tmp, align 4
-  %tmp15 = getelementptr inbounds i8, i8* %tmp9, i64 4
-  %tmp16 = bitcast i8* %tmp15 to i32*
-  %tmp17 = load i32, i32* %tmp16, align 4
-  store i32 %tmp17, i32* %tmp, align 4
-  %tmp15b = getelementptr inbounds i8, i8* %tmp9, i64 8
-  %tmp16b = bitcast i8* %tmp15b to i32*
-  %tmp17b = load i32, i32* %tmp16b, align 4
-  store i32 %tmp17b, i32* %tmp, align 4
+  %tmp14 = load i32, ptr %tmp9, align 4
+  %tmp15 = getelementptr inbounds i8, ptr %tmp9, i64 4
+  %tmp17 = load i32, ptr %tmp15, align 4
+  store i32 %tmp17, ptr %tmp9, align 4
+  %tmp15b = getelementptr inbounds i8, ptr %tmp9, i64 8
+  %tmp17b = load i32, ptr %tmp15b, align 4
+  store i32 %tmp17b, ptr %tmp9, align 4
   br label %bb19
 
 bb18:                                             ; preds = %bb5

diff  --git a/polly/test/CodeGen/constant_condition.ll b/polly/test/CodeGen/constant_condition.ll
index 1f61556d9de31..dad1f6cffd174 100644
--- a/polly/test/CodeGen/constant_condition.ll
+++ b/polly/test/CodeGen/constant_condition.ll
@@ -24,7 +24,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"
- at A = common global [1 x i32] zeroinitializer, align 4 ; <[1 x i32]*> [#uses=1]
+ at A = common global [1 x i32] zeroinitializer, align 4 ; <ptr> [#uses=1]
 
 define void @constant_condition() nounwind {
 bb:
@@ -32,11 +32,11 @@ bb:
   br i1 true, label %bb1, label %bb2
 
 bb1:                                              ; preds = %bb
-  store i32 0, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @A, i32 0, i32 0)
+  store i32 0, ptr @A
   br label %bb3
 
 bb2:                                              ; preds = %bb
-  store i32 1, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @A, i32 0, i32 0)
+  store i32 1, ptr @A
   br label %bb3
 
 bb3:                                              ; preds = %bb2, %bb1
@@ -45,9 +45,9 @@ bb3:                                              ; preds = %bb2, %bb1
 
 define i32 @main() nounwind {
 bb:
-  store i32 2, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @A, i32 0, i32 0)
+  store i32 2, ptr @A
   call void @constant_condition()
-  %tmp = load i32, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
+  %tmp = load i32, ptr @A ; <i32> [#uses=1]
   ret i32 %tmp
 }
 

diff  --git a/polly/test/CodeGen/create-conditional-scop.ll b/polly/test/CodeGen/create-conditional-scop.ll
index df58477731457..f51a2dcc9b3c4 100644
--- a/polly/test/CodeGen/create-conditional-scop.ll
+++ b/polly/test/CodeGen/create-conditional-scop.ll
@@ -18,8 +18,8 @@ for.body7.single_entry.single_entry:              ; preds = %for.inc02, %entry
 
 while.body:                                       ; preds = %while.body, %for.body7.single_entry.single_entry
   %indvar35 = phi i32 [ %0, %while.body ], [ 0, %for.body7.single_entry.single_entry ]
-  %ptr = getelementptr [1536 x float], [1536 x float]* @A, i64 0, i32 %indvar35
-  store float undef, float* %ptr
+  %ptr = getelementptr [1536 x float], ptr @A, i64 0, i32 %indvar35
+  store float undef, ptr %ptr
   %0 = add i32 %indvar35, 1
   %exitcond2 = icmp eq i32 %0, 42
   br i1 %exitcond2, label %for.inc02, label %while.body

diff  --git a/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_1.ll b/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_1.ll
index aae85da9b3819..991e3c83eef12 100644
--- a/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_1.ll
+++ b/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_1.ll
@@ -5,24 +5,24 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.hoge = type { %struct.widget*, i32, i32, i32, %struct.hoge*, %struct.hoge*, %struct.barney, %struct.ham, %struct.wombat }
-%struct.widget = type { i32, i32, i32, i32, %struct.quux* }
-%struct.quux = type { i8*, i32, i32, i32, %struct.hoge.0 }
+%struct.hoge = type { ptr, i32, i32, i32, ptr, ptr, %struct.barney, %struct.ham, %struct.wombat }
+%struct.widget = type { i32, i32, i32, i32, ptr }
+%struct.quux = type { ptr, i32, i32, i32, %struct.hoge.0 }
 %struct.hoge.0 = type { [2 x i64] }
-%struct.barney = type { %struct.hoge* }
+%struct.barney = type { ptr }
 %struct.ham = type { i32 }
-%struct.wombat = type { %struct.hoge** }
-%struct.foo = type { %struct.wibble*, %struct.wibble*, i32, i32, i32, %struct.hoge.2, %struct.blam, %struct.wombat.5, i16, i8*, i8*, i16, i8*, i16, i16*, i16, %struct.blam.6**, i16, %struct.foo.7**, i8*, i16, i8**, i8* }
-%struct.wibble = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct.foo.1*, %struct.wibble*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
-%struct.foo.1 = type { %struct.foo.1*, %struct.wibble*, i32 }
+%struct.wombat = type { ptr }
+%struct.foo = type { ptr, ptr, i32, i32, i32, %struct.hoge.2, %struct.blam, %struct.wombat.5, i16, ptr, ptr, i16, ptr, i16, ptr, i16, ptr, i16, ptr, ptr, i16, ptr, ptr }
+%struct.wibble = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i64, i32, [20 x i8] }
+%struct.foo.1 = type { ptr, ptr, i32 }
 %struct.hoge.2 = type { i16, i16 }
-%struct.blam = type { i16, %struct.barney.3* }
+%struct.blam = type { i16, ptr }
 %struct.barney.3 = type { i8, %struct.foo.4 }
 %struct.foo.4 = type { i64 }
 %struct.wombat.5 = type { i16 }
-%struct.blam.6 = type <{ %struct.wombat.5, [6 x i8], i8*, i8*, i32, i16, [2 x i8] }>
-%struct.foo.7 = type { %struct.wombat.5, i8*, i8*, i8, i8, i32, i8*, i16, %struct.bar*, i16, %struct.barney.9*, i16, %struct.hoge.10*, i8**, i8**, i32*, i32*, i8*, i32, i32, i32* }
-%struct.bar = type { i32, i16, i16, %struct.wibble.8, i16, %struct.hoge* }
+%struct.blam.6 = type <{ %struct.wombat.5, [6 x i8], ptr, ptr, i32, i16, [2 x i8] }>
+%struct.foo.7 = type { %struct.wombat.5, ptr, ptr, i8, i8, i32, ptr, i16, ptr, i16, ptr, i16, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr }
+%struct.bar = type { i32, i16, i16, %struct.wibble.8, i16, ptr }
 %struct.wibble.8 = type { i32 }
 %struct.barney.9 = type { i16, i16 }
 %struct.hoge.10 = type { i16, i16, i16, i16, i16 }
@@ -30,17 +30,17 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @global = external global i32, align 4
 @global1 = external global i32, align 4
- at global2 = external global i8*, align 8
- at global3 = external global %struct.hoge**, align 8
- at global4 = external global %struct.hoge**, align 8
+ at global2 = external global ptr, align 8
+ at global3 = external global ptr, align 8
+ at global4 = external global ptr, align 8
 
 ; Function Attrs: uwtable
-define i32 @foo(%struct.foo* %arg) #0 personality i8* bitcast (i32 (...)* @blam to i8*) {
+define i32 @foo(ptr %arg) #0 personality ptr @blam {
 bb:
   br label %bb3
 
 bb3:                                              ; preds = %bb
-  %tmp = load i32, i32* @global, align 4, !tbaa !1
+  %tmp = load i32, ptr @global, align 4, !tbaa !1
   %tmp4 = add i32 %tmp, -1
   %tmp5 = icmp eq i32 0, 0
   br i1 %tmp5, label %bb12, label %bb6
@@ -49,7 +49,7 @@ bb6:                                              ; preds = %bb3
   br label %bb7
 
 bb7:                                              ; preds = %bb7, %bb6
-  %tmp8 = load i32, i32* @global, align 4, !tbaa !1
+  %tmp8 = load i32, ptr @global, align 4, !tbaa !1
   %tmp9 = and i32 %tmp8, 3
   %tmp10 = icmp eq i32 %tmp9, 0
   br i1 %tmp10, label %bb11, label %bb7
@@ -58,7 +58,7 @@ bb11:                                             ; preds = %bb7
   br label %bb12
 
 bb12:                                             ; preds = %bb11, %bb3
-  invoke void @zot(%struct.hoge* nonnull undef, i32 %tmp4, i32 undef, i32 9, i32 0, i32 39, %struct.hoge* undef, i32 undef, i32 undef, %struct.bar.11* nonnull undef)
+  invoke void @zot(ptr nonnull undef, i32 %tmp4, i32 undef, i32 9, i32 0, i32 39, ptr undef, i32 undef, i32 undef, ptr nonnull undef)
           to label %bb13 unwind label %bb17
 
 bb13:                                             ; preds = %bb12
@@ -74,42 +74,42 @@ bb16:                                             ; preds = %bb15, %bb13
   ret i32 0
 
 bb17:                                             ; preds = %bb12
-  %tmp18 = landingpad { i8*, i32 }
+  %tmp18 = landingpad { ptr, i32 }
           cleanup
-  resume { i8*, i32 } %tmp18
+  resume { ptr, i32 } %tmp18
 
 bb19:                                             ; preds = %bb19, %bb14
   br i1 undef, label %bb15, label %bb19
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind readnone
 declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #2
 
 ; Function Attrs: nobuiltin
-declare noalias i8* @eggs(i64) #3
+declare noalias ptr @eggs(i64) #3
 
 ; Function Attrs: nobuiltin
-declare noalias i8* @bar(i64) #3
+declare noalias ptr @bar(i64) #3
 
 ; Function Attrs: uwtable
-declare void @zot(%struct.hoge*, i32, i32, i32, i32, i32, %struct.hoge*, i32, i32, %struct.bar.11*) unnamed_addr #0 align 2
+declare void @zot(ptr, i32, i32, i32, i32, i32, ptr, i32, i32, ptr) unnamed_addr #0 align 2
 
 declare i32 @blam(...)
 
 ; Function Attrs: nobuiltin nounwind
-declare void @zot5(i8*) #4
+declare void @zot5(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: uwtable
-declare i32 @eggs6(%struct.foo*) #0
+declare i32 @eggs6(ptr) #0
 
 ; Function Attrs: nounwind uwtable
-declare void @eggs7(%struct.widget*, i32, i32, i32) unnamed_addr #5 align 2
+declare void @eggs7(ptr, i32, i32, i32) unnamed_addr #5 align 2
 
 attributes #0 = { 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/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_2.ll b/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_2.ll
index ec78edecb372e..153f6912cea56 100644
--- a/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_2.ll
+++ b/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_2.ll
@@ -14,23 +14,23 @@ entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %0 = load i32, i32* getelementptr inbounds ([10 x i32], [10 x i32]* @REGISTER, i64 0, i64 8), align 16
+  %0 = load i32, ptr getelementptr inbounds ([10 x i32], ptr @REGISTER, i64 0, i64 8), align 16
   %add = add nsw i32 %0, 2
   %cmp = icmp sgt i32 %add, 1048575
   br i1 %cmp, label %if.end.36, label %if.else
 
 if.else:                                          ; preds = %entry.split
-  call void (i32, i32, i32*, ...) bitcast (void (...)* @BYTES_TO_BITS to void (i32, i32, i32*, ...)*)(i32 undef, i32 1, i32* undef) #2
-  %1 = load i32, i32* undef, align 4
+  call void (i32, i32, ptr, ...) @BYTES_TO_BITS(i32 undef, i32 1, ptr undef) #2
+  %1 = load i32, ptr undef, align 4
   %cmp14 = icmp eq i32 %1, 1
   br i1 %cmp14, label %land.lhs.true, label %if.end.36
 
 land.lhs.true:                                    ; preds = %if.else
-  %arrayidx16 = getelementptr inbounds [32 x i32], [32 x i32]* %INSTR, i64 0, i64 6
+  %arrayidx16 = getelementptr inbounds [32 x i32], ptr %INSTR, i64 0, i64 6
   br i1 false, label %land.lhs.true.19, label %if.then.23
 
 land.lhs.true.19:                                 ; preds = %land.lhs.true
-  %arrayidx20 = getelementptr inbounds [32 x i32], [32 x i32]* %INSTR, i64 0, i64 7
+  %arrayidx20 = getelementptr inbounds [32 x i32], ptr %INSTR, i64 0, i64 7
   br i1 false, label %if.end.36, label %if.then.23
 
 if.then.23:                                       ; preds = %land.lhs.true.19, %land.lhs.true

diff  --git a/polly/test/CodeGen/debug-intrinsics.ll b/polly/test/CodeGen/debug-intrinsics.ll
index 1f194a6c0516c..2feeb7c838b07 100644
--- a/polly/test/CodeGen/debug-intrinsics.ll
+++ b/polly/test/CodeGen/debug-intrinsics.ll
@@ -9,12 +9,12 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @foo(float* %A, i64 %N) #0 !dbg !4 {
+define void @foo(ptr %A, i64 %N) #0 !dbg !4 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  tail call void @llvm.dbg.value(metadata float* %A, metadata !14, metadata !DIExpression()), !dbg !15
+  tail call void @llvm.dbg.value(metadata ptr %A, metadata !14, metadata !DIExpression()), !dbg !15
   tail call void @llvm.dbg.value(metadata i64 %N, metadata !16, metadata !DIExpression()), !dbg !15
   tail call void @llvm.dbg.value(metadata i64 0, metadata !18, metadata !DIExpression()), !dbg !20
   %cmp1 = icmp sgt i64 %N, 0, !dbg !20
@@ -25,9 +25,9 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %0 = phi i64 [ 0, %for.body.lr.ph ], [ %1, %for.body ], !dbg !21
-  %arrayidx = getelementptr float, float* %A, i64 %0, !dbg !21
+  %arrayidx = getelementptr float, ptr %A, i64 %0, !dbg !21
   %conv = sitofp i64 %0 to float, !dbg !21
-  store float %conv, float* %arrayidx, align 4, !dbg !21
+  store float %conv, ptr %arrayidx, align 4, !dbg !21
   %1 = add nsw i64 %0, 1, !dbg !20
   tail call void @llvm.dbg.value(metadata i64 %1, metadata !18, metadata !DIExpression()), !dbg !20
   %exitcond = icmp ne i64 %1, %N, !dbg !20

diff  --git a/polly/test/CodeGen/dominance_problem_after_early_codegen_bailout.ll b/polly/test/CodeGen/dominance_problem_after_early_codegen_bailout.ll
index ff9b87b11755e..c9e006a012048 100644
--- a/polly/test/CodeGen/dominance_problem_after_early_codegen_bailout.ll
+++ b/polly/test/CodeGen/dominance_problem_after_early_codegen_bailout.ll
@@ -10,19 +10,19 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @hashheader = external global %struct.hashheader.0.5.10.165.180.185, align 4
 
 ; Function Attrs: nounwind uwtable
-define void @strtoichar(i8* %in) #0 {
+define void @strtoichar(ptr %in) #0 {
 entry:
   br i1 undef, label %land.rhs, label %for.end
 
 land.rhs:                                         ; preds = %for.inc, %entry
-  %in.addr.012 = phi i8* [ undef, %for.inc ], [ %in, %entry ]
-  %0 = load i8, i8* %in.addr.012, align 1
+  %in.addr.012 = phi ptr [ undef, %for.inc ], [ %in, %entry ]
+  %0 = load i8, ptr %in.addr.012, align 1
   br i1 undef, label %for.end, label %for.body
 
 for.body:                                         ; preds = %land.rhs
   %idxprom = zext i8 %0 to i64
-  %arrayidx = getelementptr inbounds %struct.hashheader.0.5.10.165.180.185, %struct.hashheader.0.5.10.165.180.185* @hashheader, i64 0, i32 27, i64 %idxprom
-  %1 = load i8, i8* %arrayidx, align 1
+  %arrayidx = getelementptr inbounds %struct.hashheader.0.5.10.165.180.185, ptr @hashheader, i64 0, i32 27, i64 %idxprom
+  %1 = load i8, ptr %arrayidx, align 1
   %tobool = icmp eq i8 %1, 0
   br i1 %tobool, label %if.else, label %land.rhs.7
 
@@ -34,7 +34,7 @@ if.then:                                          ; preds = %land.rhs.7
   br label %for.inc
 
 if.else:                                          ; preds = %land.rhs.7, %for.body
-  %2 = load i8, i8* %in.addr.012, align 1
+  %2 = load i8, ptr %in.addr.012, align 1
   br label %for.inc
 
 for.inc:                                          ; preds = %if.else, %if.then

diff  --git a/polly/test/CodeGen/empty_domain_in_context.ll b/polly/test/CodeGen/empty_domain_in_context.ll
index c4d250a0fcb9c..c67ace9502e1d 100644
--- a/polly/test/CodeGen/empty_domain_in_context.ll
+++ b/polly/test/CodeGen/empty_domain_in_context.ll
@@ -13,7 +13,7 @@ target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
 
 define void @fn1() {
 entry:
-  %a.promoted = load i16, i16* @a
+  %a.promoted = load i16, ptr @a
   br label %for.cond
 
 for.cond:                                         ; preds = %for.cond3.for.end_crit_edge, %entry
@@ -32,7 +32,7 @@ if.end:                                           ; preds = %for.body
   br label %for.body5.lr.ph
 
 for.body5.lr.ph:                                  ; preds = %if.end
-  %tmp = load i8, i8* @b, align 1
+  %tmp = load i8, ptr @b, align 1
   %cmp = icmp eq i32 %div, 1
   br i1 %cmp, label %for.body5.lr.ph.split.us, label %for.body5.lr.ph.split
 
@@ -70,7 +70,7 @@ lor.end:                                          ; preds = %lor.end, %for.body5
 
 for.cond3.for.end_crit_edge:                      ; preds = %lor.end, %lor.end.peel, %lor.end.us, %lor.end.us.peel
   %tmp3 = phi i8 [ %tmp, %lor.end.us.peel ], [ %tmp, %lor.end.peel ], [ %tmp, %lor.end.us ], [ %tmp, %lor.end ]
-  store i8 4, i8* @c
+  store i8 4, ptr @c
   br label %for.cond
 }
 
@@ -81,6 +81,6 @@ for.cond3.for.end_crit_edge:                      ; preds = %lor.end, %lor.end.p
 ; It is not important since this code will never be executed.
 
 ; CHECK:      polly.stmt.lor.end.us.peel:
-; CHECK-NEXT:   %tmp_p_scalar_2 = load i8, i8* @b
-; CHECK-NEXT:   store i8 %tmp_p_scalar_2, i8* %tmp3.phiops
+; CHECK-NEXT:   %tmp_p_scalar_2 = load i8, ptr @b
+; CHECK-NEXT:   store i8 %tmp_p_scalar_2, ptr %tmp3.phiops
 ; CHECK-NEXT:   br label %polly.merge

diff  --git a/polly/test/CodeGen/entry_with_trivial_phi.ll b/polly/test/CodeGen/entry_with_trivial_phi.ll
index 4398d1513efd5..b057690ab29b1 100644
--- a/polly/test/CodeGen/entry_with_trivial_phi.ll
+++ b/polly/test/CodeGen/entry_with_trivial_phi.ll
@@ -6,19 +6,19 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @test(i64 %n, float* noalias nonnull %A, float %a) {
+define void @test(i64 %n, ptr noalias nonnull %A, float %a) {
 entry:
   br label %entry.split
 
 ; CHECK-LABEL: %polly.split_new_and_old
-; CHECK-NEXT:    store float %a, float* %b.phiops
+; CHECK-NEXT:    store float %a, ptr %b.phiops
 
 ; CHECK-LABEL: polly.stmt.entry.split
-; CHECK-NEXT:    %b.phiops.reload = load float, float* %b.phiops
+; CHECK-NEXT:    %b.phiops.reload = load float, ptr %b.phiops
 
 entry.split:
   %b = phi float [ %a, %entry ]
-  store float %b, float* %A, align 4
+  store float %b, ptr %A, align 4
   %cmp2 = icmp slt i64 %n, 5
   br i1 %cmp2, label %for.cond, label %for.end
 
@@ -28,8 +28,8 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  store float %a, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  store float %a, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/entry_with_trivial_phi_other_bb.ll b/polly/test/CodeGen/entry_with_trivial_phi_other_bb.ll
index 6d83a0a5b58d4..5673cc746b5f2 100644
--- a/polly/test/CodeGen/entry_with_trivial_phi_other_bb.ll
+++ b/polly/test/CodeGen/entry_with_trivial_phi_other_bb.ll
@@ -7,12 +7,12 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @test(i64 %n, float* noalias nonnull %A, float %a) {
+define void @test(i64 %n, ptr noalias nonnull %A, float %a) {
 entry:
   br label %entry.split
 
 ; CHECK-LABEL: polly.start:
-; CHECK:         store float %a, float* %b.phiops
+; CHECK:         store float %a, ptr %b.phiops
 
 entry.split:
   %b = phi float [ %a, %entry ]
@@ -25,8 +25,8 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  store float %b, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  store float %b, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/error-stmt-in-non-affine-region.ll b/polly/test/CodeGen/error-stmt-in-non-affine-region.ll
index a386718c81890..9832afe7a5fd2 100644
--- a/polly/test/CodeGen/error-stmt-in-non-affine-region.ll
+++ b/polly/test/CodeGen/error-stmt-in-non-affine-region.ll
@@ -16,7 +16,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i64 %N) {
+define void @f(ptr %A, i64 %N) {
 entry:
   br label %for.cond
 
@@ -26,8 +26,8 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4
   %cmp.outer = icmp eq i64 %indvars.iv, %N
   br i1 %cmp.outer, label %if.then.outer, label %for.inc
 
@@ -40,9 +40,9 @@ if.then:                                          ; preds = %for.body
   unreachable
 
 if.else:                                          ; preds = %for.body
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
   %tmp1 = trunc i64 %indvars.iv to i32
-  store i32 %tmp1, i32* %arrayidx2, align 4
+  store i32 %tmp1, ptr %arrayidx2, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else

diff  --git a/polly/test/CodeGen/error_block_contains_invalid_memory_access.ll b/polly/test/CodeGen/error_block_contains_invalid_memory_access.ll
index a5cbc17143552..048847f3e322c 100644
--- a/polly/test/CodeGen/error_block_contains_invalid_memory_access.ll
+++ b/polly/test/CodeGen/error_block_contains_invalid_memory_access.ll
@@ -2,28 +2,28 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.img_par.12.33.54.243.348.558.600.852.999.1209.2070.2154.2175.2238.2259.2280.2322 = type { i32, i32, i32, i32, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [16 x [16 x i16]], [6 x [32 x i32]], [16 x [16 x i32]], [4 x [12 x [4 x [4 x i32]]]], [16 x i32], i8**, i32*, i32***, i32**, i32, i32, i32, i32, %struct.Slice.8.29.50.239.344.554.596.848.995.1205.2066.2150.2171.2234.2255.2276.2318*, %struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319*, i32, i32, i32, i32, i32, i32, %struct.DecRefPicMarking_s.10.31.52.241.346.556.598.850.997.1207.2068.2152.2173.2236.2257.2278.2320*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32***, i32***, i32****, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x [2 x i32]], [3 x [2 x i32]], i32, i32, i64, i64, %struct.timeb.11.32.53.242.347.557.599.851.998.1208.2069.2153.2174.2237.2258.2279.2321, %struct.timeb.11.32.53.242.347.557.599.851.998.1208.2069.2153.2174.2237.2258.2279.2321, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
-%struct.Slice.8.29.50.239.344.554.596.848.995.1205.2066.2150.2171.2234.2255.2276.2318 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.datapartition.3.24.45.234.339.549.591.843.990.1200.2061.2145.2166.2229.2250.2271.2313*, %struct.MotionInfoContexts.5.26.47.236.341.551.593.845.992.1202.2063.2147.2168.2231.2252.2273.2315*, %struct.TextureInfoContexts.6.27.48.237.342.552.594.846.993.1203.2064.2148.2169.2232.2253.2274.2316*, i32, i32*, i32*, i32*, i32, i32*, i32*, i32*, i32 (%struct.img_par.12.33.54.243.348.558.600.852.999.1209.2070.2154.2175.2238.2259.2280.2322*, %struct.inp_par.7.28.49.238.343.553.595.847.994.1204.2065.2149.2170.2233.2254.2275.2317*)*, i32, i32, i32, i32 }
-%struct.datapartition.3.24.45.234.339.549.591.843.990.1200.2061.2145.2166.2229.2250.2271.2313 = type { %struct.Bitstream.0.21.42.231.336.546.588.840.987.1197.2058.2142.2163.2226.2247.2268.2310*, %struct.DecodingEnvironment.1.22.43.232.337.547.589.841.988.1198.2059.2143.2164.2227.2248.2269.2311, i32 (%struct.syntaxelement.2.23.44.233.338.548.590.842.989.1199.2060.2144.2165.2228.2249.2270.2312*, %struct.img_par.12.33.54.243.348.558.600.852.999.1209.2070.2154.2175.2238.2259.2280.2322*, %struct.datapartition.3.24.45.234.339.549.591.843.990.1200.2061.2145.2166.2229.2250.2271.2313*)* }
-%struct.Bitstream.0.21.42.231.336.546.588.840.987.1197.2058.2142.2163.2226.2247.2268.2310 = type { i32, i32, i32, i32, i8*, i32 }
-%struct.DecodingEnvironment.1.22.43.232.337.547.589.841.988.1198.2059.2143.2164.2227.2248.2269.2311 = type { i32, i32, i32, i32, i32, i8*, i32* }
-%struct.syntaxelement.2.23.44.233.338.548.590.842.989.1199.2060.2144.2165.2228.2249.2270.2312 = type { i32, i32, i32, i32, i32, i32, i32, i32, void (i32, i32, i32*, i32*)*, void (%struct.syntaxelement.2.23.44.233.338.548.590.842.989.1199.2060.2144.2165.2228.2249.2270.2312*, %struct.img_par.12.33.54.243.348.558.600.852.999.1209.2070.2154.2175.2238.2259.2280.2322*, %struct.DecodingEnvironment.1.22.43.232.337.547.589.841.988.1198.2059.2143.2164.2227.2248.2269.2311*)* }
+%struct.img_par.12.33.54.243.348.558.600.852.999.1209.2070.2154.2175.2238.2259.2280.2322 = type { i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [16 x [16 x i16]], [6 x [32 x i32]], [16 x [16 x i32]], [4 x [12 x [4 x [4 x i32]]]], [16 x i32], ptr, ptr, ptr, ptr, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x [2 x i32]], [3 x [2 x i32]], i32, i32, i64, i64, %struct.timeb.11.32.53.242.347.557.599.851.998.1208.2069.2153.2174.2237.2258.2279.2321, %struct.timeb.11.32.53.242.347.557.599.851.998.1208.2069.2153.2174.2237.2258.2279.2321, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
+%struct.Slice.8.29.50.239.344.554.596.848.995.1205.2066.2150.2171.2234.2255.2276.2318 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32 }
+%struct.datapartition.3.24.45.234.339.549.591.843.990.1200.2061.2145.2166.2229.2250.2271.2313 = type { ptr, %struct.DecodingEnvironment.1.22.43.232.337.547.589.841.988.1198.2059.2143.2164.2227.2248.2269.2311, ptr }
+%struct.Bitstream.0.21.42.231.336.546.588.840.987.1197.2058.2142.2163.2226.2247.2268.2310 = type { i32, i32, i32, i32, ptr, i32 }
+%struct.DecodingEnvironment.1.22.43.232.337.547.589.841.988.1198.2059.2143.2164.2227.2248.2269.2311 = type { i32, i32, i32, i32, i32, ptr, ptr }
+%struct.syntaxelement.2.23.44.233.338.548.590.842.989.1199.2060.2144.2165.2228.2249.2270.2312 = type { i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr }
 %struct.MotionInfoContexts.5.26.47.236.341.551.593.845.992.1202.2063.2147.2168.2231.2252.2273.2315 = type { [4 x [11 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [2 x [9 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [2 x [10 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [2 x [6 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [4 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314], [4 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314], [3 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314] }
 %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314 = type { i16, i8 }
 %struct.TextureInfoContexts.6.27.48.237.342.552.594.846.993.1203.2064.2148.2169.2232.2253.2274.2316 = type { [2 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314], [4 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314], [3 x [4 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [10 x [4 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [10 x [15 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [10 x [15 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [10 x [5 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [10 x [5 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [10 x [15 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]], [10 x [15 x %struct.BiContextType.4.25.46.235.340.550.592.844.991.1201.2062.2146.2167.2230.2251.2272.2314]] }
 %struct.inp_par.7.28.49.238.343.553.595.847.994.1204.2065.2149.2170.2233.2254.2275.2317 = type { [1000 x i8], [1000 x i8], [1000 x i8], i32, i32, i32, i32, i32, i32, i32, i32 }
-%struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319 = type { i32, [2 x i32], i32, i32, %struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319*, %struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319*, i32, [2 x [4 x [4 x [2 x i32]]]], i32, i64, i64, i32, i32, [4 x i8], [4 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
-%struct.DecRefPicMarking_s.10.31.52.241.346.556.598.850.997.1207.2068.2152.2173.2236.2257.2278.2320 = type { i32, i32, i32, i32, i32, %struct.DecRefPicMarking_s.10.31.52.241.346.556.598.850.997.1207.2068.2152.2173.2236.2257.2278.2320* }
+%struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319 = type { i32, [2 x i32], i32, i32, ptr, ptr, i32, [2 x [4 x [4 x [2 x i32]]]], i32, i64, i64, i32, i32, [4 x i8], [4 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
+%struct.DecRefPicMarking_s.10.31.52.241.346.556.598.850.997.1207.2068.2152.2173.2236.2257.2278.2320 = type { i32, i32, i32, i32, i32, ptr }
 %struct.timeb.11.32.53.242.347.557.599.851.998.1208.2069.2153.2174.2237.2258.2279.2321 = type { i64, i16, i16, i16 }
 %struct.pix_pos.13.34.55.244.349.559.601.853.1000.1210.2071.2155.2176.2239.2260.2281.2323 = type { i32, i32, i32, i32, i32, i32 }
 
 declare void @getLuma4x4Neighbour() #0
 
 ; Function Attrs: nounwind uwtable
-define void @readCBP_CABAC(%struct.img_par.12.33.54.243.348.558.600.852.999.1209.2070.2154.2175.2238.2259.2280.2322* %img) #1 {
+define void @readCBP_CABAC(ptr %img) #1 {
 entry:
   %block_a = alloca %struct.pix_pos.13.34.55.244.349.559.601.853.1000.1210.2071.2155.2176.2239.2260.2281.2323, align 4
-  %mb_data = getelementptr inbounds %struct.img_par.12.33.54.243.348.558.600.852.999.1209.2070.2154.2175.2238.2259.2280.2322, %struct.img_par.12.33.54.243.348.558.600.852.999.1209.2070.2154.2175.2238.2259.2280.2322* %img, i64 0, i32 39
+  %mb_data = getelementptr inbounds %struct.img_par.12.33.54.243.348.558.600.852.999.1209.2070.2154.2175.2238.2259.2280.2322, ptr %img, i64 0, i32 39
   br label %for.cond.1.preheader
 
 for.cond.1.preheader:                             ; preds = %for.inc.84, %entry
@@ -46,14 +46,14 @@ if.end.35:                                        ; preds = %if.else.19, %if.els
 
 if.then.38:                                       ; preds = %if.end.35
   call void @getLuma4x4Neighbour() #2
-  %0 = load i32, i32* null, align 4
+  %0 = load i32, ptr null, align 4
   %tobool = icmp eq i32 %0, 0
   br i1 %tobool, label %if.end.72, label %if.then.42
 
 if.then.42:                                       ; preds = %if.then.38
-  %mb_addr = getelementptr inbounds %struct.pix_pos.13.34.55.244.349.559.601.853.1000.1210.2071.2155.2176.2239.2260.2281.2323, %struct.pix_pos.13.34.55.244.349.559.601.853.1000.1210.2071.2155.2176.2239.2260.2281.2323* %block_a, i64 0, i32 1
-  %1 = load %struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319*, %struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319** %mb_data, align 8
-  %mb_type46 = getelementptr inbounds %struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319, %struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319* %1, i64 0, i32 6
+  %mb_addr = getelementptr inbounds %struct.pix_pos.13.34.55.244.349.559.601.853.1000.1210.2071.2155.2176.2239.2260.2281.2323, ptr %block_a, i64 0, i32 1
+  %1 = load ptr, ptr %mb_data, align 8
+  %mb_type46 = getelementptr inbounds %struct.macroblock.9.30.51.240.345.555.597.849.996.1206.2067.2151.2172.2235.2256.2277.2319, ptr %1, i64 0, i32 6
   br i1 false, label %if.end.72, label %if.else.50
 
 if.else.50:                                       ; preds = %if.then.42

diff  --git a/polly/test/CodeGen/exprModDiv.ll b/polly/test/CodeGen/exprModDiv.ll
index ace61feda4fd9..936b018bc1ada 100644
--- a/polly/test/CodeGen/exprModDiv.ll
+++ b/polly/test/CodeGen/exprModDiv.ll
@@ -18,7 +18,7 @@
 
 ; A[i % 127]
 ; CHECK:  %pexp.pdiv_r = urem i64 %polly.indvar, 127
-; CHECK:  %polly.access.A9 = getelementptr float, float* %A, i64 %pexp.pdiv_r
+; CHECK:  %polly.access.A9 = getelementptr float, ptr %A, i64 %pexp.pdiv_r
 
 ; A[floor(i / 127)]
 ;
@@ -28,33 +28,31 @@
 ;       each value of i to indeed be mapped to a value.
 ;
 ; CHECK:  %pexp.p_div_q = udiv i64 %polly.indvar, 127
-; CHECK:  %polly.access.B10 = getelementptr float, float* %B, i64 %pexp.p_div_q
+; CHECK:  %polly.access.B10 = getelementptr float, ptr %B, i64 %pexp.p_div_q
 
 ; A[p % 128]
-; CHECK:  %polly.access.A11 = getelementptr float, float* %A, i64 0
 
 ; A[p / 127]
 ; CHECK:  %pexp.div = sdiv exact i64 %p, 127
-; CHECK:  %polly.access.B12 = getelementptr float, float* %B, i64 %pexp.div
+; CHECK:  %polly.access.B12 = getelementptr float, ptr %B, i64 %pexp.div
 
 ; A[i % 128]
 ; POW2:  %pexp.pdiv_r = urem i64 %polly.indvar, 128
-; POW2:  %polly.access.A9 = getelementptr float, float* %A, i64 %pexp.pdiv_r
+; POW2:  %polly.access.A9 = getelementptr float, ptr %A, i64 %pexp.pdiv_r
 
 ; A[floor(i / 128)]
 ; POW2:  %pexp.p_div_q = udiv i64 %polly.indvar, 128
-; POW2:  %polly.access.B10 = getelementptr float, float* %B, i64 %pexp.p_div_q
+; POW2:  %polly.access.B10 = getelementptr float, ptr %B, i64 %pexp.p_div_q
 
 ; A[p % 128]
-; POW2:  %polly.access.A11 = getelementptr float, float* %A, i64 0
 
 ; A[p / 128]
 ; POW2:  %pexp.div = sdiv exact i64 %p, 128
-; POW2:  %polly.access.B12 = getelementptr float, float* %B, i64 %pexp.div
+; POW2:  %polly.access.B12 = getelementptr float, ptr %B, i64 %pexp.div
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @exprModDiv(float* %A, float* %B, float* %C, i64 %N, i64 %p) {
+define void @exprModDiv(ptr %A, ptr %B, ptr %C, i64 %N, i64 %p) {
 entry:
   br label %for.cond
 
@@ -64,22 +62,22 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp = load float, float* %arrayidx, align 4
-  %arrayidx1 = getelementptr inbounds float, float* %B, i64 %i.0
-  %tmp1 = load float, float* %arrayidx1, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp = load float, ptr %arrayidx, align 4
+  %arrayidx1 = getelementptr inbounds float, ptr %B, i64 %i.0
+  %tmp1 = load float, ptr %arrayidx1, align 4
   %add = fadd float %tmp, %tmp1
-  %arrayidx2 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp2 = load float, float* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp2 = load float, ptr %arrayidx2, align 4
   %add3 = fadd float %add, %tmp2
   %padd = add nsw i64 %p, %i.0
-  %arrayidx4 = getelementptr inbounds float, float* %B, i64 %padd
-  %tmp3 = load float, float* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds float, ptr %B, i64 %padd
+  %tmp3 = load float, ptr %arrayidx4, align 4
   %add5 = fadd float %add3, %tmp3
-  %arrayidx6 = getelementptr inbounds float, float* %C, i64 %i.0
-  %tmp4 = load float, float* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds float, ptr %C, i64 %i.0
+  %tmp4 = load float, ptr %arrayidx6, align 4
   %add7 = fadd float %tmp4, %add5
-  store float %add7, float* %arrayidx6, align 4
+  store float %add7, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/hoisted_load_escapes_through_phi.ll b/polly/test/CodeGen/hoisted_load_escapes_through_phi.ll
index e8fa68893f92c..d7588b3b8e005 100644
--- a/polly/test/CodeGen/hoisted_load_escapes_through_phi.ll
+++ b/polly/test/CodeGen/hoisted_load_escapes_through_phi.ll
@@ -11,9 +11,9 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct1 = type { i32, %union1, %struct.2*, i32, i32 }
-%union1 = type { %struct.2* }
-%struct.2 = type { %struct.2*, i8* }
+%struct1 = type { i32, %union1, ptr, i32, i32 }
+%union1 = type { ptr }
+%struct.2 = type { ptr, ptr }
 
 @cont_STACKPOINTER = external global i32, align 4
 @cont_STACK = external global [1000 x i32], align 16
@@ -23,14 +23,14 @@ entry:
   br label %if.else.i.i
 
 if.else.i.i:                                      ; preds = %entry
-  %tmp = load %struct1*, %struct1** undef, align 8
+  %tmp = load ptr, ptr undef, align 8
   br label %while.body.i99.i.i
 
 while.body.i99.i.i:                               ; preds = %while.body.i99.i.i, %if.else.i.i
   br i1 false, label %while.body.i99.i.i, label %while.end.i103.i.i
 
 while.end.i103.i.i:                               ; preds = %while.body.i99.i.i
-  %tmp1 = load i32, i32* @cont_STACKPOINTER, align 4
+  %tmp1 = load i32, ptr @cont_STACKPOINTER, align 4
   %dec.i.i102.i.i = add nsw i32 %tmp1, -1
   br i1 false, label %cont_BackTrack.exit107.i.i, label %if.then.i106.i.i
 
@@ -39,13 +39,12 @@ if.then.i106.i.i:                                 ; preds = %while.end.i103.i.i
 
 cont_BackTrack.exit107.i.i:                       ; preds = %if.then.i106.i.i, %while.end.i103.i.i
   %tmp2 = phi i32 [ %dec.i.i102.i.i, %if.then.i106.i.i ], [ 0, %while.end.i103.i.i ]
-  %symbol.i.i.i = getelementptr inbounds %struct1, %struct1* %tmp, i64 0, i32 0
   br i1 undef, label %land.lhs.true23.i.i, label %for.inc.i.i
 
 land.lhs.true23.i.i:                              ; preds = %cont_BackTrack.exit107.i.i
   %idxprom.i.i57.i.i = sext i32 %tmp2 to i64
-  %arrayidx.i.i58.i.i = getelementptr inbounds [1000 x i32], [1000 x i32]* @cont_STACK, i64 0, i64 %idxprom.i.i57.i.i
-  store i32 undef, i32* %arrayidx.i.i58.i.i, align 4
+  %arrayidx.i.i58.i.i = getelementptr inbounds [1000 x i32], ptr @cont_STACK, i64 0, i64 %idxprom.i.i57.i.i
+  store i32 undef, ptr %arrayidx.i.i58.i.i, align 4
   br i1 false, label %if.then.i45.i.i, label %fol_Atom.exit47.i.i
 
 if.then.i45.i.i:                                  ; preds = %land.lhs.true23.i.i

diff  --git a/polly/test/CodeGen/hoisting_1.ll b/polly/test/CodeGen/hoisting_1.ll
index 3cbd7159d34e8..86b56637bc2cc 100644
--- a/polly/test/CodeGen/hoisting_1.ll
+++ b/polly/test/CodeGen/hoisting_1.ll
@@ -2,42 +2,41 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.hoge = type { %struct.widget*, %struct.barney*, %struct.foo*, i32, i32, %struct.wibble*, i32, i32, i32, i32, double, i32, i32, i32, %struct.foo.1*, [4 x %struct.hoge.2*], [4 x %struct.blam*], [4 x %struct.blam*], [16 x i8], [16 x i8], [16 x i8], i32, %struct.barney.3*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i16, i16, i32, i32, i32, i32, i32, i32, i32, [4 x %struct.foo.1*], i32, i32, i32, [10 x i32], i32, i32, i32, i32, %struct.foo.4*, %struct.wombat.5*, %struct.blam.6*, %struct.foo.7*, %struct.bar*, %struct.wibble.8*, %struct.barney.9*, %struct.hoge.10*, %struct.bar.11* }
-%struct.widget = type { void (%struct.quux*)*, void (%struct.quux*, i32)*, void (%struct.quux*)*, void (%struct.quux*, i8*)*, void (%struct.quux*)*, i32, %struct.hoge.0, i32, i64, i8**, i32, i8**, i32, i32 }
-%struct.quux = type { %struct.widget*, %struct.barney*, %struct.foo*, i32, i32 }
+%struct.hoge = type { ptr, ptr, ptr, i32, i32, ptr, i32, i32, i32, i32, double, i32, i32, i32, ptr, [4 x ptr], [4 x ptr], [4 x ptr], [16 x i8], [16 x i8], [16 x i8], i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i16, i16, i32, i32, i32, i32, i32, i32, i32, [4 x ptr], i32, i32, i32, [10 x i32], i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
+%struct.widget = type { ptr, ptr, ptr, ptr, ptr, i32, %struct.hoge.0, i32, i64, ptr, i32, ptr, i32, i32 }
+%struct.quux = type { ptr, ptr, ptr, i32, i32 }
 %struct.hoge.0 = type { [8 x i32], [48 x i8] }
-%struct.barney = type { i8* (%struct.quux*, i32, i64)*, i8* (%struct.quux*, i32, i64)*, i8** (%struct.quux*, i32, i32, i32)*, [64 x i16]** (%struct.quux*, i32, i32, i32)*, %struct.ham* (%struct.quux*, i32, i32, i32, i32, i32)*, %struct.wombat* (%struct.quux*, i32, i32, i32, i32, i32)*, {}*, i8** (%struct.quux*, %struct.ham*, i32, i32, i32)*, [64 x i16]** (%struct.quux*, %struct.wombat*, i32, i32, i32)*, void (%struct.quux*, i32)*, {}*, i64 }
+%struct.barney = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64 }
 %struct.ham = type opaque
 %struct.wombat = type opaque
-%struct.foo = type { {}*, i64, i64, i32, i32 }
-%struct.wibble = type { i8*, i64, void (%struct.hoge*)*, i32 (%struct.hoge*)*, void (%struct.hoge*)* }
-%struct.foo.1 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.hoge.2*, i8* }
+%struct.foo = type { ptr, i64, i64, i32, i32 }
+%struct.wibble = type { ptr, i64, ptr, ptr, ptr }
+%struct.foo.1 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr }
 %struct.hoge.2 = type { [64 x i16], i32 }
 %struct.blam = type { [17 x i8], [256 x i8], i32 }
 %struct.barney.3 = type { i32, [4 x i32], i32, i32, i32, i32 }
-%struct.foo.4 = type { void (%struct.hoge*)*, void (%struct.hoge*)*, void (%struct.hoge*)*, i32, i32 }
-%struct.wombat.5 = type { void (%struct.hoge*, i32)*, void (%struct.hoge*, i8**, i32*, i32)* }
-%struct.blam.6 = type { void (%struct.hoge*, i32)*, void (%struct.hoge*, i8**, i32*, i32, i8***, i32*, i32)* }
-%struct.foo.7 = type { void (%struct.hoge*, i32)*, i32 (%struct.hoge*, i8***)* }
-%struct.bar = type { void (%struct.hoge*, i32, i8*, i32)*, void (%struct.hoge*)*, void (%struct.hoge*)*, void (%struct.hoge*)*, void (%struct.hoge*)*, void (%struct.hoge*)* }
-%struct.wibble.8 = type { void (%struct.hoge*)*, void (%struct.hoge*, i8**, i8***, i32, i32)* }
-%struct.barney.9 = type { void (%struct.hoge*)*, void (%struct.hoge*, i8***, i32, i8***, i32)*, i32 }
-%struct.hoge.10 = type { void (%struct.hoge*)*, void (%struct.hoge*, %struct.foo.1*, i8**, [64 x i16]*, i32, i32, i32)* }
-%struct.bar.11 = type { {}*, i32 (%struct.hoge*, [64 x i16]**)*, void (%struct.hoge*)* }
+%struct.foo.4 = type { ptr, ptr, ptr, i32, i32 }
+%struct.wombat.5 = type { ptr, ptr }
+%struct.blam.6 = type { ptr, ptr }
+%struct.foo.7 = type { ptr, ptr }
+%struct.bar = type { ptr, ptr, ptr, ptr, ptr, ptr }
+%struct.wibble.8 = type { ptr, ptr }
+%struct.barney.9 = type { ptr, ptr, i32 }
+%struct.hoge.10 = type { ptr, ptr }
+%struct.bar.11 = type { ptr, ptr, ptr }
 
 ; Function Attrs: nounwind uwtable
-define void @foo(%struct.hoge* %arg) #0 {
+define void @foo(ptr %arg) #0 {
 bb:
   br label %bb2
 
 bb2:                                              ; preds = %bb
-  %tmp3 = getelementptr inbounds %struct.hoge, %struct.hoge* %arg, i32 0, i32 42
-  %tmp4 = getelementptr inbounds [4 x %struct.foo.1*], [4 x %struct.foo.1*]* %tmp3, i64 0, i64 0
-  %tmp = load %struct.foo.1*, %struct.foo.1** %tmp4, align 8, !tbaa !1
-  %tmp5 = getelementptr inbounds %struct.foo.1, %struct.foo.1* %tmp, i32 0, i32 7
-  %tmp6 = load i32, i32* %tmp5, align 4, !tbaa !5
-  %tmp7 = getelementptr inbounds %struct.hoge, %struct.hoge* %arg, i32 0, i32 43
-  store i32 %tmp6, i32* %tmp7, align 8, !tbaa !8
+  %tmp3 = getelementptr inbounds %struct.hoge, ptr %arg, i32 0, i32 42
+  %tmp = load ptr, ptr %tmp3, align 8, !tbaa !1
+  %tmp5 = getelementptr inbounds %struct.foo.1, ptr %tmp, i32 0, i32 7
+  %tmp6 = load i32, ptr %tmp5, align 4, !tbaa !5
+  %tmp7 = getelementptr inbounds %struct.hoge, ptr %arg, i32 0, i32 43
+  store i32 %tmp6, ptr %tmp7, align 8, !tbaa !8
   br i1 false, label %bb8, label %bb9
 
 bb8:                                              ; preds = %bb2

diff  --git a/polly/test/CodeGen/hoisting_2.ll b/polly/test/CodeGen/hoisting_2.ll
index b9ed30ba24b98..1f1be11c2d98c 100644
--- a/polly/test/CodeGen/hoisting_2.ll
+++ b/polly/test/CodeGen/hoisting_2.ll
@@ -2,45 +2,42 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.hoge = type { %struct.widget*, %struct.barney*, %struct.foo*, i32, i32, %struct.wibble*, i32, i32, i32, i32, double, i32, i32, i32, %struct.foo.1*, [4 x %struct.hoge.2*], [4 x %struct.blam*], [4 x %struct.blam*], [16 x i8], [16 x i8], [16 x i8], i32, %struct.barney.3*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i16, i16, i32, i32, i32, i32, i32, i32, i32, [4 x %struct.foo.1*], i32, i32, i32, [10 x i32], i32, i32, i32, i32, %struct.foo.4*, %struct.wombat.5*, %struct.blam.6*, %struct.foo.7*, %struct.bar*, %struct.wibble.8*, %struct.barney.9*, %struct.hoge.10*, %struct.bar.11* }
-%struct.widget = type { void (%struct.quux*)*, void (%struct.quux*, i32)*, void (%struct.quux*)*, void (%struct.quux*, i8*)*, void (%struct.quux*)*, i32, %struct.hoge.0, i32, i64, i8**, i32, i8**, i32, i32 }
-%struct.quux = type { %struct.widget*, %struct.barney*, %struct.foo*, i32, i32 }
+%struct.hoge = type { ptr, ptr, ptr, i32, i32, ptr, i32, i32, i32, i32, double, i32, i32, i32, ptr, [4 x ptr], [4 x ptr], [4 x ptr], [16 x i8], [16 x i8], [16 x i8], i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i16, i16, i32, i32, i32, i32, i32, i32, i32, [4 x ptr], i32, i32, i32, [10 x i32], i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
+%struct.widget = type { ptr, ptr, ptr, ptr, ptr, i32, %struct.hoge.0, i32, i64, ptr, i32, ptr, i32, i32 }
+%struct.quux = type { ptr, ptr, ptr, i32, i32 }
 %struct.hoge.0 = type { [8 x i32], [48 x i8] }
-%struct.barney = type { i8* (%struct.quux*, i32, i64)*, i8* (%struct.quux*, i32, i64)*, i8** (%struct.quux*, i32, i32, i32)*, [64 x i16]** (%struct.quux*, i32, i32, i32)*, %struct.ham* (%struct.quux*, i32, i32, i32, i32, i32)*, %struct.wombat* (%struct.quux*, i32, i32, i32, i32, i32)*, {}*, i8** (%struct.quux*, %struct.ham*, i32, i32, i32)*, [64 x i16]** (%struct.quux*, %struct.wombat*, i32, i32, i32)*, void (%struct.quux*, i32)*, {}*, i64 }
+%struct.barney = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64 }
 %struct.ham = type opaque
 %struct.wombat = type opaque
-%struct.foo = type { {}*, i64, i64, i32, i32 }
-%struct.wibble = type { i8*, i64, void (%struct.hoge*)*, i32 (%struct.hoge*)*, void (%struct.hoge*)* }
-%struct.foo.1 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.hoge.2*, i8* }
+%struct.foo = type { ptr, i64, i64, i32, i32 }
+%struct.wibble = type { ptr, i64, ptr, ptr, ptr }
+%struct.foo.1 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr }
 %struct.hoge.2 = type { [64 x i16], i32 }
 %struct.blam = type { [17 x i8], [256 x i8], i32 }
 %struct.barney.3 = type { i32, [4 x i32], i32, i32, i32, i32 }
-%struct.foo.4 = type { void (%struct.hoge*)*, void (%struct.hoge*)*, void (%struct.hoge*)*, i32, i32 }
-%struct.wombat.5 = type { void (%struct.hoge*, i32)*, void (%struct.hoge*, i8**, i32*, i32)* }
-%struct.blam.6 = type { void (%struct.hoge*, i32)*, void (%struct.hoge*, i8**, i32*, i32, i8***, i32*, i32)* }
-%struct.foo.7 = type { void (%struct.hoge*, i32)*, i32 (%struct.hoge*, i8***)* }
-%struct.bar = type { void (%struct.hoge*, i32, i8*, i32)*, void (%struct.hoge*)*, void (%struct.hoge*)*, void (%struct.hoge*)*, void (%struct.hoge*)*, void (%struct.hoge*)* }
-%struct.wibble.8 = type { void (%struct.hoge*)*, void (%struct.hoge*, i8**, i8***, i32, i32)* }
-%struct.barney.9 = type { void (%struct.hoge*)*, void (%struct.hoge*, i8***, i32, i8***, i32)*, i32 }
-%struct.hoge.10 = type { void (%struct.hoge*)*, void (%struct.hoge*, %struct.foo.1*, i8**, [64 x i16]*, i32, i32, i32)* }
-%struct.bar.11 = type { {}*, i32 (%struct.hoge*, [64 x i16]**)*, void (%struct.hoge*)* }
+%struct.foo.4 = type { ptr, ptr, ptr, i32, i32 }
+%struct.wombat.5 = type { ptr, ptr }
+%struct.blam.6 = type { ptr, ptr }
+%struct.foo.7 = type { ptr, ptr }
+%struct.bar = type { ptr, ptr, ptr, ptr, ptr, ptr }
+%struct.wibble.8 = type { ptr, ptr }
+%struct.barney.9 = type { ptr, ptr, i32 }
+%struct.hoge.10 = type { ptr, ptr }
+%struct.bar.11 = type { ptr, ptr, ptr }
 %struct.foo.12 = type { %struct.foo.4, i32, i32, i32, i32 }
 
 ; Function Attrs: nounwind uwtable
-define void @eggs(%struct.hoge* %arg) #0 {
+define void @eggs(ptr %arg) #0 {
 bb:
-  %tmp = load %struct.barney.3*, %struct.barney.3** undef, align 8, !tbaa !1
+  %tmp = load ptr, ptr undef, align 8, !tbaa !1
   br label %bb5
 
 bb5:                                              ; preds = %bb
-  %tmp6 = getelementptr inbounds %struct.hoge, %struct.hoge* %arg, i32 0, i32 51
-  %tmp7 = load %struct.foo.4*, %struct.foo.4** %tmp6, align 8, !tbaa !9
-  %tmp8 = bitcast %struct.foo.4* %tmp7 to %struct.foo.12*
-  %tmp9 = getelementptr inbounds %struct.foo.12, %struct.foo.12* %tmp8, i32 0, i32 4
-  %tmp10 = load i32, i32* %tmp9, align 4, !tbaa !10
-  %tmp11 = getelementptr inbounds %struct.barney.3, %struct.barney.3* %tmp, i64 0
-  %tmp12 = getelementptr inbounds %struct.barney.3, %struct.barney.3* %tmp11, i32 0, i32 0
-  %tmp151 = load i32, i32* %tmp12, align 4, !tbaa !13
+  %tmp6 = getelementptr inbounds %struct.hoge, ptr %arg, i32 0, i32 51
+  %tmp7 = load ptr, ptr %tmp6, align 8, !tbaa !9
+  %tmp9 = getelementptr inbounds %struct.foo.12, ptr %tmp7, i32 0, i32 4
+  %tmp10 = load i32, ptr %tmp9, align 4, !tbaa !10
+  %tmp151 = load i32, ptr %tmp, align 4, !tbaa !13
   %tmp162 = icmp slt i32 0, %tmp151
   br i1 %tmp162, label %bb17.lr.ph, label %bb22
 
@@ -50,11 +47,11 @@ bb17.lr.ph:                                       ; preds = %bb5
 bb17:                                             ; preds = %bb17.lr.ph, %bb17
   %tmp143 = phi i32 [ 0, %bb17.lr.ph ], [ %tmp21, %bb17 ]
   %tmp18 = sext i32 %tmp143 to i64
-  %tmp19 = getelementptr inbounds %struct.hoge, %struct.hoge* %arg, i32 0, i32 42
-  %tmp20 = getelementptr inbounds [4 x %struct.foo.1*], [4 x %struct.foo.1*]* %tmp19, i64 0, i64 %tmp18
-  store %struct.foo.1* undef, %struct.foo.1** %tmp20, align 8, !tbaa !15
+  %tmp19 = getelementptr inbounds %struct.hoge, ptr %arg, i32 0, i32 42
+  %tmp20 = getelementptr inbounds [4 x ptr], ptr %tmp19, i64 0, i64 %tmp18
+  store ptr undef, ptr %tmp20, align 8, !tbaa !15
   %tmp21 = add nsw i32 %tmp143, 1
-  %tmp15 = load i32, i32* %tmp12, align 4, !tbaa !13
+  %tmp15 = load i32, ptr %tmp, align 4, !tbaa !13
   %tmp16 = icmp slt i32 %tmp21, %tmp15
   br i1 %tmp16, label %bb17, label %bb13.bb22_crit_edge
 

diff  --git a/polly/test/CodeGen/if-conditions-in-vector-code.ll b/polly/test/CodeGen/if-conditions-in-vector-code.ll
index 7deaca0515dcb..0b1897e48c492 100644
--- a/polly/test/CodeGen/if-conditions-in-vector-code.ll
+++ b/polly/test/CodeGen/if-conditions-in-vector-code.ll
@@ -23,7 +23,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; CHECK: polly.split_new_and_old
 
-define void @foo(float* %A) {
+define void @foo(ptr %A) {
 bb:
   br label %bb1
 
@@ -38,10 +38,10 @@ bb2:                                              ; preds = %bb1
   br i1 %tmp3, label %bb8, label %bb4
 
 bb4:                                              ; preds = %bb2
-  %tmp5 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp6 = load float, float* %tmp5, align 4
+  %tmp5 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp6 = load float, ptr %tmp5, align 4
   %tmp7 = fadd float %tmp6, 2.000000e+00
-  store float %tmp7, float* %tmp5, align 4
+  store float %tmp7, ptr %tmp5, align 4
   br label %bb8
 
 bb8:                                              ; preds = %bb2, %bb4
@@ -50,10 +50,10 @@ bb8:                                              ; preds = %bb2, %bb4
   br i1 %tmp10, label %bb15, label %bb11
 
 bb11:                                             ; preds = %bb8
-  %tmp12 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp13 = load float, float* %tmp12, align 4
+  %tmp12 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp13 = load float, ptr %tmp12, align 4
   %tmp14 = fadd float %tmp13, 3.000000e+00
-  store float %tmp14, float* %tmp12, align 4
+  store float %tmp14, ptr %tmp12, align 4
   br label %bb15
 
 bb15:                                             ; preds = %bb8, %bb11

diff  --git a/polly/test/CodeGen/inner_scev_sdiv_1.ll b/polly/test/CodeGen/inner_scev_sdiv_1.ll
index 29c8dc2d63b3e..1a463fc178d10 100644
--- a/polly/test/CodeGen/inner_scev_sdiv_1.ll
+++ b/polly/test/CodeGen/inner_scev_sdiv_1.ll
@@ -13,9 +13,9 @@
 ;
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @_vorbis_apply_window(float* %d) {
+define void @_vorbis_apply_window(ptr %d) {
 entry:
-  %0 = load float*, float** undef, align 8
+  %0 = load ptr, ptr undef, align 8
   %div23.neg = sdiv i64 0, -4
   %sub24 = add i64 0, %div23.neg
   br label %for.cond.30.preheader
@@ -38,10 +38,9 @@ for.cond.60.preheader:                            ; preds = %for.body.51, %for.c
 
 for.body.51:                                      ; preds = %for.body.51, %for.body.51.lr.ph
   %indvars.iv86 = phi i64 [ %2, %for.body.51.lr.ph ], [ undef, %for.body.51 ]
-  %arrayidx53 = getelementptr inbounds float, float* %0, i64 %indvars.iv86
-  %3 = load float, float* %arrayidx53, align 4
-  %arrayidx55 = getelementptr inbounds float, float* %d, i64 0
+  %arrayidx53 = getelementptr inbounds float, ptr %0, i64 %indvars.iv86
+  %3 = load float, ptr %arrayidx53, align 4
   %mul56 = fmul float %3, undef
-  store float %mul56, float* %arrayidx55, align 4
+  store float %mul56, ptr %d, align 4
   br i1 false, label %for.body.51, label %for.cond.60.preheader
 }

diff  --git a/polly/test/CodeGen/inner_scev_sdiv_2.ll b/polly/test/CodeGen/inner_scev_sdiv_2.ll
index 9b92544330060..76138034603ed 100644
--- a/polly/test/CodeGen/inner_scev_sdiv_2.ll
+++ b/polly/test/CodeGen/inner_scev_sdiv_2.ll
@@ -9,9 +9,9 @@
 ;
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @_vorbis_apply_window(float* %d, i64 %param) {
+define void @_vorbis_apply_window(ptr %d, i64 %param) {
 entry:
-  %0 = load float*, float** undef, align 8
+  %0 = load ptr, ptr undef, align 8
   %div23.neg = sdiv i64 0, -4
   %sub24 = add i64 0, %div23.neg
   br label %for.cond.30.preheader
@@ -35,10 +35,9 @@ for.cond.60.preheader:                            ; preds = %for.body.51, %for.c
 
 for.body.51:                                      ; preds = %for.body.51, %for.body.51.lr.ph
   %indvars.iv86 = phi i64 [ %2, %for.body.51.lr.ph ], [ undef, %for.body.51 ]
-  %arrayidx53 = getelementptr inbounds float, float* %0, i64 %indvars.iv86
-  %3 = load float, float* %arrayidx53, align 4
-  %arrayidx55 = getelementptr inbounds float, float* %d, i64 0
+  %arrayidx53 = getelementptr inbounds float, ptr %0, i64 %indvars.iv86
+  %3 = load float, ptr %arrayidx53, align 4
   %mul56 = fmul float %3, undef
-  store float %mul56, float* %arrayidx55, align 4
+  store float %mul56, ptr %d, align 4
   br i1 false, label %for.body.51, label %for.cond.60.preheader
 }

diff  --git a/polly/test/CodeGen/inner_scev_sdiv_3.ll b/polly/test/CodeGen/inner_scev_sdiv_3.ll
index 50e9861c03bed..874ead14ded2a 100644
--- a/polly/test/CodeGen/inner_scev_sdiv_3.ll
+++ b/polly/test/CodeGen/inner_scev_sdiv_3.ll
@@ -7,9 +7,9 @@
 ;
 target triple = "x86_64-unknown-linux-gnu"
 
-define i64 @_vorbis_apply_window(float* %d, i64 %param) {
+define i64 @_vorbis_apply_window(ptr %d, i64 %param) {
 entry:
-  %0 = load float*, float** undef, align 8
+  %0 = load ptr, ptr undef, align 8
   %div23.neg = sdiv i64 0, -4
   %sub24 = add i64 0, %div23.neg
   br label %for.cond.30.preheader
@@ -37,10 +37,9 @@ end:
 
 for.body.51:                                      ; preds = %for.body.51, %for.body.51.lr.ph
   %indvars.iv86 = phi i64 [ %2, %for.body.51.lr.ph ], [ undef, %for.body.51 ]
-  %arrayidx53 = getelementptr inbounds float, float* %0, i64 %indvars.iv86
-  %3 = load float, float* %arrayidx53, align 4
-  %arrayidx55 = getelementptr inbounds float, float* %d, i64 0
+  %arrayidx53 = getelementptr inbounds float, ptr %0, i64 %indvars.iv86
+  %3 = load float, ptr %arrayidx53, align 4
   %mul56 = fmul float %3, undef
-  store float %mul56, float* %arrayidx55, align 4
+  store float %mul56, ptr %d, align 4
   br i1 false, label %for.body.51, label %for.cond.60.preheader
 }

diff  --git a/polly/test/CodeGen/inner_scev_sdiv_in_lb.ll b/polly/test/CodeGen/inner_scev_sdiv_in_lb.ll
index 12727b94ca497..6514e18687e47 100644
--- a/polly/test/CodeGen/inner_scev_sdiv_in_lb.ll
+++ b/polly/test/CodeGen/inner_scev_sdiv_in_lb.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   br label %bb3
@@ -34,12 +34,12 @@ bb6:                                              ; preds = %bb17, %bb5
   br i1 %tmp10, label %bb11, label %bb18
 
 bb11:                                             ; preds = %bb6
-  %tmp12 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp13 = load i32, i32* %tmp12, align 4
-  %tmp14 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv1
-  %tmp15 = load i32, i32* %tmp14, align 4
+  %tmp12 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp13 = load i32, ptr %tmp12, align 4
+  %tmp14 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv1
+  %tmp15 = load i32, ptr %tmp14, align 4
   %tmp16 = add nsw i32 %tmp15, %tmp13
-  store i32 %tmp16, i32* %tmp14, align 4
+  store i32 %tmp16, ptr %tmp14, align 4
   br label %bb17
 
 bb17:                                             ; preds = %bb11

diff  --git a/polly/test/CodeGen/inner_scev_sdiv_in_lb_invariant.ll b/polly/test/CodeGen/inner_scev_sdiv_in_lb_invariant.ll
index dff165326dcb2..032942923379d 100644
--- a/polly/test/CodeGen/inner_scev_sdiv_in_lb_invariant.ll
+++ b/polly/test/CodeGen/inner_scev_sdiv_in_lb_invariant.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 bb:
   %tmp = sdiv i32 %N, 4
   %tmp2 = sext i32 %tmp to i64
@@ -25,12 +25,12 @@ bb1:                                              ; preds = %bb11, %bb
 
 bb4:                                              ; preds = %bb1
   %tmp5 = add nsw i64 %indvars.iv, -1
-  %tmp6 = getelementptr inbounds i32, i32* %A, i64 %tmp5
-  %tmp7 = load i32, i32* %tmp6, align 4
-  %tmp8 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp9 = load i32, i32* %tmp8, align 4
+  %tmp6 = getelementptr inbounds i32, ptr %A, i64 %tmp5
+  %tmp7 = load i32, ptr %tmp6, align 4
+  %tmp8 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp9 = load i32, ptr %tmp8, align 4
   %tmp10 = add nsw i32 %tmp9, %tmp7
-  store i32 %tmp10, i32* %tmp8, align 4
+  store i32 %tmp10, ptr %tmp8, align 4
   br label %bb11
 
 bb11:                                             ; preds = %bb4

diff  --git a/polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll b/polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll
index 9481a4b50f030..f7292ca3073aa 100644
--- a/polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll
+++ b/polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %B, i32 %N) {
+define void @f(ptr %A, ptr %B, i32 %N) {
 bb:
   br label %bb1
 
@@ -24,12 +24,12 @@ bb1:                                              ; preds = %bb9, %bb
 bb2:                                              ; preds = %bb1
   %tmp = sdiv i32 %i.0, 42
   %tmp3 = sext i32 %tmp to i64
-  %tmp4 = getelementptr inbounds i32, i32* %B, i64 %tmp3
-  %tmp5 = load i32, i32* %tmp4, align 4
+  %tmp4 = getelementptr inbounds i32, ptr %B, i64 %tmp3
+  %tmp5 = load i32, ptr %tmp4, align 4
   %tmp6 = srem i32 %i.0, 3
   %tmp7 = sext i32 %tmp6 to i64
-  %tmp8 = getelementptr inbounds i32, i32* %A, i64 %tmp7
-  store i32 %tmp5, i32* %tmp8, align 4
+  %tmp8 = getelementptr inbounds i32, ptr %A, i64 %tmp7
+  store i32 %tmp5, ptr %tmp8, align 4
   br label %bb9
 
 bb9:                                              ; preds = %bb2

diff  --git a/polly/test/CodeGen/intrinsics_lifetime.ll b/polly/test/CodeGen/intrinsics_lifetime.ll
index 9aea62b87d82d..6141b3abdd8a9 100644
--- a/polly/test/CodeGen/intrinsics_lifetime.ll
+++ b/polly/test/CodeGen/intrinsics_lifetime.ll
@@ -24,7 +24,6 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 define void @jd() #0 {
 entry:
   %tmp = alloca [1024 x i32], align 16
-  %tmp3 = bitcast [1024 x i32]* %tmp to i8*
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc11, %entry
@@ -33,7 +32,7 @@ for.cond:                                         ; preds = %for.inc11, %entry
   br i1 %exitcond5, label %for.body, label %for.end13
 
 for.body:                                         ; preds = %for.cond
-  call void @llvm.lifetime.start(i64 4096, i8* %tmp3) #1
+  call void @llvm.lifetime.start(i64 4096, ptr %tmp) #1
   br label %for.cond2
 
 for.cond2:                                        ; preds = %for.inc, %for.body
@@ -43,12 +42,12 @@ for.cond2:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body4, label %for.end
 
 for.body4:                                        ; preds = %for.cond2
-  %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv1
-  %tmp6 = load i32, i32* %arrayidx, align 4
-  %arrayidx6 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
-  %tmp7 = load i32, i32* %arrayidx6, align 4
+  %arrayidx = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv1
+  %tmp6 = load i32, ptr %arrayidx, align 4
+  %arrayidx6 = getelementptr inbounds [1024 x i32], ptr %tmp, i64 0, i64 %indvars.iv3
+  %tmp7 = load i32, ptr %arrayidx6, align 4
   %add = add nsw i32 %tmp7, %tmp6
-  store i32 %add, i32* %arrayidx6, align 4
+  store i32 %add, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body4
@@ -56,11 +55,11 @@ for.inc:                                          ; preds = %for.body4
   br label %for.cond2
 
 for.end:                                          ; preds = %for.cond2
-  %arrayidx8 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
-  %tmp8 = load i32, i32* %arrayidx8, align 4
-  %arrayidx10 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv3
-  store i32 %tmp8, i32* %arrayidx10, align 4
-  call void @llvm.lifetime.end(i64 4096, i8* %tmp3) #1
+  %arrayidx8 = getelementptr inbounds [1024 x i32], ptr %tmp, i64 0, i64 %indvars.iv3
+  %tmp8 = load i32, ptr %arrayidx8, align 4
+  %arrayidx10 = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv3
+  store i32 %tmp8, ptr %arrayidx10, align 4
+  call void @llvm.lifetime.end(i64 4096, ptr %tmp) #1
   br label %for.inc11
 
 for.inc11:                                        ; preds = %for.end
@@ -72,10 +71,10 @@ for.end13:                                        ; preds = %for.cond
 }
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end(i64, ptr nocapture) #1
 
 attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="true" "use-soft-float"="false" }
 attributes #1 = { nounwind }

diff  --git a/polly/test/CodeGen/intrinsics_misc.ll b/polly/test/CodeGen/intrinsics_misc.ll
index bb5c15c850ef4..c0a52fe973293 100644
--- a/polly/test/CodeGen/intrinsics_misc.ll
+++ b/polly/test/CodeGen/intrinsics_misc.ll
@@ -3,7 +3,7 @@
 ; Verify that we remove the misc intrinsics  from the optimized SCoP.
 ;
 ; CHECK: for.body:
-; CHECK:   call {}* @llvm.invariant.start
+; CHECK:   call ptr @llvm.invariant.start
 ; CHECK: for.body4:
 ; CHECK:   call void @llvm.assume
 ; CHECK:   call i1 @llvm.expect.i1
@@ -31,7 +31,6 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 define void @jd() #0 {
 entry:
   %tmp = alloca [1024 x i32], align 16
-  %tmp3 = bitcast [1024 x i32]* @A to i8*
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc11, %entry
@@ -40,7 +39,7 @@ for.cond:                                         ; preds = %for.inc11, %entry
   br i1 %exitcond5, label %for.body, label %for.end13
 
 for.body:                                         ; preds = %for.cond
-  %lis = call {}* @llvm.invariant.start(i64 4096, i8* %tmp3) #1
+  %lis = call ptr @llvm.invariant.start(i64 4096, ptr @A) #1
   br label %for.cond2
 
 for.cond2:                                        ; preds = %for.inc, %for.body
@@ -52,13 +51,13 @@ for.cond2:                                        ; preds = %for.inc, %for.body
 for.body4:                                        ; preds = %for.cond2
   call void @llvm.assume(i1 %exitcond)
   call i1 @llvm.expect.i1(i1 %exitcond, i1 1)
-  %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv1
-  %tmp6 = load i32, i32* %arrayidx, align 4
-  %arrayidx6 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
+  %arrayidx = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv1
+  %tmp6 = load i32, ptr %arrayidx, align 4
+  %arrayidx6 = getelementptr inbounds [1024 x i32], ptr %tmp, i64 0, i64 %indvars.iv3
   call void @llvm.donothing()
-  %tmp7 = load i32, i32* %arrayidx6, align 4
+  %tmp7 = load i32, ptr %arrayidx6, align 4
   %add = add nsw i32 %tmp7, %tmp6
-  store i32 %add, i32* %arrayidx6, align 4
+  store i32 %add, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body4
@@ -66,11 +65,11 @@ for.inc:                                          ; preds = %for.body4
   br label %for.cond2
 
 for.end:                                          ; preds = %for.cond2
-  %arrayidx8 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
-  %tmp8 = load i32, i32* %arrayidx8, align 4
-  %arrayidx10 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv3
-  call void @llvm.invariant.end({}* %lis, i64 4096, i8* %tmp3) #1
-  store i32 %tmp8, i32* %arrayidx10, align 4
+  %arrayidx8 = getelementptr inbounds [1024 x i32], ptr %tmp, i64 0, i64 %indvars.iv3
+  %tmp8 = load i32, ptr %arrayidx8, align 4
+  %arrayidx10 = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv3
+  call void @llvm.invariant.end(ptr %lis, i64 4096, ptr @A) #1
+  store i32 %tmp8, ptr %arrayidx10, align 4
   br label %for.inc11
 
 for.inc11:                                        ; preds = %for.end
@@ -91,10 +90,10 @@ declare void @llvm.assume(i1) #1
 declare i1 @llvm.expect.i1(i1, i1) #1
 
 ; Function Attrs: nounwind
-declare {}* @llvm.invariant.start(i64, i8* nocapture) #1
+declare ptr @llvm.invariant.start(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind
-declare void @llvm.invariant.end({}*, i64, i8* nocapture) #1
+declare void @llvm.invariant.end(ptr, i64, ptr nocapture) #1
 
 attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="true" "use-soft-float"="false" }
 attributes #1 = { nounwind }

diff  --git a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-2.ll b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-2.ll
index 1c81d6469b822..6727247a7f044 100644
--- a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-2.ll
+++ b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-2.ll
@@ -7,41 +7,40 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.EqState.41.74.107.272.602.635.701.734.767.899.998.1229.2449.2482.2647.2680.2779.2911.3010.3036 = type { %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035*, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018*, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035* }
-%struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018 = type { i32, %struct.Production.29.62.95.260.590.623.689.722.755.887.986.1217.2437.2470.2635.2668.2767.2899.2998.3014*, i32, i32, i32, i32, %struct.anon.0.30.63.96.261.591.624.690.723.756.888.987.1218.2438.2471.2636.2669.2768.2900.2999.3015, %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021*, %struct.Code.31.64.97.262.592.625.691.724.757.889.988.1219.2439.2472.2637.2670.2769.2901.3000.3016, %struct.Code.31.64.97.262.592.625.691.724.757.889.988.1219.2439.2472.2637.2670.2769.2901.3000.3016, %struct.anon.1.32.65.98.263.593.626.692.725.758.890.989.1220.2440.2473.2638.2671.2770.2902.3001.3017, i32, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018* }
-%struct.Production.29.62.95.260.590.623.689.722.755.887.986.1217.2437.2470.2635.2668.2767.2899.2998.3014 = type { i8*, i32, %struct.anon.9.42.75.240.570.603.669.702.735.867.966.1197.2417.2450.2615.2648.2747.2879.2978.3011, i32, i8, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018*, [8 x %struct.Production.29.62.95.260.590.623.689.722.755.887.986.1217.2437.2470.2635.2668.2767.2899.2998.3014*], [8 x %struct.Declaration.13.46.79.244.574.607.673.706.739.871.970.1201.2421.2454.2619.2652.2751.2883.2982.3012*], %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035*, %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021*, %struct.Term.18.51.84.249.579.612.678.711.744.876.975.1206.2426.2459.2624.2657.2756.2888.2987.3013*, %struct.Production.29.62.95.260.590.623.689.722.755.887.986.1217.2437.2470.2635.2668.2767.2899.2998.3014* }
-%struct.anon.9.42.75.240.570.603.669.702.735.867.966.1197.2417.2450.2615.2648.2747.2879.2978.3011 = type { i32, i32, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018**, [3 x %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018*] }
-%struct.Declaration.13.46.79.244.574.607.673.706.739.871.970.1201.2421.2454.2619.2652.2751.2883.2982.3012 = type { %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021*, i32, i32 }
-%struct.Term.18.51.84.249.579.612.678.711.744.876.975.1206.2426.2459.2624.2657.2756.2888.2987.3013 = type { i32, i32, i32, i32, i32, i8*, i32, i8, %struct.Production.29.62.95.260.590.623.689.722.755.887.986.1217.2437.2470.2635.2668.2767.2899.2998.3014* }
-%struct.anon.0.30.63.96.261.591.624.690.723.756.888.987.1218.2438.2471.2636.2669.2768.2900.2999.3015 = type { i32, i32, %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021**, [3 x %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021*] }
-%struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021 = type { i32, i32, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018*, %union.anon.11.44.77.242.572.605.671.704.737.869.968.1199.2419.2452.2617.2650.2749.2881.2980.3020 }
+%struct.EqState.41.74.107.272.602.635.701.734.767.899.998.1229.2449.2482.2647.2680.2779.2911.3010.3036 = type { ptr, ptr, ptr }
+%struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018 = type { i32, ptr, i32, i32, i32, i32, %struct.anon.0.30.63.96.261.591.624.690.723.756.888.987.1218.2438.2471.2636.2669.2768.2900.2999.3015, ptr, %struct.Code.31.64.97.262.592.625.691.724.757.889.988.1219.2439.2472.2637.2670.2769.2901.3000.3016, %struct.Code.31.64.97.262.592.625.691.724.757.889.988.1219.2439.2472.2637.2670.2769.2901.3000.3016, %struct.anon.1.32.65.98.263.593.626.692.725.758.890.989.1220.2440.2473.2638.2671.2770.2902.3001.3017, i32, ptr }
+%struct.Production.29.62.95.260.590.623.689.722.755.887.986.1217.2437.2470.2635.2668.2767.2899.2998.3014 = type { ptr, i32, %struct.anon.9.42.75.240.570.603.669.702.735.867.966.1197.2417.2450.2615.2648.2747.2879.2978.3011, i32, i8, ptr, [8 x ptr], [8 x ptr], ptr, ptr, ptr, ptr }
+%struct.anon.9.42.75.240.570.603.669.702.735.867.966.1197.2417.2450.2615.2648.2747.2879.2978.3011 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Declaration.13.46.79.244.574.607.673.706.739.871.970.1201.2421.2454.2619.2652.2751.2883.2982.3012 = type { ptr, i32, i32 }
+%struct.Term.18.51.84.249.579.612.678.711.744.876.975.1206.2426.2459.2624.2657.2756.2888.2987.3013 = type { i32, i32, i32, i32, i32, ptr, i32, i8, ptr }
+%struct.anon.0.30.63.96.261.591.624.690.723.756.888.987.1218.2438.2471.2636.2669.2768.2900.2999.3015 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021 = type { i32, i32, ptr, %union.anon.11.44.77.242.572.605.671.704.737.869.968.1199.2419.2452.2617.2650.2749.2881.2980.3020 }
 %union.anon.11.44.77.242.572.605.671.704.737.869.968.1199.2419.2452.2617.2650.2749.2881.2980.3020 = type { %struct.Unresolved.10.43.76.241.571.604.670.703.736.868.967.1198.2418.2451.2616.2649.2748.2880.2979.3019 }
-%struct.Unresolved.10.43.76.241.571.604.670.703.736.868.967.1198.2418.2451.2616.2649.2748.2880.2979.3019 = type { i8*, i32 }
-%struct.Code.31.64.97.262.592.625.691.724.757.889.988.1219.2439.2472.2637.2670.2769.2901.3000.3016 = type { i8*, i32 }
-%struct.anon.1.32.65.98.263.593.626.692.725.758.890.989.1220.2440.2473.2638.2671.2770.2902.3001.3017 = type { i32, i32, %struct.Code.31.64.97.262.592.625.691.724.757.889.988.1219.2439.2472.2637.2670.2769.2901.3000.3016**, [3 x %struct.Code.31.64.97.262.592.625.691.724.757.889.988.1219.2439.2472.2637.2670.2769.2901.3000.3016*] }
-%struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035 = type { i32, i64, %struct.anon.2.14.47.80.245.575.608.674.707.740.872.971.1202.2422.2455.2620.2653.2752.2884.2983.3022, %struct.anon.3.15.48.81.246.576.609.675.708.741.873.972.1203.2423.2456.2621.2654.2753.2885.2984.3023, %struct.VecGoto.17.50.83.248.578.611.677.710.743.875.974.1205.2425.2458.2623.2656.2755.2887.2986.3025, %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027, %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027, %struct.VecHint.22.55.88.253.583.616.682.715.748.880.979.1210.2430.2463.2628.2661.2760.2892.2991.3029, %struct.VecHint.22.55.88.253.583.616.682.715.748.880.979.1210.2430.2463.2628.2661.2760.2892.2991.3029, %struct.Scanner.27.60.93.258.588.621.687.720.753.885.984.1215.2435.2468.2633.2666.2765.2897.2996.3034, i8, i8*, i32, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035*, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035*, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018*, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018* }
-%struct.anon.2.14.47.80.245.575.608.674.707.740.872.971.1202.2422.2455.2620.2653.2752.2884.2983.3022 = type { i32, i32, %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021**, [3 x %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021*] }
-%struct.anon.3.15.48.81.246.576.609.675.708.741.873.972.1203.2423.2456.2621.2654.2753.2885.2984.3023 = type { i32, i32, %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021**, [3 x %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021*] }
-%struct.VecGoto.17.50.83.248.578.611.677.710.743.875.974.1205.2425.2458.2623.2656.2755.2887.2986.3025 = type { i32, i32, %struct.Goto.16.49.82.247.577.610.676.709.742.874.973.1204.2424.2457.2622.2655.2754.2886.2985.3024**, [3 x %struct.Goto.16.49.82.247.577.610.676.709.742.874.973.1204.2424.2457.2622.2655.2754.2886.2985.3024*] }
-%struct.Goto.16.49.82.247.577.610.676.709.742.874.973.1204.2424.2457.2622.2655.2754.2886.2985.3024 = type { %struct.Elem.12.45.78.243.573.606.672.705.738.870.969.1200.2420.2453.2618.2651.2750.2882.2981.3021*, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035* }
-%struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027 = type { i32, i32, %struct.Action.19.52.85.250.580.613.679.712.745.877.976.1207.2427.2460.2625.2658.2757.2889.2988.3026**, [3 x %struct.Action.19.52.85.250.580.613.679.712.745.877.976.1207.2427.2460.2625.2658.2757.2889.2988.3026*] }
-%struct.Action.19.52.85.250.580.613.679.712.745.877.976.1207.2427.2460.2625.2658.2757.2889.2988.3026 = type { i32, %struct.Term.18.51.84.249.579.612.678.711.744.876.975.1206.2426.2459.2624.2657.2756.2888.2987.3013*, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018*, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035*, i32, i8* }
-%struct.VecHint.22.55.88.253.583.616.682.715.748.880.979.1210.2430.2463.2628.2661.2760.2892.2991.3029 = type { i32, i32, %struct.Hint.21.54.87.252.582.615.681.714.747.879.978.1209.2429.2462.2627.2660.2759.2891.2990.3028**, [3 x %struct.Hint.21.54.87.252.582.615.681.714.747.879.978.1209.2429.2462.2627.2660.2759.2891.2990.3028*] }
-%struct.Hint.21.54.87.252.582.615.681.714.747.879.978.1209.2429.2462.2627.2660.2759.2891.2990.3028 = type { i32, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035*, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018* }
+%struct.Unresolved.10.43.76.241.571.604.670.703.736.868.967.1198.2418.2451.2616.2649.2748.2880.2979.3019 = type { ptr, i32 }
+%struct.Code.31.64.97.262.592.625.691.724.757.889.988.1219.2439.2472.2637.2670.2769.2901.3000.3016 = type { ptr, i32 }
+%struct.anon.1.32.65.98.263.593.626.692.725.758.890.989.1220.2440.2473.2638.2671.2770.2902.3001.3017 = type { i32, i32, ptr, [3 x ptr] }
+%struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035 = type { i32, i64, %struct.anon.2.14.47.80.245.575.608.674.707.740.872.971.1202.2422.2455.2620.2653.2752.2884.2983.3022, %struct.anon.3.15.48.81.246.576.609.675.708.741.873.972.1203.2423.2456.2621.2654.2753.2885.2984.3023, %struct.VecGoto.17.50.83.248.578.611.677.710.743.875.974.1205.2425.2458.2623.2656.2755.2887.2986.3025, %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027, %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027, %struct.VecHint.22.55.88.253.583.616.682.715.748.880.979.1210.2430.2463.2628.2661.2760.2892.2991.3029, %struct.VecHint.22.55.88.253.583.616.682.715.748.880.979.1210.2430.2463.2628.2661.2760.2892.2991.3029, %struct.Scanner.27.60.93.258.588.621.687.720.753.885.984.1215.2435.2468.2633.2666.2765.2897.2996.3034, i8, ptr, i32, ptr, ptr, ptr, ptr }
+%struct.anon.2.14.47.80.245.575.608.674.707.740.872.971.1202.2422.2455.2620.2653.2752.2884.2983.3022 = type { i32, i32, ptr, [3 x ptr] }
+%struct.anon.3.15.48.81.246.576.609.675.708.741.873.972.1203.2423.2456.2621.2654.2753.2885.2984.3023 = type { i32, i32, ptr, [3 x ptr] }
+%struct.VecGoto.17.50.83.248.578.611.677.710.743.875.974.1205.2425.2458.2623.2656.2755.2887.2986.3025 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Goto.16.49.82.247.577.610.676.709.742.874.973.1204.2424.2457.2622.2655.2754.2886.2985.3024 = type { ptr, ptr }
+%struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Action.19.52.85.250.580.613.679.712.745.877.976.1207.2427.2460.2625.2658.2757.2889.2988.3026 = type { i32, ptr, ptr, ptr, i32, ptr }
+%struct.VecHint.22.55.88.253.583.616.682.715.748.880.979.1210.2430.2463.2628.2661.2760.2892.2991.3029 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Hint.21.54.87.252.582.615.681.714.747.879.978.1209.2429.2462.2627.2660.2759.2891.2990.3028 = type { i32, ptr, ptr }
 %struct.Scanner.27.60.93.258.588.621.687.720.753.885.984.1215.2435.2468.2633.2666.2765.2897.2996.3034 = type { %struct.VecScanState.25.58.91.256.586.619.685.718.751.883.982.1213.2433.2466.2631.2664.2763.2895.2994.3032, %struct.VecScanStateTransition.26.59.92.257.587.620.686.719.752.884.983.1214.2434.2467.2632.2665.2764.2896.2995.3033 }
-%struct.VecScanState.25.58.91.256.586.619.685.718.751.883.982.1213.2433.2466.2631.2664.2763.2895.2994.3032 = type { i32, i32, %struct.ScanState.24.57.90.255.585.618.684.717.750.882.981.1212.2432.2465.2630.2663.2762.2894.2993.3031**, [3 x %struct.ScanState.24.57.90.255.585.618.684.717.750.882.981.1212.2432.2465.2630.2663.2762.2894.2993.3031*] }
-%struct.ScanState.24.57.90.255.585.618.684.717.750.882.981.1212.2432.2465.2630.2663.2762.2894.2993.3031 = type { i32, [256 x %struct.ScanState.24.57.90.255.585.618.684.717.750.882.981.1212.2432.2465.2630.2663.2762.2894.2993.3031*], %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027, %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027, [256 x %struct.ScanStateTransition.23.56.89.254.584.617.683.716.749.881.980.1211.2431.2464.2629.2662.2761.2893.2992.3030*] }
+%struct.VecScanState.25.58.91.256.586.619.685.718.751.883.982.1213.2433.2466.2631.2664.2763.2895.2994.3032 = type { i32, i32, ptr, [3 x ptr] }
+%struct.ScanState.24.57.90.255.585.618.684.717.750.882.981.1212.2432.2465.2630.2663.2762.2894.2993.3031 = type { i32, [256 x ptr], %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027, %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027, [256 x ptr] }
 %struct.ScanStateTransition.23.56.89.254.584.617.683.716.749.881.980.1211.2431.2464.2629.2662.2761.2893.2992.3030 = type { i32, %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027, %struct.VecAction.20.53.86.251.581.614.680.713.746.878.977.1208.2428.2461.2626.2659.2758.2890.2989.3027 }
-%struct.VecScanStateTransition.26.59.92.257.587.620.686.719.752.884.983.1214.2434.2467.2632.2665.2764.2896.2995.3033 = type { i32, i32, %struct.ScanStateTransition.23.56.89.254.584.617.683.716.749.881.980.1211.2431.2464.2629.2662.2761.2893.2992.3030**, [3 x %struct.ScanStateTransition.23.56.89.254.584.617.683.716.749.881.980.1211.2431.2464.2629.2662.2761.2893.2992.3030*] }
+%struct.VecScanStateTransition.26.59.92.257.587.620.686.719.752.884.983.1214.2434.2467.2632.2665.2764.2896.2995.3033 = type { i32, i32, ptr, [3 x ptr] }
 
 ; Function Attrs: nounwind
-declare noalias i8* @malloc() #0
+declare noalias ptr @malloc() #0
 
 ; Function Attrs: nounwind uwtable
 define void @build_eq() #1 {
 entry:
-  %call = tail call noalias i8* @malloc() #2
-  %0 = bitcast i8* %call to %struct.EqState.41.74.107.272.602.635.701.734.767.899.998.1229.2449.2482.2647.2680.2779.2911.3010.3036*
+  %call = tail call noalias ptr @malloc() #2
   br label %for.cond.preheader
 
 for.cond.preheader:                               ; preds = %for.cond.preheader, %entry
@@ -60,31 +59,27 @@ for.cond.400.preheader:                           ; preds = %for.inc.397, %for.c
   ret void
 
 for.body.321:                                     ; preds = %for.inc.397, %for.cond.316.preheader
-  %1 = load %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035*, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035** undef, align 8
-  %eq329 = getelementptr inbounds %struct.EqState.41.74.107.272.602.635.701.734.767.899.998.1229.2449.2482.2647.2680.2779.2911.3010.3036, %struct.EqState.41.74.107.272.602.635.701.734.767.899.998.1229.2449.2482.2647.2680.2779.2911.3010.3036* %0, i64 0, i32 0
+  %0 = load ptr, ptr undef, align 8
   br i1 undef, label %for.inc.397, label %land.lhs.true.331
 
 land.lhs.true.331:                                ; preds = %for.body.321
   br i1 undef, label %for.inc.397, label %if.then.334
 
 if.then.334:                                      ; preds = %land.lhs.true.331
-  %2 = load %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018*, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018** undef, align 8
+  %1 = load ptr, ptr undef, align 8
   br i1 undef, label %for.inc.397, label %land.lhs.true.369
 
 land.lhs.true.369:                                ; preds = %if.then.334
-  %n380 = getelementptr inbounds %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018, %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018* %2, i64 0, i32 6, i32 0
-  %3 = load i32, i32* %n380, align 8
+  %n380 = getelementptr inbounds %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018, ptr %1, i64 0, i32 6, i32 0
+  %2 = load i32, ptr %n380, align 8
   br i1 true, label %if.then.383, label %for.inc.397
 
 if.then.383:                                      ; preds = %land.lhs.true.369
-  %reduces_with387 = getelementptr inbounds %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035* %1, i64 0, i32 15
-  %4 = bitcast %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018** %reduces_with387 to i64*
-  %5 = load %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035*, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035** %eq329, align 8
-  %index389 = getelementptr inbounds %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035, %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035* %5, i64 0, i32 0
-  %6 = load i32, i32* %index389, align 8
-  store i32 0, i32* %index389, align 8
-  %
diff _rule392 = getelementptr inbounds %struct.EqState.41.74.107.272.602.635.701.734.767.899.998.1229.2449.2482.2647.2680.2779.2911.3010.3036, %struct.EqState.41.74.107.272.602.635.701.734.767.899.998.1229.2449.2482.2647.2680.2779.2911.3010.3036* %0, i64 0, i32 1
-  %7 = bitcast %struct.Rule.33.66.99.264.594.627.693.726.759.891.990.1221.2441.2474.2639.2672.2771.2903.3002.3018** %
diff _rule392 to i64*
+  %reduces_with387 = getelementptr inbounds %struct.State.28.61.94.259.589.622.688.721.754.886.985.1216.2436.2469.2634.2667.2766.2898.2997.3035, ptr %0, i64 0, i32 15
+  %3 = load ptr, ptr %call, align 8
+  %4 = load i32, ptr %3, align 8
+  store i32 0, ptr %3, align 8
+  %
diff _rule392 = getelementptr inbounds %struct.EqState.41.74.107.272.602.635.701.734.767.899.998.1229.2449.2482.2647.2680.2779.2911.3010.3036, ptr %call, i64 0, i32 1
   br label %for.inc.397
 
 for.inc.397:                                      ; preds = %if.then.383, %land.lhs.true.369, %if.then.334, %land.lhs.true.331, %for.body.321

diff  --git a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-3.ll b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-3.ll
index 426b59fda7221..a573049c8f673 100644
--- a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-3.ll
+++ b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-3.ll
@@ -7,27 +7,25 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.colocated_params = type { i32, i32, i32, [6 x [33 x i64]], i8***, i64***, i16****, i8**, [6 x [33 x i64]], i8***, i64***, i16****, i8**, [6 x [33 x i64]], i8***, i64***, i16****, i8**, i8, i8** }
-%struct.storable_picture9 = type { i32, i32, i32, i32, i32, [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16**, i16***, i8*, i16**, i8***, i64***, i64***, i16****, i8**, i8**, %struct.storable_picture9*, %struct.storable_picture9*, %struct.storable_picture9*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i32], i32, %struct.DecRefPicMarking_s*, i32 }
-%struct.DecRefPicMarking_s = type { i32, i32, i32, i32, i32, %struct.DecRefPicMarking_s* }
+%struct.colocated_params = type { i32, i32, i32, [6 x [33 x i64]], ptr, ptr, ptr, ptr, [6 x [33 x i64]], ptr, ptr, ptr, ptr, [6 x [33 x i64]], ptr, ptr, ptr, ptr, i8, ptr }
+%struct.storable_picture9 = type { i32, i32, i32, i32, i32, [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i32], i32, ptr, i32 }
+%struct.DecRefPicMarking_s = type { i32, i32, i32, i32, i32, ptr }
 
 ; Function Attrs: nounwind uwtable
-define void @compute_colocated(%struct.colocated_params* %p) #0 {
+define void @compute_colocated(ptr %p) #0 {
 entry:
-  %tmp = load %struct.storable_picture9*, %struct.storable_picture9** undef, align 8
+  %tmp = load ptr, ptr undef, align 8
   br label %for.body.393
 
 for.body.393:                                     ; preds = %if.end.549, %entry
   br i1 undef, label %if.then.397, label %if.else.643
 
 if.then.397:                                      ; preds = %for.body.393
-  %ref_idx456 = getelementptr inbounds %struct.storable_picture9, %struct.storable_picture9* %tmp, i64 0, i32 36
-  %tmp1 = load i8***, i8**** %ref_idx456, align 8
-  %tmp2 = load i8**, i8*** %tmp1, align 8
-  %arrayidx458 = getelementptr inbounds i8*, i8** %tmp2, i64 0
-  %tmp3 = load i8*, i8** %arrayidx458, align 8
-  %arrayidx459 = getelementptr inbounds i8, i8* %tmp3, i64 0
-  %tmp4 = load i8, i8* %arrayidx459, align 1
+  %ref_idx456 = getelementptr inbounds %struct.storable_picture9, ptr %tmp, i64 0, i32 36
+  %tmp1 = load ptr, ptr %ref_idx456, align 8
+  %tmp2 = load ptr, ptr %tmp1, align 8
+  %tmp3 = load ptr, ptr %tmp2, align 8
+  %tmp4 = load i8, ptr %tmp3, align 1
   %cmp461 = icmp eq i8 %tmp4, -1
   br i1 %cmp461, label %if.then.463, label %if.else.476
 
@@ -35,35 +33,31 @@ if.then.463:                                      ; preds = %if.then.397
   br label %if.end.501
 
 if.else.476:                                      ; preds = %if.then.397
-  %ref_id491 = getelementptr inbounds %struct.storable_picture9, %struct.storable_picture9* %tmp, i64 0, i32 38
-  %tmp5 = load i64***, i64**** %ref_id491, align 8
+  %ref_id491 = getelementptr inbounds %struct.storable_picture9, ptr %tmp, i64 0, i32 38
+  %tmp5 = load ptr, ptr %ref_id491, align 8
   br label %if.end.501
 
 if.end.501:                                       ; preds = %if.else.476, %if.then.463
-  %tmp6 = load i8***, i8**** %ref_idx456, align 8
-  %arrayidx505 = getelementptr inbounds i8**, i8*** %tmp6, i64 1
-  %tmp7 = load i8**, i8*** %arrayidx505, align 8
-  %arrayidx506 = getelementptr inbounds i8*, i8** %tmp7, i64 0
-  %tmp8 = load i8*, i8** %arrayidx506, align 8
-  %arrayidx507 = getelementptr inbounds i8, i8* %tmp8, i64 0
-  %tmp9 = load i8, i8* %arrayidx507, align 1
+  %tmp6 = load ptr, ptr %ref_idx456, align 8
+  %arrayidx505 = getelementptr inbounds ptr, ptr %tmp6, i64 1
+  %tmp7 = load ptr, ptr %arrayidx505, align 8
+  %tmp8 = load ptr, ptr %tmp7, align 8
+  %tmp9 = load i8, ptr %tmp8, align 1
   %cmp509 = icmp eq i8 %tmp9, -1
-  %ref_idx514 = getelementptr inbounds %struct.colocated_params, %struct.colocated_params* %p, i64 0, i32 4
-  %tmp10 = load i8***, i8**** %ref_idx514, align 8
-  %arrayidx515 = getelementptr inbounds i8**, i8*** %tmp10, i64 1
-  %tmp11 = load i8**, i8*** %arrayidx515, align 8
-  %arrayidx516 = getelementptr inbounds i8*, i8** %tmp11, i64 0
-  %tmp12 = load i8*, i8** %arrayidx516, align 8
-  %arrayidx517 = getelementptr inbounds i8, i8* %tmp12, i64 0
+  %ref_idx514 = getelementptr inbounds %struct.colocated_params, ptr %p, i64 0, i32 4
+  %tmp10 = load ptr, ptr %ref_idx514, align 8
+  %arrayidx515 = getelementptr inbounds ptr, ptr %tmp10, i64 1
+  %tmp11 = load ptr, ptr %arrayidx515, align 8
+  %tmp12 = load ptr, ptr %tmp11, align 8
   br i1 %cmp509, label %if.then.511, label %if.else.524
 
 if.then.511:                                      ; preds = %if.end.501
   br label %if.end.549
 
 if.else.524:                                      ; preds = %if.end.501
-  store i8 %tmp9, i8* %arrayidx517, align 1
-  %ref_id539 = getelementptr inbounds %struct.storable_picture9, %struct.storable_picture9* %tmp, i64 0, i32 38
-  %tmp13 = load i64***, i64**** %ref_id539, align 8
+  store i8 %tmp9, ptr %tmp12, align 1
+  %ref_id539 = getelementptr inbounds %struct.storable_picture9, ptr %tmp, i64 0, i32 38
+  %tmp13 = load ptr, ptr %ref_id539, align 8
   br label %if.end.549
 
 if.end.549:                                       ; preds = %if.else.524, %if.then.511

diff  --git a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order.ll b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order.ll
index bcc504c9e3f36..e05ca99514342 100644
--- a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order.ll
+++ b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order.ll
@@ -7,41 +7,40 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606 = type { %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605*, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588*, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605* }
-%struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588 = type { i32, %struct.Production.29.62.95.326.491.854.920.953.986.1052.2040.2139.2172.2584*, i32, i32, i32, i32, %struct.anon.0.30.63.96.327.492.855.921.954.987.1053.2041.2140.2173.2585, %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591*, %struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586, %struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586, %struct.anon.1.32.65.98.329.494.857.923.956.989.1055.2043.2142.2175.2587, i32, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588* }
-%struct.Production.29.62.95.326.491.854.920.953.986.1052.2040.2139.2172.2584 = type { i8*, i32, %struct.anon.9.42.75.306.471.834.900.933.966.1032.2020.2119.2152.2581, i32, i8, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588*, [8 x %struct.Production.29.62.95.326.491.854.920.953.986.1052.2040.2139.2172.2584*], [8 x %struct.Declaration.13.46.79.310.475.838.904.937.970.1036.2024.2123.2156.2582*], %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605*, %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591*, %struct.Term.18.51.84.315.480.843.909.942.975.1041.2029.2128.2161.2583*, %struct.Production.29.62.95.326.491.854.920.953.986.1052.2040.2139.2172.2584* }
-%struct.anon.9.42.75.306.471.834.900.933.966.1032.2020.2119.2152.2581 = type { i32, i32, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588**, [3 x %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588*] }
-%struct.Declaration.13.46.79.310.475.838.904.937.970.1036.2024.2123.2156.2582 = type { %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591*, i32, i32 }
-%struct.Term.18.51.84.315.480.843.909.942.975.1041.2029.2128.2161.2583 = type { i32, i32, i32, i32, i32, i8*, i32, i8, %struct.Production.29.62.95.326.491.854.920.953.986.1052.2040.2139.2172.2584* }
-%struct.anon.0.30.63.96.327.492.855.921.954.987.1053.2041.2140.2173.2585 = type { i32, i32, %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591**, [3 x %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591*] }
-%struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591 = type { i32, i32, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588*, %union.anon.11.44.77.308.473.836.902.935.968.1034.2022.2121.2154.2590 }
+%struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606 = type { ptr, ptr, ptr }
+%struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588 = type { i32, ptr, i32, i32, i32, i32, %struct.anon.0.30.63.96.327.492.855.921.954.987.1053.2041.2140.2173.2585, ptr, %struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586, %struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586, %struct.anon.1.32.65.98.329.494.857.923.956.989.1055.2043.2142.2175.2587, i32, ptr }
+%struct.Production.29.62.95.326.491.854.920.953.986.1052.2040.2139.2172.2584 = type { ptr, i32, %struct.anon.9.42.75.306.471.834.900.933.966.1032.2020.2119.2152.2581, i32, i8, ptr, [8 x ptr], [8 x ptr], ptr, ptr, ptr, ptr }
+%struct.anon.9.42.75.306.471.834.900.933.966.1032.2020.2119.2152.2581 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Declaration.13.46.79.310.475.838.904.937.970.1036.2024.2123.2156.2582 = type { ptr, i32, i32 }
+%struct.Term.18.51.84.315.480.843.909.942.975.1041.2029.2128.2161.2583 = type { i32, i32, i32, i32, i32, ptr, i32, i8, ptr }
+%struct.anon.0.30.63.96.327.492.855.921.954.987.1053.2041.2140.2173.2585 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591 = type { i32, i32, ptr, %union.anon.11.44.77.308.473.836.902.935.968.1034.2022.2121.2154.2590 }
 %union.anon.11.44.77.308.473.836.902.935.968.1034.2022.2121.2154.2590 = type { %struct.Unresolved.10.43.76.307.472.835.901.934.967.1033.2021.2120.2153.2589 }
-%struct.Unresolved.10.43.76.307.472.835.901.934.967.1033.2021.2120.2153.2589 = type { i8*, i32 }
-%struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586 = type { i8*, i32 }
-%struct.anon.1.32.65.98.329.494.857.923.956.989.1055.2043.2142.2175.2587 = type { i32, i32, %struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586**, [3 x %struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586*] }
-%struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605 = type { i32, i64, %struct.anon.2.14.47.80.311.476.839.905.938.971.1037.2025.2124.2157.2592, %struct.anon.3.15.48.81.312.477.840.906.939.972.1038.2026.2125.2158.2593, %struct.VecGoto.17.50.83.314.479.842.908.941.974.1040.2028.2127.2160.2595, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecHint.22.55.88.319.484.847.913.946.979.1045.2033.2132.2165.2599, %struct.VecHint.22.55.88.319.484.847.913.946.979.1045.2033.2132.2165.2599, %struct.Scanner.27.60.93.324.489.852.918.951.984.1050.2038.2137.2170.2604, i8, i8*, i32, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605*, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605*, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588*, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588* }
-%struct.anon.2.14.47.80.311.476.839.905.938.971.1037.2025.2124.2157.2592 = type { i32, i32, %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591**, [3 x %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591*] }
-%struct.anon.3.15.48.81.312.477.840.906.939.972.1038.2026.2125.2158.2593 = type { i32, i32, %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591**, [3 x %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591*] }
-%struct.VecGoto.17.50.83.314.479.842.908.941.974.1040.2028.2127.2160.2595 = type { i32, i32, %struct.Goto.16.49.82.313.478.841.907.940.973.1039.2027.2126.2159.2594**, [3 x %struct.Goto.16.49.82.313.478.841.907.940.973.1039.2027.2126.2159.2594*] }
-%struct.Goto.16.49.82.313.478.841.907.940.973.1039.2027.2126.2159.2594 = type { %struct.Elem.12.45.78.309.474.837.903.936.969.1035.2023.2122.2155.2591*, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605* }
-%struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597 = type { i32, i32, %struct.Action.19.52.85.316.481.844.910.943.976.1042.2030.2129.2162.2596**, [3 x %struct.Action.19.52.85.316.481.844.910.943.976.1042.2030.2129.2162.2596*] }
-%struct.Action.19.52.85.316.481.844.910.943.976.1042.2030.2129.2162.2596 = type { i32, %struct.Term.18.51.84.315.480.843.909.942.975.1041.2029.2128.2161.2583*, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588*, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605*, i32, i8* }
-%struct.VecHint.22.55.88.319.484.847.913.946.979.1045.2033.2132.2165.2599 = type { i32, i32, %struct.Hint.21.54.87.318.483.846.912.945.978.1044.2032.2131.2164.2598**, [3 x %struct.Hint.21.54.87.318.483.846.912.945.978.1044.2032.2131.2164.2598*] }
-%struct.Hint.21.54.87.318.483.846.912.945.978.1044.2032.2131.2164.2598 = type { i32, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605*, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588* }
+%struct.Unresolved.10.43.76.307.472.835.901.934.967.1033.2021.2120.2153.2589 = type { ptr, i32 }
+%struct.Code.31.64.97.328.493.856.922.955.988.1054.2042.2141.2174.2586 = type { ptr, i32 }
+%struct.anon.1.32.65.98.329.494.857.923.956.989.1055.2043.2142.2175.2587 = type { i32, i32, ptr, [3 x ptr] }
+%struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605 = type { i32, i64, %struct.anon.2.14.47.80.311.476.839.905.938.971.1037.2025.2124.2157.2592, %struct.anon.3.15.48.81.312.477.840.906.939.972.1038.2026.2125.2158.2593, %struct.VecGoto.17.50.83.314.479.842.908.941.974.1040.2028.2127.2160.2595, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecHint.22.55.88.319.484.847.913.946.979.1045.2033.2132.2165.2599, %struct.VecHint.22.55.88.319.484.847.913.946.979.1045.2033.2132.2165.2599, %struct.Scanner.27.60.93.324.489.852.918.951.984.1050.2038.2137.2170.2604, i8, ptr, i32, ptr, ptr, ptr, ptr }
+%struct.anon.2.14.47.80.311.476.839.905.938.971.1037.2025.2124.2157.2592 = type { i32, i32, ptr, [3 x ptr] }
+%struct.anon.3.15.48.81.312.477.840.906.939.972.1038.2026.2125.2158.2593 = type { i32, i32, ptr, [3 x ptr] }
+%struct.VecGoto.17.50.83.314.479.842.908.941.974.1040.2028.2127.2160.2595 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Goto.16.49.82.313.478.841.907.940.973.1039.2027.2126.2159.2594 = type { ptr, ptr }
+%struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Action.19.52.85.316.481.844.910.943.976.1042.2030.2129.2162.2596 = type { i32, ptr, ptr, ptr, i32, ptr }
+%struct.VecHint.22.55.88.319.484.847.913.946.979.1045.2033.2132.2165.2599 = type { i32, i32, ptr, [3 x ptr] }
+%struct.Hint.21.54.87.318.483.846.912.945.978.1044.2032.2131.2164.2598 = type { i32, ptr, ptr }
 %struct.Scanner.27.60.93.324.489.852.918.951.984.1050.2038.2137.2170.2604 = type { %struct.VecScanState.25.58.91.322.487.850.916.949.982.1048.2036.2135.2168.2602, %struct.VecScanStateTransition.26.59.92.323.488.851.917.950.983.1049.2037.2136.2169.2603 }
-%struct.VecScanState.25.58.91.322.487.850.916.949.982.1048.2036.2135.2168.2602 = type { i32, i32, %struct.ScanState.24.57.90.321.486.849.915.948.981.1047.2035.2134.2167.2601**, [3 x %struct.ScanState.24.57.90.321.486.849.915.948.981.1047.2035.2134.2167.2601*] }
-%struct.ScanState.24.57.90.321.486.849.915.948.981.1047.2035.2134.2167.2601 = type { i32, [256 x %struct.ScanState.24.57.90.321.486.849.915.948.981.1047.2035.2134.2167.2601*], %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, [256 x %struct.ScanStateTransition.23.56.89.320.485.848.914.947.980.1046.2034.2133.2166.2600*] }
+%struct.VecScanState.25.58.91.322.487.850.916.949.982.1048.2036.2135.2168.2602 = type { i32, i32, ptr, [3 x ptr] }
+%struct.ScanState.24.57.90.321.486.849.915.948.981.1047.2035.2134.2167.2601 = type { i32, [256 x ptr], %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, [256 x ptr] }
 %struct.ScanStateTransition.23.56.89.320.485.848.914.947.980.1046.2034.2133.2166.2600 = type { i32, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597, %struct.VecAction.20.53.86.317.482.845.911.944.977.1043.2031.2130.2163.2597 }
-%struct.VecScanStateTransition.26.59.92.323.488.851.917.950.983.1049.2037.2136.2169.2603 = type { i32, i32, %struct.ScanStateTransition.23.56.89.320.485.848.914.947.980.1046.2034.2133.2166.2600**, [3 x %struct.ScanStateTransition.23.56.89.320.485.848.914.947.980.1046.2034.2133.2166.2600*] }
+%struct.VecScanStateTransition.26.59.92.323.488.851.917.950.983.1049.2037.2136.2169.2603 = type { i32, i32, ptr, [3 x ptr] }
 
 ; Function Attrs: nounwind
-declare noalias i8* @malloc() #0
+declare noalias ptr @malloc() #0
 
 ; Function Attrs: nounwind uwtable
 define void @build_eq() #1 {
 entry:
-  %call = tail call noalias i8* @malloc() #2
-  %0 = bitcast i8* %call to %struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606*
+  %call = tail call noalias ptr @malloc() #2
   br label %for.cond.preheader
 
 for.cond.preheader:                               ; preds = %for.cond.preheader, %entry
@@ -54,30 +53,28 @@ for.cond.400.preheader:                           ; preds = %for.inc.397, %for.c
   br i1 undef, label %for.end.423, label %for.body.405
 
 for.body.321:                                     ; preds = %for.inc.397, %for.cond.316.preheader
-  %eq329 = getelementptr inbounds %struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606, %struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606* %0, i64 0, i32 0
   br i1 undef, label %for.inc.397, label %land.lhs.true.331
 
 land.lhs.true.331:                                ; preds = %for.body.321
   br i1 undef, label %for.inc.397, label %if.then.334
 
 if.then.334:                                      ; preds = %land.lhs.true.331
-  %1 = load %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605*, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605** %eq329, align 8
-  %2 = load %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588*, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588** undef, align 8
+  %0 = load ptr, ptr %call, align 8
+  %1 = load ptr, ptr undef, align 8
   br i1 undef, label %for.inc.397, label %land.lhs.true.369
 
 land.lhs.true.369:                                ; preds = %if.then.334
-  %n380 = getelementptr inbounds %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588, %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588* %2, i64 0, i32 6, i32 0
-  %3 = load i32, i32* %n380, align 8
-  %cmp381 = icmp eq i32 %3, 2
+  %n380 = getelementptr inbounds %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588, ptr %1, i64 0, i32 6, i32 0
+  %2 = load i32, ptr %n380, align 8
+  %cmp381 = icmp eq i32 %2, 2
   br i1 %cmp381, label %if.then.383, label %for.inc.397
 
 if.then.383:                                      ; preds = %land.lhs.true.369
-  %reduces_to385 = getelementptr inbounds %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605* %1, i64 0, i32 14
-  store %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605* undef, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605** %reduces_to385, align 8
-  %
diff _rule386 = getelementptr inbounds %struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606, %struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606* %0, i64 0, i32 1
-  %4 = bitcast %struct.Rule.33.66.99.330.495.858.924.957.990.1056.2044.2143.2176.2588** %
diff _rule386 to i64*
-  %5 = load i64, i64* %4, align 8
-  %6 = load %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605*, %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605** %eq329, align 8
+  %reduces_to385 = getelementptr inbounds %struct.State.28.61.94.325.490.853.919.952.985.1051.2039.2138.2171.2605, ptr %0, i64 0, i32 14
+  store ptr undef, ptr %reduces_to385, align 8
+  %
diff _rule386 = getelementptr inbounds %struct.EqState.41.74.107.338.503.866.932.965.998.1064.2052.2151.2184.2606, ptr %call, i64 0, i32 1
+  %3 = load i64, ptr %
diff _rule386, align 8
+  %4 = load ptr, ptr %call, align 8
   br label %for.inc.397
 
 for.inc.397:                                      ; preds = %if.then.383, %land.lhs.true.369, %if.then.334, %land.lhs.true.331, %for.body.321

diff  --git a/polly/test/CodeGen/invariant-load-dimension.ll b/polly/test/CodeGen/invariant-load-dimension.ll
index 4c9399dcf60fa..7793c3b3bee3c 100644
--- a/polly/test/CodeGen/invariant-load-dimension.ll
+++ b/polly/test/CodeGen/invariant-load-dimension.ll
@@ -6,7 +6,7 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"
 %S = type { i32, i32, [12 x %L] }
 %L = type { i32, i32, double, i32, i32, i32, i32, i32 }
 
-define void @test(%S* %cpi, i1 %b) {
+define void @test(ptr %cpi, i1 %b) {
 ; SCOPS-LABEL: Region: %if.then14---%exit
 ; SCOPS:         Invariant Accesses: {
 ; SCOPS-NEXT:            ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
@@ -26,26 +26,25 @@ define void @test(%S* %cpi, i1 %b) {
 ; CODEGEN-NEXT:  br i1 false
 
 entry:
-  %nt = getelementptr inbounds %S, %S* %cpi, i32 0, i32 1
+  %nt = getelementptr inbounds %S, ptr %cpi, i32 0, i32 1
   br i1 %b, label %if.then14, label %exit
 
 if.then14:
-  %ns = getelementptr inbounds %S, %S* %cpi, i32 0, i32 0
-  %l0 = load i32, i32* %ns, align 8
+  %l0 = load i32, ptr %cpi, align 8
   %cmp12.i = icmp sgt i32 %l0, 0
   br i1 %cmp12.i, label %for.body.lr.ph.i, label %exit
 
 for.body.lr.ph.i:
-  %l1 = load i32, i32* %nt, align 4
+  %l1 = load i32, ptr %nt, align 4
   br label %for.body.i
 
 for.body.i:
   %phi = phi i32 [ 0, %for.body.lr.ph.i ], [ %inc, %for.body.i ]
   %mul.i163 = mul nsw i32 %phi, %l1
-  %cv = getelementptr inbounds %S, %S* %cpi, i32 0, i32 2, i32 %mul.i163, i32 0
-  store i32 0, i32* %cv, align 8
+  %cv = getelementptr inbounds %S, ptr %cpi, i32 0, i32 2, i32 %mul.i163, i32 0
+  store i32 0, ptr %cv, align 8
   %inc = add nuw nsw i32 %phi, 1
-  %l2 = load i32, i32* %ns, align 8
+  %l2 = load i32, ptr %cpi, align 8
   %cmp.i164 = icmp slt i32 %inc, %l2
   br i1 %cmp.i164, label %for.body.i, label %exit
 

diff  --git a/polly/test/CodeGen/invariant-load-preload-base-pointer-origin-first.ll b/polly/test/CodeGen/invariant-load-preload-base-pointer-origin-first.ll
index f9054954c6ebb..474100995fd87 100644
--- a/polly/test/CodeGen/invariant-load-preload-base-pointer-origin-first.ll
+++ b/polly/test/CodeGen/invariant-load-preload-base-pointer-origin-first.ll
@@ -5,8 +5,8 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
- at TOP = external global i64*, align 8
- at BOT = external global i64*, align 8
+ at TOP = external global ptr, align 8
+ at BOT = external global ptr, align 8
 
 define void @RemoveConstraintVCG() {
 entry:
@@ -28,23 +28,23 @@ land.lhs.true:                                    ; preds = %for.body.11
   br i1 undef, label %if.then.20, label %for.inc
 
 if.then.20:                                       ; preds = %land.lhs.true
-  %tmp = load i64*, i64** @TOP, align 8
-  %tmp1 = load i64, i64* %tmp, align 8
+  %tmp = load ptr, ptr @TOP, align 8
+  %tmp1 = load i64, ptr %tmp, align 8
   %cmp25 = icmp eq i64 %tmp1, 1
   %cmp47 = icmp eq i64 %tmp1, 0
   br i1 false, label %if.end.117, label %lor.lhs.false.85
 
 lor.lhs.false.85:                                 ; preds = %if.then.20
   %add94 = add i64 %tmp1, 1
-  %tmp2 = load i64*, i64** @TOP, align 8
-  %arrayidx95 = getelementptr inbounds i64, i64* %tmp2, i64 %add94
-  %tmp3 = load i64, i64* %arrayidx95, align 8
+  %tmp2 = load ptr, ptr @TOP, align 8
+  %arrayidx95 = getelementptr inbounds i64, ptr %tmp2, i64 %add94
+  %tmp3 = load i64, ptr %arrayidx95, align 8
   br i1 false, label %if.else.103, label %land.lhs.true.97
 
 land.lhs.true.97:                                 ; preds = %lor.lhs.false.85
-  %tmp4 = load i64*, i64** @BOT, align 8
-  %arrayidx99 = getelementptr inbounds i64, i64* %tmp4, i64 %add94
-  %tmp5 = load i64, i64* %arrayidx99, align 8
+  %tmp4 = load ptr, ptr @BOT, align 8
+  %arrayidx99 = getelementptr inbounds i64, ptr %tmp4, i64 %add94
+  %tmp5 = load i64, ptr %arrayidx99, align 8
   %tobool100 = icmp eq i64 %tmp5, 0
   br i1 %tobool100, label %if.else.103, label %if.then.101
 
@@ -52,14 +52,14 @@ if.then.101:                                      ; preds = %land.lhs.true.97
   br label %if.end.117
 
 if.else.103:                                      ; preds = %land.lhs.true.97, %lor.lhs.false.85
-  %tmp6 = load i64*, i64** @TOP, align 8
-  %arrayidx105 = getelementptr inbounds i64, i64* %tmp6, i64 %add94
-  %tmp7 = load i64, i64* %arrayidx105, align 8
+  %tmp6 = load ptr, ptr @TOP, align 8
+  %arrayidx105 = getelementptr inbounds i64, ptr %tmp6, i64 %add94
+  %tmp7 = load i64, ptr %arrayidx105, align 8
   br i1 false, label %lor.lhs.false.107, label %if.else.112
 
 lor.lhs.false.107:                                ; preds = %if.else.103
-  %tmp8 = load i64*, i64** @BOT, align 8
-  %arrayidx109 = getelementptr inbounds i64, i64* %tmp8, i64 %add94
+  %tmp8 = load ptr, ptr @BOT, align 8
+  %arrayidx109 = getelementptr inbounds i64, ptr %tmp8, i64 %add94
   br i1 false, label %if.end.117, label %if.else.112
 
 if.else.112:                                      ; preds = %lor.lhs.false.107, %if.else.103

diff  --git a/polly/test/CodeGen/invariant_cannot_handle_void.ll b/polly/test/CodeGen/invariant_cannot_handle_void.ll
index db3853372f3c3..de5d13d6a69a5 100644
--- a/polly/test/CodeGen/invariant_cannot_handle_void.ll
+++ b/polly/test/CodeGen/invariant_cannot_handle_void.ll
@@ -17,16 +17,14 @@
 ; SCOP:    }
 ;
 ; CHECK-LABEL: polly.preload.begin:
-; CHECK-NEXT:    %polly.access.cast.buff = bitcast i8* %buff to i16*
-; CHECK-NEXT:    %polly.access.buff = getelementptr i16, i16* %polly.access.cast.buff, i64 31
-; CHECK-NEXT:    %polly.access.buff.cast = bitcast i16* %polly.access.buff to i32*
-; CHECK-NEXT:    %polly.access.buff.load = load i32, i32* %polly.access.buff.cast, align 4
-; CHECK-NEXT:    store i32 %polly.access.buff.load, i32* %tmp1.preload.s2a
+; CHECK-NEXT:    %polly.access.buff = getelementptr i16, ptr %buff, i64 31
+; CHECK-NEXT:    %polly.access.buff.load = load i32, ptr %polly.access.buff, align 4
+; CHECK-NEXT:    store i32 %polly.access.buff.load, ptr %tmp1.preload.s2a
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @sudecrypt(i8* %buff) #0 {
+define void @sudecrypt(ptr %buff) #0 {
 entry:
   br i1 undef, label %cleanup, label %if.end
 
@@ -37,9 +35,8 @@ if.then.5:                                        ; preds = %if.end
   unreachable
 
 if.end.6:                                         ; preds = %if.end
-  %add.ptr = getelementptr inbounds i8, i8* %buff, i64 62
-  %tmp = bitcast i8* %add.ptr to i32*
-  %tmp1 = load i32, i32* %tmp, align 4, !tbaa !1
+  %add.ptr = getelementptr inbounds i8, ptr %buff, i64 62
+  %tmp1 = load i32, ptr %add.ptr, align 4, !tbaa !1
   br i1 false, label %if.then.13, label %switch.early.test
 
 switch.early.test:                                ; preds = %if.end.6

diff  --git a/polly/test/CodeGen/invariant_load_alias_metadata.ll b/polly/test/CodeGen/invariant_load_alias_metadata.ll
index e71349b86f4e5..5a82d82d43f8b 100644
--- a/polly/test/CodeGen/invariant_load_alias_metadata.ll
+++ b/polly/test/CodeGen/invariant_load_alias_metadata.ll
@@ -4,7 +4,7 @@
 ; This test case checks whether Polly generates alias metadata in case of
 ; the ublas gemm kernel and polly-invariant-load-hoisting.
 ;
-; CHECK: store float 4.200000e+01, float* %polly.access.A.load, align 4, !alias.scope !3, !noalias !0
+; CHECK: store float 4.200000e+01, ptr %polly.access.A.load, align 4, !alias.scope !3, !noalias !0
 ;
 ; CHECK: !0 = !{!1}
 ; CHECK-NEXT: !1 = distinct !{!1, !2, !"polly.alias.scope.MemRef_A"}
@@ -15,15 +15,15 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @nometadata(float** %A) {
+define void @nometadata(ptr %A) {
   entry:
     br label %for
 
   for:
     %indvar = phi i64 [0, %entry], [%indvar.next, %for]
     %indvar.next = add i64 %indvar, 1
-    %ptrA = load float*, float** %A
-    store float 42.0, float* %ptrA
+    %ptrA = load ptr, ptr %A
+    store float 42.0, ptr %ptrA
     %icmp = icmp sle i64 %indvar, 1024
     br i1 %icmp, label %for, label %exit
 

diff  --git a/polly/test/CodeGen/invariant_load_
diff erent_sized_types.ll b/polly/test/CodeGen/invariant_load_
diff erent_sized_types.ll
index b2e7afd1a6f74..5b91a19010615 100644
--- a/polly/test/CodeGen/invariant_load_
diff erent_sized_types.ll
+++ b/polly/test/CodeGen/invariant_load_
diff erent_sized_types.ll
@@ -4,10 +4,9 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; CHECK: polly.preload.begin:  ; preds = %polly.split_new_and_old
-; CHECK-NEXT:   %polly.access.cast.tmp2 = bitcast %struct.hoge* %tmp2 to i32*
-; CHECK-NEXT:   %polly.access.tmp2 = getelementptr i32, i32* %polly.access.cast.tmp2, i64 1
-; CHECK-NEXT:   %polly.access.tmp2.load = load i32, i32* %polly.access.tmp2, align 1
-; CHECK-NEXT:   store i32 %polly.access.tmp2.load, i32* %tmp.preload.s2a
+; CHECK-NEXT:   %polly.access.tmp2 = getelementptr i32, ptr %tmp2, i64 1
+; CHECK-NEXT:   %polly.access.tmp2.load = load i32, ptr %polly.access.tmp2, align 1
+; CHECK-NEXT:   store i32 %polly.access.tmp2.load, ptr %tmp.preload.s2a
 
 
 %struct.hoge = type { [4 x i8], i32, i32, i32, i32, i32, [16 x i8], [16 x i8], i64, i64, i64, i64, i64 }
@@ -19,15 +18,15 @@ bb:
   br label %bb3
 
 bb3:                                              ; preds = %bb
-  %tmp4 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp2, i64 0, i32 10
+  %tmp4 = getelementptr inbounds %struct.hoge, ptr %tmp2, i64 0, i32 10
   %tmp5 = add nsw i32 undef, 1
-  %tmp6 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp2, i64 0, i32 1
-  %tmp = load i32, i32* %tmp6, align 1, !tbaa !1
+  %tmp6 = getelementptr inbounds %struct.hoge, ptr %tmp2, i64 0, i32 1
+  %tmp = load i32, ptr %tmp6, align 1, !tbaa !1
   %tmp7 = icmp slt i32 %tmp, 3
   br i1 %tmp7, label %bb8, label %bb10
 
 bb8:                                              ; preds = %bb3
-  %tmp9 = load i64, i64* %tmp4, align 1, !tbaa !7
+  %tmp9 = load i64, ptr %tmp4, align 1, !tbaa !7
   br label %bb10
 
 bb10:                                             ; preds = %bb8, %bb3

diff  --git a/polly/test/CodeGen/invariant_load_escaping_second_scop.ll b/polly/test/CodeGen/invariant_load_escaping_second_scop.ll
index 4e042ec47ac2b..c0ea888acddec 100644
--- a/polly/test/CodeGen/invariant_load_escaping_second_scop.ll
+++ b/polly/test/CodeGen/invariant_load_escaping_second_scop.ll
@@ -23,17 +23,17 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %B) {
+define void @f(ptr %A, ptr %B) {
 entry:
   br label %stmt.S
 
 stmt.S:                                          ; preds = %do.cond, %entry
   %indvars.iv2 = phi i64 [ %indvars.iv.next3, %do.cond ], [ 0, %entry ]
-  %tmp = load i32, i32* %B, align 4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv2
-  %tmp4 = load i32, i32* %arrayidx, align 4
+  %tmp = load i32, ptr %B, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv2
+  %tmp4 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp4, %tmp
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %do.cond
 
 do.cond:                                          ; preds = %do.body
@@ -49,10 +49,10 @@ do.end:                                           ; preds = %do.cond
 
 stmt.P:                                        ; preds = %do.cond.5, %do.end
   %indvars.iv = phi i64 [ %indvars.iv.next, %do.cond.5 ], [ %tmp6, %do.end ]
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp7 = load i32, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp7 = load i32, ptr %arrayidx3, align 4
   %inc4 = add nsw i32 %tmp7, 1
-  store i32 %inc4, i32* %arrayidx3, align 4
+  store i32 %inc4, ptr %arrayidx3, align 4
   br label %do.cond.5
 
 do.cond.5:                                        ; preds = %do.body.1

diff  --git a/polly/test/CodeGen/invariant_load_loop_ub.ll b/polly/test/CodeGen/invariant_load_loop_ub.ll
index 0bd19276e42ef..ab9aa0dc69a7b 100644
--- a/polly/test/CodeGen/invariant_load_loop_ub.ll
+++ b/polly/test/CodeGen/invariant_load_loop_ub.ll
@@ -9,20 +9,20 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %UB) {
+define void @f(ptr %A, ptr %UB) {
 bb:
   br label %bb1
 
 bb1:                                              ; preds = %bb6, %bb
   %indvars.iv = phi i64 [ %indvars.iv.next, %bb6 ], [ 0, %bb ]
-  %tmp = load i32, i32* %UB, align 4
+  %tmp = load i32, ptr %UB, align 4
   %tmp2 = sext i32 %tmp to i64
   %tmp3 = icmp slt i64 %indvars.iv, %tmp2
   br i1 %tmp3, label %bb4, label %bb7
 
 bb4:                                              ; preds = %bb1
-  %tmp5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 0, i32* %tmp5, align 4
+  %tmp5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 0, ptr %tmp5, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb4

diff  --git a/polly/test/CodeGen/invariant_load_not_executed_but_in_parameters.ll b/polly/test/CodeGen/invariant_load_not_executed_but_in_parameters.ll
index a79dbc68378f7..08ff0871b610d 100644
--- a/polly/test/CodeGen/invariant_load_not_executed_but_in_parameters.ll
+++ b/polly/test/CodeGen/invariant_load_not_executed_but_in_parameters.ll
@@ -5,24 +5,24 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.Exp.204.248.358 = type { %struct.Exp_.200.244.354*, i32, i32, i32, %struct.Exp.204.248.358*, %struct.Exp.204.248.358*, %union.anon.2.201.245.355, %union.anon.3.202.246.356, %union.anon.4.203.247.357 }
-%struct.Exp_.200.244.354 = type { i32, i32, i32, i32, %struct.Id.199.243.353* }
-%struct.Id.199.243.353 = type { i8*, i32, i32, i32, %union.anon.1.198.242.352 }
+%struct.Exp.204.248.358 = type { ptr, i32, i32, i32, ptr, ptr, %union.anon.2.201.245.355, %union.anon.3.202.246.356, %union.anon.4.203.247.357 }
+%struct.Exp_.200.244.354 = type { i32, i32, i32, i32, ptr }
+%struct.Id.199.243.353 = type { ptr, i32, i32, i32, %union.anon.1.198.242.352 }
 %union.anon.1.198.242.352 = type { [2 x i64] }
-%union.anon.2.201.245.355 = type { %struct.Exp.204.248.358* }
+%union.anon.2.201.245.355 = type { ptr }
 %union.anon.3.202.246.356 = type { i32 }
-%union.anon.4.203.247.357 = type { %struct.Exp.204.248.358** }
-%struct.Classfile.218.262.372 = type { %struct._IO_FILE.206.250.360*, %struct._IO_FILE.206.250.360*, i32, i32, i32, %struct.ClassVersion.207.251.361, %struct.ConstPool.210.254.364, %struct.AccessFlags.211.255.365, i16, i8*, i8*, i16, i8*, i16, i16*, i16, %struct.field_info.212.256.366**, i16, %struct.method_info.217.261.371**, i8*, i16, i8**, i8* }
-%struct._IO_FILE.206.250.360 = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker.205.249.359*, %struct._IO_FILE.206.250.360*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
-%struct._IO_marker.205.249.359 = type { %struct._IO_marker.205.249.359*, %struct._IO_FILE.206.250.360*, i32 }
+%union.anon.4.203.247.357 = type { ptr }
+%struct.Classfile.218.262.372 = type { ptr, ptr, i32, i32, i32, %struct.ClassVersion.207.251.361, %struct.ConstPool.210.254.364, %struct.AccessFlags.211.255.365, i16, ptr, ptr, i16, ptr, i16, ptr, i16, ptr, i16, ptr, ptr, i16, ptr, ptr }
+%struct._IO_FILE.206.250.360 = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i64, i32, [20 x i8] }
+%struct._IO_marker.205.249.359 = type { ptr, ptr, i32 }
 %struct.ClassVersion.207.251.361 = type { i16, i16 }
-%struct.ConstPool.210.254.364 = type { i16, %struct.cp_info.209.253.363* }
+%struct.ConstPool.210.254.364 = type { i16, ptr }
 %struct.cp_info.209.253.363 = type { i8, %union.anon.208.252.362 }
 %union.anon.208.252.362 = type { i64 }
 %struct.AccessFlags.211.255.365 = type { i16 }
-%struct.field_info.212.256.366 = type <{ %struct.AccessFlags.211.255.365, [6 x i8], i8*, i8*, i32, i16, [2 x i8] }>
-%struct.method_info.217.261.371 = type { %struct.AccessFlags.211.255.365, i8*, i8*, i8, i8, i32, i8*, i16, %struct.Block.214.258.368*, i16, %struct.LineNumberTableEntry.215.259.369*, i16, %struct.LocalVariableTableEntry.216.260.370*, i8**, i8**, i32*, i32*, i8*, i32, i32, i32* }
-%struct.Block.214.258.368 = type { i32, i16, i16, %union.anon.0.213.257.367, i16, %struct.Exp.204.248.358* }
+%struct.field_info.212.256.366 = type <{ %struct.AccessFlags.211.255.365, [6 x i8], ptr, ptr, i32, i16, [2 x i8] }>
+%struct.method_info.217.261.371 = type { %struct.AccessFlags.211.255.365, ptr, ptr, i8, i8, i32, ptr, i16, ptr, i16, ptr, i16, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr }
+%struct.Block.214.258.368 = type { i32, i16, i16, %union.anon.0.213.257.367, i16, ptr }
 %union.anon.0.213.257.367 = type { i32 }
 %struct.LineNumberTableEntry.215.259.369 = type { i16, i16 }
 %struct.LocalVariableTableEntry.216.260.370 = type { i16, i16, i16, i16, i16 }
@@ -30,12 +30,12 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @currpc = external global i32, align 4
 @bufflength = external global i32, align 4
- at inbuff = external global i8*, align 8
- at stkptr = external global %struct.Exp.204.248.358**, align 8
- at donestkptr = external global %struct.Exp.204.248.358**, align 8
+ at inbuff = external global ptr, align 8
+ at stkptr = external global ptr, align 8
+ at donestkptr = external global ptr, align 8
 
 ; Function Attrs: uwtable
-define i32 @_Z13dotableswitchP9Classfile(%struct.Classfile.218.262.372* %c) #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define i32 @_Z13dotableswitchP9Classfile(ptr %c) #0 personality ptr @__gxx_personality_v0 {
 entry:
   br label %entry.split
 
@@ -48,7 +48,7 @@ while.body.lr.ph:                                 ; preds = %entry.split
   br label %while.body
 
 while.body:                                       ; preds = %while.body, %while.body.lr.ph
-  %0 = load i32, i32* @currpc, align 4
+  %0 = load i32, ptr @currpc, align 4
   %rem = and i32 %0, 3
   %tobool = icmp eq i32 %rem, 0
   br i1 %tobool, label %while.cond.while.end_crit_edge, label %while.body
@@ -57,7 +57,7 @@ while.cond.while.end_crit_edge:                   ; preds = %while.body
   br label %while.end
 
 while.end:                                        ; preds = %while.cond.while.end_crit_edge, %entry.split
-  invoke void @_ZN3ExpC2Ejj7Exptype4Type2OpPS_jjP4Case(%struct.Exp.204.248.358* nonnull undef, i32 %sub, i32 undef, i32 9, i32 0, i32 39, %struct.Exp.204.248.358* undef, i32 undef, i32 undef, %struct.Case.219.263.373* nonnull undef)
+  invoke void @_ZN3ExpC2Ejj7Exptype4Type2OpPS_jjP4Case(ptr nonnull undef, i32 %sub, i32 undef, i32 9, i32 0, i32 39, ptr undef, i32 undef, i32 undef, ptr nonnull undef)
           to label %invoke.cont unwind label %lpad
 
 invoke.cont:                                      ; preds = %while.end
@@ -70,9 +70,9 @@ for.body:                                         ; preds = %for.body, %for.body
   br i1 undef, label %for.cond.for.end_crit_edge, label %for.body
 
 lpad:                                             ; preds = %while.end
-  %1 = landingpad { i8*, i32 }
+  %1 = landingpad { ptr, i32 }
           cleanup
-  resume { i8*, i32 } undef
+  resume { ptr, i32 } undef
 
 for.cond.for.end_crit_edge:                       ; preds = %for.body
   br label %for.end
@@ -85,24 +85,24 @@ for.end:                                          ; preds = %for.cond.for.end_cr
 declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #1
 
 ; Function Attrs: nobuiltin
-declare noalias i8* @_Znam(i64) #2
+declare noalias ptr @_Znam(i64) #2
 
 ; Function Attrs: nobuiltin
-declare noalias i8* @_Znwm(i64) #2
+declare noalias ptr @_Znwm(i64) #2
 
 ; Function Attrs: uwtable
-declare void @_ZN3ExpC2Ejj7Exptype4Type2OpPS_jjP4Case(%struct.Exp.204.248.358*, i32, i32, i32, i32, i32, %struct.Exp.204.248.358*, i32, i32, %struct.Case.219.263.373*) unnamed_addr #0 align 2
+declare void @_ZN3ExpC2Ejj7Exptype4Type2OpPS_jjP4Case(ptr, i32, i32, i32, i32, i32, ptr, i32, i32, ptr) unnamed_addr #0 align 2
 
 declare i32 @__gxx_personality_v0(...)
 
 ; Function Attrs: nobuiltin nounwind
-declare void @_ZdlPv(i8*) #3
+declare void @_ZdlPv(ptr) #3
 
 ; Function Attrs: uwtable
-declare i32 @_Z10doluswitchP9Classfile(%struct.Classfile.218.262.372*) #0
+declare i32 @_Z10doluswitchP9Classfile(ptr) #0
 
 ; Function Attrs: nounwind uwtable
-declare void @_ZN4Exp_C2E7Exptype4Type2Op(%struct.Exp_.200.244.354*, i32, i32, i32) unnamed_addr #4 align 2
+declare void @_ZN4Exp_C2E7Exptype4Type2Op(ptr, i32, i32, i32) unnamed_addr #4 align 2
 
 attributes #0 = { 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/polly/test/CodeGen/invariant_load_outermost.ll b/polly/test/CodeGen/invariant_load_outermost.ll
index eadd6ec3187ea..f42135c090143 100644
--- a/polly/test/CodeGen/invariant_load_outermost.ll
+++ b/polly/test/CodeGen/invariant_load_outermost.ll
@@ -11,27 +11,27 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %entry.split
 
 entry.split:
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %cmp = icmp sgt i32 %tmp, 42
   br i1 %cmp, label %if.then, label %if.else
 
 if.then:                                          ; preds = %entry
-  %tmp1 = load i32, i32* %A, align 4
+  %tmp1 = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp1, 1
   br label %if.end
 
 if.else:                                          ; preds = %entry
-  %tmp2 = load i32, i32* %A, align 4
+  %tmp2 = load i32, ptr %A, align 4
   %sub = add nsw i32 %tmp2, -1
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then
   %storemerge = phi i32 [ %sub, %if.else ], [ %add, %if.then ]
-  store i32 %storemerge, i32* %A, align 4
+  store i32 %storemerge, ptr %A, align 4
   ret void
 }

diff  --git a/polly/test/CodeGen/invariant_load_scalar_escape_alloca_sharing.ll b/polly/test/CodeGen/invariant_load_scalar_escape_alloca_sharing.ll
index 212792afd6fa6..44c035855b764 100644
--- a/polly/test/CodeGen/invariant_load_scalar_escape_alloca_sharing.ll
+++ b/polly/test/CodeGen/invariant_load_scalar_escape_alloca_sharing.ll
@@ -8,19 +8,19 @@
 ; CHECK:     %tmp0.preload.s2a = alloca i32
 ; CHECK-NOT: alloca
 ;
-; CHECK:       %ncol.load = load i32, i32* @ncol
-; CHECK-NEXT:  store i32 %ncol.load, i32* %tmp0.preload.s2a
+; CHECK:       %ncol.load = load i32, ptr @ncol
+; CHECK-NEXT:  store i32 %ncol.load, ptr %tmp0.preload.s2a
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @ncol = external global i32, align 4
 
-define void @melt_data(i32* %data1, i32* %data2) {
+define void @melt_data(ptr %data1, ptr %data2) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %tmp0 = load i32, i32* @ncol, align 4
+  %tmp0 = load i32, ptr @ncol, align 4
   %tobool.2 = icmp eq i32 %tmp0, 0
   br i1 %tobool.2, label %while.end, label %while.body.lr.ph
 
@@ -31,21 +31,21 @@ while.body:                                       ; preds = %while.body.lr.ph, %
   %dec3.in = phi i32 [ %tmp0, %while.body.lr.ph ], [ %dec3, %while.cond.backedge ]
   %dec3 = add nsw i32 %dec3.in, -1
   %idxprom = sext i32 %dec3 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %data1, i64 %idxprom
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %data1, i64 %idxprom
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %idxprom1 = sext i32 %dec3 to i64
-  %arrayidx2 = getelementptr inbounds i32, i32* %data2, i64 %idxprom1
-  %tmp2 = load i32, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %data2, i64 %idxprom1
+  %tmp2 = load i32, ptr %arrayidx2, align 4
   %cmp = icmp sgt i32 %tmp1, %tmp2
   br i1 %cmp, label %if.then, label %while.cond.backedge
 
 if.then:                                          ; preds = %while.body
   %idxprom3 = sext i32 %dec3 to i64
-  %arrayidx4 = getelementptr inbounds i32, i32* %data2, i64 %idxprom3
-  %tmp3 = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %data2, i64 %idxprom3
+  %tmp3 = load i32, ptr %arrayidx4, align 4
   %idxprom5 = sext i32 %dec3 to i64
-  %arrayidx6 = getelementptr inbounds i32, i32* %data1, i64 %idxprom5
-  store i32 %tmp3, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %data1, i64 %idxprom5
+  store i32 %tmp3, ptr %arrayidx6, align 4
   br label %while.cond.backedge
 
 while.cond.backedge:                              ; preds = %if.then, %while.body

diff  --git a/polly/test/CodeGen/invariant_loads_from_struct_with_
diff erent_types_1.ll b/polly/test/CodeGen/invariant_loads_from_struct_with_
diff erent_types_1.ll
index 4d0639ca499a8..0b6929a5fd3f8 100644
--- a/polly/test/CodeGen/invariant_loads_from_struct_with_
diff erent_types_1.ll
+++ b/polly/test/CodeGen/invariant_loads_from_struct_with_
diff erent_types_1.ll
@@ -5,21 +5,21 @@
 ;
 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 
-%struct.FFIIRFilterCoeffs.0.3.6.12.15.27.36.54.57.84.87.90 = type { i32, float, i32*, float* }
+%struct.FFIIRFilterCoeffs.0.3.6.12.15.27.36.54.57.84.87.90 = type { i32, float, ptr, ptr }
 
 ; Function Attrs: nounwind ssp
-define void @ff_iir_filter(%struct.FFIIRFilterCoeffs.0.3.6.12.15.27.36.54.57.84.87.90* %c, i16* %dst, i32 %dstep) #0 {
+define void @ff_iir_filter(ptr %c, ptr %dst, i32 %dstep) #0 {
 entry:
   br i1 undef, label %if.end.325, label %for.body.38
 
 for.body.38:                                      ; preds = %for.body.38, %entry
-  %dst034.0180 = phi i16* [ undef, %for.body.38 ], [ %dst, %entry ]
-  %gain42 = getelementptr inbounds %struct.FFIIRFilterCoeffs.0.3.6.12.15.27.36.54.57.84.87.90, %struct.FFIIRFilterCoeffs.0.3.6.12.15.27.36.54.57.84.87.90* %c, i32 0, i32 1
-  %cy44 = getelementptr inbounds %struct.FFIIRFilterCoeffs.0.3.6.12.15.27.36.54.57.84.87.90, %struct.FFIIRFilterCoeffs.0.3.6.12.15.27.36.54.57.84.87.90* %c, i32 0, i32 3
-  %add.ptr88 = getelementptr inbounds i16, i16* %dst034.0180, i32 %dstep
-  store i16 undef, i16* %add.ptr88, align 2
-  %0 = load float, float* %gain42, align 4
-  %1 = load float*, float** %cy44, align 4
+  %dst034.0180 = phi ptr [ undef, %for.body.38 ], [ %dst, %entry ]
+  %gain42 = getelementptr inbounds %struct.FFIIRFilterCoeffs.0.3.6.12.15.27.36.54.57.84.87.90, ptr %c, i32 0, i32 1
+  %cy44 = getelementptr inbounds %struct.FFIIRFilterCoeffs.0.3.6.12.15.27.36.54.57.84.87.90, ptr %c, i32 0, i32 3
+  %add.ptr88 = getelementptr inbounds i16, ptr %dst034.0180, i32 %dstep
+  store i16 undef, ptr %add.ptr88, align 2
+  %0 = load float, ptr %gain42, align 4
+  %1 = load ptr, ptr %cy44, align 4
   br i1 false, label %for.body.38, label %if.end.325
 
 if.end.325:                                       ; preds = %for.body.38, %entry

diff  --git a/polly/test/CodeGen/invariant_loads_from_struct_with_
diff erent_types_2.ll b/polly/test/CodeGen/invariant_loads_from_struct_with_
diff erent_types_2.ll
index 6312e399e255e..2eb913fed4479 100644
--- a/polly/test/CodeGen/invariant_loads_from_struct_with_
diff erent_types_2.ll
+++ b/polly/test/CodeGen/invariant_loads_from_struct_with_
diff erent_types_2.ll
@@ -5,10 +5,10 @@
 ;
 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 
-%struct.FFIIRFilterCoeffs.0.3.6.63.78.81.87.102.150.162.165.168.171 = type { i32, float, i32*, float* }
+%struct.FFIIRFilterCoeffs.0.3.6.63.78.81.87.102.150.162.165.168.171 = type { i32, float, ptr, ptr }
 
 ; Function Attrs: nounwind ssp
-define void @butterworth_init_coeffs(%struct.FFIIRFilterCoeffs.0.3.6.63.78.81.87.102.150.162.165.168.171* %c) #0 {
+define void @butterworth_init_coeffs(ptr %c) #0 {
 entry:
   br i1 undef, label %if.end, label %if.then
 
@@ -28,13 +28,13 @@ for.body.35:                                      ; preds = %if.end.2
   unreachable
 
 for.end.126:                                      ; preds = %if.end.2
-  %gain = getelementptr inbounds %struct.FFIIRFilterCoeffs.0.3.6.63.78.81.87.102.150.162.165.168.171, %struct.FFIIRFilterCoeffs.0.3.6.63.78.81.87.102.150.162.165.168.171* %c, i32 0, i32 1
+  %gain = getelementptr inbounds %struct.FFIIRFilterCoeffs.0.3.6.63.78.81.87.102.150.162.165.168.171, ptr %c, i32 0, i32 1
   br i1 undef, label %for.body.133, label %for.end.169
 
 for.body.133:                                     ; preds = %for.body.133, %for.end.126
-  store float undef, float* %gain, align 4
-  %cy = getelementptr inbounds %struct.FFIIRFilterCoeffs.0.3.6.63.78.81.87.102.150.162.165.168.171, %struct.FFIIRFilterCoeffs.0.3.6.63.78.81.87.102.150.162.165.168.171* %c, i32 0, i32 3
-  %0 = load float*, float** %cy, align 4
+  store float undef, ptr %gain, align 4
+  %cy = getelementptr inbounds %struct.FFIIRFilterCoeffs.0.3.6.63.78.81.87.102.150.162.165.168.171, ptr %c, i32 0, i32 3
+  %0 = load ptr, ptr %cy, align 4
   br i1 false, label %for.body.133, label %for.end.169
 
 for.end.169:                                      ; preds = %for.body.133, %for.end.126

diff  --git a/polly/test/CodeGen/invariant_loads_ignore_parameter_bounds.ll b/polly/test/CodeGen/invariant_loads_ignore_parameter_bounds.ll
index 9a7e3254de589..a0c1f891bdf69 100644
--- a/polly/test/CodeGen/invariant_loads_ignore_parameter_bounds.ll
+++ b/polly/test/CodeGen/invariant_loads_ignore_parameter_bounds.ll
@@ -2,8 +2,8 @@
 ; RUN:     -polly-ignore-parameter-bounds -S < %s | FileCheck %s
 
 ; CHECK: polly.preload.begin:
-; CHECK-NEXT: %global.load = load i32, i32* @global, align 4, !alias.scope !0, !noalias !3
-; CHECK-NEXT: store i32 %global.load, i32* %tmp24.preload.s2a
+; CHECK-NEXT: %global.load = load i32, ptr @global, align 4, !alias.scope !0, !noalias !3
+; CHECK-NEXT: store i32 %global.load, ptr %tmp24.preload.s2a
 
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 
@@ -15,7 +15,7 @@ bb:
   br label %bb18
 
 bb18:                                             ; preds = %bb16
-  %tmp19 = load i32, i32* @global, align 4
+  %tmp19 = load i32, ptr @global, align 4
   br label %bb20
 
 bb20:                                             ; preds = %bb21, %bb18
@@ -23,12 +23,12 @@ bb20:                                             ; preds = %bb21, %bb18
   br i1 %tmp22, label %bb23, label %bb20
 
 bb23:                                             ; preds = %bb21
-  %tmp24 = load i32, i32* @global, align 4
+  %tmp24 = load i32, ptr @global, align 4
   %tmp25 = add i32 %tmp24, 1
   %tmp26 = sext i32 %tmp25 to i64
   %tmp27 = add nsw i64 %tmp26, -1
-  %tmp28 = getelementptr [4 x double], [4 x double]* %tmp, i64 0, i64 %tmp27
-  store double undef, double* %tmp28
+  %tmp28 = getelementptr [4 x double], ptr %tmp, i64 0, i64 %tmp27
+  store double undef, ptr %tmp28
   br label %bb29
 
 bb29:                                             ; preds = %bb23

diff  --git a/polly/test/CodeGen/invariant_verify_function_failed.ll b/polly/test/CodeGen/invariant_verify_function_failed.ll
index 94025f13bd84a..6020caeee85d3 100644
--- a/polly/test/CodeGen/invariant_verify_function_failed.ll
+++ b/polly/test/CodeGen/invariant_verify_function_failed.ll
@@ -23,8 +23,8 @@ if.end:                                           ; preds = %entry
   br i1 undef, label %land.lhs.true, label %if.end.18
 
 land.lhs.true:                                    ; preds = %if.end
-  %call9 = tail call i32* @__errno_location() #2
-  %tmp = load i32, i32* %call9, align 4, !tbaa !1
+  %call9 = tail call ptr @__errno_location() #2
+  %tmp = load i32, ptr %call9, align 4, !tbaa !1
   br i1 false, label %if.then.12, label %if.end.18
 
 if.then.12:                                       ; preds = %land.lhs.true
@@ -45,7 +45,7 @@ cleanup:                                          ; preds = %if.end.27, %entry
 }
 
 ; Function Attrs: nounwind readnone
-declare i32* @__errno_location() #1
+declare ptr @__errno_location() #1
 
 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"="+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone "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"="+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }

diff  --git a/polly/test/CodeGen/invariant_verify_function_failed_2.ll b/polly/test/CodeGen/invariant_verify_function_failed_2.ll
index c1f4646dc3a88..81a4bd1dc153d 100644
--- a/polly/test/CodeGen/invariant_verify_function_failed_2.ll
+++ b/polly/test/CodeGen/invariant_verify_function_failed_2.ll
@@ -34,12 +34,12 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-%struct.s = type { i32, i32, i32, i32, i32, i32, [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16**, i16*, i16*, i16**, i16**, i16***, i8*, i16***, i64***, i64***, i16****, i8**, i8**, %struct.s*, %struct.s*, %struct.s*, i32, i32, i32, i32, i32, i32, i32 }
+%struct.s = type { i32, i32, i32, i32, i32, i32, [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32 }
 
- at enc_picture = external global %struct.s*, align 8
+ at enc_picture = external global ptr, align 8
 
 ; Function Attrs: nounwind uwtable
-define void @compute_colocated(%struct.s*** %listX, i1* %A, i32* %B) #0 {
+define void @compute_colocated(ptr %listX, ptr %A, ptr %B) #0 {
 entry:
   br label %for.body2414
 
@@ -52,28 +52,26 @@ if.else2454:                                      ; preds = %for.body2414
   br i1 %cmp2455, label %if.then2457, label %if.else2493
 
 if.then2457:                                      ; preds = %if.else2454
-  %arrayidx2461 = getelementptr inbounds %struct.s**, %struct.s*** %listX, i64 %indvars.iv902
-  %tmp1 = load %struct.s**, %struct.s*** %arrayidx2461, align 8, !tbaa !1
-  %arrayidx2462 = getelementptr inbounds %struct.s*, %struct.s** %tmp1, i64 0
-  %tmp2 = load %struct.s*, %struct.s** %arrayidx2462, align 8, !tbaa !1
-  %poc2463 = getelementptr inbounds %struct.s, %struct.s* %tmp2, i64 0, i32 1
-  %tmp3 = load i32, i32* %poc2463, align 4, !tbaa !5
+  %arrayidx2461 = getelementptr inbounds ptr, ptr %listX, i64 %indvars.iv902
+  %tmp1 = load ptr, ptr %arrayidx2461, align 8, !tbaa !1
+  %tmp2 = load ptr, ptr %tmp1, align 8, !tbaa !1
+  %poc2463 = getelementptr inbounds %struct.s, ptr %tmp2, i64 0, i32 1
+  %tmp3 = load i32, ptr %poc2463, align 4, !tbaa !5
   %sub2464 = sub nsw i32 0, %tmp3
   br label %cond.false2468
 
 cond.false2468:                                   ; preds = %if.then2457
   %cmp2477 = icmp sgt i32 %sub2464, 127
-  store i1 %cmp2477, i1* %A
+  store i1 %cmp2477, ptr %A
   br label %for.inc2621
 
 if.else2493:                                      ; preds = %if.else2454
-  %arrayidx2497 = getelementptr inbounds %struct.s**, %struct.s*** %listX, i64 %indvars.iv902
-  %tmp4 = load %struct.s**, %struct.s*** %arrayidx2497, align 8, !tbaa !1
-  %arrayidx2498 = getelementptr inbounds %struct.s*, %struct.s** %tmp4, i64 0
-  %tmp5 = load %struct.s*, %struct.s** %arrayidx2498, align 8, !tbaa !1
-  %poc2499 = getelementptr inbounds %struct.s, %struct.s* %tmp5, i64 0, i32 1
-  %tmp6 = load i32, i32* %poc2499, align 4, !tbaa !5
-  store i32 %tmp6, i32* %B
+  %arrayidx2497 = getelementptr inbounds ptr, ptr %listX, i64 %indvars.iv902
+  %tmp4 = load ptr, ptr %arrayidx2497, align 8, !tbaa !1
+  %tmp5 = load ptr, ptr %tmp4, align 8, !tbaa !1
+  %poc2499 = getelementptr inbounds %struct.s, ptr %tmp5, i64 0, i32 1
+  %tmp6 = load i32, ptr %poc2499, align 4, !tbaa !5
+  store i32 %tmp6, ptr %B
   br label %for.inc2621
 
 for.inc2621:                                      ; preds = %if.else2493, %cond.false2468

diff  --git a/polly/test/CodeGen/large-numbers-in-boundary-context.ll b/polly/test/CodeGen/large-numbers-in-boundary-context.ll
index 9db7a0ef7db87..a0328dfec6512 100644
--- a/polly/test/CodeGen/large-numbers-in-boundary-context.ll
+++ b/polly/test/CodeGen/large-numbers-in-boundary-context.ll
@@ -14,17 +14,17 @@ target triple = "x86_64-unknown-linux-gnu"
 @global1 = external global i32, align 4
 
 ; Function Attrs: nounwind uwtable
-define void @hoge(i8* %arg) #0 {
+define void @hoge(ptr %arg) #0 {
 bb:
   br label %bb5
 
 bb5:                                              ; preds = %bb
-  %tmp = load i32, i32* @global, align 4
+  %tmp = load i32, ptr @global, align 4
   %tmp6 = sext i32 %tmp to i64
   br label %bb11
 
 bb7:                                              ; preds = %bb19
-  %tmp8 = load i32, i32* @global1, align 4
+  %tmp8 = load i32, ptr @global1, align 4
   %tmp9 = sext i32 %tmp8 to i64
   %tmp10 = icmp slt i64 %tmp13, %tmp9
   br i1 %tmp10, label %bb11, label %bb20
@@ -32,8 +32,8 @@ bb7:                                              ; preds = %bb19
 bb11:                                             ; preds = %bb7, %bb5
   %tmp12 = phi i64 [ %tmp6, %bb5 ], [ %tmp13, %bb7 ]
   %tmp13 = add i64 %tmp12, 1
-  %tmp14 = getelementptr inbounds i8, i8* %arg, i64 %tmp13
-  %tmp15 = load i8, i8* %tmp14, align 1
+  %tmp14 = getelementptr inbounds i8, ptr %arg, i64 %tmp13
+  %tmp15 = load i8, ptr %tmp14, align 1
   br i1 false, label %bb16, label %bb17
 
 bb16:                                             ; preds = %bb11

diff  --git a/polly/test/CodeGen/loop-invariant-load-type-mismatch.ll b/polly/test/CodeGen/loop-invariant-load-type-mismatch.ll
index 27317dfe7b840..90c61c5916231 100644
--- a/polly/test/CodeGen/loop-invariant-load-type-mismatch.ll
+++ b/polly/test/CodeGen/loop-invariant-load-type-mismatch.ll
@@ -5,7 +5,7 @@ target triple = "x86_64-unknown-linux-gnu"
 
 ; Just make sure this test passes correctly.
 
-define void @kernel_ludcmp(double* %b, double* %y) #0 {
+define void @kernel_ludcmp(ptr %b, ptr %y) #0 {
 entry:
   br label %entry.split
 
@@ -71,15 +71,12 @@ for.end.54:                                       ; preds = %for.cond.38.for.end
   br i1 false, label %for.body.32, label %for.cond.30.for.cond.loopexit_crit_edge
 
 for.end.65:                                       ; preds = %for.cond.loopexit
-  %tmp1 = bitcast double* %b to i64*
-  %tmp2 = load i64, i64* %tmp1, align 8, !tbaa !1
-  %tmp3 = bitcast double* %y to i64*
-  store i64 %tmp2, i64* %tmp3, align 8, !tbaa !1
+  %tmp2 = load i64, ptr %b, align 8, !tbaa !1
+  store i64 %tmp2, ptr %y, align 8, !tbaa !1
   br label %for.body.70
 
 for.body.70:                                      ; preds = %for.end.86, %for.end.65
-  %arrayidx72 = getelementptr inbounds double, double* %b, i64 0
-  %tmp4 = load double, double* %arrayidx72, align 8, !tbaa !1
+  %tmp4 = load double, ptr %b, align 8, !tbaa !1
   br i1 true, label %for.body.75.lr.ph, label %for.end.86
 
 for.body.75.lr.ph:                                ; preds = %for.body.70

diff  --git a/polly/test/CodeGen/loop_with_condition.ll b/polly/test/CodeGen/loop_with_condition.ll
index 2dbd4400b9bc5..618a542c179a0 100644
--- a/polly/test/CodeGen/loop_with_condition.ll
+++ b/polly/test/CodeGen/loop_with_condition.ll
@@ -41,8 +41,8 @@
 
 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"
 
- at A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
- at B = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
+ at A = common global [1024 x i32] zeroinitializer, align 16 ; <ptr> [#uses=4]
+ at B = common global [1024 x i32] zeroinitializer, align 16 ; <ptr> [#uses=4]
 
 define void @loop_with_condition() nounwind {
 bb0:
@@ -51,8 +51,8 @@ bb0:
 
 bb1:
   %indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb0 ] ; <i64> [#uses=5]
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
-  %scevgep1 = getelementptr [1024 x i32], [1024 x i32]* @B, i64 0, i64 %indvar ; <i32*> [#uses=1]
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %indvar ; <ptr> [#uses=2]
+  %scevgep1 = getelementptr [1024 x i32], ptr @B, i64 0, i64 %indvar ; <ptr> [#uses=1]
   %i.0 = trunc i64 %indvar to i32                 ; <i32> [#uses=1]
   %exitcond = icmp ne i64 %indvar, 1024           ; <i1> [#uses=1]
   br i1 %exitcond, label %bb2, label %bb8
@@ -62,15 +62,15 @@ bb2:
   br i1 %var3, label %bb4, label %bb5
 
 bb4:
-  store i32 1, i32* %scevgep
+  store i32 1, ptr %scevgep
   br label %bb6
 
 bb5:
-  store i32 2, i32* %scevgep
+  store i32 2, ptr %scevgep
   br label %bb6
 
 bb6:
-  store i32 3, i32* %scevgep1
+  store i32 3, ptr %scevgep1
   br label %bb7
 
 bb7:
@@ -84,20 +84,20 @@ bb8:
 
 define i32 @main() nounwind {
 ; <label>:0
-  call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
-  call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
+  call void @llvm.memset.p0.i64(ptr @A, i8 0, i64 4096, i32 1, i1 false)
+  call void @llvm.memset.p0.i64(ptr @B, i8 0, i64 4096, i32 1, i1 false)
   call void @loop_with_condition()
   br label %1
 
 ; <label>:1                                       ; preds = %8, %0
   %indvar1 = phi i64 [ %indvar.next2, %8 ], [ 0, %0 ] ; <i64> [#uses=3]
-  %scevgep3 = getelementptr [1024 x i32], [1024 x i32]* @B, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
+  %scevgep3 = getelementptr [1024 x i32], ptr @B, i64 0, i64 %indvar1 ; <ptr> [#uses=1]
   %i.0 = trunc i64 %indvar1 to i32                ; <i32> [#uses=1]
   %2 = icmp slt i32 %i.0, 1024                    ; <i1> [#uses=1]
   br i1 %2, label %3, label %9
 
 ; <label>:3                                       ; preds = %1
-  %4 = load i32, i32* %scevgep3                        ; <i32> [#uses=1]
+  %4 = load i32, ptr %scevgep3                        ; <i32> [#uses=1]
   %5 = icmp ne i32 %4, 3                          ; <i1> [#uses=1]
   br i1 %5, label %6, label %7
 
@@ -116,7 +116,7 @@ define i32 @main() nounwind {
 
 ; <label>:10                                      ; preds = %26, %9
   %indvar = phi i64 [ %indvar.next, %26 ], [ 0, %9 ] ; <i64> [#uses=3]
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %indvar ; <ptr> [#uses=2]
   %i.1 = trunc i64 %indvar to i32                 ; <i32> [#uses=3]
   %11 = icmp slt i32 %i.1, 1024                   ; <i1> [#uses=1]
   br i1 %11, label %12, label %27
@@ -126,7 +126,7 @@ define i32 @main() nounwind {
   br i1 %13, label %14, label %18
 
 ; <label>:14                                      ; preds = %12
-  %15 = load i32, i32* %scevgep                        ; <i32> [#uses=1]
+  %15 = load i32, ptr %scevgep                        ; <i32> [#uses=1]
   %16 = icmp ne i32 %15, 1                        ; <i1> [#uses=1]
   br i1 %16, label %17, label %18
 
@@ -138,7 +138,7 @@ define i32 @main() nounwind {
   br i1 %19, label %20, label %24
 
 ; <label>:20                                      ; preds = %18
-  %21 = load i32, i32* %scevgep                        ; <i32> [#uses=1]
+  %21 = load i32, ptr %scevgep                        ; <i32> [#uses=1]
   %22 = icmp ne i32 %21, 2                        ; <i1> [#uses=1]
   br i1 %22, label %23, label %24
 
@@ -163,7 +163,7 @@ define i32 @main() nounwind {
   ret i32 %.0
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind
 
 ; CHECK: for (int c0 = 0; c0 <= 1023; c0 += 1) {
 ; CHECK:   if (c0 >= 513) {

diff  --git a/polly/test/CodeGen/loop_with_condition_2.ll b/polly/test/CodeGen/loop_with_condition_2.ll
index 864ffc61241ce..b1a116785069f 100644
--- a/polly/test/CodeGen/loop_with_condition_2.ll
+++ b/polly/test/CodeGen/loop_with_condition_2.ll
@@ -26,8 +26,8 @@ entry:
 
 for.cond:                                         ; preds = %for.inc, %entry
   %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
-  %arrayidx = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar
-  %arrayidx10 = getelementptr [1024 x i32], [1024 x i32]* @B, i64 0, i64 %indvar
+  %arrayidx = getelementptr [1024 x i32], ptr @A, i64 0, i64 %indvar
+  %arrayidx10 = getelementptr [1024 x i32], ptr @B, i64 0, i64 %indvar
   %tmp2 = add i64 %tmp1, %indvar
   %sub = trunc i64 %tmp2 to i32
   %exitcond = icmp ne i64 %indvar, 1024
@@ -38,15 +38,15 @@ for.body:                                         ; preds = %for.cond
   br i1 %cmp3, label %if.then, label %if.else
 
 if.then:                                          ; preds = %for.body
-  store i32 1, i32* %arrayidx
+  store i32 1, ptr %arrayidx
   br label %if.end
 
 if.else:                                          ; preds = %for.body
-  store i32 2, i32* %arrayidx
+  store i32 2, ptr %arrayidx
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then
-  store i32 3, i32* %arrayidx10
+  store i32 3, ptr %arrayidx10
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end
@@ -60,20 +60,20 @@ for.end:                                          ; preds = %for.cond
 
 define i32 @main() nounwind {
 entry:
-  call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
-  call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
+  call void @llvm.memset.p0.i64(ptr @A, i8 0, i64 4096, i32 1, i1 false)
+  call void @llvm.memset.p0.i64(ptr @B, i8 0, i64 4096, i32 1, i1 false)
   call void @loop_with_condition(i32 5)
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
   %indvar1 = phi i64 [ %indvar.next2, %for.inc ], [ 0, %entry ]
-  %arrayidx = getelementptr [1024 x i32], [1024 x i32]* @B, i64 0, i64 %indvar1
+  %arrayidx = getelementptr [1024 x i32], ptr @B, i64 0, i64 %indvar1
   %i.0 = trunc i64 %indvar1 to i32
   %cmp = icmp slt i32 %i.0, 1024
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp3 = load i32, i32* %arrayidx
+  %tmp3 = load i32, ptr %arrayidx
   %cmp4 = icmp ne i32 %tmp3, 3
   br i1 %cmp4, label %if.then, label %if.end
 
@@ -92,7 +92,7 @@ for.end:                                          ; preds = %for.cond
 
 for.cond6:                                        ; preds = %for.inc12, %for.end
   %indvar = phi i64 [ %indvar.next, %for.inc12 ], [ 0, %for.end ]
-  %arrayidx15 = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar
+  %arrayidx15 = getelementptr [1024 x i32], ptr @A, i64 0, i64 %indvar
   %i.1 = trunc i64 %indvar to i32
   %cmp8 = icmp slt i32 %i.1, 1024
   br i1 %cmp8, label %for.body9, label %for.end35
@@ -101,7 +101,7 @@ for.body9:                                        ; preds = %for.cond6
   br i1 true, label %land.lhs.true, label %if.else
 
 land.lhs.true:                                    ; preds = %for.body9
-  %tmp16 = load i32, i32* %arrayidx15
+  %tmp16 = load i32, ptr %arrayidx15
   %cmp17 = icmp ne i32 %tmp16, 1
   br i1 %cmp17, label %if.then18, label %if.else
 
@@ -112,7 +112,7 @@ if.else:                                          ; preds = %land.lhs.true, %for
   br i1 false, label %land.lhs.true23, label %if.end30
 
 land.lhs.true23:                                  ; preds = %if.else
-  %tmp27 = load i32, i32* %arrayidx15
+  %tmp27 = load i32, ptr %arrayidx15
   %cmp28 = icmp ne i32 %tmp27, 2
   br i1 %cmp28, label %if.then29, label %if.end30
 
@@ -137,4 +137,4 @@ return:                                           ; preds = %for.end35, %if.then
   ret i32 %retval.0
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind

diff  --git a/polly/test/CodeGen/loop_with_condition_ineq.ll b/polly/test/CodeGen/loop_with_condition_ineq.ll
index b0341d5c37503..c35208c72dfe5 100644
--- a/polly/test/CodeGen/loop_with_condition_ineq.ll
+++ b/polly/test/CodeGen/loop_with_condition_ineq.ll
@@ -41,8 +41,8 @@
 
 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"
 
- at A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
- at B = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
+ at A = common global [1024 x i32] zeroinitializer, align 16 ; <ptr> [#uses=4]
+ at B = common global [1024 x i32] zeroinitializer, align 16 ; <ptr> [#uses=4]
 
 define void @loop_with_condition_ineq() nounwind {
 bb0:
@@ -51,8 +51,8 @@ bb0:
 
 bb1:
   %indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb0 ] ; <i64> [#uses=5]
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
-  %scevgep1 = getelementptr [1024 x i32], [1024 x i32]* @B, i64 0, i64 %indvar ; <i32*> [#uses=1]
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %indvar ; <ptr> [#uses=2]
+  %scevgep1 = getelementptr [1024 x i32], ptr @B, i64 0, i64 %indvar ; <ptr> [#uses=1]
   %i.0 = trunc i64 %indvar to i32                 ; <i32> [#uses=1]
   %exitcond = icmp ne i64 %indvar, 1024           ; <i1> [#uses=1]
   br i1 %exitcond, label %bb2, label %bb8
@@ -62,15 +62,15 @@ bb2:
   br i1 %var3, label %bb4, label %bb5
 
 bb4:
-  store i32 1, i32* %scevgep
+  store i32 1, ptr %scevgep
   br label %bb6
 
 bb5:
-  store i32 2, i32* %scevgep
+  store i32 2, ptr %scevgep
   br label %bb6
 
 bb6:
-  store i32 3, i32* %scevgep1
+  store i32 3, ptr %scevgep1
   br label %bb7
 
 bb7:
@@ -84,20 +84,20 @@ bb8:
 
 define i32 @main() nounwind {
 ; <label>:0
-  call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
-  call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
+  call void @llvm.memset.p0.i64(ptr @A, i8 0, i64 4096, i32 1, i1 false)
+  call void @llvm.memset.p0.i64(ptr @B, i8 0, i64 4096, i32 1, i1 false)
   call void @loop_with_condition_ineq()
   br label %1
 
 ; <label>:1                                       ; preds = %8, %0
   %indvar1 = phi i64 [ %indvar.next2, %8 ], [ 0, %0 ] ; <i64> [#uses=3]
-  %scevgep3 = getelementptr [1024 x i32], [1024 x i32]* @B, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
+  %scevgep3 = getelementptr [1024 x i32], ptr @B, i64 0, i64 %indvar1 ; <ptr> [#uses=1]
   %i.0 = trunc i64 %indvar1 to i32                ; <i32> [#uses=1]
   %2 = icmp slt i32 %i.0, 1024                    ; <i1> [#uses=1]
   br i1 %2, label %3, label %9
 
 ; <label>:3                                       ; preds = %1
-  %4 = load i32, i32* %scevgep3                        ; <i32> [#uses=1]
+  %4 = load i32, ptr %scevgep3                        ; <i32> [#uses=1]
   %5 = icmp ne i32 %4, 3                          ; <i1> [#uses=1]
   br i1 %5, label %6, label %7
 
@@ -116,7 +116,7 @@ define i32 @main() nounwind {
 
 ; <label>:10                                      ; preds = %26, %9
   %indvar = phi i64 [ %indvar.next, %26 ], [ 0, %9 ] ; <i64> [#uses=3]
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %indvar ; <ptr> [#uses=2]
   %i.1 = trunc i64 %indvar to i32                 ; <i32> [#uses=3]
   %11 = icmp slt i32 %i.1, 1024                   ; <i1> [#uses=1]
   br i1 %11, label %12, label %27
@@ -126,7 +126,7 @@ define i32 @main() nounwind {
   br i1 %13, label %14, label %18
 
 ; <label>:14                                      ; preds = %12
-  %15 = load i32, i32* %scevgep                        ; <i32> [#uses=1]
+  %15 = load i32, ptr %scevgep                        ; <i32> [#uses=1]
   %16 = icmp ne i32 %15, 1                        ; <i1> [#uses=1]
   br i1 %16, label %17, label %18
 
@@ -138,7 +138,7 @@ define i32 @main() nounwind {
   br i1 %19, label %20, label %24
 
 ; <label>:20                                      ; preds = %18
-  %21 = load i32, i32* %scevgep                        ; <i32> [#uses=1]
+  %21 = load i32, ptr %scevgep                        ; <i32> [#uses=1]
   %22 = icmp ne i32 %21, 2                        ; <i1> [#uses=1]
   br i1 %22, label %23, label %24
 
@@ -163,7 +163,7 @@ define i32 @main() nounwind {
   ret i32 %.0
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind
 
 ; CHECK: for (int c0 = 0; c0 <= 1023; c0 += 1) {
 ; CHECK:   if (c0 == 512) {

diff  --git a/polly/test/CodeGen/loop_with_conditional_entry_edge_split_hard_case.ll b/polly/test/CodeGen/loop_with_conditional_entry_edge_split_hard_case.ll
index a0679c26e9995..4444cf1dc4dd1 100644
--- a/polly/test/CodeGen/loop_with_conditional_entry_edge_split_hard_case.ll
+++ b/polly/test/CodeGen/loop_with_conditional_entry_edge_split_hard_case.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32 %b, i32* %A) {
+define void @jd(i32 %b, ptr %A) {
 entry:
   br label %while.begin
 
@@ -47,9 +47,9 @@ for.cond:                                         ; preds = %for.inc, %if
   br i1 %exitcond, label %for.body, label %while.begin
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
   %tmp = trunc i64 %indvars.iv to i32
-  store i32 %tmp, i32* %arrayidx, align 4
+  store i32 %tmp, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/memcpy_annotations.ll b/polly/test/CodeGen/memcpy_annotations.ll
index 6507ecbf2e51c..a0a09b75c82e3 100644
--- a/polly/test/CodeGen/memcpy_annotations.ll
+++ b/polly/test/CodeGen/memcpy_annotations.ll
@@ -9,9 +9,9 @@
 ; }
 ;
 
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1)
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i32, i1)
 
-define void @func(i32 %n, i8* noalias nonnull %A, i8* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -21,7 +21,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %A, i8* %B, i64 8, i32 4, i1 false)
+      call void @llvm.memcpy.p0.p0.i64(ptr nonnull %A, ptr %B, i64 8, i32 4, i1 false)
       br label %inc
 
 inc:

diff  --git a/polly/test/CodeGen/multidim-non-matching-typesize-2.ll b/polly/test/CodeGen/multidim-non-matching-typesize-2.ll
index 9b769c8aa39ba..63afad6e2f41f 100644
--- a/polly/test/CodeGen/multidim-non-matching-typesize-2.ll
+++ b/polly/test/CodeGen/multidim-non-matching-typesize-2.ll
@@ -3,21 +3,20 @@
 ; CHECK: polly
 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 
-define void @hoge(i16* %arg, i32 %arg1, i16* %arg2) {
+define void @hoge(ptr %arg, i32 %arg1, ptr %arg2) {
 bb:
   %tmp = alloca i32
-  %tmp3 = load i32, i32* undef
+  %tmp3 = load i32, ptr undef
   br label %bb7
 
 bb7:
   %tmp8 = phi i32 [ %tmp3, %bb ], [ %tmp13, %bb7 ]
-  %tmp9 = getelementptr inbounds i16, i16* %arg2, i32 0
-  %tmp10 = load i16, i16* %tmp9, align 2
+  %tmp10 = load i16, ptr %arg2, align 2
   %tmp11 = mul nsw i32 %tmp8, %arg1
-  %tmp12 = getelementptr inbounds i16, i16* %arg, i32 %tmp11
-  store i16 undef, i16* %tmp12, align 2
+  %tmp12 = getelementptr inbounds i16, ptr %arg, i32 %tmp11
+  store i16 undef, ptr %tmp12, align 2
   %tmp13 = add nsw i32 %tmp8, 1
-  store i32 undef, i32* %tmp
+  store i32 undef, ptr %tmp
   br i1 false, label %bb7, label %bb5
 
 bb5:

diff  --git a/polly/test/CodeGen/multidim-non-matching-typesize.ll b/polly/test/CodeGen/multidim-non-matching-typesize.ll
index 9c285a71181a7..d117cefe33767 100644
--- a/polly/test/CodeGen/multidim-non-matching-typesize.ll
+++ b/polly/test/CodeGen/multidim-non-matching-typesize.ll
@@ -5,7 +5,7 @@ target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 
 ; CHECK: polly
 
-define void @hoge(i16* %arg, i32 %arg1) {
+define void @hoge(ptr %arg, i32 %arg1) {
 bb:
   %tmp = alloca i16
   br label %bb2
@@ -13,9 +13,9 @@ bb:
 bb2:
   %tmp3 = phi i32 [ %tmp7, %bb2 ], [ 0, %bb ]
   %tmp4 = mul nsw i32 %tmp3, %arg1
-  %tmp5 = getelementptr inbounds i16, i16* %arg, i32 %tmp4
-  %tmp6 = load i16, i16* %tmp5, align 2
-  store i16 %tmp6, i16* %tmp
+  %tmp5 = getelementptr inbounds i16, ptr %arg, i32 %tmp4
+  %tmp6 = load i16, ptr %tmp5, align 2
+  store i16 %tmp6, ptr %tmp
   %tmp7 = add nsw i32 %tmp3, 1
   br i1 false, label %bb2, label %bb8
 

diff  --git a/polly/test/CodeGen/multidim_2d_parametric_array_static_loop_bounds.ll b/polly/test/CodeGen/multidim_2d_parametric_array_static_loop_bounds.ll
index 481dd32c7f3a4..464ddb3740f7d 100644
--- a/polly/test/CodeGen/multidim_2d_parametric_array_static_loop_bounds.ll
+++ b/polly/test/CodeGen/multidim_2d_parametric_array_static_loop_bounds.ll
@@ -15,7 +15,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK: %polly.rtc.result = and i1 %0, true
 ; CHECK: br i1 %polly.rtc.result, label %polly.start, label %for.i
 
-define void @foo(i64 %n, i64 %m, double* %A) {
+define void @foo(i64 %n, i64 %m, ptr %A) {
 entry:
   br label %for.i
 
@@ -27,8 +27,8 @@ for.i:
 for.j:
   %j = phi i64 [ 0, %for.i ], [ %j.inc, %for.j ]
   %vlaarrayidx.sum = add i64 %j, %tmp
-  %arrayidx = getelementptr inbounds double, double* %A, i64 %vlaarrayidx.sum
-  store double 1.0, double* %arrayidx
+  %arrayidx = getelementptr inbounds double, ptr %A, i64 %vlaarrayidx.sum
+  store double 1.0, ptr %arrayidx
   %j.inc = add nsw i64 %j, 1
   %j.exitcond = icmp eq i64 %j.inc, 150
   br i1 %j.exitcond, label %for.i.inc, label %for.j

diff  --git a/polly/test/CodeGen/multidim_alias_check.ll b/polly/test/CodeGen/multidim_alias_check.ll
index 063aa1957d7ad..585577da0e6dc 100644
--- a/polly/test/CodeGen/multidim_alias_check.ll
+++ b/polly/test/CodeGen/multidim_alias_check.ll
@@ -4,12 +4,11 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; CHECK: %polly.access.sext.A = sext i32 %n to i64
 ; CHECK: %polly.access.mul.A = mul i64 %polly.access.sext.A, %0
 ; CHECK: %polly.access.add.A = add i64 %polly.access.mul.A, 1
-; CHECK: %polly.access.A = getelementptr double, double* %A, i64 %polly.access.add.A
-; CHECK: %polly.access.y = getelementptr double, double* %y, i64 0
-; CHECK: icmp ule double* %polly.access.A, %polly.access.y
+; CHECK: %polly.access.A = getelementptr double, ptr %A, i64 %polly.access.add.A
+; CHECK: icmp ule ptr %polly.access.A, %y
 
 
-define void @init_array(i32 %n, double* %A, double* %y) {
+define void @init_array(i32 %n, ptr %A, ptr %y) {
 entry:
   %add3 = add nsw i32 %n, 1
   %tmp = zext i32 %add3 to i64
@@ -17,8 +16,7 @@ entry:
 
 for.body:
   %i.04 = phi i32 [ %inc39, %for.cond.loopexit ], [ 0, %entry ]
-  %arrayidx16 = getelementptr inbounds double, double* %y, i64 0
-  store double 1.0, double* %arrayidx16
+  store double 1.0, ptr %y
   %cmp251 = icmp slt i32 %n, 0
   %inc39 = add nsw i32 %i.04, 1
   br i1 %cmp251, label %for.cond.loopexit, label %for.body27
@@ -27,8 +25,8 @@ for.body27:
   %idxprom35 = sext i32 %i.04 to i64
   %tmp1 = mul nsw i64 %idxprom35, %tmp
   %arrayidx36.sum = add i64 0, %tmp1
-  %arrayidx37 = getelementptr inbounds double, double* %A, i64 %arrayidx36.sum
-  store double 1.0, double* %arrayidx37
+  %arrayidx37 = getelementptr inbounds double, ptr %A, i64 %arrayidx36.sum
+  store double 1.0, ptr %arrayidx37
   br label %for.cond.loopexit
 
 for.cond.loopexit:

diff  --git a/polly/test/CodeGen/multiple-codegens.ll b/polly/test/CodeGen/multiple-codegens.ll
index 3198dfc6c5afd..f950fa4a3e1d6 100644
--- a/polly/test/CodeGen/multiple-codegens.ll
+++ b/polly/test/CodeGen/multiple-codegens.ll
@@ -31,24 +31,24 @@ target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
 define i32 @main() {
 entry:
   %retval = alloca i32, align 4
-  store i32 0, i32* %retval, align 4
-  %.pre = load i32, i32* @a, align 4
+  store i32 0, ptr %retval, align 4
+  %.pre = load i32, ptr @a, align 4
   br label %while.cond
 
 while.cond:                                       ; preds = %while.end, %entry
   %0 = phi i32 [ %inc, %while.end ], [ %.pre, %entry ]
   %inc = add nsw i32 %0, 1
-  store i32 %inc, i32* @a, align 4
+  store i32 %inc, ptr @a, align 4
   %tobool = icmp ne i32 %0, 0
   br i1 %tobool, label %while.body, label %while.end4
 
 while.body:                                       ; preds = %while.cond
-  %1 = load i32, i32* @b, align 4
+  %1 = load i32, ptr @b, align 4
   %tobool2 = icmp ne i32 %1, 0
   br i1 %tobool2, label %while.body3, label %while.end
 
 while.body3:                                      ; preds = %while.body
-  store i32 0, i32* @c, align 4
+  store i32 0, ptr @c, align 4
   br label %while.end
 
 while.end:                                        ; preds = %while.body3, %while.body

diff  --git a/polly/test/CodeGen/multiple-scops-in-a-row.ll b/polly/test/CodeGen/multiple-scops-in-a-row.ll
index 376044eabd0b6..a24a2e71ad4e2 100644
--- a/polly/test/CodeGen/multiple-scops-in-a-row.ll
+++ b/polly/test/CodeGen/multiple-scops-in-a-row.ll
@@ -15,13 +15,13 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @hoge(i8* %arg) {
+define void @hoge(ptr %arg) {
 bb:
   br label %bb1
 
 bb1:                                              ; preds = %bb
-  %tmp = getelementptr inbounds i8, i8* %arg, i64 5
-  %tmp2 = getelementptr inbounds i8, i8* %arg, i64 6
+  %tmp = getelementptr inbounds i8, ptr %arg, i64 5
+  %tmp2 = getelementptr inbounds i8, ptr %arg, i64 6
   br i1 false, label %bb3, label %bb4
 
 bb3:                                              ; preds = %bb1

diff  --git a/polly/test/CodeGen/multiple-types-invariant-load-2.ll b/polly/test/CodeGen/multiple-types-invariant-load-2.ll
index 007fb79584532..0fd1df75e2ec7 100644
--- a/polly/test/CodeGen/multiple-types-invariant-load-2.ll
+++ b/polly/test/CodeGen/multiple-types-invariant-load-2.ll
@@ -5,17 +5,16 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @hoge(i8* %arg) #0 {
+define void @hoge(ptr %arg) #0 {
 bb:
   br label %bb3
 
 bb3:                                              ; preds = %bb
-  %tmp = load i8, i8* %arg, align 1, !tbaa !1
+  %tmp = load i8, ptr %arg, align 1, !tbaa !1
   br i1 false, label %bb7, label %bb4
 
 bb4:                                              ; preds = %bb3
-  %tmp5 = bitcast i8* %arg to i32*
-  %tmp6 = load i32, i32* %tmp5, align 4, !tbaa !4
+  %tmp6 = load i32, ptr %arg, align 4, !tbaa !4
   br label %bb7
 
 bb7:                                              ; preds = %bb4, %bb3

diff  --git a/polly/test/CodeGen/multiple_sai_fro_same_base_address.ll b/polly/test/CodeGen/multiple_sai_fro_same_base_address.ll
index 8beb4a6482f23..0163f248229e1 100644
--- a/polly/test/CodeGen/multiple_sai_fro_same_base_address.ll
+++ b/polly/test/CodeGen/multiple_sai_fro_same_base_address.ll
@@ -9,36 +9,36 @@
 
 %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962 = type { i16, i16, %union.anon.1.289.321.337.353.481.545.593.625.817.897.913.961 }
 %union.anon.1.289.321.337.353.481.545.593.625.817.897.913.961 = type { %struct.anon.0.288.320.336.352.480.544.592.624.816.896.912.960 }
-%struct.anon.0.288.320.336.352.480.544.592.624.816.896.912.960 = type { %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962*, %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962* }
+%struct.anon.0.288.320.336.352.480.544.592.624.816.896.912.960 = type { ptr, ptr }
 
 define void @leval_or() {
 entry:
   br label %while.cond
 
 while.cond:                                       ; preds = %sw.bb1.i30, %cond.end.i28, %entry
-  %next.0 = phi %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962* [ null, %entry ], [ %1, %sw.bb1.i30 ], [ null, %cond.end.i28 ]
+  %next.0 = phi ptr [ null, %entry ], [ %1, %sw.bb1.i30 ], [ null, %cond.end.i28 ]
   br i1 undef, label %cond.end.i28, label %if.then
 
 if.then:                                          ; preds = %while.cond
   ret void
 
 cond.end.i28:                                     ; preds = %while.cond
-  %type.i24 = getelementptr inbounds %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962, %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962* %next.0, i64 0, i32 1
-  %0 = load i16, i16* %type.i24, align 2
+  %type.i24 = getelementptr inbounds %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962, ptr %next.0, i64 0, i32 1
+  %0 = load i16, ptr %type.i24, align 2
   br i1 false, label %sw.bb1.i30, label %while.cond
 
 sw.bb1.i30:                                       ; preds = %cond.end.i28
-  %cdr.i29 = getelementptr inbounds %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962, %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962* %next.0, i64 0, i32 2, i32 0, i32 1
-  %1 = load %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962*, %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962** %cdr.i29, align 8
+  %cdr.i29 = getelementptr inbounds %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962, ptr %next.0, i64 0, i32 2, i32 0, i32 1
+  %1 = load ptr, ptr %cdr.i29, align 8
   br label %while.cond
 }
 
 ; SCOP:      Arrays {
-; SCOP-NEXT:     %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962* MemRef_next_0;
+; SCOP-NEXT:     ptr MemRef_next_0;
 ; SCOP-NEXT:     i16 MemRef_next_0[*];
 ; SCOP-NEXT: }
 
 ; IR:      polly.merge_new_and_old:
-; IR-NEXT:   %next.0.ph.merge = phi %struct.obj.2.290.322.338.354.482.546.594.626.818.898.914.962* [ %next.0.ph.final_reload, %polly.exiting ], [ %next.0.ph, %while.cond.region_exiting ]
+; IR-NEXT:   %next.0.ph.merge = phi ptr [ %next.0.ph.final_reload, %polly.exiting ], [ %next.0.ph, %while.cond.region_exiting ]
 ; IR-NEXT:   %indvar.next = add i64 %indvar, 1
 ; IR-NEXT:   br label %while.cond

diff  --git a/polly/test/CodeGen/no_guard_bb.ll b/polly/test/CodeGen/no_guard_bb.ll
index 6d2bebbc179da..47c87ff7c8685 100644
--- a/polly/test/CodeGen/no_guard_bb.ll
+++ b/polly/test/CodeGen/no_guard_bb.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A) {
+define void @jd(ptr %A) {
 entry:
   br label %for.cond
 
@@ -19,9 +19,9 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
   %tmp = trunc i64 %indvars.iv to i32
-  store i32 %tmp, i32* %arrayidx, align 4
+  store i32 %tmp, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/non-affine-dominance-generated-entering.ll b/polly/test/CodeGen/non-affine-dominance-generated-entering.ll
index 4ca7d7b36ebb5..ebf36acc8d962 100644
--- a/polly/test/CodeGen/non-affine-dominance-generated-entering.ll
+++ b/polly/test/CodeGen/non-affine-dominance-generated-entering.ll
@@ -7,15 +7,15 @@
 ; being copied. We check whether it is reusing the reloaded scalar.
 ;
 ; CHECK-LABEL: polly.stmt.subregionB_entry.exit:
-; CHECK:         store i1 %polly.cond, i1* %cond.s2a
+; CHECK:         store i1 %polly.cond, ptr %cond.s2a
 ;
 ; CHECK-LABEL: polly.stmt.subregionB_entry.entry:
-; CHECK:         %cond.s2a.reload = load i1, i1* %cond.s2a
+; CHECK:         %cond.s2a.reload = load i1, ptr %cond.s2a
 ;
 ; CHECK-LABEL: polly.stmt.subregionB_entry:
 ; CHECK:         br i1 %cond.s2a.reload
 
-define void @func(i32* %A) {
+define void @func(ptr %A) {
 entry:
   br label %subregionA_entry
 
@@ -30,7 +30,7 @@ subregionA_else:
   br label %subregionB_entry
 
 subregionB_entry:
-  store i32 0, i32* %A
+  store i32 0, ptr %A
   br i1 %cond, label %subregionB_if, label %subregionB_exit
 
 subregionB_if:

diff  --git a/polly/test/CodeGen/non-affine-phi-node-expansion-2.ll b/polly/test/CodeGen/non-affine-phi-node-expansion-2.ll
index c0d30fb6bc56c..2aca316d4c885 100644
--- a/polly/test/CodeGen/non-affine-phi-node-expansion-2.ll
+++ b/polly/test/CodeGen/non-affine-phi-node-expansion-2.ll
@@ -4,7 +4,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 
 ; CHECK: polly.stmt.bb3:                                   ; preds = %polly.stmt.bb3.entry
-; CHECK:   %tmp6_p_scalar_ = load double, double* %arg1{{[0-9]*}}, align 8, !alias.scope !0, !noalias !3
+; CHECK:   %tmp6_p_scalar_ = load double, ptr %arg1{{[0-9]*}}, align 8, !alias.scope !0, !noalias !3
 ; CHECK:   %p_tmp7 = fadd double 1.000000e+00, %tmp6_p_scalar_
 ; CHECK:   %p_tmp8 = fcmp olt double 1.400000e+01, %p_tmp7
 ; CHECK:   br i1 %p_tmp8, label %polly.stmt.bb9, label %polly.stmt.bb10
@@ -17,9 +17,9 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; CHECK: polly.stmt.bb11.exit:                             ; preds = %polly.stmt.bb10, %polly.stmt.bb9
 ; CHECK:   %polly.tmp12 = phi double [ 1.000000e+00, %polly.stmt.bb9 ], [ 2.000000e+00, %polly.stmt.bb10 ]
-; CHECK:   store double %polly.tmp12, double* %tmp12.phiops
+; CHECK:   store double %polly.tmp12, ptr %tmp12.phiops
 
-define void @hoge(i32 %arg, [1024 x double]* %arg1) {
+define void @hoge(i32 %arg, ptr %arg1) {
 bb:
   br label %bb2
 
@@ -29,8 +29,7 @@ bb2:                                              ; preds = %bb
 bb3:                                              ; preds = %bb11, %bb2
   %tmp = phi i64 [ 0, %bb11 ], [ 0, %bb2 ]
   %tmp4 = icmp sgt i32 %arg, 0
-  %tmp5 = getelementptr inbounds [1024 x double], [1024 x double]* %arg1, i64 0, i64 0
-  %tmp6 = load double, double* %tmp5
+  %tmp6 = load double, ptr %arg1
   %tmp7 = fadd double 1.0, %tmp6
   %tmp8 = fcmp olt double 14.0, %tmp7
   br i1 %tmp8, label %bb9, label %bb10
@@ -43,8 +42,8 @@ bb10:                                             ; preds = %bb3
 
 bb11:                                             ; preds = %bb10, %bb9
   %tmp12 = phi double [ 1.0, %bb9 ], [ 2.0, %bb10 ]
-  %tmp13 = getelementptr inbounds [1024 x double], [1024 x double]* %arg1, i64 %tmp, i64 0
-  store double %tmp12, double* %tmp13
+  %tmp13 = getelementptr inbounds [1024 x double], ptr %arg1, i64 %tmp, i64 0
+  store double %tmp12, ptr %tmp13
   %tmp14 = add nuw nsw i64 0, 1
   %tmp15 = trunc i64 %tmp14 to i32
   br i1 false, label %bb3, label %bb16

diff  --git a/polly/test/CodeGen/non-affine-phi-node-expansion-3.ll b/polly/test/CodeGen/non-affine-phi-node-expansion-3.ll
index 3296bff97012b..18a4b6e4ed4af 100644
--- a/polly/test/CodeGen/non-affine-phi-node-expansion-3.ll
+++ b/polly/test/CodeGen/non-affine-phi-node-expansion-3.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-codegen \
 ; RUN:     -S < %s | FileCheck %s
 
-define void @foo(float* %A, i1 %cond0, i1 %cond1) {
+define void @foo(ptr %A, i1 %cond0, i1 %cond1) {
 entry:
   br label %loop
 
@@ -36,7 +36,7 @@ branch2:
 backedge:
   %merge = phi float [%val0, %loop], [%val1, %branch1], [%val2, %branch2]
   %indvar.next = add i64 %indvar, 1
-  store float %merge, float* %A
+  store float %merge, ptr %A
   %cmp = icmp sle i64 %indvar.next, 100
   br i1 %cmp, label %loop, label %exit
 

diff  --git a/polly/test/CodeGen/non-affine-phi-node-expansion-4.ll b/polly/test/CodeGen/non-affine-phi-node-expansion-4.ll
index 6943711ffb169..8a07ee7c74240 100644
--- a/polly/test/CodeGen/non-affine-phi-node-expansion-4.ll
+++ b/polly/test/CodeGen/non-affine-phi-node-expansion-4.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-codegen \
 ; RUN:     -S < %s | FileCheck %s
 
-define void @foo(float* %A, i1 %cond0, i1 %cond1) {
+define void @foo(ptr %A, i1 %cond0, i1 %cond1) {
 entry:
   br label %loop
 
@@ -40,7 +40,7 @@ branch2:
 backedge:
   %merge = phi float [%val0, %loop], [%val1, %branch1], [%val2, %branch2]
   %indvar.next = add i64 %indvar, 1
-  store float %merge, float* %A
+  store float %merge, ptr %A
   %cmp = icmp sle i64 %indvar.next, 100
   br i1 %cmp, label %loop, label %exit
 

diff  --git a/polly/test/CodeGen/non-affine-phi-node-expansion.ll b/polly/test/CodeGen/non-affine-phi-node-expansion.ll
index 246cd8c89de89..091fc3e323dc0 100644
--- a/polly/test/CodeGen/non-affine-phi-node-expansion.ll
+++ b/polly/test/CodeGen/non-affine-phi-node-expansion.ll
@@ -20,10 +20,10 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; CHECK:   br label %polly.stmt.bb13.exit
 
 ; CHECK: polly.stmt.bb5:                                   ; preds = %polly.stmt.bb3
-; CHECK:   load i32, i32* %B
+; CHECK:   load i32, ptr %B
 
 ; Function Attrs: nounwind uwtable
-define void @quux(%struct.wombat* %arg, i32* %B) {
+define void @quux(ptr %arg, ptr %B) {
 bb:
   br i1 undef, label %bb2, label %bb1
 
@@ -41,9 +41,8 @@ bb4:                                              ; preds = %bb3
   br label %bb13
 
 bb5:                                              ; preds = %bb3
-  %tmp7 = load i32, i32* %B
-  %tmp12 = getelementptr inbounds %struct.wombat, %struct.wombat* %arg, i64 0, i32 0, i64 0
-  store i32 %tmp7, i32* %tmp12
+  %tmp7 = load i32, ptr %B
+  store i32 %tmp7, ptr %arg
   br label %bb13
 
 bb13:                                             ; preds = %bb5, %bb4

diff  --git a/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize-2.ll b/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize-2.ll
index 1a6fb4d537bcd..6a1d1f12ba9cc 100644
--- a/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize-2.ll
+++ b/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize-2.ll
@@ -21,8 +21,8 @@ for.end20:                                        ; preds = %entry
 
 for.body24:                                       ; preds = %for.body61.preheader, %for.end20
   %indvars.iv = phi i64 [ 0, %for.end20 ], [ %indvars.iv.next, %for.body61.preheader ]
-  %arrayidx26 = getelementptr inbounds [256 x i8], [256 x i8]* @connected_passed, i64 0, i64 %indvars.iv
-  store i8 0, i8* %arrayidx26, align 1
+  %arrayidx26 = getelementptr inbounds [256 x i8], ptr @connected_passed, i64 0, i64 %indvars.iv
+  store i8 0, ptr %arrayidx26, align 1
   %0 = trunc i64 %indvars.iv to i32
   br i1 false, label %for.inc56.4, label %if.then51
 

diff  --git a/polly/test/CodeGen/non-affine-region-phi-references-in-scop-value.ll b/polly/test/CodeGen/non-affine-region-phi-references-in-scop-value.ll
index 6c28208a5f590..f6e4eb57319d9 100644
--- a/polly/test/CodeGen/non-affine-region-phi-references-in-scop-value.ll
+++ b/polly/test/CodeGen/non-affine-region-phi-references-in-scop-value.ll
@@ -5,7 +5,7 @@
 ; PHI-nodes in non-affine regions are code generated correctly.
 
 ; CHECK: polly.stmt.bb3.entry:
-; CHECK-NEXT:   %j.0.phiops.reload = load i64, i64* %j.0.phiops
+; CHECK-NEXT:   %j.0.phiops.reload = load i64, ptr %j.0.phiops
 ; CHECK-NEXT:   br label %polly.stmt.bb3
 
 ; CHECK: polly.stmt.bb3:
@@ -20,7 +20,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64* %A, float* %B, i64* %xptr) {
+define void @foo(ptr %A, ptr %B, ptr %xptr) {
 bb:
   br label %bb1
 
@@ -30,7 +30,7 @@ bb1:                                              ; preds = %bb12, %bb
   br i1 %exitcond, label %bb2, label %bb14
 
 bb2:                                              ; preds = %bb1
-  %x = load i64, i64* %xptr
+  %x = load i64, ptr %xptr
   br label %bb3
 
 bb3:                                              ; preds = %bb9, %bb2
@@ -40,10 +40,10 @@ bb3:                                              ; preds = %bb9, %bb2
   br i1 %tmp4, label %bb5, label %bb11
 
 bb5:                                              ; preds = %bb3
-  %tmp6 = getelementptr inbounds float, float* %B, i64 42
-  %tmp7 = load float, float* %tmp6, align 4
+  %tmp6 = getelementptr inbounds float, ptr %B, i64 42
+  %tmp7 = load float, ptr %tmp6, align 4
   %tmp8 = fadd float %tmp7, 1.000000e+00
-  store float %tmp8, float* %tmp6, align 4
+  store float %tmp8, ptr %tmp6, align 4
   br label %bb9
 
 bb9:                                              ; preds = %bb5

diff  --git a/polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll b/polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll
index 265363c0735d8..5f6642b0630d1 100644
--- a/polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll
+++ b/polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll
@@ -2,12 +2,12 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.1 = type { %struct.2*, %struct.2*, %struct.3*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, i8*, i8*, i8*, i8*, i32, [38 x i8], [128 x i8], [38 x i32], [256 x i8], [256 x i8], [256 x i8], %struct.4, [25 x [16 x %struct.4]], [128 x [64 x i16]] }
+%struct.1 = type { ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, [38 x i8], [128 x i8], [38 x i32], [256 x i8], [256 x i8], [256 x i8], %struct.4, [25 x [16 x %struct.4]], [128 x [64 x i16]] }
 %struct.2 = type { i16, i16, i32, i32 }
 %struct.3 = type { i8, i8, i16, i16 }
 %struct.4 = type { i16, i8, i8 }
 
-define void @AllocUnitsRare(%struct.1* %p, i32 %indx) {
+define void @AllocUnitsRare(ptr %p, i32 %indx) {
 entry:
   br label %do.body
 
@@ -17,16 +17,14 @@ do.body:                                          ; preds = %do.body, %entry
   br i1 undef, label %do.body, label %do.end
 
 do.end:                                           ; preds = %do.body
-  %Base.i = getelementptr inbounds %struct.1, %struct.1* %p, i32 0, i32 12
-  %tmp.i = load i8*, i8** %Base.i, align 8, !tbaa !0
+  %Base.i = getelementptr inbounds %struct.1, ptr %p, i32 0, i32 12
+  %tmp.i = load ptr, ptr %Base.i, align 8, !tbaa !0
   %idxprom.i = zext i32 %inc to i64
-  %FreeList.i = getelementptr inbounds %struct.1, %struct.1* %p, i32 0, i32 20
-  %arrayidx.i = getelementptr inbounds [38 x i32], [38 x i32]* %FreeList.i, i64 0, i64 %idxprom.i
-  %tmp1.i = bitcast i8* %tmp.i to i32*
-  %tmp2.i = load i32, i32* %tmp1.i, align 4, !tbaa !8
-  store i32 %tmp2.i, i32* %arrayidx.i, align 4, !tbaa !8
-  %Indx2Units.i = getelementptr inbounds %struct.1, %struct.1* %p, i32 0, i32 18
-  %arrayidx.i1 = getelementptr inbounds [38 x i8], [38 x i8]* %Indx2Units.i, i64 0, i64 0
+  %FreeList.i = getelementptr inbounds %struct.1, ptr %p, i32 0, i32 20
+  %arrayidx.i = getelementptr inbounds [38 x i32], ptr %FreeList.i, i64 0, i64 %idxprom.i
+  %tmp2.i = load i32, ptr %tmp.i, align 4, !tbaa !8
+  store i32 %tmp2.i, ptr %arrayidx.i, align 4, !tbaa !8
+  %Indx2Units.i = getelementptr inbounds %struct.1, ptr %p, i32 0, i32 18
   %cmp.i = icmp ne i32 0, 3
   br i1 %cmp.i, label %if.then.i, label %SplitBlock.exit
 

diff  --git a/polly/test/CodeGen/only_non_affine_error_region.ll b/polly/test/CodeGen/only_non_affine_error_region.ll
index e8ba7686343cc..64f53bcda2c23 100644
--- a/polly/test/CodeGen/only_non_affine_error_region.ll
+++ b/polly/test/CodeGen/only_non_affine_error_region.ll
@@ -5,7 +5,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @f(i32 %argc, i32* %A) #0 {
+define void @f(i32 %argc, ptr %A) #0 {
 entry:
   br i1 undef, label %for.end, label %for.body
 
@@ -18,7 +18,7 @@ for.end:                                          ; preds = %for.body, %entry
   br i1 %cmp170, label %if.then172, label %if.end174
 
 if.then172:                                       ; preds = %for.end
-  %0 = load i32, i32* %A
+  %0 = load i32, ptr %A
   tail call void @usage()
   br label %if.end174
 

diff  --git a/polly/test/CodeGen/openmp_limit_threads.ll b/polly/test/CodeGen/openmp_limit_threads.ll
index b3c2f3f73d11f..e8eb819f13d98 100644
--- a/polly/test/CodeGen/openmp_limit_threads.ll
+++ b/polly/test/CodeGen/openmp_limit_threads.ll
@@ -14,18 +14,18 @@
 ;          A[i + j * 1024] = 0;
 ;    }
 
-; AUTO: call void @GOMP_parallel_loop_runtime_start(void (i8*)* @storePosition_polly_subfn, i8* %polly.par.userContext{{[0-9]*}}, i32 0, i64 0, i64 1024, i64 1)
-; ONE: call void @GOMP_parallel_loop_runtime_start(void (i8*)* @storePosition_polly_subfn, i8* %polly.par.userContext{{[0-9]*}}, i32 1, i64 0, i64 1024, i64 1)
-; FOUR: call void @GOMP_parallel_loop_runtime_start(void (i8*)* @storePosition_polly_subfn, i8* %polly.par.userContext{{[0-9]*}}, i32 4, i64 0, i64 1024, i64 1)
+; AUTO: call void @GOMP_parallel_loop_runtime_start(ptr @storePosition_polly_subfn, ptr %polly.par.userContext{{[0-9]*}}, i32 0, i64 0, i64 1024, i64 1)
+; ONE: call void @GOMP_parallel_loop_runtime_start(ptr @storePosition_polly_subfn, ptr %polly.par.userContext{{[0-9]*}}, i32 1, i64 0, i64 1024, i64 1)
+; FOUR: call void @GOMP_parallel_loop_runtime_start(ptr @storePosition_polly_subfn, ptr %polly.par.userContext{{[0-9]*}}, i32 4, i64 0, i64 1024, i64 1)
 
 ; In automatic mode, no threads are pushed explicitly.
 ; LIBOMP-AUTO-NOT: call void @__kmpc_push_num_threads
-; LIBOMP-ONE: call void @__kmpc_push_num_threads(%struct.ident_t* @.loc.dummy{{[.0-9]*}}, i32 %{{[0-9]+}}, i32 1)
-; LIBOMP-FOUR: call void @__kmpc_push_num_threads(%struct.ident_t* @.loc.dummy{{[.0-9]*}}, i32 %{{[0-9]+}}, i32 4)
+; LIBOMP-ONE: call void @__kmpc_push_num_threads(ptr @.loc.dummy{{[.0-9]*}}, i32 %{{[0-9]+}}, i32 1)
+; LIBOMP-FOUR: call void @__kmpc_push_num_threads(ptr @.loc.dummy{{[.0-9]*}}, i32 %{{[0-9]+}}, i32 4)
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @storePosition(i32* %A) {
+define void @storePosition(ptr %A) {
 entry:
   br label %for.cond
 
@@ -45,8 +45,8 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 for.body3:                                        ; preds = %for.cond1
   %tmp = shl nsw i64 %indvars.iv, 10
   %tmp6 = add nsw i64 %indvars.iv3, %tmp
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %tmp6
-  store i32 0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %tmp6
+  store i32 0, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/CodeGen/param_div_div_div_2.ll b/polly/test/CodeGen/param_div_div_div_2.ll
index b9a061a611a0f..764ca241f1661 100644
--- a/polly/test/CodeGen/param_div_div_div_2.ll
+++ b/polly/test/CodeGen/param_div_div_div_2.ll
@@ -26,7 +26,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %a, i32 %b, i32 %c, i32 %d) {
+define void @f(ptr %A, i32 %a, i32 %b, i32 %c, i32 %d) {
 entry:
   br label %for.cond
 
@@ -40,12 +40,12 @@ for.body:                                         ; preds = %for.cond
   %div1 = udiv i32 %c, %d
   %div2 = udiv i32 %div, %div1
   %idxprom = zext i32 %div2 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx4, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx4, align 4
   %add = add i32 %tmp1, %tmp
-  store i32 %add, i32* %arrayidx4, align 4
+  store i32 %add, ptr %arrayidx4, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/partial_write_emptyset.ll b/polly/test/CodeGen/partial_write_emptyset.ll
index 4624976ececbf..a25195f11ed7e 100644
--- a/polly/test/CodeGen/partial_write_emptyset.ll
+++ b/polly/test/CodeGen/partial_write_emptyset.ll
@@ -8,7 +8,7 @@
 ;   A[0] = 42.0
 ;
 
-define void @partial_write_emptyset(i32 %n, double* noalias nonnull %A) {
+define void @partial_write_emptyset(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -18,7 +18,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/CodeGen/partial_write_in_region_with_loop.ll b/polly/test/CodeGen/partial_write_in_region_with_loop.ll
index 3c6ebaffad34f..5af09852944b1 100644
--- a/polly/test/CodeGen/partial_write_in_region_with_loop.ll
+++ b/polly/test/CodeGen/partial_write_in_region_with_loop.ll
@@ -22,16 +22,16 @@
 ; CHECK-NEXT:  br i1 %p_tmp4, label %polly.stmt.bb5, label %polly.stmt.bb11.exit
 
 ; CHECK:polly.stmt.bb5:
-; CHECK-NEXT:  %p_tmp6 = getelementptr inbounds float, float* %B, i64 42
-; CHECK-NEXT:  %tmp7_p_scalar_ = load float, float* %p_tmp6
+; CHECK-NEXT:  %p_tmp6 = getelementptr inbounds float, ptr %B, i64 42
+; CHECK-NEXT:  %tmp7_p_scalar_ = load float, ptr %p_tmp6
 ; CHECK-NEXT:  %p_tmp8 = fadd float %tmp7_p_scalar_, 1.000000e+00
 ; CHECK-NEXT:  %16 = icmp sle i64 %polly.indvar, 9
 ; CHECK-NEXT:  %polly.Stmt_bb3__TO__bb11_MayWrite2.cond = icmp ne i1 %16, false
 ; CHECK-NEXT:  br i1 %polly.Stmt_bb3__TO__bb11_MayWrite2.cond, label %polly.stmt.bb5.Stmt_bb3__TO__bb11_MayWrite2.partial, label %polly.stmt.bb5.cont
 
 ; CHECK:polly.stmt.bb5.Stmt_bb3__TO__bb11_MayWrite2.partial: ; preds = %polly.stmt.bb5
-; CHECK-NEXT:  %polly.access.B3 = getelementptr float, float* %B, i64 42
-; CHECK-NEXT:  store float %p_tmp8, float* %polly.access.B3
+; CHECK-NEXT:  %polly.access.B3 = getelementptr float, ptr %B, i64 42
+; CHECK-NEXT:  store float %p_tmp8, ptr %polly.access.B3
 ; CHECK-NEXT:  br label %polly.stmt.bb5.cont
 
 ; CHECK:polly.stmt.bb5.cont:
@@ -48,7 +48,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @partial_write_in_region_with_loop(i64* %A, float* %B, i64* %xptr) {
+define void @partial_write_in_region_with_loop(ptr %A, ptr %B, ptr %xptr) {
 bb:
   br label %bb1
 
@@ -58,7 +58,7 @@ bb1:                                              ; preds = %bb12, %bb
   br i1 %exitcond, label %bb2, label %bb14
 
 bb2:                                              ; preds = %bb1
-  %x = load i64, i64* %xptr
+  %x = load i64, ptr %xptr
   br label %bb3
 
 bb3:                                              ; preds = %bb9, %bb2
@@ -68,10 +68,10 @@ bb3:                                              ; preds = %bb9, %bb2
   br i1 %tmp4, label %bb5, label %bb11
 
 bb5:                                              ; preds = %bb3
-  %tmp6 = getelementptr inbounds float, float* %B, i64 42
-  %tmp7 = load float, float* %tmp6, align 4
+  %tmp6 = getelementptr inbounds float, ptr %B, i64 42
+  %tmp7 = load float, ptr %tmp6, align 4
   %tmp8 = fadd float %tmp7, 1.000000e+00
-  store float %tmp8, float* %tmp6, align 4
+  store float %tmp8, ptr %tmp6, align 4
   %tmp10 = add nuw nsw i64 %j.0, 1
   br label %bb3
 

diff  --git a/polly/test/CodeGen/partial_write_mapped_scalar.ll b/polly/test/CodeGen/partial_write_mapped_scalar.ll
index c343f15d81c32..9137ef2123c8c 100644
--- a/polly/test/CodeGen/partial_write_mapped_scalar.ll
+++ b/polly/test/CodeGen/partial_write_mapped_scalar.ll
@@ -10,7 +10,7 @@
 ;     A[0] = val;
 ; }
 
-define void @partial_write_mapped_scalar(i32 %n, double* noalias nonnull %A) {
+define void @partial_write_mapped_scalar(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -25,7 +25,7 @@ for:
       br i1 %if.cond, label %user, label %inc
 
     user:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 inc:
@@ -49,8 +49,8 @@ return:
 ; CHECK-NEXT:   br i1 %polly.Stmt_body_Write0.cond, label %polly.stmt.body.Stmt_body_Write0.partial, label %polly.stmt.body.cont
 
 ; CHECK:      polly.stmt.body.Stmt_body_Write0.partial:
-; CHECK-NEXT:   %polly.access.A = getelementptr double, double* %A, i64 1
-; CHECK-NEXT:   store double %p_val, double* %polly.access.A
+; CHECK-NEXT:   %polly.access.A = getelementptr double, ptr %A, i64 1
+; CHECK-NEXT:   store double %p_val, ptr %polly.access.A
 ; CHECK-NEXT:   br label %polly.stmt.body.cont
 
 ; CHECK:      polly.stmt.body.cont:

diff  --git a/polly/test/CodeGen/partial_write_mapped_scalar_subregion.ll b/polly/test/CodeGen/partial_write_mapped_scalar_subregion.ll
index 0d41046f213b9..e054b65eadf30 100644
--- a/polly/test/CodeGen/partial_write_mapped_scalar_subregion.ll
+++ b/polly/test/CodeGen/partial_write_mapped_scalar_subregion.ll
@@ -14,7 +14,7 @@
 ;     A[0] = val;
 ; }
 
-define void @partial_write_mapped_scalar_subregion(i32 %n, double* noalias nonnull %A) {
+define void @partial_write_mapped_scalar_subregion(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -36,7 +36,7 @@ for:
       br i1 %if.cond, label %user, label %inc
 
     user:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 inc:
@@ -57,8 +57,8 @@ return:
 ; CHECK-NEXT:    br i1 %polly.Stmt_subregion__TO__subregion_exit_Write0.cond, label %polly.stmt.subregion_exit.exit.Stmt_subregion__TO__subregion_exit_Write0.partial, label %polly.stmt.subregion_exit.exit.cont
 
 ; CHECK-LABEL: polly.stmt.subregion_exit.exit.Stmt_subregion__TO__subregion_exit_Write0.partial:
-; CHECK-NEXT:    %polly.access.A = getelementptr double, double* %A, i64 1
-; CHECK-NEXT:    store double %p_val, double* %polly.access.A
+; CHECK-NEXT:    %polly.access.A = getelementptr double, ptr %A, i64 1
+; CHECK-NEXT:    store double %p_val, ptr %polly.access.A
 ; CHECK-NEXT:    br label %polly.stmt.subregion_exit.exit.cont
 
 ; CHECK-LABEL: polly.stmt.subregion_exit.exit.cont:

diff  --git a/polly/test/CodeGen/partial_write_mapped_vector.ll b/polly/test/CodeGen/partial_write_mapped_vector.ll
index b40f72b35bf89..27d3a74bd6ba5 100644
--- a/polly/test/CodeGen/partial_write_mapped_vector.ll
+++ b/polly/test/CodeGen/partial_write_mapped_vector.ll
@@ -10,7 +10,7 @@
 ;     A[0] = val;
 ; }
 
-define void @partial_write_mapped_vector(double* noalias nonnull %A) {
+define void @partial_write_mapped_vector(ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -25,8 +25,8 @@ for:
       br i1 %if.cond, label %user, label %inc
 
     user:
-      %elt= getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %elt
+      %elt= getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %elt
       br label %inc
 
 inc:
@@ -50,8 +50,8 @@ return:
 ; CHECK-NEXT:    br i1 %polly.Stmt_body_Write0.cond, label %polly.stmt.body.Stmt_body_Write0.partial, label %polly.stmt.body.cont
 
 ; CHECK-LABEL:  polly.stmt.body.Stmt_body_Write0.partial:
-; CHECK-NEXT:    %polly.access.A = getelementptr double, double* %A, i64 1
-; CHECK-NEXT:    store double %p_val, double* %polly.access.A
+; CHECK-NEXT:    %polly.access.A = getelementptr double, ptr %A, i64 1
+; CHECK-NEXT:    store double %p_val, ptr %polly.access.A
 ; CHECK-NEXT:    br label %polly.stmt.body.cont
 
 ; CHECK-LABEL:  polly.stmt.body.cont:

diff  --git a/polly/test/CodeGen/perf_monitoring.ll b/polly/test/CodeGen/perf_monitoring.ll
index 6c687233e220f..2abbf24f5e78a 100644
--- a/polly/test/CodeGen/perf_monitoring.ll
+++ b/polly/test/CodeGen/perf_monitoring.ll
@@ -11,7 +11,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"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %next
@@ -21,8 +21,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i
@@ -40,48 +40,48 @@ return:
 ; CHECK:      polly.split_new_and_old:                          ; preds = %entry
 ; CHECK-NEXT:   %0 = call { i64, i32 } @llvm.x86.rdtscp()
 ; CHECK-NEXT:   %1 = extractvalue { i64, i32 } %0, 0
-; CHECK-NEXT:   store volatile i64 %1, i64* @__polly_perf_cycles_in_scop_start
+; CHECK-NEXT:   store volatile i64 %1, ptr @__polly_perf_cycles_in_scop_start
 
 ; CHECK:      polly.merge_new_and_old:                          ; preds = %polly.exiting, %return.region_exiting
-; CHECK-NEXT:   %6 = load volatile i64, i64* @__polly_perf_cycles_in_scop_start
+; CHECK-NEXT:   %6 = load volatile i64, ptr @__polly_perf_cycles_in_scop_start
 ; CHECK-NEXT:   %7 = call { i64, i32 } @llvm.x86.rdtscp()
 ; CHECK-NEXT:   %8 = extractvalue { i64, i32 } %7, 0
 ; CHECK-NEXT:   %9 = sub i64 %8, %6
-; CHECK-NEXT:   %10 = load volatile i64, i64* @__polly_perf_cycles_in_scops
+; CHECK-NEXT:   %10 = load volatile i64, ptr @__polly_perf_cycles_in_scops
 ; CHECK-NEXT:   %11 = add i64 %10, %9
-; CHECK-NEXT:   store volatile i64 %11, i64* @__polly_perf_cycles_in_scops
+; CHECK-NEXT:   store volatile i64 %11, ptr @__polly_perf_cycles_in_scops
 
 
 ; CHECK:      define weak_odr void @__polly_perf_final() {
 ; CHECK-NEXT: start:
 ; CHECK-NEXT:   %0 = call { i64, i32 } @llvm.x86.rdtscp()
 ; CHECK-NEXT:   %1 = extractvalue { i64, i32 } %0, 0
-; CHECK-NEXT:   %2 = load volatile i64, i64* @__polly_perf_cycles_total_start
+; CHECK-NEXT:   %2 = load volatile i64, ptr @__polly_perf_cycles_total_start
 ; CHECK-NEXT:   %3 = sub i64 %1, %2
-; CHECK-NEXT:   %4 = load volatile i64, i64* @__polly_perf_cycles_in_scops
-; CHECK-NEXT:   %5 = call i32 (...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @1, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([27 x i8], [27 x i8] addrspace(4)* @0, i32 0, i32 0))
-; CHECK-NEXT:   %6 = call i32 @fflush(i8* null)
-; CHECK-NEXT:   %7 = call i32 (...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @3, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([27 x i8], [27 x i8] addrspace(4)* @2, i32 0, i32 0))
-; CHECK-NEXT:   %8 = call i32 @fflush(i8* null)
-; CHECK-NEXT:   %9 = call i32 (...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @6, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([8 x i8], [8 x i8] addrspace(4)* @4, i32 0, i32 0), i64 %3, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @5, i32 0, i32 0))
-; CHECK-NEXT:   %10 = call i32 @fflush(i8* null)
-; CHECK-NEXT:   %11 = call i32 (...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @9, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([8 x i8], [8 x i8] addrspace(4)* @7, i32 0, i32 0), i64 %4, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @8, i32 0, i32 0))
-; CHECK-NEXT:   %12 = call i32 @fflush(i8* null)
+; CHECK-NEXT:   %4 = load volatile i64, ptr @__polly_perf_cycles_in_scops
+; CHECK-NEXT:   %5 = call i32 (...) @printf(ptr @1, ptr addrspace(4) @0)
+; CHECK-NEXT:   %6 = call i32 @fflush(ptr null)
+; CHECK-NEXT:   %7 = call i32 (...) @printf(ptr @3, ptr addrspace(4) @2)
+; CHECK-NEXT:   %8 = call i32 @fflush(ptr null)
+; CHECK-NEXT:   %9 = call i32 (...) @printf(ptr @6, ptr addrspace(4) @4, i64 %3, ptr addrspace(4) @5)
+; CHECK-NEXT:   %10 = call i32 @fflush(ptr null)
+; CHECK-NEXT:   %11 = call i32 (...) @printf(ptr @9, ptr addrspace(4) @7, i64 %4, ptr addrspace(4) @8)
+; CHECK-NEXT:   %12 = call i32 @fflush(ptr null)
 
 
 ; CHECK:      define weak_odr void @__polly_perf_init() {
 ; CHECK-NEXT: start:
-; CHECK-NEXT:   %0 = load i1, i1* @__polly_perf_initialized
+; CHECK-NEXT:   %0 = load i1, ptr @__polly_perf_initialized
 ; CHECK-NEXT:   br i1 %0, label %earlyreturn, label %initbb
 
 ; CHECK:      earlyreturn:                                      ; preds = %start
 ; CHECK-NEXT:   ret void
 
 ; CHECK:      initbb:                                           ; preds = %start
-; CHECK-NEXT:   store i1 true, i1* @__polly_perf_initialized
-; CHECK-NEXT:   %1 = call i32 @atexit(i8* bitcast (void ()* @__polly_perf_final to i8*))
+; CHECK-NEXT:   store i1 true, ptr @__polly_perf_initialized
+; CHECK-NEXT:   %1 = call i32 @atexit(ptr @__polly_perf_final)
 ; CHECK-NEXT:   %2 = call { i64, i32 } @llvm.x86.rdtscp()
 ; CHECK-NEXT:   %3 = extractvalue { i64, i32 } %2, 0
-; CHECK-NEXT:   store volatile i64 %3, i64* @__polly_perf_cycles_total_start
+; CHECK-NEXT:   store volatile i64 %3, ptr @__polly_perf_cycles_total_start
 ; CHECK-NEXT:   ret void
 ; CHECK-NEXT: }

diff  --git a/polly/test/CodeGen/perf_monitoring_cycles_per_scop.ll b/polly/test/CodeGen/perf_monitoring_cycles_per_scop.ll
index 6c496d24d6c01..11d63fc476588 100644
--- a/polly/test/CodeGen/perf_monitoring_cycles_per_scop.ll
+++ b/polly/test/CodeGen/perf_monitoring_cycles_per_scop.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"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %next
@@ -27,8 +27,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i
@@ -39,7 +39,7 @@ return:
 }
 
 
-define void @g(i64* %A, i64 %N) nounwind {
+define void @g(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %next
@@ -49,8 +49,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i
@@ -65,11 +65,11 @@ return:
 ; @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_cycles" = weak thread_local(initialexec) constant i64 0
 
 ; Bumping up number of cycles in f
-; CHECK:      %12 = load volatile i64, i64* @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_cycles"
+; CHECK:      %12 = load volatile i64, ptr @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_cycles"
 ; CHECK-NEXT: %13 = add i64 %12, %9
-; CHECK-NEXT: store volatile i64 %13, i64* @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_cycles"
+; CHECK-NEXT: store volatile i64 %13, ptr @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_cycles"
 
 ; Bumping up number of cycles in g
-; CHECK:      %12 = load volatile i64, i64* @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_cycles"
+; CHECK:      %12 = load volatile i64, ptr @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_cycles"
 ; CHECK-NEXT: %13 = add i64 %12, %9
-; CHECK-NEXT: store volatile i64 %13, i64* @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_cycles"
+; CHECK-NEXT: store volatile i64 %13, ptr @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_cycles"

diff  --git a/polly/test/CodeGen/perf_monitoring_trip_counts_per_scop.ll b/polly/test/CodeGen/perf_monitoring_trip_counts_per_scop.ll
index 582903c2ea763..9b7f324df8e4b 100644
--- a/polly/test/CodeGen/perf_monitoring_trip_counts_per_scop.ll
+++ b/polly/test/CodeGen/perf_monitoring_trip_counts_per_scop.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"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %next
@@ -27,8 +27,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i
@@ -39,7 +39,7 @@ return:
 }
 
 
-define void @g(i64* %A, i64 %N) nounwind {
+define void @g(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %next
@@ -49,8 +49,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i
@@ -65,11 +65,11 @@ return:
 ; CHECK: @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_trip_count" = weak thread_local(initialexec) constant i64 0
 
 ; Bumping up number of cycles in f
-; CHECK:        %14 = load volatile i64, i64* @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_trip_count"
+; CHECK:        %14 = load volatile i64, ptr @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_trip_count"
 ; CHECK-NEXT:   %15 = add i64 %14, 1
-; CHECK-NEXT:   store volatile i64 %15, i64* @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_trip_count"
+; CHECK-NEXT:   store volatile i64 %15, ptr @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_trip_count"
 
 ; Bumping up number of cycles in g
-; CHECK:       %14 = load volatile i64, i64* @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_trip_count"
+; CHECK:       %14 = load volatile i64, ptr @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_trip_count"
 ; CHECK-NEXT:  %15 = add i64 %14, 1
-; CHECK-NEXT:  store volatile i64 %15, i64* @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_trip_count"
+; CHECK-NEXT:  store volatile i64 %15, ptr @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_trip_count"

diff  --git a/polly/test/CodeGen/phi-defined-before-scop.ll b/polly/test/CodeGen/phi-defined-before-scop.ll
index bee814e2b280f..a3b1ba264f043 100644
--- a/polly/test/CodeGen/phi-defined-before-scop.ll
+++ b/polly/test/CodeGen/phi-defined-before-scop.ll
@@ -1,17 +1,17 @@
 ; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
 
 ; CHECK-LABEL: polly.merge_new_and_old:
-; CHECK-NEXT: %tmp7.ph.merge = phi %struct.wibble* [ %tmp7.ph.final_reload, %polly.exiting ], [ %tmp7.ph, %bb6.region_exiting ]
+; CHECK-NEXT: %tmp7.ph.merge = phi ptr [ %tmp7.ph.final_reload, %polly.exiting ], [ %tmp7.ph, %bb6.region_exiting ]
 
 ; CHECK-LABEL: polly.stmt.bb3:
-; CHECK-NEXT: store %struct.wibble* %tmp2, %struct.wibble** %tmp7.s2a
+; CHECK-NEXT: store ptr %tmp2, ptr %tmp7.s2a
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 %struct.blam = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
-%struct.wibble = type { i32, %struct.wibble*, %struct.wibble* }
+%struct.wibble = type { i32, ptr, ptr }
 
- at global = external global %struct.blam*, align 8
+ at global = external global ptr, align 8
 
 ; Function Attrs: nounwind uwtable
 define void @wobble() #0 {
@@ -19,19 +19,19 @@ bb:
   br label %bb1
 
 bb1:                                              ; preds = %bb6, %bb
-  %tmp2 = phi %struct.wibble* [ %tmp7, %bb6 ], [ undef, %bb ]
-  %tmp = load %struct.blam*, %struct.blam** @global, align 8, !tbaa !1
+  %tmp2 = phi ptr [ %tmp7, %bb6 ], [ undef, %bb ]
+  %tmp = load ptr, ptr @global, align 8, !tbaa !1
   br label %bb3
 
 bb3:                                              ; preds = %bb1
-  %tmp4 = getelementptr inbounds %struct.blam, %struct.blam* %tmp, i64 0, i32 1
+  %tmp4 = getelementptr inbounds %struct.blam, ptr %tmp, i64 0, i32 1
   br i1 false, label %bb6, label %bb5
 
 bb5:                                              ; preds = %bb3
   br label %bb6
 
 bb6:                                              ; preds = %bb5, %bb3
-  %tmp7 = phi %struct.wibble* [ %tmp2, %bb3 ], [ undef, %bb5 ]
+  %tmp7 = phi ptr [ %tmp2, %bb3 ], [ undef, %bb5 ]
   br i1 undef, label %bb8, label %bb1
 
 bb8:                                              ; preds = %bb6

diff  --git a/polly/test/CodeGen/phi_after_error_block_outside_of_scop.ll b/polly/test/CodeGen/phi_after_error_block_outside_of_scop.ll
index fd198eddd8dea..c34ebfc3ca027 100644
--- a/polly/test/CodeGen/phi_after_error_block_outside_of_scop.ll
+++ b/polly/test/CodeGen/phi_after_error_block_outside_of_scop.ll
@@ -4,9 +4,9 @@
 ; outside of the scope. In this situation, we should not affect code generation.
 
 ; CHECK:        polly.cond:
-; CHECK-NEXT:   ptrtoint float* %tmp8 to i64
+; CHECK-NEXT:   ptrtoint ptr %tmp8 to i64
 ; CHECK-NEXT:   icmp sle i64
-; CHECK-NEXT:   ptrtoint float* %tmp8 to i64
+; CHECK-NEXT:   ptrtoint ptr %tmp8 to i64
 ; CHECK-NEXT:   icmp sge i64
 ; CHECK-NEXT:   or i1
 ; CHECK-NEXT:   label %polly.then, label %polly.else
@@ -23,8 +23,7 @@ bb1:
   br i1 undef, label %bb5, label %bb2
 
 bb2:
-  %tmp = call i8* @pluto()
-  %tmp4 = bitcast i8* %tmp to float*
+  %tmp = call ptr @pluto()
   br label %bb6
 
 bb5:
@@ -35,19 +34,19 @@ bb6:
   br label %bb7
 
 bb7:
-  %tmp8 = phi float* [ %tmp4, %bb6 ], [ null, %bb5 ]
+  %tmp8 = phi ptr [ %tmp, %bb6 ], [ null, %bb5 ]
   br label %bb9
 
 bb9:
-  %tmp10 = icmp eq float* %tmp8, null
+  %tmp10 = icmp eq ptr %tmp8, null
   br i1 %tmp10, label %bb12, label %bb11
 
 bb11:
   br label %bb12
 
 bb12:
-  %tmp13 = phi float* [ undef, %bb9 ], [ undef, %bb11 ]
+  %tmp13 = phi ptr [ undef, %bb9 ], [ undef, %bb11 ]
   ret void
 }
 
-declare i8* @pluto()
+declare ptr @pluto()

diff  --git a/polly/test/CodeGen/phi_condition_modeling_1.ll b/polly/test/CodeGen/phi_condition_modeling_1.ll
index 92dd1612ac850..b14d32921cf73 100644
--- a/polly/test/CodeGen/phi_condition_modeling_1.ll
+++ b/polly/test/CodeGen/phi_condition_modeling_1.ll
@@ -14,16 +14,16 @@
 ; CHECK-LABEL: bb:
 ; CHECK:       %tmp.0.phiops = alloca i32
 ; CHECK-LABEL: polly.stmt.bb8:
-; CHECK:       %tmp.0.phiops.reload = load i32, i32* %tmp.0.phiops
-; CHECK:       store i32 %tmp.0.phiops.reload, i32*
+; CHECK:       %tmp.0.phiops.reload = load i32, ptr %tmp.0.phiops
+; CHECK:       store i32 %tmp.0.phiops.reload, ptr
 ; CHECK-LABEL: polly.stmt.bb7:
-; CHECK:       store i32 5, i32* %tmp.0.phiops
+; CHECK:       store i32 5, ptr %tmp.0.phiops
 ; CHECK-LABEL: polly.stmt.bb6:
-; CHECK:       store i32 3, i32* %tmp.0.phiops
+; CHECK:       store i32 3, ptr %tmp.0.phiops
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %c, i32 %N) {
+define void @f(ptr %A, i32 %c, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   %tmp1 = sext i32 %c to i64
@@ -46,8 +46,8 @@ bb7:                                              ; preds = %bb4
 
 bb8:                                              ; preds = %bb7, %bb6
   %tmp.0 = phi i32 [ 3, %bb6 ], [ 5, %bb7 ]
-  %tmp9 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp.0, i32* %tmp9, align 4
+  %tmp9 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp.0, ptr %tmp9, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb8

diff  --git a/polly/test/CodeGen/phi_condition_modeling_2.ll b/polly/test/CodeGen/phi_condition_modeling_2.ll
index 1b30e4dbafdc7..dab2977bf065d 100644
--- a/polly/test/CodeGen/phi_condition_modeling_2.ll
+++ b/polly/test/CodeGen/phi_condition_modeling_2.ll
@@ -15,19 +15,19 @@
 ; CHECK-DAG:   %tmp.0.s2a = alloca i32
 ; CHECK-DAG:   %tmp.0.phiops = alloca i32
 ; CHECK-LABEL: polly.stmt.bb8:
-; CHECK:       %tmp.0.phiops.reload = load i32, i32* %tmp.0.phiops
-; CHECK:       store i32 %tmp.0.phiops.reload, i32* %tmp.0.s2a
+; CHECK:       %tmp.0.phiops.reload = load i32, ptr %tmp.0.phiops
+; CHECK:       store i32 %tmp.0.phiops.reload, ptr %tmp.0.s2a
 ; CHECK-LABEL: polly.stmt.bb8b:
-; CHECK:       %tmp.0.s2a.reload = load i32, i32* %tmp.0.s2a
+; CHECK:       %tmp.0.s2a.reload = load i32, ptr %tmp.0.s2a
 ; CHECK:       store i32 %tmp.0.s2a.reload,
 ; CHECK-LABEL: polly.stmt.bb7:
-; CHECK:       store i32 5, i32* %tmp.0.phiops
+; CHECK:       store i32 5, ptr %tmp.0.phiops
 ; CHECK-LABEL: polly.stmt.bb6:
-; CHECK:       store i32 3, i32* %tmp.0.phiops
+; CHECK:       store i32 3, ptr %tmp.0.phiops
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %c, i32 %N) {
+define void @f(ptr %A, i32 %c, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   %tmp1 = sext i32 %c to i64
@@ -53,8 +53,8 @@ bb8:                                              ; preds = %bb7, %bb6
   br label %bb8b
 
 bb8b:
-  %tmp9 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp.0, i32* %tmp9, align 4
+  %tmp9 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp.0, ptr %tmp9, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb8

diff  --git a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_1.ll b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_1.ll
index 549a5047676e0..13688480e315c 100644
--- a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_1.ll
+++ b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_1.ll
@@ -10,7 +10,7 @@
 ;
 @recd = external hidden global [255 x i32], align 16
 
-define void @rsdec_204(i8* %data_in) {
+define void @rsdec_204(ptr %data_in) {
 entry:
   br i1 undef, label %if.then, label %for.body
 
@@ -19,11 +19,9 @@ if.then:                                          ; preds = %entry
 
 for.body:                                         ; preds = %for.body, %entry
   %i.05 = phi i32 [ %inc, %for.body ], [ 0, %entry ]
-  %arrayidx = getelementptr inbounds i8, i8* %data_in, i64 0
-  %0 = load i8, i8* %arrayidx, align 1
+  %0 = load i8, ptr %data_in, align 1
   %conv = zext i8 %0 to i32
-  %arrayidx2 = getelementptr inbounds [255 x i32], [255 x i32]* @recd, i64 0, i64 0
-  store i32 %conv, i32* %arrayidx2, align 4
+  store i32 %conv, ptr @recd, align 4
   %inc = add nuw nsw i32 %i.05, 1
   br i1 false, label %for.body, label %for.body.6
 

diff  --git a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_2.ll b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_2.ll
index 939b8a79fa998..01dd450590d96 100644
--- a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_2.ll
+++ b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_2.ll
@@ -10,22 +10,21 @@
 ; CHECK:          %eps1.addr.0.ph.merge = phi double [ %eps1.addr.0.ph.final_reload, %polly.exiting ], [ %eps1.addr.0.ph, %if.end.47.region_exiting ]
 ;
 ; CHECK-LABEL: polly.start:
-; CHECK-NEXT:    store double %eps1, double* %eps1.s2a
+; CHECK-NEXT:    store double %eps1, ptr %eps1.s2a
 ;
 ; CHECK-LABEL: polly.exiting:
-; CHECK-NEXT:     %eps1.addr.0.ph.final_reload = load double, double* %eps1.addr.0.s2a
+; CHECK-NEXT:     %eps1.addr.0.ph.final_reload = load double, ptr %eps1.addr.0.s2a
 ;
-define void @dbisect(double* %c, double* %b, double %eps1, double* %eps2) {
+define void @dbisect(ptr %c, ptr %b, double %eps1, ptr %eps2) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  store double 0.000000e+00, double* %b, align 8
+  store double 0.000000e+00, ptr %b, align 8
   br i1 false, label %for.inc, label %for.end
 
 if.end:                                           ; preds = %if.then, %for.body
-  %arrayidx33 = getelementptr inbounds double, double* %c, i64 0
-  %0 = load double, double* %arrayidx33, align 8
+  %0 = load double, ptr %c, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %if.then.36, %if.end
@@ -39,7 +38,7 @@ for.end:                                          ; preds = %for.cond.for.end_cr
   br i1 %cmp45, label %if.end.47, label %if.then.46
 
 if.then.46:                                       ; preds = %for.end
-  %1 = load double, double* %eps2, align 8
+  %1 = load double, ptr %eps2, align 8
   br label %if.end.47
 
 if.end.47:                                        ; preds = %if.then.46, %for.end

diff  --git a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_3.ll b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_3.ll
index 45a765b9035b9..66b95b0e0317b 100644
--- a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_3.ll
+++ b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_3.ll
@@ -4,27 +4,25 @@
 ; produce the PHI node in the exit we are looking for.
 ;
 ; CHECK-LABEL: polly.merge_new_and_old:
-; CHECK-NEXT:     %n2ptr.2.ph.merge = phi i8* [ %n2ptr.2.ph.final_reload, %polly.exiting ], [ %n2ptr.2.ph, %if.end.45.region_exiting ]
+; CHECK-NEXT:     %n2ptr.2.ph.merge = phi ptr [ %n2ptr.2.ph.final_reload, %polly.exiting ], [ %n2ptr.2.ph, %if.end.45.region_exiting ]
 ;
 ; CHECK-LABEL: if.end.45:
-; CHECK-NEXT:     %n2ptr.2 = phi i8* [ %add.ptr25, %entry ], [ %add.ptr25, %while.cond.preheader ], [ %n2ptr.2.ph.merge, %polly.merge_new_and_old ]
+; CHECK-NEXT:     %n2ptr.2 = phi ptr [ %add.ptr25, %entry ], [ %add.ptr25, %while.cond.preheader ], [ %n2ptr.2.ph.merge, %polly.merge_new_and_old ]
 
 %struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121 = type { i32, i32, i32, i32, [1024 x i8] }
 
 ; Function Attrs: nounwind uwtable
-declare %struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121* @new_num() #0
+declare ptr @new_num() #0
 
 ; Function Attrs: nounwind uwtable
-define void @_do_add(%struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121* %n2) #0 {
+define void @_do_add(ptr %n2) #0 {
 entry:
-  %call = tail call %struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121* @new_num()
-  %0 = load i32, i32* undef, align 4
-  %add.ptr22 = getelementptr inbounds %struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121, %struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121* %n2, i64 0, i32 4, i64 0
-  %add.ptr24 = getelementptr inbounds i8, i8* %add.ptr22, i64 0
-  %add.ptr25 = getelementptr inbounds i8, i8* %add.ptr24, i64 -1
-  %add.ptr29 = getelementptr inbounds %struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121, %struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121* %call, i64 0, i32 4, i64 0
-  %add.ptr31 = getelementptr inbounds i8, i8* %add.ptr29, i64 0
-  %add.ptr32 = getelementptr inbounds i8, i8* %add.ptr31, i64 -1
+  %call = tail call ptr @new_num()
+  %0 = load i32, ptr undef, align 4
+  %add.ptr22 = getelementptr inbounds %struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121, ptr %n2, i64 0, i32 4, i64 0
+  %add.ptr25 = getelementptr inbounds i8, ptr %add.ptr22, i64 -1
+  %add.ptr29 = getelementptr inbounds %struct.bc_struct.0.2.4.6.8.15.24.27.29.32.38.46.48.92.93.94.95.97.99.100.102.105.107.111.118.119.121, ptr %call, i64 0, i32 4, i64 0
+  %add.ptr32 = getelementptr inbounds i8, ptr %add.ptr29, i64 -1
   br i1 undef, label %if.end.45, label %if.then
 
 if.then:                                          ; preds = %entry
@@ -47,18 +45,18 @@ while.body:                                       ; preds = %while.body, %while.
   br label %while.body
 
 while.body.40:                                    ; preds = %while.body.40, %while.body.40.lr.ph
-  %sumptr.141 = phi i8* [ %add.ptr32, %while.body.40.lr.ph ], [ %incdec.ptr42, %while.body.40 ]
-  %n2ptr.040 = phi i8* [ %add.ptr25, %while.body.40.lr.ph ], [ %incdec.ptr41, %while.body.40 ]
-  %incdec.ptr41 = getelementptr inbounds i8, i8* %n2ptr.040, i64 -1
-  %1 = load i8, i8* %n2ptr.040, align 1
-  %incdec.ptr42 = getelementptr inbounds i8, i8* %sumptr.141, i64 -1
-  store i8 %1, i8* %sumptr.141, align 1
+  %sumptr.141 = phi ptr [ %add.ptr32, %while.body.40.lr.ph ], [ %incdec.ptr42, %while.body.40 ]
+  %n2ptr.040 = phi ptr [ %add.ptr25, %while.body.40.lr.ph ], [ %incdec.ptr41, %while.body.40 ]
+  %incdec.ptr41 = getelementptr inbounds i8, ptr %n2ptr.040, i64 -1
+  %1 = load i8, ptr %n2ptr.040, align 1
+  %incdec.ptr42 = getelementptr inbounds i8, ptr %sumptr.141, i64 -1
+  store i8 %1, ptr %sumptr.141, align 1
   br i1 false, label %while.body.40, label %while.cond.38.if.end.45.loopexit9_crit_edge
 
 while.cond.38.if.end.45.loopexit9_crit_edge:      ; preds = %while.body.40
   br label %if.end.45
 
 if.end.45:                                        ; preds = %while.cond.38.if.end.45.loopexit9_crit_edge, %while.cond.preheader, %while.cond.38.preheader, %entry
-  %n2ptr.2 = phi i8* [ %add.ptr25, %entry ], [ %add.ptr25, %while.cond.preheader ], [ undef, %while.cond.38.if.end.45.loopexit9_crit_edge ], [ %add.ptr25, %while.cond.38.preheader ]
+  %n2ptr.2 = phi ptr [ %add.ptr25, %entry ], [ %add.ptr25, %while.cond.preheader ], [ undef, %while.cond.38.if.end.45.loopexit9_crit_edge ], [ %add.ptr25, %while.cond.38.preheader ]
   ret void
 }

diff  --git a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_5.ll b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_5.ll
index bbf62e4f62005..9a046367e768d 100644
--- a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_5.ll
+++ b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_5.ll
@@ -10,14 +10,13 @@
 ; CHECK-LABEL: if.end.47:
 ; CHECK-NEXT:        %eps1.addr.0 = phi double [ %eps1.addr.0.ph.merge, %polly.merge_new_and_old ]
 ;
-define void @dbisect(double* %c, double* %b, double %eps1, double* %eps2) {
+define void @dbisect(ptr %c, ptr %b, double %eps1, ptr %eps2) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  store double 0.000000e+00, double* %b, align 8
-  %arrayidx9 = getelementptr inbounds double, double* %c, i64 0
-  %0 = load double, double* %arrayidx9, align 8
+  store double 0.000000e+00, ptr %b, align 8
+  %0 = load double, ptr %c, align 8
   br i1 false, label %for.body.lr.ph, label %for.end
 
 for.body.lr.ph:                                   ; preds = %entry.split
@@ -42,7 +41,7 @@ for.cond.for.end_crit_edge:                       ; preds = %for.inc
   br label %for.end
 
 for.end:                                          ; preds = %for.cond.for.end_crit_edge, %entry.split
-  store double undef, double* %eps2, align 8
+  store double undef, ptr %eps2, align 8
   %cmp45 = fcmp ugt double %eps1, 0.000000e+00
   br i1 %cmp45, label %if.end.47, label %if.then.46
 

diff  --git a/polly/test/CodeGen/phi_scalar_simple_1.ll b/polly/test/CodeGen/phi_scalar_simple_1.ll
index 895d32902ddc7..d62975b6a7b3a 100644
--- a/polly/test/CodeGen/phi_scalar_simple_1.ll
+++ b/polly/test/CodeGen/phi_scalar_simple_1.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @jd(i32* noalias %A, i32 %x, i32 %N) {
+define i32 @jd(ptr noalias %A, i32 %x, i32 %N) {
 entry:
 ; CHECK-LABEL: entry:
 ; CHECK-DAG:     %x.addr.1.lcssa.s2a = alloca i32
@@ -26,15 +26,15 @@ entry:
 ; CHECK:         ret i32 %x.addr.0.merge
 
 ; CHECK-LABEL: polly.start:
-; CHECK:         store i32 %x, i32* %x.addr.0.phiops
+; CHECK:         store i32 %x, ptr %x.addr.0.phiops
 
 ; CHECK-LABEL: polly.exiting:
-; CHECK:         %x.addr.0.final_reload = load i32, i32* %x.addr.0.s2a
+; CHECK:         %x.addr.0.final_reload = load i32, ptr %x.addr.0.s2a
 
 for.cond:                                         ; preds = %for.inc4, %entry
 ; CHECK-LABEL: polly.stmt.for.cond{{[0-9]*}}:
-; CHECK:         %x.addr.0.phiops.reload[[R1:[0-9]*]] = load i32, i32* %x.addr.0.phiops
-; CHECK:         store i32 %x.addr.0.phiops.reload[[R1]], i32* %x.addr.0.s2a
+; CHECK:         %x.addr.0.phiops.reload[[R1:[0-9]*]] = load i32, ptr %x.addr.0.phiops
+; CHECK:         store i32 %x.addr.0.phiops.reload[[R1]], ptr %x.addr.0.s2a
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc4 ], [ 1, %entry ]
   %x.addr.0 = phi i32 [ %x, %entry ], [ %x.addr.1.lcssa, %for.inc4 ]
   %cmp = icmp slt i64 %indvars.iv, %tmp
@@ -42,15 +42,15 @@ for.cond:                                         ; preds = %for.inc4, %entry
 
 for.body:                                         ; preds = %for.cond
 ; CHECK-LABEL: polly.stmt.for.body:
-; CHECK:         %x.addr.0.s2a.reload[[R2:[0-9]*]] = load i32, i32* %x.addr.0.s2a
-; CHECK:         store i32 %x.addr.0.s2a.reload[[R2]], i32* %x.addr.1.phiops
+; CHECK:         %x.addr.0.s2a.reload[[R2:[0-9]*]] = load i32, ptr %x.addr.0.s2a
+; CHECK:         store i32 %x.addr.0.s2a.reload[[R2]], ptr %x.addr.1.phiops
   br label %for.cond1
 
 for.cond1:                                        ; preds = %for.inc, %for.body
 ; CHECK-LABEL: polly.stmt.for.cond1:
-; CHECK:         %x.addr.1.phiops.reload = load i32, i32* %x.addr.1.phiops
-; CHECK:         store i32 %x.addr.1.phiops.reload, i32* %x.addr.1.s2a[[R6:[0-9]*]]
-; CHECK:         store i32 %x.addr.1.phiops.reload, i32* %x.addr.1.lcssa.phiops
+; CHECK:         %x.addr.1.phiops.reload = load i32, ptr %x.addr.1.phiops
+; CHECK:         store i32 %x.addr.1.phiops.reload, ptr %x.addr.1.s2a[[R6:[0-9]*]]
+; CHECK:         store i32 %x.addr.1.phiops.reload, ptr %x.addr.1.lcssa.phiops
   %x.addr.1 = phi i32 [ %x.addr.0, %for.body ], [ %add, %for.inc ]
   %j.0 = phi i32 [ 3, %for.body ], [ %inc, %for.inc ]
   %exitcond = icmp ne i32 %j.0, %N
@@ -58,26 +58,26 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 
 for.inc:                                          ; preds = %for.body3
 ; CHECK-LABEL: polly.stmt.for.inc:
-; CHECK:         %x.addr.1.s2a.reload[[R3:[0-9]*]] = load i32, i32* %x.addr.1.s2a
+; CHECK:         %x.addr.1.s2a.reload[[R3:[0-9]*]] = load i32, ptr %x.addr.1.s2a
 ; CHECK:         %p_add = add nsw i32 %x.addr.1.s2a.reload[[R3]], %tmp1_p_scalar_
-; CHECK:         store i32 %p_add, i32* %x.addr.1.phiops
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+; CHECK:         store i32 %p_add, ptr %x.addr.1.phiops
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %x.addr.1, %tmp1
   %inc = add nsw i32 %j.0, 1
   br label %for.cond1
 
 for.end:                                          ; preds = %for.cond1
 ; CHECK-LABEL: polly.stmt.for.end:
-; CHECK-NEXT:    %x.addr.1.lcssa.phiops.reload = load i32, i32* %x.addr.1.lcssa.phiops
-; CHECK-NEXT:    store i32 %x.addr.1.lcssa.phiops.reload, i32* %x.addr.1.lcssa.s2a[[R4:[0-9]*]]
+; CHECK-NEXT:    %x.addr.1.lcssa.phiops.reload = load i32, ptr %x.addr.1.lcssa.phiops
+; CHECK-NEXT:    store i32 %x.addr.1.lcssa.phiops.reload, ptr %x.addr.1.lcssa.s2a[[R4:[0-9]*]]
   %x.addr.1.lcssa = phi i32 [ %x.addr.1, %for.cond1 ]
   br label %for.inc4
 
 for.inc4:                                         ; preds = %for.end
 ; CHECK-LABEL: polly.stmt.for.inc4:
-; CHECK:         %x.addr.1.lcssa.s2a.reload[[R5:[0-9]*]] = load i32, i32* %x.addr.1.lcssa.s2a[[R4]]
-; CHECK:         store i32 %x.addr.1.lcssa.s2a.reload[[R5]], i32* %x.addr.0.phiops
+; CHECK:         %x.addr.1.lcssa.s2a.reload[[R5:[0-9]*]] = load i32, ptr %x.addr.1.lcssa.s2a[[R4]]
+; CHECK:         store i32 %x.addr.1.lcssa.s2a.reload[[R5]], ptr %x.addr.0.phiops
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   br label %for.cond
 

diff  --git a/polly/test/CodeGen/phi_scalar_simple_2.ll b/polly/test/CodeGen/phi_scalar_simple_2.ll
index 941bd2c800cec..e58945d39960c 100644
--- a/polly/test/CodeGen/phi_scalar_simple_2.ll
+++ b/polly/test/CodeGen/phi_scalar_simple_2.ll
@@ -10,7 +10,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @jd(i32* noalias %A, i32 %x, i32 %N, i32 %c) {
+define i32 @jd(ptr noalias %A, i32 %x, i32 %N, i32 %c) {
 entry:
 ; CHECK-LABEL: entry:
 ; CHECK-DAG:     %x.addr.2.s2a = alloca i32
@@ -28,16 +28,16 @@ entry:
 ; CHECK:         ret i32 %x.addr.0.merge
 
 ; CHECK-LABEL: polly.start:
-; CHECK-NEXT:    store i32 %x, i32* %x.addr.0.phiops
+; CHECK-NEXT:    store i32 %x, ptr %x.addr.0.phiops
 ; CHECK-NEXT:    sext
 
 ; CHECK-LABEL: polly.merge{{[a-z_0-9]*}}:
-; CHECK:         %x.addr.0.final_reload = load i32, i32* %x.addr.0.s2a
+; CHECK:         %x.addr.0.final_reload = load i32, ptr %x.addr.0.s2a
 
 for.cond:                                         ; preds = %for.inc5, %entry
 ; CHECK-LABEL: polly.stmt.for.cond{{[0-9]*}}:
-; CHECK:         %x.addr.0.phiops.reload[[R1:[0-9]*]] = load i32, i32* %x.addr.0.phiops
-; CHECK:         store i32 %x.addr.0.phiops.reload[[R1]], i32* %x.addr.0.s2a
+; CHECK:         %x.addr.0.phiops.reload[[R1:[0-9]*]] = load i32, ptr %x.addr.0.phiops
+; CHECK:         store i32 %x.addr.0.phiops.reload[[R1]], ptr %x.addr.0.s2a
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc5 ], [ 0, %entry ]
   %x.addr.0 = phi i32 [ %x, %entry ], [ %x.addr.1, %for.inc5 ]
   %cmp = icmp slt i64 %indvars.iv, %tmp
@@ -45,21 +45,21 @@ for.cond:                                         ; preds = %for.inc5, %entry
 
 for.body:                                         ; preds = %for.cond
 ; CHECK-LABEL: polly.stmt.for.body:
-; CHECK:         %x.addr.0.s2a.reload[[R2:[0-9]*]] = load i32, i32* %x.addr.0.s2a
-; CHECK:         store i32 %x.addr.0.s2a.reload[[R2]], i32* %x.addr.1.phiops
+; CHECK:         %x.addr.0.s2a.reload[[R2:[0-9]*]] = load i32, ptr %x.addr.0.s2a
+; CHECK:         store i32 %x.addr.0.s2a.reload[[R2]], ptr %x.addr.1.phiops
   br label %for.cond1
 
 for.inc5:                                         ; preds = %for.end
 ; CHECK-LABEL: polly.stmt.for.inc5:
-; CHECK:         %x.addr.1.s2a.reload[[R5:[0-9]*]] = load i32, i32* %x.addr.1.s2a
-; CHECK:         store i32 %x.addr.1.s2a.reload[[R5]], i32* %x.addr.0.phiops
+; CHECK:         %x.addr.1.s2a.reload[[R5:[0-9]*]] = load i32, ptr %x.addr.1.s2a
+; CHECK:         store i32 %x.addr.1.s2a.reload[[R5]], ptr %x.addr.0.phiops
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   br label %for.cond
 
 for.cond1:                                        ; preds = %for.inc, %for.body
 ; CHECK-LABEL: polly.stmt.for.cond1:
-; CHECK:         %x.addr.1.phiops.reload = load i32, i32* %x.addr.1.phiops
-; CHECK:         store i32 %x.addr.1.phiops.reload, i32* %x.addr.1.s2a
+; CHECK:         %x.addr.1.phiops.reload = load i32, ptr %x.addr.1.phiops
+; CHECK:         store i32 %x.addr.1.phiops.reload, ptr %x.addr.1.s2a
   %x.addr.1 = phi i32 [ %x.addr.0, %for.body ], [ %x.addr.2, %for.inc ]
   %j.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ]
   %exitcond = icmp ne i32 %j.0, %N
@@ -67,32 +67,32 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 
 for.body3:                                        ; preds = %for.cond1
 ; CHECK-LABEL: polly.stmt.for.body3:
-; CHECK:  %x.addr.1.s2a.reload = load i32, i32* %x.addr.1.s2a
-; CHECK:  store i32 %x.addr.1.s2a.reload, i32* %x.addr.2.phiops
+; CHECK:  %x.addr.1.s2a.reload = load i32, ptr %x.addr.1.s2a
+; CHECK:  store i32 %x.addr.1.s2a.reload, ptr %x.addr.2.phiops
   %cmp4 = icmp slt i64 %indvars.iv, %tmp1
   br i1 %cmp4, label %if.then, label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body3
 ; CHECK-LABEL: polly.stmt.if.end:
-; CHECK:         %x.addr.2.phiops.reload = load i32, i32* %x.addr.2.phiops
-; CHECK:         store i32 %x.addr.2.phiops.reload, i32* %x.addr.2.s2a
+; CHECK:         %x.addr.2.phiops.reload = load i32, ptr %x.addr.2.phiops
+; CHECK:         store i32 %x.addr.2.phiops.reload, ptr %x.addr.2.s2a
   %x.addr.2 = phi i32 [ %add, %if.then ], [ %x.addr.1, %for.body3 ]
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end
 ; CHECK-LABEL: polly.stmt.for.inc:
-; CHECK:         %x.addr.2.s2a.reload[[R3:[0-9]*]] = load i32, i32* %x.addr.2.s2a
-; CHECK:         store i32 %x.addr.2.s2a.reload[[R3]], i32* %x.addr.1.phiops
+; CHECK:         %x.addr.2.s2a.reload[[R3:[0-9]*]] = load i32, ptr %x.addr.2.s2a
+; CHECK:         store i32 %x.addr.2.s2a.reload[[R3]], ptr %x.addr.1.phiops
   %inc = add nsw i32 %j.0, 1
   br label %for.cond1
 
 if.then:                                          ; preds = %for.body3
 ; CHECK-LABEL: polly.stmt.if.then:
-; CHECK:         %x.addr.1.s2a.reload[[R5:[0-9]*]] = load i32, i32* %x.addr.1.s2a
+; CHECK:         %x.addr.1.s2a.reload[[R5:[0-9]*]] = load i32, ptr %x.addr.1.s2a
 ; CHECK:         %p_add = add nsw i32 %x.addr.1.s2a.reload[[R5]], %tmp2_p_scalar_
-; CHECK:         store i32 %p_add, i32* %x.addr.2.phiops
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+; CHECK:         store i32 %p_add, ptr %x.addr.2.phiops
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %x.addr.1, %tmp2
   br label %if.end
 

diff  --git a/polly/test/CodeGen/phi_with_multi_exiting_edges_2.ll b/polly/test/CodeGen/phi_with_multi_exiting_edges_2.ll
index dd02de10865f6..17e4b7d6b4de9 100644
--- a/polly/test/CodeGen/phi_with_multi_exiting_edges_2.ll
+++ b/polly/test/CodeGen/phi_with_multi_exiting_edges_2.ll
@@ -8,7 +8,7 @@
 ; CHECK:   %result = phi float [ %result.ph.merge, %polly.merge_new_and_old ]
 ; CHECK:   ret float %result
 
-define float @foo(float* %A, i64 %param) {
+define float @foo(ptr %A, i64 %param) {
 entry:
   br label %entry.split
 
@@ -19,18 +19,18 @@ entry.split:
 loopA:
   %indvarA = phi i64 [0, %entry.split], [%indvar.nextA, %loopA]
   %indvar.nextA = add i64 %indvarA, 1
-  %valA = load float, float* %A
+  %valA = load float, ptr %A
   %sumA = fadd float %valA, %valA
-  store float %valA, float* %A
+  store float %valA, ptr %A
   %cndA = icmp eq i64 %indvar.nextA, 100
   br i1 %cndA, label %next, label %loopA
 
 loopB:
   %indvarB = phi i64 [0, %entry.split], [%indvar.nextB, %loopB]
   %indvar.nextB = add i64 %indvarB, 1
-  %valB = load float, float* %A
+  %valB = load float, ptr %A
   %sumB = fadd float %valB, %valB
-  store float %valB, float* %A
+  store float %valB, ptr %A
   %cndB = icmp eq i64 %indvar.nextB, 100
   br i1 %cndB, label %next, label %loopB
 

diff  --git a/polly/test/CodeGen/phi_with_one_exit_edge.ll b/polly/test/CodeGen/phi_with_one_exit_edge.ll
index 129e0ffbdb625..81fd73b51c792 100644
--- a/polly/test/CodeGen/phi_with_one_exit_edge.ll
+++ b/polly/test/CodeGen/phi_with_one_exit_edge.ll
@@ -9,7 +9,7 @@
 ; CHECK:   %result = phi float [ %sumA.merge, %polly.merge_new_and_old ]
 ; CHECK:   ret float %result
 ;
-define float @foo(float* %A, i64 %param) {
+define float @foo(ptr %A, i64 %param) {
 entry:
   br label %entry.split
 
@@ -19,9 +19,9 @@ entry.split:
 loopA:
   %indvarA = phi i64 [0, %entry.split], [%indvar.nextA, %loopA]
   %indvar.nextA = add i64 %indvarA, 1
-  %valA = load float, float* %A
+  %valA = load float, ptr %A
   %sumA = fadd float %valA, %valA
-  store float %valA, float* %A
+  store float %valA, ptr %A
   %cndA = icmp eq i64 %indvar.nextA, 100
   br i1 %cndA, label %next, label %loopA
 

diff  --git a/polly/test/CodeGen/pointer-type-expressions-2.ll b/polly/test/CodeGen/pointer-type-expressions-2.ll
index 08d90d4121efe..b261cfe53321f 100644
--- a/polly/test/CodeGen/pointer-type-expressions-2.ll
+++ b/polly/test/CodeGen/pointer-type-expressions-2.ll
@@ -2,16 +2,16 @@
 ; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i8* %start, i8* %end) {
+define void @foo(ptr %start, ptr %end) {
 entry:
   %A = alloca i32
   br label %body
 
 body:
-  %ptr = phi i8* [ %start, %entry ], [ %ptr2, %body ]
-  %ptr2 = getelementptr inbounds i8, i8* %ptr, i64 1
-  %cmp = icmp eq i8* %ptr2, %end
-  store i32 42, i32* %A
+  %ptr = phi ptr [ %start, %entry ], [ %ptr2, %body ]
+  %ptr2 = getelementptr inbounds i8, ptr %ptr, i64 1
+  %cmp = icmp eq ptr %ptr2, %end
+  store i32 42, ptr %A
   br i1 %cmp, label %exit, label %body
 
 exit:
@@ -22,8 +22,8 @@ exit:
 ; CHECK:   Stmt_body(c0);
 
 ; CODEGEN-LABEL: polly.start:
-; CODEGEN-NEXT:   %[[r0:[._a-zA-Z0-9]*]] = ptrtoint i8* %start to i64
+; CODEGEN-NEXT:   %[[r0:[._a-zA-Z0-9]*]] = ptrtoint ptr %start to i64
 ; CODEGEN-NEXT:   %[[r1:[._a-zA-Z0-9]*]] = sub nsw i64 0, %[[r0]]
-; CODEGEN-NEXT:   %[[r2:[._a-zA-Z0-9]*]] = ptrtoint i8* %end to i64
+; CODEGEN-NEXT:   %[[r2:[._a-zA-Z0-9]*]] = ptrtoint ptr %end to i64
 ; CODEGEN-NEXT:   %[[r4:[._a-zA-Z0-9]*]] = add nsw i64 %[[r1]], %[[r2]]
 

diff  --git a/polly/test/CodeGen/pointer-type-expressions.ll b/polly/test/CodeGen/pointer-type-expressions.ll
index fa5bd4c13f436..6bb3fa242362a 100644
--- a/polly/test/CodeGen/pointer-type-expressions.ll
+++ b/polly/test/CodeGen/pointer-type-expressions.ll
@@ -10,18 +10,18 @@
 
 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"
 
-define void @f(i64* nocapture %a, i64 %N, float * %P) nounwind {
+define void @f(ptr nocapture %a, i64 %N, ptr %P) nounwind {
 entry:
   br label %bb
 
 bb:
   %i = phi i64 [ 0, %entry ], [ %i.inc, %bb.backedge ]
-  %brcond = icmp ne float* %P, null
+  %brcond = icmp ne ptr %P, null
   br i1 %brcond, label %store, label %bb.backedge
 
 store:
-  %scevgep = getelementptr i64, i64* %a, i64 %i
-  store i64 %i, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %a, i64 %i
+  store i64 %i, ptr %scevgep
   br label %bb.backedge
 
 bb.backedge:
@@ -38,9 +38,9 @@ return:
 ; CHECK-NEXT:     Stmt_store(c0);
 
 ; CODEGEN-LABEL: polly.cond:
-; CODEGEN-NEXT:   %[[R1:[0-9]*]] = ptrtoint float* %P to i64
+; CODEGEN-NEXT:   %[[R1:[0-9]*]] = ptrtoint ptr %P to i64
 ; CODEGEN-NEXT:   %[[R2:[0-9]*]] = icmp sle i64 %[[R1]], -1
-; CODEGEN-NEXT:   %[[R3:[0-9]*]] = ptrtoint float* %P to i64
+; CODEGEN-NEXT:   %[[R3:[0-9]*]] = ptrtoint ptr %P to i64
 ; CODEGEN-NEXT:   %[[R4:[0-9]*]] = icmp sge i64 %[[R3]], 1
 ; CODEGEN-NEXT:   %[[R5:[0-9]*]] = or i1 %[[R2]], %[[R4]]
 ; CODEGEN-NEXT:   br i1 %[[R5]]

diff  --git a/polly/test/CodeGen/pointer-type-pointer-type-comparison.ll b/polly/test/CodeGen/pointer-type-pointer-type-comparison.ll
index 6886fca17d1a9..eaef64017aa74 100644
--- a/polly/test/CodeGen/pointer-type-pointer-type-comparison.ll
+++ b/polly/test/CodeGen/pointer-type-pointer-type-comparison.ll
@@ -11,18 +11,18 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i64* nocapture %a, i64 %N, float * %P, float * %Q) nounwind {
+define void @f(ptr nocapture %a, i64 %N, ptr %P, ptr %Q) nounwind {
 entry:
   br label %bb
 
 bb:
   %i = phi i64 [ 0, %entry ], [ %i.inc, %bb.backedge ]
-  %brcond = icmp ne float* %P, %Q
+  %brcond = icmp ne ptr %P, %Q
   br i1 %brcond, label %store, label %bb.backedge
 
 store:
-  %scevgep = getelementptr inbounds i64, i64* %a, i64 %i
-  store i64 %i, i64* %scevgep
+  %scevgep = getelementptr inbounds i64, ptr %a, i64 %i
+  store i64 %i, ptr %scevgep
   br label %bb.backedge
 
 bb.backedge:
@@ -39,12 +39,12 @@ return:
 ; CHECK-NEXT:     Stmt_store(c0);
 
 ; CODEGEN:       polly.cond:
-; CODEGEN-NEXT:  %[[Q:[_a-zA-Z0-9]+]] = ptrtoint float* %Q to i64
-; CODEGEN-NEXT:  %[[P:[_a-zA-Z0-9]+]] = ptrtoint float* %P to i64
+; CODEGEN-NEXT:  %[[Q:[_a-zA-Z0-9]+]] = ptrtoint ptr %Q to i64
+; CODEGEN-NEXT:  %[[P:[_a-zA-Z0-9]+]] = ptrtoint ptr %P to i64
 ; CODEGEN-NEXT:  %[[PInc:[_a-zA-Z0-9]+]] = add nsw i64 %[[P]], 1
 ; CODEGEN-NEXT:  %[[CMP:[_a-zA-Z0-9]+]] = icmp sge i64 %[[Q]], %[[PInc]]
-; CODEGEN-NEXT:  %[[P2:[_a-zA-Z0-9]+]] = ptrtoint float* %P to i64
-; CODEGEN-NEXT:  %[[Q2:[_a-zA-Z0-9]+]] = ptrtoint float* %Q to i64
+; CODEGEN-NEXT:  %[[P2:[_a-zA-Z0-9]+]] = ptrtoint ptr %P to i64
+; CODEGEN-NEXT:  %[[Q2:[_a-zA-Z0-9]+]] = ptrtoint ptr %Q to i64
 ; CODEGEN-NEXT:  %[[QInc:[_a-zA-Z0-9]+]] = add nsw i64 %[[Q2]], 1
 ; CODEGEN-NEXT:  %[[CMP2:[_a-zA-Z0-9]+]] = icmp sge i64 %[[P2]], %[[QInc]]
 ; CODEGEN-NEXT:  %[[CMP3:[_a-zA-Z0-9]+]] = or i1 %[[CMP]], %[[CMP2]]

diff  --git a/polly/test/CodeGen/pointer_rem.ll b/polly/test/CodeGen/pointer_rem.ll
index 66d0011d7e9a2..5c92ee52da2ca 100644
--- a/polly/test/CodeGen/pointer_rem.ll
+++ b/polly/test/CodeGen/pointer_rem.ll
@@ -17,12 +17,12 @@ target triple = "aarch64--linux-gnu"
 %struct.A = type { i32, i64, i8 }
 
 ; Function Attrs: norecurse nounwind
-define void @foo1(%struct.A* %a1, %struct.A* readnone %b1) #0 {
+define void @foo1(ptr %a1, ptr readnone %b1) #0 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %cmp4 = icmp eq %struct.A* %a1, %b1
+  %cmp4 = icmp eq ptr %a1, %b1
   br i1 %cmp4, label %for.cond.cleanup, label %for.body.preheader
 
 for.body.preheader:                               ; preds = %entry.split
@@ -35,13 +35,12 @@ for.cond.cleanup:                                 ; preds = %for.cond.cleanup.lo
   ret void
 
 for.body:                                         ; preds = %for.body.preheader, %for.body
-  %start.05 = phi %struct.A* [ %incdec.ptr, %for.body ], [ %a1, %for.body.preheader ]
-  %a = getelementptr inbounds %struct.A, %struct.A* %start.05, i64 0, i32 0
-  %0 = load i32, i32* %a, align 8
+  %start.05 = phi ptr [ %incdec.ptr, %for.body ], [ %a1, %for.body.preheader ]
+  %0 = load i32, ptr %start.05, align 8
   %add = add nsw i32 %0, 1
-  store i32 %add, i32* %a, align 8
-  %incdec.ptr = getelementptr inbounds %struct.A, %struct.A* %start.05, i64 1
-  %cmp = icmp eq %struct.A* %incdec.ptr, %b1
+  store i32 %add, ptr %start.05, align 8
+  %incdec.ptr = getelementptr inbounds %struct.A, ptr %start.05, i64 1
+  %cmp = icmp eq ptr %incdec.ptr, %b1
   br i1 %cmp, label %for.cond.cleanup.loopexit, label %for.body
 }
 

diff  --git a/polly/test/CodeGen/pr25241.ll b/polly/test/CodeGen/pr25241.ll
index 7d9b2efef65f3..9fa67e083a6ca 100644
--- a/polly/test/CodeGen/pr25241.ll
+++ b/polly/test/CodeGen/pr25241.ll
@@ -13,11 +13,11 @@
 ; CHECK:         br label %polly.stmt.polly.merge_new_and_old.exit
 
 ; CHECK-LABEL: polly.stmt.polly.merge_new_and_old.exit:
-; CHECK:         store i32 %polly.curr.3, i32* %curr.3.s2a
+; CHECK:         store i32 %polly.curr.3, ptr %curr.3.s2a
 ; CHECK:         br label %polly.exiting
 
 ; CHECK-LABEL: polly.exiting:
-; CHECK:         %curr.3.ph.final_reload = load i32, i32* %curr.3.s2a
+; CHECK:         %curr.3.ph.final_reload = load i32, ptr %curr.3.s2a
 ; CHECK:         br label
 
 
@@ -27,7 +27,7 @@ target triple = "x86_64-unknown-linux-gnu"
 ; Function Attrs: nounwind uwtable
 define void @BZ2_decompress() #0 {
 entry:
-  %tmp = load i32, i32* undef, align 4, !tbaa !1
+  %tmp = load i32, ptr undef, align 4, !tbaa !1
   switch i32 undef, label %save_state_and_return [
     i32 34, label %sw.bb.748
     i32 35, label %if.then.813

diff  --git a/polly/test/CodeGen/ptrtoint_as_parameter.ll b/polly/test/CodeGen/ptrtoint_as_parameter.ll
index 7e69560d0df85..4f6c8079729da 100644
--- a/polly/test/CodeGen/ptrtoint_as_parameter.ll
+++ b/polly/test/CodeGen/ptrtoint_as_parameter.ll
@@ -1,8 +1,8 @@
 ; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
 ;
 ; CHECK:      if.then260:
-; CHECK-NEXT:   %p.4 = getelementptr inbounds i8, i8* null, i64 1
-; CHECK-NEXT:   %sub.ptr.lhs.cast263 = ptrtoint i8* %p.4 to i64
+; CHECK-NEXT:   %p.4 = getelementptr inbounds i8, ptr null, i64 1
+; CHECK-NEXT:   %sub.ptr.lhs.cast263 = ptrtoint ptr %p.4 to i64
 ; CHECK-NEXT:   %sub.ptr.sub265 = sub i64 %sub.ptr.lhs.cast263, 0
 ; CHECK-NEXT:   %div = udiv i64 0, %sub.ptr.sub265
 ; CHECK-NEXT:   %cmp268 = icmp ult i64 0, %div
@@ -20,15 +20,15 @@ if.end:                                           ; preds = %entry
   br label %while.cond
 
 while.cond:                                       ; preds = %cond.true270, %if.then260, %if.end
-  %p.0 = phi i8* [ null, %if.end ], [ %p.4, %if.then260 ], [ %p.4, %cond.true270 ]
+  %p.0 = phi ptr [ null, %if.end ], [ %p.4, %if.then260 ], [ %p.4, %cond.true270 ]
   br i1 undef, label %if.then260, label %while.body210
 
 while.body210:                                    ; preds = %while.cond
   ret void
 
 if.then260:                                       ; preds = %while.cond
-  %p.4 = getelementptr inbounds i8, i8* null, i64 1
-  %sub.ptr.lhs.cast263 = ptrtoint i8* %p.4 to i64
+  %p.4 = getelementptr inbounds i8, ptr null, i64 1
+  %sub.ptr.lhs.cast263 = ptrtoint ptr %p.4 to i64
   %sub.ptr.sub265 = sub i64 %sub.ptr.lhs.cast263, 0
   %div = udiv i64 0, %sub.ptr.sub265
   %cmp268 = icmp ult i64 0, %div

diff  --git a/polly/test/CodeGen/read-only-scalars.ll b/polly/test/CodeGen/read-only-scalars.ll
index f27ec6bfdfe52..a5e1d2719d7d6 100644
--- a/polly/test/CodeGen/read-only-scalars.ll
+++ b/polly/test/CodeGen/read-only-scalars.ll
@@ -11,14 +11,14 @@
 ; SCALAR-NEXT: %scalar.s2a = alloca float
 
 ; SCALAR-LABEL: polly.start:
-; SCALAR-NEXT:  store float %scalar, float* %scalar.s2a
+; SCALAR-NEXT:  store float %scalar, ptr %scalar.s2a
 
 ; SCALAR-LABEL: polly.stmt.stmt1:
-; SCALAR-NEXT:  %scalar.s2a.reload = load float, float* %scalar.s2a
-; SCALAR-NEXT:  %val_p_scalar_ = load float, float* %A,
+; SCALAR-NEXT:  %scalar.s2a.reload = load float, ptr %scalar.s2a
+; SCALAR-NEXT:  %val_p_scalar_ = load float, ptr %A,
 ; SCALAR-NEXT:  %p_sum = fadd float %val_p_scalar_, %scalar.s2a.reload
 
-define void @foo(float* noalias %A, float %scalar) {
+define void @foo(ptr noalias %A, float %scalar) {
 entry:
   br label %loop
 
@@ -27,9 +27,9 @@ loop:
   br label %stmt1
 
 stmt1:
-  %val = load float, float* %A
+  %val = load float, ptr %A
   %sum = fadd float %val, %scalar
-  store float %sum, float* %A
+  store float %sum, ptr %A
   br label %loop.backedge
 
 loop.backedge:

diff  --git a/polly/test/CodeGen/reduction.ll b/polly/test/CodeGen/reduction.ll
index e9ed1413fe34c..6e5a230ad231f 100644
--- a/polly/test/CodeGen/reduction.ll
+++ b/polly/test/CodeGen/reduction.ll
@@ -32,57 +32,56 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 ; <label>:0
-  %A = alloca [1021 x i32], align 16              ; <[1021 x i32]*> [#uses=6]
-  %1 = getelementptr inbounds [1021 x i32], [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %2 = bitcast i32* %1 to i8*                     ; <i8*> [#uses=1]
-  call void @llvm.memset.p0i8.i64(i8* %2, i8 0, i64 4084, i32 1, i1 false)
-  %3 = getelementptr inbounds [1021 x i32], [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %4 = getelementptr inbounds i32, i32* %3, i64 0      ; <i32*> [#uses=1]
-  store i32 1, i32* %4
-  %5 = getelementptr inbounds [1021 x i32], [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %6 = getelementptr inbounds i32, i32* %5, i64 1      ; <i32*> [#uses=1]
-  store i32 1, i32* %6
+  %A = alloca [1021 x i32], align 16              ; <ptr> [#uses=6]
+  %1 = getelementptr inbounds [1021 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  call void @llvm.memset.p0.i64(ptr %1, i8 0, i64 4084, i32 1, i1 false)
+  %2 = getelementptr inbounds [1021 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %3 = getelementptr inbounds i32, ptr %2, i64 0      ; <ptr> [#uses=1]
+  store i32 1, ptr %3
+  %4 = getelementptr inbounds [1021 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %5 = getelementptr inbounds i32, ptr %4, i64 1      ; <ptr> [#uses=1]
+  store i32 1, ptr %5
   fence seq_cst
-  br label %7
+  br label %6
 
-; <label>:7                                       ; preds = %14, %0
-  %indvar = phi i64 [ %indvar.next, %14 ], [ 0, %0 ] ; <i64> [#uses=5]
-  %red.0 = phi i32 [ 0, %0 ], [ %13, %14 ]        ; <i32> [#uses=2]
-  %scevgep = getelementptr [1021 x i32], [1021 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+; <label>:7                                       ; preds = %13, %0
+  %indvar = phi i64 [ %indvar.next, %13 ], [ 0, %0 ] ; <i64> [#uses=5]
+  %red.0 = phi i32 [ 0, %0 ], [ %12, %13 ]        ; <i32> [#uses=2]
+  %scevgep = getelementptr [1021 x i32], ptr %A, i64 0, i64 %indvar ; <ptr> [#uses=2]
   %tmp = add i64 %indvar, 2                       ; <i64> [#uses=1]
-  %scevgep1 = getelementptr [1021 x i32], [1021 x i32]* %A, i64 0, i64 %tmp ; <i32*> [#uses=1]
+  %scevgep1 = getelementptr [1021 x i32], ptr %A, i64 0, i64 %tmp ; <ptr> [#uses=1]
   %tmp2 = add i64 %indvar, 1                      ; <i64> [#uses=1]
-  %scevgep3 = getelementptr [1021 x i32], [1021 x i32]* %A, i64 0, i64 %tmp2 ; <i32*> [#uses=1]
+  %scevgep3 = getelementptr [1021 x i32], ptr %A, i64 0, i64 %tmp2 ; <ptr> [#uses=1]
   %exitcond = icmp ne i64 %indvar, 1019           ; <i1> [#uses=1]
-  br i1 %exitcond, label %8, label %15
+  br i1 %exitcond, label %7, label %14
 
-; <label>:8                                       ; preds = %7
-  %9 = load i32, i32* %scevgep3                        ; <i32> [#uses=1]
-  %10 = load i32, i32* %scevgep                        ; <i32> [#uses=1]
-  %11 = add nsw i32 %9, %10                       ; <i32> [#uses=1]
-  store i32 %11, i32* %scevgep1
-  %12 = load i32, i32* %scevgep                        ; <i32> [#uses=1]
-  %13 = add nsw i32 %red.0, %12                   ; <i32> [#uses=1]
-  br label %14
+; <label>:8                                       ; preds = %6
+  %8 = load i32, ptr %scevgep3                        ; <i32> [#uses=1]
+  %9 = load i32, ptr %scevgep                        ; <i32> [#uses=1]
+  %10 = add nsw i32 %8, %9                       ; <i32> [#uses=1]
+  store i32 %10, ptr %scevgep1
+  %11 = load i32, ptr %scevgep                        ; <i32> [#uses=1]
+  %12 = add nsw i32 %red.0, %11                   ; <i32> [#uses=1]
+  br label %13
 
-; <label>:14                                      ; preds = %8
+; <label>:14                                      ; preds = %7
   %indvar.next = add i64 %indvar, 1               ; <i64> [#uses=1]
-  br label %7
+  br label %6
 
-; <label>:15                                      ; preds = %7
-  %red.0.lcssa = phi i32 [ %red.0, %7 ]           ; <i32> [#uses=1]
+; <label>:15                                      ; preds = %6
+  %red.0.lcssa = phi i32 [ %red.0, %6 ]           ; <i32> [#uses=1]
   fence seq_cst
-  %16 = icmp ne i32 %red.0.lcssa, 382399368       ; <i1> [#uses=1]
-  br i1 %16, label %17, label %18
+  %15 = icmp ne i32 %red.0.lcssa, 382399368       ; <i1> [#uses=1]
+  br i1 %15, label %16, label %17
 
-; <label>:17                                      ; preds = %15
-  br label %18
+; <label>:17                                      ; preds = %14
+  br label %17
 
-; <label>:18                                      ; preds = %17, %15
-  %.0 = phi i32 [ 1, %17 ], [ 0, %15 ]            ; <i32> [#uses=1]
+; <label>:18                                      ; preds = %16, %14
+  %.0 = phi i32 [ 1, %16 ], [ 0, %14 ]            ; <i32> [#uses=1]
   ret i32 %.0
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind
 
 ; CHECK:  Could not generate independent blocks

diff  --git a/polly/test/CodeGen/reduction_2.ll b/polly/test/CodeGen/reduction_2.ll
index 04031e83894be..7a50cea314004 100644
--- a/polly/test/CodeGen/reduction_2.ll
+++ b/polly/test/CodeGen/reduction_2.ll
@@ -28,43 +28,42 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 entry:
-  %A = alloca [1021 x i32], align 4               ; <[1021 x i32]*> [#uses=6]
-  %RED = alloca [1 x i32], align 4                ; <[1 x i32]*> [#uses=3]
-  %arraydecay = getelementptr inbounds [1021 x i32], [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %conv = bitcast i32* %arraydecay to i8*         ; <i8*> [#uses=1]
-  call void @llvm.memset.p0i8.i64(i8* %conv, i8 0, i64 4084, i32 1, i1 false)
-  %arraydecay1 = getelementptr inbounds [1021 x i32], [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx = getelementptr inbounds i32, i32* %arraydecay1, i64 0 ; <i32*> [#uses=1]
-  store i32 1, i32* %arrayidx
-  %arraydecay2 = getelementptr inbounds [1021 x i32], [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx3 = getelementptr inbounds i32, i32* %arraydecay2, i64 1 ; <i32*> [#uses=1]
-  store i32 1, i32* %arrayidx3
-  %arraydecay4 = getelementptr inbounds [1 x i32], [1 x i32]* %RED, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx5 = getelementptr inbounds i32, i32* %arraydecay4, i64 0 ; <i32*> [#uses=1]
-  store i32 0, i32* %arrayidx5
+  %A = alloca [1021 x i32], align 4               ; <ptr> [#uses=6]
+  %RED = alloca [1 x i32], align 4                ; <ptr> [#uses=3]
+  %arraydecay = getelementptr inbounds [1021 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  call void @llvm.memset.p0.i64(ptr %arraydecay, i8 0, i64 4084, i32 1, i1 false)
+  %arraydecay1 = getelementptr inbounds [1021 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx = getelementptr inbounds i32, ptr %arraydecay1, i64 0 ; <ptr> [#uses=1]
+  store i32 1, ptr %arrayidx
+  %arraydecay2 = getelementptr inbounds [1021 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx3 = getelementptr inbounds i32, ptr %arraydecay2, i64 1 ; <ptr> [#uses=1]
+  store i32 1, ptr %arrayidx3
+  %arraydecay4 = getelementptr inbounds [1 x i32], ptr %RED, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx5 = getelementptr inbounds i32, ptr %arraydecay4, i64 0 ; <ptr> [#uses=1]
+  store i32 0, ptr %arrayidx5
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
   %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ] ; <i64> [#uses=5]
-  %arrayidx15 = getelementptr [1021 x i32], [1021 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+  %arrayidx15 = getelementptr [1021 x i32], ptr %A, i64 0, i64 %indvar ; <ptr> [#uses=2]
   %tmp = add i64 %indvar, 2                       ; <i64> [#uses=1]
-  %arrayidx20 = getelementptr [1021 x i32], [1021 x i32]* %A, i64 0, i64 %tmp ; <i32*> [#uses=1]
+  %arrayidx20 = getelementptr [1021 x i32], ptr %A, i64 0, i64 %tmp ; <ptr> [#uses=1]
   %tmp1 = add i64 %indvar, 1                      ; <i64> [#uses=1]
-  %arrayidx9 = getelementptr [1021 x i32], [1021 x i32]* %A, i64 0, i64 %tmp1 ; <i32*> [#uses=1]
+  %arrayidx9 = getelementptr [1021 x i32], ptr %A, i64 0, i64 %tmp1 ; <ptr> [#uses=1]
   %exitcond = icmp ne i64 %indvar, 1019           ; <i1> [#uses=1]
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp10 = load i32, i32* %arrayidx9                   ; <i32> [#uses=1]
-  %tmp16 = load i32, i32* %arrayidx15                  ; <i32> [#uses=1]
+  %tmp10 = load i32, ptr %arrayidx9                   ; <i32> [#uses=1]
+  %tmp16 = load i32, ptr %arrayidx15                  ; <i32> [#uses=1]
   %add = add nsw i32 %tmp10, %tmp16               ; <i32> [#uses=1]
-  store i32 %add, i32* %arrayidx20
-  %tmp26 = load i32, i32* %arrayidx15                  ; <i32> [#uses=1]
-  %arraydecay27 = getelementptr inbounds [1 x i32], [1 x i32]* %RED, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx28 = getelementptr inbounds i32, i32* %arraydecay27, i64 0 ; <i32*> [#uses=2]
-  %tmp29 = load i32, i32* %arrayidx28                  ; <i32> [#uses=1]
+  store i32 %add, ptr %arrayidx20
+  %tmp26 = load i32, ptr %arrayidx15                  ; <i32> [#uses=1]
+  %arraydecay27 = getelementptr inbounds [1 x i32], ptr %RED, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx28 = getelementptr inbounds i32, ptr %arraydecay27, i64 0 ; <ptr> [#uses=2]
+  %tmp29 = load i32, ptr %arrayidx28                  ; <i32> [#uses=1]
   %add30 = add nsw i32 %tmp29, %tmp26             ; <i32> [#uses=1]
-  store i32 %add30, i32* %arrayidx28
+  store i32 %add30, ptr %arrayidx28
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -72,9 +71,9 @@ for.inc:                                          ; preds = %for.body
   br label %for.cond
 
 for.end:                                          ; preds = %for.cond
-  %arraydecay32 = getelementptr inbounds [1 x i32], [1 x i32]* %RED, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx33 = getelementptr inbounds i32, i32* %arraydecay32, i64 0 ; <i32*> [#uses=1]
-  %tmp34 = load i32, i32* %arrayidx33                  ; <i32> [#uses=1]
+  %arraydecay32 = getelementptr inbounds [1 x i32], ptr %RED, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx33 = getelementptr inbounds i32, ptr %arraydecay32, i64 0 ; <ptr> [#uses=1]
+  %tmp34 = load i32, ptr %arrayidx33                  ; <i32> [#uses=1]
   %cmp35 = icmp ne i32 %tmp34, 382399368          ; <i1> [#uses=1]
   br i1 %cmp35, label %if.then, label %if.end
 
@@ -86,7 +85,7 @@ if.end:                                           ; preds = %if.then, %for.end
   ret i32 %retval.0
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind
 
 ; This is a negative test. We can prove that RED[0] in the conditional after
 ; the loop is dereferencable and consequently expand the SCoP from the

diff  --git a/polly/test/CodeGen/reduction_simple_binary.ll b/polly/test/CodeGen/reduction_simple_binary.ll
index ff0f0ed686276..c7c5501bb7ed4 100644
--- a/polly/test/CodeGen/reduction_simple_binary.ll
+++ b/polly/test/CodeGen/reduction_simple_binary.ll
@@ -23,9 +23,9 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %add2 = add nsw i32 %i1.0, 3
-  %tmp1 = load i32, i32* @prod, align 4
+  %tmp1 = load i32, ptr @prod, align 4
   %mul3 = mul nsw i32 %tmp1, %add2
-  store i32 %mul3, i32* @prod, align 4
+  store i32 %mul3, ptr @prod, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/CodeGen/region_exiting-domtree.ll b/polly/test/CodeGen/region_exiting-domtree.ll
index ba9803a17683e..05983da0a3e30 100644
--- a/polly/test/CodeGen/region_exiting-domtree.ll
+++ b/polly/test/CodeGen/region_exiting-domtree.ll
@@ -5,7 +5,7 @@
 ; subregion. In particulat, it must be dominated by %polly.stmt.subregion.enter,
 ; the generated subregion's entry block.
 
-define void @func(i32 %n, i32* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %loop
 
@@ -24,7 +24,7 @@ subregion.skip:
 subregion.enter:
   %sqr = mul i32 %i, %i
   %cond = icmp eq i32 %sqr, 0
-  store i32 %i, i32* %A
+  store i32 %i, ptr %A
   br i1 %cond, label %subregion.true, label %subregion.false
 
 subregion.true:

diff  --git a/polly/test/CodeGen/region_multiexit_partialwrite.ll b/polly/test/CodeGen/region_multiexit_partialwrite.ll
index b476d3aab8b40..b98d7f58732a0 100644
--- a/polly/test/CodeGen/region_multiexit_partialwrite.ll
+++ b/polly/test/CodeGen/region_multiexit_partialwrite.ll
@@ -6,14 +6,14 @@
 ;
 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
 
-define void @region_multiexit_partialwrite(i32* %arg, i64 %arg1, i32* %arg2) {
+define void @region_multiexit_partialwrite(ptr %arg, i64 %arg1, ptr %arg2) {
 bb:
   br label %bb3
 
 bb3:
   %tmp = phi i64 [ %tmp17, %bb10 ], [ 1, %bb ]
-  %tmp4 = getelementptr inbounds i32, i32* %arg, i64 %tmp
-  %tmp5 = load i32, i32* %tmp4, align 4
+  %tmp4 = getelementptr inbounds i32, ptr %arg, i64 %tmp
+  %tmp5 = load i32, ptr %tmp4, align 4
   %tmp6 = icmp slt i32 %tmp5, 0
   br i1 %tmp6, label %bb7, label %bb9
 
@@ -26,8 +26,8 @@ bb9:
 
 bb10:
   %tmp11 = phi i32 [ %tmp8, %bb7 ], [ undef, %bb9 ]
-  %tmp16 = getelementptr inbounds i32, i32* %arg2, i64 %tmp
-  store i32 %tmp11, i32* %tmp16, align 4
+  %tmp16 = getelementptr inbounds i32, ptr %arg2, i64 %tmp
+  store i32 %tmp11, ptr %tmp16, align 4
   %tmp17 = add nuw i64 %tmp, 1
   %tmp18 = icmp eq i64 %tmp17, %arg1
   br i1 %tmp18, label %bb19, label %bb3

diff  --git a/polly/test/CodeGen/run-time-condition-with-scev-parameters.ll b/polly/test/CodeGen/run-time-condition-with-scev-parameters.ll
index e0b911770ae6b..0f62a8c743df0 100644
--- a/polly/test/CodeGen/run-time-condition-with-scev-parameters.ll
+++ b/polly/test/CodeGen/run-time-condition-with-scev-parameters.ll
@@ -20,7 +20,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @init_array(i32 %n, double* %data) {
+define void @init_array(i32 %n, ptr %data) {
 entry:
   %0 = zext i32 %n to i64
   br label %for.body4
@@ -29,8 +29,8 @@ for.body4:                                        ; preds = %for.body4, %entry
   %indvar1 = phi i64 [ %indvar.next2, %for.body4 ], [ 0, %entry ]
   %.moved.to.for.body4 = mul i64 %0, %indvar1
   %1 = add i64 %.moved.to.for.body4, 0
-  %arrayidx7 = getelementptr double, double* %data, i64 %1
-  store double undef, double* %arrayidx7, align 8
+  %arrayidx7 = getelementptr double, ptr %data, i64 %1
+  store double undef, ptr %arrayidx7, align 8
   %indvar.next2 = add i64 %indvar1, 1
   br i1 false, label %for.body4, label %for.end10
 

diff  --git a/polly/test/CodeGen/run-time-condition.ll b/polly/test/CodeGen/run-time-condition.ll
index 19446da6c3f55..0faefad8aef40 100644
--- a/polly/test/CodeGen/run-time-condition.ll
+++ b/polly/test/CodeGen/run-time-condition.ll
@@ -2,7 +2,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"
 
-define void @run-time-condition(i16* noalias %A, i16* noalias %B) {
+define void @run-time-condition(ptr noalias %A, ptr noalias %B) {
 entry:
   br label %for.cond
 
@@ -12,11 +12,10 @@ for.cond:                                         ; preds = %for.body, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i16, i16* %B, i64 0
-  %load = load i16, i16* %arrayidx
+  %load = load i16, ptr %B
   %add10 = add nsw i16 %load, 1
-  %arrayidx13 = getelementptr inbounds i16, i16* %A, i64 %indvar
-  store i16 %add10, i16* %arrayidx13, align 2
+  %arrayidx13 = getelementptr inbounds i16, ptr %A, i64 %indvar
+  store i16 %add10, ptr %arrayidx13, align 2
   %inc = add nsw i64 %indvar, 1
   br label %for.cond
 

diff  --git a/polly/test/CodeGen/scalar-references-used-in-scop-compute.ll b/polly/test/CodeGen/scalar-references-used-in-scop-compute.ll
index fe32e64c1ba60..3f88942c23000 100644
--- a/polly/test/CodeGen/scalar-references-used-in-scop-compute.ll
+++ b/polly/test/CodeGen/scalar-references-used-in-scop-compute.ll
@@ -9,15 +9,15 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @scalar-function-argument(float* %A, float %sqrinv) {
+define void @scalar-function-argument(ptr %A, float %sqrinv) {
 entry:
   br label %for.body
 
 for.body:
   %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
   %mul104 = fmul float 1.0, %sqrinv
-  %rp107 = getelementptr float, float* %A, i64 %indvar
-  store float %mul104, float* %rp107, align 4
+  %rp107 = getelementptr float, ptr %A, i64 %indvar
+  store float %mul104, ptr %rp107, align 4
   %indvar.next = add nsw i64 %indvar, 1
   %cmp = icmp slt i64 1024, %indvar.next
   br i1 %cmp, label %for.end, label %for.body
@@ -29,7 +29,7 @@ for.end:
 ; CHECH-LABEL: @scalar-outside-of-scop
 ; CHECK: polly.split_new_and_old
 
-define void @scalar-outside-of-scop(float* %A) {
+define void @scalar-outside-of-scop(ptr %A) {
 entry:
   %sqrinv = call float @getFloat()
   br label %for.body
@@ -37,8 +37,8 @@ entry:
 for.body:
   %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
   %mul104 = fmul float 1.0, %sqrinv
-  %rp107 = getelementptr float, float* %A, i64 %indvar
-  store float %mul104, float* %rp107, align 4
+  %rp107 = getelementptr float, ptr %A, i64 %indvar
+  store float %mul104, ptr %rp107, align 4
   %indvar.next = add nsw i64 %indvar, 1
   %cmp = icmp slt i64 1024, %indvar.next
   br i1 %cmp, label %for.end, label %for.body

diff  --git a/polly/test/CodeGen/scalar-store-from-same-bb.ll b/polly/test/CodeGen/scalar-store-from-same-bb.ll
index 74e854f9a8158..ac8fab4b7a0d6 100644
--- a/polly/test/CodeGen/scalar-store-from-same-bb.ll
+++ b/polly/test/CodeGen/scalar-store-from-same-bb.ll
@@ -4,10 +4,10 @@
 ; This test ensures that the expression N + 1 that is stored in the phi-node
 ; alloca, is directly computed and not incorrectly transfered through memory.
 
-; CHECK: store i64 [[REG:%.*]], i64* %res.phiops
+; CHECK: store i64 [[REG:%.*]], ptr %res.phiops
 ; CHECK: [[REG]] = add i64 %N, 1
 
-define i64 @foo(float* %A, i64 %N) {
+define i64 @foo(ptr %A, i64 %N) {
 entry:
   br label %next
 
@@ -19,7 +19,7 @@ loop:
   %indvar = phi i64 [0, %next], [%indvar.next, %loop]
   %indvar.next = add i64 %indvar, 1
   %sum = add i64 %N, 1
-  store float 4.0, float* %A
+  store float 4.0, ptr %A
   %cmp = icmp sle i64 %indvar.next, 100
   br i1 %cmp, label %loop, label %merge
 

diff  --git a/polly/test/CodeGen/scalar_codegen_crash.ll b/polly/test/CodeGen/scalar_codegen_crash.ll
index 8eb3817a0c32e..c41a00f59e81b 100644
--- a/polly/test/CodeGen/scalar_codegen_crash.ll
+++ b/polly/test/CodeGen/scalar_codegen_crash.ll
@@ -17,9 +17,9 @@ for.body:                                         ; preds = %for.body, %entry
   br i1 undef, label %for.end.310, label %for.body
 
 for.end.310:                                      ; preds = %for.body
-  store i32 undef, i32* @endposition, align 4
+  store i32 undef, ptr @endposition, align 4
   %sub325 = sub i32 33, 0
-  %0 = load i32, i32* getelementptr inbounds ([0 x i32], [0 x i32]* @Init, i64 0, i64 0), align 4
+  %0 = load i32, ptr @Init, align 4
   br i1 false, label %for.cond.347.preheader, label %for.body.328.lr.ph
 
 for.body.328.lr.ph:                               ; preds = %for.end.310
@@ -29,8 +29,8 @@ for.body.328.lr.ph:                               ; preds = %for.end.310
 for.body.328:                                     ; preds = %for.body.328, %for.body.328.lr.ph
   %indvars.iv546 = phi i64 [ %indvars.iv.next547, %for.body.328 ], [ 1, %for.body.328.lr.ph ]
   %2 = phi i32 [ %or331, %for.body.328 ], [ %0, %for.body.328.lr.ph ]
-  %arrayidx330 = getelementptr inbounds [0 x i32], [0 x i32]* @Bit, i64 0, i64 %indvars.iv546
-  %3 = load i32, i32* %arrayidx330, align 4
+  %arrayidx330 = getelementptr inbounds [0 x i32], ptr @Bit, i64 0, i64 %indvars.iv546
+  %3 = load i32, ptr %arrayidx330, align 4
   %or331 = or i32 %3, %2
   %indvars.iv.next547 = add nuw nsw i64 %indvars.iv546, 1
   %lftr.wideiv = trunc i64 %indvars.iv.next547 to i32

diff  --git a/polly/test/CodeGen/scev-division-invariant-load.ll b/polly/test/CodeGen/scev-division-invariant-load.ll
index 3af47b6be5a48..3156bdc9f5cee 100644
--- a/polly/test/CodeGen/scev-division-invariant-load.ll
+++ b/polly/test/CodeGen/scev-division-invariant-load.ll
@@ -6,21 +6,21 @@
 ; ModuleID = 'bug.ll'
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.frame_store = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.picture*, %struct.picture*, %struct.picture* }
-%struct.picture = type { i32, i32, i32, i32, i32, i32, [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16**, i16*, i16*, i16**, i16**, i16***, i8*, i16***, i64***, i64***, i16****, i8**, i8**, %struct.picture*, %struct.picture*, %struct.picture*, i32, i32, i32, i32, i32, i32, i32 }
+%struct.frame_store = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr }
+%struct.picture = type { i32, i32, i32, i32, i32, i32, [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32 }
 
-define void @dpb_split_field(%struct.frame_store* %fs) {
+define void @dpb_split_field(ptr %fs) {
 entry:
   br label %for.body544
 
 for.body544:                                      ; preds = %if.end908, %for.body544.lr.ph
   %indvars.iv87 = phi i64 [ 0, %entry ], [ %indvars.iv.next88, %if.end908 ]
-  %tmp = phi %struct.picture* [ undef, %entry ], [ %tmp6, %if.end908 ]
+  %tmp = phi ptr [ undef, %entry ], [ %tmp6, %if.end908 ]
   br label %land.lhs.true563
 
 land.lhs.true563:                                 ; preds = %for.body544
-  %size_x551 = getelementptr inbounds %struct.picture, %struct.picture* %tmp, i64 0, i32 18
-  %tmp1 = load i32, i32* %size_x551, align 8
+  %size_x551 = getelementptr inbounds %struct.picture, ptr %tmp, i64 0, i32 18
+  %tmp1 = load i32, ptr %size_x551, align 8
   %div552 = sdiv i32 %tmp1, 16
   %tmp2 = trunc i64 %indvars.iv87 to i32
   %div554 = sdiv i32 %tmp2, 4
@@ -29,20 +29,20 @@ land.lhs.true563:                                 ; preds = %for.body544
   %tmp10 = shl i32 %tmp9, 1
   %add559 = add i32 %tmp10, 0
   %idxprom564 = sext i32 %add559 to i64
-  %mb_field566 = getelementptr inbounds %struct.picture, %struct.picture* %tmp, i64 0, i32 31
-  %tmp3 = load i8*, i8** %mb_field566, align 8
-  %arrayidx567 = getelementptr inbounds i8, i8* %tmp3, i64 %idxprom564
-  %tmp4 = load i8, i8* %arrayidx567, align 1
+  %mb_field566 = getelementptr inbounds %struct.picture, ptr %tmp, i64 0, i32 31
+  %tmp3 = load ptr, ptr %mb_field566, align 8
+  %arrayidx567 = getelementptr inbounds i8, ptr %tmp3, i64 %idxprom564
+  %tmp4 = load i8, ptr %arrayidx567, align 1
   %tobool569 = icmp eq i8 %tmp4, 0
   br i1 %tobool569, label %if.end908, label %if.then570
 
 if.then570:                                       ; preds = %land.lhs.true563
-  %frame = getelementptr inbounds %struct.frame_store, %struct.frame_store* %fs, i64 0, i32 10
-  %tmp5 = load %struct.picture*, %struct.picture** %frame, align 8
+  %frame = getelementptr inbounds %struct.frame_store, ptr %fs, i64 0, i32 10
+  %tmp5 = load ptr, ptr %frame, align 8
   br label %if.end908
 
 if.end908:                                        ; preds = %if.then570, %land.lhs.true563
-  %tmp6 = phi %struct.picture* [ %tmp, %land.lhs.true563 ], [ undef, %if.then570 ]
+  %tmp6 = phi ptr [ %tmp, %land.lhs.true563 ], [ undef, %if.then570 ]
   %indvars.iv.next88 = add nuw nsw i64 %indvars.iv87, 1
   br i1 undef, label %for.body544, label %for.inc912
 

diff  --git a/polly/test/CodeGen/scop_expander_insert_point.ll b/polly/test/CodeGen/scop_expander_insert_point.ll
index 1d69fc529ac88..8492873b22edb 100644
--- a/polly/test/CodeGen/scop_expander_insert_point.ll
+++ b/polly/test/CodeGen/scop_expander_insert_point.ll
@@ -21,15 +21,15 @@ for.cond10.preheader.lr.ph:                       ; preds = %entry
 
 for.body17.lr.ph:                                 ; preds = %for.end22, %for.cond10.preheader.lr.ph
   %outcol_h.048 = phi i32 [ 0, %for.cond10.preheader.lr.ph ], [ %add31, %for.end22 ]
-  %0 = load i8*, i8** undef
+  %0 = load ptr, ptr undef
   %idx.ext = zext i32 %outcol_h.048 to i64
-  %add.ptr = getelementptr inbounds i8, i8* %0, i64 %idx.ext
+  %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext
   br label %for.body17
 
 for.body17:                                       ; preds = %for.body17, %for.body17.lr.ph
   %outvalue.141 = phi i64 [ undef, %for.body17.lr.ph ], [ %add19, %for.body17 ]
-  %inptr.040 = phi i8* [ %add.ptr, %for.body17.lr.ph ], [ undef, %for.body17 ]
-  %1 = load i8, i8* %inptr.040
+  %inptr.040 = phi ptr [ %add.ptr, %for.body17.lr.ph ], [ undef, %for.body17 ]
+  %1 = load i8, ptr %inptr.040
   %add19 = mul nsw i64 0, %outvalue.141
   br i1 false, label %for.body17, label %for.end22
 

diff  --git a/polly/test/CodeGen/scop_expander_segfault.ll b/polly/test/CodeGen/scop_expander_segfault.ll
index 104915359819a..293c1e5279596 100644
--- a/polly/test/CodeGen/scop_expander_segfault.ll
+++ b/polly/test/CodeGen/scop_expander_segfault.ll
@@ -8,22 +8,22 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @lex_number(i8* %str) {
+define void @lex_number(ptr %str) {
 entry:
   br label %for.end
 
 for.end:                                          ; preds = %entry
-  %0 = load i8, i8* %str, align 1
+  %0 = load i8, ptr %str, align 1
   %cmp17 = icmp eq i8 %0, 48
   br i1 %cmp17, label %land.lhs.true34, label %lor.lhs.false81
 
 land.lhs.true34:                                  ; preds = %for.end
-  %arrayidx35 = getelementptr inbounds i8, i8* %str, i64 1
-  %str.arrayidx35 = select i1 undef, i8* %str, i8* %arrayidx35
+  %arrayidx35 = getelementptr inbounds i8, ptr %str, i64 1
+  %str.arrayidx35 = select i1 undef, ptr %str, ptr %arrayidx35
   br label %lor.lhs.false81
 
 lor.lhs.false81:                                  ; preds = %land.lhs.true34, %for.end
-  %p.0 = phi i8* [ %str.arrayidx35, %land.lhs.true34 ], [ %str, %for.end ]
+  %p.0 = phi ptr [ %str.arrayidx35, %land.lhs.true34 ], [ %str, %for.end ]
   br label %do.body172
 
 do.body172:                                       ; preds = %lor.lhs.false81

diff  --git a/polly/test/CodeGen/scop_never_executed_runtime_check_location.ll b/polly/test/CodeGen/scop_never_executed_runtime_check_location.ll
index 07c92e5344494..91a58159b5f98 100644
--- a/polly/test/CodeGen/scop_never_executed_runtime_check_location.ll
+++ b/polly/test/CodeGen/scop_never_executed_runtime_check_location.ll
@@ -12,7 +12,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @init_array(i32 %n, double* %data) {
+define void @init_array(i32 %n, ptr %data) {
 entry:
   %0 = zext i32 %n to i64
   br i1 false, label %for.end10, label %for.body4
@@ -21,8 +21,8 @@ for.body4:                                        ; preds = %for.body4, %entry
   %indvar1 = phi i64 [ %indvar.next2, %for.body4 ], [ 0, %entry ]
   %.moved.to.for.body4 = mul i64 %0, %indvar1
   %1 = add i64 %.moved.to.for.body4, 0
-  %arrayidx7 = getelementptr double, double* %data, i64 %1
-  store double undef, double* %arrayidx7, align 8
+  %arrayidx7 = getelementptr double, ptr %data, i64 %1
+  store double undef, ptr %arrayidx7, align 8
   %indvar.next2 = add i64 %indvar1, 1
   br i1 false, label %for.body4, label %for.end10
 

diff  --git a/polly/test/CodeGen/select-base-pointer.ll b/polly/test/CodeGen/select-base-pointer.ll
index 8659410f0a0ad..29bc40074e1f1 100644
--- a/polly/test/CodeGen/select-base-pointer.ll
+++ b/polly/test/CodeGen/select-base-pointer.ll
@@ -5,46 +5,43 @@
 ; ModuleID = 'bugpoint-reduced-simplified.bc'
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%"DOMParentNode" = type { %"DOMNode"*, %"DOMNode"*, %"DOMNodeListImpl" }
-%"DOMDocumentRange" = type { i32 (...)** }
-%"DOMXPathEvaluator" = type { i32 (...)** }
-%"DOMDocumentTraversal" = type { i32 (...)** }
-%"DOMNode" = type { i32 (...)** }
-%"DOMNodeListImpl" = type { %"DOMNodeList", %"DOMNode"* }
-%"DOMNodeList" = type { i32 (...)** }
-%"DOMElementImpl" = type { %"DOMElement", %"DOMNodeImpl", %"DOMParentNode", %"DOMChildNode", %"DOMAttrMapImpl"*, %"DOMAttrMapImpl"*, i16* }
+%"DOMParentNode" = type { ptr, ptr, %"DOMNodeListImpl" }
+%"DOMDocumentRange" = type { ptr }
+%"DOMXPathEvaluator" = type { ptr }
+%"DOMDocumentTraversal" = type { ptr }
+%"DOMNode" = type { ptr }
+%"DOMNodeListImpl" = type { %"DOMNodeList", ptr }
+%"DOMNodeList" = type { ptr }
+%"DOMElementImpl" = type { %"DOMElement", %"DOMNodeImpl", %"DOMParentNode", %"DOMChildNode", ptr, ptr, ptr }
 %"DOMElement" = type { %"DOMNode" }
-%"DOMNodeImpl" = type <{ %"DOMNode"*, i16, [6 x i8] }>
-%"DOMChildNode" = type { %"DOMNode"*, %"DOMNode"* }
+%"DOMNodeImpl" = type <{ ptr, i16, [6 x i8] }>
+%"DOMChildNode" = type { ptr, ptr }
 %"DOMAttrMapImpl" = type <{ %"DOMNamedNodeMapImpl", i8, [7 x i8] }>
-%"DOMNamedNodeMapImpl" = type { %"DOMNamedNodeMap", %"DOMNode"* }
-%"DOMNamedNodeMap" = type { i32 (...)** }
+%"DOMNamedNodeMapImpl" = type { %"DOMNamedNodeMap", ptr }
+%"DOMNamedNodeMap" = type { ptr }
 %"DOMTextImpl" = type { %"DOMText", %"DOMNodeImpl", %"DOMChildNode" }
 %"DOMText" = type { %"DOMCharacterData" }
 %"DOMCharacterData" = type { %"DOMNode" }
 
 ; Function Attrs: uwtable
-define void @_ZN11xercesc_2_513DOMParentNode9lastChildEPNS_7DOMNodeE(%"DOMParentNode"* %this, %"DOMNode"* %node) #0 align 2 {
+define void @_ZN11xercesc_2_513DOMParentNode9lastChildEPNS_7DOMNodeE(ptr %this, ptr %node) #0 align 2 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %fFirstChild = getelementptr inbounds %"DOMParentNode", %"DOMParentNode"* %this, i32 0, i32 1
-  %0 = load %"DOMNode"*, %"DOMNode"** %fFirstChild, align 8, !tbaa !1
-  %cmp = icmp ne %"DOMNode"* %0, null
+  %fFirstChild = getelementptr inbounds %"DOMParentNode", ptr %this, i32 0, i32 1
+  %0 = load ptr, ptr %fFirstChild, align 8, !tbaa !1
+  %cmp = icmp ne ptr %0, null
   br i1 %cmp, label %if.then, label %if.end
 
 if.then:                                          ; preds = %entry.split
-  %1 = bitcast %"DOMNode"* %0 to %"DOMElementImpl"*
-  %fNode.i = getelementptr inbounds %"DOMElementImpl", %"DOMElementImpl"* %1, i32 0, i32 1
-  %flags.i.i = getelementptr inbounds %"DOMNodeImpl", %"DOMNodeImpl"* %fNode.i, i32 0, i32 1
-  %2 = load i16, i16* %flags.i.i, align 8, !tbaa !7
-  %3 = bitcast %"DOMNode"* %0 to %"DOMTextImpl"*
-  %fChild.i = getelementptr inbounds %"DOMTextImpl", %"DOMTextImpl"* %3, i32 0, i32 2
-  %fChild1.i = getelementptr inbounds %"DOMElementImpl", %"DOMElementImpl"* %1, i32 0, i32 3
-  %retval.0.i = select i1 undef, %"DOMChildNode"* %fChild.i, %"DOMChildNode"* %fChild1.i
-  %previousSibling = getelementptr inbounds %"DOMChildNode", %"DOMChildNode"* %retval.0.i, i32 0, i32 0
-  store %"DOMNode"* %node, %"DOMNode"** %previousSibling, align 8, !tbaa !10
+  %fNode.i = getelementptr inbounds %"DOMElementImpl", ptr %0, i32 0, i32 1
+  %flags.i.i = getelementptr inbounds %"DOMNodeImpl", ptr %fNode.i, i32 0, i32 1
+  %1 = load i16, ptr %flags.i.i, align 8, !tbaa !7
+  %fChild.i = getelementptr inbounds %"DOMTextImpl", ptr %0, i32 0, i32 2
+  %fChild1.i = getelementptr inbounds %"DOMElementImpl", ptr %0, i32 0, i32 3
+  %retval.0.i = select i1 undef, ptr %fChild.i, ptr %fChild1.i
+  store ptr %node, ptr %retval.0.i, align 8, !tbaa !10
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %entry.split

diff  --git a/polly/test/CodeGen/sequential_loops.ll b/polly/test/CodeGen/sequential_loops.ll
index dd5e7005cbd7d..97d280de3cd20 100644
--- a/polly/test/CodeGen/sequential_loops.ll
+++ b/polly/test/CodeGen/sequential_loops.ll
@@ -33,7 +33,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"
 
- at A = common global [1024 x i32] zeroinitializer, align 4 ; <[1024 x i32]*> [#uses=5]
+ at A = common global [1024 x i32] zeroinitializer, align 4 ; <ptr> [#uses=5]
 
 define void @sequential_loops() nounwind {
 bb:
@@ -41,12 +41,12 @@ bb:
 
 bb1:                                              ; preds = %bb3, %bb
   %indvar1 = phi i64 [ %indvar.next2, %bb3 ], [ 0, %bb ]
-  %scevgep4 = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar1
+  %scevgep4 = getelementptr [1024 x i32], ptr @A, i64 0, i64 %indvar1
   %exitcond3 = icmp ne i64 %indvar1, 512
   br i1 %exitcond3, label %bb2, label %bb4
 
 bb2:                                              ; preds = %bb1
-  store i32 1, i32* %scevgep4
+  store i32 1, ptr %scevgep4
   br label %bb3
 
 bb3:                                              ; preds = %bb2
@@ -59,12 +59,12 @@ bb4:                                              ; preds = %bb1
 bb5:                                              ; preds = %bb7, %bb4
   %indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb4 ]
   %tmp = add i64 %indvar, 512
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %tmp
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %tmp
   %exitcond = icmp ne i64 %indvar, 512
   br i1 %exitcond, label %bb6, label %bb8
 
 bb6:                                              ; preds = %bb5
-  store i32 2, i32* %scevgep
+  store i32 2, ptr %scevgep
   br label %bb7
 
 bb7:                                              ; preds = %bb6
@@ -77,19 +77,19 @@ bb8:                                              ; preds = %bb5
 
 define i32 @main() nounwind {
 bb:
-  call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
+  call void @llvm.memset.p0.i64(ptr @A, i8 0, i64 4096, i32 1, i1 false)
   call void @sequential_loops()
   br label %bb1
 
 bb1:                                              ; preds = %bb15, %bb
   %indvar = phi i64 [ %indvar.next, %bb15 ], [ 0, %bb ]
   %i.0 = trunc i64 %indvar to i32
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %indvar
   %tmp = icmp slt i32 %i.0, 1024
   br i1 %tmp, label %bb2, label %bb16
 
 bb2:                                              ; preds = %bb1
-  %tmp3 = load i32, i32* %scevgep
+  %tmp3 = load i32, ptr %scevgep
   %tmp4 = icmp ne i32 %tmp3, 1
   br i1 %tmp4, label %bb5, label %bb8
 
@@ -101,7 +101,7 @@ bb7:                                              ; preds = %bb5
   br label %bb17
 
 bb8:                                              ; preds = %bb5, %bb2
-  %tmp9 = load i32, i32* %scevgep
+  %tmp9 = load i32, ptr %scevgep
   %tmp10 = icmp ne i32 %tmp9, 2
   br i1 %tmp10, label %bb11, label %bb14
 
@@ -127,7 +127,7 @@ bb17:                                             ; preds = %bb16, %bb13, %bb7
   ret i32 %.0
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind
 
 ; CHECK: {
 ; CHECK:   for (int c0 = 0; c0 <= 511; c0 += 1)

diff  --git a/polly/test/CodeGen/simple_loop_non_single_exit.ll b/polly/test/CodeGen/simple_loop_non_single_exit.ll
index 00bed097149bf..dc1b09b765a1a 100644
--- a/polly/test/CodeGen/simple_loop_non_single_exit.ll
+++ b/polly/test/CodeGen/simple_loop_non_single_exit.ll
@@ -9,7 +9,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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %next
@@ -19,8 +19,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/CodeGen/simple_loop_non_single_exit_2.ll b/polly/test/CodeGen/simple_loop_non_single_exit_2.ll
index e9d155cd06e03..178601cac9b86 100644
--- a/polly/test/CodeGen/simple_loop_non_single_exit_2.ll
+++ b/polly/test/CodeGen/simple_loop_non_single_exit_2.ll
@@ -10,7 +10,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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br i1 true, label %next, label %return
@@ -20,8 +20,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/CodeGen/simple_non_single_entry.ll b/polly/test/CodeGen/simple_non_single_entry.ll
index 154764e0cd280..3b4bf59bdc652 100644
--- a/polly/test/CodeGen/simple_non_single_entry.ll
+++ b/polly/test/CodeGen/simple_non_single_entry.ll
@@ -24,7 +24,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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br i1 true, label %then1, label %else1
@@ -36,8 +36,8 @@ else1:
   br label %next
 
 next:
-  %sg = getelementptr i64, i64* %A, i64 42
-  store i64 undef, i64* %sg
+  %sg = getelementptr i64, ptr %A, i64 42
+  store i64 undef, ptr %sg
   br i1 true, label %then, label %else
 
 then:
@@ -55,8 +55,8 @@ for.i.head1:
 for.i:
   %indvar = phi i64 [ 0, %for.i.head1], [ %indvar.next, %for.i ]
   fence seq_cst
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/CodeGen/simple_nonaffine_loop.ll b/polly/test/CodeGen/simple_nonaffine_loop.ll
index c0ae3a2f5adbe..d4e9c6082e6cd 100644
--- a/polly/test/CodeGen/simple_nonaffine_loop.ll
+++ b/polly/test/CodeGen/simple_nonaffine_loop.ll
@@ -33,8 +33,8 @@ for.body:                                         ; preds = %entry.split, %for.b
   %mul = mul i32 %0, 2
   %mul1 = mul nsw i32 %0, %0
   %idxprom1 = zext i32 %mul1 to i64
-  %arrayidx = getelementptr inbounds [1048576 x i32], [1048576 x i32]* %A, i64 0, i64 %idxprom1
-  store i32 %mul, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds [1048576 x i32], ptr %A, i64 0, i64 %idxprom1
+  store i32 %mul, ptr %arrayidx, align 4
   %1 = add nsw i32 %0, 1
   %exitcond = icmp ne i32 %1, 1024
   br i1 %exitcond, label %for.body, label %for.end
@@ -44,13 +44,13 @@ for.end:                                          ; preds = %for.body
   %rem = srem i32 %call, 1024
   %mul2 = shl nsw i32 %rem, 10
   %idxprom3 = sext i32 %mul2 to i64
-  %arrayidx4 = getelementptr inbounds [1048576 x i32], [1048576 x i32]* %A, i64 0, i64 %idxprom3
-  %2 = load i32, i32* %arrayidx4, align 16
-  %call5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), i32 %2) nounwind
+  %arrayidx4 = getelementptr inbounds [1048576 x i32], ptr %A, i64 0, i64 %idxprom3
+  %2 = load i32, ptr %arrayidx4, align 16
+  %call5 = call i32 (ptr, ...) @printf(ptr @.str, i32 %2) nounwind
   ret i32 0
 }
 
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
 
 declare i32 @rand()
 

diff  --git a/polly/test/CodeGen/simple_vec_assign_scalar.ll b/polly/test/CodeGen/simple_vec_assign_scalar.ll
index 6def8f137e745..ae8a75257ac66 100644
--- a/polly/test/CodeGen/simple_vec_assign_scalar.ll
+++ b/polly/test/CodeGen/simple_vec_assign_scalar.ll
@@ -30,15 +30,15 @@ bb:
 
 bb2:                                              ; preds = %bb5, %bb
   %indvar = phi i64 [ %indvar.next, %bb5 ], [ 0, %bb ]
-  %scevgep = getelementptr [1024 x float], [1024 x float]* @B, i64 0, i64 %indvar
-  %scevgep1 = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
+  %scevgep = getelementptr [1024 x float], ptr @B, i64 0, i64 %indvar
+  %scevgep1 = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
   %exitcond = icmp ne i64 %indvar, 4
   br i1 %exitcond, label %bb3, label %bb6
 
 bb3:                                              ; preds = %bb2
-  %tmp = load float, float* %scevgep1, align 4
+  %tmp = load float, ptr %scevgep1, align 4
   %tmp4 = fadd float %tmp, 1.000000e+00
-  store float %tmp4, float* %scevgep, align 4
+  store float %tmp4, ptr %scevgep, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb3
@@ -52,13 +52,13 @@ bb6:                                              ; preds = %bb2
 define i32 @main() nounwind {
 bb:
   call void @simple_vec_const()
-  %tmp = load float, float* getelementptr inbounds ([1024 x float], [1024 x float]* @A, i64 0, i64 42), align 8
+  %tmp = load float, ptr getelementptr inbounds ([1024 x float], ptr @A, i64 0, i64 42), align 8
   %tmp1 = fptosi float %tmp to i32
   ret i32 %tmp1
 }
 
 ; STRIPMINE-NOT: <4 x float>
 
-; CHECK: %tmp_p_vec_full = load <4 x float>, <4 x float>* bitcast ([1024 x float]* @A to <4 x float>*), align 8, !alias.scope !0, !noalias !3
+; CHECK: %tmp_p_vec_full = load <4 x float>, ptr @A, align 8, !alias.scope !0, !noalias !3
 ; CHECK: %tmp4p_vec = fadd <4 x float> %tmp_p_vec_full, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
-; CHECK: store <4 x float> %tmp4p_vec, <4 x float>* bitcast ([1024 x float]* @B to <4 x float>*)
+; CHECK: store <4 x float> %tmp4p_vec, ptr @B

diff  --git a/polly/test/CodeGen/simple_vec_assign_scalar_2.ll b/polly/test/CodeGen/simple_vec_assign_scalar_2.ll
index 6e957da789ffc..f26720f95df3a 100644
--- a/polly/test/CodeGen/simple_vec_assign_scalar_2.ll
+++ b/polly/test/CodeGen/simple_vec_assign_scalar_2.ll
@@ -27,17 +27,17 @@ bb:
 
 bb2:                                              ; preds = %bb6, %bb
   %indvar = phi i64 [ %indvar.next, %bb6 ], [ 0, %bb ]
-  %scevgep = getelementptr [1024 x float], [1024 x float]* @B, i64 0, i64 %indvar
+  %scevgep = getelementptr [1024 x float], ptr @B, i64 0, i64 %indvar
   %i.0 = trunc i64 %indvar to i32
-  %scevgep1 = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
+  %scevgep1 = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
   %exitcond = icmp ne i64 %indvar, 4
   br i1 %exitcond, label %bb3, label %bb7
 
 bb3:                                              ; preds = %bb2
-  %tmp = load float, float* %scevgep1, align 4
+  %tmp = load float, ptr %scevgep1, align 4
   %tmp4 = sitofp i32 %i.0 to float
   %tmp5 = fadd float %tmp, %tmp4
-  store float %tmp5, float* %scevgep, align 4
+  store float %tmp5, ptr %scevgep, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb3
@@ -51,7 +51,7 @@ bb7:                                              ; preds = %bb2
 define i32 @main() nounwind {
 bb:
   call void @simple_vec_const()
-  %tmp = load float, float* getelementptr inbounds ([1024 x float], [1024 x float]* @A, i64 0, i64 42), align 8
+  %tmp = load float, ptr getelementptr inbounds ([1024 x float], ptr @A, i64 0, i64 42), align 8
   %tmp1 = fptosi float %tmp to i32
   ret i32 %tmp1
 }

diff  --git a/polly/test/CodeGen/simple_vec_large_width.ll b/polly/test/CodeGen/simple_vec_large_width.ll
index 6b5b6e287bf31..4ad3b89876165 100644
--- a/polly/test/CodeGen/simple_vec_large_width.ll
+++ b/polly/test/CodeGen/simple_vec_large_width.ll
@@ -10,14 +10,14 @@ define void @simple_vec_large_width() nounwind {
 
 ; <label>:1                                       ; preds = %4, %0
   %indvar = phi i64 [ %indvar.next, %4 ], [ 0, %0 ]
-  %scevgep = getelementptr [1024 x float], [1024 x float]* @B, i64 0, i64 %indvar
-  %scevgep1 = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
+  %scevgep = getelementptr [1024 x float], ptr @B, i64 0, i64 %indvar
+  %scevgep1 = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
   %exitcond = icmp ne i64 %indvar, 15
   br i1 %exitcond, label %2, label %5
 
 ; <label>:2                                       ; preds = %1
-  %3 = load float, float* %scevgep1, align 4
-  store float %3, float* %scevgep, align 4
+  %3 = load float, ptr %scevgep1, align 4
+  store float %3, ptr %scevgep, align 4
   br label %4
 
 ; <label>:4                                       ; preds = %2
@@ -30,10 +30,10 @@ define void @simple_vec_large_width() nounwind {
 
 define i32 @main() nounwind {
   call void @simple_vec_large_width()
-  %1 = load float, float* getelementptr inbounds ([1024 x float], [1024 x float]* @A, i64 0, i64 42), align 8
+  %1 = load float, ptr getelementptr inbounds ([1024 x float], ptr @A, i64 0, i64 42), align 8
   %2 = fptosi float %1 to i32
   ret i32 %2
 }
 
-; CHECK: [[VEC1:%[a-zA-Z0-9_]+_full]] = load <15 x float>, <15 x float>*
+; CHECK: [[VEC1:%[a-zA-Z0-9_]+_full]] = load <15 x float>, ptr
 ; CHECK: store <15 x float> [[VEC1]]

diff  --git a/polly/test/CodeGen/simple_vec_stride_negative_one.ll b/polly/test/CodeGen/simple_vec_stride_negative_one.ll
index 59890c14b5d01..79ecf657d8902 100644
--- a/polly/test/CodeGen/simple_vec_stride_negative_one.ll
+++ b/polly/test/CodeGen/simple_vec_stride_negative_one.ll
@@ -19,10 +19,10 @@ entry:
 
 for.body:                                         ; preds = %entry, %for.body
   %indvars.iv = phi i64 [ 3, %entry ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds [100 x i32], [100 x i32]* @A, i64 0, i64 %indvars.iv
-  %0 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds [100 x i32], ptr @A, i64 0, i64 %indvars.iv
+  %0 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %0, 1
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   %indvars.iv.next = add nsw i64 %indvars.iv, -1
   %1 = trunc i64 %indvars.iv to i32
   %cmp = icmp sgt i32 %1, 0
@@ -33,5 +33,5 @@ for.end:                                          ; preds = %for.body
 }
 
 ; CHECK: @foo
-; CHECK: [[LOAD:%[a-zA-Z0-9_]+]] = load <4 x i32>, <4 x i32>*
+; CHECK: [[LOAD:%[a-zA-Z0-9_]+]] = load <4 x i32>, ptr
 ; CHECK: [[REVERSE_LOAD:%[a-zA-Z0-9_]+reverse]] = shufflevector <4 x i32> [[LOAD]], <4 x i32> [[LOAD]], <4 x i32> <i32 3, i32 2, i32 1, i32 0>

diff  --git a/polly/test/CodeGen/simple_vec_stride_x.ll b/polly/test/CodeGen/simple_vec_stride_x.ll
index 5156a598b84fd..20a8e8a3bbcc4 100644
--- a/polly/test/CodeGen/simple_vec_stride_x.ll
+++ b/polly/test/CodeGen/simple_vec_stride_x.ll
@@ -28,14 +28,14 @@ bb:
 bb2:                                              ; preds = %bb5, %bb
   %indvar = phi i64 [ %indvar.next, %bb5 ], [ 0, %bb ]
   %tmp = mul i64 %indvar, 2
-  %scevgep = getelementptr [1024 x float], [1024 x float]* @B, i64 0, i64 %tmp
-  %scevgep1 = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %tmp
+  %scevgep = getelementptr [1024 x float], ptr @B, i64 0, i64 %tmp
+  %scevgep1 = getelementptr [1024 x float], ptr @A, i64 0, i64 %tmp
   %exitcond = icmp ne i64 %indvar, 4
   br i1 %exitcond, label %bb3, label %bb6
 
 bb3:                                              ; preds = %bb2
-  %tmp4 = load float, float* %scevgep1, align 8
-  store float %tmp4, float* %scevgep, align 8
+  %tmp4 = load float, ptr %scevgep1, align 8
+  store float %tmp4, ptr %scevgep, align 8
   br label %bb5
 
 bb5:                                              ; preds = %bb3
@@ -49,18 +49,18 @@ bb6:                                              ; preds = %bb2
 define i32 @main() nounwind {
 bb:
   call void @simple_vec_stride_x()
-  %tmp = load float, float* getelementptr inbounds ([1024 x float], [1024 x float]* @A, i64 0, i64 42), align 8
+  %tmp = load float, ptr getelementptr inbounds ([1024 x float], ptr @A, i64 0, i64 42), align 8
   %tmp1 = fptosi float %tmp to i32
   ret i32 %tmp1
 }
 
-; CHECK: [[LOAD1:%[a-zA-Z0-9_]+_scalar_]] = load float, float*
+; CHECK: [[LOAD1:%[a-zA-Z0-9_]+_scalar_]] = load float, ptr
 ; CHECK: [[VEC1:%[a-zA-Z0-9_]+]] = insertelement <4 x float> undef, float [[LOAD1]], i32 0
-; CHECK: [[LOAD2:%[a-zA-Z0-9_]+]] = load float, float*
+; CHECK: [[LOAD2:%[a-zA-Z0-9_]+]] = load float, ptr
 ; CHECK: [[VEC2:%[a-zA-Z0-9_]+]] = insertelement <4 x float> [[VEC1]], float [[LOAD2]], i32 1
-; CHECK: [[LOAD3:%[a-zA-Z0-9_]+]] = load float, float*
+; CHECK: [[LOAD3:%[a-zA-Z0-9_]+]] = load float, ptr
 ; CHECK: [[VEC3:%[a-zA-Z0-9_]+]] = insertelement <4 x float> [[VEC2]], float [[LOAD3]], i32 2
-; CHECK: [[LOAD4:%[a-zA-Z0-9_]+]] = load float, float*
+; CHECK: [[LOAD4:%[a-zA-Z0-9_]+]] = load float, ptr
 ; CHECK: [[VEC4:%[a-zA-Z0-9_]+]] = insertelement <4 x float> [[VEC3]], float [[LOAD4]], i32 3
 ; CHECK: [[EL1:%[a-zA-Z0-9_]+]] = extractelement <4 x float> [[VEC4]], i32 0
 ; CHECK: store float [[EL1]]

diff  --git a/polly/test/CodeGen/simple_vec_strides_multidim.ll b/polly/test/CodeGen/simple_vec_strides_multidim.ll
index 6c8cc4669bc5b..98837af2fbc82 100644
--- a/polly/test/CodeGen/simple_vec_strides_multidim.ll
+++ b/polly/test/CodeGen/simple_vec_strides_multidim.ll
@@ -21,7 +21,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n, float* noalias %A, float* noalias %B, float* noalias %C, float* noalias %D) {
+define void @foo(i64 %n, ptr noalias %A, ptr noalias %B, ptr noalias %C, ptr noalias %D) {
 bb:
   br label %bb3
 
@@ -40,24 +40,24 @@ bb5:                                              ; preds = %bb22, %bb4
 
 bb6:                                              ; preds = %bb5
   %tmp = mul nsw i64 %i.0, %n
-  %tmp7 = getelementptr inbounds float, float* %B, i64 %tmp
-  %tmp8 = load float, float* %tmp7, align 4
+  %tmp7 = getelementptr inbounds float, ptr %B, i64 %tmp
+  %tmp8 = load float, ptr %tmp7, align 4
   %tmp9 = shl nsw i64 %j.0, 1
   %tmp10 = mul nsw i64 %i.0, %n
   %.sum = add i64 %tmp10, %tmp9
-  %tmp11 = getelementptr inbounds float, float* %C, i64 %.sum
-  %tmp12 = load float, float* %tmp11, align 4
+  %tmp11 = getelementptr inbounds float, ptr %C, i64 %.sum
+  %tmp12 = load float, ptr %tmp11, align 4
   %tmp13 = fadd float %tmp8, %tmp12
   %tmp14 = mul nsw i64 %j.0, %n
-  %tmp15 = getelementptr inbounds float, float* %D, i64 %tmp14
-  %tmp16 = load float, float* %tmp15, align 4
+  %tmp15 = getelementptr inbounds float, ptr %D, i64 %tmp14
+  %tmp16 = load float, ptr %tmp15, align 4
   %tmp17 = fadd float %tmp13, %tmp16
   %tmp18 = mul nsw i64 %i.0, %n
   %.sum1 = add i64 %tmp18, %j.0
-  %tmp19 = getelementptr inbounds float, float* %A, i64 %.sum1
-  %tmp20 = load float, float* %tmp19, align 4
+  %tmp19 = getelementptr inbounds float, ptr %A, i64 %.sum1
+  %tmp20 = load float, ptr %tmp19, align 4
   %tmp21 = fadd float %tmp20, %tmp17
-  store float %tmp21, float* %tmp19, align 4
+  store float %tmp21, ptr %tmp19, align 4
   br label %bb22
 
 bb22:                                             ; preds = %bb6

diff  --git a/polly/test/CodeGen/simple_vec_two_stmts.ll b/polly/test/CodeGen/simple_vec_two_stmts.ll
index a53a4a00ec7e9..14c12c4887b53 100644
--- a/polly/test/CodeGen/simple_vec_two_stmts.ll
+++ b/polly/test/CodeGen/simple_vec_two_stmts.ll
@@ -11,20 +11,20 @@ bb0:
 
 bb1:
   %indvar = phi i64 [ %indvar.next, %bb4 ], [ 0, %bb0 ]
-  %scevgep = getelementptr [1024 x float], [1024 x float]* @B, i64 0, i64 %indvar
-  %scevgep2 = getelementptr [1024 x float], [1024 x float]* @C, i64 0, i64 %indvar
-  %scevgep1 = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
+  %scevgep = getelementptr [1024 x float], ptr @B, i64 0, i64 %indvar
+  %scevgep2 = getelementptr [1024 x float], ptr @C, i64 0, i64 %indvar
+  %scevgep1 = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
   %exitcond = icmp ne i64 %indvar, 4
   br i1 %exitcond, label %bb2a, label %bb5
 
 bb2a:
-  %tmp1 = load float, float* %scevgep1, align 4
-  store float %tmp1, float* %scevgep, align 4
+  %tmp1 = load float, ptr %scevgep1, align 4
+  store float %tmp1, ptr %scevgep, align 4
   br label %bb2b
 
 bb2b:
-  %tmp2 = load float, float* %scevgep1, align 4
-  store float %tmp2, float* %scevgep2, align 4
+  %tmp2 = load float, ptr %scevgep1, align 4
+  store float %tmp2, ptr %scevgep2, align 4
   br label %bb4
 
 bb4:
@@ -37,13 +37,13 @@ bb5:
 
 define i32 @main() nounwind {
   call void @simple_vec_stride_one()
-  %1 = load float, float* getelementptr inbounds ([1024 x float], [1024 x float]* @A, i64 0, i64 42), align 8
+  %1 = load float, ptr getelementptr inbounds ([1024 x float], ptr @A, i64 0, i64 42), align 8
   %2 = fptosi float %1 to i32
   ret i32 %2
 }
 
-; CHECK: [[LOAD1:%[a-zA-Z0-9_]+_full]] = load <4 x float>, <4 x float>*
+; CHECK: [[LOAD1:%[a-zA-Z0-9_]+_full]] = load <4 x float>, ptr
 ; CHECK: store <4 x float> [[LOAD1]]
-; CHECK: [[LOAD2:%[a-zA-Z0-9_]+_full]] = load <4 x float>, <4 x float>*
+; CHECK: [[LOAD2:%[a-zA-Z0-9_]+_full]] = load <4 x float>, ptr
 ; CHECK: store <4 x float> [[LOAD2]]
 

diff  --git a/polly/test/CodeGen/single_do_loop_int_max_iterations.ll b/polly/test/CodeGen/single_do_loop_int_max_iterations.ll
index 3fcd9c2d28782..9648fbe1cf125 100644
--- a/polly/test/CodeGen/single_do_loop_int_max_iterations.ll
+++ b/polly/test/CodeGen/single_do_loop_int_max_iterations.ll
@@ -37,12 +37,12 @@
 
 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"
 
-%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
-%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
+%struct._IO_FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i64, i32, [20 x i8] }
+%struct._IO_marker = type { ptr, ptr, i32 }
 
- at A = common global [20 x i32] zeroinitializer, align 4 ; <[20 x i32]*> [#uses=1]
- at stdout = external global %struct._IO_FILE*       ; <%struct._IO_FILE**> [#uses=1]
- at .str = private constant [11 x i8] c"Output %d\0A\00" ; <[11 x i8]*> [#uses=1]
+ at A = common global [20 x i32] zeroinitializer, align 4 ; <ptr> [#uses=1]
+ at stdout = external global ptr       ; <ptr> [#uses=1]
+ at .str = private constant [11 x i8] c"Output %d\0A\00" ; <ptr> [#uses=1]
 
 define void @single_do_loop_int_max_iterations() nounwind {
 entry:
@@ -51,7 +51,7 @@ entry:
 
 do.body:                                          ; preds = %do.cond, %entry
   %0 = phi i32 [ 0, %entry ], [ %inc, %do.cond ]  ; <i32> [#uses=2]
-  store i32 %0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @A, i32 0, i32 0)
+  store i32 %0, ptr @A
   %inc = add nsw i32 %0, 1                        ; <i32> [#uses=2]
   br label %do.cond
 
@@ -66,12 +66,12 @@ do.end:                                           ; preds = %do.cond
 
 define i32 @main() nounwind {
 entry:
-  store i32 0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @A, i32 0, i32 0)
+  store i32 0, ptr @A
   call void @single_do_loop_int_max_iterations()
-  %tmp = load %struct._IO_FILE*, %struct._IO_FILE** @stdout          ; <%struct._IO_FILE*> [#uses=1]
-  %tmp1 = load i32, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
-  %call = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %tmp, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i32 %tmp1) ; <i32> [#uses=0]
-  %tmp2 = load i32, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
+  %tmp = load ptr, ptr @stdout          ; <ptr> [#uses=1]
+  %tmp1 = load i32, ptr @A ; <i32> [#uses=1]
+  %call = call i32 (ptr, ptr, ...) @fprintf(ptr %tmp, ptr @.str, i32 %tmp1) ; <i32> [#uses=0]
+  %tmp2 = load i32, ptr @A ; <i32> [#uses=1]
   %cmp = icmp eq i32 %tmp2, 2147483646            ; <i1> [#uses=1]
   br i1 %cmp, label %if.then, label %if.else
 
@@ -86,7 +86,7 @@ return:                                           ; preds = %if.else, %if.then
   ret i32 %retval.0
 }
 
-declare i32 @fprintf(%struct._IO_FILE*, i8*, ...)
+declare i32 @fprintf(ptr, ptr, ...)
 
 ; CHECK: for (int c0 = 0; c0 <= 2147483646; c0 += 1)
 ; CHECK:   Stmt_do_body(c0);

diff  --git a/polly/test/CodeGen/single_do_loop_int_param_iterations.ll b/polly/test/CodeGen/single_do_loop_int_param_iterations.ll
index 301b30cf96a06..f28d828a5da02 100644
--- a/polly/test/CodeGen/single_do_loop_int_param_iterations.ll
+++ b/polly/test/CodeGen/single_do_loop_int_param_iterations.ll
@@ -29,7 +29,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"
 
- at A = common global [20 x i32] zeroinitializer, align 4 ; <[20 x i32]*> [#uses=1]
+ at A = common global [20 x i32] zeroinitializer, align 4 ; <ptr> [#uses=1]
 
 define void @bar(i32 %n) nounwind {
 entry:
@@ -41,7 +41,7 @@ entry:
 
 do.body:                                          ; preds = %do.cond, %entry
   %0 = phi i32 [ 0, %entry ], [ %inc, %do.cond ]  ; <i32> [#uses=2]
-  store i32 %0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @A, i32 0, i32 0)
+  store i32 %0, ptr @A
   %inc = add nsw i32 %0, 1                        ; <i32> [#uses=2]
   br label %do.cond
 
@@ -56,9 +56,9 @@ do.end:                                           ; preds = %do.cond
 
 define i32 @main() nounwind {
 entry:
-  store i32 0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @A, i32 0, i32 0)
+  store i32 0, ptr @A
   call void @bar(i32 10)
-  %tmp = load i32, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
+  %tmp = load i32, ptr @A ; <i32> [#uses=1]
   %cmp = icmp eq i32 %tmp, 19                     ; <i1> [#uses=1]
   br i1 %cmp, label %if.then, label %if.else
 

diff  --git a/polly/test/CodeGen/single_do_loop_ll_max_iterations.ll b/polly/test/CodeGen/single_do_loop_ll_max_iterations.ll
index 4e806d69e5a58..68aaab96083ae 100644
--- a/polly/test/CodeGen/single_do_loop_ll_max_iterations.ll
+++ b/polly/test/CodeGen/single_do_loop_ll_max_iterations.ll
@@ -29,17 +29,17 @@
 
 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"
 
- at A = common global [20 x i64] zeroinitializer, align 8 ; <[20 x i64]*> [#uses=1]
+ at A = common global [20 x i64] zeroinitializer, align 8 ; <ptr> [#uses=1]
 
 define i32 @main() nounwind {
 entry:
-  store i64 0, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @A, i32 0, i32 0)
+  store i64 0, ptr @A
   fence seq_cst
   br label %do.body
 
 do.body:                                          ; preds = %do.cond, %entry
   %0 = phi i64 [ 0, %entry ], [ %inc, %do.cond ]  ; <i64> [#uses=2]
-  store i64 %0, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @A, i32 0, i32 0)
+  store i64 %0, ptr @A
   %inc = add nsw i64 %0, 1                        ; <i64> [#uses=2]
   br label %do.cond
 
@@ -49,7 +49,7 @@ do.cond:                                          ; preds = %do.body
 
 do.end:                                           ; preds = %do.cond
   fence seq_cst
-  %tmp3 = load i64, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @A, i32 0, i32 0) ; <i64> [#uses=1]
+  %tmp3 = load i64, ptr @A ; <i64> [#uses=1]
   %cmp4 = icmp eq i64 %tmp3, 9223372036854775806  ; <i1> [#uses=1]
   br i1 %cmp4, label %if.then, label %if.else
 

diff  --git a/polly/test/CodeGen/single_do_loop_one_iteration.ll b/polly/test/CodeGen/single_do_loop_one_iteration.ll
index afe015e66bcbd..9d97cb8547347 100644
--- a/polly/test/CodeGen/single_do_loop_one_iteration.ll
+++ b/polly/test/CodeGen/single_do_loop_one_iteration.ll
@@ -31,17 +31,17 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 entry:
-  %A = alloca [20 x i32], align 4                 ; <[20 x i32]*> [#uses=3]
-  %arraydecay = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx = getelementptr inbounds i32, i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
-  store i32 1, i32* %arrayidx
+  %A = alloca [20 x i32], align 4                 ; <ptr> [#uses=3]
+  %arraydecay = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx = getelementptr inbounds i32, ptr %arraydecay, i64 0 ; <ptr> [#uses=1]
+  store i32 1, ptr %arrayidx
   fence seq_cst
   br label %do.body
 
 do.body:                                          ; preds = %do.cond, %entry
-  %arraydecay1 = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx2 = getelementptr inbounds i32, i32* %arraydecay1, i64 0 ; <i32*> [#uses=1]
-  store i32 0, i32* %arrayidx2
+  %arraydecay1 = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx2 = getelementptr inbounds i32, ptr %arraydecay1, i64 0 ; <ptr> [#uses=1]
+  store i32 0, ptr %arrayidx2
   br label %do.cond
 
 do.cond:                                          ; preds = %do.body
@@ -49,9 +49,9 @@ do.cond:                                          ; preds = %do.body
 
 do.end:                                           ; preds = %do.cond
   fence seq_cst
-  %arraydecay4 = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx5 = getelementptr inbounds i32, i32* %arraydecay4, i64 0 ; <i32*> [#uses=1]
-  %tmp6 = load i32, i32* %arrayidx5                    ; <i32> [#uses=1]
+  %arraydecay4 = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx5 = getelementptr inbounds i32, ptr %arraydecay4, i64 0 ; <ptr> [#uses=1]
+  %tmp6 = load i32, ptr %arrayidx5                    ; <i32> [#uses=1]
   %cmp7 = icmp eq i32 %tmp6, 0                    ; <i1> [#uses=1]
   br i1 %cmp7, label %if.then, label %if.else
 

diff  --git a/polly/test/CodeGen/single_do_loop_scev_replace.ll b/polly/test/CodeGen/single_do_loop_scev_replace.ll
index 23e8dd2d3bd08..7963d9d29fe82 100644
--- a/polly/test/CodeGen/single_do_loop_scev_replace.ll
+++ b/polly/test/CodeGen/single_do_loop_scev_replace.ll
@@ -35,12 +35,12 @@
 
 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"
 
-%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
-%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
+%struct._IO_FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i64, i32, [20 x i8] }
+%struct._IO_marker = type { ptr, ptr, i32 }
 
- at A = common global [40 x i32] zeroinitializer, align 4 ; <[40 x i32]*> [#uses=3]
- at stdout = external global %struct._IO_FILE*       ; <%struct._IO_FILE**> [#uses=1]
- at .str = private constant [11 x i8] c"Output %d\0A\00" ; <[11 x i8]*> [#uses=1]
+ at A = common global [40 x i32] zeroinitializer, align 4 ; <ptr> [#uses=3]
+ at stdout = external global ptr       ; <ptr> [#uses=1]
+ at .str = private constant [11 x i8] c"Output %d\0A\00" ; <ptr> [#uses=1]
 
 define void @single_do_loop_scev_replace() nounwind {
 entry:
@@ -50,12 +50,12 @@ entry:
 do.body:                                          ; preds = %do.cond, %entry
   %indvar = phi i64 [ %indvar.next, %do.cond ], [ 0, %entry ] ; <i64> [#uses=3]
   %tmp = mul i64 %indvar, 2                       ; <i64> [#uses=1]
-  %arrayidx = getelementptr [40 x i32], [40 x i32]* @A, i64 0, i64 %tmp ; <i32*> [#uses=1]
+  %arrayidx = getelementptr [40 x i32], ptr @A, i64 0, i64 %tmp ; <ptr> [#uses=1]
   %i.0 = trunc i64 %indvar to i32                 ; <i32> [#uses=1]
   br label %do.cond
 
 do.cond:                                          ; preds = %do.body
-  store i32 %i.0, i32* %arrayidx
+  store i32 %i.0, ptr %arrayidx
   %indvar.next = add i64 %indvar, 1               ; <i64> [#uses=2]
   %exitcond = icmp ne i64 %indvar.next, 20        ; <i1> [#uses=1]
   br i1 %exitcond, label %do.body, label %do.end
@@ -68,10 +68,10 @@ do.end:                                           ; preds = %do.cond
 define i32 @main() nounwind {
 entry:
   call void @single_do_loop_scev_replace()
-  %tmp = load %struct._IO_FILE*, %struct._IO_FILE** @stdout          ; <%struct._IO_FILE*> [#uses=1]
-  %tmp1 = load i32, i32* getelementptr inbounds ([40 x i32], [40 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
-  %call = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %tmp, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i32 %tmp1) ; <i32> [#uses=0]
-  %tmp2 = load i32, i32* getelementptr inbounds ([40 x i32], [40 x i32]* @A, i32 0, i64 38) ; <i32> [#uses=1]
+  %tmp = load ptr, ptr @stdout          ; <ptr> [#uses=1]
+  %tmp1 = load i32, ptr @A ; <i32> [#uses=1]
+  %call = call i32 (ptr, ptr, ...) @fprintf(ptr %tmp, ptr @.str, i32 %tmp1) ; <i32> [#uses=0]
+  %tmp2 = load i32, ptr getelementptr inbounds ([40 x i32], ptr @A, i32 0, i64 38) ; <i32> [#uses=1]
   %cmp = icmp eq i32 %tmp2, 19                    ; <i1> [#uses=1]
   br i1 %cmp, label %if.then, label %if.else
 
@@ -86,7 +86,7 @@ return:                                           ; preds = %if.else, %if.then
   ret i32 %retval.0
 }
 
-declare i32 @fprintf(%struct._IO_FILE*, i8*, ...)
+declare i32 @fprintf(ptr, ptr, ...)
 
 ; CHECK: for (int c0 = 0; c0 <= 19; c0 += 1)
 ; CHECK:   Stmt_do_cond(c0);

diff  --git a/polly/test/CodeGen/single_loop.ll b/polly/test/CodeGen/single_loop.ll
index bd5a5724349fd..68cc498b43e02 100644
--- a/polly/test/CodeGen/single_loop.ll
+++ b/polly/test/CodeGen/single_loop.ll
@@ -25,20 +25,19 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 entry:
-  %A = alloca [1024 x i32], align 4               ; <[1024 x i32]*> [#uses=3]
-  %arraydecay = getelementptr inbounds [1024 x i32], [1024 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %conv = bitcast i32* %arraydecay to i8*         ; <i8*> [#uses=1]
-  call void @llvm.memset.p0i8.i64(i8* %conv, i8 0, i64 4096, i32 1, i1 false)
+  %A = alloca [1024 x i32], align 4               ; <ptr> [#uses=3]
+  %arraydecay = getelementptr inbounds [1024 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  call void @llvm.memset.p0.i64(ptr %arraydecay, i8 0, i64 4096, i32 1, i1 false)
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
   %indvar1 = phi i64 [ %indvar.next2, %for.inc ], [ 0, %entry ] ; <i64> [#uses=3]
-  %arrayidx = getelementptr [1024 x i32], [1024 x i32]* %A, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
+  %arrayidx = getelementptr [1024 x i32], ptr %A, i64 0, i64 %indvar1 ; <ptr> [#uses=1]
   %exitcond = icmp ne i64 %indvar1, 1024          ; <i1> [#uses=1]
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 1, i32* %arrayidx
+  store i32 1, ptr %arrayidx
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -50,13 +49,13 @@ for.end:                                          ; preds = %for.cond
 
 for.cond5:                                        ; preds = %for.inc07, %for.end
   %indvar = phi i64 [ %indvar.next, %for.inc07 ], [ 0, %for.end ] ; <i64> [#uses=3]
-  %arrayidx13 = getelementptr [1024 x i32], [1024 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=1]
+  %arrayidx13 = getelementptr [1024 x i32], ptr %A, i64 0, i64 %indvar ; <ptr> [#uses=1]
   %i.1 = trunc i64 %indvar to i32                 ; <i32> [#uses=1]
   %cmp7 = icmp slt i32 %i.1, 1024                 ; <i1> [#uses=1]
   br i1 %cmp7, label %for.body9, label %for.end20
 
 for.body9:                                        ; preds = %for.cond5
-  %tmp14 = load i32, i32* %arrayidx13                  ; <i32> [#uses=1]
+  %tmp14 = load i32, ptr %arrayidx13                  ; <i32> [#uses=1]
   %cmp15 = icmp ne i32 %tmp14, 1                  ; <i1> [#uses=1]
   br i1 %cmp15, label %if.then, label %if.end
 
@@ -78,7 +77,7 @@ return:                                           ; preds = %for.end20, %if.then
   ret i32 %retval.0
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind
 
 ; CHECK: for (int c0 = 0; c0 <= 1023; c0 += 1)
 ; CHECK:   Stmt_for_body(c0);

diff  --git a/polly/test/CodeGen/single_loop_int_max_iterations.ll b/polly/test/CodeGen/single_loop_int_max_iterations.ll
index 9a12cd4fce8d5..bfb5e4ab26985 100644
--- a/polly/test/CodeGen/single_loop_int_max_iterations.ll
+++ b/polly/test/CodeGen/single_loop_int_max_iterations.ll
@@ -26,10 +26,10 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 entry:
-  %A = alloca [20 x i32], align 4                 ; <[20 x i32]*> [#uses=3]
-  %arraydecay = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx = getelementptr inbounds i32, i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
-  store i32 0, i32* %arrayidx
+  %A = alloca [20 x i32], align 4                 ; <ptr> [#uses=3]
+  %arraydecay = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx = getelementptr inbounds i32, ptr %arraydecay, i64 0 ; <ptr> [#uses=1]
+  store i32 0, ptr %arrayidx
   fence seq_cst
   br label %for.cond
 
@@ -39,9 +39,9 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arraydecay2 = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx3 = getelementptr inbounds i32, i32* %arraydecay2, i64 0 ; <i32*> [#uses=1]
-  store i32 %0, i32* %arrayidx3
+  %arraydecay2 = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx3 = getelementptr inbounds i32, ptr %arraydecay2, i64 0 ; <ptr> [#uses=1]
+  store i32 %0, ptr %arrayidx3
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -50,9 +50,9 @@ for.inc:                                          ; preds = %for.body
 
 for.end:                                          ; preds = %for.cond
   fence seq_cst
-  %arraydecay5 = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx6 = getelementptr inbounds i32, i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
-  %tmp7 = load i32, i32* %arrayidx6                    ; <i32> [#uses=1]
+  %arraydecay5 = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx6 = getelementptr inbounds i32, ptr %arraydecay5, i64 0 ; <ptr> [#uses=1]
+  %tmp7 = load i32, ptr %arrayidx6                    ; <i32> [#uses=1]
   %cmp8 = icmp eq i32 %tmp7, 2147483646           ; <i1> [#uses=1]
   br i1 %cmp8, label %if.then, label %if.else
 

diff  --git a/polly/test/CodeGen/single_loop_ll_max_iterations.ll b/polly/test/CodeGen/single_loop_ll_max_iterations.ll
index 8d16285fca93d..bdfd7fce4204d 100644
--- a/polly/test/CodeGen/single_loop_ll_max_iterations.ll
+++ b/polly/test/CodeGen/single_loop_ll_max_iterations.ll
@@ -26,10 +26,10 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 entry:
-  %A = alloca [20 x i64], align 8                 ; <[20 x i64]*> [#uses=3]
-  %arraydecay = getelementptr inbounds [20 x i64], [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
-  %arrayidx = getelementptr inbounds i64, i64* %arraydecay, i64 0 ; <i64*> [#uses=1]
-  store i64 0, i64* %arrayidx
+  %A = alloca [20 x i64], align 8                 ; <ptr> [#uses=3]
+  %arraydecay = getelementptr inbounds [20 x i64], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx = getelementptr inbounds i64, ptr %arraydecay, i64 0 ; <ptr> [#uses=1]
+  store i64 0, ptr %arrayidx
   fence seq_cst
   br label %for.cond
 
@@ -39,9 +39,9 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arraydecay2 = getelementptr inbounds [20 x i64], [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
-  %arrayidx3 = getelementptr inbounds i64, i64* %arraydecay2, i64 0 ; <i64*> [#uses=1]
-  store i64 %0, i64* %arrayidx3
+  %arraydecay2 = getelementptr inbounds [20 x i64], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx3 = getelementptr inbounds i64, ptr %arraydecay2, i64 0 ; <ptr> [#uses=1]
+  store i64 %0, ptr %arrayidx3
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -50,9 +50,9 @@ for.inc:                                          ; preds = %for.body
 
 for.end:                                          ; preds = %for.cond
   fence seq_cst
-  %arraydecay5 = getelementptr inbounds [20 x i64], [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
-  %arrayidx6 = getelementptr inbounds i64, i64* %arraydecay5, i64 0 ; <i64*> [#uses=1]
-  %tmp7 = load i64, i64* %arrayidx6                    ; <i64> [#uses=1]
+  %arraydecay5 = getelementptr inbounds [20 x i64], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx6 = getelementptr inbounds i64, ptr %arraydecay5, i64 0 ; <ptr> [#uses=1]
+  %tmp7 = load i64, ptr %arrayidx6                    ; <i64> [#uses=1]
   %cmp8 = icmp eq i64 %tmp7, 9223372036854775806  ; <i1> [#uses=1]
   br i1 %cmp8, label %if.then, label %if.else
 

diff  --git a/polly/test/CodeGen/single_loop_one_iteration.ll b/polly/test/CodeGen/single_loop_one_iteration.ll
index 21412f9975329..7d4dd590fab95 100644
--- a/polly/test/CodeGen/single_loop_one_iteration.ll
+++ b/polly/test/CodeGen/single_loop_one_iteration.ll
@@ -25,21 +25,21 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 entry:
-  %A = alloca [20 x i32], align 4                 ; <[20 x i32]*> [#uses=3]
-  %arraydecay = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx = getelementptr inbounds i32, i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
-  store i32 0, i32* %arrayidx
+  %A = alloca [20 x i32], align 4                 ; <ptr> [#uses=3]
+  %arraydecay = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx = getelementptr inbounds i32, ptr %arraydecay, i64 0 ; <ptr> [#uses=1]
+  store i32 0, ptr %arrayidx
   fence seq_cst
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
   %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ] ; <i64> [#uses=3]
-  %arrayidx3 = getelementptr [20 x i32], [20 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=1]
+  %arrayidx3 = getelementptr [20 x i32], ptr %A, i64 0, i64 %indvar ; <ptr> [#uses=1]
   %exitcond = icmp ne i64 %indvar, 1              ; <i1> [#uses=1]
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 1, i32* %arrayidx3
+  store i32 1, ptr %arrayidx3
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -48,9 +48,9 @@ for.inc:                                          ; preds = %for.body
 
 for.end:                                          ; preds = %for.cond
   fence seq_cst
-  %arraydecay5 = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx6 = getelementptr inbounds i32, i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
-  %tmp7 = load i32, i32* %arrayidx6                    ; <i32> [#uses=1]
+  %arraydecay5 = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx6 = getelementptr inbounds i32, ptr %arraydecay5, i64 0 ; <ptr> [#uses=1]
+  %tmp7 = load i32, ptr %arrayidx6                    ; <i32> [#uses=1]
   %cmp8 = icmp eq i32 %tmp7, 1                    ; <i1> [#uses=1]
   br i1 %cmp8, label %if.then, label %if.else
 

diff  --git a/polly/test/CodeGen/single_loop_param.ll b/polly/test/CodeGen/single_loop_param.ll
index 4167e40b0d6f3..5d72da354fdc3 100644
--- a/polly/test/CodeGen/single_loop_param.ll
+++ b/polly/test/CodeGen/single_loop_param.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
 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"
 
- at A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=3]
+ at A = common global [1024 x i32] zeroinitializer, align 16 ; <ptr> [#uses=3]
 
 define void @bar(i64 %n) nounwind {
 bb:
@@ -10,12 +10,12 @@ bb:
 
 bb1:                                              ; preds = %bb3, %bb
   %i.0 = phi i64 [ 0, %bb ], [ %tmp, %bb3 ]       ; <i64> [#uses=3]
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %i.0 ; <i32*> [#uses=1]
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %i.0 ; <ptr> [#uses=1]
   %exitcond = icmp ne i64 %i.0, %n                ; <i1> [#uses=1]
   br i1 %exitcond, label %bb2, label %bb4
 
 bb2:                                              ; preds = %bb1
-  store i32 1, i32* %scevgep
+  store i32 1, ptr %scevgep
   br label %bb3
 
 bb3:                                              ; preds = %bb2
@@ -29,19 +29,19 @@ bb4:                                              ; preds = %bb1
 
 define i32 @main() nounwind {
 bb:
-  call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
+  call void @llvm.memset.p0.i64(ptr @A, i8 0, i64 4096, i32 1, i1 false)
   call void @bar(i64 1024)
   br label %bb1
 
 bb1:                                              ; preds = %bb7, %bb
   %indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb ] ; <i64> [#uses=3]
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=1]
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %indvar ; <ptr> [#uses=1]
   %i.0 = trunc i64 %indvar to i32                 ; <i32> [#uses=1]
   %tmp = icmp slt i32 %i.0, 1024                  ; <i1> [#uses=1]
   br i1 %tmp, label %bb2, label %bb8
 
 bb2:                                              ; preds = %bb1
-  %tmp3 = load i32, i32* %scevgep                      ; <i32> [#uses=1]
+  %tmp3 = load i32, ptr %scevgep                      ; <i32> [#uses=1]
   %tmp4 = icmp ne i32 %tmp3, 1                    ; <i1> [#uses=1]
   br i1 %tmp4, label %bb5, label %bb6
 
@@ -63,7 +63,7 @@ bb9:                                              ; preds = %bb8, %bb5
   ret i32 %.0
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind
 
 ; CHECK: for (int c0 = 0; c0 < n; c0 += 1)
 ; CHECK:   Stmt_bb2(c0);

diff  --git a/polly/test/CodeGen/single_loop_zero_iterations.ll b/polly/test/CodeGen/single_loop_zero_iterations.ll
index fbe260d6ea53b..4f189687d3308 100644
--- a/polly/test/CodeGen/single_loop_zero_iterations.ll
+++ b/polly/test/CodeGen/single_loop_zero_iterations.ll
@@ -25,20 +25,20 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 entry:
-  %A = alloca [20 x i32], align 4                 ; <[20 x i32]*> [#uses=3]
-  %arraydecay = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx = getelementptr inbounds i32, i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
-  store i32 0, i32* %arrayidx
+  %A = alloca [20 x i32], align 4                 ; <ptr> [#uses=3]
+  %arraydecay = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx = getelementptr inbounds i32, ptr %arraydecay, i64 0 ; <ptr> [#uses=1]
+  store i32 0, ptr %arrayidx
   fence seq_cst
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
   %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ] ; <i64> [#uses=2]
-  %arrayidx3 = getelementptr [20 x i32], [20 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=1]
+  %arrayidx3 = getelementptr [20 x i32], ptr %A, i64 0, i64 %indvar ; <ptr> [#uses=1]
   br i1 false, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 1, i32* %arrayidx3
+  store i32 1, ptr %arrayidx3
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -47,9 +47,9 @@ for.inc:                                          ; preds = %for.body
 
 for.end:                                          ; preds = %for.cond
   fence seq_cst
-  %arraydecay5 = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx6 = getelementptr inbounds i32, i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
-  %tmp7 = load i32, i32* %arrayidx6                    ; <i32> [#uses=1]
+  %arraydecay5 = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx6 = getelementptr inbounds i32, ptr %arraydecay5, i64 0 ; <ptr> [#uses=1]
+  %tmp7 = load i32, ptr %arrayidx6                    ; <i32> [#uses=1]
   %cmp8 = icmp eq i32 %tmp7, 0                    ; <i1> [#uses=1]
   br i1 %cmp8, label %if.then, label %if.else
 

diff  --git a/polly/test/CodeGen/split_edge_of_exit.ll b/polly/test/CodeGen/split_edge_of_exit.ll
index 378775d06da26..56ce215a62b22 100644
--- a/polly/test/CodeGen/split_edge_of_exit.ll
+++ b/polly/test/CodeGen/split_edge_of_exit.ll
@@ -7,7 +7,7 @@
 ;
 ; CHECK: Valid Region for Scop: region2 => return
 ;
-define void @f1(i64* %A, i64 %N) nounwind {
+define void @f1(ptr %A, i64 %N) nounwind {
 entry:
   br label %region1
 
@@ -20,8 +20,8 @@ region1:
 
 region2:
   %indvar2 = phi i64 [ 0, %region1 ], [ %indvar2.next, %region2 ]
-  %scevgep2 = getelementptr i64, i64* %A, i64 %indvar2
-  store i64 %indvar2, i64* %scevgep2
+  %scevgep2 = getelementptr i64, ptr %A, i64 %indvar2
+  store i64 %indvar2, ptr %scevgep2
   %indvar2.next = add nsw i64 %indvar2, 1
   %exitcond2 = icmp eq i64 %indvar2.next, %N
   br i1 %exitcond2, label %return, label %region2

diff  --git a/polly/test/CodeGen/split_edges.ll b/polly/test/CodeGen/split_edges.ll
index db370ffbd38d4..e01d901e298cf 100644
--- a/polly/test/CodeGen/split_edges.ll
+++ b/polly/test/CodeGen/split_edges.ll
@@ -13,8 +13,8 @@ bb1:
 
 bb2:
   %ind1 = phi i32 [0, %bb1], [ %inc0, %bb2]
-  %ptr = getelementptr [1536 x float], [1536 x float]* @A, i64 0, i32 %ind1
-  store float undef, float* %ptr
+  %ptr = getelementptr [1536 x float], ptr @A, i64 0, i32 %ind1
+  store float undef, ptr %ptr
   %inc0 = add i32 %ind1, 1
   %cond1 = icmp eq i32 %ind1, 32
   br i1 %cond1, label %bb4, label %bb2

diff  --git a/polly/test/CodeGen/split_edges_2.ll b/polly/test/CodeGen/split_edges_2.ll
index ffa6b78bcc7bb..4135d6feeb3ec 100644
--- a/polly/test/CodeGen/split_edges_2.ll
+++ b/polly/test/CodeGen/split_edges_2.ll
@@ -14,8 +14,8 @@ bb1:
 
 bb2:
   %ind1 = phi i32 [0, %bb1], [ %inc0, %bb2]
-  %ptr = getelementptr [1536 x float], [1536 x float]* @A, i64 0, i32 %ind1
-  store float undef, float* %ptr
+  %ptr = getelementptr [1536 x float], ptr @A, i64 0, i32 %ind1
+  store float undef, ptr %ptr
   %inc0 = add i32 %ind1, 1
   %cond1 = icmp eq i32 %ind1, 32
   br i1 %cond1, label %bb4, label %bb2

diff  --git a/polly/test/CodeGen/srem-in-other-bb.ll b/polly/test/CodeGen/srem-in-other-bb.ll
index 77ec86367ec5a..8bde1a3bbc1d6 100644
--- a/polly/test/CodeGen/srem-in-other-bb.ll
+++ b/polly/test/CodeGen/srem-in-other-bb.ll
@@ -8,13 +8,13 @@
 ;
 ; CHECK:      polly.stmt.bb2:
 ; CHECK-NEXT:   %p_tmp = srem i64 %n, 42
-; CHECK-NEXT:   store i64 %p_tmp, i64* %tmp.s2a
+; CHECK-NEXT:   store i64 %p_tmp, ptr %tmp.s2a
 ;
 ; CHECK:      polly.stmt.bb3:
-; CHECK:        %tmp.s2a.reload = load i64, i64* %tmp.s2a
-; CHECK:        %p_tmp3 = getelementptr inbounds float, float* %A, i64 %tmp.s2a.reload
+; CHECK:        %tmp.s2a.reload = load i64, ptr %tmp.s2a
+; CHECK:        %p_tmp3 = getelementptr inbounds float, ptr %A, i64 %tmp.s2a.reload
 
-define void @pos(float* %A, i64 %n) {
+define void @pos(ptr %A, i64 %n) {
 bb:
   br label %bb1
 
@@ -28,10 +28,10 @@ bb2:                                              ; preds = %bb1
   br label %bb3
 
 bb3:
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %tmp
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %tmp
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, 1.000000e+00
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2

diff  --git a/polly/test/CodeGen/stack-overflow-in-load-hoisting.ll b/polly/test/CodeGen/stack-overflow-in-load-hoisting.ll
index 709e510b806a6..02dfe96e3e916 100644
--- a/polly/test/CodeGen/stack-overflow-in-load-hoisting.ll
+++ b/polly/test/CodeGen/stack-overflow-in-load-hoisting.ll
@@ -9,60 +9,58 @@
 ;
 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 
-%struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573 = type { %struct.AVClass.10.32.868.1198.1286.1308.1566*, %struct.AVFrame.5.27.863.1193.1281.1303.1572*, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], double, %struct.AVRational.0.22.858.1188.1276.1298.1567 }
-%struct.AVClass.10.32.868.1198.1286.1308.1566 = type { i8*, i8* (i8*)*, %struct.AVOption.7.29.865.1195.1283.1305.1563*, i32, i32, i32, i8* (i8*, i8*)*, %struct.AVClass.10.32.868.1198.1286.1308.1566* (%struct.AVClass.10.32.868.1198.1286.1308.1566*)*, i32, i32 (i8*)*, i32 (%struct.AVOptionRanges.9.31.867.1197.1285.1307.1565**, i8*, i8*, i32)* }
-%struct.AVOption.7.29.865.1195.1283.1305.1563 = type { i8*, i8*, i32, i32, %union.anon.6.28.864.1194.1282.1304.1562, double, double, i32, i8* }
+%struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573 = type { ptr, ptr, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], double, %struct.AVRational.0.22.858.1188.1276.1298.1567 }
+%struct.AVClass.10.32.868.1198.1286.1308.1566 = type { ptr, ptr, ptr, i32, i32, i32, ptr, ptr, i32, ptr, ptr }
+%struct.AVOption.7.29.865.1195.1283.1305.1563 = type { ptr, ptr, i32, i32, %union.anon.6.28.864.1194.1282.1304.1562, double, double, i32, ptr }
 %union.anon.6.28.864.1194.1282.1304.1562 = type { i64 }
-%struct.AVOptionRanges.9.31.867.1197.1285.1307.1565 = type { %struct.AVOptionRange.8.30.866.1196.1284.1306.1564**, i32, i32 }
-%struct.AVOptionRange.8.30.866.1196.1284.1306.1564 = type { i8*, double, double, double, double, i32 }
-%struct.AVFrame.5.27.863.1193.1281.1303.1572 = type { [8 x i8*], [8 x i32], i8**, i32, i32, i32, i32, i32, i32, %struct.AVRational.0.22.858.1188.1276.1298.1567, i64, i64, i64, i32, i32, i32, i8*, [8 x i64], i32, i32, i32, i32, i64, i32, i64, [8 x %struct.AVBufferRef.2.24.860.1190.1278.1300.1569*], %struct.AVBufferRef.2.24.860.1190.1278.1300.1569**, i32, %struct.AVFrameSideData.4.26.862.1192.1280.1302.1571**, i32, i32, i32, i32, i32, i32, i32, i64, i64, i64, %struct.AVDictionary.3.25.861.1191.1279.1301.1570*, i32, i32, i32, i8*, i32, i32, %struct.AVBufferRef.2.24.860.1190.1278.1300.1569* }
-%struct.AVFrameSideData.4.26.862.1192.1280.1302.1571 = type { i32, i8*, i32, %struct.AVDictionary.3.25.861.1191.1279.1301.1570*, %struct.AVBufferRef.2.24.860.1190.1278.1300.1569* }
+%struct.AVOptionRanges.9.31.867.1197.1285.1307.1565 = type { ptr, i32, i32 }
+%struct.AVOptionRange.8.30.866.1196.1284.1306.1564 = type { ptr, double, double, double, double, i32 }
+%struct.AVFrame.5.27.863.1193.1281.1303.1572 = type { [8 x ptr], [8 x i32], ptr, i32, i32, i32, i32, i32, i32, %struct.AVRational.0.22.858.1188.1276.1298.1567, i64, i64, i64, i32, i32, i32, ptr, [8 x i64], i32, i32, i32, i32, i64, i32, i64, [8 x ptr], ptr, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i64, i64, i64, ptr, i32, i32, i32, ptr, i32, i32, ptr }
+%struct.AVFrameSideData.4.26.862.1192.1280.1302.1571 = type { i32, ptr, i32, ptr, ptr }
 %struct.AVDictionary.3.25.861.1191.1279.1301.1570 = type opaque
-%struct.AVBufferRef.2.24.860.1190.1278.1300.1569 = type { %struct.AVBuffer.1.23.859.1189.1277.1299.1568*, i8*, i32 }
+%struct.AVBufferRef.2.24.860.1190.1278.1300.1569 = type { ptr, ptr, i32 }
 %struct.AVBuffer.1.23.859.1189.1277.1299.1568 = type opaque
 %struct.AVRational.0.22.858.1188.1276.1298.1567 = type { i32, i32 }
 
 ; Function Attrs: nounwind ssp
-define void @fade(%struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573* %s) #0 {
+define void @fade(ptr %s) #0 {
 entry:
   br label %for.cond.12.preheader.lr.ph
 
 for.cond.12.preheader.lr.ph:                      ; preds = %entry
-  %outpicref = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573* %s, i32 0, i32 1
-  %arrayidx2 = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573* %s, i32 0, i32 8, i32 0
+  %outpicref = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 1
+  %arrayidx2 = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 8, i32 0
   %tobool = icmp eq i32 0, 0
-  %arrayidx4 = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573* %s, i32 0, i32 8, i32 1
-  %tmp = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 8, i32 1
+  %tmp = load i32, ptr %arrayidx4, align 4
   %tobool5 = icmp eq i32 %tmp, 0
-  %h = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573* %s, i32 0, i32 3
-  %tmp1 = load i32, i32* %h, align 4
+  %h = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 3
+  %tmp1 = load i32, ptr %h, align 4
   %cmp.48 = icmp sgt i32 %tmp1, 0
-  %tmp2 = load %struct.AVFrame.5.27.863.1193.1281.1303.1572*, %struct.AVFrame.5.27.863.1193.1281.1303.1572** %outpicref, align 4
-  %arrayidx11 = getelementptr inbounds %struct.AVFrame.5.27.863.1193.1281.1303.1572, %struct.AVFrame.5.27.863.1193.1281.1303.1572* %tmp2, i32 0, i32 0, i32 0
-  %tmp3 = load i8*, i8** %arrayidx11, align 4
+  %tmp2 = load ptr, ptr %outpicref, align 4
+  %tmp3 = load ptr, ptr %tmp2, align 4
   br label %for.body.14.lr.ph
 
 for.body.14.lr.ph:                                ; preds = %for.end, %for.cond.12.preheader.lr.ph
-  %d.050 = phi i8* [ %tmp3, %for.cond.12.preheader.lr.ph ], [ undef, %for.end ]
-  %w = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573* %s, i32 0, i32 2
-  %tmp4 = load i32, i32* %w, align 4
+  %d.050 = phi ptr [ %tmp3, %for.cond.12.preheader.lr.ph ], [ undef, %for.end ]
+  %w = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 2
+  %tmp4 = load i32, ptr %w, align 4
   %cmp13.46 = icmp sgt i32 %tmp4, 0
   br label %for.body.14
 
 for.body.14:                                      ; preds = %for.body.14, %for.body.14.lr.ph
-  %arrayidx30 = getelementptr inbounds i8, i8* %d.050, i32 0
-  store i8 undef, i8* %arrayidx30, align 1
-  %arrayidx54 = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573* %s, i32 0, i32 8, i32 2
-  %tmp5 = load i32, i32* %arrayidx54, align 4
+  store i8 undef, ptr %d.050, align 1
+  %arrayidx54 = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 8, i32 2
+  %tmp5 = load i32, ptr %arrayidx54, align 4
   %add92 = add nuw nsw i32 0, 4
-  %tmp6 = load i32, i32* %w, align 4
+  %tmp6 = load i32, ptr %w, align 4
   %mul = shl nsw i32 %tmp6, 2
   %cmp13 = icmp slt i32 %add92, %mul
   br i1 %cmp13, label %for.body.14, label %for.end
 
 for.end:                                          ; preds = %for.body.14
   %inc = add nuw nsw i32 0, 1
-  %tmp7 = load i32, i32* %h, align 4
+  %tmp7 = load i32, ptr %h, align 4
   %cmp = icmp slt i32 %inc, %tmp7
   br i1 %cmp, label %for.body.14.lr.ph, label %if.end.loopexit
 

diff  --git a/polly/test/CodeGen/test-invalid-operands-for-select-2.ll b/polly/test/CodeGen/test-invalid-operands-for-select-2.ll
index 6985fb75d7fae..5fa4773398fdd 100644
--- a/polly/test/CodeGen/test-invalid-operands-for-select-2.ll
+++ b/polly/test/CodeGen/test-invalid-operands-for-select-2.ll
@@ -7,7 +7,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @kernel_fdtd_apml(i32 %cxm, i32 %cym, [65 x [65 x double]]* %Bza, [65 x [65 x double]]* %Hz, double* %czp) #0 {
+define void @kernel_fdtd_apml(i32 %cxm, i32 %cym, ptr %Bza, ptr %Hz, ptr %czp) #0 {
 entry:
   br i1 false, label %for.cond4.preheader, label %for.end451
 
@@ -24,26 +24,25 @@ for.cond7.preheader:                              ; preds = %for.end, %for.cond4
 for.body9:                                        ; preds = %for.body9, %for.cond7.preheader
   %ix.02 = phi i32 [ %inc, %for.body9 ], [ 0, %for.cond7.preheader ]
   %idxprom74 = sext i32 %iz.08 to i64
-  %arrayidx75 = getelementptr inbounds double, double* %czp, i64 %idxprom74
-  %0 = load double, double* %arrayidx75, align 8
+  %arrayidx75 = getelementptr inbounds double, ptr %czp, i64 %idxprom74
+  %0 = load double, ptr %arrayidx75, align 8
   %idxprom102 = sext i32 %iz.08 to i64
-  %arrayidx105 = getelementptr inbounds [65 x [65 x double]], [65 x [65 x double]]* %Hz, i64 %idxprom102, i64 0, i64 0
-  store double undef, double* %arrayidx105, align 8
+  %arrayidx105 = getelementptr inbounds [65 x [65 x double]], ptr %Hz, i64 %idxprom102, i64 0, i64 0
+  store double undef, ptr %arrayidx105, align 8
   %inc = add nsw i32 %ix.02, 1
   br i1 false, label %for.body9, label %for.end
 
 for.end:                                          ; preds = %for.body9, %for.cond7.preheader
   %idxprom209 = sext i32 %cxm to i64
   %idxprom211 = sext i32 %iz.08 to i64
-  %arrayidx214 = getelementptr inbounds [65 x [65 x double]], [65 x [65 x double]]* %Hz, i64 %idxprom211, i64 0, i64 %idxprom209
-  store double undef, double* %arrayidx214, align 8
+  %arrayidx214 = getelementptr inbounds [65 x [65 x double]], ptr %Hz, i64 %idxprom211, i64 0, i64 %idxprom209
+  store double undef, ptr %arrayidx214, align 8
   %idxprom430 = sext i32 %cxm to i64
   %idxprom431 = sext i32 %cym to i64
   %idxprom432 = sext i32 %iz.08 to i64
-  %arrayidx435 = getelementptr inbounds [65 x [65 x double]], [65 x [65 x double]]* %Hz, i64 %idxprom432, i64 %idxprom431, i64 %idxprom430
-  store double undef, double* %arrayidx435, align 8
-  %arrayidx445 = getelementptr inbounds [65 x [65 x double]], [65 x [65 x double]]* %Bza, i64 0, i64 0, i64 0
-  store double undef, double* %arrayidx445, align 8
+  %arrayidx435 = getelementptr inbounds [65 x [65 x double]], ptr %Hz, i64 %idxprom432, i64 %idxprom431, i64 %idxprom430
+  store double undef, ptr %arrayidx435, align 8
+  store double undef, ptr %Bza, align 8
   %inc447 = add nsw i32 %iy.06, 1
   %cmp5 = icmp slt i32 %inc447, %cym
   br i1 %cmp5, label %for.cond7.preheader, label %for.inc449

diff  --git a/polly/test/CodeGen/test-invalid-operands-for-select.ll b/polly/test/CodeGen/test-invalid-operands-for-select.ll
index 7507542877856..40695af3e8472 100644
--- a/polly/test/CodeGen/test-invalid-operands-for-select.ll
+++ b/polly/test/CodeGen/test-invalid-operands-for-select.ll
@@ -13,7 +13,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @dradb4(i32 %ido, i32 %l1, float* %cc, float* %ch, float* %wa1, float* %wa3) #0 {
+define void @dradb4(i32 %ido, i32 %l1, ptr %cc, ptr %ch, ptr %wa1, ptr %wa3) #0 {
 entry:
   %mul = mul nsw i32 %l1, %ido
   br i1 undef, label %for.end256, label %if.end
@@ -34,35 +34,23 @@ for.body53:                                       ; preds = %for.body53, %for.bo
   %t7.014 = phi i32 [ 0, %for.body53.lr.ph ], [ %add58, %for.body53 ]
   %i.013 = phi i32 [ 2, %for.body53.lr.ph ], [ %add193, %for.body53 ]
   %add58 = add nsw i32 %t7.014, 2
-  %arrayidx70 = getelementptr inbounds float, float* %cc, i64 0
-  %arrayidx72 = getelementptr inbounds float, float* %cc, i64 0
-  %arrayidx77 = getelementptr inbounds float, float* %cc, i64 0
-  %arrayidx81 = getelementptr inbounds float, float* %cc, i64 0
-  %arrayidx84 = getelementptr inbounds float, float* %cc, i64 0
-  %arrayidx95 = getelementptr inbounds float, float* %cc, i64 0
-  %arrayidx105 = getelementptr inbounds float, float* %cc, i64 0
-  %arrayidx110 = getelementptr inbounds float, float* %ch, i64 0
-  store float undef, float* %arrayidx110, align 4
-  %arrayidx122 = getelementptr inbounds float, float* %wa1, i64 0
+  store float undef, ptr %ch, align 4
   %add129 = add nsw i32 %add58, %mul
   %idxprom142 = sext i32 %add129 to i64
-  %arrayidx143 = getelementptr inbounds float, float* %ch, i64 %idxprom142
-  store float undef, float* %arrayidx143, align 4
+  %arrayidx143 = getelementptr inbounds float, ptr %ch, i64 %idxprom142
+  store float undef, ptr %arrayidx143, align 4
   %add153 = add nsw i32 %add129, %mul
-  %arrayidx170 = getelementptr inbounds float, float* %wa3, i64 0
-  %arrayidx174 = getelementptr inbounds float, float* %wa3, i64 0
   %add177 = add nsw i32 %add153, %mul
   %sub178 = add nsw i32 %add177, -1
   %idxprom179 = sext i32 %sub178 to i64
-  %arrayidx180 = getelementptr inbounds float, float* %ch, i64 %idxprom179
-  store float undef, float* %arrayidx180, align 4
-  %arrayidx183 = getelementptr inbounds float, float* %wa3, i64 0
-  %0 = load float, float* %arrayidx183, align 4
+  %arrayidx180 = getelementptr inbounds float, ptr %ch, i64 %idxprom179
+  store float undef, ptr %arrayidx180, align 4
+  %0 = load float, ptr %wa3, align 4
   %mul184 = fmul float undef, %0
   %add189 = fadd float %mul184, 0.000000e+00
   %idxprom190 = sext i32 %add177 to i64
-  %arrayidx191 = getelementptr inbounds float, float* %ch, i64 %idxprom190
-  store float %add189, float* %arrayidx191, align 4
+  %arrayidx191 = getelementptr inbounds float, ptr %ch, i64 %idxprom190
+  store float %add189, ptr %arrayidx191, align 4
   %add193 = add nsw i32 %i.013, 2
   %cmp52 = icmp slt i32 %add193, %ido
   br i1 %cmp52, label %for.body53, label %for.inc096

diff  --git a/polly/test/CodeGen/test.ll b/polly/test/CodeGen/test.ll
index 8ae9f310fdd32..ac99688ed9e88 100644
--- a/polly/test/CodeGen/test.ll
+++ b/polly/test/CodeGen/test.ll
@@ -23,15 +23,15 @@
 
 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"
 
- at A = common global [100 x i32] zeroinitializer, align 4 ; <[100 x i32]*> [#uses=2]
- at k = common global i32 0, align 4                 ; <i32*> [#uses=0]
+ at A = common global [100 x i32] zeroinitializer, align 4 ; <ptr> [#uses=2]
+ at k = common global i32 0, align 4                 ; <ptr> [#uses=0]
 
 define i32 @foo(i32 %z) nounwind {
 bb.nph31.split.us:
   br label %bb.nph.us
 
 for.inc06.us:                                     ; preds = %for.body6.us
-  store i32 %mul.us, i32* %arrayidx.us
+  store i32 %mul.us, ptr %arrayidx.us
   %indvar.next = add i64 %indvar, 1               ; <i64> [#uses=2]
   %exitcond32 = icmp eq i64 %indvar.next, 100     ; <i1> [#uses=1]
   br i1 %exitcond32, label %for.end19, label %bb.nph.us
@@ -46,15 +46,15 @@ for.body6.us:                                     ; preds = %for.body6.us, %bb.n
 
 bb.nph.us:                                        ; preds = %bb.nph31.split.us, %for.inc06.us
   %indvar = phi i64 [ %indvar.next, %for.inc06.us ], [ 0, %bb.nph31.split.us ] ; <i64> [#uses=3]
-  %arrayidx.us = getelementptr [100 x i32], [100 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+  %arrayidx.us = getelementptr [100 x i32], ptr @A, i64 0, i64 %indvar ; <ptr> [#uses=2]
   %i.027.us = trunc i64 %indvar to i32            ; <i32> [#uses=2]
-  store i32 %i.027.us, i32* %arrayidx.us
+  store i32 %i.027.us, ptr %arrayidx.us
   br label %for.body6.us
 
 for.end19:                                        ; preds = %for.inc06.us
   %idxprom21 = sext i32 %z to i64                 ; <i64> [#uses=1]
-  %arrayidx22 = getelementptr inbounds [100 x i32], [100 x i32]* @A, i64 0, i64 %idxprom21 ; <i32*> [#uses=1]
-  %tmp23 = load i32, i32* %arrayidx22                  ; <i32> [#uses=1]
+  %arrayidx22 = getelementptr inbounds [100 x i32], ptr @A, i64 0, i64 %idxprom21 ; <ptr> [#uses=1]
+  %tmp23 = load i32, ptr %arrayidx22                  ; <i32> [#uses=1]
   ret i32 %tmp23
 }
 ; CHECK: for (c2=0;c2<=99;c2++) {

diff  --git a/polly/test/CodeGen/two-loops-right-after-each-other-2.ll b/polly/test/CodeGen/two-loops-right-after-each-other-2.ll
index b81eaeb6f613f..a7cae0a921ca2 100644
--- a/polly/test/CodeGen/two-loops-right-after-each-other-2.ll
+++ b/polly/test/CodeGen/two-loops-right-after-each-other-2.ll
@@ -3,19 +3,19 @@
 ; CHECK:       polly.merge_new_and_old:
 ; CHECK-NEXT:    merge = phi
 
-%struct.ImageParameters = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8**, i8**, i32, i32***, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [9 x [16 x [16 x i16]]], [5 x [16 x [16 x i16]]], [9 x [8 x [8 x i16]]], [2 x [4 x [16 x [16 x i16]]]], [16 x [16 x i16]], [16 x [16 x i32]], i32****, i32***, i32***, i32***, i32****, i32****, %struct.Picture*, %struct.Slice*, %struct.macroblock*, i32*, i32*, i32, i32, i32, i32, [4 x [4 x i32]], i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i16******, i16******, i16******, i16******, [15 x i16], i32, i32, i32, i32, i32, i32, i32, i32, [6 x [32 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [1 x i32], i32, i32, [2 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.DecRefPicMarking*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double**, double***, i32***, double**, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x [2 x i32]], [2 x i32], i32, i32, i16, i32, i32, i32, i32, i32 }
-%struct.Picture = type { i32, i32, [100 x %struct.Slice*], i32, float, float, float }
-%struct.Slice = type { i32, i32, i32, i32, i32, i32, %struct.datapartition*, %struct.MotionInfoContexts*, %struct.TextureInfoContexts*, i32, i32*, i32*, i32*, i32, i32*, i32*, i32*, i32 (i32)*, [3 x [2 x i32]] }
-%struct.datapartition = type { %struct.Bitstream*, %struct.EncodingEnvironment, %struct.EncodingEnvironment }
-%struct.Bitstream = type { i32, i32, i8, i32, i32, i8, i8, i32, i32, i8*, i32 }
-%struct.EncodingEnvironment = type { i32, i32, i32, i32, i32, i8*, i32*, i32, i32 }
+%struct.ImageParameters = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [9 x [16 x [16 x i16]]], [5 x [16 x [16 x i16]]], [9 x [8 x [8 x i16]]], [2 x [4 x [16 x [16 x i16]]]], [16 x [16 x i16]], [16 x [16 x i32]], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, [4 x [4 x i32]], i32, i32, i32, i32, i32, double, i32, i32, i32, i32, ptr, ptr, ptr, ptr, [15 x i16], i32, i32, i32, i32, i32, i32, i32, i32, [6 x [32 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [1 x i32], i32, i32, [2 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x [2 x i32]], [2 x i32], i32, i32, i16, i32, i32, i32, i32, i32 }
+%struct.Picture = type { i32, i32, [100 x ptr], i32, float, float, float }
+%struct.Slice = type { i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, [3 x [2 x i32]] }
+%struct.datapartition = type { ptr, %struct.EncodingEnvironment, %struct.EncodingEnvironment }
+%struct.Bitstream = type { i32, i32, i8, i32, i32, i8, i8, i32, i32, ptr, i32 }
+%struct.EncodingEnvironment = type { i32, i32, i32, i32, i32, ptr, ptr, i32, i32 }
 %struct.MotionInfoContexts = type { [3 x [11 x %struct.BiContextType]], [2 x [9 x %struct.BiContextType]], [2 x [10 x %struct.BiContextType]], [2 x [6 x %struct.BiContextType]], [4 x %struct.BiContextType], [4 x %struct.BiContextType], [3 x %struct.BiContextType] }
 %struct.BiContextType = type { i16, i8, i64 }
 %struct.TextureInfoContexts = type { [2 x %struct.BiContextType], [3 x [4 x %struct.BiContextType]], [10 x [4 x %struct.BiContextType]], [10 x [15 x %struct.BiContextType]], [10 x [15 x %struct.BiContextType]], [10 x [5 x %struct.BiContextType]], [10 x [5 x %struct.BiContextType]], [10 x [15 x %struct.BiContextType]], [10 x [15 x %struct.BiContextType]] }
-%struct.macroblock = type { i32, i32, i32, [2 x i32], i32, [8 x i32], %struct.macroblock*, i32, [2 x [4 x [4 x [2 x i32]]]], [16 x i8], [16 x i8], i32, i64, [4 x i32], [4 x i32], i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, double, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
-%struct.DecRefPicMarking = type { i32, i32, i32, i32, i32, %struct.DecRefPicMarking* }
+%struct.macroblock = type { i32, i32, i32, [2 x i32], i32, [8 x i32], ptr, i32, [2 x [4 x [4 x [2 x i32]]]], [16 x i8], [16 x i8], i32, i64, [4 x i32], [4 x i32], i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, double, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
+%struct.DecRefPicMarking = type { i32, i32, i32, i32, i32, ptr }
 
- at img = external global %struct.ImageParameters*, align 8
+ at img = external global ptr, align 8
 
 define void @intrapred_luma() {
 entry:
@@ -26,31 +26,31 @@ for.body:                                         ; preds = %for.body, %entry
   br i1 undef, label %for.body, label %for.body.262
 
 for.body.262:                                     ; preds = %for.body
-  %0 = load %struct.ImageParameters*, %struct.ImageParameters** @img, align 8
+  %0 = load ptr, ptr @img, align 8
   br label %for.body.280
 
 for.body.280:                                     ; preds = %for.body.280, %for.body.262
   %indvars.iv66 = phi i64 [ 0, %for.body.262 ], [ %indvars.iv.next67, %for.body.280 ]
-  %arrayidx282 = getelementptr inbounds [13 x i16], [13 x i16]* %PredPel, i64 0, i64 1
-  %arrayidx283 = getelementptr inbounds i16, i16* %arrayidx282, i64 %indvars.iv66
-  %1 = load i16, i16* %arrayidx283, align 2
-  %arrayidx289 = getelementptr inbounds %struct.ImageParameters, %struct.ImageParameters* %0, i64 0, i32 47, i64 0, i64 2, i64 %indvars.iv66
-  store i16 %1, i16* %arrayidx289, align 2
+  %arrayidx282 = getelementptr inbounds [13 x i16], ptr %PredPel, i64 0, i64 1
+  %arrayidx283 = getelementptr inbounds i16, ptr %arrayidx282, i64 %indvars.iv66
+  %1 = load i16, ptr %arrayidx283, align 2
+  %arrayidx289 = getelementptr inbounds %struct.ImageParameters, ptr %0, i64 0, i32 47, i64 0, i64 2, i64 %indvars.iv66
+  store i16 %1, ptr %arrayidx289, align 2
   %indvars.iv.next67 = add nuw nsw i64 %indvars.iv66, 1
   br i1 false, label %for.body.280, label %for.end.298
 
 for.end.298:                                      ; preds = %for.body.280
-  %2 = load %struct.ImageParameters*, %struct.ImageParameters** @img, align 8
+  %2 = load ptr, ptr @img, align 8
   br label %for.body.310
 
 for.body.310:                                     ; preds = %for.body.310, %for.end.298
   %indvars.iv = phi i64 [ 0, %for.end.298 ], [ %indvars.iv.next, %for.body.310 ]
   %InterScopSext = sext i16 %1 to i64
-  %arrayidx312 = getelementptr inbounds [13 x i16], [13 x i16]* %PredPel, i64 0, i64 %InterScopSext
-  %arrayidx313 = getelementptr inbounds i16, i16* %arrayidx312, i64 %indvars.iv
-  %3 = load i16, i16* %arrayidx313, align 2
-  %arrayidx322 = getelementptr inbounds %struct.ImageParameters, %struct.ImageParameters* %2, i64 0, i32 47, i64 1, i64 %indvars.iv, i64 1
-  store i16 %3, i16* %arrayidx322, align 2
+  %arrayidx312 = getelementptr inbounds [13 x i16], ptr %PredPel, i64 0, i64 %InterScopSext
+  %arrayidx313 = getelementptr inbounds i16, ptr %arrayidx312, i64 %indvars.iv
+  %3 = load i16, ptr %arrayidx313, align 2
+  %arrayidx322 = getelementptr inbounds %struct.ImageParameters, ptr %2, i64 0, i32 47, i64 1, i64 %indvars.iv, i64 1
+  store i16 %3, ptr %arrayidx322, align 2
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   br i1 false, label %for.body.310, label %for.end.328
 

diff  --git a/polly/test/CodeGen/two-scops-in-row-invalidate-scevs.ll b/polly/test/CodeGen/two-scops-in-row-invalidate-scevs.ll
index 238014ed51848..4470f970fc1e7 100644
--- a/polly/test/CodeGen/two-scops-in-row-invalidate-scevs.ll
+++ b/polly/test/CodeGen/two-scops-in-row-invalidate-scevs.ll
@@ -10,7 +10,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @func(i32* %p) {
+define void @func(ptr %p) {
 entry:
   %counters = alloca [64 x i32], align 16
   %lenCounters = alloca [17 x i32], align 16
@@ -21,8 +21,7 @@ for.cond:                                       ; preds = %for.body15, %for.cond
   br i1 false, label %for.body15, label %for.end22
 
 for.body15:                                       ; preds = %for.cond
-  %arrayidx17 = getelementptr inbounds [64 x i32], [64 x i32]* %counters, i64 0, i64 0
-  %0 = load i32, i32* %arrayidx17, align 4
+  %0 = load i32, ptr %counters, align 4
   %add = add i32 %num.0, %0
   br label %for.cond
 
@@ -44,16 +43,16 @@ do.body:                                          ; preds = %cond.end109, %if.en
 
 cond.end109:                                      ; preds = %do.body
   %idxprom122 = zext i32 %e.0 to i64
-  %arrayidx123 = getelementptr inbounds i32, i32* %p, i64 %idxprom122
+  %arrayidx123 = getelementptr inbounds i32, ptr %p, i64 %idxprom122
   %inc128 = add i32 %e.0, 1
   %sub129 = sub i32 %num.0, %inc128
   %cmp130 = icmp ugt i32 %sub129, 1
   br i1 %cmp130, label %do.body, label %do.end
 
 do.end:                                           ; preds = %cond.end109
-  %1 = load i32, i32* %arrayidx123, align 4
-  %arrayidx142 = getelementptr inbounds [17 x i32], [17 x i32]* %lenCounters, i64 0, i64 1
-  store i32 2, i32* %arrayidx142, align 4
+  %1 = load i32, ptr %arrayidx123, align 4
+  %arrayidx142 = getelementptr inbounds [17 x i32], ptr %lenCounters, i64 0, i64 1
+  store i32 2, ptr %arrayidx142, align 4
   br label %for.cond201
 
 for.cond201:                                      ; preds = %for.body204, %do.end

diff  --git a/polly/test/CodeGen/two-scops-in-row.ll b/polly/test/CodeGen/two-scops-in-row.ll
index c71d45543a112..3e922cba19164 100644
--- a/polly/test/CodeGen/two-scops-in-row.ll
+++ b/polly/test/CodeGen/two-scops-in-row.ll
@@ -14,14 +14,14 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; SCALAR:     Stmt_for_0(0);
 
 
-define void @foo(i32* %A) {
+define void @foo(ptr %A) {
 entry:
   %Scalar0 = alloca i32
   br label %for.0
 
 for.0:
-  %Scalar0.val = load i32, i32* %Scalar0
-  store i32 1, i32* %Scalar0
+  %Scalar0.val = load i32, ptr %Scalar0
+  store i32 1, ptr %Scalar0
   br i1 false, label %for.0, label %for.1.preheader
 
 for.1.preheader:
@@ -30,8 +30,8 @@ for.1.preheader:
 
 for.1:
   %indvar.1 = phi i32 [ %Scalar0.val, %for.1.preheader ], [ %indvar.1.next, %for.1]
-  %arrayidx.1 = getelementptr inbounds i32, i32* %A, i32 %indvar.1
-  store i32 1, i32* %arrayidx.1
+  %arrayidx.1 = getelementptr inbounds i32, ptr %A, i32 %indvar.1
+  store i32 1, ptr %arrayidx.1
   %indvar.1.next = add nsw i32 %indvar.1, 1
   %cmp.1 = icmp slt i32 %indvar.1.next, 100
   br i1 %cmp.1, label %for.1, label %end

diff  --git a/polly/test/CodeGen/udiv_expansion_position.ll b/polly/test/CodeGen/udiv_expansion_position.ll
index cd2a05d7c169a..bb37fed4a41ea 100644
--- a/polly/test/CodeGen/udiv_expansion_position.ll
+++ b/polly/test/CodeGen/udiv_expansion_position.ll
@@ -27,7 +27,7 @@ for.body50:                                       ; preds = %for.body35
 
 for.cond62:                                       ; preds = %for.body50.7
   %conv46.lcssa = phi i16 [ %conv46, %for.body50.7 ]
-  store i16 %conv46.lcssa, i16* undef, align 2
+  store i16 %conv46.lcssa, ptr undef, align 2
   br label %for.end83
 
 for.end83:                                        ; preds = %for.cond62

diff  --git a/polly/test/CodeGen/uninitialized_scalar_memory.ll b/polly/test/CodeGen/uninitialized_scalar_memory.ll
index 18e1848b7583f..935ccc3d6289c 100644
--- a/polly/test/CodeGen/uninitialized_scalar_memory.ll
+++ b/polly/test/CodeGen/uninitialized_scalar_memory.ll
@@ -4,7 +4,7 @@
 ; values.
 ;
 ; CHECK:      polly.start:
-; CHECK-NEXT:   store float %ebig.0, float* %ebig.0.s2a
+; CHECK-NEXT:   store float %ebig.0, ptr %ebig.0.s2a
 ; CHECK-NEXT:   br label %polly.stmt.if.end.entry
 ;
 ;    int g(void);
@@ -28,7 +28,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @M = common global float 0.000000e+00, align 4
 
-define i32 @max(float* noalias %xbig, i32 %eres, i32 %bres, float* noalias %indx) {
+define i32 @max(ptr noalias %xbig, i32 %eres, i32 %bres, ptr noalias %indx) {
 entry:
   br label %for.cond
 
@@ -51,16 +51,16 @@ if.then:                                          ; preds = %for.body
   br label %for.end
 
 if.end:                                           ; preds = %for.body
-  %arrayidx = getelementptr inbounds float, float* %xbig, i64 %indvars.iv
-  %tmp3 = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %xbig, i64 %indvars.iv
+  %tmp3 = load float, ptr %arrayidx, align 4
   %cmp1 = fcmp ogt float %tmp3, %ebig.0
   br i1 %cmp1, label %if.then.2, label %if.end.9
 
 if.then.2:                                        ; preds = %if.end
-  %arrayidx4 = getelementptr inbounds float, float* %xbig, i64 %indvars.iv
-  %tmp4 = load float, float* %arrayidx4, align 4
-  %arrayidx6 = getelementptr inbounds float, float* %indx, i64 %indvars.iv
-  %tmp5 = load float, float* %arrayidx6, align 4
+  %arrayidx4 = getelementptr inbounds float, ptr %xbig, i64 %indvars.iv
+  %tmp4 = load float, ptr %arrayidx4, align 4
+  %arrayidx6 = getelementptr inbounds float, ptr %indx, i64 %indvars.iv
+  %tmp5 = load float, ptr %arrayidx6, align 4
   %conv = sitofp i32 %bres to float
   %add7 = fadd float %tmp5, %conv
   %conv8 = fptosi float %add7 to i32

diff  --git a/polly/test/CodeGen/unpredictable-loop-unsynthesizable.ll b/polly/test/CodeGen/unpredictable-loop-unsynthesizable.ll
index f126941d83706..9164bb4532e64 100644
--- a/polly/test/CodeGen/unpredictable-loop-unsynthesizable.ll
+++ b/polly/test/CodeGen/unpredictable-loop-unsynthesizable.ll
@@ -10,19 +10,19 @@
 ; at codegen because SCEVExpander would use the original induction variable in
 ; generated code.
 
-%struct.bit_stream_struc.3.43.51.71.83.91.99.107.154 = type { i8*, i32, %struct._IO_FILE.1.41.49.69.81.89.97.105.153*, i8*, i32, i64, i32, i32 }
-%struct._IO_FILE.1.41.49.69.81.89.97.105.153 = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker.0.40.48.68.80.88.96.104.152*, %struct._IO_FILE.1.41.49.69.81.89.97.105.153*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
-%struct._IO_marker.0.40.48.68.80.88.96.104.152 = type { %struct._IO_marker.0.40.48.68.80.88.96.104.152*, %struct._IO_FILE.1.41.49.69.81.89.97.105.153*, i32 }
+%struct.bit_stream_struc.3.43.51.71.83.91.99.107.154 = type { ptr, i32, ptr, ptr, i32, i64, i32, i32 }
+%struct._IO_FILE.1.41.49.69.81.89.97.105.153 = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i64, i32, [20 x i8] }
+%struct._IO_marker.0.40.48.68.80.88.96.104.152 = type { ptr, ptr, i32 }
 
-define i32 @copy_buffer(%struct.bit_stream_struc.3.43.51.71.83.91.99.107.154* nocapture %bs) {
+define i32 @copy_buffer(ptr nocapture %bs) {
 entry:
-  %buf_byte_idx5.phi.trans.insert = getelementptr inbounds %struct.bit_stream_struc.3.43.51.71.83.91.99.107.154, %struct.bit_stream_struc.3.43.51.71.83.91.99.107.154* %bs, i64 0, i32 6
+  %buf_byte_idx5.phi.trans.insert = getelementptr inbounds %struct.bit_stream_struc.3.43.51.71.83.91.99.107.154, ptr %bs, i64 0, i32 6
   br i1 undef, label %for.body, label %cleanup
 
 for.body:
   %indvars.iv28 = phi i64 [ %indvars.iv.next29, %for.body ], [ 0, %entry ]
   %indvars.iv.next29 = add nuw nsw i64 %indvars.iv28, 1
-  %0 = load i32, i32* %buf_byte_idx5.phi.trans.insert, align 8
+  %0 = load i32, ptr %buf_byte_idx5.phi.trans.insert, align 8
   %cmp6 = icmp sgt i32 0, %0
   br i1 %cmp6, label %for.body, label %for.end.loopexit
 

diff  --git a/polly/test/CodeGen/variant_load_empty_domain.ll b/polly/test/CodeGen/variant_load_empty_domain.ll
index 7f5754d2ff77d..f5ad0b1958185 100644
--- a/polly/test/CodeGen/variant_load_empty_domain.ll
+++ b/polly/test/CodeGen/variant_load_empty_domain.ll
@@ -11,7 +11,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -21,18 +21,18 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br i1 false, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %tmp1 = load i32, i32* %A, align 4
-  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx4, align 4
+  %tmp1 = load i32, ptr %A, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx4, align 4
   %add = add nsw i32 %tmp2, %tmp1
-  store i32 %add, i32* %arrayidx4, align 4
+  store i32 %add, ptr %arrayidx4, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body

diff  --git a/polly/test/CodeGen/whole-scop-non-affine-subregion.ll b/polly/test/CodeGen/whole-scop-non-affine-subregion.ll
index 552fc91b57a05..931e644f6b8f0 100644
--- a/polly/test/CodeGen/whole-scop-non-affine-subregion.ll
+++ b/polly/test/CodeGen/whole-scop-non-affine-subregion.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %entry.split
 
@@ -22,15 +22,15 @@ entry.split:
   br i1 %cmp, label %if.then, label %if.else
 
 if.then:                                          ; preds = %entry
-  %tmp1 = load i32, i32* %A, align 4
+  %tmp1 = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp1, 1
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %if.end
 
 if.else:                                          ; preds = %entry
-  %tmp2 = load i32, i32* %A, align 4
+  %tmp2 = load i32, ptr %A, align 4
   %sub = add nsw i32 %tmp2, -1
-  store i32 %sub, i32* %A, align 4
+  store i32 %sub, ptr %A, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/polly/test/DeLICM/confused_order.ll b/polly/test/DeLICM/confused_order.ll
index 45c12e7956f94..2015ebcf58f1e 100644
--- a/polly/test/DeLICM/confused_order.ll
+++ b/polly/test/DeLICM/confused_order.ll
@@ -9,7 +9,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @confused_order(double* nocapture %C, i32 %rows, i32 %cols) {
+define void @confused_order(ptr nocapture %C, i32 %rows, i32 %cols) {
 entry:
   %0 = sext i32 %cols to i64
   %1 = sext i32 %rows to i64
@@ -21,15 +21,13 @@ for.body7.lr.ph:
 
 for.end103:
   %a_dot_b_domain.0.lcssa = phi double [ 0.000000e+00, %entry ], [ undef, %for.body7.lr.ph ]
-  %arrayidx107 = getelementptr inbounds double, double* %C, i64 0
-  store double %a_dot_b_domain.0.lcssa, double* %arrayidx107
+  store double %a_dot_b_domain.0.lcssa, ptr %C
   %cmp109 = icmp slt i64 0, %1
   %or.cond = and i1 %cmp108, %cmp109
   br i1 %or.cond, label %if.then110, label %for.inc116
 
 if.then110:
-  %arrayidx114 = getelementptr inbounds double, double* %C, i64 0
-  store double %a_dot_b_domain.0.lcssa, double* %arrayidx114
+  store double %a_dot_b_domain.0.lcssa, ptr %C
   br label %for.inc116
 
 for.inc116:

diff  --git a/polly/test/DeLICM/contradicting_assumed_context_and_domain.ll b/polly/test/DeLICM/contradicting_assumed_context_and_domain.ll
index 18a5e9a3a088a..4e039b22b4158 100644
--- a/polly/test/DeLICM/contradicting_assumed_context_and_domain.ll
+++ b/polly/test/DeLICM/contradicting_assumed_context_and_domain.ll
@@ -8,7 +8,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
 
-define void @f(i16* %arg, i32 %arg1) {
+define void @f(ptr %arg, i32 %arg1) {
 bb:
   %tmp = alloca [24 x i32], align 4
   br label %bb2
@@ -24,12 +24,11 @@ bb5:
   %tmp6 = sub nsw i32 %arg1, %tmp3
   %tmp7 = add i32 %tmp6, -1
   %tmp8 = icmp eq i32 %tmp3, 0
-  %tmp9 = getelementptr inbounds i16, i16* %arg, i32 0
   br i1 %tmp8, label %bb13, label %bb10
 
 bb10:
-  %tmp11 = getelementptr inbounds i16, i16* %tmp9, i32 %tmp7
-  %tmp12 = load i16, i16* %tmp11, align 2
+  %tmp11 = getelementptr inbounds i16, ptr %arg, i32 %tmp7
+  %tmp12 = load i16, ptr %tmp11, align 2
   br label %bb14
 
 bb13:
@@ -38,10 +37,9 @@ bb13:
 bb14:
   %tmp15 = phi i32 [ 0, %bb10 ], [ %tmp21, %bb14 ]
   %tmp16 = phi i16 [ undef, %bb10 ], [ %tmp19, %bb14 ]
-  %tmp17 = getelementptr inbounds [24 x i32], [24 x i32]* %tmp, i32 0, i32 %tmp15
-  %tmp18 = getelementptr inbounds i16, i16* %tmp9, i32 0
-  %tmp19 = load i16, i16* %tmp18, align 2
-  store i32 undef, i32* %tmp17, align 4
+  %tmp17 = getelementptr inbounds [24 x i32], ptr %tmp, i32 0, i32 %tmp15
+  %tmp19 = load i16, ptr %arg, align 2
+  store i32 undef, ptr %tmp17, align 4
   %tmp20 = call i32 asm "#", "=r,r"(i16 %tmp19) readnone
   %tmp21 = add nuw nsw i32 %tmp15, 1
   %tmp22 = icmp eq i32 %tmp21, %tmp3
@@ -53,9 +51,8 @@ bb23:
 bb24:
   %tmp25 = phi i32 [ %tmp30, %bb24 ], [ 0, %bb4 ]
   %tmp26 = mul nsw i32 %tmp25, %arg1
-  %tmp27 = getelementptr inbounds i16, i16* %arg, i32 %tmp26
-  %tmp28 = getelementptr inbounds i16, i16* %tmp27, i32 0
-  %tmp29 = load i16, i16* %tmp28, align 2
+  %tmp27 = getelementptr inbounds i16, ptr %arg, i32 %tmp26
+  %tmp29 = load i16, ptr %tmp27, align 2
   %tmp30 = add nuw nsw i32 %tmp25, 1
   br i1 false, label %bb31, label %bb24
 

diff  --git a/polly/test/DeLICM/load-in-cond-inf-loop.ll b/polly/test/DeLICM/load-in-cond-inf-loop.ll
index 86dacbf5382c7..f0aecfd87a153 100644
--- a/polly/test/DeLICM/load-in-cond-inf-loop.ll
+++ b/polly/test/DeLICM/load-in-cond-inf-loop.ll
@@ -14,12 +14,12 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16
 
 @arr_18 = external dso_local local_unnamed_addr global [0 x i16], align 2
 
-define void @func(i64 %b, i8* %c) {
+define void @func(i64 %b, ptr %c) {
 entry:
   %conv1 = trunc i64 %b to i32
   %sext = shl i32 %conv1, 24
   %conv2 = ashr exact i32 %sext, 24
-  %arrayidx = getelementptr inbounds i8, i8* %c, i64 %b
+  %arrayidx = getelementptr inbounds i8, ptr %c, i64 %b
   %tobool19.not = icmp eq i64 %b, 0
   br label %for.cond3.preheader
 
@@ -32,9 +32,9 @@ for.cond8.preheader:
   br label %for.body13
 
 for.cond.cleanup6:
-  %arrayidx16 = getelementptr inbounds [0 x i16], [0 x i16]* @arr_18, i64 0, i64 %idxprom
+  %arrayidx16 = getelementptr inbounds [0 x i16], ptr @arr_18, i64 0, i64 %idxprom
   %0 = zext i8 %1 to i16
-  store i16 %0, i16* %arrayidx16, align 2
+  store i16 %0, ptr %arrayidx16, align 2
   %inc = add i16 %d.039, 1
   %conv = sext i16 %inc to i32
   %cmp = icmp sgt i32 %conv2, %conv
@@ -44,7 +44,7 @@ for.cond.cleanup12:
   br i1 false, label %for.cond8.preheader, label %for.cond.cleanup6
 
 for.body13:
-  %1 = load i8, i8* %arrayidx, align 1
+  %1 = load i8, ptr %arrayidx, align 1
   br i1 %tobool19.not, label %for.body13, label %for.cond.cleanup12
 
 for.cond.cleanup:

diff  --git a/polly/test/DeLICM/map_memset_zero.ll b/polly/test/DeLICM/map_memset_zero.ll
index f5ed67da3fa67..1a08eee63fe9a 100644
--- a/polly/test/DeLICM/map_memset_zero.ll
+++ b/polly/test/DeLICM/map_memset_zero.ll
@@ -4,9 +4,9 @@
 ; Check that PHI mapping works even in presence of a memset whose'
 ; zero value is used.
 ;
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1)
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1)
 
-define void @func(i8* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.for
 
@@ -17,18 +17,18 @@ outer.for:
 
 
     bodyA:
-      %A_idx = getelementptr inbounds i8, i8* %A, i32 %j
+      %A_idx = getelementptr inbounds i8, ptr %A, i32 %j
       %cond = icmp eq i32 21, 21
       br i1 %cond, label %bodyB, label %bodyC
 
     bodyB:
-      call void @llvm.memset.p0i8.i64(i8* %A_idx, i8 0, i64 1, i32 1, i1 false)
+      call void @llvm.memset.p0.i64(ptr %A_idx, i8 0, i64 1, i32 1, i1 false)
       br label %bodyC
 
     bodyC:
       %phi = phi i8 [1, %bodyA], [0, %bodyB]
-      %a = load i8, i8* %A_idx
-      store i8 %phi, i8* %A_idx
+      %a = load i8, ptr %A_idx
+      store i8 %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/nomap_alreadymapped.ll b/polly/test/DeLICM/nomap_alreadymapped.ll
index 46bc86e683c55..7adf4ba883854 100644
--- a/polly/test/DeLICM/nomap_alreadymapped.ll
+++ b/polly/test/DeLICM/nomap_alreadymapped.ll
@@ -15,7 +15,7 @@
 ; Note that it is undefined which one will be mapped. We keep the test
 ; symmetric so it passes if either one is mapped.
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -52,9 +52,9 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
       %sum = fadd double %phi1, %phi2
-      store double %sum, double* %A_idx
+      store double %sum, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/nomap_escaping.ll b/polly/test/DeLICM/nomap_escaping.ll
index 03057e45d421e..034c0a96ccf24 100644
--- a/polly/test/DeLICM/nomap_escaping.ll
+++ b/polly/test/DeLICM/nomap_escaping.ll
@@ -15,7 +15,7 @@
 ; Supporting this would require reloading the scalar from A[j], and/or
 ; identifying the last instance of fsomeval that escapes.
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -51,8 +51,8 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %fsomeval, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %fsomeval, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/nomap_occupied.ll b/polly/test/DeLICM/nomap_occupied.ll
index 2659da521577b..db33532b1e656 100644
--- a/polly/test/DeLICM/nomap_occupied.ll
+++ b/polly/test/DeLICM/nomap_occupied.ll
@@ -12,7 +12,7 @@
 ;
 ; Check that A[j] is not used for mapping as it is still in use.
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   %fsomeval = fadd double 21.0, 21.0
   br label %outer.preheader
@@ -48,9 +48,9 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %dummy = load double, double* %A_idx
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %dummy = load double, ptr %A_idx
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/nomap_readonly.ll b/polly/test/DeLICM/nomap_readonly.ll
index f416ca12b93f2..1f3b5746fe9b6 100644
--- a/polly/test/DeLICM/nomap_readonly.ll
+++ b/polly/test/DeLICM/nomap_readonly.ll
@@ -13,7 +13,7 @@
 ; Check that fsomeval is not mapped to A[j] because it is read-only.
 ; There is no advantage in mapping values not modified within the SCoP.
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   %fsomeval = fadd double 21.0, 21.0
   br label %outer.preheader
@@ -49,8 +49,8 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %fsomeval, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %fsomeval, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/nomap_spuriouswrite.ll b/polly/test/DeLICM/nomap_spuriouswrite.ll
index 251c7540f2d06..ef470f715bbe6 100644
--- a/polly/test/DeLICM/nomap_spuriouswrite.ll
+++ b/polly/test/DeLICM/nomap_spuriouswrite.ll
@@ -16,7 +16,7 @@
 ; MUST_WRITE. Also nothing can be map to the MAY_WRITE itself because it is a
 ; MAY_WRITE.
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   %fsomeval = fadd double 21.0, 21.0
   br label %outer.preheader
@@ -52,16 +52,16 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
       %phi.cmp = fcmp ogt double %phi, 0.0
       br i1 %phi.cmp, label %reduction.exit.true, label %reduction.exit.unconditional
 
     reduction.exit.true:
-       store double undef, double* %A_idx
+       store double undef, ptr %A_idx
        br label %reduction.exit.unconditional
 
     reduction.exit.unconditional:
-      store double %phi, double* %A_idx
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/nomap_storagesize.ll b/polly/test/DeLICM/nomap_storagesize.ll
index df33fabb0b892..fab8d54c2bdf6 100644
--- a/polly/test/DeLICM/nomap_storagesize.ll
+++ b/polly/test/DeLICM/nomap_storagesize.ll
@@ -12,7 +12,7 @@
 ; Check that %fphi is not mapped to A[j] because it is double-sized,
 ; but A[j] stores only floats.
 ;
-define void @func(float* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -47,9 +47,9 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds float, float* %A, i32 %j
+      %A_idx = getelementptr inbounds float, ptr %A, i32 %j
       %fphi = fptrunc double %phi to float
-      store float %fphi, float* %A_idx
+      store float %fphi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/nomap_writewrite.ll b/polly/test/DeLICM/nomap_writewrite.ll
index 0b415900f5702..06192d9ae19e4 100644
--- a/polly/test/DeLICM/nomap_writewrite.ll
+++ b/polly/test/DeLICM/nomap_writewrite.ll
@@ -20,7 +20,7 @@
 ; write of %phi would be. There is currently no 
diff erentiation between
 ; implicit and explicit writes in Polly.
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   %fsomeval = fadd double 21.0, 21.0
   br label %outer.preheader
@@ -40,12 +40,12 @@ outer.for:
     reduction.for:
       %i = phi i32 [0, %reduction.preheader], [%i.inc, %reduction.inc]
       %phi = phi double [0.0, %reduction.preheader], [%add, %reduction.inc]
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
       %phi.cmp = fcmp ogt double %phi, 0.0
       br i1 %phi.cmp, label %reduction.for.true, label %reduction.for.unconditional
 
     reduction.for.true:
-       store double undef, double* %A_idx
+       store double undef, ptr %A_idx
        br label %reduction.for.unconditional
 
     reduction.for.unconditional:
@@ -65,7 +65,7 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      store double %phi, double* %A_idx
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/outofquota-reverseDomain.ll b/polly/test/DeLICM/outofquota-reverseDomain.ll
index f293f9d703fd1..d40ee03cf3bc8 100644
--- a/polly/test/DeLICM/outofquota-reverseDomain.ll
+++ b/polly/test/DeLICM/outofquota-reverseDomain.ll
@@ -7,7 +7,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 
-define void @test(i32 %size, double* %lhs, i32 %lhsStride, double* %_rhs, double* %res, double %alpha) {
+define void @test(i32 %size, ptr %lhs, i32 %lhsStride, ptr %_rhs, ptr %res, double %alpha) {
 entry:
   br label %if.end
 
@@ -25,45 +25,45 @@ for.cond177.preheader:                            ; preds = %for.cond.cleanup142
 for.body40:                                       ; preds = %for.cond.cleanup142, %if.end
   %j.0464 = phi i32 [ %add55, %for.cond.cleanup142 ], [ 0, %if.end ]
   %mul41 = mul nsw i32 %j.0464, %lhsStride
-  %add.ptr42 = getelementptr inbounds double, double* %lhs, i32 %mul41
+  %add.ptr42 = getelementptr inbounds double, ptr %lhs, i32 %mul41
   %add43 = or i32 %j.0464, 1
-  %arrayidx46 = getelementptr inbounds double, double* %_rhs, i32 %j.0464
-  %tmp = load double, double* %arrayidx46, align 8
+  %arrayidx46 = getelementptr inbounds double, ptr %_rhs, i32 %j.0464
+  %tmp = load double, ptr %arrayidx46, align 8
   %mul47 = fmul double %tmp, %alpha
   %add55 = add nuw nsw i32 %j.0464, 2
-  %arrayidx67 = getelementptr inbounds double, double* %res, i32 %j.0464
-  %tmp1 = load double, double* %arrayidx67, align 8
-  store double undef, double* %arrayidx67, align 8
-  %arrayidx75 = getelementptr inbounds double, double* %res, i32 %add43
-  %tmp2 = load double, double* %arrayidx75, align 8
-  store double undef, double* %arrayidx75, align 8
-  %arrayidx78 = getelementptr inbounds double, double* %add.ptr42, i32 %add43
-  %tmp3 = load double, double* %arrayidx78, align 8
+  %arrayidx67 = getelementptr inbounds double, ptr %res, i32 %j.0464
+  %tmp1 = load double, ptr %arrayidx67, align 8
+  store double undef, ptr %arrayidx67, align 8
+  %arrayidx75 = getelementptr inbounds double, ptr %res, i32 %add43
+  %tmp2 = load double, ptr %arrayidx75, align 8
+  store double undef, ptr %arrayidx75, align 8
+  %arrayidx78 = getelementptr inbounds double, ptr %add.ptr42, i32 %add43
+  %tmp3 = load double, ptr %arrayidx78, align 8
   %mul.i.i388 = fmul double %mul47, %tmp3
   %add88 = fadd double undef, 0.000000e+00
   %cmp120448 = icmp ult i32 %add55, %size
   br i1 %cmp120448, label %for.body122.preheader, label %for.cond.cleanup142
 
 for.body122.preheader:                            ; preds = %for.body40
-  %add.ptr117 = getelementptr inbounds double, double* %res, i32 %add55
+  %add.ptr117 = getelementptr inbounds double, ptr %res, i32 %add55
   br label %for.body122
 
 for.body122:                                      ; preds = %for.body122, %for.body122.preheader
   %i118.0455 = phi i32 [ %add137, %for.body122 ], [ %add55, %for.body122.preheader ]
-  %resIt.0454 = phi double* [ %add.ptr135, %for.body122 ], [ %add.ptr117, %for.body122.preheader ]
+  %resIt.0454 = phi ptr [ %add.ptr135, %for.body122 ], [ %add.ptr117, %for.body122.preheader ]
   %ptmp2.0450 = phi double [ undef, %for.body122 ], [ 0.000000e+00, %for.body122.preheader ]
-  %tmp4 = load double, double* %resIt.0454, align 8
+  %tmp4 = load double, ptr %resIt.0454, align 8
   %add.i.i.i386 = fadd double undef, %tmp4
   %add.i.i.i384 = fadd double undef, %add.i.i.i386
-  store double %add.i.i.i384, double* %resIt.0454, align 8
-  %add.ptr135 = getelementptr inbounds double, double* %resIt.0454, i32 1
+  store double %add.i.i.i384, ptr %resIt.0454, align 8
+  %add.ptr135 = getelementptr inbounds double, ptr %resIt.0454, i32 1
   %add137 = add nuw i32 %i118.0455, 1
   %exitcond469 = icmp eq i32 %add137, %size
   br i1 %exitcond469, label %for.cond.cleanup142.loopexit, label %for.body122
 
 for.cond.cleanup142.loopexit:                     ; preds = %for.body122
-  %.pre = load double, double* %arrayidx67, align 8
-  %.pre471 = load double, double* %arrayidx75, align 8
+  %.pre = load double, ptr %arrayidx67, align 8
+  %.pre471 = load double, ptr %arrayidx75, align 8
   br label %for.cond.cleanup142
 
 for.cond.cleanup142:                              ; preds = %for.cond.cleanup142.loopexit, %for.body40
@@ -71,8 +71,8 @@ for.cond.cleanup142:                              ; preds = %for.cond.cleanup142
   %tmp6 = phi double [ undef, %for.body40 ], [ %.pre, %for.cond.cleanup142.loopexit ]
   %ptmp2.0.lcssa = phi double [ 0.000000e+00, %for.body40 ], [ undef, %for.cond.cleanup142.loopexit ]
   %add163 = fadd double %add88, %ptmp2.0.lcssa
-  store double undef, double* %arrayidx67, align 8
-  store double undef, double* %arrayidx75, align 8
+  store double undef, ptr %arrayidx67, align 8
+  store double undef, ptr %arrayidx75, align 8
   %cmp38 = icmp ult i32 %add55, %and36
   br i1 %cmp38, label %for.body40, label %for.cond177.preheader
 
@@ -81,45 +81,44 @@ for.cond.cleanup179:                              ; preds = %for.cond.cleanup198
 
 for.body180:                                      ; preds = %for.cond.cleanup198, %for.cond177.preheader
   %j176.0442 = phi i32 [ %add195, %for.cond.cleanup198 ], [ %and36, %for.cond177.preheader ]
-  %add.ptr183 = getelementptr inbounds double, double* %lhs, i32 0
-  %arrayidx185 = getelementptr inbounds double, double* %_rhs, i32 %j176.0442
-  %tmp7 = load double, double* %arrayidx185, align 8
+  %arrayidx185 = getelementptr inbounds double, ptr %_rhs, i32 %j176.0442
+  %tmp7 = load double, ptr %arrayidx185, align 8
   %mul186 = fmul double %tmp7, %alpha
-  %arrayidx189 = getelementptr inbounds double, double* %add.ptr183, i32 %j176.0442
-  %tmp8 = load double, double* %arrayidx189, align 8
+  %arrayidx189 = getelementptr inbounds double, ptr %lhs, i32 %j176.0442
+  %tmp8 = load double, ptr %arrayidx189, align 8
   %mul.i.i373 = fmul double %tmp8, %mul186
-  %arrayidx192 = getelementptr inbounds double, double* %res, i32 %j176.0442
-  %tmp9 = load double, double* %arrayidx192, align 8
+  %arrayidx192 = getelementptr inbounds double, ptr %res, i32 %j176.0442
+  %tmp9 = load double, ptr %arrayidx192, align 8
   %add193 = fadd double %tmp9, %mul.i.i373
-  store double %add193, double* %arrayidx192, align 8
+  store double %add193, ptr %arrayidx192, align 8
   %add195 = add nuw nsw i32 %j176.0442, 1
   %cmp197438 = icmp slt i32 %add195, %size
   br i1 %cmp197438, label %for.body199, label %for.cond.cleanup198
 
 for.cond.cleanup198.loopexit:                     ; preds = %for.body199
-  %.pre472 = load double, double* %arrayidx192, align 8
+  %.pre472 = load double, ptr %arrayidx192, align 8
   br label %for.cond.cleanup198
 
 for.cond.cleanup198:                              ; preds = %for.cond.cleanup198.loopexit, %for.body180
   %tmp10 = phi double [ %add193, %for.body180 ], [ %.pre472, %for.cond.cleanup198.loopexit ]
   %t2187.0.lcssa = phi double [ 0.000000e+00, %for.body180 ], [ %add207, %for.cond.cleanup198.loopexit ]
   %add213 = fadd double %tmp10, undef
-  store double %add213, double* %arrayidx192, align 8
+  store double %add213, ptr %arrayidx192, align 8
   %exitcond468 = icmp eq i32 %add195, %size
   br i1 %exitcond468, label %for.cond.cleanup179, label %for.body180
 
 for.body199:                                      ; preds = %for.body199, %for.body180
   %i194.0440 = phi i32 [ %inc209, %for.body199 ], [ %add195, %for.body180 ]
-  %arrayidx200 = getelementptr inbounds double, double* %add.ptr183, i32 %i194.0440
-  %tmp11 = load double, double* %arrayidx200, align 8
+  %arrayidx200 = getelementptr inbounds double, ptr %lhs, i32 %i194.0440
+  %tmp11 = load double, ptr %arrayidx200, align 8
   %mul.i.i372 = fmul double %mul186, %tmp11
-  %arrayidx202 = getelementptr inbounds double, double* %res, i32 %i194.0440
-  %tmp12 = load double, double* %arrayidx202, align 8
+  %arrayidx202 = getelementptr inbounds double, ptr %res, i32 %i194.0440
+  %tmp12 = load double, ptr %arrayidx202, align 8
   %add203 = fadd double %tmp12, %mul.i.i372
-  store double %add203, double* %arrayidx202, align 8
-  %arrayidx205 = getelementptr inbounds double, double* %_rhs, i32 %i194.0440
-  %tmp13 = load double, double* %arrayidx200, align 8
-  %tmp14 = load double, double* %arrayidx205, align 8
+  store double %add203, ptr %arrayidx202, align 8
+  %arrayidx205 = getelementptr inbounds double, ptr %_rhs, i32 %i194.0440
+  %tmp13 = load double, ptr %arrayidx200, align 8
+  %tmp14 = load double, ptr %arrayidx205, align 8
   %mul.i.i = fmul double %tmp13, %tmp14
   %add207 = fadd double undef, %mul.i.i
   %inc209 = add nuw nsw i32 %i194.0440, 1

diff  --git a/polly/test/DeLICM/pass_existence.ll b/polly/test/DeLICM/pass_existence.ll
index 98a4612aa65b4..7ed2da9c1da1a 100644
--- a/polly/test/DeLICM/pass_existence.ll
+++ b/polly/test/DeLICM/pass_existence.ll
@@ -9,7 +9,7 @@
 ;   body: A[0] = 0.0;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -19,7 +19,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 0.0, double* %A
+      store double 0.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/DeLICM/pr41656.ll b/polly/test/DeLICM/pr41656.ll
index 61f1a6f4ad033..965ad9f62ac35 100644
--- a/polly/test/DeLICM/pr41656.ll
+++ b/polly/test/DeLICM/pr41656.ll
@@ -19,7 +19,7 @@ if.end30:                                         ; preds = %entry
 do.body.preheader:                                ; preds = %if.end30
   %idx.ext.i = sext i32 %call24 to i64
   %wide.trip.count.i = zext i32 %call24 to i64
-  %0 = load double*, double** undef, align 8, !tbaa !1
+  %0 = load ptr, ptr undef, align 8, !tbaa !1
   br label %for.body.us.preheader.i
 
 if.then40:                                        ; preds = %if.end30
@@ -34,11 +34,10 @@ for.body.us.i.us:                                 ; preds = %for.body.us.prehead
 for.body.us.i:                                    ; preds = %for.cond2.for.end_crit_edge.us.i, %for.body.us.preheader.i
   %t.1 = phi double [ undef, %for.cond2.for.end_crit_edge.us.i ], [ 0.000000e+00, %for.body.us.preheader.i ]
   %i.05.us.i = phi i32 [ %inc8.us.i, %for.cond2.for.end_crit_edge.us.i ], [ 0, %for.body.us.preheader.i ]
-  %dstp.03.us.i = phi double* [ %add.ptr.us.i, %for.cond2.for.end_crit_edge.us.i ], [ %0, %for.body.us.preheader.i ]
+  %dstp.03.us.i = phi ptr [ %add.ptr.us.i, %for.cond2.for.end_crit_edge.us.i ], [ %0, %for.body.us.preheader.i ]
   %mul.us.i = fmul nsz double %t.1, 0x40A59933FC6A96C1
   %1 = call nsz double @llvm.sin.f64(double %mul.us.i) #2
-  store double %1, double* %dstp.03.us.i, align 8, !tbaa !5
-  %2 = bitcast double* %dstp.03.us.i to i64*
+  store double %1, ptr %dstp.03.us.i, align 8, !tbaa !5
   br label %for.body5.us.for.body5.us_crit_edge.i
 
 for.body5.us.for.body5.us_crit_edge.i:            ; preds = %for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_crit_edge, %for.body.us.i
@@ -48,11 +47,11 @@ for.body5.us.for.body5.us_crit_edge.i:            ; preds = %for.body5.us.for.bo
   br i1 %exitcond.i, label %for.cond2.for.end_crit_edge.us.i, label %for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_crit_edge
 
 for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_crit_edge: ; preds = %for.body5.us.for.body5.us_crit_edge.i
-  %.pre10.i.pre = load i64, i64* %2, align 8, !tbaa !5
+  %.pre10.i.pre = load i64, ptr %dstp.03.us.i, align 8, !tbaa !5
   br label %for.body5.us.for.body5.us_crit_edge.i
 
 for.cond2.for.end_crit_edge.us.i:                 ; preds = %for.body5.us.for.body5.us_crit_edge.i
-  %add.ptr.us.i = getelementptr inbounds double, double* %dstp.03.us.i, i64 %idx.ext.i
+  %add.ptr.us.i = getelementptr inbounds double, ptr %dstp.03.us.i, i64 %idx.ext.i
   %inc8.us.i = add nuw nsw i32 %i.05.us.i, 1
   %exitcond7.i = icmp eq i32 %inc8.us.i, 1024
   br i1 %exitcond7.i, label %fill_samples.exit, label %for.body.us.i

diff  --git a/polly/test/DeLICM/pr48783.ll b/polly/test/DeLICM/pr48783.ll
index 9c332763f598b..3cbd54b93baf3 100644
--- a/polly/test/DeLICM/pr48783.ll
+++ b/polly/test/DeLICM/pr48783.ll
@@ -19,7 +19,7 @@ if.end30:                                         ; preds = %entry
 do.body.preheader:                                ; preds = %if.end30
   %idx.ext.i = sext i32 %call24 to i64
   %wide.trip.count.i = zext i32 %call24 to i64
-  %0 = load double*, double** undef, align 8, !tbaa !1
+  %0 = load ptr, ptr undef, align 8, !tbaa !1
   br label %for.body.us.preheader.i
 
 if.then40:                                        ; preds = %if.end30
@@ -34,11 +34,10 @@ for.body.us.i.us:                                 ; preds = %for.body.us.prehead
 for.body.us.i:                                    ; preds = %for.cond2.for.end_crit_edge.us.i, %for.body.us.preheader.i
   %t.1 = phi double [ undef, %for.cond2.for.end_crit_edge.us.i ], [ 0.000000e+00, %for.body.us.preheader.i ]
   %i.05.us.i = phi i32 [ %inc8.us.i, %for.cond2.for.end_crit_edge.us.i ], [ 0, %for.body.us.preheader.i ]
-  %dstp.03.us.i = phi double* [ %add.ptr.us.i, %for.cond2.for.end_crit_edge.us.i ], [ %0, %for.body.us.preheader.i ]
+  %dstp.03.us.i = phi ptr [ %add.ptr.us.i, %for.cond2.for.end_crit_edge.us.i ], [ %0, %for.body.us.preheader.i ]
   %mul.us.i = fmul nsz double %t.1, 0x40A59933FC6A96C1
   %1 = call nsz double @llvm.sin.f64(double %mul.us.i) #2
-  store double %1, double* %dstp.03.us.i, align 8, !tbaa !5
-  %2 = bitcast double* %dstp.03.us.i to i64*
+  store double %1, ptr %dstp.03.us.i, align 8, !tbaa !5
   br label %for.body5.us.for.body5.us_crit_edge.i
 
 for.body5.us.for.body5.us_crit_edge.i:            ; preds = %for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_crit_edge, %for.body.us.i
@@ -49,11 +48,11 @@ for.body5.us.for.body5.us_crit_edge.i:            ; preds = %for.body5.us.for.bo
   br i1 %exitcond.i, label %for.cond2.for.end_crit_edge.us.i, label %for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_crit_edge
 
 for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_crit_edge: ; preds = %for.body5.us.for.body5.us_crit_edge.i
-  %.pre10.i.pre = load i64, i64* %2, align 8, !tbaa !5
+  %.pre10.i.pre = load i64, ptr %dstp.03.us.i, align 8, !tbaa !5
   br label %for.body5.us.for.body5.us_crit_edge.i
 
 for.cond2.for.end_crit_edge.us.i:                 ; preds = %for.body5.us.for.body5.us_crit_edge.i
-  %add.ptr.us.i = getelementptr inbounds double, double* %dstp.03.us.i, i64 %idx.ext.i
+  %add.ptr.us.i = getelementptr inbounds double, ptr %dstp.03.us.i, i64 %idx.ext.i
   %inc8.us.i = add nuw nsw i32 %i.05.us.i, 1
   %exitcond7.i = icmp eq i32 %inc8.us.i, 1024
   br i1 %exitcond7.i, label %fill_samples.exit, label %for.body.us.i

diff  --git a/polly/test/DeLICM/reduction.ll b/polly/test/DeLICM/reduction.ll
index 122d3d024f148..78c1a4ce52882 100644
--- a/polly/test/DeLICM/reduction.ll
+++ b/polly/test/DeLICM/reduction.ll
@@ -9,7 +9,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.for
 
@@ -38,8 +38,8 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_constant_selfconflict.ll b/polly/test/DeLICM/reduction_constant_selfconflict.ll
index b7a0cc7e5d3ec..012e0a0794b2b 100644
--- a/polly/test/DeLICM/reduction_constant_selfconflict.ll
+++ b/polly/test/DeLICM/reduction_constant_selfconflict.ll
@@ -11,7 +11,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -31,14 +31,14 @@ outer.for:
       %i = phi i32 [0, %reduction.preheader], [%i.inc, %reduction.inc]
       %phi = phi double [0.0, %reduction.preheader], [%add, %reduction.inc]
       %i.cmp = icmp slt i32 %i, 4
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
       br i1 %i.cmp, label %body, label %reduction.exit
 
 
 
         body:
           %add = fadd double %phi, 4.2
-          store double %add, double* %A_idx
+          store double %add, ptr %A_idx
           br label %reduction.inc
 
 
@@ -48,7 +48,7 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      store double %phi, double* %A_idx
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate.ll b/polly/test/DeLICM/reduction_looprotate.ll
index ca100829a5da1..341cc091f7e18 100644
--- a/polly/test/DeLICM/reduction_looprotate.ll
+++ b/polly/test/DeLICM/reduction_looprotate.ll
@@ -12,7 +12,7 @@
 ;
 ; There is nothing to do in this case. All accesses are in %body.
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -35,10 +35,10 @@ outer.for:
 
 
         body:
-          %A_idx = getelementptr inbounds double, double* %A, i32 %j
-          %val = load double, double* %A_idx
+          %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+          %val = load double, ptr %A_idx
           %add = fadd double %val, 4.2
-          store double %add, double* %A_idx
+          store double %add, ptr %A_idx
           br label %reduction.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_alwaystaken.ll b/polly/test/DeLICM/reduction_looprotate_alwaystaken.ll
index 0adf3874411d4..a58eabb4fbd82 100644
--- a/polly/test/DeLICM/reduction_looprotate_alwaystaken.ll
+++ b/polly/test/DeLICM/reduction_looprotate_alwaystaken.ll
@@ -16,7 +16,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A, double* noalias nonnull %dummy) {
+define void @func(ptr noalias nonnull %A, ptr noalias nonnull %dummy) {
 entry:
   br label %outer.preheader
 
@@ -30,7 +30,7 @@ outer.for:
 
 
     reduction.preheader:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
       br label %reduction.for
 
     reduction.for:
@@ -44,7 +44,7 @@ outer.for:
           br i1 %cond, label %alwaystaken, label %body_phi
 
         alwaystaken:
-          store double 0.0, double* %dummy
+          store double 0.0, ptr %dummy
           br label %body_phi
 
         body_phi:
@@ -59,7 +59,7 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      store double %phi, double* %A_idx
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_gvnpre.ll b/polly/test/DeLICM/reduction_looprotate_gvnpre.ll
index 02de6c42ff4c5..5a81441cf0eea 100644
--- a/polly/test/DeLICM/reduction_looprotate_gvnpre.ll
+++ b/polly/test/DeLICM/reduction_looprotate_gvnpre.ll
@@ -11,7 +11,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -36,8 +36,8 @@ outer.for:
 
         body:
           %add = fadd double %phi, 4.2
-          %A_idx = getelementptr inbounds double, double* %A, i32 %j
-          store double %add, double* %A_idx
+          %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+          store double %add, ptr %A_idx
           br label %reduction.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_gvnpre_cond1.ll b/polly/test/DeLICM/reduction_looprotate_gvnpre_cond1.ll
index c43900e0f8173..b5bc0d589c657 100644
--- a/polly/test/DeLICM/reduction_looprotate_gvnpre_cond1.ll
+++ b/polly/test/DeLICM/reduction_looprotate_gvnpre_cond1.ll
@@ -13,7 +13,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -46,8 +46,8 @@ outer.for:
 
         body_join:
           %join = phi double [%phi, %body], [%add, %body_true]
-          %A_idx = getelementptr inbounds double, double* %A, i32 %j
-          store double %join, double* %A_idx
+          %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+          store double %join, ptr %A_idx
           br label %reduction.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_gvnpre_cond2.ll b/polly/test/DeLICM/reduction_looprotate_gvnpre_cond2.ll
index e91b0994c0b67..e995be1143a6a 100644
--- a/polly/test/DeLICM/reduction_looprotate_gvnpre_cond2.ll
+++ b/polly/test/DeLICM/reduction_looprotate_gvnpre_cond2.ll
@@ -16,7 +16,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -30,8 +30,8 @@ outer.for:
 
 
     reduction.preheader:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %init = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %init = load double, ptr %A_idx
       br label %reduction.for
 
     reduction.for:
@@ -47,7 +47,7 @@ outer.for:
 
         body_true:
           %add = fadd double %phi, 4.2
-          store double %add, double* %A_idx
+          store double %add, ptr %A_idx
           br label %body_join
 
         body_join:

diff  --git a/polly/test/DeLICM/reduction_looprotate_gvnpre_nopreheader.ll b/polly/test/DeLICM/reduction_looprotate_gvnpre_nopreheader.ll
index 104487184bdec..ca3a1211ca497 100644
--- a/polly/test/DeLICM/reduction_looprotate_gvnpre_nopreheader.ll
+++ b/polly/test/DeLICM/reduction_looprotate_gvnpre_nopreheader.ll
@@ -12,7 +12,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -34,8 +34,8 @@ outer.for:
 
         body:
           %add = fadd double %phi, 4.2
-          %A_idx = getelementptr inbounds double, double* %A, i32 %j
-          store double %add, double* %A_idx
+          %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+          store double %add, ptr %A_idx
           br label %reduction.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_hoisted.ll b/polly/test/DeLICM/reduction_looprotate_hoisted.ll
index 21c008cf6a673..795b94912aa42 100644
--- a/polly/test/DeLICM/reduction_looprotate_hoisted.ll
+++ b/polly/test/DeLICM/reduction_looprotate_hoisted.ll
@@ -10,7 +10,7 @@
 ;      }
 ;    }
 ;
-define void @func(i32* noalias nonnull %A, i32* noalias nonnull %StartPtr) {
+define void @func(ptr noalias nonnull %A, ptr noalias nonnull %StartPtr) {
 entry:
   br label %outer.preheader
 
@@ -24,7 +24,7 @@ outer.for:
 
 
     reduction.preheader:
-      %Start = load i32, i32* %StartPtr
+      %Start = load i32, ptr %StartPtr
       br label %reduction.for
 
     reduction.for:
@@ -46,8 +46,8 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      %A_idx = getelementptr inbounds i32, i32* %A, i32 %j
-      store i32 %mul, i32* %A_idx
+      %A_idx = getelementptr inbounds i32, ptr %A, i32 %j
+      store i32 %mul, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_licm.ll b/polly/test/DeLICM/reduction_looprotate_licm.ll
index f6bac8d68fbcb..935f31abced30 100644
--- a/polly/test/DeLICM/reduction_looprotate_licm.ll
+++ b/polly/test/DeLICM/reduction_looprotate_licm.ll
@@ -9,7 +9,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -23,8 +23,8 @@ outer.for:
 
 
     reduction.preheader:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %init = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %init = load double, ptr %A_idx
       br label %reduction.for
 
     reduction.for:
@@ -46,7 +46,7 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      store double %add, double* %A_idx
+      store double %add, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_licm2.ll b/polly/test/DeLICM/reduction_looprotate_licm2.ll
index ada9d9ee8a2cd..8b06e7466f20a 100644
--- a/polly/test/DeLICM/reduction_looprotate_licm2.ll
+++ b/polly/test/DeLICM/reduction_looprotate_licm2.ll
@@ -16,7 +16,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -30,8 +30,8 @@ outer.for:
 
 
     reduction.preheader:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %init = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %init = load double, ptr %A_idx
       br label %reduction.for
 
     reduction.for:
@@ -53,7 +53,7 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      store double %phi, double* %A_idx
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_licm_double_write.ll b/polly/test/DeLICM/reduction_looprotate_licm_double_write.ll
index 6f3178633ad89..51bb7291a73ed 100644
--- a/polly/test/DeLICM/reduction_looprotate_licm_double_write.ll
+++ b/polly/test/DeLICM/reduction_looprotate_licm_double_write.ll
@@ -14,7 +14,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -28,8 +28,8 @@ outer.for:
 
 
     reduction.preheader:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %init = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %init = load double, ptr %A_idx
       br label %reduction.for
 
     reduction.for:
@@ -51,8 +51,8 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      store double %add, double* %A_idx
-      store double %add, double* %A_idx
+      store double %add, ptr %A_idx
+      store double %add, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_licm_nopreheader.ll b/polly/test/DeLICM/reduction_looprotate_licm_nopreheader.ll
index 1d0491dab7c59..41538239fbd86 100644
--- a/polly/test/DeLICM/reduction_looprotate_licm_nopreheader.ll
+++ b/polly/test/DeLICM/reduction_looprotate_licm_nopreheader.ll
@@ -11,7 +11,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -21,8 +21,8 @@ outer.preheader:
 outer.for:
   %j = phi i32 [0, %outer.preheader], [%j.inc, %outer.inc]
   %j.cmp = icmp slt i32 %j, 2
-  %A_idx = getelementptr inbounds double, double* %A, i32 %j
-  %init = load double, double* %A_idx
+  %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+  %init = load double, ptr %A_idx
   br i1 %j.cmp, label %reduction.for, label %outer.exit
 
 
@@ -46,7 +46,7 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      store double %add, double* %A_idx
+      store double %add, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_load.ll b/polly/test/DeLICM/reduction_looprotate_load.ll
index d3820cb1bb068..6aa83ae195031 100644
--- a/polly/test/DeLICM/reduction_looprotate_load.ll
+++ b/polly/test/DeLICM/reduction_looprotate_load.ll
@@ -9,7 +9,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A, double* noalias nonnull %StartPtr) {
+define void @func(ptr noalias nonnull %A, ptr noalias nonnull %StartPtr) {
 entry:
   br label %outer.preheader
 
@@ -23,7 +23,7 @@ outer.for:
 
 
     reduction.preheader:
-      %Start = load double, double* %StartPtr
+      %Start = load double, ptr %StartPtr
       br label %reduction.for
 
     reduction.for:
@@ -45,8 +45,8 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %add, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %add, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_loopguard_gvnpre.ll b/polly/test/DeLICM/reduction_looprotate_loopguard_gvnpre.ll
index e071b56e9494a..35c723e864d27 100644
--- a/polly/test/DeLICM/reduction_looprotate_loopguard_gvnpre.ll
+++ b/polly/test/DeLICM/reduction_looprotate_loopguard_gvnpre.ll
@@ -13,7 +13,7 @@
 ;      }
 ;    }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -39,8 +39,8 @@ outer.for:
 
         body:
           %add = fadd double %phi, 4.2
-          %A_idx = getelementptr inbounds double, double* %A, i32 %j
-          store double %add, double* %A_idx
+          %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+          store double %add, ptr %A_idx
           br label %reduction.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_loopguard_licm1.ll b/polly/test/DeLICM/reduction_looprotate_loopguard_licm1.ll
index 5cb2884f47069..2b5f4d8151a8a 100644
--- a/polly/test/DeLICM/reduction_looprotate_loopguard_licm1.ll
+++ b/polly/test/DeLICM/reduction_looprotate_loopguard_licm1.ll
@@ -13,7 +13,7 @@
 ;      }
 ;    }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -27,8 +27,8 @@ outer.for:
 
 
     reduction.guard:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %init = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %init = load double, ptr %A_idx
       %guard.cmp = icmp sle i32 %n,0
       br i1 %guard.cmp, label %reduction.exit, label %reduction.for
 
@@ -52,7 +52,7 @@ outer.for:
 
     reduction.exit:
       %result = phi double [%init, %reduction.guard], [%add, %reduction.inc]
-      store double %result, double* %A_idx
+      store double %result, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_loopguard_licm2.ll b/polly/test/DeLICM/reduction_looprotate_loopguard_licm2.ll
index bd338863a2620..2e92813d55510 100644
--- a/polly/test/DeLICM/reduction_looprotate_loopguard_licm2.ll
+++ b/polly/test/DeLICM/reduction_looprotate_loopguard_licm2.ll
@@ -15,7 +15,7 @@
 ;      }
 ;    }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -29,8 +29,8 @@ outer.for:
 
 
     reduction.guard:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %init = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %init = load double, ptr %A_idx
       %guard.cmp = icmp sle i32 %n,0
       br i1 %guard.cmp, label %reduction.skip, label %reduction.for
 
@@ -53,7 +53,7 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      store double %add, double* %A_idx
+      store double %add, ptr %A_idx
       br label %reduction.skip
 
     reduction.skip:

diff  --git a/polly/test/DeLICM/reduction_looprotate_loopguard_licm3.ll b/polly/test/DeLICM/reduction_looprotate_loopguard_licm3.ll
index 642f4d38cf322..784c8ef2d321c 100644
--- a/polly/test/DeLICM/reduction_looprotate_loopguard_licm3.ll
+++ b/polly/test/DeLICM/reduction_looprotate_loopguard_licm3.ll
@@ -15,7 +15,7 @@
 ;      }
 ;    }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -33,8 +33,8 @@ outer.for:
       br i1 %guard.cmp, label %reduction.skip, label %reduction.preheader
 
     reduction.preheader:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %init = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %init = load double, ptr %A_idx
       br label %reduction.for
 
     reduction.for:
@@ -56,7 +56,7 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      store double %add, double* %A_idx
+      store double %add, ptr %A_idx
       br label %reduction.skip
 
     reduction.skip:

diff  --git a/polly/test/DeLICM/reduction_looprotate_readonly.ll b/polly/test/DeLICM/reduction_looprotate_readonly.ll
index 24bf07b38d671..a9535467b3bde 100644
--- a/polly/test/DeLICM/reduction_looprotate_readonly.ll
+++ b/polly/test/DeLICM/reduction_looprotate_readonly.ll
@@ -9,7 +9,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A, double %Start) {
+define void @func(ptr noalias nonnull %A, double %Start) {
 entry:
   br label %outer.preheader
 
@@ -44,8 +44,8 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %add, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %add, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_synthesizable.ll b/polly/test/DeLICM/reduction_looprotate_synthesizable.ll
index 2560cde7524c0..3d486910c8612 100644
--- a/polly/test/DeLICM/reduction_looprotate_synthesizable.ll
+++ b/polly/test/DeLICM/reduction_looprotate_synthesizable.ll
@@ -9,7 +9,7 @@
 ;      }
 ;    }
 ;
-define void @func(i32* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -44,8 +44,8 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      %A_idx = getelementptr inbounds i32, i32* %A, i32 %j
-      store i32 %mul, i32* %A_idx
+      %A_idx = getelementptr inbounds i32, ptr %A, i32 %j
+      store i32 %mul, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_looprotate_undef.ll b/polly/test/DeLICM/reduction_looprotate_undef.ll
index e4e1769a315f1..8c0544ed77852 100644
--- a/polly/test/DeLICM/reduction_looprotate_undef.ll
+++ b/polly/test/DeLICM/reduction_looprotate_undef.ll
@@ -9,7 +9,7 @@
 ;      }
 ;    }
 ;
-define void @func(i32* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -46,8 +46,8 @@ outer.for:
       br i1 %i.cmp, label %reduction.for, label %reduction.exit
 
     reduction.exit:
-      %A_idx = getelementptr inbounds i32, i32* %A, i32 %j
-      store i32 %conv, i32* %A_idx
+      %A_idx = getelementptr inbounds i32, ptr %A, i32 %j
+      store i32 %conv, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_overapproximate.ll b/polly/test/DeLICM/reduction_overapproximate.ll
index 72190378d3d50..2d33d3a0ece2a 100644
--- a/polly/test/DeLICM/reduction_overapproximate.ll
+++ b/polly/test/DeLICM/reduction_overapproximate.ll
@@ -12,7 +12,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -53,8 +53,8 @@ outer.for:
 
     reduction.exit:
       %val = phi double [%add, %reduction.inc], [0.0, %reduction.checkloop]
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_preheader.ll b/polly/test/DeLICM/reduction_preheader.ll
index 3be7bbf4601c9..c6e3643797c04 100644
--- a/polly/test/DeLICM/reduction_preheader.ll
+++ b/polly/test/DeLICM/reduction_preheader.ll
@@ -9,7 +9,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -44,8 +44,8 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reduction_unrelatedunusual.ll b/polly/test/DeLICM/reduction_unrelatedunusual.ll
index c275ae19633d3..04c437770700b 100644
--- a/polly/test/DeLICM/reduction_unrelatedunusual.ll
+++ b/polly/test/DeLICM/reduction_unrelatedunusual.ll
@@ -15,7 +15,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A, double* noalias nonnull %C) {
+define void @func(ptr noalias nonnull %A, ptr noalias nonnull %C) {
 entry:
   br label %outer.for
 
@@ -35,8 +35,8 @@ outer.for:
 
         body:
           %add = fadd double %phi, 4.2
-          store double 21.0, double* %C
-          store double 41.0, double* %C
+          store double 21.0, ptr %C
+          store double 41.0, ptr %C
           br label %reduction.inc
 
 
@@ -46,8 +46,8 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reject_loadafterstore.ll b/polly/test/DeLICM/reject_loadafterstore.ll
index 0a3eb624f352c..8af6e5e4818ca 100644
--- a/polly/test/DeLICM/reject_loadafterstore.ll
+++ b/polly/test/DeLICM/reject_loadafterstore.ll
@@ -10,7 +10,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -45,9 +45,9 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %phi, double* %A_idx
-      %dummy = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %phi, ptr %A_idx
+      %dummy = load double, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reject_outofquota.ll b/polly/test/DeLICM/reject_outofquota.ll
index 542f7492475bf..551431f0823c7 100644
--- a/polly/test/DeLICM/reject_outofquota.ll
+++ b/polly/test/DeLICM/reject_outofquota.ll
@@ -10,7 +10,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -45,8 +45,8 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reject_storeafterstore.ll b/polly/test/DeLICM/reject_storeafterstore.ll
index 11253e17b70b2..1ec5ef67344c5 100644
--- a/polly/test/DeLICM/reject_storeafterstore.ll
+++ b/polly/test/DeLICM/reject_storeafterstore.ll
@@ -10,7 +10,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -45,9 +45,9 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double 0.0, double* %A_idx
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double 0.0, ptr %A_idx
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reject_storeinsubregion.ll b/polly/test/DeLICM/reject_storeinsubregion.ll
index 6be30cc419b69..1d38e80665688 100644
--- a/polly/test/DeLICM/reject_storeinsubregion.ll
+++ b/polly/test/DeLICM/reject_storeinsubregion.ll
@@ -13,7 +13,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -39,16 +39,16 @@ outer.for:
 
         body:
           %add = fadd double %phi, 4.2
-          %A_idxp = getelementptr inbounds double, double* %A, i32 %j
+          %A_idxp = getelementptr inbounds double, ptr %A, i32 %j
           %add.cmp = fcmp ogt double %add, 42.0
           br i1 %add.cmp , label %body_true, label %body_false
 
         body_true:
-          %dummy = load double, double* %A_idxp
+          %dummy = load double, ptr %A_idxp
           br label %reduction.inc
 
         body_false:
-          store double 0.0, double* %A_idxp
+          store double 0.0, ptr %A_idxp
           br label %reduction.inc
 
 
@@ -58,8 +58,8 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/reject_unusualstore.ll b/polly/test/DeLICM/reject_unusualstore.ll
index fa613d39a78be..a18a0c3ce9c43 100644
--- a/polly/test/DeLICM/reject_unusualstore.ll
+++ b/polly/test/DeLICM/reject_unusualstore.ll
@@ -14,7 +14,7 @@
 ;    }
 ;
 
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -28,9 +28,9 @@ outer.for:
 
 
     reduction.preheader:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double 21.0, double* %A_idx
-      store double 42.0, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double 21.0, ptr %A_idx
+      store double 42.0, ptr %A_idx
       br label %reduction.for
 
     reduction.for:
@@ -52,7 +52,7 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      store double %phi, double* %A_idx
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/skip_maywrite.ll b/polly/test/DeLICM/skip_maywrite.ll
index 46636cca86907..1e5f6b169fe45 100644
--- a/polly/test/DeLICM/skip_maywrite.ll
+++ b/polly/test/DeLICM/skip_maywrite.ll
@@ -12,7 +12,7 @@
 ;    }
 ;
 
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -51,8 +51,8 @@ outer.for:
       br i1 %phi.cmp , label %reduction.exit_true, label %reduction.exit_false
 
     reduction.exit_true:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
     reduction.exit_false:

diff  --git a/polly/test/DeLICM/skip_multiaccess.ll b/polly/test/DeLICM/skip_multiaccess.ll
index 92c0b123de4c3..6a8c8e5325e1d 100644
--- a/polly/test/DeLICM/skip_multiaccess.ll
+++ b/polly/test/DeLICM/skip_multiaccess.ll
@@ -17,15 +17,15 @@
 ;      }
 ;    }
 
-declare void @llvm.memset.p0f64.i64(double* nocapture, i8, i64, i32, i1)
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1)
 
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.for
 
 outer.for:
   %j = phi i32 [0, %entry], [%j.inc, %outer.inc]
-  call void @llvm.memset.p0f64.i64(double* %A, i8 0, i64 4, i32 1, i1 false)
+  call void @llvm.memset.p0.i64(ptr %A, i8 0, i64 4, i32 1, i1 false)
   %j.cmp = icmp slt i32 %j, 2
   br i1 %j.cmp, label %reduction.for, label %outer.exit
 
@@ -49,8 +49,8 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %phi, ptr %A_idx
       br label %outer.inc
 
 

diff  --git a/polly/test/DeLICM/skip_notinloop.ll b/polly/test/DeLICM/skip_notinloop.ll
index d9bd2f5049da6..0730a3a9a4f5f 100644
--- a/polly/test/DeLICM/skip_notinloop.ll
+++ b/polly/test/DeLICM/skip_notinloop.ll
@@ -7,7 +7,7 @@
 ;      A[0] = phi;
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %reduction.preheader
 
@@ -33,7 +33,7 @@ entry:
     br label %reduction.for
 
   reduction.exit:
-    store double %phi, double* %A
+    store double %phi, ptr %A
     br label %return
 
 

diff  --git a/polly/test/DeLICM/skip_scalaraccess.ll b/polly/test/DeLICM/skip_scalaraccess.ll
index 9cd9ded05910b..fa95d382409ac 100644
--- a/polly/test/DeLICM/skip_scalaraccess.ll
+++ b/polly/test/DeLICM/skip_scalaraccess.ll
@@ -9,7 +9,7 @@
 ;      }
 ;    }
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %outer.preheader
 
@@ -44,7 +44,7 @@ outer.for:
       br label %reduction.for
 
     reduction.exit:
-      store double %phi, double* %A
+      store double %phi, ptr %A
       br label %outer.inc
 
 

diff  --git a/polly/test/DeadCodeElimination/chained_iterations.ll b/polly/test/DeadCodeElimination/chained_iterations.ll
index 41327899d26f0..b79fdd659aaec 100644
--- a/polly/test/DeadCodeElimination/chained_iterations.ll
+++ b/polly/test/DeadCodeElimination/chained_iterations.ll
@@ -17,8 +17,8 @@ entry:
 
 for.body.1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 2, i32* %arrayidx.1, align 4
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 2, ptr %arrayidx.1, align 4
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 200
   br i1 %exitcond.1, label %for.body.1, label %exit.1
@@ -28,8 +28,8 @@ exit.1:
 
 for.body.2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
-  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  store i32 5, i32* %arrayidx.2, align 4
+  %arrayidx.2 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  store i32 5, ptr %arrayidx.2, align 4
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 200
   br i1 %exitcond.2, label %for.body.2, label %exit.2
@@ -39,8 +39,8 @@ exit.2:
 
 for.body.3:
   %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %for.body.3 ]
-  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
-  store i32 7, i32* %arrayidx.3, align 4
+  %arrayidx.3 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.3
+  store i32 7, ptr %arrayidx.3, align 4
   %indvar.next.3 = add i64 %indvar.3, 1
   %exitcond.3 = icmp ne i64 %indvar.next.3, 200
   br i1 %exitcond.3, label %for.body.3 , label %exit.3

diff  --git a/polly/test/DeadCodeElimination/chained_iterations_2.ll b/polly/test/DeadCodeElimination/chained_iterations_2.ll
index ca141e3f57eae..1d1af92db5da5 100644
--- a/polly/test/DeadCodeElimination/chained_iterations_2.ll
+++ b/polly/test/DeadCodeElimination/chained_iterations_2.ll
@@ -18,8 +18,8 @@ entry:
 
 for.body.1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 2, i32* %arrayidx.1, align 4
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 2, ptr %arrayidx.1, align 4
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 200
   br i1 %exitcond.1, label %for.body.1, label %exit.1
@@ -29,10 +29,10 @@ exit.1:
 
 for.body.2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
-  %arrayidx.2.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  %val = load i32, i32* %arrayidx.2.a, align 4
-  %arrayidx.2.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.2
-  store i32 %val, i32* %arrayidx.2.b, align 4
+  %arrayidx.2.a = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  %val = load i32, ptr %arrayidx.2.a, align 4
+  %arrayidx.2.b = getelementptr [200 x i32], ptr %B, i64 0, i64 %indvar.2
+  store i32 %val, ptr %arrayidx.2.b, align 4
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 200
   br i1 %exitcond.2, label %for.body.2, label %exit.2
@@ -42,10 +42,10 @@ exit.2:
 
 for.body.3:
   %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %for.body.3 ]
-  %arrayidx.3.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
-  %arrayidx.3.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.3
-  store i32 5, i32* %arrayidx.3.a, align 4
-  store i32 5, i32* %arrayidx.3.b, align 4
+  %arrayidx.3.a = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.3
+  %arrayidx.3.b = getelementptr [200 x i32], ptr %B, i64 0, i64 %indvar.3
+  store i32 5, ptr %arrayidx.3.a, align 4
+  store i32 5, ptr %arrayidx.3.b, align 4
   %indvar.next.3 = add i64 %indvar.3, 1
   %exitcond.3 = icmp ne i64 %indvar.next.3, 200
   br i1 %exitcond.3, label %for.body.3 , label %exit.3

diff  --git a/polly/test/DeadCodeElimination/computeout.ll b/polly/test/DeadCodeElimination/computeout.ll
index df0634e79a285..51850d7da3497 100644
--- a/polly/test/DeadCodeElimination/computeout.ll
+++ b/polly/test/DeadCodeElimination/computeout.ll
@@ -19,8 +19,8 @@ entry:
 
 S1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 2, i32* %arrayidx.1
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 2, ptr %arrayidx.1
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 100
   br i1 %exitcond.1, label %S1, label %exit.1
@@ -30,8 +30,8 @@ exit.1:
 
 S2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
-  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  store i32 5, i32* %arrayidx.2
+  %arrayidx.2 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  store i32 5, ptr %arrayidx.2
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 10
   br i1 %exitcond.2, label %S2, label %exit.2
@@ -41,8 +41,8 @@ exit.2:
 
 S3:
   %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
-  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
-  store i32 7, i32* %arrayidx.3
+  %arrayidx.3 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.3
+  store i32 7, ptr %arrayidx.3
   %indvar.next.3 = add i64 %indvar.3, 1
   %exitcond.3 = icmp ne i64 %indvar.next.3, 200
   br i1 %exitcond.3, label %S3 , label %exit.3

diff  --git a/polly/test/DeadCodeElimination/dead_iteration_elimination.ll b/polly/test/DeadCodeElimination/dead_iteration_elimination.ll
index 66ceab8830d94..f496f7828e3d4 100644
--- a/polly/test/DeadCodeElimination/dead_iteration_elimination.ll
+++ b/polly/test/DeadCodeElimination/dead_iteration_elimination.ll
@@ -21,8 +21,8 @@ entry:
 
 for.body.1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 2, i32* %arrayidx.1, align 4
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 2, ptr %arrayidx.1, align 4
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 200
   br i1 %exitcond.1, label %for.body.1, label %exit.1
@@ -32,8 +32,8 @@ exit.1:
 
 for.body.2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
-  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  store i32 5, i32* %arrayidx.2, align 4
+  %arrayidx.2 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  store i32 5, ptr %arrayidx.2, align 4
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 50
   br i1 %exitcond.2, label %for.body.2, label %exit.2
@@ -43,10 +43,10 @@ exit.2:
 
 for.body.3:
   %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %for.body.3 ]
-  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
-  %val = load i32, i32* %arrayidx.3, align 4
+  %arrayidx.3 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.3
+  %val = load i32, ptr %arrayidx.3, align 4
   %add = add nsw i32 %val, 5
-  store i32 %add, i32* %arrayidx.3, align 4
+  store i32 %add, ptr %arrayidx.3, align 4
   %indvar.next.3 = add i64 %indvar.3, 1
   %exitcond.3 = icmp ne i64 %indvar.next.3, 70
   br i1 %exitcond.3, label %for.body.3 , label %exit.3
@@ -58,8 +58,8 @@ for.body.4:
   %indvar.4 = phi i64 [ 0, %exit.3 ], [ %indvar.next.4, %for.body.4 ]
   %indvar.plus = add i64 %indvar.4, 100
   %trunc = trunc i64 %indvar.plus to i32
-  %arrayidx.4 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.plus
-  store i32 %trunc, i32* %arrayidx.4, align 4
+  %arrayidx.4 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.plus
+  store i32 %trunc, ptr %arrayidx.4, align 4
   %indvar.next.4 = add i64 %indvar.4, 1
   %exitcond.4 = icmp ne i64 %indvar.next.4, 10
   br i1 %exitcond.4, label %for.body.4, label %exit.4

diff  --git a/polly/test/DeadCodeElimination/non-affine-affine-mix.ll b/polly/test/DeadCodeElimination/non-affine-affine-mix.ll
index 0ece91ea63bcf..e6a5dd204ca11 100644
--- a/polly/test/DeadCodeElimination/non-affine-affine-mix.ll
+++ b/polly/test/DeadCodeElimination/non-affine-affine-mix.ll
@@ -20,7 +20,7 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
 declare i32 @bar(i32) #1
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -31,8 +31,8 @@ for.cond:
 
 S1:
   %nonaff = call i32 @bar(i32 %i.0)
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %nonaff
-  store i32 %i.0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %nonaff
+  store i32 %i.0, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:
@@ -48,8 +48,8 @@ for.cond.2:
   br i1 %exitcond.2, label %S2, label %for.end
 
 S2:
-  %arrayidx.2 = getelementptr inbounds i32, i32* %A, i32 %i.2
-  store i32 %i.2, i32* %arrayidx.2, align 4
+  %arrayidx.2 = getelementptr inbounds i32, ptr %A, i32 %i.2
+  store i32 %i.2, ptr %arrayidx.2, align 4
   br label %for.inc.2
 
 for.inc.2:

diff  --git a/polly/test/DeadCodeElimination/non-affine.ll b/polly/test/DeadCodeElimination/non-affine.ll
index 01646c90a256d..38a7fcbcf9c99 100644
--- a/polly/test/DeadCodeElimination/non-affine.ll
+++ b/polly/test/DeadCodeElimination/non-affine.ll
@@ -11,7 +11,7 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
 declare i32 @bar(i32) #1
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -22,8 +22,8 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %nonaff = call i32 @bar(i32 %i.0)
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %nonaff
-  store i32 %i.0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %nonaff
+  store i32 %i.0, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/DeadCodeElimination/null_schedule.ll b/polly/test/DeadCodeElimination/null_schedule.ll
index 055daadfa2f53..633a84b5d92be 100644
--- a/polly/test/DeadCodeElimination/null_schedule.ll
+++ b/polly/test/DeadCodeElimination/null_schedule.ll
@@ -14,8 +14,7 @@ entry:
   %A = alloca [200 x i32], align 16
   %B = alloca [200 x i32], align 16
 
-  %A.zero = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 0
-  store i32 1, i32* %A.zero, align 4
+  store i32 1, ptr %A, align 4
 
   br label %for.body.1
 
@@ -23,11 +22,11 @@ for.body.1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
   %indvar.next.1 = add i64 %indvar.1, 1
 
-  %A.current.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  %val1.1 = load i32, i32* %A.current.1, align 4
+  %A.current.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  %val1.1 = load i32, ptr %A.current.1, align 4
   %val2.1 = mul i32 %val1.1, 2
-  %A.next.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.next.1
-  store i32 %val2.1, i32* %A.next.1, align 4
+  %A.next.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.next.1
+  store i32 %val2.1, ptr %A.next.1, align 4
 
   %exitcond.1 = icmp ne i64 %indvar.next.1, 100
   br i1 %exitcond.1, label %for.body.1, label %exit.1
@@ -38,11 +37,11 @@ exit.1:
 for.body.2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
 
-  %B.current.2 = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.2
-  %val1.2 = load i32, i32* %B.current.2, align 4
+  %B.current.2 = getelementptr [200 x i32], ptr %B, i64 0, i64 %indvar.2
+  %val1.2 = load i32, ptr %B.current.2, align 4
   %val2.2 = mul i32 %val1.2, 2
-  %A.current.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  store i32 %val2.2, i32* %A.current.2, align 4
+  %A.current.2 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  store i32 %val2.2, ptr %A.current.2, align 4
 
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 200

diff  --git a/polly/test/DependenceInfo/computeout.ll b/polly/test/DependenceInfo/computeout.ll
index f334bb37e991a..048de29864d32 100644
--- a/polly/test/DependenceInfo/computeout.ll
+++ b/polly/test/DependenceInfo/computeout.ll
@@ -20,8 +20,8 @@ entry:
 
 S1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 2, i32* %arrayidx.1
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 2, ptr %arrayidx.1
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 100
   br i1 %exitcond.1, label %S1, label %exit.1
@@ -31,8 +31,8 @@ exit.1:
 
 S2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
-  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  store i32 5, i32* %arrayidx.2
+  %arrayidx.2 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  store i32 5, ptr %arrayidx.2
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 10
   br i1 %exitcond.2, label %S2, label %exit.2
@@ -42,8 +42,8 @@ exit.2:
 
 S3:
   %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
-  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
-  store i32 7, i32* %arrayidx.3
+  %arrayidx.3 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.3
+  store i32 7, ptr %arrayidx.3
   %indvar.next.3 = add i64 %indvar.3, 1
   %exitcond.3 = icmp ne i64 %indvar.next.3, 200
   br i1 %exitcond.3, label %S3 , label %exit.3

diff  --git a/polly/test/DependenceInfo/
diff erent_schedule_dimensions.ll b/polly/test/DependenceInfo/
diff erent_schedule_dimensions.ll
index 9fa44ff743458..3f966168d3b71 100644
--- a/polly/test/DependenceInfo/
diff erent_schedule_dimensions.ll
+++ b/polly/test/DependenceInfo/
diff erent_schedule_dimensions.ll
@@ -23,7 +23,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @hoge(i32 %arg, [1024 x double]* %arg1) {
+define void @hoge(i32 %arg, ptr %arg1) {
 bb:
   br label %bb2
 
@@ -33,10 +33,9 @@ bb2:                                              ; preds = %bb
 bb3:                                              ; preds = %bb10, %bb2
   %tmp = phi i64 [ 0, %bb10 ], [ 0, %bb2 ]
   %tmp4 = icmp sgt i32 %arg, 0
-  %tmp5 = getelementptr inbounds [1024 x double], [1024 x double]* %arg1, i64 0, i64 0
-  %tmp6 = load double, double* %tmp5, align 8
+  %tmp6 = load double, ptr %arg1, align 8
   %tmp7 = fadd double undef, %tmp6
-  store double %tmp7, double* %tmp5, align 8
+  store double %tmp7, ptr %arg1, align 8
   br i1 false, label %bb8, label %bb9
 
 bb8:                                              ; preds = %bb3
@@ -47,8 +46,8 @@ bb9:                                              ; preds = %bb3
 
 bb10:                                             ; preds = %bb9, %bb8
   %tmp11 = phi double [ undef, %bb8 ], [ undef, %bb9 ]
-  %tmp12 = getelementptr inbounds [1024 x double], [1024 x double]* %arg1, i64 %tmp, i64 0
-  store double %tmp11, double* %tmp12, align 8
+  %tmp12 = getelementptr inbounds [1024 x double], ptr %arg1, i64 %tmp, i64 0
+  store double %tmp11, ptr %tmp12, align 8
   %tmp13 = add nuw nsw i64 0, 1
   %tmp14 = trunc i64 %tmp13 to i32
   br i1 false, label %bb3, label %bb15

diff  --git a/polly/test/DependenceInfo/do_pluto_matmult.ll b/polly/test/DependenceInfo/do_pluto_matmult.ll
index 7b2b06e52a06c..d71608e80e703 100644
--- a/polly/test/DependenceInfo/do_pluto_matmult.ll
+++ b/polly/test/DependenceInfo/do_pluto_matmult.ll
@@ -5,12 +5,12 @@
 
 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"
 
-%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
-%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
+%struct._IO_FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i64, i32, [20 x i8] }
+%struct._IO_marker = type { ptr, ptr, i32 }
 
- at A = common global [36 x [49 x double]] zeroinitializer, align 8 ; <[36 x [49 x double]]*> [#uses=3]
- at B = common global [36 x [49 x double]] zeroinitializer, align 8 ; <[36 x [49 x double]]*> [#uses=3]
- at C = common global [36 x [49 x double]] zeroinitializer, align 8 ; <[36 x [49 x double]]*> [#uses=4]
+ at A = common global [36 x [49 x double]] zeroinitializer, align 8 ; <ptr> [#uses=3]
+ at B = common global [36 x [49 x double]] zeroinitializer, align 8 ; <ptr> [#uses=3]
+ at C = common global [36 x [49 x double]] zeroinitializer, align 8 ; <ptr> [#uses=4]
 
 define void @do_pluto_matmult() nounwind {
 entry:
@@ -23,21 +23,21 @@ do.body:                                          ; preds = %do.cond42, %entry
 
 do.body1:                                         ; preds = %do.cond36, %do.body
   %indvar1 = phi i64 [ %indvar.next2, %do.cond36 ], [ 0, %do.body ] ; <i64> [#uses=3]
-  %arrayidx5 = getelementptr [36 x [49 x double]], [36 x [49 x double]]* @C, i64 0, i64 %indvar3, i64 %indvar1 ; <double*> [#uses=2]
+  %arrayidx5 = getelementptr [36 x [49 x double]], ptr @C, i64 0, i64 %indvar3, i64 %indvar1 ; <ptr> [#uses=2]
   br label %do.body2
 
 do.body2:                                         ; preds = %do.cond, %do.body1
   %indvar = phi i64 [ %indvar.next, %do.cond ], [ 0, %do.body1 ] ; <i64> [#uses=3]
-  %arrayidx13 = getelementptr [36 x [49 x double]], [36 x [49 x double]]* @A, i64 0, i64 %indvar3, i64 %indvar ; <double*> [#uses=1]
-  %arrayidx22 = getelementptr [36 x [49 x double]], [36 x [49 x double]]* @B, i64 0, i64 %indvar, i64 %indvar1 ; <double*> [#uses=1]
-  %tmp6 = load double, double* %arrayidx5                 ; <double> [#uses=1]
+  %arrayidx13 = getelementptr [36 x [49 x double]], ptr @A, i64 0, i64 %indvar3, i64 %indvar ; <ptr> [#uses=1]
+  %arrayidx22 = getelementptr [36 x [49 x double]], ptr @B, i64 0, i64 %indvar, i64 %indvar1 ; <ptr> [#uses=1]
+  %tmp6 = load double, ptr %arrayidx5                 ; <double> [#uses=1]
   %mul = fmul double 1.000000e+00, %tmp6          ; <double> [#uses=1]
-  %tmp14 = load double, double* %arrayidx13               ; <double> [#uses=1]
+  %tmp14 = load double, ptr %arrayidx13               ; <double> [#uses=1]
   %mul15 = fmul double 1.000000e+00, %tmp14       ; <double> [#uses=1]
-  %tmp23 = load double, double* %arrayidx22               ; <double> [#uses=1]
+  %tmp23 = load double, ptr %arrayidx22               ; <double> [#uses=1]
   %mul24 = fmul double %mul15, %tmp23             ; <double> [#uses=1]
   %add = fadd double %mul, %mul24                 ; <double> [#uses=1]
-  store double %add, double* %arrayidx5
+  store double %add, ptr %arrayidx5
   br label %do.cond
 
 do.cond:                                          ; preds = %do.body2

diff  --git a/polly/test/DependenceInfo/fine_grain_dep_0.ll b/polly/test/DependenceInfo/fine_grain_dep_0.ll
index 460c7b49977c0..9c79e360690ad 100644
--- a/polly/test/DependenceInfo/fine_grain_dep_0.ll
+++ b/polly/test/DependenceInfo/fine_grain_dep_0.ll
@@ -32,7 +32,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 ; Function Attrs: nounwind uwtable
-define void @test(i8* %a, i8* %b, i64 %N) #0 {
+define void @test(ptr %a, ptr %b, i64 %N) #0 {
 entry:
   br label %for.cond
 
@@ -43,21 +43,21 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %sub = sub nsw i64 %i.0, 4
-  %arrayidx = getelementptr inbounds i8, i8* %a, i64 %sub
-  %0 = load i8, i8* %arrayidx, align 1
+  %arrayidx = getelementptr inbounds i8, ptr %a, i64 %sub
+  %0 = load i8, ptr %arrayidx, align 1
   %conv = sext i8 %0 to i64
   %add = add nsw i64 %conv, %i.0
   %conv1 = trunc i64 %add to i8
-  %arrayidx2 = getelementptr inbounds i8, i8* %a, i64 %i.0
-  store i8 %conv1, i8* %arrayidx2, align 1
+  %arrayidx2 = getelementptr inbounds i8, ptr %a, i64 %i.0
+  store i8 %conv1, ptr %arrayidx2, align 1
   %sub3 = sub nsw i64 %i.0, 6
-  %arrayidx4 = getelementptr inbounds i8, i8* %b, i64 %sub3
-  %1 = load i8, i8* %arrayidx4, align 1
+  %arrayidx4 = getelementptr inbounds i8, ptr %b, i64 %sub3
+  %1 = load i8, ptr %arrayidx4, align 1
   %conv5 = sext i8 %1 to i64
   %add6 = add nsw i64 %conv5, %i.0
   %conv7 = trunc i64 %add6 to i8
-  %arrayidx8 = getelementptr inbounds i8, i8* %b, i64 %i.0
-  store i8 %conv7, i8* %arrayidx8, align 1
+  %arrayidx8 = getelementptr inbounds i8, ptr %b, i64 %i.0
+  store i8 %conv7, ptr %arrayidx8, align 1
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/DependenceInfo/generate_may_write_dependence_info.ll b/polly/test/DependenceInfo/generate_may_write_dependence_info.ll
index 7efbf8e5b9781..0b7f2d48da9fc 100644
--- a/polly/test/DependenceInfo/generate_may_write_dependence_info.ll
+++ b/polly/test/DependenceInfo/generate_may_write_dependence_info.ll
@@ -10,7 +10,7 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 ; B.write.from.A:       B[i] = A[i];
 ; A.must.write.42:      A[i] = 42;
 ;                     }
-define void @f(i32* %A, i32* %B) {
+define void @f(ptr %A, ptr %B) {
 entry:
   br label %for.cond
 
@@ -20,8 +20,8 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %A.must.write.20, label %for.end
 
 A.must.write.20:
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 20, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 20, ptr %arrayidx, align 4
   br label %compute.i.square
 
 compute.i.square:
@@ -31,21 +31,21 @@ compute.i.square:
   br i1 %tobool, label %B.write.from.A, label %A.may.write.90
 
 A.may.write.90:
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 90, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 90, ptr %arrayidx2, align 4
   br label %B.write.from.A
 
 B.write.from.A:
-  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %arrayidx4, align 4
-  %arrayidx6 = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  store i32 %tmp3, i32* %arrayidx6, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %arrayidx4, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  store i32 %tmp3, ptr %arrayidx6, align 4
   br label %A.must.write.42
   ; br label %for.inc
 
 A.must.write.42:
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 42, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 42, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end

diff  --git a/polly/test/DependenceInfo/infeasible_context.ll b/polly/test/DependenceInfo/infeasible_context.ll
index 98ee0b8a114b4..d701b821e15ca 100644
--- a/polly/test/DependenceInfo/infeasible_context.ll
+++ b/polly/test/DependenceInfo/infeasible_context.ll
@@ -11,11 +11,11 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739 = type { i32, i32, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, i32, i32, %struct.plist.0.6.12.66.120.174.216.306.324.336.348.366.378.390.432.444.666.726.732.738* }
-%struct.plist.0.6.12.66.120.174.216.306.324.336.348.366.378.390.432.444.666.726.732.738 = type { i32, %struct.plist.0.6.12.66.120.174.216.306.324.336.348.366.378.390.432.444.666.726.732.738* }
+%struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739 = type { i32, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr }
+%struct.plist.0.6.12.66.120.174.216.306.324.336.348.366.378.390.432.444.666.726.732.738 = type { i32, ptr }
 
- at vFixedEdgeRoot = external global %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, align 8
- at hEdgeRoot = external global %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, align 8
+ at vFixedEdgeRoot = external global ptr, align 8
+ at hEdgeRoot = external global ptr, align 8
 
 ; Function Attrs: nounwind uwtable
 define void @readgeo() #0 {
@@ -54,7 +54,7 @@ if.else154:                                       ; preds = %if.end116
   br label %if.end193
 
 if.end193:                                        ; preds = %if.else154, %if.then120
-  %0 = load i32, i32* %vx, align 4
+  %0 = load i32, ptr %vx, align 4
   br label %for.inc216
 
 for.inc216:                                       ; preds = %if.end193, %if.then93

diff  --git a/polly/test/DependenceInfo/may_writes_do_not_block_must_writes_for_war.ll b/polly/test/DependenceInfo/may_writes_do_not_block_must_writes_for_war.ll
index 87b145b50539a..09c5162747085 100644
--- a/polly/test/DependenceInfo/may_writes_do_not_block_must_writes_for_war.ll
+++ b/polly/test/DependenceInfo/may_writes_do_not_block_must_writes_for_war.ll
@@ -28,7 +28,7 @@
 ;
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %sum, i32* %A, i32* %B, i32* %out) {
+define void @f(ptr %sum, ptr %A, ptr %B, ptr %out) {
 entry:
   br label %for.cond
 
@@ -42,10 +42,10 @@ for.body:                                         ; preds = %for.cond
   br i1 %tobool, label %if.end, label %S0
 
 S0:                                          ; preds = %for.body
-  %tmp = load i32, i32* %sum, align 4
-  %tmp1 = load i32, i32* %out, align 4
+  %tmp = load i32, ptr %sum, align 4
+  %tmp1 = load i32, ptr %out, align 4
   %add = add nsw i32 %tmp1, %tmp
-  store i32 %add, i32* %out, align 4
+  store i32 %add, ptr %out, align 4
   br label %if.end
 
 if.end:                                           ; preds = %for.body, %S0
@@ -54,13 +54,13 @@ if.end:                                           ; preds = %for.body, %S0
   br i1 %tobool1, label %S2, label %S1
 
 S1:                                         ; preds = %if.end
-  %tmp2 = load i32, i32* %A, align 4
-  store i32 %tmp2, i32* %sum, align 4
+  %tmp2 = load i32, ptr %A, align 4
+  store i32 %tmp2, ptr %sum, align 4
   br label %S2
 
 S2:                                          ; preds = %if.end, %S1
-  %tmp3 = load i32, i32* %B, align 4
-  store i32 %tmp3, i32* %sum, align 4
+  %tmp3 = load i32, ptr %B, align 4
+  store i32 %tmp3, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S2

diff  --git a/polly/test/DependenceInfo/nonaffine-condition-buildMemoryAccess.ll b/polly/test/DependenceInfo/nonaffine-condition-buildMemoryAccess.ll
index c216c45256f58..25c7e3d6e4422 100644
--- a/polly/test/DependenceInfo/nonaffine-condition-buildMemoryAccess.ll
+++ b/polly/test/DependenceInfo/nonaffine-condition-buildMemoryAccess.ll
@@ -43,11 +43,11 @@ for.cond.cleanup:                                 ; preds = %for.inc11
 
 for.body:                                         ; preds = %for.inc11, %entry.split
   %indvars.iv25 = phi i64 [ 0, %entry.split ], [ %indvars.iv.next26, %for.inc11 ]
-  %arrayidx = getelementptr inbounds [1000 x i32], [1000 x i32]* @C, i64 0, i64 %indvars.iv25
-  %0 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds [1000 x i32], ptr @C, i64 0, i64 %indvars.iv25
+  %0 = load i32, ptr %arrayidx, align 4
   %1 = trunc i64 %indvars.iv25 to i32
   %add = add nsw i32 %0, %1
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   %tobool = icmp eq i32 %add, 0
   br i1 %tobool, label %for.inc11, label %for.body5.preheader
 
@@ -56,14 +56,14 @@ for.body5.preheader:                              ; preds = %for.body
 
 for.body5:                                        ; preds = %for.body5.preheader, %for.body5
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.body5 ], [ 0, %for.body5.preheader ]
-  %arrayidx7 = getelementptr inbounds [1000 x i32], [1000 x i32]* @A, i64 0, i64 %indvars.iv
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds [1000 x i32], ptr @A, i64 0, i64 %indvars.iv
+  store i32 1, ptr %arrayidx7, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv, 699
   br i1 %exitcond, label %for.end, label %for.body5
 
 for.end:                                          ; preds = %for.body5
-  store i32 2, i32* getelementptr inbounds ([1000 x i32], [1000 x i32]* @B, i64 0, i64 700), align 4
+  store i32 2, ptr getelementptr inbounds ([1000 x i32], ptr @B, i64 0, i64 700), align 4
   br label %for.inc11
 
 for.inc11:                                        ; preds = %for.body, %for.end

diff  --git a/polly/test/DependenceInfo/reduction_complex_location.ll b/polly/test/DependenceInfo/reduction_complex_location.ll
index 711f54d633da2..7ca8399963262 100644
--- a/polly/test/DependenceInfo/reduction_complex_location.ll
+++ b/polly/test/DependenceInfo/reduction_complex_location.ll
@@ -18,7 +18,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum) {
+define void @f(ptr %sum) {
 entry:
   br label %for.cond
 
@@ -39,10 +39,10 @@ for.body3:                                        ; preds = %for.cond1
   %mul = mul nsw i32 %j.0, %i.0
   %mul4 = shl nsw i32 %j.0, 1
   %add = add nsw i32 %i.0, %mul4
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %add
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %add
+  %tmp = load i32, ptr %arrayidx, align 4
   %add5 = add nsw i32 %tmp, %mul
-  store i32 %add5, i32* %arrayidx, align 4
+  store i32 %add5, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll b/polly/test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll
index 80adf845f3df6..3632bd202da20 100644
--- a/polly/test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll
+++ b/polly/test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll
@@ -23,7 +23,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @AandSum(i32* noalias %sum, i32* noalias %A) {
+define void @AandSum(ptr noalias %sum, ptr noalias %A) {
 entry:
   br label %for.cond
 
@@ -33,24 +33,24 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %sub = add nsw i32 %i.0, -1
-  %arrayidx1 = getelementptr inbounds i32, i32* %A, i32 %sub
-  %tmp1 = load i32, i32* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %A, i32 %sub
+  %tmp1 = load i32, ptr %arrayidx1, align 4
   %add = add nsw i32 %tmp, %tmp1
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i32 %i.0
-  store i32 %add, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i32 %i.0
+  store i32 %add, ptr %arrayidx2, align 4
   %sub4 = add nsw i32 %i.0, -2
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %sub4
-  %tmp2 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i32 %sub4
+  %tmp2 = load i32, ptr %arrayidx5, align 4
   %add6 = add nsw i32 %add, %tmp2
   %sub7 = add nsw i32 %i.0, -1
-  %arrayidx8 = getelementptr inbounds i32, i32* %A, i32 %sub7
-  store i32 %add6, i32* %arrayidx8, align 4
-  %tmp3 = load i32, i32* %sum, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %A, i32 %sub7
+  store i32 %add6, ptr %arrayidx8, align 4
+  %tmp3 = load i32, ptr %sum, align 4
   %add9 = add nsw i32 %tmp3, %i.0
-  store i32 %add9, i32* %sum, align 4
+  store i32 %add9, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/DependenceInfo/reduction_dependences_not_null.ll b/polly/test/DependenceInfo/reduction_dependences_not_null.ll
index 8e3d983cb0ade..69fd74478ecce 100644
--- a/polly/test/DependenceInfo/reduction_dependences_not_null.ll
+++ b/polly/test/DependenceInfo/reduction_dependences_not_null.ll
@@ -14,8 +14,8 @@ entry:
 
 S1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 2, i32* %arrayidx.1
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 2, ptr %arrayidx.1
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 100
   br i1 %exitcond.1, label %S1, label %exit.1

diff  --git a/polly/test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll b/polly/test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll
index d6164ec6bfab2..71903d9e7111c 100644
--- a/polly/test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll
+++ b/polly/test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll
@@ -16,7 +16,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum) {
+define void @f(ptr %sum) {
 entry:
   br label %for.cond
 
@@ -34,12 +34,12 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 3
   %add4 = add nsw i32 %i.0, %j.0
-  %arrayidx5 = getelementptr inbounds i32, i32* %sum, i32 %add4
-  store i32 %add, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %sum, i32 %add4
+  store i32 %add, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll
index e2e7eada5d902..234de5c367a02 100644
--- a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll
+++ b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll
@@ -19,7 +19,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* noalias %A, i32* noalias %sum) {
+define void @f(ptr noalias %A, ptr noalias %sum) {
 entry:
   br label %for.cond
 
@@ -29,9 +29,9 @@ for.cond:                                         ; preds = %for.inc11, %entry
   br i1 %exitcond2, label %for.body, label %for.end13
 
 for.body:                                         ; preds = %for.cond
-  %tmp = load i32, i32* %sum, align 4
+  %tmp = load i32, ptr %sum, align 4
   %mul = mul nsw i32 %tmp, 7
-  store i32 %mul, i32* %sum, align 4
+  store i32 %mul, ptr %sum, align 4
   br label %for.cond1
 
 for.cond1:                                        ; preds = %for.inc8, %for.body
@@ -41,11 +41,11 @@ for.cond1:                                        ; preds = %for.inc8, %for.body
 
 for.body3:                                        ; preds = %for.cond1
   %add = add nsw i32 %i.0, %j.0
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %add
-  %tmp3 = load i32, i32* %arrayidx, align 4
-  %tmp4 = load i32, i32* %sum, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %add
+  %tmp3 = load i32, ptr %arrayidx, align 4
+  %tmp4 = load i32, ptr %sum, align 4
   %add4 = add nsw i32 %tmp4, %tmp3
-  store i32 %add4, i32* %sum, align 4
+  store i32 %add4, ptr %sum, align 4
   br label %for.cond5
 
 for.cond5:                                        ; preds = %for.inc, %for.body3

diff  --git a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll
index 730a4abc47c01..acd674dc01177 100644
--- a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll
+++ b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll
@@ -21,7 +21,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* noalias %A, i32* noalias %sum) {
+define void @f(ptr noalias %A, ptr noalias %sum) {
 entry:
   br label %for.cond
 
@@ -40,11 +40,11 @@ for.cond1:                                        ; preds = %for.inc8, %for.body
 
 for.body3:                                        ; preds = %for.cond1
   %add = add nsw i32 %i.0, %j.0
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %add
-  %tmp3 = load i32, i32* %arrayidx, align 4
-  %tmp4 = load i32, i32* %sum, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %add
+  %tmp3 = load i32, ptr %arrayidx, align 4
+  %tmp4 = load i32, ptr %sum, align 4
   %add4 = add nsw i32 %tmp4, %tmp3
-  store i32 %add4, i32* %sum, align 4
+  store i32 %add4, ptr %sum, align 4
   br label %for.cond5
 
 for.cond5:                                        ; preds = %for.inc, %for.body3

diff  --git a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll
index d15a5d82ac6c4..bdfcfc99c8cb0 100644
--- a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll
+++ b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll
@@ -19,14 +19,14 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 declare i64 @g(i64)
 
-define i32 @f(i32* noalias %A) {
+define i32 @f(ptr noalias %A) {
 entry:
   %sum.04.reg2mem = alloca i32
   %sum.12.reg2mem = alloca i32
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  store i32 0, i32* %sum.04.reg2mem
+  store i32 0, ptr %sum.04.reg2mem
   br label %for.body_outer_split
 
 for.body_outer_split:                             ; preds = %entry.split, %for.inc5
@@ -40,34 +40,34 @@ for.body_outer:                                   ; preds = %for.body_outer_spli
 
 for.body:                                         ; preds = %for.inc5, %for.body_outer
   %indvars.iv23 = phi i64 [ 0, %for.body_outer ], [ %3, %for.inc5 ]
-  %sum.04.reload = load i32, i32* %sum.04.reg2mem
+  %sum.04.reload = load i32, ptr %sum.04.reg2mem
   %mul = shl nsw i32 %sum.04.reload, 1
-  store i32 %mul, i32* %sum.12.reg2mem
+  store i32 %mul, ptr %sum.12.reg2mem
   br label %for.inc
 
 for.inc:                                          ; preds = %for.inc, %for.body
   %indvars.iv1 = phi i64 [ 0, %for.body ], [ %1, %for.inc ]
-  %sum.12.reload = load i32, i32* %sum.12.reg2mem
+  %sum.12.reload = load i32, ptr %sum.12.reg2mem
   %0 = add i64 %indvars.iv23, %indvars.iv1
-  %arrayidx = getelementptr i32, i32* %A, i64 %0
-  %tmp5 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr i32, ptr %A, i64 %0
+  %tmp5 = load i32, ptr %arrayidx, align 4
   %add4 = add nsw i32 %tmp5, %sum.12.reload
   %1 = add nuw nsw i64 %indvars.iv1, 1
   %exitcond1 = icmp eq i64 %1, 100
-  store i32 %add4, i32* %sum.12.reg2mem
+  store i32 %add4, ptr %sum.12.reg2mem
   br i1 %exitcond1, label %for.inc5, label %for.inc
 
 for.inc5:                                         ; preds = %for.inc
-  %2 = load i32, i32* %sum.12.reg2mem
+  %2 = load i32, ptr %sum.12.reg2mem
   %3 = add nuw nsw i64 %indvars.iv23, 1
   %exitcond2 = icmp eq i64 %3, 100
-  store i32 %2, i32* %sum.04.reg2mem
+  store i32 %2, ptr %sum.04.reg2mem
   br i1 %exitcond2, label %for.bos2, label %for.body
 
 for.bos2:
   br label %for.body_outer_split
 
 for.end7:                                         ; preds = %for.inc5
-  %4 = load i32, i32* %sum.04.reg2mem
+  %4 = load i32, ptr %sum.04.reg2mem
   ret i32 %4
 }

diff  --git a/polly/test/DependenceInfo/reduction_multiple_reductions.ll b/polly/test/DependenceInfo/reduction_multiple_reductions.ll
index 3bcd38416a59e..cf705080e03d2 100644
--- a/polly/test/DependenceInfo/reduction_multiple_reductions.ll
+++ b/polly/test/DependenceInfo/reduction_multiple_reductions.ll
@@ -21,7 +21,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* noalias %sum, i32* noalias %prod)  {
+define void @f(ptr noalias %sum, ptr noalias %prod)  {
 entry:
   br label %for.cond
 
@@ -35,15 +35,15 @@ for.body:                                         ; preds = %for.cond
   br i1 %cmp1, label %if.then, label %if.else
 
 if.then:                                          ; preds = %for.body
-  %tmp = load i32, i32* %sum, align 4
+  %tmp = load i32, ptr %sum, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %sum, align 4
+  store i32 %add, ptr %sum, align 4
   br label %if.end
 
 if.else:                                          ; preds = %for.body
-  %tmp1 = load i32, i32* %prod, align 4
+  %tmp1 = load i32, ptr %prod, align 4
   %mul = mul nsw i32 %tmp1, %i.0
-  store i32 %mul, i32* %prod, align 4
+  store i32 %mul, ptr %prod, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/polly/test/DependenceInfo/reduction_multiple_reductions_2.ll b/polly/test/DependenceInfo/reduction_multiple_reductions_2.ll
index 1a9b70d0d82eb..8d8557a129ab2 100644
--- a/polly/test/DependenceInfo/reduction_multiple_reductions_2.ll
+++ b/polly/test/DependenceInfo/reduction_multiple_reductions_2.ll
@@ -31,7 +31,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* noalias %red)  {
+define void @f(ptr noalias %red)  {
 entry:
   br label %for.cond
 
@@ -44,10 +44,10 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %red, align 4
+  %tmp = load i32, ptr %red, align 4
   %mul = mul nsw i32 %tmp, 5
   %add = add nsw i32 %mul, 42
-  store i32 %add, i32* %red, align 4
+  store i32 %add, ptr %red, align 4
   br label %for.cond1
 
 for.cond1:                                        ; preds = %for.inc, %S0
@@ -59,9 +59,9 @@ for.body3:                                        ; preds = %for.cond1
   br label %S1
 
 S1:                                               ; preds = %for.body3
-  %tmp3 = load i32, i32* %red, align 4
+  %tmp3 = load i32, ptr %red, align 4
   %mul4 = mul nsw i32 %tmp3, %i.0
-  store i32 %mul4, i32* %red, align 4
+  store i32 %mul4, ptr %red, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S1
@@ -80,9 +80,9 @@ for.body8:                                        ; preds = %for.cond6
   br label %S2
 
 S2:                                               ; preds = %for.body8
-  %tmp4 = load i32, i32* %red, align 4
+  %tmp4 = load i32, ptr %red, align 4
   %add9 = add nsw i32 %tmp4, %i5.0
-  store i32 %add9, i32* %red, align 4
+  store i32 %add9, ptr %red, align 4
   br label %for.inc10
 
 for.inc10:                                        ; preds = %S2
@@ -93,10 +93,10 @@ for.end12:                                        ; preds = %for.cond6
   br label %S3
 
 S3:                                               ; preds = %for.end12
-  %tmp5 = load i32, i32* %red, align 4
+  %tmp5 = load i32, ptr %red, align 4
   %mul13 = mul nsw i32 %tmp5, 7
   %add14 = add nsw i32 %mul13, 42
-  store i32 %add14, i32* %red, align 4
+  store i32 %add14, ptr %red, align 4
   br label %for.inc15
 
 for.inc15:                                        ; preds = %S3

diff  --git a/polly/test/DependenceInfo/reduction_only_reduction_like_access.ll b/polly/test/DependenceInfo/reduction_only_reduction_like_access.ll
index 62f69e162c5db..7b4a68a2a8978 100644
--- a/polly/test/DependenceInfo/reduction_only_reduction_like_access.ll
+++ b/polly/test/DependenceInfo/reduction_only_reduction_like_access.ll
@@ -17,7 +17,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum) {
+define void @f(ptr %sum) {
 entry:
   br label %for.cond
 
@@ -28,11 +28,11 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %sub = sub nsw i32 99, %i.0
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %sub
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %sub
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  %arrayidx1 = getelementptr inbounds i32, i32* %sum, i32 %i.0
-  store i32 %add, i32* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %sum, i32 %i.0
+  store i32 %add, ptr %arrayidx1, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll b/polly/test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll
index 8a1fc6fd0ac14..0d09e5a861a0a 100644
--- a/polly/test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll
+++ b/polly/test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll
@@ -14,7 +14,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32 %N, i32* noalias %sums, i32* noalias %escape) {
+define void @f(i32 %N, ptr noalias %sums, ptr noalias %escape) {
 entry:
   br label %for.cond
 
@@ -32,22 +32,22 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %sums, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sums, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 5
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   %sub = sub nsw i32 %N, %i.0
   %add4 = add nsw i32 %sub, %j.0
   %cmp5 = icmp slt i32 %add4, 1024
   br i1 %cmp5, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body3
-  %arrayidx6 = getelementptr inbounds i32, i32* %sums, i32 %i.0
-  %tmp2 = load i32, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %sums, i32 %i.0
+  %tmp2 = load i32, ptr %arrayidx6, align 4
   %sub7 = sub nsw i32 %N, %i.0
   %add8 = add nsw i32 %sub7, %j.0
-  %arrayidx9 = getelementptr inbounds i32, i32* %escape, i32 %add8
-  store i32 %tmp2, i32* %arrayidx9, align 4
+  %arrayidx9 = getelementptr inbounds i32, ptr %escape, i32 %add8
+  store i32 %tmp2, ptr %arrayidx9, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body3

diff  --git a/polly/test/DependenceInfo/reduction_privatization_deps.ll b/polly/test/DependenceInfo/reduction_privatization_deps.ll
index 8155e4cdaf911..ce90e21a898d1 100644
--- a/polly/test/DependenceInfo/reduction_privatization_deps.ll
+++ b/polly/test/DependenceInfo/reduction_privatization_deps.ll
@@ -16,11 +16,11 @@
 ;        for (int j = 0; j < 1024; j++)
 ; S1:      sum[i + j] += i;
 ;      for (int i = 0; i < 1024; i++)
-; S2:    sum[i] = sum[i + 1] * 3;
+; S2:    sum[i] = sumptr 3;
 ;    }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum)  {
+define void @f(ptr %sum)  {
 entry:
   br label %for.cond
 
@@ -33,8 +33,8 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %i.0
-  store i32 0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %i.0
+  store i32 0, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -62,10 +62,10 @@ for.body7:                                        ; preds = %for.cond5
 
 S1:                                               ; preds = %for.body7
   %add = add nsw i32 %i1.0, %j.0
-  %arrayidx8 = getelementptr inbounds i32, i32* %sum, i32 %add
-  %tmp = load i32, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %sum, i32 %add
+  %tmp = load i32, ptr %arrayidx8, align 4
   %add9 = add nsw i32 %tmp, %i1.0
-  store i32 %add9, i32* %arrayidx8, align 4
+  store i32 %add9, ptr %arrayidx8, align 4
   br label %for.inc10
 
 for.inc10:                                        ; preds = %S1
@@ -92,11 +92,11 @@ for.body19:                                       ; preds = %for.cond17
 
 S2:                                               ; preds = %for.body19
   %add20 = add nsw i32 %i16.0, 1
-  %arrayidx21 = getelementptr inbounds i32, i32* %sum, i32 %add20
-  %tmp4 = load i32, i32* %arrayidx21, align 4
+  %arrayidx21 = getelementptr inbounds i32, ptr %sum, i32 %add20
+  %tmp4 = load i32, ptr %arrayidx21, align 4
   %mul = mul nsw i32 %tmp4, 3
-  %arrayidx22 = getelementptr inbounds i32, i32* %sum, i32 %i16.0
-  store i32 %mul, i32* %arrayidx22, align 4
+  %arrayidx22 = getelementptr inbounds i32, ptr %sum, i32 %i16.0
+  store i32 %mul, ptr %arrayidx22, align 4
   br label %for.inc23
 
 for.inc23:                                        ; preds = %S2

diff  --git a/polly/test/DependenceInfo/reduction_privatization_deps_2.ll b/polly/test/DependenceInfo/reduction_privatization_deps_2.ll
index 8d98f9d8e4912..4904004d4781f 100644
--- a/polly/test/DependenceInfo/reduction_privatization_deps_2.ll
+++ b/polly/test/DependenceInfo/reduction_privatization_deps_2.ll
@@ -24,7 +24,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum)  {
+define void @f(ptr %sum)  {
 entry:
   br label %for.cond
 
@@ -38,10 +38,10 @@ for.body:                                         ; preds = %for.cond
 
 S1:                                               ; preds = %for.body
   %add = add nsw i32 %i.0, 1
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %add
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %add
+  %tmp = load i32, ptr %arrayidx, align 4
   %add1 = add nsw i32 %tmp, 42
-  store i32 %add1, i32* %arrayidx, align 4
+  store i32 %add1, ptr %arrayidx, align 4
   br label %for.cond2
 
 for.cond2:                                        ; preds = %for.inc, %S1
@@ -54,10 +54,10 @@ for.body4:                                        ; preds = %for.cond2
 
 S2:                                               ; preds = %for.body4
   %mul = mul nsw i32 %i.0, %j.0
-  %arrayidx5 = getelementptr inbounds i32, i32* %sum, i32 %i.0
-  %tmp2 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %sum, i32 %i.0
+  %tmp2 = load i32, ptr %arrayidx5, align 4
   %add6 = add nsw i32 %tmp2, %mul
-  store i32 %add6, i32* %arrayidx5, align 4
+  store i32 %add6, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S2
@@ -69,10 +69,10 @@ for.end:                                          ; preds = %for.cond2
 
 S3:                                               ; preds = %for.end
   %add7 = add nsw i32 %i.0, 1
-  %arrayidx8 = getelementptr inbounds i32, i32* %sum, i32 %add7
-  %tmp3 = load i32, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %sum, i32 %add7
+  %tmp3 = load i32, ptr %arrayidx8, align 4
   %add9 = add nsw i32 %tmp3, 7
-  store i32 %add9, i32* %arrayidx8, align 4
+  store i32 %add9, ptr %arrayidx8, align 4
   br label %for.inc10
 
 for.inc10:                                        ; preds = %S3

diff  --git a/polly/test/DependenceInfo/reduction_privatization_deps_3.ll b/polly/test/DependenceInfo/reduction_privatization_deps_3.ll
index 626ff133a46b7..a3935ebd6cc49 100644
--- a/polly/test/DependenceInfo/reduction_privatization_deps_3.ll
+++ b/polly/test/DependenceInfo/reduction_privatization_deps_3.ll
@@ -21,7 +21,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum)  {
+define void @f(ptr %sum)  {
 entry:
   br label %for.cond
 
@@ -35,10 +35,10 @@ for.body:                                         ; preds = %for.cond
 
 S1:                                               ; preds = %for.body
   %add = add nsw i32 %i.0, 1
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %add
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %add
+  %tmp = load i32, ptr %arrayidx, align 4
   %add1 = add nsw i32 %tmp, 42
-  store i32 %add1, i32* %arrayidx, align 4
+  store i32 %add1, ptr %arrayidx, align 4
   br label %for.cond2
 
 for.cond2:                                        ; preds = %for.inc, %S1
@@ -52,10 +52,10 @@ for.body4:                                        ; preds = %for.cond2
 S2:                                               ; preds = %for.body4
   %mul = mul nsw i32 %i.0, %j.0
   %sub = sub nsw i32 %i.0, %j.0
-  %arrayidx5 = getelementptr inbounds i32, i32* %sum, i32 %sub
-  %tmp2 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %sum, i32 %sub
+  %tmp2 = load i32, ptr %arrayidx5, align 4
   %add6 = add nsw i32 %tmp2, %mul
-  store i32 %add6, i32* %arrayidx5, align 4
+  store i32 %add6, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S2
@@ -67,10 +67,10 @@ for.end:                                          ; preds = %for.cond2
 
 S3:                                               ; preds = %for.end
   %sub7 = add nsw i32 %i.0, -1
-  %arrayidx8 = getelementptr inbounds i32, i32* %sum, i32 %sub7
-  %tmp3 = load i32, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %sum, i32 %sub7
+  %tmp3 = load i32, ptr %arrayidx8, align 4
   %add9 = add nsw i32 %tmp3, 7
-  store i32 %add9, i32* %arrayidx8, align 4
+  store i32 %add9, ptr %arrayidx8, align 4
   br label %for.inc10
 
 for.inc10:                                        ; preds = %S3

diff  --git a/polly/test/DependenceInfo/reduction_privatization_deps_4.ll b/polly/test/DependenceInfo/reduction_privatization_deps_4.ll
index d496f4965a5f0..10d726af51457 100644
--- a/polly/test/DependenceInfo/reduction_privatization_deps_4.ll
+++ b/polly/test/DependenceInfo/reduction_privatization_deps_4.ll
@@ -20,7 +20,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum)  {
+define void @f(ptr %sum)  {
 entry:
   br label %for.cond
 
@@ -33,10 +33,10 @@ for.body:                                         ; preds = %for.cond
   br label %S1
 
 S1:                                               ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 42
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.cond1
 
 for.cond1:                                        ; preds = %for.inc, %S1
@@ -49,10 +49,10 @@ for.body3:                                        ; preds = %for.cond1
 
 S2:                                               ; preds = %for.body3
   %mul = mul nsw i32 %i.0, %j.0
-  %arrayidx4 = getelementptr inbounds i32, i32* %sum, i32 %j.0
-  %tmp2 = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %sum, i32 %j.0
+  %tmp2 = load i32, ptr %arrayidx4, align 4
   %add5 = add nsw i32 %tmp2, %mul
-  store i32 %add5, i32* %arrayidx4, align 4
+  store i32 %add5, ptr %arrayidx4, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S2
@@ -63,10 +63,10 @@ for.end:                                          ; preds = %for.cond1
   br label %S3
 
 S3:                                               ; preds = %for.end
-  %arrayidx6 = getelementptr inbounds i32, i32* %sum, i32 %i.0
-  %tmp3 = load i32, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %sum, i32 %i.0
+  %tmp3 = load i32, ptr %arrayidx6, align 4
   %add7 = add nsw i32 %tmp3, 7
-  store i32 %add7, i32* %arrayidx6, align 4
+  store i32 %add7, ptr %arrayidx6, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S3

diff  --git a/polly/test/DependenceInfo/reduction_privatization_deps_5.ll b/polly/test/DependenceInfo/reduction_privatization_deps_5.ll
index 47429ecdf1a47..e8d51181725e2 100644
--- a/polly/test/DependenceInfo/reduction_privatization_deps_5.ll
+++ b/polly/test/DependenceInfo/reduction_privatization_deps_5.ll
@@ -20,7 +20,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum)  {
+define void @f(ptr %sum)  {
 entry:
   br label %for.cond
 
@@ -41,10 +41,10 @@ for.body3:                                        ; preds = %for.cond1
   br label %S1
 
 S1:                                               ; preds = %for.body3
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %j.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %j.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 42
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S1
@@ -64,10 +64,10 @@ for.body6:                                        ; preds = %for.cond4
 
 S2:                                               ; preds = %for.body6
   %mul = mul nsw i32 %i.0, %j.1
-  %arrayidx7 = getelementptr inbounds i32, i32* %sum, i32 %j.1
-  %tmp3 = load i32, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %sum, i32 %j.1
+  %tmp3 = load i32, ptr %arrayidx7, align 4
   %add8 = add nsw i32 %tmp3, %mul
-  store i32 %add8, i32* %arrayidx7, align 4
+  store i32 %add8, ptr %arrayidx7, align 4
   br label %for.inc9
 
 for.inc9:                                         ; preds = %S2

diff  --git a/polly/test/DependenceInfo/reduction_sequence.ll b/polly/test/DependenceInfo/reduction_sequence.ll
index 5436c783ad59f..4a4688953938e 100644
--- a/polly/test/DependenceInfo/reduction_sequence.ll
+++ b/polly/test/DependenceInfo/reduction_sequence.ll
@@ -73,7 +73,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @manyreductions(i64* %A) {
+define void @manyreductions(ptr %A) {
 bb:
   br label %bb28
 
@@ -91,9 +91,9 @@ bb30:                                             ; preds = %bb33, %bb29
   br i1 %exitcond26, label %bb31, label %bb35
 
 bb31:                                             ; preds = %bb30
-  %tmp = load i64, i64* %A, align 8
+  %tmp = load i64, ptr %A, align 8
   %tmp32 = add nsw i64 %tmp, 42
-  store i64 %tmp32, i64* %A, align 8
+  store i64 %tmp32, ptr %A, align 8
   br label %bb33
 
 bb33:                                             ; preds = %bb31
@@ -124,9 +124,9 @@ bb41:                                             ; preds = %bb45, %bb40
   br i1 %exitcond24, label %bb42, label %bb47
 
 bb42:                                             ; preds = %bb41
-  %tmp43 = load i64, i64* %A, align 8
+  %tmp43 = load i64, ptr %A, align 8
   %tmp44 = add nsw i64 %tmp43, 42
-  store i64 %tmp44, i64* %A, align 8
+  store i64 %tmp44, ptr %A, align 8
   br label %bb45
 
 bb45:                                             ; preds = %bb42
@@ -157,9 +157,9 @@ bb53:                                             ; preds = %bb57, %bb52
   br i1 %exitcond22, label %bb54, label %bb59
 
 bb54:                                             ; preds = %bb53
-  %tmp55 = load i64, i64* %A, align 8
+  %tmp55 = load i64, ptr %A, align 8
   %tmp56 = add nsw i64 %tmp55, 42
-  store i64 %tmp56, i64* %A, align 8
+  store i64 %tmp56, ptr %A, align 8
   br label %bb57
 
 bb57:                                             ; preds = %bb54
@@ -190,9 +190,9 @@ bb65:                                             ; preds = %bb69, %bb64
   br i1 %exitcond20, label %bb66, label %bb71
 
 bb66:                                             ; preds = %bb65
-  %tmp67 = load i64, i64* %A, align 8
+  %tmp67 = load i64, ptr %A, align 8
   %tmp68 = add nsw i64 %tmp67, 42
-  store i64 %tmp68, i64* %A, align 8
+  store i64 %tmp68, ptr %A, align 8
   br label %bb69
 
 bb69:                                             ; preds = %bb66
@@ -223,9 +223,9 @@ bb77:                                             ; preds = %bb81, %bb76
   br i1 %exitcond18, label %bb78, label %bb83
 
 bb78:                                             ; preds = %bb77
-  %tmp79 = load i64, i64* %A, align 8
+  %tmp79 = load i64, ptr %A, align 8
   %tmp80 = add nsw i64 %tmp79, 42
-  store i64 %tmp80, i64* %A, align 8
+  store i64 %tmp80, ptr %A, align 8
   br label %bb81
 
 bb81:                                             ; preds = %bb78
@@ -256,9 +256,9 @@ bb89:                                             ; preds = %bb93, %bb88
   br i1 %exitcond16, label %bb90, label %bb95
 
 bb90:                                             ; preds = %bb89
-  %tmp91 = load i64, i64* %A, align 8
+  %tmp91 = load i64, ptr %A, align 8
   %tmp92 = add nsw i64 %tmp91, 42
-  store i64 %tmp92, i64* %A, align 8
+  store i64 %tmp92, ptr %A, align 8
   br label %bb93
 
 bb93:                                             ; preds = %bb90
@@ -289,9 +289,9 @@ bb101:                                            ; preds = %bb105, %bb100
   br i1 %exitcond14, label %bb102, label %bb107
 
 bb102:                                            ; preds = %bb101
-  %tmp103 = load i64, i64* %A, align 8
+  %tmp103 = load i64, ptr %A, align 8
   %tmp104 = add nsw i64 %tmp103, 42
-  store i64 %tmp104, i64* %A, align 8
+  store i64 %tmp104, ptr %A, align 8
   br label %bb105
 
 bb105:                                            ; preds = %bb102
@@ -322,9 +322,9 @@ bb113:                                            ; preds = %bb117, %bb112
   br i1 %exitcond12, label %bb114, label %bb119
 
 bb114:                                            ; preds = %bb113
-  %tmp115 = load i64, i64* %A, align 8
+  %tmp115 = load i64, ptr %A, align 8
   %tmp116 = add nsw i64 %tmp115, 42
-  store i64 %tmp116, i64* %A, align 8
+  store i64 %tmp116, ptr %A, align 8
   br label %bb117
 
 bb117:                                            ; preds = %bb114
@@ -355,9 +355,9 @@ bb125:                                            ; preds = %bb129, %bb124
   br i1 %exitcond10, label %bb126, label %bb131
 
 bb126:                                            ; preds = %bb125
-  %tmp127 = load i64, i64* %A, align 8
+  %tmp127 = load i64, ptr %A, align 8
   %tmp128 = add nsw i64 %tmp127, 42
-  store i64 %tmp128, i64* %A, align 8
+  store i64 %tmp128, ptr %A, align 8
   br label %bb129
 
 bb129:                                            ; preds = %bb126
@@ -388,9 +388,9 @@ bb137:                                            ; preds = %bb141, %bb136
   br i1 %exitcond8, label %bb138, label %bb143
 
 bb138:                                            ; preds = %bb137
-  %tmp139 = load i64, i64* %A, align 8
+  %tmp139 = load i64, ptr %A, align 8
   %tmp140 = add nsw i64 %tmp139, 42
-  store i64 %tmp140, i64* %A, align 8
+  store i64 %tmp140, ptr %A, align 8
   br label %bb141
 
 bb141:                                            ; preds = %bb138
@@ -421,9 +421,9 @@ bb149:                                            ; preds = %bb153, %bb148
   br i1 %exitcond6, label %bb150, label %bb155
 
 bb150:                                            ; preds = %bb149
-  %tmp151 = load i64, i64* %A, align 8
+  %tmp151 = load i64, ptr %A, align 8
   %tmp152 = add nsw i64 %tmp151, 42
-  store i64 %tmp152, i64* %A, align 8
+  store i64 %tmp152, ptr %A, align 8
   br label %bb153
 
 bb153:                                            ; preds = %bb150
@@ -454,9 +454,9 @@ bb161:                                            ; preds = %bb165, %bb160
   br i1 %exitcond4, label %bb162, label %bb167
 
 bb162:                                            ; preds = %bb161
-  %tmp163 = load i64, i64* %A, align 8
+  %tmp163 = load i64, ptr %A, align 8
   %tmp164 = add nsw i64 %tmp163, 42
-  store i64 %tmp164, i64* %A, align 8
+  store i64 %tmp164, ptr %A, align 8
   br label %bb165
 
 bb165:                                            ; preds = %bb162
@@ -487,9 +487,9 @@ bb173:                                            ; preds = %bb177, %bb172
   br i1 %exitcond2, label %bb174, label %bb179
 
 bb174:                                            ; preds = %bb173
-  %tmp175 = load i64, i64* %A, align 8
+  %tmp175 = load i64, ptr %A, align 8
   %tmp176 = add nsw i64 %tmp175, 42
-  store i64 %tmp176, i64* %A, align 8
+  store i64 %tmp176, ptr %A, align 8
   br label %bb177
 
 bb177:                                            ; preds = %bb174
@@ -520,9 +520,9 @@ bb185:                                            ; preds = %bb189, %bb184
   br i1 %exitcond, label %bb186, label %bb191
 
 bb186:                                            ; preds = %bb185
-  %tmp187 = load i64, i64* %A, align 8
+  %tmp187 = load i64, ptr %A, align 8
   %tmp188 = add nsw i64 %tmp187, 42
-  store i64 %tmp188, i64* %A, align 8
+  store i64 %tmp188, ptr %A, align 8
   br label %bb189
 
 bb189:                                            ; preds = %bb186

diff  --git a/polly/test/DependenceInfo/reduction_simple_iv.ll b/polly/test/DependenceInfo/reduction_simple_iv.ll
index 3aa026da480d0..e3307afae08b1 100644
--- a/polly/test/DependenceInfo/reduction_simple_iv.ll
+++ b/polly/test/DependenceInfo/reduction_simple_iv.ll
@@ -15,7 +15,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum) {
+define void @f(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -27,11 +27,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 

diff  --git a/polly/test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll b/polly/test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll
index 885aa13a8387b..c7651c39a5634 100644
--- a/polly/test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll
+++ b/polly/test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll
@@ -70,7 +70,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum) {
+define void @f(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -82,11 +82,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 

diff  --git a/polly/test/DependenceInfo/reduction_simple_privatization_deps_2.ll b/polly/test/DependenceInfo/reduction_simple_privatization_deps_2.ll
index 042ec435f2695..b61fd8453a8cb 100644
--- a/polly/test/DependenceInfo/reduction_simple_privatization_deps_2.ll
+++ b/polly/test/DependenceInfo/reduction_simple_privatization_deps_2.ll
@@ -20,7 +20,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum)  {
+define void @f(ptr %sum)  {
 entry:
   br label %for.cond
 
@@ -33,9 +33,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %sum, align 4
+  %tmp = load i32, ptr %sum, align 4
   %mul = mul nsw i32 %tmp, 42
-  store i32 %mul, i32* %sum, align 4
+  store i32 %mul, ptr %sum, align 4
   br label %for.cond1
 
 for.cond1:                                        ; preds = %for.inc, %S0
@@ -48,9 +48,9 @@ for.body3:                                        ; preds = %for.cond1
 
 S1:                                               ; preds = %for.body3
   %mul4 = mul nsw i32 %i.0, %j.0
-  %tmp2 = load i32, i32* %sum, align 4
+  %tmp2 = load i32, ptr %sum, align 4
   %add = add nsw i32 %tmp2, %mul4
-  store i32 %add, i32* %sum, align 4
+  store i32 %add, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S1
@@ -61,9 +61,9 @@ for.end:                                          ; preds = %for.cond1
   br label %S2
 
 S2:                                               ; preds = %for.end
-  %tmp3 = load i32, i32* %sum, align 4
+  %tmp3 = load i32, ptr %sum, align 4
   %mul5 = mul nsw i32 %tmp3, 7
-  store i32 %mul5, i32* %sum, align 4
+  store i32 %mul5, ptr %sum, align 4
   br label %for.inc6
 
 for.inc6:                                         ; preds = %S2

diff  --git a/polly/test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll b/polly/test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll
index ce46a1be30067..a3a87c70d9056 100644
--- a/polly/test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll
+++ b/polly/test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll
@@ -19,7 +19,7 @@
 ;    }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum, i32 %N) {
+define void @f(ptr %sum, i32 %N) {
 entry:
   br label %entry.1
 
@@ -28,7 +28,7 @@ entry.1:
   br i1 %excond, label %S0, label %f.end
 
 S0:
-  store i32 0, i32* %sum, align 4
+  store i32 0, ptr %sum, align 4
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %S0
@@ -37,9 +37,9 @@ for.cond:                                         ; preds = %for.inc, %S0
   br i1 %exitcond, label %S1, label %S2
 
 S1:                                               ; preds = %for.cond
-  %tmp = load i32, i32* %sum, align 4
+  %tmp = load i32, ptr %sum, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %sum, align 4
+  store i32 %add, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S1
@@ -47,9 +47,9 @@ for.inc:                                          ; preds = %S1
   br label %for.cond
 
 S2:                                               ; preds = %for.cond
-  %tmp1 = load i32, i32* %sum, align 4
+  %tmp1 = load i32, ptr %sum, align 4
   %mul = mul nsw i32 %tmp1, 3
-  store i32 %mul, i32* %sum, align 4
+  store i32 %mul, ptr %sum, align 4
   br label %f.end
 
 f.end:

diff  --git a/polly/test/DependenceInfo/reduction_two_reductions_
diff erent_rloops.ll b/polly/test/DependenceInfo/reduction_two_reductions_
diff erent_rloops.ll
index 409688d62cf41..c90462962ce0e 100644
--- a/polly/test/DependenceInfo/reduction_two_reductions_
diff erent_rloops.ll
+++ b/polly/test/DependenceInfo/reduction_two_reductions_
diff erent_rloops.ll
@@ -20,7 +20,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* noalias %A, i32* noalias %B, i32* noalias %Values)  {
+define void @f(ptr noalias %A, ptr noalias %B, ptr noalias %Values)  {
 entry:
   br label %for.cond
 
@@ -40,20 +40,20 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 for.body3:                                        ; preds = %for.cond1
   %add = add nsw i32 %i.0, %j.0
   %sub = add nsw i32 %add, -1
-  %arrayidx = getelementptr inbounds i32, i32* %Values, i32 %sub
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx4 = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp2 = load i32, i32* %arrayidx4, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %Values, i32 %sub
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp2 = load i32, ptr %arrayidx4, align 4
   %add5 = add nsw i32 %tmp2, %tmp
-  store i32 %add5, i32* %arrayidx4, align 4
+  store i32 %add5, ptr %arrayidx4, align 4
   %add6 = add nsw i32 %i.0, %j.0
   %add7 = add nsw i32 %add6, 42
-  %arrayidx8 = getelementptr inbounds i32, i32* %Values, i32 %add7
-  %tmp3 = load i32, i32* %arrayidx8, align 4
-  %arrayidx9 = getelementptr inbounds i32, i32* %B, i32 %j.0
-  %tmp4 = load i32, i32* %arrayidx9, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %Values, i32 %add7
+  %tmp3 = load i32, ptr %arrayidx8, align 4
+  %arrayidx9 = getelementptr inbounds i32, ptr %B, i32 %j.0
+  %tmp4 = load i32, ptr %arrayidx9, align 4
   %add10 = add nsw i32 %tmp4, %tmp3
-  store i32 %add10, i32* %arrayidx9, align 4
+  store i32 %add10, ptr %arrayidx9, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/DependenceInfo/sequential_loops.ll b/polly/test/DependenceInfo/sequential_loops.ll
index e69a50cfb570f..8dfa13cb9db85 100644
--- a/polly/test/DependenceInfo/sequential_loops.ll
+++ b/polly/test/DependenceInfo/sequential_loops.ll
@@ -118,8 +118,8 @@ entry:
 
 S1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 2, i32* %arrayidx.1
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 2, ptr %arrayidx.1
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 100
   br i1 %exitcond.1, label %S1, label %exit.1
@@ -129,8 +129,8 @@ exit.1:
 
 S2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
-  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  store i32 5, i32* %arrayidx.2
+  %arrayidx.2 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  store i32 5, ptr %arrayidx.2
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 10
   br i1 %exitcond.2, label %S2, label %exit.2
@@ -140,8 +140,8 @@ exit.2:
 
 S3:
   %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
-  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
-  store i32 7, i32* %arrayidx.3
+  %arrayidx.3 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.3
+  store i32 7, ptr %arrayidx.3
   %indvar.next.3 = add i64 %indvar.3, 1
   %exitcond.3 = icmp ne i64 %indvar.next.3, 200
   br i1 %exitcond.3, label %S3 , label %exit.3
@@ -168,8 +168,8 @@ entry:
 
 S1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 2, i32* %arrayidx.1
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 2, ptr %arrayidx.1
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 100
   br i1 %exitcond.1, label %S1, label %exit.1
@@ -179,8 +179,8 @@ exit.1:
 
 S2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
-  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  store i32 5, i32* %arrayidx.2
+  %arrayidx.2 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  store i32 5, ptr %arrayidx.2
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 10
   br i1 %exitcond.2, label %S2, label %exit.2
@@ -190,10 +190,10 @@ exit.2:
 
 S3:
   %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
-  %arrayidx.3.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
-  %arrayidx.3.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.3
-  %val = load i32, i32* %arrayidx.3.a
-  store i32 %val, i32* %arrayidx.3.b
+  %arrayidx.3.a = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.3
+  %arrayidx.3.b = getelementptr [200 x i32], ptr %B, i64 0, i64 %indvar.3
+  %val = load i32, ptr %arrayidx.3.a
+  store i32 %val, ptr %arrayidx.3.b
   %indvar.next.3 = add i64 %indvar.3, 1
   %exitcond.3 = icmp ne i64 %indvar.next.3, 200
   br i1 %exitcond.3, label %S3 , label %exit.3
@@ -220,10 +220,10 @@ entry:
 
 S1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
-  %arrayidx.1.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  %arrayidx.1.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.1
-  %val = load i32, i32* %arrayidx.1.a
-  store i32 %val, i32* %arrayidx.1.b
+  %arrayidx.1.a = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  %arrayidx.1.b = getelementptr [200 x i32], ptr %B, i64 0, i64 %indvar.1
+  %val = load i32, ptr %arrayidx.1.a
+  store i32 %val, ptr %arrayidx.1.b
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 100
   br i1 %exitcond.1, label %S1, label %exit.1
@@ -233,8 +233,8 @@ exit.1:
 
 S2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
-  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  store i32 5, i32* %arrayidx.2
+  %arrayidx.2 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  store i32 5, ptr %arrayidx.2
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 10
   br i1 %exitcond.2, label %S2, label %exit.2
@@ -244,8 +244,8 @@ exit.2:
 
 S3:
   %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
-  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
-  store i32 10, i32* %arrayidx.3
+  %arrayidx.3 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.3
+  store i32 10, ptr %arrayidx.3
   %indvar.next.3 = add i64 %indvar.3, 1
   %exitcond.3 = icmp ne i64 %indvar.next.3, 200
   br i1 %exitcond.3, label %S3 , label %exit.3
@@ -269,8 +269,8 @@ entry:
 
 S1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 10, i32* %arrayidx.1
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 10, ptr %arrayidx.1
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 100
   br i1 %exitcond.1, label %S1, label %exit.1
@@ -281,10 +281,10 @@ exit.1:
 S2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
   %sum = add i64 %indvar.2, %p
-  %arrayidx.2.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %sum
-  %arrayidx.2.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.2
-  %val = load i32, i32* %arrayidx.2.a
-  store i32 %val, i32* %arrayidx.2.b
+  %arrayidx.2.a = getelementptr [200 x i32], ptr %A, i64 0, i64 %sum
+  %arrayidx.2.b = getelementptr [200 x i32], ptr %B, i64 0, i64 %indvar.2
+  %val = load i32, ptr %arrayidx.2.a
+  store i32 %val, ptr %arrayidx.2.b
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 10
   br i1 %exitcond.2, label %S2, label %exit.2

diff  --git a/polly/test/FlattenSchedule/gemm.ll b/polly/test/FlattenSchedule/gemm.ll
index 417ffee85e8f4..b20293bd315a3 100644
--- a/polly/test/FlattenSchedule/gemm.ll
+++ b/polly/test/FlattenSchedule/gemm.ll
@@ -8,7 +8,7 @@
 
 target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
 
-define void @gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, double* noalias nonnull %C, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, ptr noalias nonnull %C, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %ni.for
 
@@ -24,13 +24,13 @@ ni.for:
 
     nj_beta:
      %c_stride = mul nsw i32 %i, 3; %nj
-     %c_idx_i = getelementptr inbounds double, double* %C, i32 %c_stride
-     %c_idx_ij = getelementptr inbounds double, double* %c_idx_i, i32 %j
+     %c_idx_i = getelementptr inbounds double, ptr %C, i32 %c_stride
+     %c_idx_ij = getelementptr inbounds double, ptr %c_idx_i, i32 %j
 
-     ; C[i][j] *= beta
-     %c = load double, double* %c_idx_ij
+     ; C[i]ptr= beta
+     %c = load double, ptr %c_idx_ij
      %c_beta = fmul double %c, %beta
-     store double %c_beta, double* %c_idx_ij
+     store double %c_beta, ptr %c_idx_ij
 
      br label %nk.for
 
@@ -41,23 +41,23 @@ ni.for:
 
       nk_alpha:
         %a_stride = mul nsw i32 %i, 3; %nk
-        %a_idx_i = getelementptr inbounds double, double* %A, i32 %a_stride
-        %a_idx_ik = getelementptr inbounds double, double* %a_idx_i, i32 %k
+        %a_idx_i = getelementptr inbounds double, ptr %A, i32 %a_stride
+        %a_idx_ik = getelementptr inbounds double, ptr %a_idx_i, i32 %k
 
         %b_stride = mul nsw i32 %k, 3; %nj
-        %b_idx_k = getelementptr inbounds double, double* %B, i32 %b_stride
-        %b_idx_kj = getelementptr inbounds double, double* %b_idx_k, i32 %j
+        %b_idx_k = getelementptr inbounds double, ptr %B, i32 %b_stride
+        %b_idx_kj = getelementptr inbounds double, ptr %b_idx_k, i32 %j
 
-        ; C[i][j] += alpha * A[i][k] * B[k][j]
-        %a = load double, double* %a_idx_ik
-        %b = load double, double* %b_idx_kj
-        %beta_c = load double, double* %c_idx_ij
+        ; C[i][j] += alpha * A[i]ptr B[k][j]
+        %a = load double, ptr %a_idx_ik
+        %b = load double, ptr %b_idx_kj
+        %beta_c = load double, ptr %c_idx_ij
 
         %alpha_a = fmul double %a, %alpha
         %alpha_a_b = fmul double %alpha_a, %b
         %beta_c_alpha_a_b = fadd double %beta_c, %alpha_a_b
 
-        store double %beta_c_alpha_a_b, double* %c_idx_ij
+        store double %beta_c_alpha_a_b, ptr %c_idx_ij
 
         br label %nk.inc
 
@@ -66,7 +66,7 @@ ni.for:
       br label %nk.for
 
     nk.exit:
-      ; store double %c, double* %c_idx_ij
+      ; store double %c, ptr %c_idx_ij
       br label %nj.inc
 
   nj.inc:

diff  --git a/polly/test/ForwardOpTree/atax.ll b/polly/test/ForwardOpTree/atax.ll
index 4915b90ef19c6..0690c1b000fa2 100644
--- a/polly/test/ForwardOpTree/atax.ll
+++ b/polly/test/ForwardOpTree/atax.ll
@@ -2,31 +2,30 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define internal fastcc void @kernel_atax([2100 x double]* nocapture readonly %A, double* nocapture readonly %x, double* nocapture %y, double* nocapture %tmp) unnamed_addr #0 {
+define internal fastcc void @kernel_atax(ptr nocapture readonly %A, ptr nocapture readonly %x, ptr nocapture %y, ptr nocapture %tmp) unnamed_addr #0 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %y15 = bitcast double* %y to i8*
-  call void @llvm.memset.p0i8.i64(i8* %y15, i8 0, i64 16800, i32 8, i1 false)
+  call void @llvm.memset.p0.i64(ptr %y, i8 0, i64 16800, i32 8, i1 false)
   br label %for.body3
 
 for.body3:                                        ; preds = %for.inc40, %entry.split
   %indvars.iv8 = phi i64 [ 0, %entry.split ], [ %indvars.iv.next9, %for.inc40 ]
-  %arrayidx5 = getelementptr inbounds double, double* %tmp, i64 %indvars.iv8
-  store double 0.000000e+00, double* %arrayidx5, align 8, !tbaa !6
+  %arrayidx5 = getelementptr inbounds double, ptr %tmp, i64 %indvars.iv8
+  store double 0.000000e+00, ptr %arrayidx5, align 8, !tbaa !6
   br label %for.body8
 
 for.body8:                                        ; preds = %for.body8, %for.body3
   %0 = phi double [ 0.000000e+00, %for.body3 ], [ %add, %for.body8 ]
   %indvars.iv = phi i64 [ 0, %for.body3 ], [ %indvars.iv.next, %for.body8 ]
-  %arrayidx14 = getelementptr inbounds [2100 x double], [2100 x double]* %A, i64 %indvars.iv8, i64 %indvars.iv
-  %1 = load double, double* %arrayidx14, align 8, !tbaa !6
-  %arrayidx16 = getelementptr inbounds double, double* %x, i64 %indvars.iv
-  %2 = load double, double* %arrayidx16, align 8, !tbaa !6
+  %arrayidx14 = getelementptr inbounds [2100 x double], ptr %A, i64 %indvars.iv8, i64 %indvars.iv
+  %1 = load double, ptr %arrayidx14, align 8, !tbaa !6
+  %arrayidx16 = getelementptr inbounds double, ptr %x, i64 %indvars.iv
+  %2 = load double, ptr %arrayidx16, align 8, !tbaa !6
   %mul = fmul double %1, %2
   %add = fadd double %0, %mul
-  store double %add, double* %arrayidx5, align 8, !tbaa !6
+  store double %add, ptr %arrayidx5, align 8, !tbaa !6
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 2
   br i1 %exitcond, label %for.end21, label %for.body8
@@ -37,19 +36,19 @@ for.end21:                                        ; preds = %for.body8
 for.body24:                                       ; preds = %for.body24.for.body24_crit_edge, %for.end21
   %3 = phi double [ %add, %for.end21 ], [ %.pre, %for.body24.for.body24_crit_edge ]
   %indvars.iv5 = phi i64 [ 0, %for.end21 ], [ %indvars.iv.next6, %for.body24.for.body24_crit_edge ]
-  %arrayidx26 = getelementptr inbounds double, double* %y, i64 %indvars.iv5
-  %4 = load double, double* %arrayidx26, align 8, !tbaa !6
-  %arrayidx30 = getelementptr inbounds [2100 x double], [2100 x double]* %A, i64 %indvars.iv8, i64 %indvars.iv5
-  %5 = load double, double* %arrayidx30, align 8, !tbaa !6
+  %arrayidx26 = getelementptr inbounds double, ptr %y, i64 %indvars.iv5
+  %4 = load double, ptr %arrayidx26, align 8, !tbaa !6
+  %arrayidx30 = getelementptr inbounds [2100 x double], ptr %A, i64 %indvars.iv8, i64 %indvars.iv5
+  %5 = load double, ptr %arrayidx30, align 8, !tbaa !6
   %mul33 = fmul double %5, %3
   %add34 = fadd double %4, %mul33
-  store double %add34, double* %arrayidx26, align 8, !tbaa !6
+  store double %add34, ptr %arrayidx26, align 8, !tbaa !6
   %indvars.iv.next6 = add nuw nsw i64 %indvars.iv5, 1
   %exitcond7 = icmp eq i64 %indvars.iv.next6, 2
   br i1 %exitcond7, label %for.inc40, label %for.body24.for.body24_crit_edge
 
 for.body24.for.body24_crit_edge:                  ; preds = %for.body24
-  %.pre = load double, double* %arrayidx5, align 8, !tbaa !6
+  %.pre = load double, ptr %arrayidx5, align 8, !tbaa !6
   br label %for.body24
 
 for.inc40:                                        ; preds = %for.body24
@@ -62,7 +61,7 @@ for.end42:                                        ; preds = %for.inc40
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #1
+declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i32, i1) #1
 
 attributes #0 = { noinline norecurse nounwind 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" }
 attributes #1 = { argmemonly nounwind }
@@ -92,7 +91,7 @@ attributes #1 = { argmemonly nounwind }
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 { Stmt_for_body3[i0] -> MemRef1__phi[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   store double 0.000000e+00, double* %arrayidx5, align 8, !tbaa !2
+; CHECK-NEXT:                   store double 0.000000e+00, ptr %arrayidx5, align 8, !tbaa !2
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_for_body8
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
@@ -110,11 +109,11 @@ attributes #1 = { argmemonly nounwind }
 ; CHECK-NEXT:                 { Stmt_for_body8[i0, i1] -> MemRef_add[] };
 ; CHECK-NEXT:             Instructions {
 ; CHECK-NEXT:                   %0 = phi double [ 0.000000e+00, %for.body3 ], [ %add, %for.body8 ]
-; CHECK-NEXT:                   %1 = load double, double* %arrayidx14, align 8, !tbaa !2
-; CHECK-NEXT:                   %2 = load double, double* %arrayidx16, align 8, !tbaa !2
+; CHECK-NEXT:                   %1 = load double, ptr %arrayidx14, align 8, !tbaa !2
+; CHECK-NEXT:                   %2 = load double, ptr %arrayidx16, align 8, !tbaa !2
 ; CHECK-NEXT:                   %mul = fmul double %1, %2
 ; CHECK-NEXT:                   %add = fadd double %0, %mul
-; CHECK-NEXT:                   store double %add, double* %arrayidx5, align 8, !tbaa !2
+; CHECK-NEXT:                   store double %add, ptr %arrayidx5, align 8, !tbaa !2
 ; CHECK-NEXT:                   %exitcond = icmp eq i64 %indvars.iv.next, 2
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_for_end21
@@ -136,11 +135,11 @@ attributes #1 = { argmemonly nounwind }
 ; CHECK-NEXT:                 { Stmt_for_body24[i0, i1] -> MemRef_y[i1] };
 ; CHECK-NEXT:             Instructions {
 ; CHECK-NEXT:                   %3 = phi double [ %add, %for.end21 ], [ %.pre, %for.body24.for.body24_crit_edge ]
-; CHECK-NEXT:                   %4 = load double, double* %arrayidx26, align 8, !tbaa !2
-; CHECK-NEXT:                   %5 = load double, double* %arrayidx30, align 8, !tbaa !2
+; CHECK-NEXT:                   %4 = load double, ptr %arrayidx26, align 8, !tbaa !2
+; CHECK-NEXT:                   %5 = load double, ptr %arrayidx30, align 8, !tbaa !2
 ; CHECK-NEXT:                   %mul33 = fmul double %5, %3
 ; CHECK-NEXT:                   %add34 = fadd double %4, %mul33
-; CHECK-NEXT:                   store double %add34, double* %arrayidx26, align 8, !tbaa !2
+; CHECK-NEXT:                   store double %add34, ptr %arrayidx26, align 8, !tbaa !2
 ; CHECK-NEXT:                   %exitcond7 = icmp eq i64 %indvars.iv.next6, 2
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_for_body24_for_body24_crit_edge
@@ -149,6 +148,6 @@ attributes #1 = { argmemonly nounwind }
 ; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                 { Stmt_for_body24_for_body24_crit_edge[i0, i1] -> MemRef_tmp[i0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %.pre = load double, double* %arrayidx5, align 8, !tbaa !2
+; CHECK-NEXT:                   %.pre = load double, ptr %arrayidx5, align 8, !tbaa !2
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/changed-kind.ll b/polly/test/ForwardOpTree/changed-kind.ll
index 785dcf4531daa..a1d59825b3b2f 100644
--- a/polly/test/ForwardOpTree/changed-kind.ll
+++ b/polly/test/ForwardOpTree/changed-kind.ll
@@ -28,7 +28,7 @@ lor.end.thread:
 
 lor.rhs87:
   %0 = phi i64 [ 0, %lor.end.thread ], [ 0, %lor.end ]
-  store i64 %0, i64* @c, align 8
+  store i64 %0, ptr @c, align 8
   %neg79 = xor i64 %0, -1
   br label %lor.end93
 

diff  --git a/polly/test/ForwardOpTree/forward_from_region.ll b/polly/test/ForwardOpTree/forward_from_region.ll
index 841e0b0d5d5a8..53d22800081e2 100644
--- a/polly/test/ForwardOpTree/forward_from_region.ll
+++ b/polly/test/ForwardOpTree/forward_from_region.ll
@@ -14,7 +14,7 @@
 ;     A[0] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -29,11 +29,11 @@ for:
       br i1 %cond, label %bodyA_true, label %bodyB
 
     bodyA_true:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %bodyB
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %bodyB_exit
 
     bodyB_exit:
@@ -72,7 +72,7 @@ return:
 ; CHECK:                 [n] -> { Stmt_bodyB[i0] -> MemRef_A[0] };
 ; CHECK:             Instructions {
 ; CHECK:                   %val = fadd double 2.100000e+01, 2.100000e+01
-; CHECK:                   store double %val, double* %A, align 8
+; CHECK:                   store double %val, ptr %A, align 8
 ; CHECK:             }
 ; CHECK: }
 

diff  --git a/polly/test/ForwardOpTree/forward_hoisted.ll b/polly/test/ForwardOpTree/forward_hoisted.ll
index ba079e4026fa5..32fca00141dd6 100644
--- a/polly/test/ForwardOpTree/forward_hoisted.ll
+++ b/polly/test/ForwardOpTree/forward_hoisted.ll
@@ -11,7 +11,7 @@
 ;   A[0] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -21,12 +21,12 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %val1 = load double, double* %B
+      %val1 = load double, ptr %B
       %val2 = fadd double %val1, 21.0
       br label %bodyB
 
     bodyB:
-      store double %val2, double* %A
+      store double %val2, ptr %A
       br label %inc
 
 inc:
@@ -52,7 +52,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_val2[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val1 = load double, double* %B, align 8
+; CHECK-NEXT:                   %val1 = load double, ptr %B, align 8
 ; CHECK-NEXT:                   %val2 = fadd double %val1, 2.100000e+01
 ; CHECK-NEXT:                 }
 ; CHECK-NEXT:     Stmt_bodyB
@@ -60,6 +60,6 @@ return:
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_A[0] };
 ; CHECK-NEXT:             Instructions {
 ; CHECK-NEXT:                   %val2 = fadd double %val1, 2.100000e+01
-; CHECK-NEXT:                   store double %val2, double* %A, align 8
+; CHECK-NEXT:                   store double %val2, ptr %A, align 8
 ; CHECK-NEXT:                 }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_instruction.ll b/polly/test/ForwardOpTree/forward_instruction.ll
index 7860dd551b4be..1dcd643573245 100644
--- a/polly/test/ForwardOpTree/forward_instruction.ll
+++ b/polly/test/ForwardOpTree/forward_instruction.ll
@@ -10,7 +10,7 @@
 ;   A[0] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -24,7 +24,7 @@ for:
       br label %bodyB
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 inc:
@@ -57,6 +57,6 @@ return:
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_A[0] };
 ; CHECK-NEXT:             Instructions {
 ; CHECK-NEXT:                   %val = fadd double 2.100000e+01, 2.100000e+01
-; CHECK-NEXT:                   store double %val, double* %A, align 8
+; CHECK-NEXT:                   store double %val, ptr %A, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_into_region.ll b/polly/test/ForwardOpTree/forward_into_region.ll
index fc568434e90de..dd18cfe5e61a7 100644
--- a/polly/test/ForwardOpTree/forward_into_region.ll
+++ b/polly/test/ForwardOpTree/forward_into_region.ll
@@ -12,7 +12,7 @@
 ;     A[0] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -30,7 +30,7 @@ for:
       br i1 %cond, label %bodyB_true, label %bodyB_exit
 
     bodyB_true:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %bodyB_exit
 
     bodyB_exit:

diff  --git a/polly/test/ForwardOpTree/forward_into_region_redundant_use.ll b/polly/test/ForwardOpTree/forward_into_region_redundant_use.ll
index 124d122e2244f..e5458c027880b 100644
--- a/polly/test/ForwardOpTree/forward_into_region_redundant_use.ll
+++ b/polly/test/ForwardOpTree/forward_into_region_redundant_use.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-invariant-load-hoisting=true -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines
 ;
 
-define void @foo(float* %A, i32 %p, float* %B) {
+define void @foo(ptr %A, i32 %p, ptr %B) {
 start:
   br label %branch
 
@@ -10,7 +10,7 @@ branch:
   br i1 %cmp, label %next, label %end
 
 next:
-  %val = load float, float* %A
+  %val = load float, ptr %A
   %fcmp = fcmp oeq float %val, 41.0
   br label %nonaffine
 
@@ -18,11 +18,11 @@ nonaffine:
   br i1 %fcmp, label %a, label %b
 
 a:
-  store float %val, float* %A
+  store float %val, ptr %A
   br label %end
 
 b:
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   br label %end
 
 end:
@@ -38,7 +38,7 @@ end:
 ; CHECK-NEXT:             MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 [p] -> { Stmt_next[] -> MemRef_val[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load float, float* %A, align 4
+; CHECK-NEXT:                   %val = load float, ptr %A, align 4
 ; CHECK-NEXT:                   %fcmp = fcmp oeq float %val, 4.100000e+01
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_nonaffine__TO__end
@@ -50,8 +50,8 @@ end:
 ; CHECK-NEXT:             MayWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                 [p] -> { Stmt_nonaffine__TO__end[] -> MemRef_A[0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load float, float* %A, align 4
-; CHECK-NEXT:                   %val = load float, float* %A, align 4
+; CHECK-NEXT:                   %val = load float, ptr %A, align 4
+; CHECK-NEXT:                   %val = load float, ptr %A, align 4
 ; CHECK-NEXT:                   %fcmp = fcmp oeq float %val, 4.100000e+01
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_load.ll b/polly/test/ForwardOpTree/forward_load.ll
index f3b5d80f15a06..86e3cb0203fa4 100644
--- a/polly/test/ForwardOpTree/forward_load.ll
+++ b/polly/test/ForwardOpTree/forward_load.ll
@@ -11,7 +11,7 @@
 ;   A[j] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -21,13 +21,13 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       br label %bodyB
 
     bodyB:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:
@@ -55,6 +55,6 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:             [n] -> { Stmt_bodyB[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:               %val = load double, double* %B_idx, align 8
-; CHECK-NEXT:               store double %val, double* %A_idx, align 8
+; CHECK-NEXT:               %val = load double, ptr %B_idx, align 8
+; CHECK-NEXT:               store double %val, ptr %A_idx, align 8
 ; CHECK-NEXT:         }

diff  --git a/polly/test/ForwardOpTree/forward_load_
diff erentarray.ll b/polly/test/ForwardOpTree/forward_load_
diff erentarray.ll
index f3ce088972860..786277bdeb875 100644
--- a/polly/test/ForwardOpTree/forward_load_
diff erentarray.ll
+++ b/polly/test/ForwardOpTree/forward_load_
diff erentarray.ll
@@ -15,7 +15,7 @@
 ;   A[j] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B, double* noalias nonnull %C) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, ptr noalias nonnull %C) {
 entry:
   br label %for
 
@@ -25,19 +25,19 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       br label %bodyB
 
     bodyB:
-      store double 0.0, double* %B_idx
-      %C_idx = getelementptr inbounds double, double* %C, i32 %j
-      store double %val, double* %C_idx
+      store double 0.0, ptr %B_idx
+      %C_idx = getelementptr inbounds double, ptr %C, i32 %j
+      store double %val, ptr %C_idx
       br label %bodyC
 
     bodyC:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:
@@ -65,7 +65,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_val[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_bodyB
 ; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
@@ -76,9 +76,9 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_C[i0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
-; CHECK-NEXT:                   store double 0.000000e+00, double* %B_idx, align 8
-; CHECK-NEXT:                   store double %val, double* %C_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
+; CHECK-NEXT:                   store double 0.000000e+00, ptr %B_idx, align 8
+; CHECK-NEXT:                   store double %val, ptr %C_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_bodyC
 ; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
@@ -87,7 +87,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyC[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
-; CHECK-NEXT:                   store double %val, double* %A_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
+; CHECK-NEXT:                   store double %val, ptr %A_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_load_double_write.ll b/polly/test/ForwardOpTree/forward_load_double_write.ll
index d0ad2c1384d8c..1618722381fc8 100644
--- a/polly/test/ForwardOpTree/forward_load_double_write.ll
+++ b/polly/test/ForwardOpTree/forward_load_double_write.ll
@@ -3,7 +3,7 @@
 ; Rematerialize a load even in case two writes of identical values are in
 ; one scop statement.
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -13,14 +13,14 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       br label %bodyB
 
     bodyB:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:
@@ -50,7 +50,7 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:             [n] -> { Stmt_bodyB[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:               %val = load double, double* %B_idx, align 8
-; CHECK-NEXT:               store double %val, double* %A_idx, align 8
-; CHECK-NEXT:               store double %val, double* %A_idx, align 8
+; CHECK-NEXT:               %val = load double, ptr %B_idx, align 8
+; CHECK-NEXT:               store double %val, ptr %A_idx, align 8
+; CHECK-NEXT:               store double %val, ptr %A_idx, align 8
 ; CHECK-NEXT:         }

diff  --git a/polly/test/ForwardOpTree/forward_load_fromloop.ll b/polly/test/ForwardOpTree/forward_load_fromloop.ll
index 90587b76dad7f..8f08a1356c38d 100644
--- a/polly/test/ForwardOpTree/forward_load_fromloop.ll
+++ b/polly/test/ForwardOpTree/forward_load_fromloop.ll
@@ -14,7 +14,7 @@
 ;   A[j] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -25,15 +25,15 @@ for:
 
     bodyA:
       %i = phi i32 [0, %for], [%i.inc, %bodyA]
-      %B_idx = getelementptr inbounds double, double* %B, i32 %i
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %i
+      %val = load double, ptr %B_idx
       %i.inc = add nuw nsw i32 %i, 1
       %i.cmp = icmp slt i32 %i, %n
       br i1 %i.cmp, label %bodyA, label %bodyB
 
     bodyB:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:
@@ -61,7 +61,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0, i1] -> MemRef_val[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
 ; CHECK-NEXT:                   %i.cmp = icmp slt i32 %i, %n
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_bodyB
@@ -71,7 +71,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
-; CHECK-NEXT:                   store double %val, double* %A_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
+; CHECK-NEXT:                   store double %val, ptr %A_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_load_indirect.ll b/polly/test/ForwardOpTree/forward_load_indirect.ll
index 390335a543411..f83af61e67410 100644
--- a/polly/test/ForwardOpTree/forward_load_indirect.ll
+++ b/polly/test/ForwardOpTree/forward_load_indirect.ll
@@ -12,7 +12,7 @@
 ;   A[j] = add;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -22,14 +22,14 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       %add = fadd double %val, 42.0
       br label %bodyB
 
     bodyB:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %add, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %add, ptr %A_idx
       br label %inc
 
 inc:
@@ -58,7 +58,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_add[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
 ; CHECK-NEXT:                   %add = fadd double %val, 4.200000e+01
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_bodyB
@@ -68,8 +68,8 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
 ; CHECK-NEXT:                   %add = fadd double %val, 4.200000e+01
-; CHECK-NEXT:                   store double %add, double* %A_idx, align 8
+; CHECK-NEXT:                   store double %add, ptr %A_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_load_memset_after.ll b/polly/test/ForwardOpTree/forward_load_memset_after.ll
index 8962c8d17d97b..13797a44c8623 100644
--- a/polly/test/ForwardOpTree/forward_load_memset_after.ll
+++ b/polly/test/ForwardOpTree/forward_load_memset_after.ll
@@ -15,9 +15,9 @@
 ; }
 ;
 
-declare void @llvm.memset.p0f64.i64(double* nocapture, i8, i64, i32, i1)
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1)
 
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -27,18 +27,18 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       br label %bodyB
 
     bodyB:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %bodyC
 
     bodyC:
-      call void @llvm.memset.p0f64.i64(double* %A, i8 0, i64 16, i32 1, i1 false)
-      call void @llvm.memset.p0f64.i64(double* %B, i8 0, i64 16, i32 1, i1 false)
+      call void @llvm.memset.p0.i64(ptr %A, i8 0, i64 16, i32 1, i1 false)
+      call void @llvm.memset.p0.i64(ptr %B, i8 0, i64 16, i32 1, i1 false)
       br label %inc
 
 inc:

diff  --git a/polly/test/ForwardOpTree/forward_load_memset_before.ll b/polly/test/ForwardOpTree/forward_load_memset_before.ll
index 0caef0b21b74f..60b1e076b980c 100644
--- a/polly/test/ForwardOpTree/forward_load_memset_before.ll
+++ b/polly/test/ForwardOpTree/forward_load_memset_before.ll
@@ -15,9 +15,9 @@
 ; }
 ;
 
-declare void @llvm.memset.p0f64.i64(double* nocapture, i8, i64, i32, i1)
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1)
 
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -27,18 +27,18 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      call void @llvm.memset.p0f64.i64(double* %A, i8 0, i64 16, i32 1, i1 false)
-      call void @llvm.memset.p0f64.i64(double* %B, i8 0, i64 16, i32 1, i1 false)
+      call void @llvm.memset.p0.i64(ptr %A, i8 0, i64 16, i32 1, i1 false)
+      call void @llvm.memset.p0.i64(ptr %B, i8 0, i64 16, i32 1, i1 false)
       br label %bodyB
 
     bodyB:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       br label %bodyC
 
     bodyC:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:
@@ -66,7 +66,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_val[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_bodyC
 ; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
@@ -75,7 +75,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyC[i0] -> MemRef_A[o0] : 8i0 <= o0 <= 7 + 8i0 };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
-; CHECK-NEXT:                   store double %val, double* %A_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
+; CHECK-NEXT:                   store double %val, ptr %A_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_load_tripleuse.ll b/polly/test/ForwardOpTree/forward_load_tripleuse.ll
index ff5435b3b9ae4..1d0df2a22e87c 100644
--- a/polly/test/ForwardOpTree/forward_load_tripleuse.ll
+++ b/polly/test/ForwardOpTree/forward_load_tripleuse.ll
@@ -17,7 +17,7 @@
 ;   C[j] = val2;
 ; }
 ;
-define void @func1(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B, double* noalias nonnull %C) {
+define void @func1(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, ptr noalias nonnull %C) {
 entry:
   br label %for
 
@@ -27,16 +27,16 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %val1 = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %val1 = load double, ptr %A_idx
       %val2 = fadd double %val1, %val1
       br label %bodyB
 
     bodyB:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      store double %val1, double* %B_idx
-      %C_idx = getelementptr inbounds double, double* %C, i32 %j
-      store double %val2, double* %C_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      store double %val1, ptr %B_idx
+      %C_idx = getelementptr inbounds double, ptr %C, i32 %j
+      store double %val2, ptr %C_idx
       br label %inc
 
 inc:
@@ -67,7 +67,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_val2[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val1 = load double, double* %A_idx, align 8
+; CHECK-NEXT:                   %val1 = load double, ptr %A_idx, align 8
 ; CHECK-NEXT:                   %val2 = fadd double %val1, %val1
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_bodyB
@@ -79,16 +79,16 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_C[i0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val1 = load double, double* %A_idx, align 8
+; CHECK-NEXT:                   %val1 = load double, ptr %A_idx, align 8
 ; CHECK-NEXT:                   %val2 = fadd double %val1, %val1
-; CHECK-NEXT:                   %val1 = load double, double* %A_idx, align 8
-; CHECK-NEXT:                   store double %val1, double* %B_idx, align 8
-; CHECK-NEXT:                   store double %val2, double* %C_idx, align 8
+; CHECK-NEXT:                   %val1 = load double, ptr %A_idx, align 8
+; CHECK-NEXT:                   store double %val1, ptr %B_idx, align 8
+; CHECK-NEXT:                   store double %val2, ptr %C_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }
 
 
-define void @func2(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B, double* noalias nonnull %C) {
+define void @func2(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, ptr noalias nonnull %C) {
 entry:
   br label %for
 
@@ -98,16 +98,16 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %val1 = load double, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %val1 = load double, ptr %A_idx
       %val2 = fadd double %val1, %val1
       br label %bodyB
 
     bodyB:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      store double %val2, double* %B_idx
-      %C_idx = getelementptr inbounds double, double* %C, i32 %j
-      store double %val1, double* %C_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      store double %val2, ptr %B_idx
+      %C_idx = getelementptr inbounds double, ptr %C, i32 %j
+      store double %val1, ptr %C_idx
       br label %inc
 
 inc:
@@ -138,7 +138,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_val1[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val1 = load double, double* %A_idx, align 8
+; CHECK-NEXT:                   %val1 = load double, ptr %A_idx, align 8
 ; CHECK-NEXT:                   %val2 = fadd double %val1, %val1
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_bodyB
@@ -150,10 +150,10 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_C[i0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val1 = load double, double* %A_idx, align 8
-; CHECK-NEXT:                   %val1 = load double, double* %A_idx, align 8
+; CHECK-NEXT:                   %val1 = load double, ptr %A_idx, align 8
+; CHECK-NEXT:                   %val1 = load double, ptr %A_idx, align 8
 ; CHECK-NEXT:                   %val2 = fadd double %val1, %val1
-; CHECK-NEXT:                   store double %val2, double* %B_idx, align 8
-; CHECK-NEXT:                   store double %val1, double* %C_idx, align 8
+; CHECK-NEXT:                   store double %val2, ptr %B_idx, align 8
+; CHECK-NEXT:                   store double %val1, ptr %C_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_load_unrelatedunusual.ll b/polly/test/ForwardOpTree/forward_load_unrelatedunusual.ll
index 9181cb341ea6e..b7bae56289865 100644
--- a/polly/test/ForwardOpTree/forward_load_unrelatedunusual.ll
+++ b/polly/test/ForwardOpTree/forward_load_unrelatedunusual.ll
@@ -13,7 +13,7 @@
 ;   A[j] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B, double *noalias %C) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, ptr noalias %C) {
 entry:
   br label %for
 
@@ -23,15 +23,15 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
-      store double 21.0, double* %C
-      store double 41.0, double* %C
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
+      store double 21.0, ptr %C
+      store double 41.0, ptr %C
       br label %bodyB
 
     bodyB:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:
@@ -59,6 +59,6 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:             [n] -> { Stmt_bodyB[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:               %val = load double, double* %B_idx, align 8
-; CHECK-NEXT:               store double %val, double* %A_idx, align 8
+; CHECK-NEXT:               %val = load double, ptr %B_idx, align 8
+; CHECK-NEXT:               store double %val, ptr %A_idx, align 8
 ; CHECK-NEXT:         }

diff  --git a/polly/test/ForwardOpTree/forward_phi_load.ll b/polly/test/ForwardOpTree/forward_phi_load.ll
index 2a24ded6596fe..0b0bb209a3ef9 100644
--- a/polly/test/ForwardOpTree/forward_phi_load.ll
+++ b/polly/test/ForwardOpTree/forward_phi_load.ll
@@ -13,7 +13,7 @@
 ;   A[j] = phi;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -23,8 +23,8 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       br label %bodyB
 
     bodyB:
@@ -32,8 +32,8 @@ for:
       br label %bodyC
 
     bodyC:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %phi, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %phi, ptr %A_idx
       br label %inc
 
 inc:
@@ -59,7 +59,7 @@ return:
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_phi__phi[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %val = load double, double* %B_idx, align 8
+; CHECK-NEXT:                   %val = load double, ptr %B_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_bodyB
 ; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 1]
@@ -77,6 +77,6 @@ return:
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyC[i0] -> MemRef_phi[] };
 ; CHECK-NEXT:            new: [n] -> { Stmt_bodyC[i0] -> MemRef_B[i0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   store double %phi, double* %A_idx, align 8
+; CHECK-NEXT:                   store double %phi, ptr %A_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_readonly.ll b/polly/test/ForwardOpTree/forward_readonly.ll
index a0c9b659702ea..a29c5bff5d70c 100644
--- a/polly/test/ForwardOpTree/forward_readonly.ll
+++ b/polly/test/ForwardOpTree/forward_readonly.ll
@@ -11,7 +11,7 @@
 ;   A[0] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double %arg) {
+define void @func(i32 %n, ptr noalias nonnull %A, double %arg) {
 entry:
   br label %for
 
@@ -25,7 +25,7 @@ for:
       br label %bodyB
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 inc:
@@ -64,7 +64,7 @@ return:
 ; MODEL-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_arg[] };
 ; MODEL-NEXT:             Instructions {
 ; MODEL-NEXT:                   %val = fadd double %arg, 2.100000e+01
-; MODEL-NEXT:                   store double %val, double* %A, align 8
+; MODEL-NEXT:                   store double %val, ptr %A, align 8
 ; MODEL-NEXT:                 }
 ; MODEL-NEXT: }
 
@@ -80,6 +80,6 @@ return:
 ; NOMODEL-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_A[0] };
 ; NOMODEL-NEXT:             Instructions {
 ; NOMODEL-NEXT:                   %val = fadd double %arg, 2.100000e+01
-; NOMODEL-NEXT:                   store double %val, double* %A, align 8
+; NOMODEL-NEXT:                   store double %val, ptr %A, align 8
 ; NOMODEL-NEXT:                 }
 ; NOMODEL-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_reusue.ll b/polly/test/ForwardOpTree/forward_reusue.ll
index 6342946a11cd7..ead8c73798038 100644
--- a/polly/test/ForwardOpTree/forward_reusue.ll
+++ b/polly/test/ForwardOpTree/forward_reusue.ll
@@ -2,7 +2,7 @@
 ;
 ; Move operand tree without duplicating values used multiple times.
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -20,7 +20,7 @@ for:
       br label %bodyB
 
     bodyB:
-      store double %val5, double* %A
+      store double %val5, ptr %A
       br label %inc
 
 inc:
@@ -60,6 +60,6 @@ return:
 ; CHECK-NEXT:                   %val3 = fadd double %val2, %val2
 ; CHECK-NEXT:                   %val4 = fadd double %val3, %val3
 ; CHECK-NEXT:                   %val5 = fadd double %val4, %val4
-; CHECK-NEXT:                   store double %val5, double* %A, align 8
+; CHECK-NEXT:                   store double %val5, ptr %A, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_store.ll b/polly/test/ForwardOpTree/forward_store.ll
index 622d28fc009ea..a6369eb303c1d 100644
--- a/polly/test/ForwardOpTree/forward_store.ll
+++ b/polly/test/ForwardOpTree/forward_store.ll
@@ -13,7 +13,7 @@
 
 declare double @f() #0
 
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -24,13 +24,13 @@ for:
 
     bodyA:
       %val = call double @f()
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %bodyB
 
     bodyB:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      store double %val, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      store double %val, ptr %B_idx
       br label %inc
 
 inc:
@@ -59,7 +59,7 @@ attributes #0 = { nounwind readnone }
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_val[] };
 ; CHECK-NEXT:             Instructions {
 ; CHECK-NEXT:                   %val = call double @f()
-; CHECK-NEXT:                   store double %val, double* %A_idx, align 8
+; CHECK-NEXT:                   store double %val, ptr %A_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_bodyB
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
@@ -68,6 +68,6 @@ attributes #0 = { nounwind readnone }
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_val[] };
 ; CHECK-NEXT:            new: [n] -> { Stmt_bodyB[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   store double %val, double* %B_idx, align 8
+; CHECK-NEXT:                   store double %val, ptr %B_idx, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_synthesizable_definloop.ll b/polly/test/ForwardOpTree/forward_synthesizable_definloop.ll
index bdf8d9be3dace..f0da9320c43f7 100644
--- a/polly/test/ForwardOpTree/forward_synthesizable_definloop.ll
+++ b/polly/test/ForwardOpTree/forward_synthesizable_definloop.ll
@@ -13,7 +13,7 @@
 ;   A[0] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -42,7 +42,7 @@ for:
 
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 inc:
@@ -75,6 +75,6 @@ return:
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_A[0] };
 ; CHECK-NEXT:             Instructions {
 ; CHECK-NEXT:                   %val = sitofp i32 %i to double
-; CHECK-NEXT:                   store double %val, double* %A, align 8
+; CHECK-NEXT:                   store double %val, ptr %A, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_synthesizable_indvar.ll b/polly/test/ForwardOpTree/forward_synthesizable_indvar.ll
index a3be3a2320827..a38ab543e2555 100644
--- a/polly/test/ForwardOpTree/forward_synthesizable_indvar.ll
+++ b/polly/test/ForwardOpTree/forward_synthesizable_indvar.ll
@@ -10,7 +10,7 @@
 ;   A[0] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -24,7 +24,7 @@ for:
       br label %bodyB
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 inc:
@@ -57,6 +57,6 @@ return:
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_A[0] };
 ; CHECK-NEXT:             Instructions {
 ; CHECK-NEXT:                   %val = sitofp i32 %j to double
-; CHECK-NEXT:                   store double %val, double* %A, align 8
+; CHECK-NEXT:                   store double %val, ptr %A, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_synthesizable_useinloop.ll b/polly/test/ForwardOpTree/forward_synthesizable_useinloop.ll
index 587d316277c31..bb1760ae0ffb5 100644
--- a/polly/test/ForwardOpTree/forward_synthesizable_useinloop.ll
+++ b/polly/test/ForwardOpTree/forward_synthesizable_useinloop.ll
@@ -13,7 +13,7 @@
 ;   }
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -34,7 +34,7 @@ for:
 
 
         bodyB:
-          store double %val, double* %A
+          store double %val, ptr %A
           br label %inner.inc
 
 
@@ -75,6 +75,6 @@ return:
 ; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0, i1] -> MemRef_A[0] };
 ; CHECK-NEXT:             Instructions {
 ; CHECK-NEXT:                   %val = sitofp i32 %j to double
-; CHECK-NEXT:                   store double %val, double* %A, align 8
+; CHECK-NEXT:                   store double %val, ptr %A, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/forward_transitive.ll b/polly/test/ForwardOpTree/forward_transitive.ll
index 1801365f8e85b..243889437149b 100644
--- a/polly/test/ForwardOpTree/forward_transitive.ll
+++ b/polly/test/ForwardOpTree/forward_transitive.ll
@@ -13,7 +13,7 @@
 ;   A[0] = val2;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -31,7 +31,7 @@ for:
       br label %bodyC
 
     bodyC:
-      store double %val2, double* %A
+      store double %val2, ptr %A
       br label %inc
 
 inc:
@@ -72,6 +72,6 @@ return:
 ; CHECK-NEXT:             Instructions {
 ; CHECK-NEXT:                   %val1 = fadd double 1.250000e+01, 1.250000e+01
 ; CHECK-NEXT:                   %val2 = fadd double %val1, 2.100000e+01
-; CHECK-NEXT:                   store double %val2, double* %A, align 8
+; CHECK-NEXT:                   store double %val2, ptr %A, align 8
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/jacobi-1d.ll b/polly/test/ForwardOpTree/jacobi-1d.ll
index a9cf68cae2be2..05ccd998c1a27 100644
--- a/polly/test/ForwardOpTree/jacobi-1d.ll
+++ b/polly/test/ForwardOpTree/jacobi-1d.ll
@@ -2,19 +2,19 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define internal fastcc void @kernel_jacobi_1d(double* noalias nocapture %A, double* noalias nocapture %B) unnamed_addr #0 {
+define internal fastcc void @kernel_jacobi_1d(ptr noalias nocapture %A, ptr noalias nocapture %B) unnamed_addr #0 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %arrayidx6.phi.trans.insert = getelementptr inbounds double, double* %A, i64 1
-  %arrayidx21.phi.trans.insert = getelementptr inbounds double, double* %B, i64 1
+  %arrayidx6.phi.trans.insert = getelementptr inbounds double, ptr %A, i64 1
+  %arrayidx21.phi.trans.insert = getelementptr inbounds double, ptr %B, i64 1
   br label %for.body
 
 for.body:                                         ; preds = %for.inc33, %entry.split
   %t.03 = phi i32 [ 0, %entry.split ], [ %inc34, %for.inc33 ]
-  %.pre = load double, double* %A, align 8, !tbaa !6
-  %.pre10 = load double, double* %arrayidx6.phi.trans.insert, align 8, !tbaa !6
+  %.pre = load double, ptr %A, align 8, !tbaa !6
+  %.pre10 = load double, ptr %arrayidx6.phi.trans.insert, align 8, !tbaa !6
   br label %for.body3
 
 for.body3:                                        ; preds = %for.body3, %for.body
@@ -23,18 +23,18 @@ for.body3:                                        ; preds = %for.body3, %for.bod
   %indvars.iv = phi i64 [ 1, %for.body ], [ %indvars.iv.next, %for.body3 ]
   %add = fadd double %1, %0
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %arrayidx9 = getelementptr inbounds double, double* %A, i64 %indvars.iv.next
-  %2 = load double, double* %arrayidx9, align 8, !tbaa !6
+  %arrayidx9 = getelementptr inbounds double, ptr %A, i64 %indvars.iv.next
+  %2 = load double, ptr %arrayidx9, align 8, !tbaa !6
   %add10 = fadd double %add, %2
   %mul = fmul double %add10, 3.333300e-01
-  %arrayidx12 = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  store double %mul, double* %arrayidx12, align 8, !tbaa !6
+  %arrayidx12 = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  store double %mul, ptr %arrayidx12, align 8, !tbaa !6
   %exitcond = icmp eq i64 %indvars.iv.next, 3
   br i1 %exitcond, label %for.end, label %for.body3
 
 for.end:                                          ; preds = %for.body3
-  %.pre11 = load double, double* %B, align 8, !tbaa !6
-  %.pre12 = load double, double* %arrayidx21.phi.trans.insert, align 8, !tbaa !6
+  %.pre11 = load double, ptr %B, align 8, !tbaa !6
+  %.pre12 = load double, ptr %arrayidx21.phi.trans.insert, align 8, !tbaa !6
   br label %for.inc33
 
 for.inc33:                                        ; preds = %for.body16
@@ -77,8 +77,8 @@ attributes #0 = { noinline norecurse nounwind uwtable "correctly-rounded-divide-
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                 { Stmt_for_body[i0] -> MemRef2__phi[] };
 ; CHECK-NEXT:             Instructions {
-; CHECK-NEXT:                   %.pre = load double, double* %A, align 8, !tbaa !2
-; CHECK-NEXT:                   %.pre10 = load double, double* %arrayidx6.phi.trans.insert, align 8, !tbaa !2
+; CHECK-NEXT:                   %.pre = load double, ptr %A, align 8, !tbaa !2
+; CHECK-NEXT:                   %.pre10 = load double, ptr %arrayidx6.phi.trans.insert, align 8, !tbaa !2
 ; CHECK-NEXT:             }
 ; CHECK-NEXT:     Stmt_for_body3
 ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
@@ -99,10 +99,10 @@ attributes #0 = { noinline norecurse nounwind uwtable "correctly-rounded-divide-
 ; CHECK-NEXT:                   %0 = phi double [ %.pre10, %for.body ], [ %2, %for.body3 ]
 ; CHECK-NEXT:                   %1 = phi double [ %.pre, %for.body ], [ %0, %for.body3 ]
 ; CHECK-NEXT:                   %add = fadd double %1, %0
-; CHECK-NEXT:                   %2 = load double, double* %arrayidx9, align 8, !tbaa !2
+; CHECK-NEXT:                   %2 = load double, ptr %arrayidx9, align 8, !tbaa !2
 ; CHECK-NEXT:                   %add10 = fadd double %add, %2
 ; CHECK-NEXT:                   %mul = fmul double %add10, 3.333300e-01
-; CHECK-NEXT:                   store double %mul, double* %arrayidx12, align 8, !tbaa !2
+; CHECK-NEXT:                   store double %mul, ptr %arrayidx12, align 8, !tbaa !2
 ; CHECK-NEXT:                   %exitcond = icmp eq i64 %indvars.iv.next, 3
 ; CHECK-NEXT:             }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ForwardOpTree/noforward_from_region.ll b/polly/test/ForwardOpTree/noforward_from_region.ll
index 7abc65ab196f9..30150912f32ec 100644
--- a/polly/test/ForwardOpTree/noforward_from_region.ll
+++ b/polly/test/ForwardOpTree/noforward_from_region.ll
@@ -17,7 +17,7 @@
 ;     A[0] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -27,16 +27,16 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %val = load double, double* %A
+      %val = load double, ptr %A
       %cond = fcmp oeq double 21.0, 21.0
       br i1 %cond, label %bodyA_true, label %bodyB
 
     bodyA_true:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %bodyB
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %bodyB_exit
 
     bodyB_exit:

diff  --git a/polly/test/ForwardOpTree/noforward_load_conditional.ll b/polly/test/ForwardOpTree/noforward_load_conditional.ll
index 11324077d2dcd..eaa0fc52186bf 100644
--- a/polly/test/ForwardOpTree/noforward_load_conditional.ll
+++ b/polly/test/ForwardOpTree/noforward_load_conditional.ll
@@ -15,7 +15,7 @@
 ;   A[j] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -25,18 +25,18 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       %cond = icmp slt i32 %j, 1
       br i1 %cond, label %bodyA_true, label %bodyB
 
     bodyA_true:
-      store double 0.0, double* %B_idx
+      store double 0.0, ptr %B_idx
       br label %bodyB
 
     bodyB:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:

diff  --git a/polly/test/ForwardOpTree/noforward_load_writebetween.ll b/polly/test/ForwardOpTree/noforward_load_writebetween.ll
index 5719cf83400ca..e2272c1c1f13f 100644
--- a/polly/test/ForwardOpTree/noforward_load_writebetween.ll
+++ b/polly/test/ForwardOpTree/noforward_load_writebetween.ll
@@ -14,7 +14,7 @@
 ;   A[j] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -24,17 +24,17 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       br label %bodyB
 
     bodyB:
-      store double 0.0, double* %B_idx
+      store double 0.0, ptr %B_idx
       br label %bodyC
 
     bodyC:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:

diff  --git a/polly/test/ForwardOpTree/noforward_outofquota.ll b/polly/test/ForwardOpTree/noforward_outofquota.ll
index e01cec051e956..2ec965d71184c 100644
--- a/polly/test/ForwardOpTree/noforward_outofquota.ll
+++ b/polly/test/ForwardOpTree/noforward_outofquota.ll
@@ -10,7 +10,7 @@
 ;   A[j] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -20,13 +20,13 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      %val = load double, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      %val = load double, ptr %B_idx
       br label %bodyB
 
     bodyB:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:

diff  --git a/polly/test/ForwardOpTree/noforward_partial.ll b/polly/test/ForwardOpTree/noforward_partial.ll
index 201c1c919251d..127ac9ff5f14f 100644
--- a/polly/test/ForwardOpTree/noforward_partial.ll
+++ b/polly/test/ForwardOpTree/noforward_partial.ll
@@ -13,7 +13,7 @@
 ;
 declare double @f(...) #1
 
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -28,7 +28,7 @@ for:
       br label %bodyB
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ForwardOpTree/noforward_phi.ll b/polly/test/ForwardOpTree/noforward_phi.ll
index 6413d0329336d..58d41a410d3bb 100644
--- a/polly/test/ForwardOpTree/noforward_phi.ll
+++ b/polly/test/ForwardOpTree/noforward_phi.ll
@@ -10,7 +10,7 @@
 ;   A[0] = val;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -24,7 +24,7 @@ for:
       br label %bodyB
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ForwardOpTree/noforward_selfrefphi.ll b/polly/test/ForwardOpTree/noforward_selfrefphi.ll
index dec655f6e3d6c..b2d4dc51c9780 100644
--- a/polly/test/ForwardOpTree/noforward_selfrefphi.ll
+++ b/polly/test/ForwardOpTree/noforward_selfrefphi.ll
@@ -10,7 +10,7 @@
 ;   A[j] = phi;
 ; }
 ;
-define void @func(i32 %n, i32 %m, double* noalias nonnull %A) {
+define void @func(i32 %n, i32 %m, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -30,8 +30,8 @@ for:
     br i1 %i.cmp, label %for.inner, label %for.exit
 
   for.exit:
-    %A_idx = getelementptr inbounds double, double* %A, i32 %j
-    store double %phi, double* %A_idx
+    %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+    store double %phi, ptr %A_idx
     br label %inc
 
 inc:

diff  --git a/polly/test/ForwardOpTree/noforward_sideffects.ll b/polly/test/ForwardOpTree/noforward_sideffects.ll
index 4afbcd759bc54..a5633769f6707 100644
--- a/polly/test/ForwardOpTree/noforward_sideffects.ll
+++ b/polly/test/ForwardOpTree/noforward_sideffects.ll
@@ -10,9 +10,9 @@
 ;   A[0] = val;
 ; }
 ;
-declare double @f(double* %A) #1
+declare double @f(ptr %A) #1
 
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -22,11 +22,11 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %val = call double (double*) @f(double* %A)
+      %val = call double (ptr) @f(ptr %A)
       br label %bodyB
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ForwardOpTree/noforward_synthesizable_unknownit.ll b/polly/test/ForwardOpTree/noforward_synthesizable_unknownit.ll
index 95e78d30d87c9..f589fde6e4152 100644
--- a/polly/test/ForwardOpTree/noforward_synthesizable_unknownit.ll
+++ b/polly/test/ForwardOpTree/noforward_synthesizable_unknownit.ll
@@ -2,7 +2,7 @@
 ;
 ; Do not try to forward %i.trunc, it is not synthesizable in %body.
 ;
-define void @func(i32 %n, i32* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -31,7 +31,7 @@ for:
       br i1 %inner.cond, label %body, label %inner.for
 
     body:
-      store i32 %i.trunc, i32* %A
+      store i32 %i.trunc, ptr %A
       br label %inc
 
 

diff  --git a/polly/test/ForwardOpTree/out-of-quota1.ll b/polly/test/ForwardOpTree/out-of-quota1.ll
index 0cdf10c28b087..c31ee51d519f0 100644
--- a/polly/test/ForwardOpTree/out-of-quota1.ll
+++ b/polly/test/ForwardOpTree/out-of-quota1.ll
@@ -4,15 +4,15 @@
 
 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187 = type { i32, i32, i32, i32, i32, [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16**, i16***, i8*, i16**, i8***, i64***, i64***, i16****, i8**, i8**, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187*, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187*, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i32], i32, %struct.DecRefPicMarking_s.4.220.388.508.628.796.916.1132.1204.1444.1468.1516.1540.1564.1588.1660.1684.1756.1780.1828.1876.2164.2284.2404.2428.2452.2476.2500.2524.2836.2860.2884.2908.4416.0.6.12.16.22.28.54.56.58.60.186*, i32 }
-%struct.DecRefPicMarking_s.4.220.388.508.628.796.916.1132.1204.1444.1468.1516.1540.1564.1588.1660.1684.1756.1780.1828.1876.2164.2284.2404.2428.2452.2476.2500.2524.2836.2860.2884.2908.4416.0.6.12.16.22.28.54.56.58.60.186 = type { i32, i32, i32, i32, i32, %struct.DecRefPicMarking_s.4.220.388.508.628.796.916.1132.1204.1444.1468.1516.1540.1564.1588.1660.1684.1756.1780.1828.1876.2164.2284.2404.2428.2452.2476.2500.2524.2836.2860.2884.2908.4416.0.6.12.16.22.28.54.56.58.60.186* }
+%struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187 = type { i32, i32, i32, i32, i32, [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], [50 x [6 x [33 x i64]]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i32], i32, ptr, i32 }
+%struct.DecRefPicMarking_s.4.220.388.508.628.796.916.1132.1204.1444.1468.1516.1540.1564.1588.1660.1684.1756.1780.1828.1876.2164.2284.2404.2428.2452.2476.2500.2524.2836.2860.2884.2908.4416.0.6.12.16.22.28.54.56.58.60.186 = type { i32, i32, i32, i32, i32, ptr }
 
 define void @func() {
 entry:
-  %0 = load %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187*, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187** undef, align 8
-  %1 = load %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187*, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187** undef, align 8
-  %2 = load %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187*, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187** undef, align 8
-  %3 = load i16, i16* undef, align 4
+  %0 = load ptr, ptr undef, align 8
+  %1 = load ptr, ptr undef, align 8
+  %2 = load ptr, ptr undef, align 8
+  %3 = load i16, ptr undef, align 4
   %conv2081956 = zext i16 %3 to i64
   br label %for.cond212.preheader
 
@@ -23,25 +23,25 @@ for.cond212.preheader:
 for.body215:
   %indvars.iv1921 = phi i64 [ 0, %for.cond212.preheader ], [ %indvars.iv.next1922, %for.body215 ]
   %4 = shl nuw nsw i64 %indvars.iv1921, 1
-  %arrayidx230 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187* %1, i64 0, i32 5, i64 %indvars.iv1926, i64 1, i64 %4
-  store i64 undef, i64* %arrayidx230, align 8
+  %arrayidx230 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, ptr %1, i64 0, i32 5, i64 %indvars.iv1926, i64 1, i64 %4
+  store i64 undef, ptr %arrayidx230, align 8
   %5 = or i64 %4, 1
-  %arrayidx248 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187* %1, i64 0, i32 5, i64 %indvars.iv1926, i64 1, i64 %5
-  store i64 undef, i64* %arrayidx248, align 8
-  %arrayidx264 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187* %2, i64 0, i32 5, i64 %indvars.iv1926, i64 1, i64 %4
-  store i64 undef, i64* %arrayidx264, align 8
-  %arrayidx282 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187* %2, i64 0, i32 5, i64 %indvars.iv1926, i64 1, i64 %5
-  store i64 undef, i64* %arrayidx282, align 8
-  %arrayidx298 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187* %1, i64 0, i32 5, i64 %indvars.iv1926, i64 0, i64 %4
-  store i64 undef, i64* %arrayidx298, align 8
-  %arrayidx307 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187* %0, i64 0, i32 5, i64 %indvars.iv1926, i64 2, i64 %5
-  %6 = load i64, i64* %arrayidx307, align 8
-  %arrayidx316 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187* %1, i64 0, i32 5, i64 %indvars.iv1926, i64 0, i64 %5
-  store i64 %6, i64* %arrayidx316, align 8
-  %arrayidx332 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187* %2, i64 0, i32 5, i64 %indvars.iv1926, i64 0, i64 %4
-  store i64 undef, i64* %arrayidx332, align 8
-  %arrayidx350 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187* %2, i64 0, i32 5, i64 %indvars.iv1926, i64 0, i64 %5
-  store i64 undef, i64* %arrayidx350, align 8
+  %arrayidx248 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, ptr %1, i64 0, i32 5, i64 %indvars.iv1926, i64 1, i64 %5
+  store i64 undef, ptr %arrayidx248, align 8
+  %arrayidx264 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, ptr %2, i64 0, i32 5, i64 %indvars.iv1926, i64 1, i64 %4
+  store i64 undef, ptr %arrayidx264, align 8
+  %arrayidx282 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, ptr %2, i64 0, i32 5, i64 %indvars.iv1926, i64 1, i64 %5
+  store i64 undef, ptr %arrayidx282, align 8
+  %arrayidx298 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, ptr %1, i64 0, i32 5, i64 %indvars.iv1926, i64 0, i64 %4
+  store i64 undef, ptr %arrayidx298, align 8
+  %arrayidx307 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, ptr %0, i64 0, i32 5, i64 %indvars.iv1926, i64 2, i64 %5
+  %6 = load i64, ptr %arrayidx307, align 8
+  %arrayidx316 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, ptr %1, i64 0, i32 5, i64 %indvars.iv1926, i64 0, i64 %5
+  store i64 %6, ptr %arrayidx316, align 8
+  %arrayidx332 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, ptr %2, i64 0, i32 5, i64 %indvars.iv1926, i64 0, i64 %4
+  store i64 undef, ptr %arrayidx332, align 8
+  %arrayidx350 = getelementptr inbounds %struct.storable_picture.5.221.389.509.629.797.917.1133.1205.1445.1469.1517.1541.1565.1589.1661.1685.1757.1781.1829.1877.2165.2285.2405.2429.2453.2477.2501.2525.2837.2861.2885.2909.4417.1.7.13.17.23.29.55.57.59.61.187, ptr %2, i64 0, i32 5, i64 %indvars.iv1926, i64 0, i64 %5
+  store i64 undef, ptr %arrayidx350, align 8
   %indvars.iv.next1922 = add nuw nsw i64 %indvars.iv1921, 1
   %exitcond1925 = icmp eq i64 %indvars.iv.next1922, 16
   br i1 %exitcond1925, label %for.inc354, label %for.body215

diff  --git a/polly/test/GPGPU/add-scalars-in-scop-to-kills.ll b/polly/test/GPGPU/add-scalars-in-scop-to-kills.ll
index 26029dc9f27c7..64b4cc4aa100b 100644
--- a/polly/test/GPGPU/add-scalars-in-scop-to-kills.ll
+++ b/polly/test/GPGPU/add-scalars-in-scop-to-kills.ll
@@ -13,7 +13,7 @@
 
 ; Check that kernel launch is generated in host IR.
 ; the declare would not be generated unless a call to a kernel exists.
-; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
+; HOST-IR: declare void @polly_launchKernel(ptr, i32, i32, i32, i32, i32, ptr)
 
 ; Check that we add variables that are local to a scop into the kills that we
 ; pass to PPCG. This should enable PPCG to codegen this example.
@@ -36,7 +36,7 @@
 ; ModuleID = 'test.ll'
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @checkScalarKill(i32* %A, i32* %B, i32* %C, i32 %control1, i32 %control2) {
+define void @checkScalarKill(ptr %A, ptr %B, ptr %C, i32 %control1, i32 %control2) {
 entry:
   br label %entry.split
 
@@ -51,17 +51,17 @@ XLoopInit:                                        ; preds = %entry.split, %BLoop
   br i1 %cmp2, label %C2Add, label %BLoopAccumX
 
 C2Add:                                            ; preds = %XLoopInit
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp6 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp6 = load i32, ptr %arrayidx, align 4
   %add4 = add nsw i32 %tmp6, %x.0
   br label %BLoopAccumX
 
 BLoopAccumX:                                      ; preds = %XLoopInit, %C2Add
   %x.1 = phi i32 [ %add4, %C2Add ], [ %x.0, %XLoopInit ]
-  %arrayidx7 = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  %tmp11 = load i32, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  %tmp11 = load i32, ptr %arrayidx7, align 4
   %add8 = add nsw i32 %tmp11, %x.1
-  store i32 %add8, i32* %arrayidx7, align 4
+  store i32 %add8, ptr %arrayidx7, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1000
   br i1 %exitcond, label %XLoopInit, label %for.end

diff  --git a/polly/test/GPGPU/align-params-in-schedule.ll b/polly/test/GPGPU/align-params-in-schedule.ll
index da9dc35977306..fa9a8f3eb4e5d 100644
--- a/polly/test/GPGPU/align-params-in-schedule.ll
+++ b/polly/test/GPGPU/align-params-in-schedule.ll
@@ -13,15 +13,15 @@ source_filename = "bugpoint-output-4d01492.bc"
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 target triple = "x86_64-unknown-linux-gnu"
 
-%struct.barney = type { i8*, i64, i64, [2 x %struct.widget] }
+%struct.barney = type { ptr, i64, i64, [2 x %struct.widget] }
 %struct.widget = type { i64, i64, i64 }
 
 @global = external unnamed_addr global %struct.barney, align 32
 
 ; Function Attrs: nounwind uwtable
-define void @wobble(i32* noalias %arg) #0 {
+define void @wobble(ptr noalias %arg) #0 {
 bb:
-  %tmp = load i32, i32* %arg, align 4
+  %tmp = load i32, ptr %arg, align 4
   br label %bb1
 
 bb1:                                              ; preds = %bb13, %bb
@@ -29,15 +29,15 @@ bb1:                                              ; preds = %bb13, %bb
   br label %bb3
 
 bb3:                                              ; preds = %bb3, %bb1
-  %tmp4 = load i32*, i32** bitcast (%struct.barney* @global to i32**), align 32
+  %tmp4 = load ptr, ptr @global, align 32
   %tmp5 = sext i32 %tmp2 to i64
-  %tmp6 = load i64, i64* getelementptr inbounds (%struct.barney, %struct.barney* @global, i64 0, i32 3, i64 1, i32 0), align 8
+  %tmp6 = load i64, ptr getelementptr inbounds (%struct.barney, ptr @global, i64 0, i32 3, i64 1, i32 0), align 8
   %tmp7 = mul i64 %tmp6, %tmp5
   %tmp8 = add i64 %tmp7, 0
-  %tmp9 = load i64, i64* getelementptr inbounds (%struct.barney, %struct.barney* @global, i64 0, i32 1), align 8
+  %tmp9 = load i64, ptr getelementptr inbounds (%struct.barney, ptr @global, i64 0, i32 1), align 8
   %tmp10 = add i64 %tmp8, %tmp9
-  %tmp11 = getelementptr i32, i32* %tmp4, i64 %tmp10
-  store i32 undef, i32* %tmp11, align 4
+  %tmp11 = getelementptr i32, ptr %tmp4, i64 %tmp10
+  store i32 undef, ptr %tmp11, align 4
   %tmp12 = icmp eq i32 0, 0
   br i1 %tmp12, label %bb13, label %bb3
 

diff  --git a/polly/test/GPGPU/array-with-elem-type-smaller-than-byte.ll b/polly/test/GPGPU/array-with-elem-type-smaller-than-byte.ll
index 5985c7a2954d8..12b872d551923 100644
--- a/polly/test/GPGPU/array-with-elem-type-smaller-than-byte.ll
+++ b/polly/test/GPGPU/array-with-elem-type-smaller-than-byte.ll
@@ -21,16 +21,16 @@ target triple = "x86_64-unknown-linux-gnu"
 ; }
 
 ; Function Attrs: nounwind uwtable
-define void @f(i32* noalias %niters.ptr, [0 x i32]* noalias %arr) #0 {
+define void @f(ptr noalias %niters.ptr, ptr noalias %arr) #0 {
 entry:
-  %niters = load i32, i32* %niters.ptr, align 4
+  %niters = load i32, ptr %niters.ptr, align 4
   br label %loop.body
 
 loop.body:                                             ; preds = %loop.body, %entry
   %indvar = phi i32 [ %indvar.next, %loop.body ], [ 1, %entry ]
   %indvar.sext = sext i32 %indvar to i64
-  %arr.slot = getelementptr [0 x i32], [0 x i32]* %arr, i64 0, i64 %indvar.sext
-  store i32 0, i32* %arr.slot, align 4
+  %arr.slot = getelementptr [0 x i32], ptr %arr, i64 0, i64 %indvar.sext
+  store i32 0, ptr %arr.slot, align 4
   %tmp8 = icmp eq i32 %indvar, %niters
   %indvar.next = add i32 %indvar, 1
   br i1 %tmp8, label %loop.exit, label %loop.body

diff  --git a/polly/test/GPGPU/bounds-construction-with-ignore-param-bounds.ll b/polly/test/GPGPU/bounds-construction-with-ignore-param-bounds.ll
index d47ba799daea9..a60744289885e 100644
--- a/polly/test/GPGPU/bounds-construction-with-ignore-param-bounds.ll
+++ b/polly/test/GPGPU/bounds-construction-with-ignore-param-bounds.ll
@@ -19,7 +19,7 @@
 
 ; Check that kernel launch is generated in host IR.
 ; the declare would not be generated unless a call to a kernel exists.
-; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
+; HOST-IR: declare void @polly_launchKernel(ptr, i32, i32, i32, i32, i32, ptr)
 ; ModuleID = 'test/GPGPU/bounds-construction-with-ignore-param-bounds.ll'
 
 ; C pseudocode
@@ -34,15 +34,15 @@ target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:
 target triple = "x86_64-unknown-linux-gnu"
 
 ; Function Attrs: nounwind uwtable
-define void @f(i32 *%arr, i64 %niters, i64 %stride) unnamed_addr #1 {
+define void @f(ptr %arr, i64 %niters, i64 %stride) unnamed_addr #1 {
 entry:
   br label %loop
 
 loop:                                             ; preds = %loop, %entry
   %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %loop ]
   %idx = mul nuw nsw i64 %indvar, %stride
-  %slot = getelementptr i32, i32* %arr, i64 %idx
-  store i32 1, i32* %slot, align 4
+  %slot = getelementptr i32, ptr %arr, i64 %idx
+  store i32 1, ptr %slot, align 4
   %indvar.next = add nuw nsw i64 %indvar, 1
   %check = icmp sgt i64 %indvar.next, %niters
   br i1 %check, label %exit, label %loop

diff  --git a/polly/test/GPGPU/cuda-annotations.ll b/polly/test/GPGPU/cuda-annotations.ll
index 9a662797a1b95..cbb0296d48ef6 100644
--- a/polly/test/GPGPU/cuda-annotations.ll
+++ b/polly/test/GPGPU/cuda-annotations.ll
@@ -4,15 +4,15 @@
 
 ; REQUIRES: pollyacc
 
-; KERNEL: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_A, i64 %n) #0 {
+; KERNEL: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_A, i64 %n) #0 {
 
 ; KERNEL: !nvvm.annotations = !{!0}
 
-; KERNEL: !0 = !{void (i8 addrspace(1)*, i64)* @FUNC_foo_SCOP_0_KERNEL_0, !"maxntidx", i32 32, !"maxntidy", i32 1, !"maxntidz", i32 1}
+; KERNEL: !0 = !{ptr @FUNC_foo_SCOP_0_KERNEL_0, !"maxntidx", i32 32, !"maxntidy", i32 1, !"maxntidz", i32 1}
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64* %A, i64 %n) {
+define void @foo(ptr %A, i64 %n) {
 bb:
   br label %bb1
 
@@ -22,10 +22,10 @@ bb1:                                              ; preds = %bb6, %bb
   br i1 %tmp, label %bb2, label %bb8
 
 bb2:                                              ; preds = %bb1
-  %tmp3 = getelementptr inbounds i64, i64* %A, i64 %i.0
-  %tmp4 = load i64, i64* %tmp3, align 8
+  %tmp3 = getelementptr inbounds i64, ptr %A, i64 %i.0
+  %tmp4 = load i64, ptr %tmp3, align 8
   %tmp5 = add nsw i64 %tmp4, 100
-  store i64 %tmp5, i64* %tmp3, align 8
+  store i64 %tmp5, ptr %tmp3, align 8
   br label %bb6
 
 bb6:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/debug-metadata-leak.ll b/polly/test/GPGPU/debug-metadata-leak.ll
index 24a6f51d5fdd8..c90926c318e81 100644
--- a/polly/test/GPGPU/debug-metadata-leak.ll
+++ b/polly/test/GPGPU/debug-metadata-leak.ll
@@ -3,7 +3,7 @@
 
 ; REQUIRES: pollyacc
 
-; KERNEL-IR: define ptx_kernel void @FUNC_vec_add_1_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_arr, i32 %N) #0 {
+; KERNEL-IR: define ptx_kernel void @FUNC_vec_add_1_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_arr, i32 %N) #0 {
 
 ; The instruction marked <<<LeakyInst>>> is copied into the GPUModule,
 ; with changes only to the parameters to access data on the device instead of
@@ -27,10 +27,10 @@ source_filename = "vec_add_1.c"
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @vec_add_1(i32 %N, i32* %arr) !dbg !7 {
+define void @vec_add_1(i32 %N, ptr %arr) !dbg !7 {
 entry:
   call void @llvm.dbg.value(metadata i32 %N, i64 0, metadata !13, metadata !16), !dbg !17
-  call void @llvm.dbg.value(metadata i32* %arr, i64 0, metadata !14, metadata !16), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %arr, i64 0, metadata !14, metadata !16), !dbg !18
   call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !15, metadata !16), !dbg !19
   %tmp = sext i32 %N to i64, !dbg !20
   br label %for.cond, !dbg !20
@@ -42,10 +42,10 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end, !dbg !24
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %arr, i64 %indvars.iv, !dbg !25
-  %tmp1 = load i32, i32* %arrayidx, align 4, !dbg !26, !tbaa !27
+  %arrayidx = getelementptr inbounds i32, ptr %arr, i64 %indvars.iv, !dbg !25
+  %tmp1 = load i32, ptr %arrayidx, align 4, !dbg !26, !tbaa !27
   %add = add nsw i32 %tmp1, 1, !dbg !26    ;   <<<LeakyInst>>>
-  store i32 %add, i32* %arrayidx, align 4, !dbg !26, !tbaa !27
+  store i32 %add, ptr %arrayidx, align 4, !dbg !26, !tbaa !27
   br label %for.inc, !dbg !25
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/GPGPU/double-parallel-loop.ll b/polly/test/GPGPU/double-parallel-loop.ll
index 911a6a6a9ca5d..4aeee035a4070 100644
--- a/polly/test/GPGPU/double-parallel-loop.ll
+++ b/polly/test/GPGPU/double-parallel-loop.ll
@@ -119,28 +119,24 @@
 ; IR-NEXT: br label %polly.acc.initialize
 
 ; IR: polly.acc.initialize:
-; IR-NEXT:    [[GPUContext:%.*]] = call i8* @polly_initContext()
-; IR-NEXT:    %p_dev_array_MemRef_A = call i8* @polly_allocateMemoryForDevice(i64 4194304)
-; IR-NEXT:    [[HostPtr:%.*]] = bitcast [1024 x float]* %A to i8*
-; IR-NEXT:    call void @polly_copyFromHostToDevice(i8* [[HostPtr]], i8* %p_dev_array_MemRef_A, i64 4194304)
-; IR-NEXT:    [[DevPtr:%.*]]  = call i8* @polly_getDevicePtr(i8* %p_dev_array_MemRef_A)
-; IR-NEXT:    [[ParamSlot:%.*]] = getelementptr [1 x i8*], [1 x i8*]* %polly_launch_0_params, i64 0, i64 0
-; IR-NEXT:    store i8* [[DevPtr]], i8** %polly_launch_0_param_0
-; IR-NEXT:    [[ParamTyped:%.*]] = bitcast i8** %polly_launch_0_param_0 to i8*
-; IR-NEXT:    store i8* [[ParamTyped]], i8** [[ParamSlot]]
-; IR-NEXT:    call i8* @polly_getKernel
-; IR-NEXT:    call void @polly_launchKernel(i8* %11, i32 32, i32 32, i32 32, i32 16, i32 1, i8* %polly_launch_0_params_i8ptr)
+; IR-NEXT:    [[GPUContext:%.*]] = call ptr @polly_initContext()
+; IR-NEXT:    %p_dev_array_MemRef_A = call ptr @polly_allocateMemoryForDevice(i64 4194304)
+; IR-NEXT:    call void @polly_copyFromHostToDevice(ptr %A, ptr %p_dev_array_MemRef_A, i64 4194304)
+; IR-NEXT:    [[DevPtr:%.*]]  = call ptr @polly_getDevicePtr(ptr %p_dev_array_MemRef_A)
+; IR-NEXT:    store ptr [[DevPtr]], ptr %polly_launch_0_param_0
+; IR-NEXT:    store ptr %polly_launch_0_param_0, ptr %polly_launch_0_params
+; IR-NEXT:    call ptr @polly_getKernel
+; IR-NEXT:    call void @polly_launchKernel(ptr %11, i32 32, i32 32, i32 32, i32 16, i32 1, ptr %polly_launch_0_params_i8ptr)
 ; IR-NEXT:    call void @polly_freeKernel
-; IR-NEXT:    [[HostPtr2:%.*]] = bitcast [1024 x float]* %A to i8*
-; IR-NEXT:    call void @polly_copyFromDeviceToHost(i8* %p_dev_array_MemRef_A, i8* [[HostPtr2]], i64 4194304)
-; IR-NEXT:    call void @polly_freeDeviceMemory(i8* %p_dev_array_MemRef_A)
-; IR-NEXT:    call void @polly_freeContext(i8* [[GPUContext]])
+; IR-NEXT:    call void @polly_copyFromDeviceToHost(ptr %p_dev_array_MemRef_A, ptr %A, i64 4194304)
+; IR-NEXT:    call void @polly_freeDeviceMemory(ptr %p_dev_array_MemRef_A)
+; IR-NEXT:    call void @polly_freeContext(ptr [[GPUContext]])
 ; IR-NEXT:    br label %polly.exiting
 
 ; IR: polly.exiting:
 ; IR-NEXT:    br label %polly.merge_new_and_old
 
-; KERNEL-IR-LABEL: define ptx_kernel void @kernel_0(i8* %MemRef_A) #0 {
+; KERNEL-IR-LABEL: define ptx_kernel void @kernel_0(ptr %MemRef_A) #0 {
 ; KERNEL-IR-NEXT: entry:
 ; KERNEL-IR-NEXT:   %0 = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x()
 ; KERNEL-IR-NEXT:   %b0 = zext i32 %0 to i64
@@ -168,7 +164,6 @@
 ; KERNEL-IR-LABEL: polly.stmt.bb5:                                   ; preds = %polly.loop_header
 ; KERNEL-IR-NEXT:   %10 = mul i64 %5, %9
 ; KERNEL-IR-NEXT:   %p_tmp6 = sitofp i64 %10 to float
-; KERNEL-IR-NEXT:   %polly.access.cast.MemRef_A = bitcast i8* %MemRef_A to float*
 ; KERNEL-IR-NEXT:   %11 = mul nsw i64 32, %b0
 ; KERNEL-IR-NEXT:   %12 = add nsw i64 %11, %t0
 ; KERNEL-IR-NEXT:   %polly.access.mul.MemRef_A = mul nsw i64 %12, 1024
@@ -177,10 +172,9 @@
 ; KERNEL-IR-NEXT:   %15 = mul nsw i64 16, %polly.indvar
 ; KERNEL-IR-NEXT:   %16 = add nsw i64 %14, %15
 ; KERNEL-IR-NEXT:   %polly.access.add.MemRef_A = add nsw i64 %polly.access.mul.MemRef_A, %16
-; KERNEL-IR-NEXT:   %polly.access.MemRef_A = getelementptr float, float* %polly.access.cast.MemRef_A, i64 %polly.access.add.MemRef_A
-; KERNEL-IR-NEXT:   %tmp8_p_scalar_ = load float, float* %polly.access.MemRef_A, align 4
+; KERNEL-IR-NEXT:   %polly.access.MemRef_A = getelementptr float, ptr %MemRef_A, i64 %polly.access.add.MemRef_A
+; KERNEL-IR-NEXT:   %tmp8_p_scalar_ = load float, ptr %polly.access.MemRef_A, align 4
 ; KERNEL-IR-NEXT:   %p_tmp9 = fadd float %tmp8_p_scalar_, %p_tmp6
-; KERNEL-IR-NEXT:   %polly.access.cast.MemRef_A1 = bitcast i8* %MemRef_A to float*
 ; KERNEL-IR-NEXT:   %17 = mul nsw i64 32, %b0
 ; KERNEL-IR-NEXT:   %18 = add nsw i64 %17, %t0
 ; KERNEL-IR-NEXT:   %polly.access.mul.MemRef_A2 = mul nsw i64 %18, 1024
@@ -189,8 +183,8 @@
 ; KERNEL-IR-NEXT:   %21 = mul nsw i64 16, %polly.indvar
 ; KERNEL-IR-NEXT:   %22 = add nsw i64 %20, %21
 ; KERNEL-IR-NEXT:   %polly.access.add.MemRef_A3 = add nsw i64 %polly.access.mul.MemRef_A2, %22
-; KERNEL-IR-NEXT:   %polly.access.MemRef_A4 = getelementptr float, float* %polly.access.cast.MemRef_A1, i64 %polly.access.add.MemRef_A3
-; KERNEL-IR-NEXT:   store float %p_tmp9, float* %polly.access.MemRef_A4, align 4
+; KERNEL-IR-NEXT:   %polly.access.MemRef_A4 = getelementptr float, ptr %MemRef_A, i64 %polly.access.add.MemRef_A3
+; KERNEL-IR-NEXT:   store float %p_tmp9, ptr %polly.access.MemRef_A4, align 4
 ; KERNEL-IR-NEXT:   %polly.indvar_next = add nsw i64 %polly.indvar, 1
 ; KERNEL-IR-NEXT:   %polly.loop_cond = icmp sle i64 %polly.indvar, 0
 ; KERNEL-IR-NEXT:   br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit
@@ -218,7 +212,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @double_parallel_loop([1024 x float]* %A) {
+define void @double_parallel_loop(ptr %A) {
 bb:
   br label %bb2
 
@@ -238,10 +232,10 @@ bb4:                                              ; preds = %bb10, %bb3
 bb5:                                              ; preds = %bb4
   %tmp = mul nuw nsw i64 %i.0, %j.0
   %tmp6 = sitofp i64 %tmp to float
-  %tmp7 = getelementptr inbounds [1024 x float], [1024 x float]* %A, i64 %i.0, i64 %j.0
-  %tmp8 = load float, float* %tmp7, align 4
+  %tmp7 = getelementptr inbounds [1024 x float], ptr %A, i64 %i.0, i64 %j.0
+  %tmp8 = load float, ptr %tmp7, align 4
   %tmp9 = fadd float %tmp8, %tmp6
-  store float %tmp9, float* %tmp7, align 4
+  store float %tmp9, ptr %tmp7, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb5

diff  --git a/polly/test/GPGPU/failing-invariant-load-handling.ll b/polly/test/GPGPU/failing-invariant-load-handling.ll
index 43c848b8e0d13..70f88667bd609 100644
--- a/polly/test/GPGPU/failing-invariant-load-handling.ll
+++ b/polly/test/GPGPU/failing-invariant-load-handling.ll
@@ -8,7 +8,7 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"
 %S = type { i32, i32, [12 x %L] }
 %L = type { i32, i32, double, i32, i32, i32, i32, i32 }
 
-define void @test(%S* %cpi, i1 %b) {
+define void @test(ptr %cpi, i1 %b) {
 ; SCOPS-LABEL: Region: %if.then14---%exit
 ; SCOPS:         Invariant Accesses: {
 ; SCOPS-NEXT:            ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
@@ -30,26 +30,25 @@ define void @test(%S* %cpi, i1 %b) {
 ; CODEGEN-NOT: LLVM ERROR: preloading invariant loads failed in function
 
 entry:
-  %nt = getelementptr inbounds %S, %S* %cpi, i32 0, i32 1
+  %nt = getelementptr inbounds %S, ptr %cpi, i32 0, i32 1
   br i1 %b, label %if.then14, label %exit
 
 if.then14:
-  %ns = getelementptr inbounds %S, %S* %cpi, i32 0, i32 0
-  %l0 = load i32, i32* %ns, align 8
+  %l0 = load i32, ptr %cpi, align 8
   %cmp12.i = icmp sgt i32 %l0, 0
   br i1 %cmp12.i, label %for.body.lr.ph.i, label %exit
 
 for.body.lr.ph.i:
-  %l1 = load i32, i32* %nt, align 4
+  %l1 = load i32, ptr %nt, align 4
   br label %for.body.i
 
 for.body.i:
   %phi = phi i32 [ 0, %for.body.lr.ph.i ], [ %inc, %for.body.i ]
   %mul.i163 = mul nsw i32 %phi, %l1
-  %cv = getelementptr inbounds %S, %S* %cpi, i32 0, i32 2, i32 %mul.i163, i32 0
-  store i32 0, i32* %cv, align 8
+  %cv = getelementptr inbounds %S, ptr %cpi, i32 0, i32 2, i32 %mul.i163, i32 0
+  store i32 0, ptr %cv, align 8
   %inc = add nuw nsw i32 %phi, 1
-  %l2 = load i32, i32* %ns, align 8
+  %l2 = load i32, ptr %cpi, align 8
   %cmp.i164 = icmp slt i32 %inc, %l2
   br i1 %cmp.i164, label %for.body.i, label %exit
 

diff  --git a/polly/test/GPGPU/failing-invariant-load-hoisting.ll b/polly/test/GPGPU/failing-invariant-load-hoisting.ll
index cfdd666af3b17..aa62921e1af55 100644
--- a/polly/test/GPGPU/failing-invariant-load-hoisting.ll
+++ b/polly/test/GPGPU/failing-invariant-load-hoisting.ll
@@ -8,32 +8,31 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"
 %S = type { i32, i32, [12 x %L] }
 %L = type { i32, i32, double, i32, i32, i32, i32, i32 }
 
-define void @test(%S* %cpi, i1 %b) {
+define void @test(ptr %cpi, i1 %b) {
 ; CODEGEN-LABEL: @test(
 ; CODEGEN:    polly.preload.begin:
 ; CODEGEN-NEXT:  br i1 false
 
 entry:
-  %nt = getelementptr inbounds %S, %S* %cpi, i32 0, i32 1
+  %nt = getelementptr inbounds %S, ptr %cpi, i32 0, i32 1
   br i1 %b, label %if.then14, label %exit
 
 if.then14:
-  %ns = getelementptr inbounds %S, %S* %cpi, i32 0, i32 0
-  %l0 = load i32, i32* %ns, align 8
+  %l0 = load i32, ptr %cpi, align 8
   %cmp12.i = icmp sgt i32 %l0, 0
   br i1 %cmp12.i, label %for.body.lr.ph.i, label %exit
 
 for.body.lr.ph.i:
-  %l1 = load i32, i32* %nt, align 4
+  %l1 = load i32, ptr %nt, align 4
   br label %for.body.i
 
 for.body.i:
   %phi = phi i32 [ 0, %for.body.lr.ph.i ], [ %inc, %for.body.i ]
   %mul.i163 = mul nsw i32 %phi, %l1
-  %cv = getelementptr inbounds %S, %S* %cpi, i32 0, i32 2, i32 %mul.i163, i32 0
-  store i32 0, i32* %cv, align 8
+  %cv = getelementptr inbounds %S, ptr %cpi, i32 0, i32 2, i32 %mul.i163, i32 0
+  store i32 0, ptr %cv, align 8
   %inc = add nuw nsw i32 %phi, 1
-  %l2 = load i32, i32* %ns, align 8
+  %l2 = load i32, ptr %cpi, align 8
   %cmp.i164 = icmp slt i32 %inc, %l2
   br i1 %cmp.i164, label %for.body.i, label %exit
 

diff  --git a/polly/test/GPGPU/host-statement.ll b/polly/test/GPGPU/host-statement.ll
index 7abd92843a7a4..d7232b2fa5380 100644
--- a/polly/test/GPGPU/host-statement.ll
+++ b/polly/test/GPGPU/host-statement.ll
@@ -13,7 +13,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start(i64, ptr nocapture) #0
 
 ; This test case tests that we can correctly handle a ScopStmt that is
 ; scheduled on the host, instead of within a kernel.
@@ -74,7 +74,7 @@ declare void @llvm.lifetime.start(i64, i8* nocapture) #0
 ; KERNEL-IR: call void @llvm.nvvm.barrier0()
 
 ; Function Attrs: nounwind uwtable
-define internal void @kernel_gramschmidt(i32 %ni, i32 %nj, [512 x double]* %A, [512 x double]* %R, [512 x double]* %Q) #1 {
+define internal void @kernel_gramschmidt(i32 %ni, i32 %nj, ptr %A, ptr %R, ptr %Q) #1 {
 entry:
   br label %entry.split
 
@@ -89,10 +89,10 @@ for.cond1.preheader:                              ; preds = %entry.split, %for.i
 for.inc:                                          ; preds = %for.cond1.preheader, %for.inc
   %indvars.iv = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next, %for.inc ]
   %nrm.02 = phi double [ 0.000000e+00, %for.cond1.preheader ], [ %add, %for.inc ]
-  %arrayidx5 = getelementptr inbounds [512 x double], [512 x double]* %A, i64 %indvars.iv, i64 %indvars.iv24
-  %tmp = load double, double* %arrayidx5, align 8, !tbaa !1
-  %arrayidx9 = getelementptr inbounds [512 x double], [512 x double]* %A, i64 %indvars.iv, i64 %indvars.iv24
-  %tmp27 = load double, double* %arrayidx9, align 8, !tbaa !1
+  %arrayidx5 = getelementptr inbounds [512 x double], ptr %A, i64 %indvars.iv, i64 %indvars.iv24
+  %tmp = load double, ptr %arrayidx5, align 8, !tbaa !1
+  %arrayidx9 = getelementptr inbounds [512 x double], ptr %A, i64 %indvars.iv, i64 %indvars.iv24
+  %tmp27 = load double, ptr %arrayidx9, align 8, !tbaa !1
   %mul = fmul double %tmp, %tmp27
   %add = fadd double %nrm.02, %mul
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
@@ -102,8 +102,8 @@ for.inc:                                          ; preds = %for.cond1.preheader
 for.end:                                          ; preds = %for.inc
   %add.lcssa = phi double [ %add, %for.inc ]
   %call = tail call double @sqrt(double %add.lcssa) #2
-  %arrayidx13 = getelementptr inbounds [512 x double], [512 x double]* %R, i64 %indvars.iv24, i64 %indvars.iv24
-  store double %call, double* %arrayidx13, align 8, !tbaa !1
+  %arrayidx13 = getelementptr inbounds [512 x double], ptr %R, i64 %indvars.iv24, i64 %indvars.iv24
+  store double %call, ptr %arrayidx13, align 8, !tbaa !1
   br label %for.body16
 
 for.cond33.preheader:                             ; preds = %for.body16
@@ -116,13 +116,13 @@ for.body35.lr.ph:                                 ; preds = %for.cond33.preheade
 
 for.body16:                                       ; preds = %for.end, %for.body16
   %indvars.iv10 = phi i64 [ 0, %for.end ], [ %indvars.iv.next11, %for.body16 ]
-  %arrayidx20 = getelementptr inbounds [512 x double], [512 x double]* %A, i64 %indvars.iv10, i64 %indvars.iv24
-  %tmp28 = load double, double* %arrayidx20, align 8, !tbaa !1
-  %arrayidx24 = getelementptr inbounds [512 x double], [512 x double]* %R, i64 %indvars.iv24, i64 %indvars.iv24
-  %tmp29 = load double, double* %arrayidx24, align 8, !tbaa !1
+  %arrayidx20 = getelementptr inbounds [512 x double], ptr %A, i64 %indvars.iv10, i64 %indvars.iv24
+  %tmp28 = load double, ptr %arrayidx20, align 8, !tbaa !1
+  %arrayidx24 = getelementptr inbounds [512 x double], ptr %R, i64 %indvars.iv24, i64 %indvars.iv24
+  %tmp29 = load double, ptr %arrayidx24, align 8, !tbaa !1
   %div = fdiv double %tmp28, %tmp29
-  %arrayidx28 = getelementptr inbounds [512 x double], [512 x double]* %Q, i64 %indvars.iv10, i64 %indvars.iv24
-  store double %div, double* %arrayidx28, align 8, !tbaa !1
+  %arrayidx28 = getelementptr inbounds [512 x double], ptr %Q, i64 %indvars.iv10, i64 %indvars.iv24
+  store double %div, ptr %arrayidx28, align 8, !tbaa !1
   %indvars.iv.next11 = add nuw nsw i64 %indvars.iv10, 1
   %exitcond12 = icmp ne i64 %indvars.iv.next11, 512
   br i1 %exitcond12, label %for.body16, label %for.cond33.preheader
@@ -135,8 +135,8 @@ for.cond33.loopexit:                              ; preds = %for.body62
 
 for.body35:                                       ; preds = %for.body35.lr.ph, %for.cond33.loopexit
   %indvars.iv21 = phi i64 [ %indvars.iv19, %for.body35.lr.ph ], [ %indvars.iv.next22, %for.cond33.loopexit ]
-  %arrayidx39 = getelementptr inbounds [512 x double], [512 x double]* %R, i64 %indvars.iv24, i64 %indvars.iv21
-  store double 0.000000e+00, double* %arrayidx39, align 8, !tbaa !1
+  %arrayidx39 = getelementptr inbounds [512 x double], ptr %R, i64 %indvars.iv24, i64 %indvars.iv21
+  store double 0.000000e+00, ptr %arrayidx39, align 8, !tbaa !1
   br label %for.body42
 
 for.cond60.preheader:                             ; preds = %for.body42
@@ -144,31 +144,31 @@ for.cond60.preheader:                             ; preds = %for.body42
 
 for.body42:                                       ; preds = %for.body35, %for.body42
   %indvars.iv13 = phi i64 [ 0, %for.body35 ], [ %indvars.iv.next14, %for.body42 ]
-  %arrayidx46 = getelementptr inbounds [512 x double], [512 x double]* %Q, i64 %indvars.iv13, i64 %indvars.iv24
-  %tmp30 = load double, double* %arrayidx46, align 8, !tbaa !1
-  %arrayidx50 = getelementptr inbounds [512 x double], [512 x double]* %A, i64 %indvars.iv13, i64 %indvars.iv21
-  %tmp31 = load double, double* %arrayidx50, align 8, !tbaa !1
+  %arrayidx46 = getelementptr inbounds [512 x double], ptr %Q, i64 %indvars.iv13, i64 %indvars.iv24
+  %tmp30 = load double, ptr %arrayidx46, align 8, !tbaa !1
+  %arrayidx50 = getelementptr inbounds [512 x double], ptr %A, i64 %indvars.iv13, i64 %indvars.iv21
+  %tmp31 = load double, ptr %arrayidx50, align 8, !tbaa !1
   %mul51 = fmul double %tmp30, %tmp31
-  %arrayidx55 = getelementptr inbounds [512 x double], [512 x double]* %R, i64 %indvars.iv24, i64 %indvars.iv21
-  %tmp32 = load double, double* %arrayidx55, align 8, !tbaa !1
+  %arrayidx55 = getelementptr inbounds [512 x double], ptr %R, i64 %indvars.iv24, i64 %indvars.iv21
+  %tmp32 = load double, ptr %arrayidx55, align 8, !tbaa !1
   %add56 = fadd double %tmp32, %mul51
-  store double %add56, double* %arrayidx55, align 8, !tbaa !1
+  store double %add56, ptr %arrayidx55, align 8, !tbaa !1
   %indvars.iv.next14 = add nuw nsw i64 %indvars.iv13, 1
   %exitcond15 = icmp ne i64 %indvars.iv.next14, 512
   br i1 %exitcond15, label %for.body42, label %for.cond60.preheader
 
 for.body62:                                       ; preds = %for.cond60.preheader, %for.body62
   %indvars.iv16 = phi i64 [ 0, %for.cond60.preheader ], [ %indvars.iv.next17, %for.body62 ]
-  %arrayidx66 = getelementptr inbounds [512 x double], [512 x double]* %A, i64 %indvars.iv16, i64 %indvars.iv21
-  %tmp33 = load double, double* %arrayidx66, align 8, !tbaa !1
-  %arrayidx70 = getelementptr inbounds [512 x double], [512 x double]* %Q, i64 %indvars.iv16, i64 %indvars.iv24
-  %tmp34 = load double, double* %arrayidx70, align 8, !tbaa !1
-  %arrayidx74 = getelementptr inbounds [512 x double], [512 x double]* %R, i64 %indvars.iv24, i64 %indvars.iv21
-  %tmp35 = load double, double* %arrayidx74, align 8, !tbaa !1
+  %arrayidx66 = getelementptr inbounds [512 x double], ptr %A, i64 %indvars.iv16, i64 %indvars.iv21
+  %tmp33 = load double, ptr %arrayidx66, align 8, !tbaa !1
+  %arrayidx70 = getelementptr inbounds [512 x double], ptr %Q, i64 %indvars.iv16, i64 %indvars.iv24
+  %tmp34 = load double, ptr %arrayidx70, align 8, !tbaa !1
+  %arrayidx74 = getelementptr inbounds [512 x double], ptr %R, i64 %indvars.iv24, i64 %indvars.iv21
+  %tmp35 = load double, ptr %arrayidx74, align 8, !tbaa !1
   %mul75 = fmul double %tmp34, %tmp35
   %sub = fsub double %tmp33, %mul75
-  %arrayidx79 = getelementptr inbounds [512 x double], [512 x double]* %A, i64 %indvars.iv16, i64 %indvars.iv21
-  store double %sub, double* %arrayidx79, align 8, !tbaa !1
+  %arrayidx79 = getelementptr inbounds [512 x double], ptr %A, i64 %indvars.iv16, i64 %indvars.iv21
+  store double %sub, ptr %arrayidx79, align 8, !tbaa !1
   %indvars.iv.next17 = add nuw nsw i64 %indvars.iv16, 1
   %exitcond18 = icmp ne i64 %indvars.iv.next17, 512
   br i1 %exitcond18, label %for.body62, label %for.cond33.loopexit
@@ -186,7 +186,7 @@ for.end88:                                        ; preds = %for.inc86
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end(i64, ptr nocapture) #0
 
 ; Function Attrs: nounwind
 declare double @sqrt(double) #2

diff  --git a/polly/test/GPGPU/ignore-parameter-bounds.ll b/polly/test/GPGPU/ignore-parameter-bounds.ll
index 638c1ea40b2d2..1d0b5482941e1 100644
--- a/polly/test/GPGPU/ignore-parameter-bounds.ll
+++ b/polly/test/GPGPU/ignore-parameter-bounds.ll
@@ -17,7 +17,7 @@ target triple = "x86_64-unknown-linux-gnu"
 ; Function Attrs: nounwind uwtable
 define void @__radiation_rg_MOD_coe_so() #0 {
 entry:
-  %polly.access.kspec.load = load i32, i32* undef, align 4
+  %polly.access.kspec.load = load i32, ptr undef, align 4
   %0 = or i1 undef, undef
   br label %polly.preload.cond29
 
@@ -33,8 +33,8 @@ polly.preload.exec31:                             ; preds = %polly.preload.cond2
   %2 = mul nsw i64 7, %1
   %3 = add nsw i64 0, %2
   %4 = add nsw i64 %3, 48
-  %polly.access.__data_radiation_MOD_cobi = getelementptr double, double* getelementptr inbounds ([168 x double], [168 x double]* @__data_radiation_MOD_cobi, i32 0, i32 0), i64 %4
-  %polly.access.__data_radiation_MOD_cobi.load = load double, double* %polly.access.__data_radiation_MOD_cobi, align 8
+  %polly.access.__data_radiation_MOD_cobi = getelementptr double, ptr @__data_radiation_MOD_cobi, i64 %4
+  %polly.access.__data_radiation_MOD_cobi.load = load double, ptr %polly.access.__data_radiation_MOD_cobi, align 8
   br label %polly.preload.merge30
 }
 

diff  --git a/polly/test/GPGPU/invalid-kernel-assert-verifymodule.ll b/polly/test/GPGPU/invalid-kernel-assert-verifymodule.ll
index 222817577aaf2..4b9139f0b44c8 100644
--- a/polly/test/GPGPU/invalid-kernel-assert-verifymodule.ll
+++ b/polly/test/GPGPU/invalid-kernel-assert-verifymodule.ll
@@ -17,7 +17,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64* %A, i64* %B) {
+define void @foo(ptr %A, ptr %B) {
 bb:
   br label %bb1
 
@@ -27,15 +27,15 @@ bb1:                                              ; preds = %bb10, %bb
   br i1 %exitcond, label %bb2, label %bb12
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i64, i64* %B, i64 %i.0
-  %tmp3 = load i64, i64* %tmp, align 8
-  %tmp4 = getelementptr inbounds i64, i64* %B, i64 %i.0
-  %tmp5 = ptrtoint i64* %tmp4 to i64
+  %tmp = getelementptr inbounds i64, ptr %B, i64 %i.0
+  %tmp3 = load i64, ptr %tmp, align 8
+  %tmp4 = getelementptr inbounds i64, ptr %B, i64 %i.0
+  %tmp5 = ptrtoint ptr %tmp4 to i64
   %tmp6 = add nsw i64 %tmp3, %tmp5
-  %tmp7 = getelementptr inbounds i64, i64* %A, i64 %i.0
-  %tmp8 = load i64, i64* %tmp7, align 8
+  %tmp7 = getelementptr inbounds i64, ptr %A, i64 %i.0
+  %tmp8 = load i64, ptr %tmp7, align 8
   %tmp9 = add nsw i64 %tmp8, %tmp6
-  store i64 %tmp9, i64* %tmp7, align 8
+  store i64 %tmp9, ptr %tmp7, align 8
   br label %bb10
 
 bb10:                                             ; preds = %bb2

diff  --git a/polly/test/GPGPU/invalid-kernel.ll b/polly/test/GPGPU/invalid-kernel.ll
index ad5e00e1d48e6..9dd32eac97c0c 100644
--- a/polly/test/GPGPU/invalid-kernel.ll
+++ b/polly/test/GPGPU/invalid-kernel.ll
@@ -43,7 +43,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64* %A, i64* %B) {
+define void @foo(ptr %A, ptr %B) {
 bb:
   br label %bb1
 
@@ -53,15 +53,15 @@ bb1:                                              ; preds = %bb10, %bb
   br i1 %exitcond, label %bb2, label %bb12
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i64, i64* %B, i64 %i.0
-  %tmp3 = load i64, i64* %tmp, align 8
-  %tmp4 = getelementptr inbounds i64, i64* %B, i64 %i.0
-  %tmp5 = ptrtoint i64* %tmp4 to i64
+  %tmp = getelementptr inbounds i64, ptr %B, i64 %i.0
+  %tmp3 = load i64, ptr %tmp, align 8
+  %tmp4 = getelementptr inbounds i64, ptr %B, i64 %i.0
+  %tmp5 = ptrtoint ptr %tmp4 to i64
   %tmp6 = add nsw i64 %tmp3, %tmp5
-  %tmp7 = getelementptr inbounds i64, i64* %A, i64 %i.0
-  %tmp8 = load i64, i64* %tmp7, align 8
+  %tmp7 = getelementptr inbounds i64, ptr %A, i64 %i.0
+  %tmp8 = load i64, ptr %tmp7, align 8
   %tmp9 = add nsw i64 %tmp8, %tmp6
-  store i64 %tmp9, i64* %tmp7, align 8
+  store i64 %tmp9, ptr %tmp7, align 8
   br label %bb10
 
 bb10:                                             ; preds = %bb2

diff  --git a/polly/test/GPGPU/invariant-load-array-access.ll b/polly/test/GPGPU/invariant-load-array-access.ll
index 840ed34a0ce7e..02c0330a7e7e2 100644
--- a/polly/test/GPGPU/invariant-load-array-access.ll
+++ b/polly/test/GPGPU/invariant-load-array-access.ll
@@ -21,7 +21,7 @@
 
 ; Check that kernel launch is generated in host IR.
 ; the declare would not be generated unless a call to a kernel exists.
-; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
+; HOST-IR: declare void @polly_launchKernel(ptr, i32, i32, i32, i32, i32, ptr)
 
 ; This test makes sure that such an access pattern is handled correctly
 ; by PPCGCodeGeneration. It appears that not calling `preloadInvariantLoads`
@@ -40,7 +40,7 @@
 
 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 target triple = "i386-apple-macosx10.12.0"
-define void @f(i32* %arr, i32* %control, i32* %readarr) {
+define void @f(ptr %arr, ptr %control, ptr %readarr) {
 entry:
   br label %entry.split
 
@@ -49,18 +49,18 @@ entry.split:                                      ; preds = %entry
 
 for.body:                                         ; preds = %entry.split, %if.end
   %i.01 = phi i32 [ 0, %entry.split ], [ %inc, %if.end ]
-  %tmp = load i32, i32* %control, align 4
+  %tmp = load i32, ptr %control, align 4
   %cmp1 = icmp sgt i32 %tmp, 3
   br i1 %cmp1, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %tmp1 = load i32, i32* %readarr, align 4
+  %tmp1 = load i32, ptr %readarr, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body
   %t.0 = phi i32 [ %tmp1, %if.then ], [ 0, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %arr, i32 %i.01
-  store i32 %t.0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %arr, i32 %i.01
+  store i32 %t.0, ptr %arrayidx, align 4
   %inc = add nuw nsw i32 %i.01, 1
   %exitcond = icmp eq i32 %inc, 1000
   br i1 %exitcond, label %for.end, label %for.body

diff  --git a/polly/test/GPGPU/invariant-load-escaping-values.ll b/polly/test/GPGPU/invariant-load-escaping-values.ll
index b4898ab1ee2f8..54f4b43fdb92a 100644
--- a/polly/test/GPGPU/invariant-load-escaping-values.ll
+++ b/polly/test/GPGPU/invariant-load-escaping-values.ll
@@ -3,8 +3,8 @@
 
 ; REQUIRES: pollyacc
 
-; CHECK: store i64 %polly.access.B.load, i64* %invariant.preload.s2a
-; CHECK: %invariant.final_reload = load i64, i64* %invariant.preload.s2a
+; CHECK: store i64 %polly.access.B.load, ptr %invariant.preload.s2a
+; CHECK: %invariant.final_reload = load i64, ptr %invariant.preload.s2a
 
 ; Verify that the final reload of an invariant scalar memory access uses the
 ; same stack slot that into which the invariant memory access was stored
@@ -12,16 +12,16 @@
 ; of the preload stack slot, which remained uninitialized and caused our escaping
 ; loads to contain garbage.
 
-define i64 @foo(float* %A, i64* %B) {
+define i64 @foo(ptr %A, ptr %B) {
 entry:
   br label %loop
 
 loop:
   %indvar = phi i64 [0, %entry], [%indvar.next, %loop]
   %indvar.next = add nsw i64 %indvar, 1
-  %idx = getelementptr float, float* %A, i64 %indvar
-  store float 42.0, float* %idx
-  %invariant = load i64, i64* %B
+  %idx = getelementptr float, ptr %A, i64 %indvar
+  store float 42.0, ptr %idx
+  %invariant = load i64, ptr %B
   %cmp = icmp sle i64 %indvar, 1024
   br i1 %cmp, label %loop, label %exit
 

diff  --git a/polly/test/GPGPU/invariant-load-hoisting-read-in-kernel.ll b/polly/test/GPGPU/invariant-load-hoisting-read-in-kernel.ll
index cd4fe6a4587b9..ad30ef6f9b24d 100644
--- a/polly/test/GPGPU/invariant-load-hoisting-read-in-kernel.ll
+++ b/polly/test/GPGPU/invariant-load-hoisting-read-in-kernel.ll
@@ -11,25 +11,25 @@
 ; Verify that invariant loads used in a kernel statement are correctly forwarded
 ; as subtree value to the GPU kernel.
 
-; HOST-IR: store float %polly.access.p.load, float* %invariant.preload.s2a, align 4
+; HOST-IR: store float %polly.access.p.load, ptr %invariant.preload.s2a, align 4
 
-; KERNEL-IR:  define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_2({{.*}}i8 addrspace(1)* %MemRef_indvar2f__phi{{.*}})
-; KERNEL-IR:   %indvar2f.phiops.reload = load float, float* %indvar2f.phiops, align 4
-; KERNEL-IR:   store float %indvar2f.phiops.reload, float addrspace(1)* %polly.access.MemRef_A, align 4
+; KERNEL-IR:  define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_2({{.*}}ptr addrspace(1) %MemRef_indvar2f__phi{{.*}})
+; KERNEL-IR:   %indvar2f.phiops.reload = load float, ptr %indvar2f.phiops, align 4
+; KERNEL-IR:   store float %indvar2f.phiops.reload, ptr addrspace(1) %polly.access.MemRef_A, align 4
 
-; FIXME: store float %indvar2f.phiops.reload, float* %indvar2f.phiops, align 4
+; FIXME: store float %indvar2f.phiops.reload, ptr %indvar2f.phiops, align 4
 ; For some reason the above instruction is emitted that stores back to the addess it was just loaded from.
 
-define void @foo(float* %A, float* %p) {
+define void @foo(ptr %A, ptr %p) {
 entry:
   br label %loop
 
 loop:
   %indvar = phi i64 [0, %entry], [%indvar.next, %loop]
   %indvar.next = add i64 %indvar, 1
-  %invariant = load float, float* %p
-  %ptr = getelementptr float, float* %A, i64 %indvar
-  store float 42.0, float* %ptr
+  %invariant = load float, ptr %p
+  %ptr = getelementptr float, ptr %A, i64 %indvar
+  store float 42.0, ptr %ptr
   %cmp = icmp sle i64 %indvar, 1024
   br i1 %cmp, label %loop, label %anotherloop
 
@@ -37,7 +37,7 @@ anotherloop:
   %indvar2 = phi i64 [0, %loop], [%indvar2.next, %anotherloop]
   %indvar2f = phi float [%invariant, %loop], [%indvar2f, %anotherloop]
   %indvar2.next = add i64 %indvar2, 1
-  store float %indvar2f, float* %A
+  store float %indvar2f, ptr %A
   %cmp2 = icmp sle i64 %indvar2, 1024
   br i1 %cmp2, label %anotherloop, label %end
 

diff  --git a/polly/test/GPGPU/invariant-load-hoisting-with-variable-bounds.ll b/polly/test/GPGPU/invariant-load-hoisting-with-variable-bounds.ll
index 2d115a794ba78..7a650eeb22ee5 100644
--- a/polly/test/GPGPU/invariant-load-hoisting-with-variable-bounds.ll
+++ b/polly/test/GPGPU/invariant-load-hoisting-with-variable-bounds.ll
@@ -21,7 +21,7 @@
 
 ; Check that the kernel launch is generated in the host IR.
 ; This declaration would not have been generated unless a kernel launch exists.
-; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
+; HOST-IR: declare void @polly_launchKernel(ptr, i32, i32, i32, i32, i32, ptr)
 
 ;    void f(int *begin, int *end, int *arr) {
 ;      for (int i = *begin; i < *end; i++) {
@@ -32,13 +32,13 @@
 
 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 
-define void @f(i32* %begin, i32* %end, i32* %arr) {
+define void @f(ptr %begin, ptr %end, ptr %arr) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %tmp1 = load i32, i32* %begin, align 4
-  %tmp41 = load i32, i32* %end, align 4
+  %tmp1 = load i32, ptr %begin, align 4
+  %tmp41 = load i32, ptr %end, align 4
   %cmp2 = icmp slt i32 %tmp1, %tmp41
   br i1 %cmp2, label %for.body.lr.ph, label %for.end
 
@@ -47,10 +47,10 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %i.03 = phi i32 [ %tmp1, %for.body.lr.ph ], [ %inc, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %arr, i32 %i.03
-  store i32 0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %arr, i32 %i.03
+  store i32 0, ptr %arrayidx, align 4
   %inc = add nsw i32 %i.03, 1
-  %tmp4 = load i32, i32* %end, align 4
+  %tmp4 = load i32, ptr %end, align 4
   %cmp = icmp slt i32 %inc, %tmp4
   br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge
 

diff  --git a/polly/test/GPGPU/invariant-load-hoisting-with-variable-lower-bound.ll b/polly/test/GPGPU/invariant-load-hoisting-with-variable-lower-bound.ll
index a22612c62cf83..a637cc44c7a30 100644
--- a/polly/test/GPGPU/invariant-load-hoisting-with-variable-lower-bound.ll
+++ b/polly/test/GPGPU/invariant-load-hoisting-with-variable-lower-bound.ll
@@ -18,7 +18,7 @@
 
 ; Check that the kernel launch is generated in the host IR.
 ; This declaration would not have been generated unless a kernel launch exists.
-; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
+; HOST-IR: declare void @polly_launchKernel(ptr, i32, i32, i32, i32, i32, ptr)
 
 ;
 ; void f(int *begin, int *arr) {
@@ -29,12 +29,12 @@
 
 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 
-define void @f(i32* %begin, i32* %arr) {
+define void @f(ptr %begin, ptr %arr) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %beginval = load i32, i32* %begin, align 4
+  %beginval = load i32, ptr %begin, align 4
   %cmp1 = icmp slt i32 %beginval, 100
   br i1 %cmp1, label %for.body, label %for.end
 
@@ -42,8 +42,8 @@ entry.split:                                      ; preds = %entry
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %ival = phi i32 [ %beginval, %entry.split ], [ %inc, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %arr, i32 %ival
-  store i32 0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %arr, i32 %ival
+  store i32 0, ptr %arrayidx, align 4
   %inc = add nsw i32 %ival, 1
   %cmp = icmp slt i32 %ival, 99
   br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge

diff  --git a/polly/test/GPGPU/invariant-load-hoisting-with-variable-upper-bound.ll b/polly/test/GPGPU/invariant-load-hoisting-with-variable-upper-bound.ll
index a402284b5e604..3c19a306734a7 100644
--- a/polly/test/GPGPU/invariant-load-hoisting-with-variable-upper-bound.ll
+++ b/polly/test/GPGPU/invariant-load-hoisting-with-variable-upper-bound.ll
@@ -15,7 +15,7 @@
 
 ; Check that kernel launch is generated in host IR.
 ; the declare would not be generated unless a call to a kernel exists.
-; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
+; HOST-IR: declare void @polly_launchKernel(ptr, i32, i32, i32, i32, i32, ptr)
 
 ; Check if we generate GPU code for simple loop with variable upper bound.
 ; This always worked, but have this test to prevent regressions.
@@ -27,12 +27,12 @@
 ;
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %idx, i32* %arr) {
+define void @f(ptr %idx, ptr %arr) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %tmp21 = load i32, i32* %idx, align 4
+  %tmp21 = load i32, ptr %idx, align 4
   %cmp2 = icmp sgt i32 %tmp21, 0
   br i1 %cmp2, label %for.body.lr.ph, label %for.end
 
@@ -41,10 +41,10 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %arr, i64 %indvars.iv
-  store i32 0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %arr, i64 %indvars.iv
+  store i32 0, ptr %arrayidx, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %tmp2 = load i32, i32* %idx, align 4
+  %tmp2 = load i32, ptr %idx, align 4
   %0 = sext i32 %tmp2 to i64
   %cmp = icmp slt i64 %indvars.iv.next, %0
   br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge

diff  --git a/polly/test/GPGPU/invariant-load-hoisting.ll b/polly/test/GPGPU/invariant-load-hoisting.ll
index 136a4363fdb55..5ae1cfae255d7 100644
--- a/polly/test/GPGPU/invariant-load-hoisting.ll
+++ b/polly/test/GPGPU/invariant-load-hoisting.ll
@@ -15,10 +15,10 @@
 ; SCOP-NEXT:              [n, tmp12] -> { Stmt_for_body6[i0, i1, i2] -> MemRef_invariant[0] };
 ; SCOP-NEXT:          Execution Context: [n, tmp12] -> {  : n > 0 }
 ; SCOP-NEXT:  }
-; HOST-IR:      call void @polly_launchKernel(i8* %[[REGC:[0-9]+]], i32 %{{[0-9]+}}, i32 1, i32 32, i32 1, i32 1, i8* %polly_launch_0_params_i8ptr)
-; HOST-IR-NEXT: call void @polly_freeKernel(i8* %[[REGC]])
+; HOST-IR:      call void @polly_launchKernel(ptr %[[REGC:[0-9]+]], i32 %{{[0-9]+}}, i32 1, i32 32, i32 1, i32 1, ptr %polly_launch_0_params_i8ptr)
+; HOST-IR-NEXT: call void @polly_freeKernel(ptr %[[REGC]])
 
-; KERNEL-IR: define ptx_kernel void @FUNC_f_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_B, i8 addrspace(1)* %MemRef_A, i32 %n, i32 %tmp12, i32 %polly.preload.tmp21.merge)
+; KERNEL-IR: define ptx_kernel void @FUNC_f_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_B, ptr addrspace(1) %MemRef_A, i32 %n, i32 %tmp12, i32 %polly.preload.tmp21.merge)
 
 
 ; Check that we generate correct GPU code in case of invariant load hoisting.
@@ -39,7 +39,7 @@
 ;    }
 ;
 
-define void @f([3000 x i32]* %A, i32* %invariant, [3000 x i32]* %B, i32 %n) {
+define void @f(ptr %A, ptr %invariant, ptr %B, i32 %n) {
 entry:
   br label %entry.split
 
@@ -70,24 +70,24 @@ for.body6:                                        ; preds = %for.body6.lr.ph, %f
   %k.02 = phi i32 [ 0, %for.body6.lr.ph ], [ %inc, %for.body6 ]
   %idxprom = sext i32 %k.02 to i64
   %idxprom7 = sext i32 %k.02 to i64
-  %arrayidx8 = getelementptr inbounds [3000 x i32], [3000 x i32]* %B, i64 %idxprom, i64 %idxprom7
-  %tmp9 = load i32, i32* %arrayidx8, align 4
-  %tmp12 = load i32, i32* %invariant, align 4
+  %arrayidx8 = getelementptr inbounds [3000 x i32], ptr %B, i64 %idxprom, i64 %idxprom7
+  %tmp9 = load i32, ptr %arrayidx8, align 4
+  %tmp12 = load i32, ptr %invariant, align 4
   %idxprom9 = sext i32 %tmp12 to i64
   %idxprom11 = sext i32 %k.02 to i64
-  %arrayidx12 = getelementptr inbounds [3000 x i32], [3000 x i32]* %A, i64 %idxprom9, i64 %idxprom11
-  store i32 %tmp9, i32* %arrayidx12, align 4
+  %arrayidx12 = getelementptr inbounds [3000 x i32], ptr %A, i64 %idxprom9, i64 %idxprom11
+  store i32 %tmp9, ptr %arrayidx12, align 4
   %idxprom13 = sext i32 %k.02 to i64
   %idxprom15 = sext i32 %k.02 to i64
-  %arrayidx16 = getelementptr inbounds [3000 x i32], [3000 x i32]* %B, i64 %idxprom13, i64 %idxprom15
-  %tmp17 = load i32, i32* %arrayidx16, align 4
+  %arrayidx16 = getelementptr inbounds [3000 x i32], ptr %B, i64 %idxprom13, i64 %idxprom15
+  %tmp17 = load i32, ptr %arrayidx16, align 4
   %idxprom17 = sext i32 %k.02 to i64
-  %tmp21 = load i32, i32* %invariant, align 4
+  %tmp21 = load i32, ptr %invariant, align 4
   %idxprom19 = sext i32 %tmp21 to i64
-  %arrayidx20 = getelementptr inbounds [3000 x i32], [3000 x i32]* %A, i64 %idxprom17, i64 %idxprom19
-  %tmp22 = load i32, i32* %arrayidx20, align 4
+  %arrayidx20 = getelementptr inbounds [3000 x i32], ptr %A, i64 %idxprom17, i64 %idxprom19
+  %tmp22 = load i32, ptr %arrayidx20, align 4
   %add = add nsw i32 %tmp22, %tmp17
-  store i32 %add, i32* %arrayidx20, align 4
+  store i32 %add, ptr %arrayidx20, align 4
   %inc = add nuw nsw i32 %k.02, 1
   %cmp5 = icmp slt i32 %inc, %n
   br i1 %cmp5, label %for.body6, label %for.cond4.for.inc21_crit_edge

diff  --git a/polly/test/GPGPU/invariant-load-of-scalar.ll b/polly/test/GPGPU/invariant-load-of-scalar.ll
index 6a7bdc48cecb3..fbc1d4d7eceee 100644
--- a/polly/test/GPGPU/invariant-load-of-scalar.ll
+++ b/polly/test/GPGPU/invariant-load-of-scalar.ll
@@ -29,13 +29,13 @@
 
 ; Check that we do not actually allocate arrays for %begin, %end, since they are
 ; invariant load hoisted.
-; HOST-IR: %p_dev_array_MemRef_A = call i8* @polly_allocateMemoryForDevice
-; HOST-IR-NOT: call i8* @polly_allocateMemoryForDevice
+; HOST-IR: %p_dev_array_MemRef_A = call ptr @polly_allocateMemoryForDevice
+; HOST-IR-NOT: call ptr @polly_allocateMemoryForDevice
 
 ; Check that we send the invariant loaded scalars as parameters to the
 ; kernel function.
 ; KERNEL-IR: define ptx_kernel void @FUNC_checkPrivatization_SCOP_0_KERNEL_0
-; KERNEL-IR-SAME: (i8 addrspace(1)* %MemRef_A, i32 %tmp,
+; KERNEL-IR-SAME: (ptr addrspace(1) %MemRef_A, i32 %tmp,
 ; KERNEL-IR-SAME: i32 %tmp2, i32 %polly.access.begin.load)
 
 
@@ -48,13 +48,13 @@
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.12.0"
 
-define void @checkPrivatization(i32* %A, i32* %begin, i32* %end) {
+define void @checkPrivatization(ptr %A, ptr %begin, ptr %end) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %tmp = load i32, i32* %begin, align 4
-  %tmp21 = load i32, i32* %end, align 4
+  %tmp = load i32, ptr %begin, align 4
+  %tmp21 = load i32, ptr %end, align 4
   %cmp3 = icmp slt i32 %tmp, %tmp21
   br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
@@ -64,10 +64,10 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %indvars.iv4 = phi i64 [ %tmp1, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv4
-  store i32 10, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv4
+  store i32 10, ptr %arrayidx, align 4
   %indvars.iv.next = add i64 %indvars.iv4, 1
-  %tmp2 = load i32, i32* %end, align 4
+  %tmp2 = load i32, ptr %end, align 4
   %tmp3 = sext i32 %tmp2 to i64
   %cmp = icmp slt i64 %indvars.iv.next, %tmp3
   br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge

diff  --git a/polly/test/GPGPU/kernel-params-scop-parameter.ll b/polly/test/GPGPU/kernel-params-scop-parameter.ll
index 3cbd4043604b2..527492bfd5fba 100644
--- a/polly/test/GPGPU/kernel-params-scop-parameter.ll
+++ b/polly/test/GPGPU/kernel-params-scop-parameter.ll
@@ -9,11 +9,11 @@
 ;        A[i] += 42;
 ;    }
 
-; KERNEL-IR: define ptx_kernel void @FUNC_kernel_params_scop_parameter_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_A, i64 %n)
+; KERNEL-IR: define ptx_kernel void @FUNC_kernel_params_scop_parameter_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_A, i64 %n)
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @kernel_params_scop_parameter(float* %A, i64 %n) {
+define void @kernel_params_scop_parameter(ptr %A, i64 %n) {
 bb:
   br label %bb1
 
@@ -23,10 +23,10 @@ bb1:                                              ; preds = %bb6, %bb
   br i1 %tmp, label %bb2, label %bb8
 
 bb2:                                              ; preds = %bb1
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, 4.200000e+01
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/kernels-names-across-scops-funcs.ll b/polly/test/GPGPU/kernels-names-across-scops-funcs.ll
index f92562233b675..57fe70ec0d9b3 100644
--- a/polly/test/GPGPU/kernels-names-across-scops-funcs.ll
+++ b/polly/test/GPGPU/kernels-names-across-scops-funcs.ll
@@ -4,14 +4,14 @@
 
 ; REQUIRES: pollyacc
 
-; KERNEL: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_arg1, i32 %arg) #0 {
-; KERNEL: define ptx_kernel void @FUNC_foo_SCOP_1_KERNEL_0(i8 addrspace(1)* %MemRef_arg1, i32 %arg) #0 {
-; KERNEL: define ptx_kernel void @FUNC_foo2_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_arg1, i32 %arg) #0 {
+; KERNEL: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_arg1, i32 %arg) #0 {
+; KERNEL: define ptx_kernel void @FUNC_foo_SCOP_1_KERNEL_0(ptr addrspace(1) %MemRef_arg1, i32 %arg) #0 {
+; KERNEL: define ptx_kernel void @FUNC_foo2_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_arg1, i32 %arg) #0 {
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @foo(i32 %arg, i32* %arg1) #0 {
+define void @foo(i32 %arg, ptr %arg1) #0 {
 bb:
   br label %bb2
 
@@ -24,10 +24,10 @@ bb3:                                              ; preds = %bb2
 
 bb4:                                              ; preds = %bb4, %bb3
   %tmp5 = phi i64 [ 0, %bb3 ], [ %tmp9, %bb4 ]
-  %tmp6 = getelementptr inbounds i32, i32* %arg1, i64 %tmp5
-  %tmp7 = load i32, i32* %tmp6, align 4, !tbaa !2
+  %tmp6 = getelementptr inbounds i32, ptr %arg1, i64 %tmp5
+  %tmp7 = load i32, ptr %tmp6, align 4, !tbaa !2
   %tmp8 = add nsw i32 %tmp7, 1
-  store i32 %tmp8, i32* %tmp6, align 4, !tbaa !2
+  store i32 %tmp8, ptr %tmp6, align 4, !tbaa !2
   %tmp9 = add nuw nsw i64 %tmp5, 1
   %tmp10 = zext i32 %arg to i64
   %tmp11 = icmp ne i64 %tmp9, %tmp10
@@ -50,10 +50,10 @@ bb18:                                             ; preds = %bb16
 
 bb19:                                             ; preds = %bb19, %bb18
   %tmp20 = phi i64 [ 0, %bb18 ], [ %tmp24, %bb19 ]
-  %tmp21 = getelementptr inbounds i32, i32* %arg1, i64 %tmp20
-  %tmp22 = load i32, i32* %tmp21, align 4, !tbaa !2
+  %tmp21 = getelementptr inbounds i32, ptr %arg1, i64 %tmp20
+  %tmp22 = load i32, ptr %tmp21, align 4, !tbaa !2
   %tmp23 = add nsw i32 %tmp22, 1
-  store i32 %tmp23, i32* %tmp21, align 4, !tbaa !2
+  store i32 %tmp23, ptr %tmp21, align 4, !tbaa !2
   %tmp24 = add nuw nsw i64 %tmp20, 1
   %tmp25 = zext i32 %arg to i64
   %tmp26 = icmp ne i64 %tmp24, %tmp25
@@ -70,16 +70,16 @@ bb29:                                             ; preds = %bb28, %bb13
 }
 
 ; 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
 declare i64 @clock() #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 uwtable
-define void @foo2(i32 %arg, i32* %arg1) #0 {
+define void @foo2(i32 %arg, ptr %arg1) #0 {
 bb:
   br label %bb2
 
@@ -92,10 +92,10 @@ bb3:                                              ; preds = %bb2
 
 bb4:                                              ; preds = %bb4, %bb3
   %tmp5 = phi i64 [ 0, %bb3 ], [ %tmp9, %bb4 ]
-  %tmp6 = getelementptr inbounds i32, i32* %arg1, i64 %tmp5
-  %tmp7 = load i32, i32* %tmp6, align 4, !tbaa !2
+  %tmp6 = getelementptr inbounds i32, ptr %arg1, i64 %tmp5
+  %tmp7 = load i32, ptr %tmp6, align 4, !tbaa !2
   %tmp8 = add nsw i32 %tmp7, 1
-  store i32 %tmp8, i32* %tmp6, align 4, !tbaa !2
+  store i32 %tmp8, ptr %tmp6, align 4, !tbaa !2
   %tmp9 = add nuw nsw i64 %tmp5, 1
   %tmp10 = zext i32 %arg to i64
   %tmp11 = icmp ne i64 %tmp9, %tmp10

diff  --git a/polly/test/GPGPU/libdevice-functions-copied-into-kernel.ll b/polly/test/GPGPU/libdevice-functions-copied-into-kernel.ll
index d6600cc46b82a..0f8405dad7e8d 100644
--- a/polly/test/GPGPU/libdevice-functions-copied-into-kernel.ll
+++ b/polly/test/GPGPU/libdevice-functions-copied-into-kernel.ll
@@ -25,7 +25,7 @@
 
 ; Check that kernel launch is generated in host IR.
 ; the declare would not be generated unless a call to a kernel exists.
-; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
+; HOST-IR: declare void @polly_launchKernel(ptr, i32, i32, i32, i32, i32, ptr)
 
 
 ; void f(float *A, float *B, int N) {
@@ -42,7 +42,7 @@
 
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(float* %A, float* %B, i32 %N) {
+define void @f(ptr %A, ptr %B, i32 %N) {
 entry:
   br label %entry.split
 
@@ -55,16 +55,16 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ]
-  %A.arr.i = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %A.arr.i.val = load float, float* %A.arr.i, align 4
+  %A.arr.i = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %A.arr.i.val = load float, ptr %A.arr.i, align 4
   ; Call to intrinsics that should be part of the kernel.
   %expf = tail call float @expf(float %A.arr.i.val)
   %cosf = tail call float @cosf(float %expf)
   %logf = tail call float @logf(float %cosf)
   %powi = tail call float @llvm.powi.f32.i32(float %logf, i32 2)
   %exp = tail call float @llvm.exp.f32(float %powi)
-  %B.arr.i = getelementptr inbounds float, float* %B, i64 %indvars.iv
-  store float %exp, float* %B.arr.i, align 4
+  %B.arr.i = getelementptr inbounds float, ptr %B, i64 %indvars.iv
+  store float %exp, ptr %B.arr.i, align 4
 
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %wide.trip.count = zext i32 %N to i64

diff  --git a/polly/test/GPGPU/live-range-reordering-with-privatization.ll b/polly/test/GPGPU/live-range-reordering-with-privatization.ll
index d7d9e0c4626b1..3b047fd557ff8 100644
--- a/polly/test/GPGPU/live-range-reordering-with-privatization.ll
+++ b/polly/test/GPGPU/live-range-reordering-with-privatization.ll
@@ -37,12 +37,12 @@
 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 target triple = "i386-apple-macosx10.12.0"
 
-define void @f(i32* %end, i32* %arr, i32* %control, i32* %readarr) {
+define void @f(ptr %end, ptr %arr, ptr %control, ptr %readarr) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %tmp3 = load i32, i32* %end, align 4
+  %tmp3 = load i32, ptr %end, align 4
   %cmp4 = icmp sgt i32 %tmp3, 0
   br i1 %cmp4, label %for.body.lr.ph, label %for.end
 
@@ -51,21 +51,21 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %if.end
   %i.05 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %if.end ]
-  %tmp1 = load i32, i32* %control, align 4
+  %tmp1 = load i32, ptr %control, align 4
   %cmp1 = icmp sgt i32 %tmp1, 3
   br i1 %cmp1, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %readarr, i32 %i.05
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %readarr, i32 %i.05
+  %tmp2 = load i32, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body
   %t.0 = phi i32 [ %tmp2, %if.then ], [ 0, %for.body ]
-  %arrayidx2 = getelementptr inbounds i32, i32* %arr, i32 %i.05
-  store i32 %t.0, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %arr, i32 %i.05
+  store i32 %t.0, ptr %arrayidx2, align 4
   %inc = add nuw nsw i32 %i.05, 1
-  %tmp = load i32, i32* %end, align 4
+  %tmp = load i32, ptr %end, align 4
   %cmp = icmp slt i32 %inc, %tmp
   br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge
 

diff  --git a/polly/test/GPGPU/loops-outside-scop.ll b/polly/test/GPGPU/loops-outside-scop.ll
index ee43affa337ea..36b3a706338a5 100644
--- a/polly/test/GPGPU/loops-outside-scop.ll
+++ b/polly/test/GPGPU/loops-outside-scop.ll
@@ -18,7 +18,7 @@
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 target triple = "x86_64-unknown-linux-gnu"
 
-declare void @fn_to_fence(i32 *%val)
+declare void @fn_to_fence(ptr %val)
 
 ; void f(int *arr, bool shouldcont) {
 ;     for(int i = 0; ; i++) {
@@ -32,7 +32,7 @@ declare void @fn_to_fence(i32 *%val)
 
 
 ; Function Attrs: nounwind uwtable
-define void @f(i32 *%arr, i1 %shouldcont) #1 {
+define void @f(ptr %arr, i1 %shouldcont) #1 {
 entry:
   br label %for.init
 
@@ -43,14 +43,14 @@ for.init:                                             ; preds = %for.end, %entry
 for2.body:                                             ; preds = %"65", %"64"
   %j = phi i32 [ %j.next, %for2.body ], [ 0, %for.init ]
   %j.sext = sext i32 %j to i64
-  %arr.slot = getelementptr i32, i32* %arr, i64 %j.sext
-  store i32 %i, i32* %arr.slot, align 4
+  %arr.slot = getelementptr i32, ptr %arr, i64 %j.sext
+  store i32 %i, ptr %arr.slot, align 4
   %exitcond = icmp eq i32 %j, 10
   %j.next = add i32 %j, 1
   br i1 %exitcond, label %for2.body.fence, label %for2.body
 
 for2.body.fence:                                             ; preds = %"65"
-  call void @fn_to_fence(i32* %arr) #2
+  call void @fn_to_fence(ptr %arr) #2
   br i1 %shouldcont, label %for.end, label %exit
 for.end:                                             ; preds = %"69"
   %i.next = add i32 %i, 1

diff  --git a/polly/test/GPGPU/managed-memory-rewrite-alloca.ll b/polly/test/GPGPU/managed-memory-rewrite-alloca.ll
index d8159bb9d1956..6dbd87db5eb5e 100644
--- a/polly/test/GPGPU/managed-memory-rewrite-alloca.ll
+++ b/polly/test/GPGPU/managed-memory-rewrite-alloca.ll
@@ -29,8 +29,8 @@ entry.split:                                      ; preds = %entry
 
 for.body:                                         ; preds = %entry.split, %for.body
   %indvars.iv1 = phi i64 [ 0, %entry.split ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds [100 x i32], [100 x i32]* %arr, i64 0, i64 %indvars.iv1
-  store i32 42, i32* %arrayidx, align 4, !tbaa !3
+  %arrayidx = getelementptr inbounds [100 x i32], ptr %arr, i64 0, i64 %indvars.iv1
+  store i32 42, ptr %arrayidx, align 4, !tbaa !3
   %indvars.iv.next = add nuw nsw i64 %indvars.iv1, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 100
   br i1 %exitcond, label %for.end, label %for.body
@@ -40,11 +40,11 @@ for.end:                                          ; preds = %for.body
 }
 
 ; 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: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #0
 
 attributes #0 = { argmemonly nounwind }
 

diff  --git a/polly/test/GPGPU/managed-memory-rewrite-malloc-free-inside-constexpr.ll b/polly/test/GPGPU/managed-memory-rewrite-malloc-free-inside-constexpr.ll
index bab432e379830..946da40919ec8 100644
--- a/polly/test/GPGPU/managed-memory-rewrite-malloc-free-inside-constexpr.ll
+++ b/polly/test/GPGPU/managed-memory-rewrite-malloc-free-inside-constexpr.ll
@@ -34,51 +34,50 @@
 ; SCOP-NEXT: }
 
 ; // Check that polly_mallocManaged is declared and used correctly.
-; HOST-IR: %1 = bitcast i8* (i64)* @polly_mallocManaged to i32* (i64)*
-; HOST-IR: declare i8* @polly_mallocManaged(i64)
+; HOST-IR: declare ptr @polly_mallocManaged(i64)
 
 ; // Check that polly_freeManaged is declared and used correctly.
 ; HOST-IR  call void @polly_freeManaged(i8* %toFree)
-; HOST-IR: declare void @polly_freeManaged(i8*)
+; HOST-IR: declare void @polly_freeManaged(ptr)
 
 ; // Check that we remove the original malloc,free
-; HOST-IR-NOT: declare i8* @malloc(i64)
-; HOST-IR-NOT: declare void @free(i8*)
+; HOST-IR-NOT: declare ptr @malloc(i64)
+; HOST-IR-NOT: declare void @free(ptr)
 
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.12.0"
 
-define i32* @f(i32 *%toFree) {
+define ptr @f(ptr %toFree) {
 entry:
   ; Free inside bitcast
-  call void bitcast (void (i8*)* @free to void (i32 *)*) (i32 * %toFree)
+  call void @free (ptr %toFree)
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
   ; malloc inside bitcast.
-  %tmp = call i32* bitcast (i8* (i64)* @malloc to i32* (i64)*) (i64 400)
+  %tmp = call ptr @malloc (i64 400)
   br label %for.body
 
 for.body:                                         ; preds = %entry.split, %for.body
   %indvars.iv1 = phi i64 [ 0, %entry.split ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %tmp, i64 %indvars.iv1
-  store i32 42, i32* %arrayidx, align 4, !tbaa !3
+  %arrayidx = getelementptr inbounds i32, ptr %tmp, i64 %indvars.iv1
+  store i32 42, ptr %arrayidx, align 4, !tbaa !3
   %indvars.iv.next = add nuw nsw i64 %indvars.iv1, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 100
   br i1 %exitcond, label %for.end, label %for.body
 
 for.end:                                          ; preds = %for.body
-  ret i32* %tmp
+  ret ptr %tmp
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #0
 
-declare i8* @malloc(i64)
-declare void @free(i8*)
+declare ptr @malloc(i64)
+declare void @free(ptr)
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #0
 
 attributes #0 = { argmemonly nounwind }
 

diff  --git a/polly/test/GPGPU/managed-memory-rewrite-malloc-free.ll b/polly/test/GPGPU/managed-memory-rewrite-malloc-free.ll
index d28de92b976d4..8e456127b1274 100644
--- a/polly/test/GPGPU/managed-memory-rewrite-malloc-free.ll
+++ b/polly/test/GPGPU/managed-memory-rewrite-malloc-free.ll
@@ -32,52 +32,50 @@
 ; SCOP-NEXT: }
 
 ; // Check that polly_mallocManaged is declared and used correctly.
-; HOST-IR: %call = tail call i8* @polly_mallocManaged(i64 400)
-; HOST-IR: declare i8* @polly_mallocManaged(i64)
+; HOST-IR: %call = tail call ptr @polly_mallocManaged(i64 400)
+; HOST-IR: declare ptr @polly_mallocManaged(i64)
 
 ; // Check that polly_freeManaged is declared and used correctly.
 ; HOST-IR  %toFreeBitcast = bitcast i32* %toFree to i8*
 ; HOST-IR  call void @polly_freeManaged(i8* %toFreeBitcast)
-; HOST-IR: declare void @polly_freeManaged(i8*)
+; HOST-IR: declare void @polly_freeManaged(ptr)
 
 ; // Check that we remove the original malloc,free
-; HOST-IR-NOT: declare i8* @malloc(i64)
-; HOST-IR-NOT: declare void @free(i8*)
+; HOST-IR-NOT: declare ptr @malloc(i64)
+; HOST-IR-NOT: declare void @free(ptr)
 
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.12.0"
 
-define i32* @f(i32 *%toFree) {
+define ptr @f(ptr %toFree) {
 entry:
-  %toFreeBitcast = bitcast i32* %toFree to i8*
-  call void @free(i8* %toFreeBitcast)
+  call void @free(ptr %toFree)
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %call = tail call i8* @malloc(i64 400)
-  %tmp = bitcast i8* %call to i32*
+  %call = tail call ptr @malloc(i64 400)
   br label %for.body
 
 for.body:                                         ; preds = %entry.split, %for.body
   %indvars.iv1 = phi i64 [ 0, %entry.split ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %tmp, i64 %indvars.iv1
-  store i32 42, i32* %arrayidx, align 4, !tbaa !3
+  %arrayidx = getelementptr inbounds i32, ptr %call, i64 %indvars.iv1
+  store i32 42, ptr %arrayidx, align 4, !tbaa !3
   %indvars.iv.next = add nuw nsw i64 %indvars.iv1, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 100
   br i1 %exitcond, label %for.end, label %for.body
 
 for.end:                                          ; preds = %for.body
-  ret i32* %tmp
+  ret ptr %call
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #0
 
-declare i8* @malloc(i64)
-declare void @free(i8*)
+declare ptr @malloc(i64)
+declare void @free(ptr)
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #0
 
 attributes #0 = { argmemonly nounwind }
 

diff  --git a/polly/test/GPGPU/managed-pointers-preparation.ll b/polly/test/GPGPU/managed-pointers-preparation.ll
index f0a89718e8fd1..473f0c107a21c 100644
--- a/polly/test/GPGPU/managed-pointers-preparation.ll
+++ b/polly/test/GPGPU/managed-pointers-preparation.ll
@@ -66,16 +66,15 @@ entry:
 
 "102":                                            ; preds = %"102", %"99"
   %indvars.iv17 = phi i64 [ %indvars.iv.next18, %"102" ], [ 1, %"99" ]
-  %0 = getelementptr [168 x double], [168 x double]* @__data_radiation_MOD_coai, i64 0, i64 0
-  store double 1.000000e+00, double* %0, align 8
-  %1 = icmp eq i64 %indvars.iv17, 3
+  store double 1.000000e+00, ptr @__data_radiation_MOD_coai, align 8
+  %0 = icmp eq i64 %indvars.iv17, 3
   %indvars.iv.next18 = add nuw nsw i64 %indvars.iv17, 1
-  br i1 %1, label %"110", label %"102"
+  br i1 %0, label %"110", label %"102"
 
 "110":                                            ; preds = %"102"
-  %2 = load i32, i32* @__data_runcontrol_MOD_lmulti_layer, align 4, !range !0
-  %3 = icmp eq i32 %2, 0
-  br i1 %3, label %"112", label %"111"
+  %1 = load i32, ptr @__data_runcontrol_MOD_lmulti_layer, align 4, !range !0
+  %2 = icmp eq i32 %1, 0
+  br i1 %2, label %"112", label %"111"
 
 "111":                                            ; preds = %"110"
   br label %"115"
@@ -85,18 +84,18 @@ entry:
 
 "115":                                            ; preds = %"112", %"111"
   %.pn = phi double [ undef, %"112" ], [ undef, %"111" ]
-  %4 = fdiv double 1.000000e+00, %.pn
+  %3 = fdiv double 1.000000e+00, %.pn
   br label %"116"
 
 "116":                                            ; preds = %"116", %"115"
   %indvars.iv = phi i64 [ %indvars.iv.next, %"116" ], [ 1, %"115" ]
-  %5 = add nsw i64 %indvars.iv, -1
-  %6 = fmul double %4, undef
-  %7 = getelementptr [10 x double], [10 x double]* @__data_radiation_MOD_rad_csalbw, i64 0, i64 %5
-  store double %6, double* %7, align 8
-  %8 = icmp eq i64 %indvars.iv, 10
+  %4 = add nsw i64 %indvars.iv, -1
+  %5 = fmul double %3, undef
+  %6 = getelementptr [10 x double], ptr @__data_radiation_MOD_rad_csalbw, i64 0, i64 %4
+  store double %5, ptr %6, align 8
+  %7 = icmp eq i64 %indvars.iv, 10
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  br i1 %8, label %return, label %"116"
+  br i1 %7, label %return, label %"116"
 
 return:                                           ; preds = %"116"
   ret void

diff  --git a/polly/test/GPGPU/memory-only-referenced-from-access.ll b/polly/test/GPGPU/memory-only-referenced-from-access.ll
index 93107b9287028..b3828950324a6 100644
--- a/polly/test/GPGPU/memory-only-referenced-from-access.ll
+++ b/polly/test/GPGPU/memory-only-referenced-from-access.ll
@@ -11,30 +11,30 @@
 ; Verify that we correctly generate a kernel even if certain invariant load
 ; hoisted parameters appear only in memory accesses, but not domain elements.
 
-; CHECK: @FUNC_quux_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_tmp4, i32 %tmp3, i32 %tmp, i32 %tmp31, i32 %tmp2)
+; CHECK: @FUNC_quux_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_tmp4, i32 %tmp3, i32 %tmp, i32 %tmp31, i32 %tmp2)
 
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 target triple = "x86_64-unknown-linux-gnu"
 
-%struct.hoge = type { i8*, i64, i64, [1 x %struct.widget] }
+%struct.hoge = type { ptr, i64, i64, [1 x %struct.widget] }
 %struct.widget = type { i64, i64, i64 }
 
 @global = external unnamed_addr global %struct.hoge, align 32
 
-define void @quux(i32* noalias %arg, i32* noalias %arg1) {
+define void @quux(ptr noalias %arg, ptr noalias %arg1) {
 bb:
-  %tmp = load i32, i32* %arg, align 4
+  %tmp = load i32, ptr %arg, align 4
   %tmp2 = sext i32 %tmp to i64
-  %tmp3 = load i32, i32* %arg1, align 4
-  %tmp4 = load [0 x double]*, [0 x double]** bitcast (%struct.hoge* @global to [0 x double]**), align 32
+  %tmp3 = load i32, ptr %arg1, align 4
+  %tmp4 = load ptr, ptr @global, align 32
   br label %bb5
 
 bb5:                                              ; preds = %bb5, %bb
   %tmp6 = phi i32 [ %tmp11, %bb5 ], [ 0, %bb ]
   %tmp7 = sext i32 %tmp6 to i64
   %tmp8 = sub nsw i64 %tmp7, %tmp2
-  %tmp9 = getelementptr [0 x double], [0 x double]* %tmp4, i64 0, i64 %tmp8
-  store double undef, double* %tmp9, align 8
+  %tmp9 = getelementptr [0 x double], ptr %tmp4, i64 0, i64 %tmp8
+  store double undef, ptr %tmp9, align 8
   %tmp10 = icmp eq i32 %tmp6, %tmp3
   %tmp11 = add i32 %tmp6, 1
   br i1 %tmp10, label %bb12, label %bb5

diff  --git a/polly/test/GPGPU/mostly-sequential.ll b/polly/test/GPGPU/mostly-sequential.ll
index c0574f7b1d990..c42c24482a38d 100644
--- a/polly/test/GPGPU/mostly-sequential.ll
+++ b/polly/test/GPGPU/mostly-sequential.ll
@@ -43,7 +43,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A) {
+define void @foo(ptr %A) {
 bb:
   br label %bb3
 
@@ -54,10 +54,10 @@ bb3:                                              ; preds = %bb8, %bb
 
 bb4:                                              ; preds = %bb3
   %tmp = sitofp i64 %i.0 to float
-  %tmp5 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp6 = load float, float* %tmp5, align 4
+  %tmp5 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp6 = load float, ptr %tmp5, align 4
   %tmp7 = fadd float %tmp6, %tmp
-  store float %tmp7, float* %tmp5, align 4
+  store float %tmp7, ptr %tmp5, align 4
   br label %bb8
 
 bb8:                                              ; preds = %bb4
@@ -83,10 +83,10 @@ bb13:                                             ; preds = %bb20, %bb12
 bb14:                                             ; preds = %bb13
   %tmp15 = add nuw nsw i64 %i1.0, %j.0
   %tmp16 = sitofp i64 %tmp15 to float
-  %tmp17 = getelementptr inbounds float, float* %A, i64 42
-  %tmp18 = load float, float* %tmp17, align 4
+  %tmp17 = getelementptr inbounds float, ptr %A, i64 42
+  %tmp18 = load float, ptr %tmp17, align 4
   %tmp19 = fadd float %tmp18, %tmp16
-  store float %tmp19, float* %tmp17, align 4
+  store float %tmp19, ptr %tmp17, align 4
   br label %bb20
 
 bb20:                                             ; preds = %bb14

diff  --git a/polly/test/GPGPU/non-read-only-scalars.ll b/polly/test/GPGPU/non-read-only-scalars.ll
index 5036644ab3d9a..1ce6e0991ebbc 100644
--- a/polly/test/GPGPU/non-read-only-scalars.ll
+++ b/polly/test/GPGPU/non-read-only-scalars.ll
@@ -79,20 +79,20 @@
 ; TODO-NEXT: }
 
 
-; KERNEL-IR: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_1(i8 addrspace(1)* %MemRef_sum_0__phi)
-; KERNEL-IR:  store float 0.000000e+00, float* %sum.0.phiops
-; KERNEL-IR:  [[REGA:%.+]] = addrspacecast i8 addrspace(1)* %MemRef_sum_0__phi to float*
-; KERNEL-IR:  [[REGB:%.+]] = load float, float* %sum.0.phiops
-; KERNEL-IR:  store float [[REGB]], float* [[REGA]]
+; KERNEL-IR: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_1(ptr addrspace(1) %MemRef_sum_0__phi)
+; KERNEL-IR:  store float 0.000000e+00, ptr %sum.0.phiops
+; KERNEL-IR:  [[REGA:%.+]] = addrspacecast ptr addrspace(1) %MemRef_sum_0__phi to ptr
+; KERNEL-IR:  [[REGB:%.+]] = load float, ptr %sum.0.phiops
+; KERNEL-IR:  store float [[REGB]], ptr [[REGA]]
 
-; KERNEL-IR: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_2(i8 addrspace(1)* %MemRef_A, i8 addrspace(1)* %MemRef_sum_0__phi, i8 addrspace(1)* %MemRef_sum_0)
+; KERNEL-IR: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_2(ptr addrspace(1) %MemRef_A, ptr addrspace(1) %MemRef_sum_0__phi, ptr addrspace(1) %MemRef_sum_0)
 
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @.str = private unnamed_addr constant [4 x i8] c"%f\0A\00", align 1
 
-define float @foo(float* %A) {
+define float @foo(ptr %A) {
 bb:
   br label %bb3
 
@@ -103,8 +103,8 @@ bb3:                                              ; preds = %bb6, %bb
 
 bb4:                                              ; preds = %bb3
   %tmp = sitofp i64 %i.0 to float
-  %tmp5 = getelementptr inbounds float, float* %A, i64 %i.0
-  store float %tmp, float* %tmp5, align 4
+  %tmp5 = getelementptr inbounds float, ptr %A, i64 %i.0
+  store float %tmp, ptr %tmp5, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb4
@@ -121,10 +121,10 @@ bb9:                                              ; preds = %bb15, %bb8
 
 bb10:                                             ; preds = %bb9
   %tmp11 = sitofp i64 %i1.0 to float
-  %tmp12 = getelementptr inbounds float, float* %A, i64 %i1.0
-  %tmp13 = load float, float* %tmp12, align 4
+  %tmp12 = getelementptr inbounds float, ptr %A, i64 %i1.0
+  %tmp13 = load float, ptr %tmp12, align 4
   %tmp14 = fadd float %tmp13, %tmp11
-  store float %tmp14, float* %tmp12, align 4
+  store float %tmp14, ptr %tmp12, align 4
   br label %bb15
 
 bb15:                                             ; preds = %bb10
@@ -144,8 +144,8 @@ bb19:                                             ; preds = %bb18
   br label %bb20
 
 bb20:                                             ; preds = %bb19
-  %tmp21 = getelementptr inbounds float, float* %A, i64 %i2.0
-  %tmp22 = load float, float* %tmp21, align 4
+  %tmp21 = getelementptr inbounds float, ptr %A, i64 %i2.0
+  %tmp22 = load float, ptr %tmp21, align 4
   %tmp23 = fadd float %sum.0, %tmp22
   %tmp24 = add nuw nsw i64 %i2.0, 1
   br label %bb18
@@ -158,12 +158,11 @@ bb25:                                             ; preds = %bb18
 define i32 @main() {
 bb:
   %A = alloca [32 x float], align 16
-  %tmp = getelementptr inbounds [32 x float], [32 x float]* %A, i64 0, i64 0
-  %tmp1 = call float @foo(float* %tmp)
+  %tmp1 = call float @foo(ptr %A)
   %tmp2 = fpext float %tmp1 to double
-  %tmp3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %tmp2) #2
+  %tmp3 = call i32 (ptr, ...) @printf(ptr @.str, double %tmp2) #2
   ret i32 0
 }
 
-declare i32 @printf(i8*, ...) #1
+declare i32 @printf(ptr, ...) #1
 

diff  --git a/polly/test/GPGPU/non-zero-array-offset.ll b/polly/test/GPGPU/non-zero-array-offset.ll
index 9ad68ae0ba90c..f18f6828a47fe 100644
--- a/polly/test/GPGPU/non-zero-array-offset.ll
+++ b/polly/test/GPGPU/non-zero-array-offset.ll
@@ -32,16 +32,13 @@
 ; CODE: # kernel1
 ; CODE-NEXT: Stmt_bb11(t0);
 
-; IR:       %p_dev_array_MemRef_B = call i8* @polly_allocateMemoryForDevice(i64 32)
-; IR-NEXT:  %p_dev_array_MemRef_A = call i8* @polly_allocateMemoryForDevice(i64 32)
-; IR-NEXT:  [[REG0:%.+]] = getelementptr float, float* %B, i64 8
-; IR-NEXT:  [[REG1:%.+]] = bitcast float* [[REG0]] to i8*
-; IR-NEXT:  call void @polly_copyFromHostToDevice(i8* [[REG1]], i8* %p_dev_array_MemRef_B, i64 32)
+; IR:       %p_dev_array_MemRef_B = call ptr @polly_allocateMemoryForDevice(i64 32)
+; IR-NEXT:  %p_dev_array_MemRef_A = call ptr @polly_allocateMemoryForDevice(i64 32)
+; IR-NEXT:  [[REG0:%.+]] = getelementptr float, ptr %B, i64 8
+; IR-NEXT:  call void @polly_copyFromHostToDevice(ptr [[REG0]], ptr %p_dev_array_MemRef_B, i64 32)
 
-; IR:      [[REGA:%.+]] = call i8* @polly_getDevicePtr(i8* %p_dev_array_MemRef_B)
-; IR-NEXT: [[REGB:%.+]]  = bitcast i8* [[REGA]] to float*
-; IR-NEXT: [[REGC:%.+]]  = getelementptr float, float* [[REGB]], i64 -8
-; IR-NEXT: [[REGD:%.+]]  = bitcast float* [[REGC]] to i8*
+; IR:      [[REGA:%.+]] = call ptr @polly_getDevicePtr(ptr %p_dev_array_MemRef_B)
+; IR-NEXT: [[REGC:%.+]]  = getelementptr float, ptr [[REGA]], i64 -8
 
 ;    void foo(float A[], float B[]) {
 ;      for (long i = 0; i < 8; i++)
@@ -74,7 +71,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, float* %B) {
+define void @foo(ptr %A, ptr %B) {
 bb:
   br label %bb2
 
@@ -85,10 +82,10 @@ bb2:                                              ; preds = %bb7, %bb
 
 bb3:                                              ; preds = %bb2
   %tmp = add nuw nsw i64 %i.0, 8
-  %tmp4 = getelementptr inbounds float, float* %B, i64 %tmp
-  %tmp5 = load float, float* %tmp4, align 4
+  %tmp4 = getelementptr inbounds float, ptr %B, i64 %tmp
+  %tmp5 = load float, ptr %tmp4, align 4
   %tmp6 = fmul float %tmp5, 4.000000e+00
-  store float %tmp6, float* %tmp4, align 4
+  store float %tmp6, ptr %tmp4, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb3
@@ -104,10 +101,10 @@ bb10:                                             ; preds = %bb15, %bb9
   br i1 %exitcond, label %bb11, label %bb17
 
 bb11:                                             ; preds = %bb10
-  %tmp12 = getelementptr inbounds float, float* %A, i64 %i1.0
-  %tmp13 = load float, float* %tmp12, align 4
+  %tmp12 = getelementptr inbounds float, ptr %A, i64 %i1.0
+  %tmp13 = load float, ptr %tmp12, align 4
   %tmp14 = fmul float %tmp13, 1.200000e+01
-  store float %tmp14, float* %tmp12, align 4
+  store float %tmp14, ptr %tmp12, align 4
   br label %bb15
 
 bb15:                                             ; preds = %bb11

diff  --git a/polly/test/GPGPU/only-part-of-array-modified.ll b/polly/test/GPGPU/only-part-of-array-modified.ll
index 241a3b143b62d..abc380badfb6d 100644
--- a/polly/test/GPGPU/only-part-of-array-modified.ll
+++ b/polly/test/GPGPU/only-part-of-array-modified.ll
@@ -14,7 +14,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, float* %B) {
+define void @foo(ptr %A, ptr %B) {
 bb:
   br label %bb1
 
@@ -24,13 +24,11 @@ bb1:                                              ; preds = %bb8, %bb
   br i1 %exitcond, label %bb2, label %bb10
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds float, float* %B, i64 %i.0
-  %tmp3 = bitcast float* %tmp to i32*
-  %tmp4 = load i32, i32* %tmp3, align 4
+  %tmp = getelementptr inbounds float, ptr %B, i64 %i.0
+  %tmp4 = load i32, ptr %tmp, align 4
   %tmp5 = shl nsw i64 %i.0, 1
-  %tmp6 = getelementptr inbounds float, float* %A, i64 %tmp5
-  %tmp7 = bitcast float* %tmp6 to i32*
-  store i32 %tmp4, i32* %tmp7, align 4
+  %tmp6 = getelementptr inbounds float, ptr %A, i64 %tmp5
+  store i32 %tmp4, ptr %tmp6, align 4
   br label %bb8
 
 bb8:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/parametric-loop-bound.ll b/polly/test/GPGPU/parametric-loop-bound.ll
index 610fc401181d2..e436bd663a4a4 100644
--- a/polly/test/GPGPU/parametric-loop-bound.ll
+++ b/polly/test/GPGPU/parametric-loop-bound.ll
@@ -31,14 +31,13 @@
 ; CODE-NEXT:   if (n >= 32 * b0 + t0 + 1048576 * c0 + 1)
 ; CODE-NEXT:     Stmt_bb2(32 * b0 + t0 + 1048576 * c0);
 
-; IR: store i64 %n, i64* %polly_launch_0_param_1
-; IR-NEXT: [[REGA:%.+]] = getelementptr [2 x i8*], [2 x i8*]* %polly_launch_0_params, i64 0, i64 1
-; IR-NEXT: [[REGB:%.+]] = bitcast i64* %polly_launch_0_param_1 to i8*
-; IR-NEXT: store i8* [[REGB]], i8** [[REGA]]
+; IR: store i64 %n, ptr %polly_launch_0_param_1
+; IR-NEXT: [[REGA:%.+]] = getelementptr [2 x ptr], ptr %polly_launch_0_params, i64 0, i64 1
+; IR-NEXT: store ptr %polly_launch_0_param_1, ptr [[REGA]]
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64* %A, i64 %n) {
+define void @foo(ptr %A, i64 %n) {
 bb:
   br label %bb1
 
@@ -48,10 +47,10 @@ bb1:                                              ; preds = %bb6, %bb
   br i1 %tmp, label %bb2, label %bb8
 
 bb2:                                              ; preds = %bb1
-  %tmp3 = getelementptr inbounds i64, i64* %A, i64 %i.0
-  %tmp4 = load i64, i64* %tmp3, align 8
+  %tmp3 = getelementptr inbounds i64, ptr %A, i64 %i.0
+  %tmp4 = load i64, ptr %tmp3, align 8
   %tmp5 = add nsw i64 %tmp4, 100
-  store i64 %tmp5, i64* %tmp3, align 8
+  store i64 %tmp5, ptr %tmp3, align 8
   br label %bb6
 
 bb6:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/partial_writes.ll b/polly/test/GPGPU/partial_writes.ll
index 3630409afba92..c3df624df7ac1 100644
--- a/polly/test/GPGPU/partial_writes.ll
+++ b/polly/test/GPGPU/partial_writes.ll
@@ -11,20 +11,19 @@ target triple = "x86_64-unknown-linux-gnu"
 ; Function Attrs: nounwind uwtable
 define void @partial_writes() {
 bb:
-  %tmp = tail call i8* @wibble() #2
-  %tmp1 = bitcast i8* %tmp to [1200 x double]*
+  %tmp = tail call ptr @wibble() #2
   br label %bb2
 
 bb2:                                              ; preds = %bb11, %bb
   %tmp3 = phi i64 [ 0, %bb ], [ %tmp12, %bb11 ]
-  %tmp4 = getelementptr inbounds [1200 x double], [1200 x double]* %tmp1, i64 0, i64 %tmp3
-  %tmp5 = load double, double* %tmp4, align 8, !tbaa !1
+  %tmp4 = getelementptr inbounds [1200 x double], ptr %tmp, i64 0, i64 %tmp3
+  %tmp5 = load double, ptr %tmp4, align 8, !tbaa !1
   br label %bb6
 
 bb6:                                              ; preds = %bb6, %bb2
   %tmp7 = phi double [ undef, %bb2 ], [ undef, %bb6 ]
   %tmp8 = phi i64 [ 0, %bb2 ], [ %tmp9, %bb6 ]
-  store double undef, double* %tmp4, align 8, !tbaa !1
+  store double undef, ptr %tmp4, align 8, !tbaa !1
   %tmp9 = add nuw nsw i64 %tmp8, 1
   %tmp10 = icmp eq i64 %tmp9, 900
   br i1 %tmp10, label %bb11, label %bb6
@@ -38,7 +37,7 @@ bb14:                                             ; preds = %bb11
   ret void
 }
 
-declare i8* @wibble()
+declare ptr @wibble()
 
 
 !llvm.ident = !{!0}

diff  --git a/polly/test/GPGPU/privatization-simple.ll b/polly/test/GPGPU/privatization-simple.ll
index cfdf4c3d6fa59..c715b8e77b677 100644
--- a/polly/test/GPGPU/privatization-simple.ll
+++ b/polly/test/GPGPU/privatization-simple.ll
@@ -9,7 +9,7 @@
 
 ; Check that kernel launch is generated in host IR.
 ; the declare would not be generated unless a call to a kernel exists.
-; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
+; HOST-IR: declare void @polly_launchKernel(ptr, i32, i32, i32, i32, i32, ptr)
 
 ; void f(int A[], int B[], int control, int C[]) {
 ;     int x;
@@ -25,7 +25,7 @@
 
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %B, i32 %control, i32* %C) {
+define void @f(ptr %A, ptr %B, i32 %control, ptr %C) {
 entry:
   br label %entry.split
 
@@ -38,17 +38,17 @@ for.body:                                         ; preds = %entry.split, %if.en
   br i1 %tobool, label %if.end, label %if.then
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %C, i64 %indvars.iv
-  %tmp4 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %C, i64 %indvars.iv
+  %tmp4 = load i32, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %for.body, %if.then
   %x.0 = phi i32 [ %tmp4, %if.then ], [ 0, %for.body ]
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp8 = load i32, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp8 = load i32, ptr %arrayidx2, align 4
   %mul = mul nsw i32 %tmp8, %x.0
-  %arrayidx4 = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  store i32 %mul, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  store i32 %mul, ptr %arrayidx4, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1000
   br i1 %exitcond, label %for.body, label %for.end

diff  --git a/polly/test/GPGPU/privatization.ll b/polly/test/GPGPU/privatization.ll
index 91eb77fe5ce07..fbb291575146c 100644
--- a/polly/test/GPGPU/privatization.ll
+++ b/polly/test/GPGPU/privatization.ll
@@ -10,7 +10,7 @@
 
 ; Check that kernel launch is generated in host IR.
 ; the declare would not be generated unless a call to a kernel exists.
-; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
+; HOST-IR: declare void @polly_launchKernel(ptr, i32, i32, i32, i32, i32, ptr)
 
 ;
 ;
@@ -29,7 +29,7 @@
 ;
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @checkPrivatization(i32* %A, i32* %B, i32* %C, i32 %control) {
+define void @checkPrivatization(ptr %A, ptr %B, ptr %C, i32 %control) {
 entry:
   br label %entry.split
 
@@ -42,17 +42,17 @@ for.body:                                         ; preds = %entry.split, %if.en
   br i1 %tobool, label %if.end, label %if.then
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %C, i64 %indvars.iv
-  %tmp4 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %C, i64 %indvars.iv
+  %tmp4 = load i32, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %for.body, %if.then
   %x.0 = phi i32 [ %tmp4, %if.then ], [ 0, %for.body ]
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp9 = load i32, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp9 = load i32, ptr %arrayidx2, align 4
   %mul = mul nsw i32 %tmp9, %x.0
-  %arrayidx4 = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  store i32 %mul, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  store i32 %mul, ptr %arrayidx4, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1000
   br i1 %exitcond, label %for.body, label %for.end

diff  --git a/polly/test/GPGPU/region-stmt.ll b/polly/test/GPGPU/region-stmt.ll
index 990a3951cd5c1..8e392fb300626 100644
--- a/polly/test/GPGPU/region-stmt.ll
+++ b/polly/test/GPGPU/region-stmt.ll
@@ -36,7 +36,7 @@
 source_filename = "/tmp/test.c"
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, float* %B) {
+define void @foo(ptr %A, ptr %B) {
 entry:
   br label %for.cond
 
@@ -46,27 +46,27 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp = load float, ptr %arrayidx, align 4
   %cmp1 = fcmp oeq float %tmp, 4.200000e+01
   br i1 %cmp1, label %if.then, label %if.else
 
 if.then:                                          ; preds = %for.body
   %mul = shl nsw i64 %i.0, 1
   %conv = sitofp i64 %mul to float
-  %arrayidx2 = getelementptr inbounds float, float* %B, i64 %i.0
-  %tmp1 = load float, float* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds float, ptr %B, i64 %i.0
+  %tmp1 = load float, ptr %arrayidx2, align 4
   %add = fadd float %tmp1, %conv
-  store float %add, float* %arrayidx2, align 4
+  store float %add, ptr %arrayidx2, align 4
   br label %if.end
 
 if.else:                                          ; preds = %for.body
   %mul3 = shl nsw i64 %i.0, 2
   %conv4 = sitofp i64 %mul3 to float
-  %arrayidx5 = getelementptr inbounds float, float* %B, i64 %i.0
-  %tmp2 = load float, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds float, ptr %B, i64 %i.0
+  %tmp2 = load float, ptr %arrayidx5, align 4
   %add6 = fadd float %tmp2, %conv4
-  store float %add6, float* %arrayidx5, align 4
+  store float %add6, ptr %arrayidx5, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/polly/test/GPGPU/remove-dead-instructions-in-stmt-2.ll b/polly/test/GPGPU/remove-dead-instructions-in-stmt-2.ll
index fba959c9833ab..326236cf92fde 100644
--- a/polly/test/GPGPU/remove-dead-instructions-in-stmt-2.ll
+++ b/polly/test/GPGPU/remove-dead-instructions-in-stmt-2.ll
@@ -7,10 +7,10 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-; KERNEL-IR: store i32 0, i32 addrspace(1)* %polly.access.MemRef_sum_c, align 4
+; KERNEL-IR: store i32 0, ptr addrspace(1) %polly.access.MemRef_sum_c, align 4
 ; KERNEL-IR-NEXT: br label %polly.merge
 
-define void @kernel_dynprog([50 x [50 x i32]]* %sum_c) {
+define void @kernel_dynprog(ptr %sum_c) {
 entry:
   br label %for.cond1.preheader
 
@@ -26,8 +26,8 @@ for.body3:                                        ; preds = %for.cond1.loopexit,
   %indvars.iv55 = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next56, %for.cond1.loopexit ]
   %indvars.iv48 = phi i64 [ 1, %for.cond1.preheader ], [ %indvars.iv.next49, %for.cond1.loopexit ]
   %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 1
-  %arrayidx10 = getelementptr inbounds [50 x [50 x i32]], [50 x [50 x i32]]* %sum_c, i64 %indvars.iv55, i64 %indvars.iv48, i64 %indvars.iv55
-  store i32 0, i32* %arrayidx10, align 4
+  %arrayidx10 = getelementptr inbounds [50 x [50 x i32]], ptr %sum_c, i64 %indvars.iv55, i64 %indvars.iv48, i64 %indvars.iv55
+  store i32 0, ptr %arrayidx10, align 4
   %cmp1334 = icmp slt i64 %indvars.iv.next56, %indvars.iv48
   br label %for.end
 

diff  --git a/polly/test/GPGPU/remove-dead-instructions-in-stmt.ll b/polly/test/GPGPU/remove-dead-instructions-in-stmt.ll
index 9a0a1cdd903b7..2024f006c53af 100644
--- a/polly/test/GPGPU/remove-dead-instructions-in-stmt.ll
+++ b/polly/test/GPGPU/remove-dead-instructions-in-stmt.ll
@@ -10,13 +10,13 @@
 ; condition. This code referred to CPU registers and consequently resulted
 ; in invalid bitcode.
 
-; KERNEL-IR: store i32 0, i32 addrspace(1)* %polly.access.MemRef_sum_c, align 4
+; KERNEL-IR: store i32 0, ptr addrspace(1) %polly.access.MemRef_sum_c, align 4
 ; KERNEL-IR-NEXT: br label %polly.merge
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @kernel_dynprog([50 x [50 x i32]]* %sum_c) {
+define void @kernel_dynprog(ptr %sum_c) {
 entry:
   br label %for.cond1.preheader
 
@@ -36,8 +36,8 @@ for.body3:                                        ; preds = %for.cond1.loopexit,
 
 for.body6:                                        ; preds = %for.end, %for.body3
   %indvars.iv50 = phi i64 [ 0, %for.body3 ], [ %indvars.iv.next51, %for.end ]
-  %arrayidx10 = getelementptr inbounds [50 x [50 x i32]], [50 x [50 x i32]]* %sum_c, i64 %indvars.iv55, i64 %indvars.iv50, i64 %indvars.iv55
-  store i32 0, i32* %arrayidx10, align 4
+  %arrayidx10 = getelementptr inbounds [50 x [50 x i32]], ptr %sum_c, i64 %indvars.iv55, i64 %indvars.iv50, i64 %indvars.iv55
+  store i32 0, ptr %arrayidx10, align 4
   %cmp1334 = icmp slt i64 %indvars.iv.next56, %indvars.iv50
   br i1 %cmp1334, label %for.body14.lr.ph, label %for.end
 
@@ -45,7 +45,7 @@ for.body14.lr.ph:                                 ; preds = %for.body6
   br label %for.body14
 
 for.body14:                                       ; preds = %for.body14, %for.body14.lr.ph
-  %arrayidx32 = getelementptr inbounds [50 x [50 x i32]], [50 x [50 x i32]]* %sum_c, i64 %indvars.iv55, i64 %indvars.iv50, i64 0
+  %arrayidx32 = getelementptr inbounds [50 x [50 x i32]], ptr %sum_c, i64 %indvars.iv55, i64 %indvars.iv50, i64 0
   br i1 false, label %for.body14, label %for.cond12.for.end_crit_edge
 
 for.cond12.for.end_crit_edge:                     ; preds = %for.body14

diff  --git a/polly/test/GPGPU/run-time-check.ll b/polly/test/GPGPU/run-time-check.ll
index eb20867e79ec6..3b04c3e015935 100644
--- a/polly/test/GPGPU/run-time-check.ll
+++ b/polly/test/GPGPU/run-time-check.ll
@@ -14,7 +14,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n, [32 x float]* %A) {
+define void @foo(i64 %n, ptr %A) {
 bb:
   br label %bb1
 
@@ -34,12 +34,12 @@ bb3:                                              ; preds = %bb12, %bb2
 bb4:                                              ; preds = %bb3
   %tmp5 = add nuw nsw i64 %j.0, 1
   %tmp6 = add nuw nsw i64 %i.0, 1
-  %tmp7 = getelementptr inbounds [32 x float], [32 x float]* %A, i64 %tmp6, i64 %tmp5
-  %tmp8 = load float, float* %tmp7, align 4
-  %tmp9 = getelementptr inbounds [32 x float], [32 x float]* %A, i64 %i.0, i64 %j.0
-  %tmp10 = load float, float* %tmp9, align 4
+  %tmp7 = getelementptr inbounds [32 x float], ptr %A, i64 %tmp6, i64 %tmp5
+  %tmp8 = load float, ptr %tmp7, align 4
+  %tmp9 = getelementptr inbounds [32 x float], ptr %A, i64 %i.0, i64 %j.0
+  %tmp10 = load float, ptr %tmp9, align 4
   %tmp11 = fadd float %tmp10, %tmp8
-  store float %tmp11, float* %tmp9, align 4
+  store float %tmp11, ptr %tmp9, align 4
   br label %bb12
 
 bb12:                                             ; preds = %bb4

diff  --git a/polly/test/GPGPU/scalar-param-and-value-32-bit.ll b/polly/test/GPGPU/scalar-param-and-value-32-bit.ll
index 504f5e0b90cad..0313d64e976cd 100644
--- a/polly/test/GPGPU/scalar-param-and-value-32-bit.ll
+++ b/polly/test/GPGPU/scalar-param-and-value-32-bit.ll
@@ -11,9 +11,9 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-; CHECK: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_A, i32 %n)
+; CHECK: define ptx_kernel void @FUNC_foo_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_A, i32 %n)
 
-define void @foo(float* %A, i32 %n) {
+define void @foo(ptr %A, i32 %n) {
 bb:
   br label %bb1
 
@@ -26,10 +26,10 @@ bb1:                                              ; preds = %bb9, %bb
 bb3:                                              ; preds = %bb1
   %tmp4 = sext i32 %n to i64
   %tmp5 = add nsw i64 %j.0, %tmp4
-  %tmp6 = getelementptr inbounds float, float* %A, i64 %tmp5
-  %tmp7 = load float, float* %tmp6, align 4
+  %tmp6 = getelementptr inbounds float, ptr %A, i64 %tmp5
+  %tmp7 = load float, ptr %tmp6, align 4
   %tmp8 = fadd float %tmp7, 4.200000e+01
-  store float %tmp8, float* %tmp6, align 4
+  store float %tmp8, ptr %tmp6, align 4
   br label %bb9
 
 bb9:                                              ; preds = %bb3

diff  --git a/polly/test/GPGPU/scalar-param-and-value-use.ll b/polly/test/GPGPU/scalar-param-and-value-use.ll
index 1884232442212..0301d88e16ac3 100644
--- a/polly/test/GPGPU/scalar-param-and-value-use.ll
+++ b/polly/test/GPGPU/scalar-param-and-value-use.ll
@@ -19,7 +19,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; IR: %polly.access.mul.MemRef_A = mul nsw i64 {{.*}}, %n
 
-define void @foo(i64 %n, float* %A) {
+define void @foo(i64 %n, ptr %A) {
 bb:
   br label %bb2
 
@@ -40,15 +40,15 @@ bb5:                                              ; preds = %bb4
   %tmp = add nuw nsw i64 %j.0, 1
   %tmp6 = add nuw nsw i64 %i.0, 1
   %tmp7 = mul nsw i64 %tmp6, %n
-  %tmp8 = getelementptr inbounds float, float* %A, i64 %tmp7
-  %tmp9 = getelementptr inbounds float, float* %tmp8, i64 %tmp
-  %tmp10 = load float, float* %tmp9, align 4
+  %tmp8 = getelementptr inbounds float, ptr %A, i64 %tmp7
+  %tmp9 = getelementptr inbounds float, ptr %tmp8, i64 %tmp
+  %tmp10 = load float, ptr %tmp9, align 4
   %tmp11 = mul nsw i64 %i.0, %n
-  %tmp12 = getelementptr inbounds float, float* %A, i64 %tmp11
-  %tmp13 = getelementptr inbounds float, float* %tmp12, i64 %j.0
-  %tmp14 = load float, float* %tmp13, align 4
+  %tmp12 = getelementptr inbounds float, ptr %A, i64 %tmp11
+  %tmp13 = getelementptr inbounds float, ptr %tmp12, i64 %j.0
+  %tmp14 = load float, ptr %tmp13, align 4
   %tmp15 = fadd float %tmp14, %tmp10
-  store float %tmp15, float* %tmp13, align 4
+  store float %tmp15, ptr %tmp13, align 4
   br label %bb16
 
 bb16:                                             ; preds = %bb5

diff  --git a/polly/test/GPGPU/scalar-parameter-fp128.ll b/polly/test/GPGPU/scalar-parameter-fp128.ll
index f52c322370077..f20a809c7c83b 100644
--- a/polly/test/GPGPU/scalar-parameter-fp128.ll
+++ b/polly/test/GPGPU/scalar-parameter-fp128.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @fp128(fp128* %A, fp128 %b) {
+define void @fp128(ptr %A, fp128 %b) {
 bb:
   br label %bb1
 
@@ -23,10 +23,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds fp128, fp128* %A, i64 %i.0
-  %tmp3 = load fp128, fp128* %tmp, align 4
+  %tmp = getelementptr inbounds fp128, ptr %A, i64 %i.0
+  %tmp3 = load fp128, ptr %tmp, align 4
   %tmp4 = fadd fp128 %tmp3, %b
-  store fp128 %tmp4, fp128* %tmp, align 4
+  store fp128 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/scalar-parameter-half.ll b/polly/test/GPGPU/scalar-parameter-half.ll
index 6ed9876e21cce..1270962568124 100644
--- a/polly/test/GPGPU/scalar-parameter-half.ll
+++ b/polly/test/GPGPU/scalar-parameter-half.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @half(half* %A, half %b) {
+define void @half(ptr %A, half %b) {
 bb:
   br label %bb1
 
@@ -19,10 +19,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds half, half* %A, i64 %i.0
-  %tmp3 = load half, half* %tmp, align 4
+  %tmp = getelementptr inbounds half, ptr %A, i64 %i.0
+  %tmp3 = load half, ptr %tmp, align 4
   %tmp4 = fadd half %tmp3, %b
-  store half %tmp4, half* %tmp, align 4
+  store half %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/scalar-parameter-i120.ll b/polly/test/GPGPU/scalar-parameter-i120.ll
index 5599c711919c5..06fb46dd917ed 100644
--- a/polly/test/GPGPU/scalar-parameter-i120.ll
+++ b/polly/test/GPGPU/scalar-parameter-i120.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @i120(i120* %A, i120 %b) {
+define void @i120(ptr %A, i120 %b) {
 bb:
   br label %bb1
 
@@ -23,10 +23,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i120, i120* %A, i120 %i.0
-  %tmp3 = load i120, i120* %tmp, align 4
+  %tmp = getelementptr inbounds i120, ptr %A, i120 %i.0
+  %tmp3 = load i120, ptr %tmp, align 4
   %tmp4 = add i120 %tmp3, %b
-  store i120 %tmp4, i120* %tmp, align 4
+  store i120 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/scalar-parameter-i128.ll b/polly/test/GPGPU/scalar-parameter-i128.ll
index 73951e8dbc28e..8e54cf4636d4e 100644
--- a/polly/test/GPGPU/scalar-parameter-i128.ll
+++ b/polly/test/GPGPU/scalar-parameter-i128.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @i128(i128* %A, i128 %b) {
+define void @i128(ptr %A, i128 %b) {
 bb:
   br label %bb1
 
@@ -19,10 +19,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i128, i128* %A, i128 %i.0
-  %tmp3 = load i128, i128* %tmp, align 4
+  %tmp = getelementptr inbounds i128, ptr %A, i128 %i.0
+  %tmp3 = load i128, ptr %tmp, align 4
   %tmp4 = add i128 %tmp3, %b
-  store i128 %tmp4, i128* %tmp, align 4
+  store i128 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/scalar-parameter-i3000.ll b/polly/test/GPGPU/scalar-parameter-i3000.ll
index 58e0c611d5f27..5c36b3fd62cb8 100644
--- a/polly/test/GPGPU/scalar-parameter-i3000.ll
+++ b/polly/test/GPGPU/scalar-parameter-i3000.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @i3000(i3000* %A, i3000 %b) {
+define void @i3000(ptr %A, i3000 %b) {
 bb:
   br label %bb1
 
@@ -23,10 +23,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i3000, i3000* %A, i3000 %i.0
-  %tmp3 = load i3000, i3000* %tmp, align 4
+  %tmp = getelementptr inbounds i3000, ptr %A, i3000 %i.0
+  %tmp3 = load i3000, ptr %tmp, align 4
   %tmp4 = add i3000 %tmp3, %b
-  store i3000 %tmp4, i3000* %tmp, align 4
+  store i3000 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/scalar-parameter-i80.ll b/polly/test/GPGPU/scalar-parameter-i80.ll
index 5f52072f3d27b..a672cd5c1cdc5 100644
--- a/polly/test/GPGPU/scalar-parameter-i80.ll
+++ b/polly/test/GPGPU/scalar-parameter-i80.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @i80(i80* %A, i80 %b) {
+define void @i80(ptr %A, i80 %b) {
 bb:
   br label %bb1
 
@@ -23,10 +23,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i80, i80* %A, i80 %i.0
-  %tmp3 = load i80, i80* %tmp, align 4
+  %tmp = getelementptr inbounds i80, ptr %A, i80 %i.0
+  %tmp3 = load i80, ptr %tmp, align 4
   %tmp4 = add i80 %tmp3, %b
-  store i80 %tmp4, i80* %tmp, align 4
+  store i80 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/scalar-parameter-ppc_fp128.ll b/polly/test/GPGPU/scalar-parameter-ppc_fp128.ll
index 7b402a6851769..11dfd68ede9b3 100644
--- a/polly/test/GPGPU/scalar-parameter-ppc_fp128.ll
+++ b/polly/test/GPGPU/scalar-parameter-ppc_fp128.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @ppc_fp128(ppc_fp128* %A, ppc_fp128 %b) {
+define void @ppc_fp128(ptr %A, ppc_fp128 %b) {
 bb:
   br label %bb1
 
@@ -23,10 +23,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds ppc_fp128, ppc_fp128* %A, i64 %i.0
-  %tmp3 = load ppc_fp128, ppc_fp128* %tmp, align 4
+  %tmp = getelementptr inbounds ppc_fp128, ptr %A, i64 %i.0
+  %tmp3 = load ppc_fp128, ptr %tmp, align 4
   %tmp4 = fadd ppc_fp128 %tmp3, %b
-  store ppc_fp128 %tmp4, ppc_fp128* %tmp, align 4
+  store ppc_fp128 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/scalar-parameter-x86_fp80.ll b/polly/test/GPGPU/scalar-parameter-x86_fp80.ll
index f52c322370077..f20a809c7c83b 100644
--- a/polly/test/GPGPU/scalar-parameter-x86_fp80.ll
+++ b/polly/test/GPGPU/scalar-parameter-x86_fp80.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @fp128(fp128* %A, fp128 %b) {
+define void @fp128(ptr %A, fp128 %b) {
 bb:
   br label %bb1
 
@@ -23,10 +23,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds fp128, fp128* %A, i64 %i.0
-  %tmp3 = load fp128, fp128* %tmp, align 4
+  %tmp = getelementptr inbounds fp128, ptr %A, i64 %i.0
+  %tmp3 = load fp128, ptr %tmp, align 4
   %tmp4 = fadd fp128 %tmp3, %b
-  store fp128 %tmp4, fp128* %tmp, align 4
+  store fp128 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/scalar-parameter.ll b/polly/test/GPGPU/scalar-parameter.ll
index 2013f00b44a6e..e416c93211d56 100644
--- a/polly/test/GPGPU/scalar-parameter.ll
+++ b/polly/test/GPGPU/scalar-parameter.ll
@@ -18,7 +18,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-; KERNEL: define ptx_kernel void @kernel_0(i8* %MemRef_A, float %MemRef_b)
+; KERNEL: define ptx_kernel void @kernel_0(ptr %MemRef_A, float %MemRef_b)
 
 ; CODE: Code
 ; CODE-NEXT: ====
@@ -43,7 +43,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ;        A[i] += b;
 ;    }
 ;
-define void @float(float* %A, float %b) {
+define void @float(ptr %A, float %b) {
 bb:
   br label %bb1
 
@@ -53,10 +53,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp3 = load float, float* %tmp, align 4
+  %tmp = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp3 = load float, ptr %tmp, align 4
   %tmp4 = fadd float %tmp3, %b
-  store float %tmp4, float* %tmp, align 4
+  store float %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2
@@ -67,10 +67,10 @@ bb7:                                              ; preds = %bb1
   ret void
 }
 
-; KERNEL: define ptx_kernel void @kernel_0(i8* %MemRef_A, double %MemRef_b)
+; KERNEL: define ptx_kernel void @kernel_0(ptr %MemRef_A, double %MemRef_b)
 ; KERNEL-NEXT: entry:
 ; KERNEL-NEXT:   %b.s2a = alloca double
-; KERNEL-NEXT:   store double %MemRef_b, double* %b.s2a
+; KERNEL-NEXT:   store double %MemRef_b, ptr %b.s2a
 
 ; CODE: Code
 ; CODE-NEXT: ====
@@ -95,7 +95,7 @@ bb7:                                              ; preds = %bb1
 ;        A[i] += b;
 ;    }
 ;
-define void @double(double* %A, double %b) {
+define void @double(ptr %A, double %b) {
 bb:
   br label %bb1
 
@@ -105,10 +105,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds double, double* %A, i64 %i.0
-  %tmp3 = load double, double* %tmp, align 4
+  %tmp = getelementptr inbounds double, ptr %A, i64 %i.0
+  %tmp3 = load double, ptr %tmp, align 4
   %tmp4 = fadd double %tmp3, %b
-  store double %tmp4, double* %tmp, align 4
+  store double %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2
@@ -142,7 +142,7 @@ bb7:                                              ; preds = %bb1
 ;        A[i] += b;
 ;    }
 ;
-define void @i1(i1* %A, i1 %b) {
+define void @i1(ptr %A, i1 %b) {
 bb:
   br label %bb1
 
@@ -152,10 +152,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i1, i1* %A, i64 %i.0
-  %tmp3 = load i1, i1* %tmp, align 4
+  %tmp = getelementptr inbounds i1, ptr %A, i64 %i.0
+  %tmp3 = load i1, ptr %tmp, align 4
   %tmp4 = add i1 %tmp3, %b
-  store i1 %tmp4, i1* %tmp, align 4
+  store i1 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2
@@ -189,7 +189,7 @@ bb7:                                              ; preds = %bb1
 ;        A[i] += b;
 ;    }
 ;
-define void @i3(i3* %A, i3 %b) {
+define void @i3(ptr %A, i3 %b) {
 bb:
   br label %bb1
 
@@ -199,10 +199,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i3, i3* %A, i64 %i.0
-  %tmp3 = load i3, i3* %tmp, align 4
+  %tmp = getelementptr inbounds i3, ptr %A, i64 %i.0
+  %tmp3 = load i3, ptr %tmp, align 4
   %tmp4 = add i3 %tmp3, %b
-  store i3 %tmp4, i3* %tmp, align 4
+  store i3 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2
@@ -236,7 +236,7 @@ bb7:                                              ; preds = %bb1
 ;        A[i] += b;
 ;    }
 ;
-define void @i8(i8* %A, i8 %b) {
+define void @i8(ptr %A, i8 %b) {
 bb:
   br label %bb1
 
@@ -246,10 +246,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i8, i8* %A, i64 %i.0
-  %tmp3 = load i8, i8* %tmp, align 4
+  %tmp = getelementptr inbounds i8, ptr %A, i64 %i.0
+  %tmp3 = load i8, ptr %tmp, align 4
   %tmp4 = add i8 %tmp3, %b
-  store i8 %tmp4, i8* %tmp, align 4
+  store i8 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2
@@ -262,14 +262,12 @@ bb7:                                              ; preds = %bb1
 
 ; IR-LABEL: @i8
 
-; IR: [[REGA:%.+]] = call i8* @polly_getDevicePtr(i8* %p_dev_array_MemRef_A)
-; IR-NEXT: [[REGB:%.+]] = getelementptr [2 x i8*], [2 x i8*]* %polly_launch_0_params, i64 0, i64 0
-; IR-NEXT: store i8* [[REGA:%.+]], i8** %polly_launch_0_param_0
-; IR-NEXT: [[REGC:%.+]] = bitcast i8** %polly_launch_0_param_0 to i8*
-; IR-NEXT: store i8* [[REGC]], i8** [[REGB]]
-; IR-NEXT: store i8 %b, i8* %polly_launch_0_param_1
-; IR-NEXT: [[REGD:%.+]] = getelementptr [2 x i8*], [2 x i8*]* %polly_launch_0_params, i64 0, i64 1
-; IR-NEXT: store i8* %polly_launch_0_param_1, i8** [[REGD]]
+; IR: [[REGA:%.+]] = call ptr @polly_getDevicePtr(ptr %p_dev_array_MemRef_A)
+; IR-NEXT: store ptr [[REGA:%.+]], ptr %polly_launch_0_param_0
+; IR-NEXT: store ptr %polly_launch_0_param_0, ptr %polly_launch_0_params
+; IR-NEXT: store i8 %b, ptr %polly_launch_0_param_1
+; IR-NEXT: [[REGD:%.+]] = getelementptr [2 x ptr], ptr %polly_launch_0_params, i64 0, i64 1
+; IR-NEXT: store ptr %polly_launch_0_param_1, ptr [[REGD]]
 
 ; CODE: Code
 ; CODE-NEXT: ====
@@ -294,7 +292,7 @@ bb7:                                              ; preds = %bb1
 ;        A[i] += b;
 ;    }
 ;
-define void @i32(i32* %A, i32 %b) {
+define void @i32(ptr %A, i32 %b) {
 bb:
   br label %bb1
 
@@ -304,10 +302,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %i.0
-  %tmp3 = load i32, i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %i.0
+  %tmp3 = load i32, ptr %tmp, align 4
   %tmp4 = add i32 %tmp3, %b
-  store i32 %tmp4, i32* %tmp, align 4
+  store i32 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2
@@ -341,7 +339,7 @@ bb7:                                              ; preds = %bb1
 ;        A[i] += b;
 ;    }
 ;
-define void @i60(i60* %A, i60 %b) {
+define void @i60(ptr %A, i60 %b) {
 bb:
   br label %bb1
 
@@ -351,10 +349,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i60, i60* %A, i64 %i.0
-  %tmp3 = load i60, i60* %tmp, align 4
+  %tmp = getelementptr inbounds i60, ptr %A, i64 %i.0
+  %tmp3 = load i60, ptr %tmp, align 4
   %tmp4 = add i60 %tmp3, %b
-  store i60 %tmp4, i60* %tmp, align 4
+  store i60 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2
@@ -388,7 +386,7 @@ bb7:                                              ; preds = %bb1
 ;        A[i] += b;
 ;    }
 ;
-define void @i64(i64* %A, i64 %b) {
+define void @i64(ptr %A, i64 %b) {
 bb:
   br label %bb1
 
@@ -398,10 +396,10 @@ bb1:                                              ; preds = %bb5, %bb
   br i1 %exitcond, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i64, i64* %A, i64 %i.0
-  %tmp3 = load i64, i64* %tmp, align 4
+  %tmp = getelementptr inbounds i64, ptr %A, i64 %i.0
+  %tmp3 = load i64, ptr %tmp, align 4
   %tmp4 = add i64 %tmp3, %b
-  store i64 %tmp4, i64* %tmp, align 4
+  store i64 %tmp4, ptr %tmp, align 4
   br label %bb5
 
 bb5:                                              ; preds = %bb2

diff  --git a/polly/test/GPGPU/scalar-writes-in-scop-requires-abort.ll b/polly/test/GPGPU/scalar-writes-in-scop-requires-abort.ll
index 4999cc4033218..31110437fdca5 100644
--- a/polly/test/GPGPU/scalar-writes-in-scop-requires-abort.ll
+++ b/polly/test/GPGPU/scalar-writes-in-scop-requires-abort.ll
@@ -39,16 +39,16 @@
 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
 target triple = "i386-apple-macosx10.12.0"
 
-define void @foo(float* %A, float* %p) {
+define void @foo(ptr %A, ptr %p) {
 entry:
   br label %loop
 
 loop:
   %indvar = phi i64 [0, %entry], [%indvar.next, %loop]
   %indvar.next = add i64 %indvar, 1
-  %invariant = load float, float* %p
-  %ptr = getelementptr float, float* %A, i64 %indvar
-  store float 42.0, float* %ptr
+  %invariant = load float, ptr %p
+  %ptr = getelementptr float, ptr %A, i64 %indvar
+  store float 42.0, ptr %ptr
   %cmp = icmp sle i64 %indvar, 1024
   br i1 %cmp, label %loop, label %loop2
 
@@ -56,7 +56,7 @@ loop2:
   %indvar2 = phi i64 [0, %loop], [%indvar2.next, %loop2]
   %indvar2f = phi float [%invariant, %loop], [%indvar2f, %loop2]
   %indvar2.next = add i64 %indvar2, 1
-  store float %indvar2f, float* %A
+  store float %indvar2f, ptr %A
   %cmp2 = icmp sle i64 %indvar2, 1024
   br i1 %cmp2, label %loop2, label %end
 

diff  --git a/polly/test/GPGPU/scheduler-timeout.ll b/polly/test/GPGPU/scheduler-timeout.ll
index bee4e21c0c40d..4a49c53d66c74 100644
--- a/polly/test/GPGPU/scheduler-timeout.ll
+++ b/polly/test/GPGPU/scheduler-timeout.ll
@@ -69,10 +69,10 @@ target triple = "x86_64-unknown-linux-gnu"
 
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start(i64, ptr nocapture) #0
 
 ; Function Attrs: nounwind uwtable
-define internal void @kernel_2mm(i32 %ni, i32 %nj, i32 %nk, i32 %nl, float %alpha, float %beta, [4096 x float]* %tmp, [4096 x float]* %A, [4096 x float]* %B, [4096 x float]* %C, [4096 x float]* %D) #1 {
+define internal void @kernel_2mm(i32 %ni, i32 %nj, i32 %nk, i32 %nl, float %alpha, float %beta, ptr %tmp, ptr %A, ptr %B, ptr %C, ptr %D) #1 {
 entry:
   br label %entry.split
 
@@ -88,22 +88,22 @@ for.cond31.preheader:                             ; preds = %for.inc28
 
 for.body6:                                        ; preds = %for.cond4.preheader, %for.inc25
   %indvars.iv16 = phi i64 [ 0, %for.cond4.preheader ], [ %indvars.iv.next17, %for.inc25 ]
-  %arrayidx8 = getelementptr inbounds [4096 x float], [4096 x float]* %tmp, i64 %indvars.iv19, i64 %indvars.iv16
-  store float 0.000000e+00, float* %arrayidx8, align 4, !tbaa !1
+  %arrayidx8 = getelementptr inbounds [4096 x float], ptr %tmp, i64 %indvars.iv19, i64 %indvars.iv16
+  store float 0.000000e+00, ptr %arrayidx8, align 4, !tbaa !1
   br label %for.body11
 
 for.body11:                                       ; preds = %for.body6, %for.body11
   %indvars.iv13 = phi i64 [ 0, %for.body6 ], [ %indvars.iv.next14, %for.body11 ]
-  %arrayidx15 = getelementptr inbounds [4096 x float], [4096 x float]* %A, i64 %indvars.iv19, i64 %indvars.iv13
-  %tmp22 = load float, float* %arrayidx15, align 4, !tbaa !1
+  %arrayidx15 = getelementptr inbounds [4096 x float], ptr %A, i64 %indvars.iv19, i64 %indvars.iv13
+  %tmp22 = load float, ptr %arrayidx15, align 4, !tbaa !1
   %mul = fmul float %tmp22, %alpha
-  %arrayidx19 = getelementptr inbounds [4096 x float], [4096 x float]* %B, i64 %indvars.iv13, i64 %indvars.iv16
-  %tmp23 = load float, float* %arrayidx19, align 4, !tbaa !1
+  %arrayidx19 = getelementptr inbounds [4096 x float], ptr %B, i64 %indvars.iv13, i64 %indvars.iv16
+  %tmp23 = load float, ptr %arrayidx19, align 4, !tbaa !1
   %mul20 = fmul float %mul, %tmp23
-  %arrayidx24 = getelementptr inbounds [4096 x float], [4096 x float]* %tmp, i64 %indvars.iv19, i64 %indvars.iv16
-  %tmp24 = load float, float* %arrayidx24, align 4, !tbaa !1
+  %arrayidx24 = getelementptr inbounds [4096 x float], ptr %tmp, i64 %indvars.iv19, i64 %indvars.iv16
+  %tmp24 = load float, ptr %arrayidx24, align 4, !tbaa !1
   %add = fadd float %tmp24, %mul20
-  store float %add, float* %arrayidx24, align 4, !tbaa !1
+  store float %add, ptr %arrayidx24, align 4, !tbaa !1
   %indvars.iv.next14 = add nuw nsw i64 %indvars.iv13, 1
   %exitcond15 = icmp ne i64 %indvars.iv.next14, 4096
   br i1 %exitcond15, label %for.body11, label %for.inc25
@@ -124,23 +124,23 @@ for.cond34.preheader:                             ; preds = %for.cond31.preheade
 
 for.body36:                                       ; preds = %for.cond34.preheader, %for.inc62
   %indvars.iv7 = phi i64 [ 0, %for.cond34.preheader ], [ %indvars.iv.next8, %for.inc62 ]
-  %arrayidx40 = getelementptr inbounds [4096 x float], [4096 x float]* %D, i64 %indvars.iv10, i64 %indvars.iv7
-  %tmp25 = load float, float* %arrayidx40, align 4, !tbaa !1
+  %arrayidx40 = getelementptr inbounds [4096 x float], ptr %D, i64 %indvars.iv10, i64 %indvars.iv7
+  %tmp25 = load float, ptr %arrayidx40, align 4, !tbaa !1
   %mul41 = fmul float %tmp25, %beta
-  store float %mul41, float* %arrayidx40, align 4, !tbaa !1
+  store float %mul41, ptr %arrayidx40, align 4, !tbaa !1
   br label %for.body44
 
 for.body44:                                       ; preds = %for.body36, %for.body44
   %indvars.iv = phi i64 [ 0, %for.body36 ], [ %indvars.iv.next, %for.body44 ]
-  %arrayidx48 = getelementptr inbounds [4096 x float], [4096 x float]* %tmp, i64 %indvars.iv10, i64 %indvars.iv
-  %tmp26 = load float, float* %arrayidx48, align 4, !tbaa !1
-  %arrayidx52 = getelementptr inbounds [4096 x float], [4096 x float]* %C, i64 %indvars.iv, i64 %indvars.iv7
-  %tmp27 = load float, float* %arrayidx52, align 4, !tbaa !1
+  %arrayidx48 = getelementptr inbounds [4096 x float], ptr %tmp, i64 %indvars.iv10, i64 %indvars.iv
+  %tmp26 = load float, ptr %arrayidx48, align 4, !tbaa !1
+  %arrayidx52 = getelementptr inbounds [4096 x float], ptr %C, i64 %indvars.iv, i64 %indvars.iv7
+  %tmp27 = load float, ptr %arrayidx52, align 4, !tbaa !1
   %mul53 = fmul float %tmp26, %tmp27
-  %arrayidx57 = getelementptr inbounds [4096 x float], [4096 x float]* %D, i64 %indvars.iv10, i64 %indvars.iv7
-  %tmp28 = load float, float* %arrayidx57, align 4, !tbaa !1
+  %arrayidx57 = getelementptr inbounds [4096 x float], ptr %D, i64 %indvars.iv10, i64 %indvars.iv7
+  %tmp28 = load float, ptr %arrayidx57, align 4, !tbaa !1
   %add58 = fadd float %tmp28, %mul53
-  store float %add58, float* %arrayidx57, align 4, !tbaa !1
+  store float %add58, ptr %arrayidx57, align 4, !tbaa !1
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 4096
   br i1 %exitcond, label %for.body44, label %for.inc62
@@ -160,7 +160,7 @@ for.end67:                                        ; preds = %for.inc65
 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end(i64, ptr nocapture) #0
 
 attributes #0 = { argmemonly nounwind }
 attributes #1 = { nounwind uwtable "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" "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/polly/test/GPGPU/shared-memory-scalar.ll b/polly/test/GPGPU/shared-memory-scalar.ll
index f28be873c6df9..cd2b1705a388f 100644
--- a/polly/test/GPGPU/shared-memory-scalar.ll
+++ b/polly/test/GPGPU/shared-memory-scalar.ll
@@ -25,7 +25,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @add(float* %A, float %alpha) {
+define void @add(ptr %A, float %alpha) {
 bb:
   br label %bb2
 
@@ -43,10 +43,10 @@ bb4:                                              ; preds = %bb8, %bb3
   br i1 %exitcond, label %bb5, label %bb10
 
 bb5:                                              ; preds = %bb4
-  %tmp = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp6 = load float, float* %tmp, align 4
+  %tmp = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp6 = load float, ptr %tmp, align 4
   %tmp7 = fadd float %tmp6, %alpha
-  store float %tmp7, float* %tmp, align 4
+  store float %tmp7, ptr %tmp, align 4
   br label %bb8
 
 bb8:                                              ; preds = %bb5

diff  --git a/polly/test/GPGPU/simple-managed-memory-rewrite.ll b/polly/test/GPGPU/simple-managed-memory-rewrite.ll
index 54969221ff457..d8c5b320e2b04 100644
--- a/polly/test/GPGPU/simple-managed-memory-rewrite.ll
+++ b/polly/test/GPGPU/simple-managed-memory-rewrite.ll
@@ -12,15 +12,14 @@
 ; SCOP: i32 MemRef_A[*];
 
 ; Check that we generate a constructor call for @A.toptr
-; HOST-IR: @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* {{.*}}, i8* bitcast (i32** @A.toptr to i8*) }]
+; HOST-IR: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr {{.*}}, ptr @A.toptr }]
 
 ; Check that we generate a constructor
 ; 4 bytes * 100 = 400
 ; HOST-IR: define void {{.*}}constructor() {
 ; HOST-IR-NEXT: entry:
-; HOST-IR-NEXT:   %mem.raw = call i8* @polly_mallocManaged(i64 400)
-; HOST-IR-NEXT:   %mem.typed = bitcast i8* %mem.raw to i32*
-; HOST-IR-NEXT:   store i32* %mem.typed, i32** @A.toptr
+; HOST-IR-NEXT:   %mem.raw = call ptr @polly_mallocManaged(i64 400)
+; HOST-IR-NEXT:   store ptr %mem.raw, ptr @A.toptr
 ; HOST-IR-NEXT:   ret void
 ; HOST-IR-NEXT: }
 
@@ -41,8 +40,8 @@ entry.split:                                      ; preds = %entry
 
 for.body:                                         ; preds = %entry.split, %for.body
   %indvars.iv1 = phi i64 [ 0, %entry.split ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds [100 x i32], [100 x i32]* @A, i64 0, i64 %indvars.iv1
-  store i32 42, i32* %arrayidx, align 4, !tbaa !3
+  %arrayidx = getelementptr inbounds [100 x i32], ptr @A, i64 0, i64 %indvars.iv1
+  store i32 42, ptr %arrayidx, align 4, !tbaa !3
   %indvars.iv.next = add nuw nsw i64 %indvars.iv1, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 100
   br i1 %exitcond, label %for.end, label %for.body
@@ -52,11 +51,11 @@ for.end:                                          ; preds = %for.body
 }
 
 ; 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: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #0
 
 attributes #0 = { argmemonly nounwind }
 

diff  --git a/polly/test/GPGPU/size-cast.ll b/polly/test/GPGPU/size-cast.ll
index d4f928ee9c1c9..5e2c85de42513 100644
--- a/polly/test/GPGPU/size-cast.ll
+++ b/polly/test/GPGPU/size-cast.ll
@@ -27,7 +27,7 @@
 ; CODE-NEXT:   if (arg >= 32 * b0 + t0 + 1048576 * c0 + 1)
 ; CODE-NEXT:     Stmt_bb6(0, 32 * b0 + t0 + 1048576 * c0);
 
-; IR-LABEL:  call i8* @polly_initContextCUDA()
+; IR-LABEL:  call ptr @polly_initContextCUDA()
 ; IR:        sext i32 %arg to i64
 ; IR-NEXT:   mul i64
 ; IR-NEXT:   @polly_allocateMemoryForDevice
@@ -35,7 +35,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @hoge(i32 %arg, i32 %arg1, [1000 x double]* %arg2, double* %arg3) {
+define void @hoge(i32 %arg, i32 %arg1, ptr %arg2, ptr %arg3) {
 bb:
   br label %bb4
 
@@ -47,10 +47,10 @@ bb5:                                              ; preds = %bb13
 
 bb6:                                              ; preds = %bb6, %bb4
   %tmp = phi i64 [ 0, %bb4 ], [ %tmp10, %bb6 ]
-  %tmp7 = getelementptr inbounds double, double* %arg3, i64 %tmp
-  %tmp8 = load double, double* %tmp7, align 8
-  %tmp9 = getelementptr inbounds [1000 x double], [1000 x double]* %arg2, i64 0, i64 %tmp
-  store double %tmp8, double* %tmp9, align 8
+  %tmp7 = getelementptr inbounds double, ptr %arg3, i64 %tmp
+  %tmp8 = load double, ptr %tmp7, align 8
+  %tmp9 = getelementptr inbounds [1000 x double], ptr %arg2, i64 0, i64 %tmp
+  store double %tmp8, ptr %tmp9, align 8
   %tmp10 = add nuw nsw i64 %tmp, 1
   %tmp11 = zext i32 %arg to i64
   %tmp12 = icmp ne i64 %tmp10, %tmp11

diff  --git a/polly/test/GPGPU/spir-typesize.ll b/polly/test/GPGPU/spir-typesize.ll
index 2e9459134555f..fce17c54e6e9a 100644
--- a/polly/test/GPGPU/spir-typesize.ll
+++ b/polly/test/GPGPU/spir-typesize.ll
@@ -15,7 +15,7 @@
 ; I32:      target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024"
 ; I32-NEXT: target triple = "spir-unknown-unknown"
 
-; I32-LABEL: define spir_kernel void @FUNC_double_parallel_loop_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_A) #0 !kernel_arg_addr_space !0 !kernel_arg_name !1 !kernel_arg_access_qual !1 !kernel_arg_type !1 !kernel_arg_type_qual !1 !kernel_arg_base_type !1 {
+; I32-LABEL: define spir_kernel void @FUNC_double_parallel_loop_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_A) #0 !kernel_arg_addr_space !0 !kernel_arg_name !1 !kernel_arg_access_qual !1 !kernel_arg_type !1 !kernel_arg_type_qual !1 !kernel_arg_base_type !1 {
 ; I32-NEXT: entry:
 ; I32-NEXT:   %0 = call i32 @__gen_ocl_get_group_id0()
 ; I32-NEXT:   %__gen_ocl_get_group_id0 = zext i32 %0 to i64
@@ -30,7 +30,7 @@
 ; I64:       target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024"
 ; I64-next:  target triple = "spir64-unknown-unknown"
 
-; I64-LABEL: define spir_kernel void @FUNC_double_parallel_loop_SCOP_0_KERNEL_0(i8 addrspace(1)* %MemRef_A) #0 !kernel_arg_addr_space !0 !kernel_arg_name !1 !kernel_arg_access_qual !1 !kernel_arg_type !1 !kernel_arg_type_qual !1 !kernel_arg_base_type !1 {
+; I64-LABEL: define spir_kernel void @FUNC_double_parallel_loop_SCOP_0_KERNEL_0(ptr addrspace(1) %MemRef_A) #0 !kernel_arg_addr_space !0 !kernel_arg_name !1 !kernel_arg_access_qual !1 !kernel_arg_type !1 !kernel_arg_type_qual !1 !kernel_arg_base_type !1 {
 ; I64-NEXT: entry:
 ; I64-NEXT:   %0 = call i64 @__gen_ocl_get_group_id0()
 ; I64-NEXT:   %1 = call i64 @__gen_ocl_get_group_id1()
@@ -48,7 +48,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @double_parallel_loop([1024 x float]* %A) {
+define void @double_parallel_loop(ptr %A) {
 bb:
   br label %bb2
 
@@ -68,10 +68,10 @@ bb4:                                              ; preds = %bb10, %bb3
 bb5:                                              ; preds = %bb4
   %tmp = mul nuw nsw i64 %i.0, %j.0
   %tmp6 = sitofp i64 %tmp to float
-  %tmp7 = getelementptr inbounds [1024 x float], [1024 x float]* %A, i64 %i.0, i64 %j.0
-  %tmp8 = load float, float* %tmp7, align 4
+  %tmp7 = getelementptr inbounds [1024 x float], ptr %A, i64 %i.0, i64 %j.0
+  %tmp8 = load float, ptr %tmp7, align 4
   %tmp9 = fadd float %tmp8, %tmp6
-  store float %tmp9, float* %tmp7, align 4
+  store float %tmp9, ptr %tmp7, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb5

diff  --git a/polly/test/GPGPU/unknown-fn-call-not-copied-into-kernel.ll b/polly/test/GPGPU/unknown-fn-call-not-copied-into-kernel.ll
index c06baf14d15e4..6fd14cbfbcd1b 100644
--- a/polly/test/GPGPU/unknown-fn-call-not-copied-into-kernel.ll
+++ b/polly/test/GPGPU/unknown-fn-call-not-copied-into-kernel.ll
@@ -29,7 +29,7 @@
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.11.0"
 
-define void @f([1000 x float]* %A, i32 %n, [1000 x float]* %B) {
+define void @f(ptr %A, i32 %n, ptr %B) {
 entry:
   br label %entry.split
 
@@ -50,13 +50,13 @@ for.body3.lr.ph:                                  ; preds = %for.cond1.preheader
 
 for.body3:                                        ; preds = %for.body3.lr.ph, %for.body3
   %indvars.iv = phi i64 [ 0, %for.body3.lr.ph ], [ %indvars.iv.next, %for.body3 ]
-  %arrayidx5 = getelementptr inbounds [1000 x float], [1000 x float]* %A, i64 %indvars.iv5, i64 %indvars.iv
-  %0 = load float, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds [1000 x float], ptr %A, i64 %indvars.iv5, i64 %indvars.iv
+  %0 = load float, ptr %arrayidx5, align 4
   %conv = fpext float %0 to double
   %1 = tail call double @extern.fn(double %conv)
   %conv6 = fptrunc double %1 to float
-  %arrayidx10 = getelementptr inbounds [1000 x float], [1000 x float]* %B, i64 %indvars.iv5, i64 %indvars.iv
-  store float %conv6, float* %arrayidx10, align 4
+  %arrayidx10 = getelementptr inbounds [1000 x float], ptr %B, i64 %indvars.iv5, i64 %indvars.iv
+  store float %conv6, ptr %arrayidx10, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %wide.trip.count = zext i32 %n to i64
   %exitcond = icmp ne i64 %indvars.iv.next, %wide.trip.count

diff  --git a/polly/test/GPGPU/untouched-arrays.ll b/polly/test/GPGPU/untouched-arrays.ll
index 82a83b44c33d6..5c7e0c7b543b9 100644
--- a/polly/test/GPGPU/untouched-arrays.ll
+++ b/polly/test/GPGPU/untouched-arrays.ll
@@ -109,43 +109,42 @@ bb25:                                             ; preds = %bb24
   br i1 undef, label %bb19, label %bb26
 
 bb26:                                             ; preds = %bb56, %bb25
-  %tmp = phi [9 x [152 x i32]]* [ undef, %bb56 ], [ bitcast (i32* getelementptr inbounds ([9 x [152 x i32]], [9 x [152 x i32]]* @global.1, i64 0, i64 0, i64 32) to [9 x [152 x i32]]*), %bb25 ]
+  %tmp = phi ptr [ undef, %bb56 ], [ getelementptr inbounds ([9 x [152 x i32]], ptr @global.1, i64 0, i64 0, i64 32), %bb25 ]
   br label %bb27
 
 bb27:                                             ; preds = %bb27, %bb26
   br i1 undef, label %bb27, label %bb28
 
 bb28:                                             ; preds = %bb27
-  %tmp29 = bitcast [9 x [152 x i32]]* %tmp to i32*
   br label %bb30
 
 bb30:                                             ; preds = %bb38, %bb28
   %tmp31 = phi i32 [ 3, %bb28 ], [ %tmp40, %bb38 ]
-  %tmp32 = phi i32* [ %tmp29, %bb28 ], [ %tmp39, %bb38 ]
+  %tmp32 = phi ptr [ %tmp, %bb28 ], [ %tmp39, %bb38 ]
   br label %bb33
 
 bb33:                                             ; preds = %bb33, %bb30
   %tmp34 = phi i32 [ 0, %bb30 ], [ %tmp37, %bb33 ]
-  %tmp35 = phi i32* [ %tmp32, %bb30 ], [ undef, %bb33 ]
-  %tmp36 = getelementptr inbounds i32, i32* %tmp35, i64 1
-  store i32 undef, i32* %tmp36, align 4, !tbaa !1
+  %tmp35 = phi ptr [ %tmp32, %bb30 ], [ undef, %bb33 ]
+  %tmp36 = getelementptr inbounds i32, ptr %tmp35, i64 1
+  store i32 undef, ptr %tmp36, align 4, !tbaa !1
   %tmp37 = add nuw nsw i32 %tmp34, 1
   br i1 false, label %bb33, label %bb38
 
 bb38:                                             ; preds = %bb33
-  %tmp39 = getelementptr i32, i32* %tmp32, i64 12
+  %tmp39 = getelementptr i32, ptr %tmp32, i64 12
   %tmp40 = add nuw nsw i32 %tmp31, 1
   %tmp41 = icmp ne i32 %tmp40, 13
   br i1 %tmp41, label %bb30, label %bb42
 
 bb42:                                             ; preds = %bb38
-  %tmp43 = getelementptr inbounds [9 x %struct.hoge], [9 x %struct.hoge]* @global, i64 0, i64 0, i32 3, i64 0
+  %tmp43 = getelementptr inbounds [9 x %struct.hoge], ptr @global, i64 0, i64 0, i32 3, i64 0
   br label %bb44
 
 bb44:                                             ; preds = %bb51, %bb42
   %tmp45 = phi i32 [ 0, %bb42 ], [ %tmp52, %bb51 ]
-  %tmp46 = phi i16* [ %tmp43, %bb42 ], [ undef, %bb51 ]
-  %tmp47 = load i16, i16* %tmp46, align 2, !tbaa !5
+  %tmp46 = phi ptr [ %tmp43, %bb42 ], [ undef, %bb51 ]
+  %tmp47 = load i16, ptr %tmp46, align 2, !tbaa !5
   br label %bb48
 
 bb48:                                             ; preds = %bb48, %bb44

diff  --git a/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll b/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll
index 7f8017b630ebd..00f18aebbcd5a 100644
--- a/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll
@@ -14,7 +14,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A) {
+define void @jd(ptr %A) {
 entry:
   br label %for.cond
 
@@ -24,8 +24,8 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond3, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv1
-  store i32 1, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv1
+  store i32 1, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -41,11 +41,11 @@ for.cond2:                                        ; preds = %for.inc9, %for.end
   br i1 %exitcond, label %for.body4, label %for.end11
 
 for.body4:                                        ; preds = %for.cond2
-  %arrayidx6 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx6, align 4
   %mul = shl nsw i32 %tmp, 1
-  %arrayidx8 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %mul, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %mul, ptr %arrayidx8, align 4
   br label %for.inc9
 
 for.inc9:                                         ; preds = %for.body4

diff  --git a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll
index 0878c2beff7ab..bcb35cb4b07c1 100644
--- a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll
@@ -23,8 +23,8 @@ loop.j:
   br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 
 loop.body:
-  %scevgep = getelementptr [1024 x [1024 x i32] ], [1024 x [1024 x i32] ]* @A, i64 0, i64 %j, i64 %i
-  store i32 1, i32* %scevgep
+  %scevgep = getelementptr [1024 x [1024 x i32] ], ptr @A, i64 0, i64 %j, i64 %i
+  store i32 1, ptr %scevgep
   br label %loop.j.backedge
 
 loop.j.backedge:

diff  --git a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll
index 8f347911f6c15..e2ff5d5756b13 100644
--- a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll
+++ b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll
@@ -24,8 +24,8 @@ loop.j:
   br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 
 loop.body:
-  %scevgep = getelementptr [1024 x [1024 x i32] ], [1024 x [1024 x i32] ]* @A, i64 0, i64 %j, i64 %i
-  store i32 1, i32* %scevgep
+  %scevgep = getelementptr [1024 x [1024 x i32] ], ptr @A, i64 0, i64 %j, i64 %i
+  store i32 1, ptr %scevgep
   br label %loop.j.backedge
 
 loop.j.backedge:

diff  --git a/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll
index edac8c7d3fc60..17ef7fe6f251d 100644
--- a/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll
@@ -23,8 +23,8 @@ loop.j:
   br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 
 loop.body:
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %j
-  store i32 1, i32* %scevgep
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %j
+  store i32 1, ptr %scevgep
   br label %loop.j.backedge
 
 loop.j.backedge:

diff  --git a/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll
index 55dc5e434bc70..bc381e2c87fdb 100644
--- a/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll
@@ -23,8 +23,8 @@ loop.j:
   br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 
 loop.body:
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %i
-  store i32 1, i32* %scevgep
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %i
+  store i32 1, ptr %scevgep
   br label %loop.j.backedge
 
 loop.j.backedge:

diff  --git a/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll b/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll
index 7ccdace5fe039..ee02dafeedeb1 100644
--- a/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll
@@ -13,12 +13,11 @@ start:
 
 loop.header:
   %i = phi i64 [ 0, %start ], [ %i.next, %loop.backedge ]
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 0
   %exitcond = icmp ne i64 %i, %n
   br i1 %exitcond, label %loop.body, label %ret
 
 loop.body:
-  store i32 1, i32* %scevgep
+  store i32 1, ptr @A
   br label %loop.backedge
 
 loop.backedge:

diff  --git a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll
index d1b41b3204f27..a5831302471ee 100644
--- a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll
@@ -13,12 +13,12 @@ start:
 
 loop.header:
   %i = phi i64 [ 0, %start ], [ %i.next, %loop.backedge ]
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %i
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %i
   %exitcond = icmp ne i64 %i, %n
   br i1 %exitcond, label %loop.body, label %ret
 
 loop.body:
-  store i32 1, i32* %scevgep
+  store i32 1, ptr %scevgep
   br label %loop.backedge
 
 loop.backedge:

diff  --git a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll
index e0232dc22d297..31a906ed403c8 100644
--- a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll
+++ b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll
@@ -13,12 +13,12 @@ start:
 
 loop.header:
   %i = phi i64 [ 0, %start ], [ %i.next, %loop.backedge ]
-  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %i
+  %scevgep = getelementptr [1024 x i32], ptr @A, i64 0, i64 %i
   %exitcond = icmp ne i64 %i, %n
   br i1 %exitcond, label %loop.body, label %ret
 
 loop.body:
-  store i32 1, i32* %scevgep
+  store i32 1, ptr %scevgep
   br label %loop.backedge
 
 loop.backedge:

diff  --git a/polly/test/IstAstInfo/alias_checks_with_empty_context.ll b/polly/test/IstAstInfo/alias_checks_with_empty_context.ll
index 8189761b3b187..9b95cd5b4bbd4 100644
--- a/polly/test/IstAstInfo/alias_checks_with_empty_context.ll
+++ b/polly/test/IstAstInfo/alias_checks_with_empty_context.ll
@@ -14,7 +14,7 @@ bb:
 
 bb1:                                              ; preds = %bb19, %bb
   %tmp2 = phi i32 [ undef, %bb ], [ %tmp5, %bb19 ]
-  %tmp3 = phi i32* [ @global, %bb ], [ %tmp20, %bb19 ]
+  %tmp3 = phi ptr [ @global, %bb ], [ %tmp20, %bb19 ]
   %tmp4 = icmp ugt i32 %tmp2, 5
   %tmp5 = select i1 %tmp4, i32 %tmp2, i32 5
   br label %bb6
@@ -24,12 +24,12 @@ bb6:                                              ; preds = %bb1
 
 bb7:                                              ; preds = %bb10, %bb6
   %tmp8 = phi i8 [ 7, %bb6 ], [ %tmp11, %bb10 ]
-  store i32 2, i32* %tmp3, align 4
-  %tmp9 = load i8, i8* %tmp, align 8
+  store i32 2, ptr %tmp3, align 4
+  %tmp9 = load i8, ptr %tmp, align 8
   br label %bb10
 
 bb10:                                             ; preds = %bb7
-  store i32 undef, i32* @global.1, align 4
+  store i32 undef, ptr @global.1, align 4
   %tmp11 = add nuw nsw i8 %tmp8, 1
   %tmp12 = icmp eq i8 %tmp11, 72
   br i1 %tmp12, label %bb13, label %bb7
@@ -39,7 +39,7 @@ bb13:                                             ; preds = %bb10
   br i1 %tmp14, label %bb15, label %bb16
 
 bb15:                                             ; preds = %bb13
-  store i8 0, i8* %tmp, align 8
+  store i8 0, ptr %tmp, align 8
   br label %bb16
 
 bb16:                                             ; preds = %bb15, %bb13
@@ -52,7 +52,7 @@ bb18:                                             ; preds = %bb17
   br label %bb19
 
 bb19:                                             ; preds = %bb18, %bb17
-  %tmp20 = phi i32* [ %tmp3, %bb17 ], [ bitcast (void ()* @hoge to i32*), %bb18 ]
+  %tmp20 = phi ptr [ %tmp3, %bb17 ], [ @hoge, %bb18 ]
   br label %bb1
 }
 

diff  --git a/polly/test/IstAstInfo/alias_simple_1.ll b/polly/test/IstAstInfo/alias_simple_1.ll
index d1557e37baab4..83d470c2d19b6 100644
--- a/polly/test/IstAstInfo/alias_simple_1.ll
+++ b/polly/test/IstAstInfo/alias_simple_1.ll
@@ -22,7 +22,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @A = common global [1024 x i32] zeroinitializer, align 16
 
-define void @jd(float* nocapture readonly %B, i32 %N) {
+define void @jd(ptr nocapture readonly %B, i32 %N) {
 entry:
   %cmp6 = icmp sgt i32 %N, 0
   br i1 %cmp6, label %for.body.preheader, label %for.end
@@ -32,11 +32,11 @@ for.body.preheader:                               ; preds = %entry
 
 for.body:                                         ; preds = %for.body.preheader, %for.body
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
-  %arrayidx = getelementptr inbounds float, float* %B, i64 %indvars.iv
-  %tmp = load float, float* %arrayidx, align 4, !tbaa !1
+  %arrayidx = getelementptr inbounds float, ptr %B, i64 %indvars.iv
+  %tmp = load float, ptr %arrayidx, align 4, !tbaa !1
   %conv = fptosi float %tmp to i32
-  %arrayidx2 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv
-  store i32 %conv, i32* %arrayidx2, align 4, !tbaa !5
+  %arrayidx2 = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv
+  store i32 %conv, ptr %arrayidx2, align 4, !tbaa !5
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
   %exitcond2 = icmp eq i32 %lftr.wideiv1, %N

diff  --git a/polly/test/IstAstInfo/alias_simple_2.ll b/polly/test/IstAstInfo/alias_simple_2.ll
index 7d6d65c6f22c6..bbf528f93b474 100644
--- a/polly/test/IstAstInfo/alias_simple_2.ll
+++ b/polly/test/IstAstInfo/alias_simple_2.ll
@@ -35,10 +35,10 @@ for.body.preheader:                               ; preds = %entry
 
 for.body:                                         ; preds = %for.body.preheader, %for.body
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
-  %arrayidx = getelementptr inbounds  [1024 x i32],  [1024 x i32]* @B, i64 0, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4, !tbaa !5
-  %arrayidx2 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv
-  store i32 %tmp, i32* %arrayidx2, align 4, !tbaa !5
+  %arrayidx = getelementptr inbounds  [1024 x i32],  ptr @B, i64 0, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4, !tbaa !5
+  %arrayidx2 = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv
+  store i32 %tmp, ptr %arrayidx2, align 4, !tbaa !5
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
   %exitcond2 = icmp eq i32 %lftr.wideiv1, %N

diff  --git a/polly/test/IstAstInfo/alias_simple_3.ll b/polly/test/IstAstInfo/alias_simple_3.ll
index f2aee41c615a1..9067521323abd 100644
--- a/polly/test/IstAstInfo/alias_simple_3.ll
+++ b/polly/test/IstAstInfo/alias_simple_3.ll
@@ -33,11 +33,11 @@ for.body.preheader:                               ; preds = %entry
 
 for.body:                                         ; preds = %for.body.preheader, %for.body
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
-  %arrayidx = getelementptr inbounds  [1024 x float],  [1024 x float]* @B, i64 0, i64 %indvars.iv
-  %tmp = load float, float* %arrayidx, align 4, !tbaa !1
+  %arrayidx = getelementptr inbounds  [1024 x float],  ptr @B, i64 0, i64 %indvars.iv
+  %tmp = load float, ptr %arrayidx, align 4, !tbaa !1
   %conv = fptosi float %tmp to i32
-  %arrayidx2 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv
-  store i32 %conv, i32* %arrayidx2, align 4, !tbaa !5
+  %arrayidx2 = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv
+  store i32 %conv, ptr %arrayidx2, align 4, !tbaa !5
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
   %exitcond2 = icmp eq i32 %lftr.wideiv1, %N

diff  --git a/polly/test/IstAstInfo/aliasing_arrays_with_identical_base.ll b/polly/test/IstAstInfo/aliasing_arrays_with_identical_base.ll
index 1b6674eed24c3..0cabd20168baf 100644
--- a/polly/test/IstAstInfo/aliasing_arrays_with_identical_base.ll
+++ b/polly/test/IstAstInfo/aliasing_arrays_with_identical_base.ll
@@ -7,7 +7,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @foo(float** nocapture readonly %X) {
+define void @foo(ptr nocapture readonly %X) {
 entry:
   br label %for.body
 
@@ -17,16 +17,16 @@ for.cond.cleanup:
 for.body:
   %i.011 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
   %conv = sitofp i64 %i.011 to float
-  %BaseA = load float*, float** %X, align 8
-  %BaseB = load float*, float** %X, align 8
-  %arrayidx = getelementptr inbounds float, float* %BaseA, i64 %i.011
-  %A = load float, float* %arrayidx, align 4
+  %BaseA = load ptr, ptr %X, align 8
+  %BaseB = load ptr, ptr %X, align 8
+  %arrayidx = getelementptr inbounds float, ptr %BaseA, i64 %i.011
+  %A = load float, ptr %arrayidx, align 4
   %add = fadd float %A, %conv
-  store float %add, float* %arrayidx, align 4
-  %arrayidxB = getelementptr inbounds float, float* %BaseB, i64 %i.011
-  %B = load float, float* %arrayidxB, align 4
+  store float %add, ptr %arrayidx, align 4
+  %arrayidxB = getelementptr inbounds float, ptr %BaseB, i64 %i.011
+  %B = load float, ptr %arrayidxB, align 4
   %addB = fadd float %B, %conv
-  store float %addB, float* %arrayidxB, align 4
+  store float %addB, ptr %arrayidxB, align 4
   %inc = add nuw nsw i64 %i.011, 1
   %exitcond = icmp eq i64 %inc, 1024
   br i1 %exitcond, label %for.cond.cleanup, label %for.body

diff  --git a/polly/test/IstAstInfo/aliasing_multiple_alias_groups.ll b/polly/test/IstAstInfo/aliasing_multiple_alias_groups.ll
index 483433200bcd1..b824c211fd318 100644
--- a/polly/test/IstAstInfo/aliasing_multiple_alias_groups.ll
+++ b/polly/test/IstAstInfo/aliasing_multiple_alias_groups.ll
@@ -23,20 +23,20 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* nocapture %Int0, i32* nocapture readonly %Int1, float* nocapture %Float0, float* nocapture readonly %Float1) {
+define void @jd(ptr nocapture %Int0, ptr nocapture readonly %Int1, ptr nocapture %Float0, ptr nocapture readonly %Float1) {
 entry:
   br label %for.body
 
 for.body:                                         ; preds = %for.body, %entry
   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %Int1, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4, !tbaa !0
-  %arrayidx2 = getelementptr inbounds i32, i32* %Int0, i64 %indvars.iv
-  store i32 %tmp, i32* %arrayidx2, align 4, !tbaa !0
-  %arrayidx4 = getelementptr inbounds float, float* %Float1, i64 %indvars.iv
-  %tmp1 = load float, float* %arrayidx4, align 4, !tbaa !4
-  %arrayidx6 = getelementptr inbounds float, float* %Float0, i64 %indvars.iv
-  store float %tmp1, float* %arrayidx6, align 4, !tbaa !4
+  %arrayidx = getelementptr inbounds i32, ptr %Int1, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4, !tbaa !0
+  %arrayidx2 = getelementptr inbounds i32, ptr %Int0, i64 %indvars.iv
+  store i32 %tmp, ptr %arrayidx2, align 4, !tbaa !0
+  %arrayidx4 = getelementptr inbounds float, ptr %Float1, i64 %indvars.iv
+  %tmp1 = load float, ptr %arrayidx4, align 4, !tbaa !4
+  %arrayidx6 = getelementptr inbounds float, ptr %Float0, i64 %indvars.iv
+  store float %tmp1, ptr %arrayidx6, align 4, !tbaa !4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 1024
   br i1 %exitcond, label %for.end, label %for.body

diff  --git a/polly/test/IstAstInfo/aliasing_parametric_simple_1.ll b/polly/test/IstAstInfo/aliasing_parametric_simple_1.ll
index c105afe6723b6..e0c3255dd7666 100644
--- a/polly/test/IstAstInfo/aliasing_parametric_simple_1.ll
+++ b/polly/test/IstAstInfo/aliasing_parametric_simple_1.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %B, i32 %c) {
+define void @jd(ptr %A, ptr %B, i32 %c) {
 entry:
   br label %for.cond
 
@@ -24,10 +24,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %idxprom = sext i32 %c to i64
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %idxprom
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp, i32* %arrayidx2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %idxprom
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/IstAstInfo/aliasing_parametric_simple_2.ll b/polly/test/IstAstInfo/aliasing_parametric_simple_2.ll
index 02dd98b933430..74bad6c757843 100644
--- a/polly/test/IstAstInfo/aliasing_parametric_simple_2.ll
+++ b/polly/test/IstAstInfo/aliasing_parametric_simple_2.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %B, i32 %c) {
+define void @jd(ptr %A, ptr %B, i32 %c) {
 entry:
   br label %for.cond
 
@@ -25,13 +25,13 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %sub = add nsw i32 %c, -10
   %idxprom = sext i32 %sub to i64
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %idxprom
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx1 = getelementptr inbounds i32, i32* %B, i64 5
-  %tmp1 = load i32, i32* %arrayidx1, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %idxprom
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %B, i64 5
+  %tmp1 = load i32, ptr %arrayidx1, align 4
   %add = add nsw i32 %tmp, %tmp1
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %add, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %add, ptr %arrayidx3, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/IstAstInfo/dependence_distance_constant.ll b/polly/test/IstAstInfo/dependence_distance_constant.ll
index c78c7ae0a23cc..8b0e4d267c14d 100644
--- a/polly/test/IstAstInfo/dependence_distance_constant.ll
+++ b/polly/test/IstAstInfo/dependence_distance_constant.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   br label %for.cond
 
@@ -31,12 +31,12 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 1
   %add4 = add nsw i32 %i.0, 8
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %add4
-  store i32 %add, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i32 %add4
+  store i32 %add, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/dependence_distance_minimal.ll b/polly/test/IstAstInfo/dependence_distance_minimal.ll
index e6ce2d13938e5..c6b1d156e55d3 100644
--- a/polly/test/IstAstInfo/dependence_distance_minimal.ll
+++ b/polly/test/IstAstInfo/dependence_distance_minimal.ll
@@ -19,7 +19,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 
-define void @foo(i32* nocapture %arg, i32* nocapture %arg1) {
+define void @foo(ptr nocapture %arg, ptr nocapture %arg1) {
 bb:
   br label %bb2
 
@@ -31,7 +31,7 @@ bb3:                                              ; preds = %bb6
 
 bb4:                                              ; preds = %bb6, %bb2
   %tmp = phi i32 [ 0, %bb2 ], [ %tmp7, %bb6 ]
-  %tmp5 = getelementptr inbounds i32, i32* %arg1, i32 %tmp
+  %tmp5 = getelementptr inbounds i32, ptr %arg1, i32 %tmp
   br label %bb9
 
 bb6:                                              ; preds = %bb9
@@ -41,16 +41,16 @@ bb6:                                              ; preds = %bb9
 
 bb9:                                              ; preds = %bb9, %bb4
   %tmp10 = phi i32 [ 1, %bb4 ], [ %tmp19, %bb9 ]
-  %tmp11 = load i32, i32* %tmp5, align 4
+  %tmp11 = load i32, ptr %tmp5, align 4
   %tmp12 = add nsw i32 %tmp11, 1
-  store i32 %tmp12, i32* %tmp5, align 4
+  store i32 %tmp12, ptr %tmp5, align 4
   %tmp13 = urem i32 %tmp10, 250
-  %tmp14 = getelementptr inbounds i32, i32* %arg, i32 %tmp13
-  %tmp15 = load i32, i32* %tmp14, align 4
-  %tmp16 = getelementptr inbounds i32, i32* %arg, i32 %tmp10
-  %tmp17 = load i32, i32* %tmp16, align 4
+  %tmp14 = getelementptr inbounds i32, ptr %arg, i32 %tmp13
+  %tmp15 = load i32, ptr %tmp14, align 4
+  %tmp16 = getelementptr inbounds i32, ptr %arg, i32 %tmp10
+  %tmp17 = load i32, ptr %tmp16, align 4
   %tmp18 = add nsw i32 %tmp17, %tmp15
-  store i32 %tmp18, i32* %tmp16, align 4
+  store i32 %tmp18, ptr %tmp16, align 4
   %tmp19 = add nuw nsw i32 %tmp10, 1
   %tmp20 = icmp eq i32 %tmp19, 1000
   br i1 %tmp20, label %bb6, label %bb9

diff  --git a/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll b/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll
index fbbea1a12c299..4dae80902457c 100644
--- a/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll
+++ b/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* noalias %A, i32* noalias %B, i32 %N) {
+define void @f(ptr noalias %A, ptr noalias %B, i32 %N) {
 entry:
   br label %for.cond
 
@@ -22,18 +22,18 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 1
   %add1 = add nsw i32 %i.0, 7
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i32 %add1
-  store i32 %add, i32* %arrayidx2, align 4
-  %arrayidx3 = getelementptr inbounds i32, i32* %B, i32 %i.0
-  %tmp1 = load i32, i32* %arrayidx3, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i32 %add1
+  store i32 %add, ptr %arrayidx2, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %B, i32 %i.0
+  %tmp1 = load i32, ptr %arrayidx3, align 4
   %add4 = add nsw i32 %tmp1, 1
   %add5 = add nsw i32 %i.0, 5
-  %arrayidx6 = getelementptr inbounds i32, i32* %B, i32 %add5
-  store i32 %add4, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %B, i32 %add5
+  store i32 %add4, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/IstAstInfo/dependence_distance_parametric.ll b/polly/test/IstAstInfo/dependence_distance_parametric.ll
index 50785db13361b..3133b732c9dbc 100644
--- a/polly/test/IstAstInfo/dependence_distance_parametric.ll
+++ b/polly/test/IstAstInfo/dependence_distance_parametric.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %A, i32 %N, i32 %c) {
+define void @f(ptr %A, i32 %N, i32 %c) {
 entry:
   br label %for.cond
 
@@ -31,12 +31,12 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 1
   %add4 = add nsw i32 %i.0, %c
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %add4
-  store i32 %add, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i32 %add4
+  store i32 %add, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll b/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll
index 46e7834da04b1..5cce8c84a903c 100644
--- a/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll
+++ b/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %A, i32 %N, i32 %c, i32 %v) {
+define void @f(ptr %A, i32 %N, i32 %c, i32 %v) {
 entry:
   br label %for.cond
 
@@ -31,13 +31,13 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 1
   %add4 = add nsw i32 %i.0, %c
   %add5 = add nsw i32 %add4, %v
-  %arrayidx6 = getelementptr inbounds i32, i32* %A, i32 %add5
-  store i32 %add, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %A, i32 %add5
+  store i32 %add, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/dependence_distance_varying.ll b/polly/test/IstAstInfo/dependence_distance_varying.ll
index bf80f6c450a0f..71c045b69e28a 100644
--- a/polly/test/IstAstInfo/dependence_distance_varying.ll
+++ b/polly/test/IstAstInfo/dependence_distance_varying.ll
@@ -10,7 +10,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   br label %for.cond
 
@@ -21,11 +21,11 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %sub = sub nsw i32 %N, %i.0
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %sub
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %sub
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 1
-  %arrayidx1 = getelementptr inbounds i32, i32* %A, i32 %i.0
-  store i32 %add, i32* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %A, i32 %i.0
+  store i32 %add, ptr %arrayidx1, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll b/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll
index 08cc71f07db71..463e942fc958a 100644
--- a/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll
+++ b/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* noalias %A, i32* noalias %sum) {
+define void @f(ptr noalias %A, ptr noalias %sum) {
 entry:
   br label %for.cond
 
@@ -31,13 +31,13 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %j.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %j.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = mul nsw i32 %tmp, 3
   %add5 = add nsw i32 %add, 2
   %sub = add nsw i32 %i.0, -3
-  %arrayidx6 = getelementptr inbounds i32, i32* %A, i32 %sub
-  store i32 %add5, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %A, i32 %sub
+  store i32 %add5, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll b/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll
index 2dee540570cae..67917b4a919f7 100644
--- a/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll
+++ b/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll
@@ -16,7 +16,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* noalias %A, i32* noalias %B, i32* noalias %C, i32* noalias %D, i32* noalias %E, i32 %N) {
+define void @f(ptr noalias %A, ptr noalias %B, ptr noalias %C, ptr noalias %D, ptr noalias %E, i32 %N) {
 entry:
   br label %for.cond
 
@@ -28,39 +28,39 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %mul = shl nsw i32 %i.0, 1
   %sub = sub nsw i32 100, %mul
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %sub
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %sub
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 1
-  %arrayidx1 = getelementptr inbounds i32, i32* %A, i32 %i.0
-  store i32 %add, i32* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %A, i32 %i.0
+  store i32 %add, ptr %arrayidx1, align 4
   %tmp1 = mul i32 %i.0, -3
   %sub3 = add i32 %tmp1, 100
-  %arrayidx4 = getelementptr inbounds i32, i32* %B, i32 %sub3
-  %tmp2 = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %B, i32 %sub3
+  %tmp2 = load i32, ptr %arrayidx4, align 4
   %add5 = add nsw i32 %tmp2, 1
-  %arrayidx6 = getelementptr inbounds i32, i32* %B, i32 %i.0
-  store i32 %add5, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %B, i32 %i.0
+  store i32 %add5, ptr %arrayidx6, align 4
   %mul7 = shl nsw i32 %i.0, 2
   %sub8 = sub nsw i32 100, %mul7
-  %arrayidx9 = getelementptr inbounds i32, i32* %C, i32 %sub8
-  %tmp3 = load i32, i32* %arrayidx9, align 4
+  %arrayidx9 = getelementptr inbounds i32, ptr %C, i32 %sub8
+  %tmp3 = load i32, ptr %arrayidx9, align 4
   %add10 = add nsw i32 %tmp3, 1
-  %arrayidx11 = getelementptr inbounds i32, i32* %C, i32 %i.0
-  store i32 %add10, i32* %arrayidx11, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %C, i32 %i.0
+  store i32 %add10, ptr %arrayidx11, align 4
   %tmp4 = mul i32 %i.0, -5
   %sub13 = add i32 %tmp4, 100
-  %arrayidx14 = getelementptr inbounds i32, i32* %D, i32 %sub13
-  %tmp5 = load i32, i32* %arrayidx14, align 4
+  %arrayidx14 = getelementptr inbounds i32, ptr %D, i32 %sub13
+  %tmp5 = load i32, ptr %arrayidx14, align 4
   %add15 = add nsw i32 %tmp5, 1
-  %arrayidx16 = getelementptr inbounds i32, i32* %D, i32 %i.0
-  store i32 %add15, i32* %arrayidx16, align 4
+  %arrayidx16 = getelementptr inbounds i32, ptr %D, i32 %i.0
+  store i32 %add15, ptr %arrayidx16, align 4
   %tmp6 = mul i32 %i.0, -6
   %sub18 = add i32 %tmp6, 100
-  %arrayidx19 = getelementptr inbounds i32, i32* %E, i32 %sub18
-  %tmp7 = load i32, i32* %arrayidx19, align 4
+  %arrayidx19 = getelementptr inbounds i32, ptr %E, i32 %sub18
+  %tmp7 = load i32, ptr %arrayidx19, align 4
   %add20 = add nsw i32 %tmp7, 1
-  %arrayidx21 = getelementptr inbounds i32, i32* %E, i32 %i.0
-  store i32 %add20, i32* %arrayidx21, align 4
+  %arrayidx21 = getelementptr inbounds i32, ptr %E, i32 %i.0
+  store i32 %add20, ptr %arrayidx21, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/IstAstInfo/domain_bounded_only_with_context.ll b/polly/test/IstAstInfo/domain_bounded_only_with_context.ll
index 636149b4a78ca..32cebd7a3a8bd 100644
--- a/polly/test/IstAstInfo/domain_bounded_only_with_context.ll
+++ b/polly/test/IstAstInfo/domain_bounded_only_with_context.ll
@@ -15,7 +15,7 @@
 
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 
-define void @zot(float* %A, i32 %arg) {
+define void @zot(ptr %A, i32 %arg) {
 bb:
   %p = ashr i32 %arg, 25
   %tmpEven = shl nsw i32 %p, 1
@@ -28,18 +28,18 @@ cond:
   br i1 %br.cmp, label %side, label %preheader
 
 preheader:
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   br label %loop
 
 loop:
   %indvar = phi i32 [ %indvar.next, %loop ], [ 1, %preheader ]
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   %indvar.next = add nuw nsw i32 %indvar, 1
   %cmp = icmp eq i32 %indvar, %tmp3
   br i1 %cmp, label %exit, label %loop
 
 side:
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   br label %ret
 
 exit:

diff  --git a/polly/test/IstAstInfo/non_affine_access.ll b/polly/test/IstAstInfo/non_affine_access.ll
index 16d999bbd6a92..d8757b2e21cf1 100644
--- a/polly/test/IstAstInfo/non_affine_access.ll
+++ b/polly/test/IstAstInfo/non_affine_access.ll
@@ -13,7 +13,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-linux-gnu"
 
-define void @non_affine_access(float* %A) {
+define void @non_affine_access(ptr %A) {
 bb:
   br label %bb1
 
@@ -27,8 +27,8 @@ bb2:                                              ; preds = %bb1
 
 bb3:                                              ; preds = %bb1
   %prod = mul i64 %i.0, %i.0
-  %tmp5 = getelementptr inbounds float, float* %A, i64 %prod
-  store float 1.000000e+00, float* %tmp5, align 4, !tbaa !5
+  %tmp5 = getelementptr inbounds float, ptr %A, i64 %prod
+  store float 1.000000e+00, ptr %tmp5, align 4, !tbaa !5
   br label %bb6
 
 bb6:                                              ; preds = %bb3

diff  --git a/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll b/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll
index 1948b8f350ebd..b588e42df5d1e 100644
--- a/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll
+++ b/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32 %N, i32 %M, i32 %P, i32* %sum) {
+define void @f(i32 %N, i32 %M, i32 %P, ptr %sum) {
 entry:
   br label %for.cond
 
@@ -43,10 +43,10 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
 for.body6:                                        ; preds = %for.cond4
   %tmp = mul nsw i32 %j.0, %M
   %arrayidx.sum = add i32 %tmp, %k.0
-  %arrayidx7 = getelementptr inbounds i32, i32* %sum, i32 %arrayidx.sum
-  %tmp1 = load i32, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %sum, i32 %arrayidx.sum
+  %tmp1 = load i32, ptr %arrayidx7, align 4
   %xor = xor i32 %tmp1, %j.0
-  store i32 %xor, i32* %arrayidx7, align 4
+  store i32 %xor, ptr %arrayidx7, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body6

diff  --git a/polly/test/IstAstInfo/reduction_clauses_onedimensional_access.ll b/polly/test/IstAstInfo/reduction_clauses_onedimensional_access.ll
index 0962b4a5add47..8d52e345a76da 100644
--- a/polly/test/IstAstInfo/reduction_clauses_onedimensional_access.ll
+++ b/polly/test/IstAstInfo/reduction_clauses_onedimensional_access.ll
@@ -10,7 +10,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32 %N, i32 %M, i32* %sum) {
+define void @f(i32 %N, i32 %M, ptr %sum) {
 entry:
   br label %for.cond
 
@@ -28,10 +28,10 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %cmp2, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %j.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %j.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %xor = xor i32 %tmp, %j.0
-  store i32 %xor, i32* %arrayidx, align 4
+  store i32 %xor, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/reduction_dependences_equal_non_reduction_dependences.ll b/polly/test/IstAstInfo/reduction_dependences_equal_non_reduction_dependences.ll
index 6746efb5ee774..9c6eea6aaa1ef 100644
--- a/polly/test/IstAstInfo/reduction_dependences_equal_non_reduction_dependences.ll
+++ b/polly/test/IstAstInfo/reduction_dependences_equal_non_reduction_dependences.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @AandSum(i32* noalias %sum, i32* noalias %A) {
+define void @AandSum(ptr noalias %sum, ptr noalias %A) {
 entry:
   br label %for.cond
 
@@ -28,24 +28,24 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %sub = add nsw i32 %i.0, -1
-  %arrayidx1 = getelementptr inbounds i32, i32* %A, i32 %sub
-  %tmp1 = load i32, i32* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %A, i32 %sub
+  %tmp1 = load i32, ptr %arrayidx1, align 4
   %add = add nsw i32 %tmp, %tmp1
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i32 %i.0
-  store i32 %add, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i32 %i.0
+  store i32 %add, ptr %arrayidx2, align 4
   %sub4 = add nsw i32 %i.0, -2
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %sub4
-  %tmp2 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i32 %sub4
+  %tmp2 = load i32, ptr %arrayidx5, align 4
   %add6 = add nsw i32 %add, %tmp2
   %sub7 = add nsw i32 %i.0, -1
-  %arrayidx8 = getelementptr inbounds i32, i32* %A, i32 %sub7
-  store i32 %add6, i32* %arrayidx8, align 4
-  %tmp3 = load i32, i32* %sum, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %A, i32 %sub7
+  store i32 %add6, ptr %arrayidx8, align 4
+  %tmp3 = load i32, ptr %sum, align 4
   %add9 = add nsw i32 %tmp3, %i.0
-  store i32 %add9, i32* %sum, align 4
+  store i32 %add9, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/IstAstInfo/reduction_
diff erent_reduction_clauses.ll b/polly/test/IstAstInfo/reduction_
diff erent_reduction_clauses.ll
index 6cfa446254856..5104f716d8109 100644
--- a/polly/test/IstAstInfo/reduction_
diff erent_reduction_clauses.ll
+++ b/polly/test/IstAstInfo/reduction_
diff erent_reduction_clauses.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32 %N, i32* noalias %sum1, i32* noalias %sum2, i32* noalias %prod, i32* noalias %and, i32* noalias %or) {
+define void @f(i32 %N, ptr noalias %sum1, ptr noalias %sum2, ptr noalias %prod, ptr noalias %and, ptr noalias %or) {
 entry:
   br label %for.cond
 
@@ -28,22 +28,22 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp = load i32, i32* %sum1, align 4
+  %tmp = load i32, ptr %sum1, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %sum1, align 4
+  store i32 %add, ptr %sum1, align 4
   %add1 = add nsw i32 %i.0, 1
-  %tmp1 = load i32, i32* %sum2, align 4
+  %tmp1 = load i32, ptr %sum2, align 4
   %add2 = add nsw i32 %tmp1, %add1
-  store i32 %add2, i32* %sum2, align 4
-  %tmp2 = load i32, i32* %prod, align 4
+  store i32 %add2, ptr %sum2, align 4
+  %tmp2 = load i32, ptr %prod, align 4
   %mul = mul nsw i32 %tmp2, %i.0
-  store i32 %mul, i32* %prod, align 4
-  %tmp3 = load i32, i32* %and, align 4
+  store i32 %mul, ptr %prod, align 4
+  %tmp3 = load i32, ptr %and, align 4
   %and3 = and i32 %tmp3, %i.0
-  store i32 %and3, i32* %and, align 4
-  %tmp4 = load i32, i32* %or, align 4
+  store i32 %and3, ptr %and, align 4
+  %tmp4 = load i32, ptr %or, align 4
   %or4 = or i32 %tmp4, %i.0
-  store i32 %or4, i32* %or, align 4
+  store i32 %or4, ptr %or, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/IstAstInfo/reduction_in_one_dimension.ll b/polly/test/IstAstInfo/reduction_in_one_dimension.ll
index c212a16e83d56..86a1b67f7292d 100644
--- a/polly/test/IstAstInfo/reduction_in_one_dimension.ll
+++ b/polly/test/IstAstInfo/reduction_in_one_dimension.ll
@@ -19,7 +19,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @foo(i32* %A, i32 %n) {
+define void @foo(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -38,10 +38,10 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/reduction_loop_reversal.ll b/polly/test/IstAstInfo/reduction_loop_reversal.ll
index 16bc437a672d8..c940f5c08fa1e 100644
--- a/polly/test/IstAstInfo/reduction_loop_reversal.ll
+++ b/polly/test/IstAstInfo/reduction_loop_reversal.ll
@@ -19,7 +19,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rlr(i32* %A, i32 %n) {
+define void @rlr(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -33,9 +33,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -56,8 +56,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule.ll b/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule.ll
index da8f7d7f76a41..8a42cf8bd165b 100644
--- a/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule.ll
+++ b/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule.ll
@@ -21,7 +21,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmalrs(i32* %A, i32 %n) {
+define void @rmalrs(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -35,9 +35,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -58,8 +58,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule_2.ll b/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule_2.ll
index 466c4ded4aa53..8f5efd1655464 100644
--- a/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule_2.ll
+++ b/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule_2.ll
@@ -25,7 +25,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmalrs2(i32* %A, i32 %n) {
+define void @rmalrs2(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -39,9 +39,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -62,8 +62,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/IstAstInfo/reduction_modulo_schedule.ll b/polly/test/IstAstInfo/reduction_modulo_schedule.ll
index f35dd1d6cf8ed..21a78e5487621 100644
--- a/polly/test/IstAstInfo/reduction_modulo_schedule.ll
+++ b/polly/test/IstAstInfo/reduction_modulo_schedule.ll
@@ -25,7 +25,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rms(i32* %A, i32 %n) {
+define void @rms(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -39,9 +39,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -62,8 +62,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions.ll
index fab87f2320fe2..a711a36a367f9 100644
--- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions.ll
+++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmsmd(i32* %A, i32 %n) {
+define void @rmsmd(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -34,10 +34,10 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_2.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_2.ll
index b1e4884ae54e2..485d6965b6d38 100644
--- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_2.ll
+++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_2.ll
@@ -17,7 +17,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmsmd2(i32* %A, i32 %n) {
+define void @rmsmd2(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -36,10 +36,10 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_3.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_3.ll
index 5428581a6da46..375fabbf6a8be 100644
--- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_3.ll
+++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_3.ll
@@ -17,7 +17,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmsmd3(i32* %A, i32 %n) {
+define void @rmsmd3(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -36,10 +36,10 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_4.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_4.ll
index 036e86ebca71a..584c076dcff4d 100644
--- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_4.ll
+++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_4.ll
@@ -22,7 +22,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmsmd4(i32* %A, i32 %n) {
+define void @rmsmd4(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -41,10 +41,10 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_5.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_5.ll
index 2f9f2b48b6bee..eaa3444a04d7d 100644
--- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_5.ll
+++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_5.ll
@@ -25,7 +25,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmsmd5(i32* %A, i32 %n) {
+define void @rmsmd5(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -44,10 +44,10 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/IstAstInfo/reduction_multiple_dimensions.ll b/polly/test/IstAstInfo/reduction_multiple_dimensions.ll
index 543778c967475..9618ec872c385 100644
--- a/polly/test/IstAstInfo/reduction_multiple_dimensions.ll
+++ b/polly/test/IstAstInfo/reduction_multiple_dimensions.ll
@@ -17,7 +17,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmd(i32* %A) {
+define void @rmd(ptr %A) {
 entry:
   br label %for.cond
 
@@ -43,10 +43,10 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
   br i1 %exitcond, label %for.body6, label %for.end
 
 for.body6:                                        ; preds = %for.cond4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body6

diff  --git a/polly/test/IstAstInfo/reduction_multiple_dimensions_2.ll b/polly/test/IstAstInfo/reduction_multiple_dimensions_2.ll
index e9fb72866fddd..af317570eb372 100644
--- a/polly/test/IstAstInfo/reduction_multiple_dimensions_2.ll
+++ b/polly/test/IstAstInfo/reduction_multiple_dimensions_2.ll
@@ -17,7 +17,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmd2(i32* %A) {
+define void @rmd2(ptr %A) {
 entry:
   br label %for.cond
 
@@ -43,10 +43,10 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
   br i1 %exitcond, label %for.body6, label %for.end
 
 for.body6:                                        ; preds = %for.cond4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body6

diff  --git a/polly/test/IstAstInfo/reduction_multiple_dimensions_3.ll b/polly/test/IstAstInfo/reduction_multiple_dimensions_3.ll
index 963424a8e3b6e..1f7191433bf8c 100644
--- a/polly/test/IstAstInfo/reduction_multiple_dimensions_3.ll
+++ b/polly/test/IstAstInfo/reduction_multiple_dimensions_3.ll
@@ -17,7 +17,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmd3(i32* %A) {
+define void @rmd3(ptr %A) {
 entry:
   br label %for.cond
 
@@ -43,10 +43,10 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
   br i1 %exitcond, label %for.body6, label %for.end
 
 for.body6:                                        ; preds = %for.cond4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body6

diff  --git a/polly/test/IstAstInfo/reduction_multiple_dimensions_4.ll b/polly/test/IstAstInfo/reduction_multiple_dimensions_4.ll
index a2226aad3e5af..40bae5e9ac6c5 100644
--- a/polly/test/IstAstInfo/reduction_multiple_dimensions_4.ll
+++ b/polly/test/IstAstInfo/reduction_multiple_dimensions_4.ll
@@ -17,7 +17,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @rmd4(i32* %A) {
+define void @rmd4(ptr %A) {
 entry:
   br label %for.cond
 
@@ -43,10 +43,10 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
   br i1 %exitcond, label %for.body6, label %for.end
 
 for.body6:                                        ; preds = %for.cond4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body6

diff  --git a/polly/test/IstAstInfo/run-time-condition.ll b/polly/test/IstAstInfo/run-time-condition.ll
index 9c6e9f1302c99..ccc9c7cfd321b 100644
--- a/polly/test/IstAstInfo/run-time-condition.ll
+++ b/polly/test/IstAstInfo/run-time-condition.ll
@@ -5,7 +5,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"
 
-define void @run-time-condition(i16* noalias %A, i16* noalias %B) {
+define void @run-time-condition(ptr noalias %A, ptr noalias %B) {
 entry:
   br label %for.cond
 
@@ -15,11 +15,10 @@ for.cond:                                         ; preds = %for.body, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i16, i16* %B, i64 0
-  %load = load i16, i16* %arrayidx
+  %load = load i16, ptr %B
   %add10 = add nsw i16 %load, 1
-  %arrayidx13 = getelementptr inbounds i16, i16* %A, i64 %indvar
-  store i16 %add10, i16* %arrayidx13, align 2
+  %arrayidx13 = getelementptr inbounds i16, ptr %A, i64 %indvar
+  store i16 %add10, ptr %arrayidx13, align 2
   %inc = add nsw i64 %indvar, 1
   br label %for.cond
 

diff  --git a/polly/test/IstAstInfo/runtime_context_with_error_blocks.ll b/polly/test/IstAstInfo/runtime_context_with_error_blocks.ll
index c3c0eeab2d242..2853e0acf9b8f 100644
--- a/polly/test/IstAstInfo/runtime_context_with_error_blocks.ll
+++ b/polly/test/IstAstInfo/runtime_context_with_error_blocks.ll
@@ -8,37 +8,36 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%"class.std::ctype" = type <{ %"class.std::locale::facet.base", [4 x i8], %struct.__locale_struct*, i8, [7 x i8], i32*, i32*, i16*, i8, [256 x i8], [256 x i8], i8, [6 x i8] }>
-%"class.std::locale::facet.base" = type <{ i32 (...)**, i32 }>
-%struct.__locale_struct = type { [13 x %struct.__locale_data*], i16*, i32*, i32*, [13 x i8*] }
+%"class.std::ctype" = type <{ %"class.std::locale::facet.base", [4 x i8], ptr, i8, [7 x i8], ptr, ptr, ptr, i8, [256 x i8], [256 x i8], i8, [6 x i8] }>
+%"class.std::locale::facet.base" = type <{ ptr, i32 }>
+%struct.__locale_struct = type { [13 x ptr], ptr, ptr, ptr, [13 x ptr] }
 %struct.__locale_data = type opaque
 
 $_ZNKSt5ctypeIcE5widenEc = comdat any
 
 ; Function Attrs: uwtable
-define weak_odr signext i8 @_ZNKSt5ctypeIcE5widenEc(%"class.std::ctype"* %this, i8 signext %__c) #0 comdat align 2 {
+define weak_odr signext i8 @_ZNKSt5ctypeIcE5widenEc(ptr %this, i8 signext %__c) #0 comdat align 2 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %_M_widen_ok = getelementptr inbounds %"class.std::ctype", %"class.std::ctype"* %this, i64 0, i32 8
-  %0 = load i8, i8* %_M_widen_ok, align 8, !tbaa !1
+  %_M_widen_ok = getelementptr inbounds %"class.std::ctype", ptr %this, i64 0, i32 8
+  %0 = load i8, ptr %_M_widen_ok, align 8, !tbaa !1
   %tobool = icmp eq i8 %0, 0
   br i1 %tobool, label %if.end, label %if.then
 
 if.then:                                          ; preds = %entry.split
   %idxprom = zext i8 %__c to i64
-  %arrayidx = getelementptr inbounds %"class.std::ctype", %"class.std::ctype"* %this, i64 0, i32 9, i64 %idxprom
-  %1 = load i8, i8* %arrayidx, align 1, !tbaa !7
+  %arrayidx = getelementptr inbounds %"class.std::ctype", ptr %this, i64 0, i32 9, i64 %idxprom
+  %1 = load i8, ptr %arrayidx, align 1, !tbaa !7
   br label %return
 
 if.end:                                           ; preds = %entry.split
-  tail call void @_ZNKSt5ctypeIcE13_M_widen_initEv(%"class.std::ctype"* %this)
-  %2 = bitcast %"class.std::ctype"* %this to i8 (%"class.std::ctype"*, i8)***
-  %vtable = load i8 (%"class.std::ctype"*, i8)**, i8 (%"class.std::ctype"*, i8)*** %2, align 8, !tbaa !8
-  %vfn = getelementptr inbounds i8 (%"class.std::ctype"*, i8)*, i8 (%"class.std::ctype"*, i8)** %vtable, i64 6
-  %3 = load i8 (%"class.std::ctype"*, i8)*, i8 (%"class.std::ctype"*, i8)** %vfn, align 8
-  %call = tail call signext i8 %3(%"class.std::ctype"* %this, i8 signext %__c)
+  tail call void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr %this)
+  %vtable = load ptr, ptr %this, align 8, !tbaa !8
+  %vfn = getelementptr inbounds ptr, ptr %vtable, i64 6
+  %2 = load ptr, ptr %vfn, align 8
+  %call = tail call signext i8 %2(ptr %this, i8 signext %__c)
   br label %return
 
 return:                                           ; preds = %if.end, %if.then
@@ -46,7 +45,7 @@ return:                                           ; preds = %if.end, %if.then
   ret i8 %retval.0
 }
 
-declare void @_ZNKSt5ctypeIcE13_M_widen_initEv(%"class.std::ctype"*) #1
+declare void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr) #1
 
 attributes #0 = { 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 = { "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" }

diff  --git a/polly/test/IstAstInfo/simple-run-time-condition.ll b/polly/test/IstAstInfo/simple-run-time-condition.ll
index db2cc1a77bae1..5fb99f0676b71 100644
--- a/polly/test/IstAstInfo/simple-run-time-condition.ll
+++ b/polly/test/IstAstInfo/simple-run-time-condition.ll
@@ -32,7 +32,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK: else
 ; CHECK:     {  /* original code */ }
 
-define void @foo(i64 %n, i64 %m, i64 %o, double* %A, i64 %p, i64 %q) {
+define void @foo(i64 %n, i64 %m, i64 %o, ptr %A, i64 %p, i64 %q) {
 entry:
   br label %cond
 
@@ -50,8 +50,8 @@ for.j:
   %subscript0 = mul i64 %offset0, %m
   %offset1 = add nsw i64 %j, %q
   %subscript1 = add i64 %offset1, %subscript0
-  %idx = getelementptr inbounds double, double* %A, i64 %subscript1
-  store double 1.0, double* %idx
+  %idx = getelementptr inbounds double, ptr %A, i64 %subscript1
+  store double 1.0, ptr %idx
   br label %for.j.inc
 
 for.j.inc:
@@ -75,8 +75,8 @@ for.j.1:
   %offset1.1 = add nsw i64 %j.1, %q
   %subscript1.1 = add i64 %offset1.1, %subscript0.1
   %subscript1.2 = sub i64 %subscript1.1, 100
-  %idx.1 = getelementptr inbounds double, double* %A, i64 %subscript1.2
-  store double 1.0, double* %idx.1
+  %idx.1 = getelementptr inbounds double, ptr %A, i64 %subscript1.2
+  store double 1.0, ptr %idx.1
   br label %for.j.inc.1
 
 for.j.inc.1:

diff  --git a/polly/test/IstAstInfo/single_loop_strip_mine.ll b/polly/test/IstAstInfo/single_loop_strip_mine.ll
index 08ca5e1ef44b3..1c627f817b0b9 100644
--- a/polly/test/IstAstInfo/single_loop_strip_mine.ll
+++ b/polly/test/IstAstInfo/single_loop_strip_mine.ll
@@ -6,7 +6,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"
 
-define void @single_loop_strip_mine(i16* noalias %A, i16* noalias %B) {
+define void @single_loop_strip_mine(ptr noalias %A, ptr noalias %B) {
 entry:
   br label %for.cond
 
@@ -16,11 +16,10 @@ for.cond:                                         ; preds = %for.body, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i16, i16* %B, i64 0
-  %load = load i16, i16* %arrayidx
+  %load = load i16, ptr %B
   %add10 = add nsw i16 %load, 1
-  %arrayidx13 = getelementptr inbounds i16, i16* %A, i64 %indvar
-  store i16 %add10, i16* %arrayidx13, align 2
+  %arrayidx13 = getelementptr inbounds i16, ptr %A, i64 %indvar
+  store i16 %add10, ptr %arrayidx13, align 2
   %inc = add nsw i64 %indvar, 1
   br label %for.cond
 

diff  --git a/polly/test/IstAstInfo/single_loop_uint_max_iterations.ll b/polly/test/IstAstInfo/single_loop_uint_max_iterations.ll
index b26f4d75537c0..f1cd5dae11cea 100644
--- a/polly/test/IstAstInfo/single_loop_uint_max_iterations.ll
+++ b/polly/test/IstAstInfo/single_loop_uint_max_iterations.ll
@@ -27,10 +27,10 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 entry:
-  %A = alloca [20 x i32], align 4                 ; <[20 x i32]*> [#uses=3]
-  %arraydecay = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx = getelementptr inbounds i32, i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
-  store i32 0, i32* %arrayidx
+  %A = alloca [20 x i32], align 4                 ; <ptr> [#uses=3]
+  %arraydecay = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx = getelementptr inbounds i32, ptr %arraydecay, i64 0 ; <ptr> [#uses=1]
+  store i32 0, ptr %arrayidx
   fence seq_cst
   br label %for.cond
 
@@ -40,9 +40,9 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arraydecay2 = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx3 = getelementptr inbounds i32, i32* %arraydecay2, i64 0 ; <i32*> [#uses=1]
-  store i32 %0, i32* %arrayidx3
+  %arraydecay2 = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx3 = getelementptr inbounds i32, ptr %arraydecay2, i64 0 ; <ptr> [#uses=1]
+  store i32 %0, ptr %arrayidx3
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -51,9 +51,9 @@ for.inc:                                          ; preds = %for.body
 
 for.end:                                          ; preds = %for.cond
   fence seq_cst
-  %arraydecay5 = getelementptr inbounds [20 x i32], [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
-  %arrayidx6 = getelementptr inbounds i32, i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
-  %tmp7 = load i32, i32* %arrayidx6                    ; <i32> [#uses=1]
+  %arraydecay5 = getelementptr inbounds [20 x i32], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx6 = getelementptr inbounds i32, ptr %arraydecay5, i64 0 ; <ptr> [#uses=1]
+  %tmp7 = load i32, ptr %arrayidx6                    ; <i32> [#uses=1]
   %cmp8 = icmp eq i32 %tmp7, -2                   ; <i1> [#uses=1]
   br i1 %cmp8, label %if.then, label %if.else
 

diff  --git a/polly/test/IstAstInfo/single_loop_ull_max_iterations.ll b/polly/test/IstAstInfo/single_loop_ull_max_iterations.ll
index 954757360972e..d421e221240a8 100644
--- a/polly/test/IstAstInfo/single_loop_ull_max_iterations.ll
+++ b/polly/test/IstAstInfo/single_loop_ull_max_iterations.ll
@@ -27,10 +27,10 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 define i32 @main() nounwind {
 entry:
-  %A = alloca [20 x i64], align 8                 ; <[20 x i64]*> [#uses=3]
-  %arraydecay = getelementptr inbounds [20 x i64], [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
-  %arrayidx = getelementptr inbounds i64, i64* %arraydecay, i64 0 ; <i64*> [#uses=1]
-  store i64 0, i64* %arrayidx
+  %A = alloca [20 x i64], align 8                 ; <ptr> [#uses=3]
+  %arraydecay = getelementptr inbounds [20 x i64], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx = getelementptr inbounds i64, ptr %arraydecay, i64 0 ; <ptr> [#uses=1]
+  store i64 0, ptr %arrayidx
   fence seq_cst
   br label %for.cond
 
@@ -40,9 +40,9 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arraydecay2 = getelementptr inbounds [20 x i64], [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
-  %arrayidx3 = getelementptr inbounds i64, i64* %arraydecay2, i64 0 ; <i64*> [#uses=1]
-  store i64 %0, i64* %arrayidx3
+  %arraydecay2 = getelementptr inbounds [20 x i64], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx3 = getelementptr inbounds i64, ptr %arraydecay2, i64 0 ; <ptr> [#uses=1]
+  store i64 %0, ptr %arrayidx3
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -51,9 +51,9 @@ for.inc:                                          ; preds = %for.body
 
 for.end:                                          ; preds = %for.cond
   fence seq_cst
-  %arraydecay5 = getelementptr inbounds [20 x i64], [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
-  %arrayidx6 = getelementptr inbounds i64, i64* %arraydecay5, i64 0 ; <i64*> [#uses=1]
-  %tmp7 = load i64, i64* %arrayidx6                    ; <i64> [#uses=1]
+  %arraydecay5 = getelementptr inbounds [20 x i64], ptr %A, i32 0, i32 0 ; <ptr> [#uses=1]
+  %arrayidx6 = getelementptr inbounds i64, ptr %arraydecay5, i64 0 ; <ptr> [#uses=1]
+  %tmp7 = load i64, ptr %arrayidx6                    ; <i64> [#uses=1]
   %cmp8 = icmp eq i64 %tmp7, -2                   ; <i1> [#uses=1]
   br i1 %cmp8, label %if.then, label %if.else
 

diff  --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Bad-relation.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Bad-relation.ll
index 2e7c97b56d7f8..d4a1a62225189 100644
--- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Bad-relation.ll
+++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Bad-relation.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ia6(i32* %A, i32 %n) {
+define void @ia6(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-No-accesses-key.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-No-accesses-key.ll
index c968aa37e7a02..43f9d3eda0491 100644
--- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-No-accesses-key.ll
+++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-No-accesses-key.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ia3(i32* %A, i32 %n) {
+define void @ia3(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-MemAcc.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-MemAcc.ll
index 1b554ccd331ce..24ad037412169 100644
--- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-MemAcc.ll
+++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-MemAcc.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ia4(i32* %A, i32 %n) {
+define void @ia4(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-statements.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-statements.ll
index 91e41c718aec6..1060926e7facf 100644
--- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-statements.ll
+++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-statements.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ia2(i32* %A, i32 %n) {
+define void @ia2(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Relation-mispelled.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Relation-mispelled.ll
index d0701912be2b2..07975976c38b6 100644
--- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Relation-mispelled.ll
+++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Relation-mispelled.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ia5(i32* %A, i32 %n) {
+define void @ia5(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Statements-mispelled.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Statements-mispelled.ll
index b5b8bc4fcd2a2..9f7259633811b 100644
--- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Statements-mispelled.ll
+++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Statements-mispelled.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ia(i32* %A, i32 %n) {
+define void @ia(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Undeclared-ScopArrayInfo.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Undeclared-ScopArrayInfo.ll
index 77b6a27b28050..df7eb42da85fd 100644
--- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Undeclared-ScopArrayInfo.ll
+++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Undeclared-ScopArrayInfo.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ia8(i32* %A, i32 %n) {
+define void @ia8(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Wrong-number-dimensions.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Wrong-number-dimensions.ll
index dd319d2929a79..61c1173db2e7d 100644
--- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Wrong-number-dimensions.ll
+++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Wrong-number-dimensions.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ia7(i32* %A, i32 %n) {
+define void @ia7(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-Mispelled-type.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-Mispelled-type.ll
index 27ec75b774ee8..a14ae5c4d1bc7 100644
--- a/polly/test/JSONExporter/ImportArrays/ImportArrays-Mispelled-type.ll
+++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-Mispelled-type.ll
@@ -15,7 +15,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
 ; Function Attrs: nounwind uwtable
-define internal void @ia4(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, [1056 x double]* %A, [1024 x double]* %B, [1056 x double]* %arg7) #0 {
+define internal void @ia4(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, ptr %A, ptr %B, ptr %arg7) #0 {
 bb:
   br label %bb8
 
@@ -32,11 +32,11 @@ bb10:                                             ; preds = %bb20, %bb9
 
 bb12:                                             ; preds = %bb12, %bb10
   %tmp13 = phi i64 [ 0, %bb10 ], [ %tmp18, %bb12 ]
-  %tmp14 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %tmp, i64 %tmp13
-  %tmp15 = load double, double* %tmp14, align 8
+  %tmp14 = getelementptr inbounds [1024 x double], ptr %B, i64 %tmp, i64 %tmp13
+  %tmp15 = load double, ptr %tmp14, align 8
   %tmp16 = fmul double %tmp15, %beta
-  %tmp17 = getelementptr inbounds [1056 x double], [1056 x double]* %A, i64 %tmp, i64 %tmp11
-  store double %tmp16, double* %tmp17, align 8
+  %tmp17 = getelementptr inbounds [1056 x double], ptr %A, i64 %tmp, i64 %tmp11
+  store double %tmp16, ptr %tmp17, align 8
   %tmp18 = add nuw nsw i64 %tmp13, 1
   %tmp19 = icmp ne i64 %tmp18, 1024
   br i1 %tmp19, label %bb12, label %bb20

diff  --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-Negative-size.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-Negative-size.ll
index 2aa7e0a13ea2d..70652a1918b4e 100644
--- a/polly/test/JSONExporter/ImportArrays/ImportArrays-Negative-size.ll
+++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-Negative-size.ll
@@ -24,7 +24,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @ImportArrays_Negative_Size(double %beta, [1024 x double]* nocapture readonly %A, [1056 x double]* nocapture %B) local_unnamed_addr {
+define void @ImportArrays_Negative_Size(double %beta, ptr nocapture readonly %A, ptr nocapture %B) local_unnamed_addr {
 entry:
   br label %for.cond1.preheader
 
@@ -34,30 +34,30 @@ for.cond1.preheader:                              ; preds = %for.inc16, %entry
 
 for.cond4.preheader:                              ; preds = %for.inc13, %for.cond1.preheader
   %indvars.iv32 = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next33, %for.inc13 ]
-  %arrayidx12 = getelementptr inbounds [1056 x double], [1056 x double]* %B, i64 %indvars.iv35, i64 %indvars.iv32
+  %arrayidx12 = getelementptr inbounds [1056 x double], ptr %B, i64 %indvars.iv35, i64 %indvars.iv32
   br label %for.body6
 
 for.body6:                                        ; preds = %for.body6, %for.cond4.preheader
   %indvars.iv = phi i64 [ 0, %for.cond4.preheader ], [ %indvars.iv.next.3, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i64 %indvars.iv35, i64 %indvars.iv
-  %0 = load double, double* %arrayidx8, align 8
+  %arrayidx8 = getelementptr inbounds [1024 x double], ptr %A, i64 %indvars.iv35, i64 %indvars.iv
+  %0 = load double, ptr %arrayidx8, align 8
   %mul = fmul double %0, %beta
-  store double %mul, double* %arrayidx12, align 8
+  store double %mul, ptr %arrayidx12, align 8
   %indvars.iv.next = or i64 %indvars.iv, 1
-  %arrayidx8.1 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i64 %indvars.iv35, i64 %indvars.iv.next
-  %1 = load double, double* %arrayidx8.1, align 8
+  %arrayidx8.1 = getelementptr inbounds [1024 x double], ptr %A, i64 %indvars.iv35, i64 %indvars.iv.next
+  %1 = load double, ptr %arrayidx8.1, align 8
   %mul.1 = fmul double %1, %beta
-  store double %mul.1, double* %arrayidx12, align 8
+  store double %mul.1, ptr %arrayidx12, align 8
   %indvars.iv.next.1 = or i64 %indvars.iv, 2
-  %arrayidx8.2 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i64 %indvars.iv35, i64 %indvars.iv.next.1
-  %2 = load double, double* %arrayidx8.2, align 8
+  %arrayidx8.2 = getelementptr inbounds [1024 x double], ptr %A, i64 %indvars.iv35, i64 %indvars.iv.next.1
+  %2 = load double, ptr %arrayidx8.2, align 8
   %mul.2 = fmul double %2, %beta
-  store double %mul.2, double* %arrayidx12, align 8
+  store double %mul.2, ptr %arrayidx12, align 8
   %indvars.iv.next.2 = or i64 %indvars.iv, 3
-  %arrayidx8.3 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i64 %indvars.iv35, i64 %indvars.iv.next.2
-  %3 = load double, double* %arrayidx8.3, align 8
+  %arrayidx8.3 = getelementptr inbounds [1024 x double], ptr %A, i64 %indvars.iv35, i64 %indvars.iv.next.2
+  %3 = load double, ptr %arrayidx8.3, align 8
   %mul.3 = fmul double %3, %beta
-  store double %mul.3, double* %arrayidx12, align 8
+  store double %mul.3, ptr %arrayidx12, align 8
   %indvars.iv.next.3 = add nsw i64 %indvars.iv, 4
   %exitcond.3 = icmp eq i64 %indvars.iv.next.3, 1024
   br i1 %exitcond.3, label %for.inc13, label %for.body6

diff  --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-name.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-name.ll
index fe0cbcae7c14a..45bb3495de08c 100644
--- a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-name.ll
+++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-name.ll
@@ -15,7 +15,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
 ; Function Attrs: nounwind uwtable
-define internal void @ia3(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, [1056 x double]* %A, [1024 x double]* %B, [1056 x double]* %arg7) #0 {
+define internal void @ia3(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, ptr %A, ptr %B, ptr %arg7) #0 {
 bb:
   br label %bb8
 
@@ -32,11 +32,11 @@ bb10:                                             ; preds = %bb20, %bb9
 
 bb12:                                             ; preds = %bb12, %bb10
   %tmp13 = phi i64 [ 0, %bb10 ], [ %tmp18, %bb12 ]
-  %tmp14 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %tmp, i64 %tmp13
-  %tmp15 = load double, double* %tmp14, align 8
+  %tmp14 = getelementptr inbounds [1024 x double], ptr %B, i64 %tmp, i64 %tmp13
+  %tmp15 = load double, ptr %tmp14, align 8
   %tmp16 = fmul double %tmp15, %beta
-  %tmp17 = getelementptr inbounds [1056 x double], [1056 x double]* %A, i64 %tmp, i64 %tmp11
-  store double %tmp16, double* %tmp17, align 8
+  %tmp17 = getelementptr inbounds [1056 x double], ptr %A, i64 %tmp, i64 %tmp11
+  store double %tmp16, ptr %tmp17, align 8
   %tmp18 = add nuw nsw i64 %tmp13, 1
   %tmp19 = icmp ne i64 %tmp18, 1024
   br i1 %tmp19, label %bb12, label %bb20

diff  --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-sizes-key.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-sizes-key.ll
index e6e1b2023ac11..5bbb974346ba7 100644
--- a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-sizes-key.ll
+++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-sizes-key.ll
@@ -15,7 +15,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
 ; Function Attrs: nounwind uwtable
-define internal void @ia2(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, [1056 x double]* %A, [1024 x double]* %B, [1056 x double]* %arg7) #0 {
+define internal void @ia2(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, ptr %A, ptr %B, ptr %arg7) #0 {
 bb:
   br label %bb8
 
@@ -32,11 +32,11 @@ bb10:                                             ; preds = %bb20, %bb9
 
 bb12:                                             ; preds = %bb12, %bb10
   %tmp13 = phi i64 [ 0, %bb10 ], [ %tmp18, %bb12 ]
-  %tmp14 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %tmp, i64 %tmp13
-  %tmp15 = load double, double* %tmp14, align 8
+  %tmp14 = getelementptr inbounds [1024 x double], ptr %B, i64 %tmp, i64 %tmp13
+  %tmp15 = load double, ptr %tmp14, align 8
   %tmp16 = fmul double %tmp15, %beta
-  %tmp17 = getelementptr inbounds [1056 x double], [1056 x double]* %A, i64 %tmp, i64 %tmp11
-  store double %tmp16, double* %tmp17, align 8
+  %tmp17 = getelementptr inbounds [1056 x double], ptr %A, i64 %tmp, i64 %tmp11
+  store double %tmp16, ptr %tmp17, align 8
   %tmp18 = add nuw nsw i64 %tmp13, 1
   %tmp19 = icmp ne i64 %tmp18, 1024
   br i1 %tmp19, label %bb12, label %bb20

diff  --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-type-key.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-type-key.ll
index d23cd3aea9389..af013992fca0d 100644
--- a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-type-key.ll
+++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-type-key.ll
@@ -15,7 +15,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
 ; Function Attrs: nounwind uwtable
-define internal void @ia(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, [1056 x double]* %A, [1024 x double]* %B, [1056 x double]* %arg7) #0 {
+define internal void @ia(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, ptr %A, ptr %B, ptr %arg7) #0 {
 bb:
   br label %bb8
 
@@ -32,11 +32,11 @@ bb10:                                             ; preds = %bb20, %bb9
 
 bb12:                                             ; preds = %bb12, %bb10
   %tmp13 = phi i64 [ 0, %bb10 ], [ %tmp18, %bb12 ]
-  %tmp14 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %tmp, i64 %tmp13
-  %tmp15 = load double, double* %tmp14, align 8
+  %tmp14 = getelementptr inbounds [1024 x double], ptr %B, i64 %tmp, i64 %tmp13
+  %tmp15 = load double, ptr %tmp14, align 8
   %tmp16 = fmul double %tmp15, %beta
-  %tmp17 = getelementptr inbounds [1056 x double], [1056 x double]* %A, i64 %tmp, i64 %tmp11
-  store double %tmp16, double* %tmp17, align 8
+  %tmp17 = getelementptr inbounds [1056 x double], ptr %A, i64 %tmp, i64 %tmp11
+  store double %tmp16, ptr %tmp17, align 8
   %tmp18 = add nuw nsw i64 %tmp13, 1
   %tmp19 = icmp ne i64 %tmp18, 1024
   br i1 %tmp19, label %bb12, label %bb20

diff  --git a/polly/test/JSONExporter/ImportContext/ImportContext-Context-mispelled.ll b/polly/test/JSONExporter/ImportContext/ImportContext-Context-mispelled.ll
index 96cd69249723a..2490e44ec3478 100644
--- a/polly/test/JSONExporter/ImportContext/ImportContext-Context-mispelled.ll
+++ b/polly/test/JSONExporter/ImportContext/ImportContext-Context-mispelled.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ic(i32* %A, i32 %n) {
+define void @ic(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportContext/ImportContext-Not-parameter-set.ll b/polly/test/JSONExporter/ImportContext/ImportContext-Not-parameter-set.ll
index ba29bbf75a60f..66ce6a6ed9224 100644
--- a/polly/test/JSONExporter/ImportContext/ImportContext-Not-parameter-set.ll
+++ b/polly/test/JSONExporter/ImportContext/ImportContext-Not-parameter-set.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ic3(i32* %A, i32 %n) {
+define void @ic3(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportContext/ImportContext-Unvalid-Context.ll b/polly/test/JSONExporter/ImportContext/ImportContext-Unvalid-Context.ll
index 4e93bf59b27f6..7bcc54dde52e8 100644
--- a/polly/test/JSONExporter/ImportContext/ImportContext-Unvalid-Context.ll
+++ b/polly/test/JSONExporter/ImportContext/ImportContext-Unvalid-Context.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ic2(i32* %A, i32 %n) {
+define void @ic2(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportContext/ImportContext-Wrong-dimension.ll b/polly/test/JSONExporter/ImportContext/ImportContext-Wrong-dimension.ll
index 0c97eecaa5c58..65cdcbdcdef66 100644
--- a/polly/test/JSONExporter/ImportContext/ImportContext-Wrong-dimension.ll
+++ b/polly/test/JSONExporter/ImportContext/ImportContext-Wrong-dimension.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @ic4(i32* %A, i32 %n) {
+define void @ic4(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-No-schedule-key.ll b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-No-schedule-key.ll
index 86960e83b8893..b52db0876cc5b 100644
--- a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-No-schedule-key.ll
+++ b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-No-schedule-key.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @is3(i32* %A, i32 %n) {
+define void @is3(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Schedule-not-valid.ll b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Schedule-not-valid.ll
index 356f0d2ee5862..5ce3ad267bb0a 100644
--- a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Schedule-not-valid.ll
+++ b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Schedule-not-valid.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @is4(i32* %A, i32 %n) {
+define void @is4(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Statements-mispelled.ll b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Statements-mispelled.ll
index e1692213f08bb..4329653899b25 100644
--- a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Statements-mispelled.ll
+++ b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Statements-mispelled.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @is(i32* %A, i32 %n) {
+define void @is(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Wrong-number-statements.ll b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Wrong-number-statements.ll
index 449682e5e4562..f66fc6c1e5d76 100644
--- a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Wrong-number-statements.ll
+++ b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Wrong-number-statements.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @is2(i32* %A, i32 %n) {
+define void @is2(ptr %A, i32 %n) {
 entry:
   br label %for.cond
 
@@ -27,9 +27,9 @@ for.body:                                         ; preds = %for.cond
   br label %S0
 
 S0:                                               ; preds = %for.body
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %A, align 4
+  store i32 %add, ptr %A, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S0
@@ -50,8 +50,8 @@ for.body5:                                        ; preds = %for.cond2
 
 S1:                                               ; preds = %for.body5
   %add6 = add nsw i32 %i1.0, 1
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
-  store i32 1, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add6
+  store i32 1, ptr %arrayidx7, align 4
   br label %for.inc8
 
 for.inc8:                                         ; preds = %S1

diff  --git a/polly/test/MaximalStaticExpansion/load_after_store_same_statement.ll b/polly/test/MaximalStaticExpansion/load_after_store_same_statement.ll
index 26ed404fd4f63..791210f7710dd 100644
--- a/polly/test/MaximalStaticExpansion/load_after_store_same_statement.ll
+++ b/polly/test/MaximalStaticExpansion/load_after_store_same_statement.ll
@@ -33,7 +33,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @mse(double* %A, double* %B, double* %C, double* %D) {
+define void @mse(ptr %A, ptr %B, ptr %C, ptr %D) {
 entry:
   br label %entry.split
 
@@ -48,14 +48,12 @@ for.body4:                                        ; preds = %for.body, %for.body
   %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body4 ]
   %0 = trunc i64 %indvars.iv to i32
   %conv = sitofp i32 %0 to double
-  %arrayidx = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  store double %conv, double* %arrayidx, align 8
-  %arrayidx6 = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  %1 = bitcast double* %arrayidx6 to i64*
-  %2 = load i64, i64* %1, align 8
-  %arrayidx8 = getelementptr inbounds double, double* %C, i64 %indvars.iv
-  %3 = bitcast double* %arrayidx8 to i64*
-  store i64 %2, i64* %3, align 8
+  %arrayidx = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  store double %conv, ptr %arrayidx, align 8
+  %arrayidx6 = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  %1 = load i64, ptr %arrayidx6, align 8
+  %arrayidx8 = getelementptr inbounds double, ptr %C, i64 %indvars.iv
+  store i64 %1, ptr %arrayidx8, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 10000
   br i1 %exitcond, label %for.body4, label %for.inc9

diff  --git a/polly/test/MaximalStaticExpansion/read_from_original.ll b/polly/test/MaximalStaticExpansion/read_from_original.ll
index 95fd37bc251fd..59f9379516c7d 100644
--- a/polly/test/MaximalStaticExpansion/read_from_original.ll
+++ b/polly/test/MaximalStaticExpansion/read_from_original.ll
@@ -36,7 +36,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define double @mse(double* %A, double* %B) {
+define double @mse(ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -52,19 +52,17 @@ for.body3:                                        ; preds = %for.body, %for.body
   %0 = trunc i64 %indvars.iv to i32
   %conv = sitofp i32 %0 to double
   %1 = add nsw i64 %indvars.iv, -1
-  %arrayidx = getelementptr inbounds double, double* %B, i64 %1
-  store double %conv, double* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds double, ptr %B, i64 %1
+  store double %conv, ptr %arrayidx, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 3000
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.end:                                          ; preds = %for.body3
-  %arrayidx5 = getelementptr inbounds double, double* %B, i64 %indvars.iv4
-  %2 = bitcast double* %arrayidx5 to i64*
-  %3 = load i64, i64* %2, align 8
-  %arrayidx7 = getelementptr inbounds double, double* %A, i64 %indvars.iv4
-  %4 = bitcast double* %arrayidx7 to i64*
-  store i64 %3, i64* %4, align 8
+  %arrayidx5 = getelementptr inbounds double, ptr %B, i64 %indvars.iv4
+  %2 = load i64, ptr %arrayidx5, align 8
+  %arrayidx7 = getelementptr inbounds double, ptr %A, i64 %indvars.iv4
+  store i64 %2, ptr %arrayidx7, align 8
   %indvars.iv.next5 = add nuw nsw i64 %indvars.iv4, 1
   %exitcond6 = icmp ne i64 %indvars.iv.next5, 2000
   br i1 %exitcond6, label %for.body, label %for.end10

diff  --git a/polly/test/MaximalStaticExpansion/too_many_writes.ll b/polly/test/MaximalStaticExpansion/too_many_writes.ll
index 594f2a235dab8..50a66cd11d0a9 100644
--- a/polly/test/MaximalStaticExpansion/too_many_writes.ll
+++ b/polly/test/MaximalStaticExpansion/too_many_writes.ll
@@ -39,7 +39,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define double @mse(double* %A, double* %B) {
+define double @mse(ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -48,27 +48,25 @@ entry.split:                                      ; preds = %entry
 
 for.body:                                         ; preds = %entry.split, %for.end
   %indvars.iv3 = phi i64 [ 0, %entry.split ], [ %indvars.iv.next4, %for.end ]
-  %arrayidx = getelementptr inbounds double, double* %B, i64 %indvars.iv3
-  store double 2.000000e+00, double* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds double, ptr %B, i64 %indvars.iv3
+  store double 2.000000e+00, ptr %arrayidx, align 8
   br label %for.body3
 
 for.body3:                                        ; preds = %for.body, %for.body3
   %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body3 ]
   %0 = trunc i64 %indvars.iv to i32
   %conv = sitofp i32 %0 to double
-  %arrayidx5 = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  store double %conv, double* %arrayidx5, align 8
+  %arrayidx5 = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  store double %conv, ptr %arrayidx5, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 2000
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.end:                                          ; preds = %for.body3
-  %arrayidx7 = getelementptr inbounds double, double* %B, i64 %indvars.iv3
-  %1 = bitcast double* %arrayidx7 to i64*
-  %2 = load i64, i64* %1, align 8
-  %arrayidx9 = getelementptr inbounds double, double* %A, i64 %indvars.iv3
-  %3 = bitcast double* %arrayidx9 to i64*
-  store i64 %2, i64* %3, align 8
+  %arrayidx7 = getelementptr inbounds double, ptr %B, i64 %indvars.iv3
+  %1 = load i64, ptr %arrayidx7, align 8
+  %arrayidx9 = getelementptr inbounds double, ptr %A, i64 %indvars.iv3
+  store i64 %1, ptr %arrayidx9, align 8
   %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
   %exitcond5 = icmp ne i64 %indvars.iv.next4, 2000
   br i1 %exitcond5, label %for.body, label %for.end12

diff  --git a/polly/test/MaximalStaticExpansion/working_deps_between_inners.ll b/polly/test/MaximalStaticExpansion/working_deps_between_inners.ll
index f754982317fbe..8e2707cfee646 100644
--- a/polly/test/MaximalStaticExpansion/working_deps_between_inners.ll
+++ b/polly/test/MaximalStaticExpansion/working_deps_between_inners.ll
@@ -39,7 +39,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @mse(double* %A, double* %B) {
+define void @mse(ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -54,8 +54,8 @@ for.body3:                                        ; preds = %for.body, %for.body
   %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body3 ]
   %0 = trunc i64 %indvars.iv to i32
   %conv = sitofp i32 %0 to double
-  %arrayidx = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  store double %conv, double* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  store double %conv, ptr %arrayidx, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 10000
   br i1 %exitcond, label %for.body3, label %for.end
@@ -73,12 +73,12 @@ for.body11:                                       ; preds = %for.body7, %for.bod
   %2 = add nuw nsw i64 %1, %indvars.iv5
   %3 = trunc i64 %2 to i32
   %conv13 = sitofp i32 %3 to double
-  %arrayidx15 = getelementptr inbounds double, double* %B, i64 %indvars.iv5
-  %4 = load double, double* %arrayidx15, align 8
+  %arrayidx15 = getelementptr inbounds double, ptr %B, i64 %indvars.iv5
+  %4 = load double, ptr %arrayidx15, align 8
   %mul = fmul double %4, %conv13
   %5 = add nuw nsw i64 %indvars.iv9, %indvars.iv14
-  %arrayidx18 = getelementptr inbounds double, double* %A, i64 %5
-  store double %mul, double* %arrayidx18, align 8
+  %arrayidx18 = getelementptr inbounds double, ptr %A, i64 %5
+  store double %mul, ptr %arrayidx18, align 8
   %indvars.iv.next6 = add nuw nsw i64 %indvars.iv5, 1
   %exitcond8 = icmp ne i64 %indvars.iv.next6, 10000
   br i1 %exitcond8, label %for.body11, label %for.inc22

diff  --git a/polly/test/MaximalStaticExpansion/working_deps_between_inners_phi.ll b/polly/test/MaximalStaticExpansion/working_deps_between_inners_phi.ll
index 288148811fbcb..2bf49b89db05a 100644
--- a/polly/test/MaximalStaticExpansion/working_deps_between_inners_phi.ll
+++ b/polly/test/MaximalStaticExpansion/working_deps_between_inners_phi.ll
@@ -64,7 +64,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @mse(double* %A, double* %B) {
+define void @mse(ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -80,8 +80,8 @@ for.body3:                                        ; preds = %for.body, %for.body
   %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body3 ]
   %0 = trunc i64 %indvars.iv to i32
   %conv = sitofp i32 %0 to double
-  %arrayidx = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  store double %conv, double* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  store double %conv, ptr %arrayidx, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 10000
   br i1 %exitcond, label %for.body3, label %for.end
@@ -106,12 +106,12 @@ for.body11:                                       ; preds = %for.body7, %for.bod
   %3 = trunc i64 %indvars.iv11 to i32
   %conv15 = sitofp i32 %3 to double
   %add16 = fadd double %add14, %conv15
-  %arrayidx18 = getelementptr inbounds double, double* %B, i64 %indvars.iv8
-  %4 = load double, double* %arrayidx18, align 8
+  %arrayidx18 = getelementptr inbounds double, ptr %B, i64 %indvars.iv8
+  %4 = load double, ptr %arrayidx18, align 8
   %mul = fmul double %add16, %4
   %5 = add nuw nsw i64 %indvars.iv11, %indvars.iv15
-  %arrayidx21 = getelementptr inbounds double, double* %A, i64 %5
-  store double %mul, double* %arrayidx21, align 8
+  %arrayidx21 = getelementptr inbounds double, ptr %A, i64 %5
+  store double %mul, ptr %arrayidx21, align 8
   %indvars.iv.next9 = add nuw nsw i64 %indvars.iv8, 1
   %exitcond10 = icmp ne i64 %indvars.iv.next9, 10000
   br i1 %exitcond10, label %for.body11, label %for.inc25

diff  --git a/polly/test/MaximalStaticExpansion/working_expansion.ll b/polly/test/MaximalStaticExpansion/working_expansion.ll
index 269c892cfe221..bb5b2360143ff 100644
--- a/polly/test/MaximalStaticExpansion/working_expansion.ll
+++ b/polly/test/MaximalStaticExpansion/working_expansion.ll
@@ -32,7 +32,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define double @mse(double* %A, double* %B) {
+define double @mse(ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -47,19 +47,17 @@ for.body3:                                        ; preds = %for.body, %for.body
   %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body3 ]
   %0 = trunc i64 %indvars.iv to i32
   %conv = sitofp i32 %0 to double
-  %arrayidx = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  store double %conv, double* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  store double %conv, ptr %arrayidx, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 3000
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.end:                                          ; preds = %for.body3
-  %arrayidx5 = getelementptr inbounds double, double* %B, i64 %indvars.iv3
-  %1 = bitcast double* %arrayidx5 to i64*
-  %2 = load i64, i64* %1, align 8
-  %arrayidx7 = getelementptr inbounds double, double* %A, i64 %indvars.iv3
-  %3 = bitcast double* %arrayidx7 to i64*
-  store i64 %2, i64* %3, align 8
+  %arrayidx5 = getelementptr inbounds double, ptr %B, i64 %indvars.iv3
+  %1 = load i64, ptr %arrayidx5, align 8
+  %arrayidx7 = getelementptr inbounds double, ptr %A, i64 %indvars.iv3
+  store i64 %1, ptr %arrayidx7, align 8
   %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
   %exitcond5 = icmp ne i64 %indvars.iv.next4, 2000
   br i1 %exitcond5, label %for.body, label %for.end10

diff  --git a/polly/test/MaximalStaticExpansion/working_expansion_multiple_dependences_per_statement.ll b/polly/test/MaximalStaticExpansion/working_expansion_multiple_dependences_per_statement.ll
index 3f425a79cbed5..89ff7890fc7eb 100644
--- a/polly/test/MaximalStaticExpansion/working_expansion_multiple_dependences_per_statement.ll
+++ b/polly/test/MaximalStaticExpansion/working_expansion_multiple_dependences_per_statement.ll
@@ -40,7 +40,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @mse(double* %A, double* %B, double* %C, double* %D) {
+define void @mse(ptr %A, ptr %B, ptr %C, ptr %D) {
 entry:
   br label %entry.split
 
@@ -55,8 +55,8 @@ for.body4:                                        ; preds = %for.body, %for.body
   %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body4 ]
   %0 = trunc i64 %indvars.iv to i32
   %conv = sitofp i32 %0 to double
-  %arrayidx = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  store double %conv, double* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  store double %conv, ptr %arrayidx, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 10000
   br i1 %exitcond, label %for.body4, label %for.end
@@ -68,25 +68,21 @@ for.body9:                                        ; preds = %for.end, %for.body9
   %indvars.iv4 = phi i64 [ 0, %for.end ], [ %indvars.iv.next5, %for.body9 ]
   %1 = trunc i64 %indvars.iv4 to i32
   %conv10 = sitofp i32 %1 to double
-  %arrayidx12 = getelementptr inbounds double, double* %D, i64 %indvars.iv4
-  store double %conv10, double* %arrayidx12, align 8
+  %arrayidx12 = getelementptr inbounds double, ptr %D, i64 %indvars.iv4
+  store double %conv10, ptr %arrayidx12, align 8
   %indvars.iv.next5 = add nuw nsw i64 %indvars.iv4, 1
   %exitcond6 = icmp ne i64 %indvars.iv.next5, 10000
   br i1 %exitcond6, label %for.body9, label %for.end15
 
 for.end15:                                        ; preds = %for.body9
-  %arrayidx17 = getelementptr inbounds double, double* %B, i64 %indvars.iv7
-  %2 = bitcast double* %arrayidx17 to i64*
-  %3 = load i64, i64* %2, align 8
-  %arrayidx19 = getelementptr inbounds double, double* %A, i64 %indvars.iv7
-  %4 = bitcast double* %arrayidx19 to i64*
-  store i64 %3, i64* %4, align 8
-  %arrayidx21 = getelementptr inbounds double, double* %D, i64 %indvars.iv7
-  %5 = bitcast double* %arrayidx21 to i64*
-  %6 = load i64, i64* %5, align 8
-  %arrayidx23 = getelementptr inbounds double, double* %C, i64 %indvars.iv7
-  %7 = bitcast double* %arrayidx23 to i64*
-  store i64 %6, i64* %7, align 8
+  %arrayidx17 = getelementptr inbounds double, ptr %B, i64 %indvars.iv7
+  %2 = load i64, ptr %arrayidx17, align 8
+  %arrayidx19 = getelementptr inbounds double, ptr %A, i64 %indvars.iv7
+  store i64 %2, ptr %arrayidx19, align 8
+  %arrayidx21 = getelementptr inbounds double, ptr %D, i64 %indvars.iv7
+  %3 = load i64, ptr %arrayidx21, align 8
+  %arrayidx23 = getelementptr inbounds double, ptr %C, i64 %indvars.iv7
+  store i64 %3, ptr %arrayidx23, align 8
   %indvars.iv.next8 = add nuw nsw i64 %indvars.iv7, 1
   %exitcond9 = icmp ne i64 %indvars.iv.next8, 10000
   br i1 %exitcond9, label %for.body, label %for.end26

diff  --git a/polly/test/MaximalStaticExpansion/working_expansion_multiple_instruction_per_statement.ll b/polly/test/MaximalStaticExpansion/working_expansion_multiple_instruction_per_statement.ll
index 62edfa626e130..7ffd39f0f5347 100644
--- a/polly/test/MaximalStaticExpansion/working_expansion_multiple_instruction_per_statement.ll
+++ b/polly/test/MaximalStaticExpansion/working_expansion_multiple_instruction_per_statement.ll
@@ -38,7 +38,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @mse(double* %A, double* %B, double* %C, double* %D) {
+define void @mse(ptr %A, ptr %B, ptr %C, ptr %D) {
 entry:
   br label %entry.split
 
@@ -53,29 +53,25 @@ for.body4:                                        ; preds = %for.body, %for.body
   %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body4 ]
   %0 = trunc i64 %indvars.iv to i32
   %conv = sitofp i32 %0 to double
-  %arrayidx = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  store double %conv, double* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  store double %conv, ptr %arrayidx, align 8
   %1 = trunc i64 %indvars.iv to i32
   %conv5 = sitofp i32 %1 to double
-  %arrayidx7 = getelementptr inbounds double, double* %D, i64 %indvars.iv
-  store double %conv5, double* %arrayidx7, align 8
+  %arrayidx7 = getelementptr inbounds double, ptr %D, i64 %indvars.iv
+  store double %conv5, ptr %arrayidx7, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 10000
   br i1 %exitcond, label %for.body4, label %for.end
 
 for.end:                                          ; preds = %for.body4
-  %arrayidx9 = getelementptr inbounds double, double* %B, i64 %indvars.iv3
-  %2 = bitcast double* %arrayidx9 to i64*
-  %3 = load i64, i64* %2, align 8
-  %arrayidx11 = getelementptr inbounds double, double* %A, i64 %indvars.iv3
-  %4 = bitcast double* %arrayidx11 to i64*
-  store i64 %3, i64* %4, align 8
-  %arrayidx13 = getelementptr inbounds double, double* %D, i64 %indvars.iv3
-  %5 = bitcast double* %arrayidx13 to i64*
-  %6 = load i64, i64* %5, align 8
-  %arrayidx15 = getelementptr inbounds double, double* %C, i64 %indvars.iv3
-  %7 = bitcast double* %arrayidx15 to i64*
-  store i64 %6, i64* %7, align 8
+  %arrayidx9 = getelementptr inbounds double, ptr %B, i64 %indvars.iv3
+  %2 = load i64, ptr %arrayidx9, align 8
+  %arrayidx11 = getelementptr inbounds double, ptr %A, i64 %indvars.iv3
+  store i64 %2, ptr %arrayidx11, align 8
+  %arrayidx13 = getelementptr inbounds double, ptr %D, i64 %indvars.iv3
+  %3 = load i64, ptr %arrayidx13, align 8
+  %arrayidx15 = getelementptr inbounds double, ptr %C, i64 %indvars.iv3
+  store i64 %3, ptr %arrayidx15, align 8
   %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
   %exitcond5 = icmp ne i64 %indvars.iv.next4, 10000
   br i1 %exitcond5, label %for.body, label %for.end18

diff  --git a/polly/test/MaximalStaticExpansion/working_phi_expansion.ll b/polly/test/MaximalStaticExpansion/working_phi_expansion.ll
index 666d8c2bc4feb..43919c61b045b 100644
--- a/polly/test/MaximalStaticExpansion/working_phi_expansion.ll
+++ b/polly/test/MaximalStaticExpansion/working_phi_expansion.ll
@@ -46,7 +46,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @tmp(double* %A, double* %B) {
+define void @tmp(ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -68,8 +68,8 @@ for.inc:                                          ; preds = %for.body, %for.inc
 
 for.end:                                          ; preds = %for.inc
   %add.lcssa = phi double [ %add, %for.inc ]
-  %arrayidx = getelementptr inbounds double, double* %B, i64 %indvars.iv
-  store double %add.lcssa, double* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds double, ptr %B, i64 %indvars.iv
+  store double %add.lcssa, ptr %arrayidx, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond5 = icmp ne i64 %indvars.iv.next, 10000
   br i1 %exitcond5, label %for.body, label %for.end7

diff  --git a/polly/test/MaximalStaticExpansion/working_phi_two_scalars.ll b/polly/test/MaximalStaticExpansion/working_phi_two_scalars.ll
index 55c8466590c95..a581a389e7422 100644
--- a/polly/test/MaximalStaticExpansion/working_phi_two_scalars.ll
+++ b/polly/test/MaximalStaticExpansion/working_phi_two_scalars.ll
@@ -57,7 +57,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @tmp(double* %A, double* %B) {
+define void @tmp(ptr %A, ptr %B) {
 entry:
   br label %entry.split
 

diff  --git a/polly/test/MaximalStaticExpansion/working_value_expansion.ll b/polly/test/MaximalStaticExpansion/working_value_expansion.ll
index ca910b2052e0e..d54eff9e03ec5 100644
--- a/polly/test/MaximalStaticExpansion/working_value_expansion.ll
+++ b/polly/test/MaximalStaticExpansion/working_value_expansion.ll
@@ -33,7 +33,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @mse(double* %A, double* %B) {
+define void @mse(ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -49,15 +49,15 @@ for.body:                                         ; preds = %entry.split, %for.e
 for.body5:                                        ; preds = %for.body, %for.body5
   %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body5 ]
   %add = fadd double %conv, 3.000000e+00
-  %arrayidx = getelementptr inbounds double, double* %A, i64 %indvars.iv
-  store double %add, double* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds double, ptr %A, i64 %indvars.iv
+  store double %add, ptr %arrayidx, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 10000
   br i1 %exitcond, label %for.body5, label %for.end
 
 for.end:                                          ; preds = %for.body5
-  %arrayidx7 = getelementptr inbounds double, double* %B, i64 %indvars.iv3
-  store double %conv, double* %arrayidx7, align 8
+  %arrayidx7 = getelementptr inbounds double, ptr %B, i64 %indvars.iv3
+  store double %conv, ptr %arrayidx7, align 8
   %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
   %exitcond5 = icmp ne i64 %indvars.iv.next4, 10000
   br i1 %exitcond5, label %for.body, label %for.end10

diff  --git a/polly/test/PruneUnprofitable/prune_only_scalardeps.ll b/polly/test/PruneUnprofitable/prune_only_scalardeps.ll
index d6f2e1be596b0..31db5560c0514 100644
--- a/polly/test/PruneUnprofitable/prune_only_scalardeps.ll
+++ b/polly/test/PruneUnprofitable/prune_only_scalardeps.ll
@@ -14,7 +14,7 @@
 ;   }
 ; return x;
 ;
-define double @func(i32 %n, i32 %m, double* noalias nonnull %A, double* noalias nonnull %B) {
+define double @func(i32 %n, i32 %m, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %outer.for
 
@@ -31,8 +31,8 @@ outer.for:
       br i1 %j.cmp, label %body, label %inner.exit
 
         body:
-          store double %inner.phi, double* %B
-          %load = load double, double* %A
+          store double %inner.phi, ptr %B
+          %load = load double, ptr %A
           br label %inner.inc
 
     inner.inc:

diff  --git a/polly/test/ScheduleOptimizer/2012-04-16-Trivially-vectorizable-loops.ll b/polly/test/ScheduleOptimizer/2012-04-16-Trivially-vectorizable-loops.ll
index ef786524a0eae..8379da290769d 100644
--- a/polly/test/ScheduleOptimizer/2012-04-16-Trivially-vectorizable-loops.ll
+++ b/polly/test/ScheduleOptimizer/2012-04-16-Trivially-vectorizable-loops.ll
@@ -1,12 +1,12 @@
 ; RUN: opt %loadPolly -basic-aa -polly-opt-isl -polly-vectorizer=polly -disable-output < %s
 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"
 
-%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
-%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
+%struct._IO_FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i64, i32, [20 x i8] }
+%struct._IO_marker = type { ptr, ptr, i32 }
 
 @A = common global [1536 x [1536 x float]] zeroinitializer, align 16
 @B = common global [1536 x [1536 x float]] zeroinitializer, align 16
- at stdout = external global %struct._IO_FILE*
+ at stdout = external global ptr
 @.str = private unnamed_addr constant [5 x i8] c"%lf \00", align 1
 @C = common global [1536 x [1536 x float]] zeroinitializer, align 16
 @.str1 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
@@ -37,9 +37,9 @@ for.body3:                                        ; preds = %for.cond1
   %conv4 = fptrunc double %div to float
   %idxprom = sext i32 %j.0 to i64
   %idxprom5 = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds [1536 x [1536 x float]], [1536 x [1536 x float]]* @A, i32 0, i64 %idxprom5
-  %arrayidx6 = getelementptr inbounds [1536 x float], [1536 x float]* %arrayidx, i32 0, i64 %idxprom
-  store float %conv4, float* %arrayidx6, align 4
+  %arrayidx = getelementptr inbounds [1536 x [1536 x float]], ptr @A, i32 0, i64 %idxprom5
+  %arrayidx6 = getelementptr inbounds [1536 x float], ptr %arrayidx, i32 0, i64 %idxprom
+  store float %conv4, ptr %arrayidx6, align 4
   %mul7 = mul nsw i32 %i.0, %j.0
   %rem8 = srem i32 %mul7, 1024
   %add9 = add nsw i32 1, %rem8
@@ -48,9 +48,9 @@ for.body3:                                        ; preds = %for.cond1
   %conv12 = fptrunc double %div11 to float
   %idxprom13 = sext i32 %j.0 to i64
   %idxprom14 = sext i32 %i.0 to i64
-  %arrayidx15 = getelementptr inbounds [1536 x [1536 x float]], [1536 x [1536 x float]]* @B, i32 0, i64 %idxprom14
-  %arrayidx16 = getelementptr inbounds [1536 x float], [1536 x float]* %arrayidx15, i32 0, i64 %idxprom13
-  store float %conv12, float* %arrayidx16, align 4
+  %arrayidx15 = getelementptr inbounds [1536 x [1536 x float]], ptr @B, i32 0, i64 %idxprom14
+  %arrayidx16 = getelementptr inbounds [1536 x float], ptr %arrayidx15, i32 0, i64 %idxprom13
+  store float %conv12, ptr %arrayidx16, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3
@@ -86,21 +86,21 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %cmp2, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %0 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 8
+  %0 = load ptr, ptr @stdout, align 8
   %idxprom = sext i32 %j.0 to i64
   %idxprom4 = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds [1536 x [1536 x float]], [1536 x [1536 x float]]* @C, i32 0, i64 %idxprom4
-  %arrayidx5 = getelementptr inbounds [1536 x float], [1536 x float]* %arrayidx, i32 0, i64 %idxprom
-  %1 = load float, float* %arrayidx5, align 4
+  %arrayidx = getelementptr inbounds [1536 x [1536 x float]], ptr @C, i32 0, i64 %idxprom4
+  %arrayidx5 = getelementptr inbounds [1536 x float], ptr %arrayidx, i32 0, i64 %idxprom
+  %1 = load float, ptr %arrayidx5, align 4
   %conv = fpext float %1 to double
-  %call = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i32 0, i32 0), double %conv)
+  %call = call i32 (ptr, ptr, ...) @fprintf(ptr %0, ptr @.str, double %conv)
   %rem = srem i32 %j.0, 80
   %cmp6 = icmp eq i32 %rem, 79
   br i1 %cmp6, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body3
-  %2 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 8
-  %call8 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str1, i32 0, i32 0))
+  %2 = load ptr, ptr @stdout, align 8
+  %call8 = call i32 (ptr, ptr, ...) @fprintf(ptr %2, ptr @.str1)
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body3
@@ -111,8 +111,8 @@ for.inc:                                          ; preds = %if.end
   br label %for.cond1
 
 for.end:                                          ; preds = %for.cond1
-  %3 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 8
-  %call9 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str1, i32 0, i32 0))
+  %3 = load ptr, ptr @stdout, align 8
+  %call9 = call i32 (ptr, ptr, ...) @fprintf(ptr %3, ptr @.str1)
   br label %for.inc10
 
 for.inc10:                                        ; preds = %for.end
@@ -123,7 +123,7 @@ for.end12:                                        ; preds = %for.cond
   ret void
 }
 
-declare i32 @fprintf(%struct._IO_FILE*, i8*, ...)
+declare i32 @fprintf(ptr, ptr, ...)
 
 define i32 @main() nounwind uwtable {
 entry:
@@ -146,9 +146,9 @@ for.cond1:                                        ; preds = %for.inc25, %for.bod
 for.body3:                                        ; preds = %for.cond1
   %idxprom = sext i32 %j.0 to i64
   %idxprom4 = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds [1536 x [1536 x float]], [1536 x [1536 x float]]* @C, i32 0, i64 %idxprom4
-  %arrayidx5 = getelementptr inbounds [1536 x float], [1536 x float]* %arrayidx, i32 0, i64 %idxprom
-  store float 0.000000e+00, float* %arrayidx5, align 4
+  %arrayidx = getelementptr inbounds [1536 x [1536 x float]], ptr @C, i32 0, i64 %idxprom4
+  %arrayidx5 = getelementptr inbounds [1536 x float], ptr %arrayidx, i32 0, i64 %idxprom
+  store float 0.000000e+00, ptr %arrayidx5, align 4
   br label %for.cond6
 
 for.cond6:                                        ; preds = %for.inc, %for.body3
@@ -159,26 +159,26 @@ for.cond6:                                        ; preds = %for.inc, %for.body3
 for.body8:                                        ; preds = %for.cond6
   %idxprom9 = sext i32 %j.0 to i64
   %idxprom10 = sext i32 %i.0 to i64
-  %arrayidx11 = getelementptr inbounds [1536 x [1536 x float]], [1536 x [1536 x float]]* @C, i32 0, i64 %idxprom10
-  %arrayidx12 = getelementptr inbounds [1536 x float], [1536 x float]* %arrayidx11, i32 0, i64 %idxprom9
-  %0 = load float, float* %arrayidx12, align 4
+  %arrayidx11 = getelementptr inbounds [1536 x [1536 x float]], ptr @C, i32 0, i64 %idxprom10
+  %arrayidx12 = getelementptr inbounds [1536 x float], ptr %arrayidx11, i32 0, i64 %idxprom9
+  %0 = load float, ptr %arrayidx12, align 4
   %idxprom13 = sext i32 %k.0 to i64
   %idxprom14 = sext i32 %i.0 to i64
-  %arrayidx15 = getelementptr inbounds [1536 x [1536 x float]], [1536 x [1536 x float]]* @A, i32 0, i64 %idxprom14
-  %arrayidx16 = getelementptr inbounds [1536 x float], [1536 x float]* %arrayidx15, i32 0, i64 %idxprom13
-  %1 = load float, float* %arrayidx16, align 4
+  %arrayidx15 = getelementptr inbounds [1536 x [1536 x float]], ptr @A, i32 0, i64 %idxprom14
+  %arrayidx16 = getelementptr inbounds [1536 x float], ptr %arrayidx15, i32 0, i64 %idxprom13
+  %1 = load float, ptr %arrayidx16, align 4
   %idxprom17 = sext i32 %j.0 to i64
   %idxprom18 = sext i32 %k.0 to i64
-  %arrayidx19 = getelementptr inbounds [1536 x [1536 x float]], [1536 x [1536 x float]]* @B, i32 0, i64 %idxprom18
-  %arrayidx20 = getelementptr inbounds [1536 x float], [1536 x float]* %arrayidx19, i32 0, i64 %idxprom17
-  %2 = load float, float* %arrayidx20, align 4
+  %arrayidx19 = getelementptr inbounds [1536 x [1536 x float]], ptr @B, i32 0, i64 %idxprom18
+  %arrayidx20 = getelementptr inbounds [1536 x float], ptr %arrayidx19, i32 0, i64 %idxprom17
+  %2 = load float, ptr %arrayidx20, align 4
   %mul = fmul float %1, %2
   %add = fadd float %0, %mul
   %idxprom21 = sext i32 %j.0 to i64
   %idxprom22 = sext i32 %i.0 to i64
-  %arrayidx23 = getelementptr inbounds [1536 x [1536 x float]], [1536 x [1536 x float]]* @C, i32 0, i64 %idxprom22
-  %arrayidx24 = getelementptr inbounds [1536 x float], [1536 x float]* %arrayidx23, i32 0, i64 %idxprom21
-  store float %add, float* %arrayidx24, align 4
+  %arrayidx23 = getelementptr inbounds [1536 x [1536 x float]], ptr @C, i32 0, i64 %idxprom22
+  %arrayidx24 = getelementptr inbounds [1536 x float], ptr %arrayidx23, i32 0, i64 %idxprom21
+  store float %add, ptr %arrayidx24, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body8

diff  --git a/polly/test/ScheduleOptimizer/2013-04-11-Empty-Domain-two.ll b/polly/test/ScheduleOptimizer/2013-04-11-Empty-Domain-two.ll
index 3eef93c9f9519..3f4237b330b28 100644
--- a/polly/test/ScheduleOptimizer/2013-04-11-Empty-Domain-two.ll
+++ b/polly/test/ScheduleOptimizer/2013-04-11-Empty-Domain-two.ll
@@ -15,7 +15,7 @@ for:
 
 for.inc:
   %indvar.next = add i32 %indvar, 1
-  store double 1.0, double* %A
+  store double 1.0, ptr %A
   br label %for
 
 return:

diff  --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-double.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-double.ll
index 81f5d49881665..a61af2d092f3f 100644
--- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-double.ll
+++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-double.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s
 ; RUN: opt %loadPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s
 
-define void @func(i32 %n, [1024 x double]*  noalias nonnull %A,  [1024 x double]*  noalias nonnull %B) {
+define void @func(i32 %n, ptr  noalias nonnull %A,  ptr  noalias nonnull %B) {
 entry:
   br label %outer.for1
 
@@ -16,8 +16,8 @@ outer.for1:
     br i1 %j1.cmp, label %body1, label %exit1
 
       body1:
-        %arrayidx1 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i32 %k1, i32 %j1
-        store double 21.0, double* %arrayidx1
+        %arrayidx1 = getelementptr inbounds [1024 x double], ptr %A, i32 %k1, i32 %j1
+        store double 21.0, ptr %arrayidx1
         br label %inc1
 
   inc1:
@@ -45,8 +45,8 @@ outer.for2:
     br i1 %j2.cmp, label %body2, label %exit2
 
       body2:
-        %arrayidx2 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i32 %k2, i32 %j2
-        store double 42.0, double* %arrayidx2
+        %arrayidx2 = getelementptr inbounds [1024 x double], ptr %A, i32 %k2, i32 %j2
+        store double 42.0, ptr %arrayidx2
         br label %inc2
 
   inc2:

diff  --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-first.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-first.ll
index ed1451ab305b8..185d5c5b8c25e 100644
--- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-first.ll
+++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-first.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW
 ; RUN: opt %loadPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,OPT
 
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B, i32 %k) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %k) {
 entry:
   br label %for1
 
@@ -13,8 +13,8 @@ for1:
 
     body1:
       %idx1 = add i32 %j1, %k
-      %arrayidx1 = getelementptr inbounds double, double* %B, i32 %idx1
-      store double 21.0, double* %arrayidx1
+      %arrayidx1 = getelementptr inbounds double, ptr %B, i32 %idx1
+      store double 21.0, ptr %arrayidx1
       br label %inc1
 
 inc1:
@@ -31,8 +31,8 @@ for2:
   br i1 %j2.cmp, label %body2, label %exit2
 
     body2:
-      %arrayidx2 = getelementptr inbounds double, double* %B, i32 %j2
-      store double 42.0, double* %arrayidx2
+      %arrayidx2 = getelementptr inbounds double, ptr %B, i32 %j2
+      store double 42.0, ptr %arrayidx2
       br label %inc2
 
 inc2:
@@ -49,8 +49,8 @@ for3:
   br i1 %j3.cmp, label %body3, label %exit3
 
     body3:
-      %arrayidx3 = getelementptr inbounds double, double* %A, i32 %j3
-      store double 84.0, double* %arrayidx3
+      %arrayidx3 = getelementptr inbounds double, ptr %A, i32 %j3
+      store double 84.0, ptr %arrayidx3
       br label %inc3
 
 inc3:

diff  --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-third.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-third.ll
index ac21e6924406d..f1eca0ede061d 100644
--- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-third.ll
+++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-third.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW
 ; RUN: opt %loadPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK
 
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B, i32 %k) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %k) {
 entry:
   br label %for1
 
@@ -12,8 +12,8 @@ for1:
   br i1 %j1.cmp, label %body1, label %exit1
 
     body1:
-      %arrayidx1 = getelementptr inbounds double, double* %A, i32 %j1
-      store double 21.0, double* %arrayidx1
+      %arrayidx1 = getelementptr inbounds double, ptr %A, i32 %j1
+      store double 21.0, ptr %arrayidx1
       br label %inc1
 
 inc1:
@@ -30,8 +30,8 @@ for2:
   br i1 %j2.cmp, label %body2, label %exit2
 
     body2:
-      %arrayidx2 = getelementptr inbounds double, double* %B, i32 %j1
-      store double 42.0, double* %arrayidx2
+      %arrayidx2 = getelementptr inbounds double, ptr %B, i32 %j1
+      store double 42.0, ptr %arrayidx2
       br label %inc2
 
 inc2:
@@ -49,8 +49,8 @@ for3:
 
     body3:
       %idx3 = add i32 %j3, %k
-      %arrayidx3 = getelementptr inbounds double, double* %B, i32 %idx3
-      store double 84.0, double* %arrayidx3
+      %arrayidx3 = getelementptr inbounds double, ptr %B, i32 %idx3
+      store double 84.0, ptr %arrayidx3
       br label %inc3
 
 inc3:

diff  --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-carried.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-carried.ll
index 779694ae3eb20..35903ced7741e 100644
--- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-carried.ll
+++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-carried.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW
 ; RUN: opt %loadPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,OPT
 
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %outer.for
 
@@ -16,8 +16,8 @@ outer.for:
     br i1 %j1.cmp, label %body1, label %exit1
 
       body1:
-        %arrayidx1 = getelementptr inbounds double, double* %A, i32 %j1
-        store double 21.0, double* %arrayidx1
+        %arrayidx1 = getelementptr inbounds double, ptr %A, i32 %j1
+        store double 21.0, ptr %arrayidx1
         br label %inc1
 
   inc1:
@@ -33,8 +33,8 @@ outer.for:
     br i1 %j2.cmp, label %body2, label %exit2
 
       body2:
-        %arrayidx2 = getelementptr inbounds double, double* %A, i32 %j2
-        store double 42.0, double* %arrayidx2
+        %arrayidx2 = getelementptr inbounds double, ptr %A, i32 %j2
+        store double 42.0, ptr %arrayidx2
         br label %inc2
 
   inc2:

diff  --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-third.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-third.ll
index 00f25eb4890d7..1fb8c001069f0 100644
--- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-third.ll
+++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-third.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW
 ; RUN: opt %loadPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK
 
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B, i32 %k) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %k) {
 entry:
   br label %for1
 
@@ -12,8 +12,8 @@ for1:
   br i1 %j1.cmp, label %body1, label %exit1
 
     body1:
-      %arrayidx1 = getelementptr inbounds double, double* %A, i32 %j1
-      store double 21.0, double* %arrayidx1
+      %arrayidx1 = getelementptr inbounds double, ptr %A, i32 %j1
+      store double 21.0, ptr %arrayidx1
       br label %inc1
 
 inc1:
@@ -30,8 +30,8 @@ for2:
   br i1 %j2.cmp, label %body2, label %exit2
 
     body2:
-      %arrayidx2 = getelementptr inbounds double, double* %B, i32 %j2
-      store double 42.0, double* %arrayidx2
+      %arrayidx2 = getelementptr inbounds double, ptr %B, i32 %j2
+      store double 42.0, ptr %arrayidx2
       br label %inc2
 
 inc2:
@@ -49,8 +49,8 @@ for3:
 
     body3:
       %idx3 = add i32 %j3, %k
-      %arrayidx3 = getelementptr inbounds double, double* %B, i32 %idx3
-      store double 84.0, double* %arrayidx3
+      %arrayidx3 = getelementptr inbounds double, ptr %B, i32 %idx3
+      store double 84.0, ptr %arrayidx3
       br label %inc3
 
 inc3:

diff  --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner.ll
index 53cd6a6f3912a..2db6833fa897e 100644
--- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner.ll
+++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s
 ; RUN: opt %loadPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s
 
-define void @func(i32 %n, [1024 x double]* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %outer.for
 
@@ -16,8 +16,8 @@ outer.for:
     br i1 %j1.cmp, label %body1, label %exit1
 
       body1:
-        %arrayidx1 = getelementptr inbounds  [1024 x double], [1024 x double]* %A, i32 %k, i32 %j1
-        store double 21.0, double* %arrayidx1
+        %arrayidx1 = getelementptr inbounds  [1024 x double], ptr %A, i32 %k, i32 %j1
+        store double 21.0, ptr %arrayidx1
         br label %inc1
 
   inc1:
@@ -33,8 +33,8 @@ outer.for:
     br i1 %j2.cmp, label %body2, label %exit2
 
       body2:
-        %arrayidx2 = getelementptr inbounds  [1024 x double], [1024 x double]* %A, i32 %k, i32 %j2
-        store double 42.0, double* %arrayidx2
+        %arrayidx2 = getelementptr inbounds  [1024 x double], ptr %A, i32 %k, i32 %j2
+        store double 42.0, ptr %arrayidx2
         br label %inc2
 
   inc2:

diff  --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-simple.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-simple.ll
index 06ba9a520e3cb..49d008ba2cfa0 100644
--- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-simple.ll
+++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-simple.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s
 ; RUN: opt %loadPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s
 
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for1
 
@@ -11,8 +11,8 @@ for1:
   br i1 %j1.cmp, label %body1, label %exit1
 
     body1:
-      %arrayidx1 = getelementptr inbounds double, double* %A, i32 %j1
-      store double 21.0, double* %arrayidx1
+      %arrayidx1 = getelementptr inbounds double, ptr %A, i32 %j1
+      store double 21.0, ptr %arrayidx1
       br label %inc1
 
 inc1:
@@ -28,8 +28,8 @@ for2:
   br i1 %j2.cmp, label %body2, label %exit2
 
     body2:
-      %arrayidx2 = getelementptr inbounds double, double* %A, i32 %j2
-      store double 42.0, double* %arrayidx2
+      %arrayidx2 = getelementptr inbounds double, ptr %A, i32 %j2
+      store double 42.0, ptr %arrayidx2
       br label %inc2
 
 inc2:

diff  --git a/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-simple.ll b/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-simple.ll
index 41e72e7de89a5..175b85997ec0c 100644
--- a/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-simple.ll
+++ b/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-simple.ll
@@ -3,7 +3,7 @@
 
 ; This could theoretically be fused by adjusting the offset of the second loop by %k (instead of relying on schedule dimensions).
 
-define void @func(i32 %n, double* noalias nonnull %A, i32 %k) {
+define void @func(i32 %n, ptr noalias nonnull %A, i32 %k) {
 entry:
   br label %for1
 
@@ -13,8 +13,8 @@ for1:
   br i1 %j1.cmp, label %body1, label %exit1
 
     body1:
-      %arrayidx1 = getelementptr inbounds double, double* %A, i32 %j1
-      store double 21.0, double* %arrayidx1
+      %arrayidx1 = getelementptr inbounds double, ptr %A, i32 %j1
+      store double 21.0, ptr %arrayidx1
       br label %inc1
 
 inc1:
@@ -31,8 +31,8 @@ for2:
 
     body2:
       %idx2 = add i32 %j2, %k
-      %arrayidx2 = getelementptr inbounds double, double* %A, i32 %idx2
-      store double 42.0, double* %arrayidx2
+      %arrayidx2 = getelementptr inbounds double, ptr %A, i32 %idx2
+      store double 42.0, ptr %arrayidx2
       br label %inc2
 
 inc2:

diff  --git a/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-with-middle.ll b/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-with-middle.ll
index 2b8b1c785ddac..48ba20347d55d 100644
--- a/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-with-middle.ll
+++ b/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-with-middle.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s
 ; RUN: opt %loadPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s
 
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B, i32 %k) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %k) {
 entry:
   br label %for1
 
@@ -13,8 +13,8 @@ for1:
 
     body1:
       %idx1 = add i32 %j1, %k
-      %arrayidx1 = getelementptr inbounds double, double* %A, i32 %j1
-      store double 21.0, double* %arrayidx1
+      %arrayidx1 = getelementptr inbounds double, ptr %A, i32 %j1
+      store double 21.0, ptr %arrayidx1
       br label %inc1
 
 inc1:
@@ -26,7 +26,7 @@ exit1:
 
 
 middle2:
-  store double 52.0, double* %A
+  store double 52.0, ptr %A
   br label %for3
 
 
@@ -36,8 +36,8 @@ for3:
   br i1 %j3.cmp, label %body3, label %exit3
 
     body3:
-      %arrayidx3 = getelementptr inbounds double, double* %B, i32 %j3
-      store double 84.0, double* %arrayidx3
+      %arrayidx3 = getelementptr inbounds double, ptr %B, i32 %j3
+      store double 84.0, ptr %arrayidx3
       br label %inc3
 
 inc3:

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/disable_nonforced.ll b/polly/test/ScheduleOptimizer/ManualOptimization/disable_nonforced.ll
index 344c46fe0b0da..537721f8718a4 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/disable_nonforced.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/disable_nonforced.ll
@@ -3,7 +3,7 @@
 ; Check that the disable_nonforced metadata is honored; optimization
 ; heuristics/rescheduling must not be applied.
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -21,8 +21,8 @@ for:
         bodyA:
           %mul = mul nuw nsw i32 %j, 128
           %add = add nuw nsw i32 %mul, %i
-          %A_idx = getelementptr inbounds double, double* %A, i32 %add
-          store double 0.0, double* %A_idx
+          %A_idx = getelementptr inbounds double, ptr %A, i32 %add
+          store double 0.0, ptr %A_idx
           br label %inner.inc
 
 

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_heuristic.ll b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_heuristic.ll
index 107913e7aba5c..aaf4d27f4c5ec 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_heuristic.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_heuristic.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-pragma-based-opts=1 -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines --check-prefix=ON
 ; RUN: opt %loadPolly -polly-reschedule=0 -polly-pragma-based-opts=0 -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines --check-prefix=OFF
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -11,9 +11,9 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       %c = fadd double 21.0, 21.0
-      store double %c, double* %B
+      store double %c, ptr %B
       br label %inc
 
 inc:

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_looploc.ll b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_looploc.ll
index f464f5a367e06..b1e94227c9a58 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_looploc.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_looploc.ll
@@ -13,10 +13,10 @@ source_filename = "distribute_illegal.c"
 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 dso_local void @foo(double* %A, double* %B) #0 !dbg !7 {
+define dso_local void @foo(ptr %A, ptr %B) #0 !dbg !7 {
 entry:
-  call void @llvm.dbg.value(metadata double* %A, metadata !13, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.value(metadata double* %B, metadata !14, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %A, metadata !13, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %B, metadata !14, metadata !DIExpression()), !dbg !18
   call void @llvm.dbg.value(metadata i32 1, metadata !15, metadata !DIExpression()), !dbg !19
   br label %for.cond, !dbg !20
 
@@ -29,16 +29,16 @@ for.cond:
 for.body:
   %conv = sitofp i32 %i.0 to double, !dbg !24
   %idxprom = sext i32 %i.0 to i64, !dbg !26
-  %arrayidx = getelementptr inbounds double, double* %A, i64 %idxprom, !dbg !26
-  store double %conv, double* %arrayidx, align 8, !dbg !27, !tbaa !28
+  %arrayidx = getelementptr inbounds double, ptr %A, i64 %idxprom, !dbg !26
+  store double %conv, ptr %arrayidx, align 8, !dbg !27, !tbaa !28
 
   %add = add nsw i32 %i.0, 1, !dbg !32
   %idxprom1 = sext i32 %add to i64, !dbg !33
-  %arrayidx2 = getelementptr inbounds double, double* %A, i64 %idxprom1, !dbg !33
-  %0 = load double, double* %arrayidx2, align 8, !dbg !33, !tbaa !28
+  %arrayidx2 = getelementptr inbounds double, ptr %A, i64 %idxprom1, !dbg !33
+  %0 = load double, ptr %arrayidx2, align 8, !dbg !33, !tbaa !28
   %idxprom3 = sext i32 %i.0 to i64, !dbg !34
-  %arrayidx4 = getelementptr inbounds double, double* %B, i64 %idxprom3, !dbg !34
-  store double %0, double* %arrayidx4, align 8, !dbg !35, !tbaa !28
+  %arrayidx4 = getelementptr inbounds double, ptr %B, i64 %idxprom3, !dbg !34
+  store double %0, ptr %arrayidx4, align 8, !dbg !35, !tbaa !28
 
   %inc = add nsw i32 %i.0, 1, !dbg !36
   call void @llvm.dbg.value(metadata i32 %inc, metadata !15, metadata !DIExpression()), !dbg !19
@@ -50,9 +50,9 @@ for.end:
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2
 
-declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2
 
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
 

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_pragmaloc.ll b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_pragmaloc.ll
index fd03ad0fa6419..fc0df85b13461 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_pragmaloc.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_pragmaloc.ll
@@ -13,10 +13,10 @@ source_filename = "distribute_illegal.c"
 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 dso_local void @foo(double* %A, double* %B) #0 !dbg !7 {
+define dso_local void @foo(ptr %A, ptr %B) #0 !dbg !7 {
 entry:
-  call void @llvm.dbg.value(metadata double* %A, metadata !13, metadata !DIExpression()), !dbg !18
-  call void @llvm.dbg.value(metadata double* %B, metadata !14, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %A, metadata !13, metadata !DIExpression()), !dbg !18
+  call void @llvm.dbg.value(metadata ptr %B, metadata !14, metadata !DIExpression()), !dbg !18
   call void @llvm.dbg.value(metadata i32 1, metadata !15, metadata !DIExpression()), !dbg !19
   br label %for.cond, !dbg !20
 
@@ -29,16 +29,16 @@ for.cond:
 for.body:
   %conv = sitofp i32 %i.0 to double, !dbg !24
   %idxprom = sext i32 %i.0 to i64, !dbg !26
-  %arrayidx = getelementptr inbounds double, double* %A, i64 %idxprom, !dbg !26
-  store double %conv, double* %arrayidx, align 8, !dbg !27, !tbaa !28
+  %arrayidx = getelementptr inbounds double, ptr %A, i64 %idxprom, !dbg !26
+  store double %conv, ptr %arrayidx, align 8, !dbg !27, !tbaa !28
 
   %add = add nsw i32 %i.0, 1, !dbg !32
   %idxprom1 = sext i32 %add to i64, !dbg !33
-  %arrayidx2 = getelementptr inbounds double, double* %A, i64 %idxprom1, !dbg !33
-  %0 = load double, double* %arrayidx2, align 8, !dbg !33, !tbaa !28
+  %arrayidx2 = getelementptr inbounds double, ptr %A, i64 %idxprom1, !dbg !33
+  %0 = load double, ptr %arrayidx2, align 8, !dbg !33, !tbaa !28
   %idxprom3 = sext i32 %i.0 to i64, !dbg !34
-  %arrayidx4 = getelementptr inbounds double, double* %B, i64 %idxprom3, !dbg !34
-  store double %0, double* %arrayidx4, align 8, !dbg !35, !tbaa !28
+  %arrayidx4 = getelementptr inbounds double, ptr %B, i64 %idxprom3, !dbg !34
+  store double %0, ptr %arrayidx4, align 8, !dbg !35, !tbaa !28
 
   %inc = add nsw i32 %i.0, 1, !dbg !36
   call void @llvm.dbg.value(metadata i32 %inc, metadata !15, metadata !DIExpression()), !dbg !19
@@ -50,9 +50,9 @@ for.end:
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2
 
-declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2
 
 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
 

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_disable.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_disable.ll
index 10ba5cd9b933c..9537f3a9b0a8a 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_disable.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_disable.ll
@@ -2,7 +2,7 @@
 ;
 ; Override unroll metadata with llvm.loop.unroll.disable.
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -12,7 +12,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_double.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_double.ll
index 9e2c5d3f0c4ff..b0310970f8d60 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_double.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_double.ll
@@ -2,7 +2,7 @@
 ;
 ; Apply two loop transformations. First partial, then full unrolling.
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -12,7 +12,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_full.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_full.ll
index 4b3d20fda0147..b9a4c845477c5 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_full.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_full.ll
@@ -2,7 +2,7 @@
 ;
 ; Full unroll of a loop with 5 iterations.
 ;
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -12,7 +12,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_heuristic.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_heuristic.ll
index 2845ff7aebbf9..0387aecd683bb 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_heuristic.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_heuristic.ll
@@ -4,7 +4,7 @@
 ; Unrolling with heuristic factor.
 ; Currently not supported and expected to be handled by LLVM's unroll pass.
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -14,7 +14,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial.ll
index a35a1531fdddc..81e40f0a98bb5 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial.ll
@@ -3,7 +3,7 @@
 ;
 ; Partial unroll by a factor of 4.
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -13,7 +13,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial_followup.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial_followup.ll
index 9ed069c74a8d5..8665f68b99c17 100644
--- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial_followup.ll
+++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial_followup.ll
@@ -4,7 +4,7 @@
 ;
 ; Partial unroll by a factor of 4.
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -14,7 +14,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ScheduleOptimizer/SIMDInParallelFor.ll b/polly/test/ScheduleOptimizer/SIMDInParallelFor.ll
index 66febc741e183..8585634e10ff7 100644
--- a/polly/test/ScheduleOptimizer/SIMDInParallelFor.ll
+++ b/polly/test/ScheduleOptimizer/SIMDInParallelFor.ll
@@ -36,10 +36,10 @@ for.cond66.preheader:
 
 for.body75:
   %indvars.iv215 = phi i64 [ %indvars.iv213, %for.cond66.preheader ], [ %indvars.iv.next216, %for.body75 ]
-  %arrayidx83 = getelementptr inbounds [1984 x [1984 x double]], [1984 x [1984 x double]]* @b, i64 0, i64 %indvars.iv219, i64 %indvars.iv215
-  %tmp3 = load double, double* %arrayidx83, align 8
-  %arrayidx87 = getelementptr inbounds [1984 x [1984 x double]], [1984 x [1984 x double]]* @c, i64 0, i64 %indvars.iv223, i64 %indvars.iv215
-  store double undef, double* %arrayidx87, align 8
+  %arrayidx83 = getelementptr inbounds [1984 x [1984 x double]], ptr @b, i64 0, i64 %indvars.iv219, i64 %indvars.iv215
+  %tmp3 = load double, ptr %arrayidx83, align 8
+  %arrayidx87 = getelementptr inbounds [1984 x [1984 x double]], ptr @c, i64 0, i64 %indvars.iv223, i64 %indvars.iv215
+  store double undef, ptr %arrayidx87, align 8
   %indvars.iv.next216 = add nuw nsw i64 %indvars.iv215, 1
   %cmp74 = icmp ult i64 %indvars.iv.next216, %tmp2
   br i1 %cmp74, label %for.body75, label %for.inc92

diff  --git a/polly/test/ScheduleOptimizer/computeout.ll b/polly/test/ScheduleOptimizer/computeout.ll
index 55d59a3441359..35e3416f91d11 100644
--- a/polly/test/ScheduleOptimizer/computeout.ll
+++ b/polly/test/ScheduleOptimizer/computeout.ll
@@ -20,8 +20,8 @@ entry:
 
 S1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
-  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
-  store i32 2, i32* %arrayidx.1
+  %arrayidx.1 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.1
+  store i32 2, ptr %arrayidx.1
   %indvar.next.1 = add i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, 100
   br i1 %exitcond.1, label %S1, label %exit.1
@@ -31,8 +31,8 @@ exit.1:
 
 S2:
   %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
-  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
-  store i32 5, i32* %arrayidx.2
+  %arrayidx.2 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.2
+  store i32 5, ptr %arrayidx.2
   %indvar.next.2 = add i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, 10
   br i1 %exitcond.2, label %S2, label %exit.2
@@ -42,8 +42,8 @@ exit.2:
 
 S3:
   %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
-  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
-  store i32 7, i32* %arrayidx.3
+  %arrayidx.3 = getelementptr [200 x i32], ptr %A, i64 0, i64 %indvar.3
+  store i32 7, ptr %arrayidx.3
   %indvar.next.3 = add i64 %indvar.3, 1
   %exitcond.3 = icmp ne i64 %indvar.next.3, 200
   br i1 %exitcond.3, label %S3 , label %exit.3

diff  --git a/polly/test/ScheduleOptimizer/ensure-correct-tile-sizes.ll b/polly/test/ScheduleOptimizer/ensure-correct-tile-sizes.ll
index ba6abcd28deb2..43caca5372ad6 100644
--- a/polly/test/ScheduleOptimizer/ensure-correct-tile-sizes.ll
+++ b/polly/test/ScheduleOptimizer/ensure-correct-tile-sizes.ll
@@ -171,7 +171,7 @@
 ; CHECK-NEXT:          }
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f([3000 x i32]* %A, [3000 x i32]* %B, [3000 x i32]* %C) {
+define void @f(ptr %A, ptr %B, ptr %C) {
 entry:
   br label %for.cond
 
@@ -189,8 +189,8 @@ for.cond1:                                        ; preds = %for.inc21, %for.bod
   br i1 %exitcond3, label %for.body3, label %for.end23
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx5 = getelementptr inbounds [3000 x i32], [3000 x i32]* %A, i64 %indvars.iv4, i64 %indvars.iv1
-  store i32 0, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds [3000 x i32], ptr %A, i64 %indvars.iv4, i64 %indvars.iv1
+  store i32 0, ptr %arrayidx5, align 4
   br label %for.cond6
 
 for.cond6:                                        ; preds = %for.inc, %for.body3
@@ -199,15 +199,15 @@ for.cond6:                                        ; preds = %for.inc, %for.body3
   br i1 %exitcond, label %for.body8, label %for.end
 
 for.body8:                                        ; preds = %for.cond6
-  %arrayidx12 = getelementptr inbounds [3000 x i32], [3000 x i32]* %B, i64 %indvars.iv4, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx12, align 4
-  %arrayidx16 = getelementptr inbounds [3000 x i32], [3000 x i32]* %C, i64 %indvars.iv, i64 %indvars.iv1
-  %tmp7 = load i32, i32* %arrayidx16, align 4
+  %arrayidx12 = getelementptr inbounds [3000 x i32], ptr %B, i64 %indvars.iv4, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx12, align 4
+  %arrayidx16 = getelementptr inbounds [3000 x i32], ptr %C, i64 %indvars.iv, i64 %indvars.iv1
+  %tmp7 = load i32, ptr %arrayidx16, align 4
   %mul = mul nsw i32 %tmp, %tmp7
-  %arrayidx20 = getelementptr inbounds [3000 x i32], [3000 x i32]* %A, i64 %indvars.iv4, i64 %indvars.iv1
-  %tmp8 = load i32, i32* %arrayidx20, align 4
+  %arrayidx20 = getelementptr inbounds [3000 x i32], ptr %A, i64 %indvars.iv4, i64 %indvars.iv1
+  %tmp8 = load i32, ptr %arrayidx20, align 4
   %add = add nsw i32 %tmp8, %mul
-  store i32 %add, i32* %arrayidx20, align 4
+  store i32 %add, ptr %arrayidx20, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body8

diff  --git a/polly/test/ScheduleOptimizer/focaltech_test_detail_threshold-7bc17e.ll b/polly/test/ScheduleOptimizer/focaltech_test_detail_threshold-7bc17e.ll
index ab0ab29442483..daa1afdd0aa82 100644
--- a/polly/test/ScheduleOptimizer/focaltech_test_detail_threshold-7bc17e.ll
+++ b/polly/test/ScheduleOptimizer/focaltech_test_detail_threshold-7bc17e.ll
@@ -5,7 +5,7 @@
 ;
 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
 
-%struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75 = type { [60 x i8]*, [60 x i32]*, [60 x i32]*, [60 x i32]*, [60 x i32]*, [60 x i32]*, [60 x i32]* }
+%struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
 @ft8006m_g_stCfg_Incell_DetailThreshold = external dso_local local_unnamed_addr global %struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75, align 8
 declare dso_local i32 @ft8006m_atoi() local_unnamed_addr #0
 
@@ -33,9 +33,9 @@ for.cond21:                                       ; preds = %for.body23, %for.co
   br i1 %exitcond298, label %for.cond28, label %for.body23
 
 for.body23:                                       ; preds = %for.cond21
-  %1 = load [60 x i32]*, [60 x i32]** getelementptr inbounds (%struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75, %struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75* @ft8006m_g_stCfg_Incell_DetailThreshold, i64 0, i32 2), align 8
-  %arrayidx25 = getelementptr [60 x i32], [60 x i32]* %1, i64 %indvars.iv302, i64 %indvars.iv296
-  store i32 undef, i32* %arrayidx25, align 4
+  %1 = load ptr, ptr getelementptr inbounds (%struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75, ptr @ft8006m_g_stCfg_Incell_DetailThreshold, i64 0, i32 2), align 8
+  %arrayidx25 = getelementptr [60 x i32], ptr %1, i64 %indvars.iv302, i64 %indvars.iv296
+  store i32 undef, ptr %arrayidx25, align 4
   %indvars.iv.next297 = add nuw nsw i64 %indvars.iv296, 1
   br label %for.cond21
 
@@ -45,9 +45,9 @@ for.cond28:                                       ; preds = %for.body30, %for.co
   br i1 %exitcond301, label %for.inc39, label %for.body30
 
 for.body30:                                       ; preds = %for.cond28
-  %2 = load [60 x i32]*, [60 x i32]** getelementptr inbounds (%struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75, %struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75* @ft8006m_g_stCfg_Incell_DetailThreshold, i64 0, i32 2), align 8
-  %arrayidx34 = getelementptr [60 x i32], [60 x i32]* %2, i64 %0, i64 %indvars.iv299
-  store i32 undef, i32* %arrayidx34, align 4
+  %2 = load ptr, ptr getelementptr inbounds (%struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75, ptr @ft8006m_g_stCfg_Incell_DetailThreshold, i64 0, i32 2), align 8
+  %arrayidx34 = getelementptr [60 x i32], ptr %2, i64 %0, i64 %indvars.iv299
+  store i32 undef, ptr %arrayidx34, align 4
   %indvars.iv.next300 = add nuw nsw i64 %indvars.iv299, 1
   br label %for.cond28
 

diff  --git a/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll b/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll
index 4deb1f3f449f3..06e86d7da1c65 100644
--- a/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll
+++ b/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll
@@ -27,7 +27,7 @@
 ; CHECK-NEXT:        }
 
 ; Function Attrs: nounwind uwtable
-define void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, [1024 x double]* %C, [1024 x double]* %A, [1024 x double]* %B) #0 {
+define void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) #0 {
 entry:
   %cmp.27 = icmp sgt i32 %ni, 0
   br i1 %cmp.27, label %for.cond.1.preheader.lr.ph, label %for.end.22
@@ -53,15 +53,15 @@ for.body.6.lr.ph:                                 ; preds = %for.cond.4.preheade
 
 for.body.6:                                       ; preds = %for.body.6.lr.ph, %for.body.6
   %indvars.iv = phi i64 [ 0, %for.body.6.lr.ph ], [ %indvars.iv.next, %for.body.6 ]
-  %arrayidx8 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i64 %indvars.iv33, i64 %indvars.iv
-  %0 = load double, double* %arrayidx8, align 8
-  %arrayidx12 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %indvars.iv, i64 %indvars.iv29
-  %1 = load double, double* %arrayidx12, align 8
+  %arrayidx8 = getelementptr inbounds [1024 x double], ptr %A, i64 %indvars.iv33, i64 %indvars.iv
+  %0 = load double, ptr %arrayidx8, align 8
+  %arrayidx12 = getelementptr inbounds [1024 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv29
+  %1 = load double, ptr %arrayidx12, align 8
   %mul = fmul double %0, %1
-  %arrayidx16 = getelementptr inbounds [1024 x double], [1024 x double]* %C, i64 %indvars.iv33, i64 %indvars.iv29
-  %2 = load double, double* %arrayidx16, align 8
+  %arrayidx16 = getelementptr inbounds [1024 x double], ptr %C, i64 %indvars.iv33, i64 %indvars.iv29
+  %2 = load double, ptr %arrayidx16, align 8
   %add = fadd double %2, %mul
-  store double %add, double* %arrayidx16, align 8
+  store double %add, ptr %arrayidx16, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %lftr.wideiv = trunc i64 %indvars.iv.next to i32
   %exitcond = icmp ne i32 %lftr.wideiv, %nk

diff  --git a/polly/test/ScheduleOptimizer/line-tiling-2.ll b/polly/test/ScheduleOptimizer/line-tiling-2.ll
index f6a836bceea5e..eb374cb07cf3b 100644
--- a/polly/test/ScheduleOptimizer/line-tiling-2.ll
+++ b/polly/test/ScheduleOptimizer/line-tiling-2.ll
@@ -8,7 +8,7 @@
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
 ; Function Attrs: nounwind
-define void @line([512 x i32]* %A) {
+define void @line(ptr %A) {
 entry:
   br label %entry.split
 
@@ -23,8 +23,8 @@ for.body3:                                        ; preds = %for.body3.lr.ph, %f
   %j.0 = phi i32 [ 0, %for.body3.lr.ph ], [ %inc, %for.body3 ]
   %mul = mul nsw i32 %j.0, %i.0
   %rem = srem i32 %mul, 42
-  %arrayidx4 = getelementptr inbounds [512 x i32], [512 x i32]* %A, i32 %i.0, i32 %j.0
-  store i32 %rem, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds [512 x i32], ptr %A, i32 %i.0, i32 %j.0
+  store i32 %rem, ptr %arrayidx4, align 4
   %inc = add nsw i32 %j.0, 1
   %cmp2 = icmp slt i32 %inc, 512
   br i1 %cmp2, label %for.body3, label %for.inc5

diff  --git a/polly/test/ScheduleOptimizer/line-tiling.ll b/polly/test/ScheduleOptimizer/line-tiling.ll
index 6d0fe10700505..2f14ac1d02a57 100644
--- a/polly/test/ScheduleOptimizer/line-tiling.ll
+++ b/polly/test/ScheduleOptimizer/line-tiling.ll
@@ -8,7 +8,7 @@
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
 ; Function Attrs: nounwind
-define void @line([512 x i32]* %A) {
+define void @line(ptr %A) {
 entry:
   br label %entry.split
 
@@ -23,8 +23,8 @@ for.body3:                                        ; preds = %for.body3.lr.ph, %f
   %j.0 = phi i32 [ 0, %for.body3.lr.ph ], [ %inc, %for.body3 ]
   %mul = mul nsw i32 %j.0, %i.0
   %rem = srem i32 %mul, 42
-  %arrayidx4 = getelementptr inbounds [512 x i32], [512 x i32]* %A, i32 %i.0, i32 %j.0
-  store i32 %rem, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds [512 x i32], ptr %A, i32 %i.0, i32 %j.0
+  store i32 %rem, ptr %arrayidx4, align 4
   %inc = add nsw i32 %j.0, 1
   %cmp2 = icmp slt i32 %inc, 512
   br i1 %cmp2, label %for.body3, label %for.inc5

diff  --git a/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout.ll b/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout.ll
index ab7d7bb721b6a..faf51e097a709 100644
--- a/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout.ll
+++ b/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout.ll
@@ -21,7 +21,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, [1056 x double]* %arg5, [1024 x double]* %arg6, [1056 x double]* %arg7) #0 {
+define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, ptr %arg5, ptr %arg6, ptr %arg7) #0 {
 bb:
   br label %bb8
 
@@ -31,23 +31,23 @@ bb8:                                              ; preds = %bb29, %bb
 
 bb9:                                              ; preds = %bb26, %bb8
   %tmp10 = phi i64 [ 0, %bb8 ], [ %tmp27, %bb26 ]
-  %tmp11 = getelementptr inbounds [1056 x double], [1056 x double]* %arg5, i64 %tmp, i64 %tmp10
-  %tmp12 = load double, double* %tmp11, align 8
+  %tmp11 = getelementptr inbounds [1056 x double], ptr %arg5, i64 %tmp, i64 %tmp10
+  %tmp12 = load double, ptr %tmp11, align 8
   %tmp13 = fmul double %tmp12, %arg4
-  store double %tmp13, double* %tmp11, align 8
+  store double %tmp13, ptr %tmp11, align 8
   br label %Copy_0
 
 Copy_0:                                             ; preds = %Copy_0, %bb9
   %tmp15 = phi i64 [ 0, %bb9 ], [ %tmp24, %Copy_0 ]
-  %tmp16 = getelementptr inbounds [1024 x double], [1024 x double]* %arg6, i64 %tmp, i64 %tmp15
-  %tmp17 = load double, double* %tmp16, align 8
+  %tmp16 = getelementptr inbounds [1024 x double], ptr %arg6, i64 %tmp, i64 %tmp15
+  %tmp17 = load double, ptr %tmp16, align 8
   %tmp18 = fmul double %tmp17, %arg3
-  %tmp19 = getelementptr inbounds [1056 x double], [1056 x double]* %arg7, i64 %tmp15, i64 %tmp10
-  %tmp20 = load double, double* %tmp19, align 8
+  %tmp19 = getelementptr inbounds [1056 x double], ptr %arg7, i64 %tmp15, i64 %tmp10
+  %tmp20 = load double, ptr %tmp19, align 8
   %tmp21 = fmul double %tmp18, %tmp20
-  %tmp22 = load double, double* %tmp11, align 8
+  %tmp22 = load double, ptr %tmp11, align 8
   %tmp23 = fadd double %tmp22, %tmp21
-  store double %tmp23, double* %tmp11, align 8
+  store double %tmp23, ptr %tmp11, align 8
   %tmp24 = add nuw nsw i64 %tmp15, 1
   %tmp25 = icmp ne i64 %tmp24, 1024
   br i1 %tmp25, label %Copy_0, label %bb26

diff  --git a/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout_2.ll b/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout_2.ll
index 8b6bd00c19a0a..30b693a2e2416 100644
--- a/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout_2.ll
+++ b/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout_2.ll
@@ -86,7 +86,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, [1056 x double]* %arg5, [1023 x double]* %arg6, [1056 x double]* %arg7) #0 {
+define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, ptr %arg5, ptr %arg6, ptr %arg7) #0 {
 bb:
   br label %bb8
 
@@ -96,23 +96,23 @@ bb8:                                              ; preds = %bb29, %bb
 
 bb9:                                              ; preds = %bb26, %bb8
   %tmp10 = phi i64 [ 0, %bb8 ], [ %tmp27, %bb26 ]
-  %tmp11 = getelementptr inbounds [1056 x double], [1056 x double]* %arg5, i64 %tmp, i64 %tmp10
-  %tmp12 = load double, double* %tmp11, align 8
+  %tmp11 = getelementptr inbounds [1056 x double], ptr %arg5, i64 %tmp, i64 %tmp10
+  %tmp12 = load double, ptr %tmp11, align 8
   %tmp13 = fmul double %tmp12, %arg4
-  store double %tmp13, double* %tmp11, align 8
+  store double %tmp13, ptr %tmp11, align 8
   br label %Copy_0
 
 Copy_0:                                             ; preds = %Copy_0, %bb9
   %tmp15 = phi i64 [ 0, %bb9 ], [ %tmp24, %Copy_0 ]
-  %tmp16 = getelementptr inbounds [1023 x double], [1023 x double]* %arg6, i64 %tmp, i64 %tmp15
-  %tmp17 = load double, double* %tmp16, align 8
+  %tmp16 = getelementptr inbounds [1023 x double], ptr %arg6, i64 %tmp, i64 %tmp15
+  %tmp17 = load double, ptr %tmp16, align 8
   %tmp18 = fmul double %tmp17, %arg3
-  %tmp19 = getelementptr inbounds [1056 x double], [1056 x double]* %arg7, i64 %tmp15, i64 %tmp10
-  %tmp20 = load double, double* %tmp19, align 8
+  %tmp19 = getelementptr inbounds [1056 x double], ptr %arg7, i64 %tmp15, i64 %tmp10
+  %tmp20 = load double, ptr %tmp19, align 8
   %tmp21 = fmul double %tmp18, %tmp20
-  %tmp22 = load double, double* %tmp11, align 8
+  %tmp22 = load double, ptr %tmp11, align 8
   %tmp23 = fadd double %tmp22, %tmp21
-  store double %tmp23, double* %tmp11, align 8
+  store double %tmp23, ptr %tmp11, align 8
   %tmp24 = add nuw nsw i64 %tmp15, 1
   %tmp25 = icmp ne i64 %tmp24, 1023
   br i1 %tmp25, label %Copy_0, label %bb26

diff  --git a/polly/test/ScheduleOptimizer/one-dimensional-band.ll b/polly/test/ScheduleOptimizer/one-dimensional-band.ll
index 743c947732b15..4592907a44ad1 100644
--- a/polly/test/ScheduleOptimizer/one-dimensional-band.ll
+++ b/polly/test/ScheduleOptimizer/one-dimensional-band.ll
@@ -21,7 +21,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jacobi1d(i64 %T, i64 %N, float* %A, float* %B) {
+define void @jacobi1d(i64 %T, i64 %N, ptr %A, ptr %B) {
 entry:
   %tmp = add i64 %N, -1
   %tmp1 = icmp sgt i64 %tmp, 1
@@ -44,20 +44,20 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 
 for.body3:                                        ; preds = %for.cond1
   %sub4 = add nsw i64 %i.0, -1
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %sub4
-  %tmp2 = load float, float* %arrayidx, align 4
-  %arrayidx5 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp3 = load float, float* %arrayidx5, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %sub4
+  %tmp2 = load float, ptr %arrayidx, align 4
+  %arrayidx5 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp3 = load float, ptr %arrayidx5, align 4
   %add = fadd float %tmp2, %tmp3
   %add6 = add nuw nsw i64 %i.0, 1
-  %arrayidx7 = getelementptr inbounds float, float* %A, i64 %add6
-  %tmp4 = load float, float* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds float, ptr %A, i64 %add6
+  %tmp4 = load float, ptr %arrayidx7, align 4
   %add8 = fadd float %add, %tmp4
   %conv = fpext float %add8 to double
   %mul = fmul double %conv, 3.333300e-01
   %conv9 = fptrunc double %mul to float
-  %arrayidx10 = getelementptr inbounds float, float* %B, i64 %i.0
-  store float %conv9, float* %arrayidx10, align 4
+  %arrayidx10 = getelementptr inbounds float, ptr %B, i64 %i.0
+  store float %conv9, ptr %arrayidx10, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3
@@ -75,20 +75,20 @@ for.cond11:                                       ; preds = %for.inc27, %for.end
 
 for.body15:                                       ; preds = %for.cond11
   %sub16 = add nsw i64 %smax, -1
-  %arrayidx17 = getelementptr inbounds float, float* %B, i64 %sub16
-  %tmp5 = load float, float* %arrayidx17, align 4
-  %arrayidx18 = getelementptr inbounds float, float* %B, i64 %smax
-  %tmp6 = load float, float* %arrayidx18, align 4
+  %arrayidx17 = getelementptr inbounds float, ptr %B, i64 %sub16
+  %tmp5 = load float, ptr %arrayidx17, align 4
+  %arrayidx18 = getelementptr inbounds float, ptr %B, i64 %smax
+  %tmp6 = load float, ptr %arrayidx18, align 4
   %add19 = fadd float %tmp5, %tmp6
   %add20 = add nsw i64 %smax, 1
-  %arrayidx21 = getelementptr inbounds float, float* %B, i64 %add20
-  %tmp7 = load float, float* %arrayidx21, align 4
+  %arrayidx21 = getelementptr inbounds float, ptr %B, i64 %add20
+  %tmp7 = load float, ptr %arrayidx21, align 4
   %add22 = fadd float %add19, %tmp7
   %conv23 = fpext float %add22 to double
   %mul24 = fmul double %conv23, 3.333300e-01
   %conv25 = fptrunc double %mul24 to float
-  %arrayidx26 = getelementptr inbounds float, float* %A, i64 %j.0
-  store float %conv25, float* %arrayidx26, align 4
+  %arrayidx26 = getelementptr inbounds float, ptr %A, i64 %j.0
+  store float %conv25, ptr %arrayidx26, align 4
   br label %for.inc27
 
 for.inc27:                                        ; preds = %for.body15

diff  --git a/polly/test/ScheduleOptimizer/outer_coincidence.ll b/polly/test/ScheduleOptimizer/outer_coincidence.ll
index 074cbe074bd98..2ab33edda86bf 100644
--- a/polly/test/ScheduleOptimizer/outer_coincidence.ll
+++ b/polly/test/ScheduleOptimizer/outer_coincidence.ll
@@ -10,7 +10,7 @@
 ;      A[i][j] = A[i-1][j] + A[i][j-1];
 ;}
 
-define void @func(i64 %m, i64 %n, float* noalias nonnull %A) #0 {
+define void @func(i64 %m, i64 %n, ptr noalias nonnull %A) #0 {
 entry:
   br label %for.cond
 
@@ -30,19 +30,19 @@ for.cond1:                                        ; preds = %for.cond1.preheader
 for.body3:                                        ; preds = %for.cond1
   %sub = add nsw i64 %i.0, -1
   %tmp = mul nsw i64 %sub, %n
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %tmp
-  %arrayidx4 = getelementptr inbounds float, float* %arrayidx, i64 %j.0
-  %tmp13 = load float, float* %arrayidx4, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %tmp
+  %arrayidx4 = getelementptr inbounds float, ptr %arrayidx, i64 %j.0
+  %tmp13 = load float, ptr %arrayidx4, align 4
   %sub5 = add nsw i64 %j.0, -1
   %tmp14 = mul nsw i64 %i.0, %n
-  %arrayidx6 = getelementptr inbounds float, float* %A, i64 %tmp14
-  %arrayidx7 = getelementptr inbounds float, float* %arrayidx6, i64 %sub5
-  %tmp15 = load float, float* %arrayidx7, align 4
+  %arrayidx6 = getelementptr inbounds float, ptr %A, i64 %tmp14
+  %arrayidx7 = getelementptr inbounds float, ptr %arrayidx6, i64 %sub5
+  %tmp15 = load float, ptr %arrayidx7, align 4
   %add = fadd float %tmp13, %tmp15
   %tmp16 = mul nsw i64 %i.0, %n
-  %arrayidx8 = getelementptr inbounds float, float* %A, i64 %tmp16
-  %arrayidx9 = getelementptr inbounds float, float* %arrayidx8, i64 %j.0
-  store float %add, float* %arrayidx9, align 4
+  %arrayidx8 = getelementptr inbounds float, ptr %A, i64 %tmp16
+  %arrayidx9 = getelementptr inbounds float, ptr %arrayidx8, i64 %j.0
+  store float %add, ptr %arrayidx9, align 4
   %add10 = add nuw nsw i64 %j.0, 1
   br label %for.cond1
 

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm.ll
index ff3b5f502e8d0..66011168fcc13 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm.ll
@@ -47,7 +47,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 ; Function Attrs: norecurse nounwind uwtable
-define void @kernel_2mm(i32 %ni, i32 %nj, i32 %nk, i32 %nl, double %alpha, double %beta, [1800 x double]* nocapture %tmp, [2200 x double]* nocapture readonly %A, [1800 x double]* nocapture readonly %B, [2400 x double]* nocapture readnone %C, [2400 x double]* nocapture readnone %D) local_unnamed_addr #0 {
+define void @kernel_2mm(i32 %ni, i32 %nj, i32 %nk, i32 %nl, double %alpha, double %beta, ptr nocapture %tmp, ptr nocapture readonly %A, ptr nocapture readonly %B, ptr nocapture readnone %C, ptr nocapture readnone %D) local_unnamed_addr #0 {
 entry:
   br label %entry.split
 
@@ -60,21 +60,21 @@ for.body:                                         ; preds = %for.inc25, %entry.s
 
 for.body3:                                        ; preds = %for.inc22, %for.body
   %indvars.iv46 = phi i64 [ 0, %for.body ], [ %indvars.iv.next47, %for.inc22 ]
-  %arrayidx5 = getelementptr inbounds [1800 x double], [1800 x double]* %tmp, i64 %indvars.iv50, i64 %indvars.iv46
-  store double 0.000000e+00, double* %arrayidx5, align 8, !tbaa !2
+  %arrayidx5 = getelementptr inbounds [1800 x double], ptr %tmp, i64 %indvars.iv50, i64 %indvars.iv46
+  store double 0.000000e+00, ptr %arrayidx5, align 8, !tbaa !2
   br label %for.body8
 
 for.body8:                                        ; preds = %for.body8, %for.body3
   %0 = phi double [ 0.000000e+00, %for.body3 ], [ %add, %for.body8 ]
   %indvars.iv = phi i64 [ 0, %for.body3 ], [ %indvars.iv.next, %for.body8 ]
-  %arrayidx12 = getelementptr inbounds [2200 x double], [2200 x double]* %A, i64 %indvars.iv50, i64 %indvars.iv
-  %1 = load double, double* %arrayidx12, align 8, !tbaa !2
+  %arrayidx12 = getelementptr inbounds [2200 x double], ptr %A, i64 %indvars.iv50, i64 %indvars.iv
+  %1 = load double, ptr %arrayidx12, align 8, !tbaa !2
   %mul = fmul double %1, %alpha
-  %arrayidx16 = getelementptr inbounds [1800 x double], [1800 x double]* %B, i64 %indvars.iv, i64 %indvars.iv46
-  %2 = load double, double* %arrayidx16, align 8, !tbaa !2
+  %arrayidx16 = getelementptr inbounds [1800 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv46
+  %2 = load double, ptr %arrayidx16, align 8, !tbaa !2
   %mul17 = fmul double %mul, %2
   %add = fadd double %0, %mul17
-  store double %add, double* %arrayidx5, align 8, !tbaa !2
+  store double %add, ptr %arrayidx5, align 8, !tbaa !2
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 2200
   br i1 %exitcond, label %for.inc22, label %for.body8

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm_2.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm_2.ll
index f81c5bf8d81b0..95da89f90755c 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm_2.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm_2.ll
@@ -38,7 +38,7 @@
 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 fastcc void @kernel_tc([32 x [32 x [32 x double]]]* nocapture %C, [32 x [32 x [32 x double]]]* nocapture readonly %A, [32 x [32 x [32 x double]]]* nocapture readonly %B) {
+define internal fastcc void @kernel_tc(ptr nocapture %C, ptr nocapture readonly %A, ptr nocapture readonly %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -60,20 +60,20 @@ for.cond10.preheader:                             ; preds = %for.inc41, %for.con
 
 for.cond13.preheader:                             ; preds = %for.inc38, %for.cond10.preheader
   %indvars.iv7 = phi i64 [ 0, %for.cond10.preheader ], [ %indvars.iv.next8, %for.inc38 ]
-  %arrayidx37 = getelementptr inbounds [32 x [32 x [32 x double]]], [32 x [32 x [32 x double]]]* %C, i64 %indvars.iv19, i64 %indvars.iv16, i64 %indvars.iv13, i64 %indvars.iv7
-  %.pre = load double, double* %arrayidx37, align 8
+  %arrayidx37 = getelementptr inbounds [32 x [32 x [32 x double]]], ptr %C, i64 %indvars.iv19, i64 %indvars.iv16, i64 %indvars.iv13, i64 %indvars.iv7
+  %.pre = load double, ptr %arrayidx37, align 8
   br label %for.body15
 
 for.body15:                                       ; preds = %for.body15, %for.cond13.preheader
   %i = phi double [ %.pre, %for.cond13.preheader ], [ %add, %for.body15 ]
   %indvars.iv = phi i64 [ 0, %for.cond13.preheader ], [ %indvars.iv.next, %for.body15 ]
-  %arrayidx21 = getelementptr inbounds [32 x [32 x [32 x double]]], [32 x [32 x [32 x double]]]* %A, i64 %indvars.iv19, i64 %indvars.iv10, i64 %indvars.iv16, i64 %indvars.iv
-  %i1 = load double, double* %arrayidx21, align 8
-  %arrayidx29 = getelementptr inbounds [32 x [32 x [32 x double]]], [32 x [32 x [32 x double]]]* %B, i64 %indvars.iv, i64 %indvars.iv7, i64 %indvars.iv10, i64 %indvars.iv13
-  %i2 = load double, double* %arrayidx29, align 8
+  %arrayidx21 = getelementptr inbounds [32 x [32 x [32 x double]]], ptr %A, i64 %indvars.iv19, i64 %indvars.iv10, i64 %indvars.iv16, i64 %indvars.iv
+  %i1 = load double, ptr %arrayidx21, align 8
+  %arrayidx29 = getelementptr inbounds [32 x [32 x [32 x double]]], ptr %B, i64 %indvars.iv, i64 %indvars.iv7, i64 %indvars.iv10, i64 %indvars.iv13
+  %i2 = load double, ptr %arrayidx29, align 8
   %mul = fmul fast double %i2, %i1
   %add = fadd fast double %i, %mul
-  store double %add, double* %arrayidx37, align 8
+  store double %add, ptr %arrayidx37, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond.not = icmp eq i64 %indvars.iv.next, 32
   br i1 %exitcond.not, label %for.inc38, label %for.body15

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll
index 8ffa42b78d9ca..7604257f98e0f 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll
@@ -24,7 +24,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, [1056 x double]* %arg5, [1024 x double]* %arg6, [1056 x double]* %arg7) #0 {
+define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, ptr %arg5, ptr %arg6, ptr %arg7) #0 {
 bb:
   br label %bb8
 
@@ -34,23 +34,23 @@ bb8:                                              ; preds = %bb29, %bb
 
 bb9:                                              ; preds = %bb26, %bb8
   %tmp10 = phi i64 [ 0, %bb8 ], [ %tmp27, %bb26 ]
-  %tmp11 = getelementptr inbounds [1056 x double], [1056 x double]* %arg5, i64 %tmp, i64 %tmp10
-  %tmp12 = load double, double* %tmp11, align 8
+  %tmp11 = getelementptr inbounds [1056 x double], ptr %arg5, i64 %tmp, i64 %tmp10
+  %tmp12 = load double, ptr %tmp11, align 8
   %tmp13 = fmul double %tmp12, %arg4
-  store double %tmp13, double* %tmp11, align 8
+  store double %tmp13, ptr %tmp11, align 8
   br label %Copy_0
 
 Copy_0:                                             ; preds = %Copy_0, %bb9
   %tmp15 = phi i64 [ 0, %bb9 ], [ %tmp24, %Copy_0 ]
-  %tmp16 = getelementptr inbounds [1024 x double], [1024 x double]* %arg6, i64 %tmp, i64 %tmp15
-  %tmp17 = load double, double* %tmp16, align 8
+  %tmp16 = getelementptr inbounds [1024 x double], ptr %arg6, i64 %tmp, i64 %tmp15
+  %tmp17 = load double, ptr %tmp16, align 8
   %tmp18 = fmul double %tmp17, %arg3
-  %tmp19 = getelementptr inbounds [1056 x double], [1056 x double]* %arg7, i64 %tmp15, i64 %tmp10
-  %tmp20 = load double, double* %tmp19, align 8
+  %tmp19 = getelementptr inbounds [1056 x double], ptr %arg7, i64 %tmp15, i64 %tmp10
+  %tmp20 = load double, ptr %tmp19, align 8
   %tmp21 = fmul double %tmp18, %tmp20
-  %tmp22 = load double, double* %tmp11, align 8
+  %tmp22 = load double, ptr %tmp11, align 8
   %tmp23 = fadd double %tmp22, %tmp21
-  store double %tmp23, double* %tmp11, align 8
+  store double %tmp23, ptr %tmp11, align 8
   %tmp24 = add nuw nsw i64 %tmp15, 1
   %tmp25 = icmp ne i64 %tmp24, 1024
   br i1 %tmp25, label %Copy_0, label %bb26

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_11.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_11.ll
index a431e0589e4f7..ccdb39b60d753 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_11.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_11.ll
@@ -23,7 +23,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %A, [1024 x double]* %B, [1024 x double]* %C) {
+define void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %A, ptr %B, ptr %C) {
 entry:
   br label %entry.split
 
@@ -40,13 +40,13 @@ for.cond4.preheader:                              ; preds = %for.inc13, %for.con
 
 for.body6:                                        ; preds = %for.body6, %for.cond4.preheader
   %indvars.iv = phi i64 [ 0, %for.cond4.preheader ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %indvars.iv, i64 %indvars.iv32
-  %tmp = load double, double* %arrayidx8, align 8
+  %arrayidx8 = getelementptr inbounds [1024 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv32
+  %tmp = load double, ptr %arrayidx8, align 8
   %mul = fmul double %tmp, %A
-  %arrayidx12 = getelementptr inbounds [1024 x double], [1024 x double]* %C, i64 %indvars.iv35, i64 %indvars.iv32
-  %tmp1 = load double, double* %arrayidx12, align 8
+  %arrayidx12 = getelementptr inbounds [1024 x double], ptr %C, i64 %indvars.iv35, i64 %indvars.iv32
+  %tmp1 = load double, ptr %arrayidx12, align 8
   %add = fadd double %tmp1, %mul
-  store double %add, double* %arrayidx12, align 8
+  store double %add, ptr %arrayidx12, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1024
   br i1 %exitcond, label %for.body6, label %for.inc13

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_12.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_12.ll
index 486bc3499be04..dd39fec5e21f8 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_12.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_12.ll
@@ -13,7 +13,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, i8 signext %alpha, i8 signext %beta, [1020 x i8]* %C, [1020 x i8]* %A, [1020 x i8]* %B) {
+define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, i8 signext %alpha, i8 signext %beta, ptr %C, ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -30,15 +30,15 @@ for.body3:                                        ; preds = %for.inc20, %for.bod
 
 for.body6:                                        ; preds = %for.body6, %for.body3
   %indvars.iv = phi i64 [ 0, %for.body3 ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1020 x i8], [1020 x i8]* %A, i64 %indvars.iv45, i64 %indvars.iv
-  %tmp = load i8, i8* %arrayidx8, align 1
-  %arrayidx12 = getelementptr inbounds [1020 x i8], [1020 x i8]* %B, i64 %indvars.iv, i64 %indvars.iv42
-  %tmp1 = load i8, i8* %arrayidx12, align 1
+  %arrayidx8 = getelementptr inbounds [1020 x i8], ptr %A, i64 %indvars.iv45, i64 %indvars.iv
+  %tmp = load i8, ptr %arrayidx8, align 1
+  %arrayidx12 = getelementptr inbounds [1020 x i8], ptr %B, i64 %indvars.iv, i64 %indvars.iv42
+  %tmp1 = load i8, ptr %arrayidx12, align 1
   %mul = mul i8 %tmp1, %tmp
-  %arrayidx17 = getelementptr inbounds [1020 x i8], [1020 x i8]* %C, i64 %indvars.iv45, i64 %indvars.iv42
-  %tmp2 = load i8, i8* %arrayidx17, align 1
+  %arrayidx17 = getelementptr inbounds [1020 x i8], ptr %C, i64 %indvars.iv45, i64 %indvars.iv42
+  %tmp2 = load i8, ptr %arrayidx17, align 1
   %add = add i8 %mul, %tmp2
-  store i8 %add, i8* %arrayidx17, align 1
+  store i8 %add, ptr %arrayidx17, align 1
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1020
   br i1 %exitcond, label %for.body6, label %for.inc20

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_13.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_13.ll
index 7d99da20fed04..e086dd36c4d9f 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_13.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_13.ll
@@ -86,7 +86,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, [2000 x double]* %C, [2000 x double]* %A, [2000 x double]* %B) {
+define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -103,15 +103,15 @@ for.body3:                                        ; preds = %for.inc17, %for.bod
 
 for.body6:                                        ; preds = %for.body6, %for.body3
   %indvars.iv = phi i64 [ 0, %for.body3 ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv41, i64 %indvars.iv
-  %tmp = load double, double* %arrayidx8, align 8
-  %arrayidx12 = getelementptr inbounds [2000 x double], [2000 x double]* %B, i64 %indvars.iv, i64 %indvars.iv38
-  %tmp1 = load double, double* %arrayidx12, align 8
+  %arrayidx8 = getelementptr inbounds [2000 x double], ptr %A, i64 %indvars.iv41, i64 %indvars.iv
+  %tmp = load double, ptr %arrayidx8, align 8
+  %arrayidx12 = getelementptr inbounds [2000 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv38
+  %tmp1 = load double, ptr %arrayidx12, align 8
   %mul = fmul double %tmp, %tmp1
-  %arrayidx16 = getelementptr inbounds [2000 x double], [2000 x double]* %C, i64 %indvars.iv41, i64 %indvars.iv38
-  %tmp2 = load double, double* %arrayidx16, align 8
+  %arrayidx16 = getelementptr inbounds [2000 x double], ptr %C, i64 %indvars.iv41, i64 %indvars.iv38
+  %tmp2 = load double, ptr %arrayidx16, align 8
   %add = fadd double %tmp2, %mul
-  store double %add, double* %arrayidx16, align 8
+  store double %add, ptr %arrayidx16, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 2000
   br i1 %exitcond, label %for.body6, label %for.inc17

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll
index e46ab072c3b2b..a4c71c2dace51 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll
@@ -16,7 +16,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, [1024 x double]* %A, [1024 x double]* %B, [1024 x double]* %C, double* %C1) {
+define void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, ptr %A, ptr %B, ptr %C, ptr %C1) {
 entry:
   br label %entry.split
 
@@ -33,17 +33,17 @@ for.body3:                                        ; preds = %for.inc19, %for.bod
 
 for.body6:                                        ; preds = %for.body6, %for.body3
   %indvars.iv = phi i64 [ 0, %for.body3 ], [ %indvars.iv.next, %for.body6 ]
-  %tmp = load double, double* %C1, align 8
-  %arrayidx9 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i64 %indvars.iv43, i64 %indvars.iv
-  %tmp1 = load double, double* %arrayidx9, align 8
-  %arrayidx13 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %indvars.iv, i64 %indvars.iv40
-  %tmp2 = load double, double* %arrayidx13, align 8
+  %tmp = load double, ptr %C1, align 8
+  %arrayidx9 = getelementptr inbounds [1024 x double], ptr %A, i64 %indvars.iv43, i64 %indvars.iv
+  %tmp1 = load double, ptr %arrayidx9, align 8
+  %arrayidx13 = getelementptr inbounds [1024 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv40
+  %tmp2 = load double, ptr %arrayidx13, align 8
   %mul = fmul double %tmp1, %tmp2
   %add = fadd double %tmp, %mul
-  %arrayidx17 = getelementptr inbounds [1024 x double], [1024 x double]* %C, i64 %indvars.iv43, i64 %indvars.iv40
-  %tmp3 = load double, double* %arrayidx17, align 8
+  %arrayidx17 = getelementptr inbounds [1024 x double], ptr %C, i64 %indvars.iv43, i64 %indvars.iv40
+  %tmp3 = load double, ptr %arrayidx17, align 8
   %add18 = fadd double %tmp3, %add
-  store double %add18, double* %arrayidx17, align 8
+  store double %add18, ptr %arrayidx17, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1024
   br i1 %exitcond, label %for.body6, label %for.inc19

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll
index fa8bcab84de84..a8da21955b63b 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll
@@ -20,7 +20,7 @@
 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 void @kernel_gemm([1024 x double]* %C, [1024 x double]* %A, [1024 x double]* %B, [1024 x [1024 x double]]* %D) {
+define void @kernel_gemm(ptr %C, ptr %A, ptr %B, ptr %D) {
 entry:
   br label %for.cond1.preheader
 
@@ -30,23 +30,23 @@ for.cond1.preheader:                              ; preds = %for.inc27, %entry
 
 for.cond4.preheader:                              ; preds = %for.inc24, %for.cond1.preheader
   %indvars.iv4 = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next5, %for.inc24 ]
-  %arrayidx22 = getelementptr inbounds [1024 x double], [1024 x double]* %C, i64 %indvars.iv7, i64 %indvars.iv4
+  %arrayidx22 = getelementptr inbounds [1024 x double], ptr %C, i64 %indvars.iv7, i64 %indvars.iv4
   br label %for.body6
 
 for.body6:                                        ; preds = %for.body6, %for.cond4.preheader
   %indvars.iv = phi i64 [ 0, %for.cond4.preheader ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i64 %indvars.iv7, i64 %indvars.iv
-  %i = load double, double* %arrayidx8, align 8
-  %arrayidx12 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %indvars.iv, i64 %indvars.iv4
-  %i1 = load double, double* %arrayidx12, align 8
+  %arrayidx8 = getelementptr inbounds [1024 x double], ptr %A, i64 %indvars.iv7, i64 %indvars.iv
+  %i = load double, ptr %arrayidx8, align 8
+  %arrayidx12 = getelementptr inbounds [1024 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv4
+  %i1 = load double, ptr %arrayidx12, align 8
   %mul = fmul double %i1, %i
-  %arrayidx18 = getelementptr inbounds [1024 x [1024 x double]], [1024 x [1024 x double]]* %D, i64 %indvars.iv7, i64 %indvars.iv4, i64 %indvars.iv
-  %i2 = load double, double* %arrayidx18, align 8
+  %arrayidx18 = getelementptr inbounds [1024 x [1024 x double]], ptr %D, i64 %indvars.iv7, i64 %indvars.iv4, i64 %indvars.iv
+  %i2 = load double, ptr %arrayidx18, align 8
   %add = fadd double %i2, %mul
-  store double %add, double* %arrayidx18, align 8
-  %i3 = load double, double* %arrayidx22, align 8
+  store double %add, ptr %arrayidx18, align 8
+  %i3 = load double, ptr %arrayidx22, align 8
   %add23 = fadd double %i3, %mul
-  store double %add23, double* %arrayidx22, align 8
+  store double %add23, ptr %arrayidx22, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond.not = icmp eq i64 %indvars.iv.next, 1024
   br i1 %exitcond.not, label %for.inc24, label %for.body6

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_16.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_16.ll
index d48e6296c403f..c1ad3017a0d43 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_16.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_16.ll
@@ -13,7 +13,7 @@
 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 @kernel_tc(i32 %ni, i32 %nj, i32 %nl, i32 %nq, i32 %nw, double %alpha, double %beta, [1024 x double]* %C, [64 x [64 x double]]* %A, [1024 x [64 x double]]* %B) {
+define internal void @kernel_tc(i32 %ni, i32 %nj, i32 %nl, i32 %nq, i32 %nw, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -31,15 +31,15 @@ for.cond7.preheader:                              ; preds = %for.inc24, %for.con
 
 for.body9:                                        ; preds = %for.body9, %for.cond7.preheader
   %indvars.iv = phi i64 [ 0, %for.cond7.preheader ], [ %indvars.iv.next, %for.body9 ]
-  %arrayidx13 = getelementptr inbounds [64 x [64 x double]], [64 x [64 x double]]* %A, i64 %indvars.iv43, i64 %indvars.iv37, i64 %indvars.iv
-  %i = load double, double* %arrayidx13, align 8
-  %arrayidx19 = getelementptr inbounds [1024 x [64 x double]], [1024 x [64 x double]]* %B, i64 %indvars.iv, i64 %indvars.iv40, i64 %indvars.iv37
-  %i1 = load double, double* %arrayidx19, align 8
+  %arrayidx13 = getelementptr inbounds [64 x [64 x double]], ptr %A, i64 %indvars.iv43, i64 %indvars.iv37, i64 %indvars.iv
+  %i = load double, ptr %arrayidx13, align 8
+  %arrayidx19 = getelementptr inbounds [1024 x [64 x double]], ptr %B, i64 %indvars.iv, i64 %indvars.iv40, i64 %indvars.iv37
+  %i1 = load double, ptr %arrayidx19, align 8
   %mul = fmul fast double %i1, %i
-  %arrayidx23 = getelementptr inbounds [1024 x double], [1024 x double]* %C, i64 %indvars.iv43, i64 %indvars.iv40
-  %i2 = load double, double* %arrayidx23, align 8
+  %arrayidx23 = getelementptr inbounds [1024 x double], ptr %C, i64 %indvars.iv43, i64 %indvars.iv40
+  %i2 = load double, ptr %arrayidx23, align 8
   %add = fadd fast double %i2, %mul
-  store double %add, double* %arrayidx23, align 8
+  store double %add, ptr %arrayidx23, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 64
   br i1 %exitcond, label %for.body9, label %for.inc24

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_17.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_17.ll
index 904ff4c987539..002816a4ae806 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_17.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_17.ll
@@ -13,7 +13,7 @@
 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 @kernel_tc(i32 %ni, i32 %nj, i32 %nk, i32 %nl, double %alpha, double %beta, [1024 x [32 x double]]* %C, [32 x [1024 x double]]* %A, [1024 x double]* %B) {
+define internal void @kernel_tc(i32 %ni, i32 %nj, i32 %nk, i32 %nl, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -31,15 +31,15 @@ for.cond7.preheader:                              ; preds = %for.inc24, %for.con
 
 for.body9:                                        ; preds = %for.body9, %for.cond7.preheader
   %indvars.iv = phi i64 [ 0, %for.cond7.preheader ], [ %indvars.iv.next, %for.body9 ]
-  %arrayidx13 = getelementptr inbounds [32 x [1024 x double]], [32 x [1024 x double]]* %A, i64 %indvars.iv43, i64 %indvars.iv37, i64 %indvars.iv
-  %i = load double, double* %arrayidx13, align 8
-  %arrayidx17 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %indvars.iv, i64 %indvars.iv40
-  %i1 = load double, double* %arrayidx17, align 8
+  %arrayidx13 = getelementptr inbounds [32 x [1024 x double]], ptr %A, i64 %indvars.iv43, i64 %indvars.iv37, i64 %indvars.iv
+  %i = load double, ptr %arrayidx13, align 8
+  %arrayidx17 = getelementptr inbounds [1024 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv40
+  %i1 = load double, ptr %arrayidx17, align 8
   %mul = fmul fast double %i1, %i
-  %arrayidx23 = getelementptr inbounds [1024 x [32 x double]], [1024 x [32 x double]]* %C, i64 %indvars.iv43, i64 %indvars.iv40, i64 %indvars.iv37
-  %i2 = load double, double* %arrayidx23, align 8
+  %arrayidx23 = getelementptr inbounds [1024 x [32 x double]], ptr %C, i64 %indvars.iv43, i64 %indvars.iv40, i64 %indvars.iv37
+  %i2 = load double, ptr %arrayidx23, align 8
   %add = fadd fast double %i2, %mul
-  store double %add, double* %arrayidx23, align 8
+  store double %add, ptr %arrayidx23, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1024
   br i1 %exitcond, label %for.body9, label %for.inc24

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_18.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_18.ll
index c7057a42e4487..d5679c7ae2f71 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_18.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_18.ll
@@ -15,7 +15,7 @@
 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 @kernel_tc(i32 %ni, i32 %nj, i32 %nk, i32 %nl, i32 %nq, i32 %nw, double %alpha, double %beta, [32 x [32 x [32 x double]]]* %C, [32 x [32 x [32 x double]]]* %A, [32 x [32 x [32 x double]]]* %B) {
+define internal void @kernel_tc(i32 %ni, i32 %nj, i32 %nk, i32 %nl, i32 %nq, i32 %nw, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -41,15 +41,15 @@ for.cond13.preheader:                             ; preds = %for.inc38, %for.con
 
 for.body15:                                       ; preds = %for.body15, %for.cond13.preheader
   %indvars.iv = phi i64 [ 0, %for.cond13.preheader ], [ %indvars.iv.next, %for.body15 ]
-  %arrayidx21 = getelementptr inbounds [32 x [32 x [32 x double]]], [32 x [32 x [32 x double]]]* %A, i64 %indvars.iv71, i64 %indvars.iv62, i64 %indvars.iv68, i64 %indvars.iv
-  %i = load double, double* %arrayidx21, align 8
-  %arrayidx29 = getelementptr inbounds [32 x [32 x [32 x double]]], [32 x [32 x [32 x double]]]* %B, i64 %indvars.iv, i64 %indvars.iv59, i64 %indvars.iv62, i64 %indvars.iv65
-  %i1 = load double, double* %arrayidx29, align 8
+  %arrayidx21 = getelementptr inbounds [32 x [32 x [32 x double]]], ptr %A, i64 %indvars.iv71, i64 %indvars.iv62, i64 %indvars.iv68, i64 %indvars.iv
+  %i = load double, ptr %arrayidx21, align 8
+  %arrayidx29 = getelementptr inbounds [32 x [32 x [32 x double]]], ptr %B, i64 %indvars.iv, i64 %indvars.iv59, i64 %indvars.iv62, i64 %indvars.iv65
+  %i1 = load double, ptr %arrayidx29, align 8
   %mul = fmul fast double %i1, %i
-  %arrayidx37 = getelementptr inbounds [32 x [32 x [32 x double]]], [32 x [32 x [32 x double]]]* %C, i64 %indvars.iv71, i64 %indvars.iv68, i64 %indvars.iv65, i64 %indvars.iv59
-  %i2 = load double, double* %arrayidx37, align 8
+  %arrayidx37 = getelementptr inbounds [32 x [32 x [32 x double]]], ptr %C, i64 %indvars.iv71, i64 %indvars.iv68, i64 %indvars.iv65, i64 %indvars.iv59
+  %i2 = load double, ptr %arrayidx37, align 8
   %add = fadd fast double %i2, %mul
-  store double %add, double* %arrayidx37, align 8
+  store double %add, ptr %arrayidx37, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 32
   br i1 %exitcond, label %for.body15, label %for.inc38

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_19.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_19.ll
index 53a03112e28bd..4e1620abd252a 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_19.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_19.ll
@@ -15,7 +15,7 @@
 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 @kernel_tc([8 x [4 x [1024 x [4 x double]]]]* %C, [4 x [8 x [1024 x [8 x double]]]]* %A, [1024 x double]* %B) {
+define internal void @kernel_tc(ptr %C, ptr %A, ptr %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -41,15 +41,15 @@ for.cond13.preheader:                             ; preds = %for.inc38, %for.con
 
 for.body15:                                       ; preds = %for.body15, %for.cond13.preheader
   %indvars.iv = phi i64 [ 0, %for.cond13.preheader ], [ %indvars.iv.next, %for.body15 ]
-  %arrayidx23 = getelementptr inbounds [4 x [8 x [1024 x [8 x double]]]], [4 x [8 x [1024 x [8 x double]]]]* %A, i64 %indvars.iv, i64 %indvars.iv65, i64 %indvars.iv68, i64 %indvars.iv62, i64 %indvars.iv71
-  %i = load double, double* %arrayidx23, align 8
-  %arrayidx27 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %indvars.iv62, i64 %indvars.iv59
-  %i1 = load double, double* %arrayidx27, align 8
+  %arrayidx23 = getelementptr inbounds [4 x [8 x [1024 x [8 x double]]]], ptr %A, i64 %indvars.iv, i64 %indvars.iv65, i64 %indvars.iv68, i64 %indvars.iv62, i64 %indvars.iv71
+  %i = load double, ptr %arrayidx23, align 8
+  %arrayidx27 = getelementptr inbounds [1024 x double], ptr %B, i64 %indvars.iv62, i64 %indvars.iv59
+  %i1 = load double, ptr %arrayidx27, align 8
   %mul = fmul fast double %i1, %i
-  %arrayidx37 = getelementptr inbounds [8 x [4 x [1024 x [4 x double]]]], [8 x [4 x [1024 x [4 x double]]]]* %C, i64 %indvars.iv71, i64 %indvars.iv68, i64 %indvars.iv65, i64 %indvars.iv59, i64 %indvars.iv
-  %i2 = load double, double* %arrayidx37, align 8
+  %arrayidx37 = getelementptr inbounds [8 x [4 x [1024 x [4 x double]]]], ptr %C, i64 %indvars.iv71, i64 %indvars.iv68, i64 %indvars.iv65, i64 %indvars.iv59, i64 %indvars.iv
+  %i2 = load double, ptr %arrayidx37, align 8
   %add = fadd fast double %i2, %mul
-  store double %add, double* %arrayidx37, align 8
+  store double %add, ptr %arrayidx37, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 4
   br i1 %exitcond, label %for.body15, label %for.inc38

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_2.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_2.ll
index fd07806714ea2..01e336ebc60f8 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_2.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_2.ll
@@ -21,7 +21,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, [1056 x double]* %arg5, [1024 x double]* %arg6, [1056 x double]* %arg7) #0 {
+define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, ptr %arg5, ptr %arg6, ptr %arg7) #0 {
 bb:
   br label %bb8
 
@@ -31,23 +31,23 @@ bb8:                                              ; preds = %bb29, %bb
 
 bb9:                                              ; preds = %bb26, %bb8
   %tmp10 = phi i64 [ 0, %bb8 ], [ %tmp27, %bb26 ]
-  %tmp11 = getelementptr inbounds [1056 x double], [1056 x double]* %arg5, i64 %tmp, i64 %tmp10
-  %tmp12 = load double, double* %tmp11, align 8
+  %tmp11 = getelementptr inbounds [1056 x double], ptr %arg5, i64 %tmp, i64 %tmp10
+  %tmp12 = load double, ptr %tmp11, align 8
   %tmp13 = fmul double %tmp12, %arg4
-  store double %tmp13, double* %tmp11, align 8
+  store double %tmp13, ptr %tmp11, align 8
   br label %Copy_0
 
 Copy_0:                                             ; preds = %Copy_0, %bb9
   %tmp15 = phi i64 [ 0, %bb9 ], [ %tmp24, %Copy_0 ]
-  %tmp16 = getelementptr inbounds [1024 x double], [1024 x double]* %arg6, i64 %tmp, i64 %tmp15
-  %tmp17 = load double, double* %tmp16, align 8
+  %tmp16 = getelementptr inbounds [1024 x double], ptr %arg6, i64 %tmp, i64 %tmp15
+  %tmp17 = load double, ptr %tmp16, align 8
   %tmp18 = fmul double %tmp17, %arg3
-  %tmp19 = getelementptr inbounds [1056 x double], [1056 x double]* %arg7, i64 %tmp15, i64 %tmp10
-  %tmp20 = load double, double* %tmp19, align 8
+  %tmp19 = getelementptr inbounds [1056 x double], ptr %arg7, i64 %tmp15, i64 %tmp10
+  %tmp20 = load double, ptr %tmp19, align 8
   %tmp21 = fmul double %tmp18, %tmp20
-  %tmp22 = load double, double* %tmp11, align 8
+  %tmp22 = load double, ptr %tmp11, align 8
   %tmp23 = fadd double %tmp22, %tmp21
-  store double %tmp23, double* %tmp11, align 8
+  store double %tmp23, ptr %tmp11, align 8
   %tmp24 = add nuw nsw i64 %tmp15, 1
   %tmp25 = icmp ne i64 %tmp24, 1024
   br i1 %tmp25, label %Copy_0, label %bb26

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_20.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_20.ll
index 7e5d0ca4aa4b9..0be08d8d493c8 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_20.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_20.ll
@@ -16,7 +16,7 @@
 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 @kernel_tc([16 x [8 x [8 x [8 x [8 x double]]]]]* %C, [8 x [16 x [8 x double]]]* %A, [8 x [1024 x [16 x double]]]* %B) {
+define internal void @kernel_tc(ptr %C, ptr %A, ptr %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -46,15 +46,15 @@ for.cond16.preheader:                             ; preds = %for.inc45, %for.con
 
 for.body18:                                       ; preds = %for.body18, %for.cond16.preheader
   %indvars.iv = phi i64 [ 0, %for.cond16.preheader ], [ %indvars.iv.next, %for.body18 ]
-  %arrayidx24 = getelementptr inbounds [8 x [16 x [8 x double]]], [8 x [16 x [8 x double]]]* %A, i64 %indvars.iv76, i64 %indvars.iv, i64 %indvars.iv82, i64 %indvars.iv79
-  %i = load double, double* %arrayidx24, align 8
-  %arrayidx32 = getelementptr inbounds [8 x [1024 x [16 x double]]], [8 x [1024 x [16 x double]]]* %B, i64 %indvars.iv73, i64 %indvars.iv70, i64 %indvars.iv76, i64 %indvars.iv85
-  %i1 = load double, double* %arrayidx32, align 8
+  %arrayidx24 = getelementptr inbounds [8 x [16 x [8 x double]]], ptr %A, i64 %indvars.iv76, i64 %indvars.iv, i64 %indvars.iv82, i64 %indvars.iv79
+  %i = load double, ptr %arrayidx24, align 8
+  %arrayidx32 = getelementptr inbounds [8 x [1024 x [16 x double]]], ptr %B, i64 %indvars.iv73, i64 %indvars.iv70, i64 %indvars.iv76, i64 %indvars.iv85
+  %i1 = load double, ptr %arrayidx32, align 8
   %mul = fmul fast double %i1, %i
-  %arrayidx44 = getelementptr inbounds [16 x [8 x [8 x [8 x [8 x double]]]]], [16 x [8 x [8 x [8 x [8 x double]]]]]* %C, i64 %indvars.iv85, i64 %indvars.iv82, i64 %indvars.iv79, i64 %indvars.iv73, i64 %indvars.iv70, i64 %indvars.iv
-  %i2 = load double, double* %arrayidx44, align 8
+  %arrayidx44 = getelementptr inbounds [16 x [8 x [8 x [8 x [8 x double]]]]], ptr %C, i64 %indvars.iv85, i64 %indvars.iv82, i64 %indvars.iv79, i64 %indvars.iv73, i64 %indvars.iv70, i64 %indvars.iv
+  %i2 = load double, ptr %arrayidx44, align 8
   %add = fadd fast double %i2, %mul
-  store double %add, double* %arrayidx44, align 8
+  store double %add, ptr %arrayidx44, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 8
   br i1 %exitcond, label %for.body18, label %for.inc45

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_21.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_21.ll
index a255abacfaba1..9b2df49698a18 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_21.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_21.ll
@@ -13,7 +13,7 @@
 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 void @foo([64 x double]* noundef %C, [64 x [64 x double]]* noundef %A, [64 x [64 x double]]* noundef %B) {
+define void @foo(ptr noundef %C, ptr noundef %A, ptr noundef %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -31,15 +31,15 @@ for.cond9.preheader:                              ; preds = %for.inc27, %for.con
 
 for.body12:                                       ; preds = %for.body12, %for.cond9.preheader
   %indvars.iv = phi i64 [ 0, %for.cond9.preheader ], [ %indvars.iv.next, %for.body12 ]
-  %arrayidx16 = getelementptr inbounds [64 x [64 x double]], [64 x [64 x double]]* %A, i64 %indvars.iv49, i64 %indvars.iv41, i64 %indvars.iv
-  %i = load double, double* %arrayidx16, align 8
-  %arrayidx22 = getelementptr inbounds [64 x [64 x double]], [64 x [64 x double]]* %B, i64 %indvars.iv, i64 %indvars.iv45, i64 %indvars.iv49
-  %i1 = load double, double* %arrayidx22, align 8
+  %arrayidx16 = getelementptr inbounds [64 x [64 x double]], ptr %A, i64 %indvars.iv49, i64 %indvars.iv41, i64 %indvars.iv
+  %i = load double, ptr %arrayidx16, align 8
+  %arrayidx22 = getelementptr inbounds [64 x [64 x double]], ptr %B, i64 %indvars.iv, i64 %indvars.iv45, i64 %indvars.iv49
+  %i1 = load double, ptr %arrayidx22, align 8
   %mul = fmul fast double %i1, %i
-  %arrayidx26 = getelementptr inbounds [64 x double], [64 x double]* %C, i64 %indvars.iv49, i64 %indvars.iv45
-  %i2 = load double, double* %arrayidx26, align 8
+  %arrayidx26 = getelementptr inbounds [64 x double], ptr %C, i64 %indvars.iv49, i64 %indvars.iv45
+  %i2 = load double, ptr %arrayidx26, align 8
   %add = fadd fast double %i2, %mul
-  store double %add, double* %arrayidx26, align 8
+  store double %add, ptr %arrayidx26, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 32
   br i1 %exitcond, label %for.body12, label %for.inc27

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_22.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_22.ll
index 1d36d49a45296..3d3641df5098f 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_22.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_22.ll
@@ -13,7 +13,7 @@
 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 void @foo([64 x double]* noundef %C, [64 x [64 x double]]* noundef %A, [64 x [64 x double]]* noundef %B) {
+define void @foo(ptr noundef %C, ptr noundef %A, ptr noundef %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -31,16 +31,16 @@ for.cond9.preheader:                              ; preds = %for.inc28, %for.con
 
 for.body12:                                       ; preds = %for.body12, %for.cond9.preheader
   %indvars.iv = phi i64 [ 0, %for.cond9.preheader ], [ %indvars.iv.next, %for.body12 ]
-  %arrayidx16 = getelementptr inbounds [64 x [64 x double]], [64 x [64 x double]]* %A, i64 %indvars.iv50, i64 %indvars.iv42, i64 %indvars.iv
-  %i = load double, double* %arrayidx16, align 8
+  %arrayidx16 = getelementptr inbounds [64 x [64 x double]], ptr %A, i64 %indvars.iv50, i64 %indvars.iv42, i64 %indvars.iv
+  %i = load double, ptr %arrayidx16, align 8
   %i1 = add nuw nsw i64 %indvars.iv50, 3
-  %arrayidx22 = getelementptr inbounds [64 x [64 x double]], [64 x [64 x double]]* %B, i64 %indvars.iv, i64 %indvars.iv46, i64 %i1
-  %i2 = load double, double* %arrayidx22, align 8
+  %arrayidx22 = getelementptr inbounds [64 x [64 x double]], ptr %B, i64 %indvars.iv, i64 %indvars.iv46, i64 %i1
+  %i2 = load double, ptr %arrayidx22, align 8
   %mul = fmul fast double %i2, %i
-  %arrayidx26 = getelementptr inbounds [64 x double], [64 x double]* %C, i64 %indvars.iv50, i64 %indvars.iv46
-  %i3 = load double, double* %arrayidx26, align 8
+  %arrayidx26 = getelementptr inbounds [64 x double], ptr %C, i64 %indvars.iv50, i64 %indvars.iv46
+  %i3 = load double, ptr %arrayidx26, align 8
   %add27 = fadd fast double %i3, %mul
-  store double %add27, double* %arrayidx26, align 8
+  store double %add27, ptr %arrayidx26, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 32
   br i1 %exitcond, label %for.body12, label %for.inc28

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_24.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_24.ll
index 82226e37cc190..8959614880148 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_24.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_24.ll
@@ -14,7 +14,7 @@
 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 @kernel_tc(i32 %ni, i32 %nj, i32 %nl, i32 %nq, i32 %nw, double %alpha, double %beta, [1024 x double]* %C, [64 x [64 x double]]* %A, [1024 x [64 x double]]* %B) {
+define internal void @kernel_tc(i32 %ni, i32 %nj, i32 %nl, i32 %nq, i32 %nw, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -32,15 +32,15 @@ for.cond7.preheader:                              ; preds = %for.inc24, %for.con
 
 for.body9:                                        ; preds = %for.body9, %for.cond7.preheader
   %indvars.iv = phi i64 [ 0, %for.cond7.preheader ], [ %indvars.iv.next, %for.body9 ]
-  %arrayidx13 = getelementptr inbounds [64 x [64 x double]], [64 x [64 x double]]* %A, i64 %indvars.iv43, i64 %indvars.iv37, i64 %indvars.iv
-  %i = load double, double* %arrayidx13, align 8
-  %arrayidx19 = getelementptr inbounds [1024 x [64 x double]], [1024 x [64 x double]]* %B, i64 %indvars.iv, i64 %indvars.iv40, i64 %indvars.iv37
-  %i1 = load double, double* %arrayidx19, align 8
+  %arrayidx13 = getelementptr inbounds [64 x [64 x double]], ptr %A, i64 %indvars.iv43, i64 %indvars.iv37, i64 %indvars.iv
+  %i = load double, ptr %arrayidx13, align 8
+  %arrayidx19 = getelementptr inbounds [1024 x [64 x double]], ptr %B, i64 %indvars.iv, i64 %indvars.iv40, i64 %indvars.iv37
+  %i1 = load double, ptr %arrayidx19, align 8
   %mul = fmul fast double %i1, %i
-  %arrayidx23 = getelementptr inbounds [1024 x double], [1024 x double]* %C, i64 %indvars.iv43, i64 %indvars.iv40
-  %i2 = load double, double* %arrayidx23, align 8
+  %arrayidx23 = getelementptr inbounds [1024 x double], ptr %C, i64 %indvars.iv43, i64 %indvars.iv40
+  %i2 = load double, ptr %arrayidx23, align 8
   %add = fadd fast double %i2, %mul
-  store double %add, double* %arrayidx23, align 8
+  store double %add, ptr %arrayidx23, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 64
   br i1 %exitcond, label %for.body9, label %for.inc24

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_25.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_25.ll
index 71cbe45657d8c..8a3957909d9d7 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_25.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_25.ll
@@ -12,7 +12,7 @@
 target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
 target triple = "arm64-apple-macosx12.0.0"
 
-define void @foo([64 x double]* noundef %C, [64 x double]* noundef %A, [64 x [64 x double]]* noundef %B) {
+define void @foo(ptr noundef %C, ptr noundef %A, ptr noundef %B) {
 entry:
   br label %for.cond1.preheader
 
@@ -25,8 +25,8 @@ for.cond.cleanup:                                 ; preds = %for.cond.cleanup3
 
 for.cond5.preheader:                              ; preds = %for.cond.cleanup7, %for.cond1.preheader
   %indvars.iv41 = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next42, %for.cond.cleanup7 ]
-  %arrayidx20 = getelementptr inbounds [64 x double], [64 x double]* %C, i64 %indvars.iv45, i64 %indvars.iv41
-  %.pre = load double, double* %arrayidx20, align 8
+  %arrayidx20 = getelementptr inbounds [64 x double], ptr %C, i64 %indvars.iv45, i64 %indvars.iv41
+  %.pre = load double, ptr %arrayidx20, align 8
   br label %for.body8
 
 for.cond.cleanup3:                                ; preds = %for.cond.cleanup7
@@ -42,12 +42,12 @@ for.cond.cleanup7:                                ; preds = %for.body8
 for.body8:                                        ; preds = %for.body8, %for.cond5.preheader
   %i = phi double [ %.pre, %for.cond5.preheader ], [ %i3, %for.body8 ]
   %indvars.iv = phi i64 [ 0, %for.cond5.preheader ], [ %indvars.iv.next, %for.body8 ]
-  %arrayidx10 = getelementptr inbounds [64 x double], [64 x double]* %A, i64 %indvars.iv45, i64 %indvars.iv
-  %i1 = load double, double* %arrayidx10, align 8
-  %arrayidx16 = getelementptr inbounds [64 x [64 x double]], [64 x [64 x double]]* %B, i64 %indvars.iv, i64 %indvars.iv41, i64 %indvars.iv45
-  %i2 = load double, double* %arrayidx16, align 8
+  %arrayidx10 = getelementptr inbounds [64 x double], ptr %A, i64 %indvars.iv45, i64 %indvars.iv
+  %i1 = load double, ptr %arrayidx10, align 8
+  %arrayidx16 = getelementptr inbounds [64 x [64 x double]], ptr %B, i64 %indvars.iv, i64 %indvars.iv41, i64 %indvars.iv45
+  %i2 = load double, ptr %arrayidx16, align 8
   %i3 = tail call double @llvm.fmuladd.f64(double %i1, double %i2, double %i)
-  store double %i3, double* %arrayidx20, align 8
+  store double %i3, ptr %arrayidx20, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond.not = icmp eq i64 %indvars.iv.next, 32
   br i1 %exitcond.not, label %for.cond.cleanup7, label %for.body8

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll
index 10beeec4853e3..fab3ac5e58dcc 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll
@@ -144,7 +144,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, [1056 x double]* %arg5, [1024 x double]* %arg6, [1056 x double]* %arg7) #0 {
+define internal void @kernel_gemm(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %arg4, ptr %arg5, ptr %arg6, ptr %arg7) #0 {
 bb:
   br label %bb8
 
@@ -154,23 +154,23 @@ bb8:                                              ; preds = %bb29, %bb
 
 bb9:                                              ; preds = %bb26, %bb8
   %tmp10 = phi i64 [ 0, %bb8 ], [ %tmp27, %bb26 ]
-  %tmp11 = getelementptr inbounds [1056 x double], [1056 x double]* %arg5, i64 %tmp, i64 %tmp10
-  %tmp12 = load double, double* %tmp11, align 8
+  %tmp11 = getelementptr inbounds [1056 x double], ptr %arg5, i64 %tmp, i64 %tmp10
+  %tmp12 = load double, ptr %tmp11, align 8
   %tmp13 = fmul double %tmp12, %arg4
-  store double %tmp13, double* %tmp11, align 8
+  store double %tmp13, ptr %tmp11, align 8
   br label %Copy_0
 
 Copy_0:                                             ; preds = %Copy_0, %bb9
   %tmp15 = phi i64 [ 0, %bb9 ], [ %tmp24, %Copy_0 ]
-  %tmp16 = getelementptr inbounds [1024 x double], [1024 x double]* %arg6, i64 %tmp, i64 %tmp15
-  %tmp17 = load double, double* %tmp16, align 8
+  %tmp16 = getelementptr inbounds [1024 x double], ptr %arg6, i64 %tmp, i64 %tmp15
+  %tmp17 = load double, ptr %tmp16, align 8
   %tmp18 = fmul double %tmp17, %arg3
-  %tmp19 = getelementptr inbounds [1056 x double], [1056 x double]* %arg7, i64 %tmp15, i64 %tmp10
-  %tmp20 = load double, double* %tmp19, align 8
+  %tmp19 = getelementptr inbounds [1056 x double], ptr %arg7, i64 %tmp15, i64 %tmp10
+  %tmp20 = load double, ptr %tmp19, align 8
   %tmp21 = fmul double %tmp18, %tmp20
-  %tmp22 = load double, double* %tmp11, align 8
+  %tmp22 = load double, ptr %tmp11, align 8
   %tmp23 = fadd double %tmp22, %tmp21
-  store double %tmp23, double* %tmp11, align 8
+  store double %tmp23, ptr %tmp11, align 8
   %tmp24 = add nuw nsw i64 %tmp15, 1
   %tmp25 = icmp ne i64 %tmp24, 1024
   br i1 %tmp25, label %Copy_0, label %bb26

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_4.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_4.ll
index 4bc8928cd3bd7..dc0edc6c5a3ba 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_4.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_4.ll
@@ -81,7 +81,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, [1024 x double]* %C, [1024 x double]* %A, [1024 x double]* %B) {
+define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -98,15 +98,15 @@ for.cond4.preheader:                              ; preds = %for.inc17, %for.con
 
 for.body6:                                        ; preds = %for.body6, %for.cond4.preheader
   %indvars.iv = phi i64 [ 0, %for.cond4.preheader ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i64 %indvars.iv41, i64 %indvars.iv38
-  %tmp = load double, double* %arrayidx8, align 8
-  %arrayidx12 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %indvars.iv38, i64 %indvars.iv
-  %tmp1 = load double, double* %arrayidx12, align 8
+  %arrayidx8 = getelementptr inbounds [1024 x double], ptr %A, i64 %indvars.iv41, i64 %indvars.iv38
+  %tmp = load double, ptr %arrayidx8, align 8
+  %arrayidx12 = getelementptr inbounds [1024 x double], ptr %B, i64 %indvars.iv38, i64 %indvars.iv
+  %tmp1 = load double, ptr %arrayidx12, align 8
   %mul = fmul double %tmp, %tmp1
-  %arrayidx16 = getelementptr inbounds [1024 x double], [1024 x double]* %C, i64 %indvars.iv41, i64 %indvars.iv
-  %tmp2 = load double, double* %arrayidx16, align 8
+  %arrayidx16 = getelementptr inbounds [1024 x double], ptr %C, i64 %indvars.iv41, i64 %indvars.iv
+  %tmp2 = load double, ptr %arrayidx16, align 8
   %add = fadd double %tmp2, %mul
-  store double %add, double* %arrayidx16, align 8
+  store double %add, ptr %arrayidx16, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1024
   br i1 %exitcond, label %for.body6, label %for.inc17

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_5.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_5.ll
index 83a725f420ef3..6581566bf13f4 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_5.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_5.ll
@@ -432,7 +432,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, [1024 x double]* %C, [1024 x double]* %A, [1024 x double]* %B) #0 {
+define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) #0 {
 entry:
   br label %entry.split
 
@@ -461,15 +461,15 @@ for.body6.lr.ph:                                  ; preds = %for.cond4.preheader
 
 for.body6:                                        ; preds = %for.body6, %for.body6.lr.ph
   %indvars.iv = phi i64 [ 0, %for.body6.lr.ph ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1024 x double], [1024 x double]* %A, i64 %indvars.iv45, i64 %indvars.iv
-  %tmp = load double, double* %arrayidx8, align 8
-  %arrayidx12 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %indvars.iv, i64 %indvars.iv41
-  %tmp1 = load double, double* %arrayidx12, align 8
+  %arrayidx8 = getelementptr inbounds [1024 x double], ptr %A, i64 %indvars.iv45, i64 %indvars.iv
+  %tmp = load double, ptr %arrayidx8, align 8
+  %arrayidx12 = getelementptr inbounds [1024 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv41
+  %tmp1 = load double, ptr %arrayidx12, align 8
   %mul = fmul double %tmp, %tmp1
-  %arrayidx16 = getelementptr inbounds [1024 x double], [1024 x double]* %C, i64 %indvars.iv45, i64 %indvars.iv41
-  %tmp2 = load double, double* %arrayidx16, align 8
+  %arrayidx16 = getelementptr inbounds [1024 x double], ptr %C, i64 %indvars.iv45, i64 %indvars.iv41
+  %tmp2 = load double, ptr %arrayidx16, align 8
   %add = fadd double %tmp2, %mul
-  store double %add, double* %arrayidx16, align 8
+  store double %add, ptr %arrayidx16, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %wide.trip.count = zext i32 %nk to i64
   %exitcond = icmp ne i64 %indvars.iv.next, %wide.trip.count

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_6.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_6.ll
index 4d0739c93ac1d..bcf1fc9fe8134 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_6.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_6.ll
@@ -128,7 +128,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, [1020 x double]* %C, [1020 x double]* %A, [1020 x double]* %B) #0 {
+define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) #0 {
 entry:
   br label %entry.split
 
@@ -145,15 +145,15 @@ for.cond4.preheader:                              ; preds = %for.inc17, %for.con
 
 for.body6:                                        ; preds = %for.body6, %for.cond4.preheader
   %indvars.iv = phi i64 [ 0, %for.cond4.preheader ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1020 x double], [1020 x double]* %A, i64 %indvars.iv41, i64 %indvars.iv
-  %tmp = load double, double* %arrayidx8, align 8
-  %arrayidx12 = getelementptr inbounds [1020 x double], [1020 x double]* %B, i64 %indvars.iv, i64 %indvars.iv38
-  %tmp1 = load double, double* %arrayidx12, align 8
+  %arrayidx8 = getelementptr inbounds [1020 x double], ptr %A, i64 %indvars.iv41, i64 %indvars.iv
+  %tmp = load double, ptr %arrayidx8, align 8
+  %arrayidx12 = getelementptr inbounds [1020 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv38
+  %tmp1 = load double, ptr %arrayidx12, align 8
   %mul = fmul double %tmp, %tmp1
-  %arrayidx16 = getelementptr inbounds [1020 x double], [1020 x double]* %C, i64 %indvars.iv41, i64 %indvars.iv38
-  %tmp2 = load double, double* %arrayidx16, align 8
+  %arrayidx16 = getelementptr inbounds [1020 x double], ptr %C, i64 %indvars.iv41, i64 %indvars.iv38
+  %tmp2 = load double, ptr %arrayidx16, align 8
   %add = fadd double %tmp2, %mul
-  store double %add, double* %arrayidx16, align 8
+  store double %add, ptr %arrayidx16, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1020
   br i1 %exitcond, label %for.body6, label %for.inc17

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_7.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_7.ll
index 87a0c3058379e..77a3e02a00639 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_7.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_7.ll
@@ -112,7 +112,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
 ; Function Attrs: noinline nounwind uwtable
-define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, float %alpha, float %beta, [1024 x float]* %C, [1024 x float]* %A, [1024 x float]* %B) #0 {
+define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, float %alpha, float %beta, ptr %C, ptr %A, ptr %B) #0 {
 entry:
   br label %entry.split
 
@@ -129,15 +129,15 @@ for.cond4.preheader:                              ; preds = %for.inc17, %for.con
 
 for.body6:                                        ; preds = %for.body6, %for.cond4.preheader
   %indvars.iv = phi i64 [ 0, %for.cond4.preheader ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1024 x float], [1024 x float]* %A, i64 %indvars.iv41, i64 %indvars.iv
-  %tmp = load float, float* %arrayidx8, align 4
-  %arrayidx12 = getelementptr inbounds [1024 x float], [1024 x float]* %B, i64 %indvars.iv, i64 %indvars.iv38
-  %tmp1 = load float, float* %arrayidx12, align 4
+  %arrayidx8 = getelementptr inbounds [1024 x float], ptr %A, i64 %indvars.iv41, i64 %indvars.iv
+  %tmp = load float, ptr %arrayidx8, align 4
+  %arrayidx12 = getelementptr inbounds [1024 x float], ptr %B, i64 %indvars.iv, i64 %indvars.iv38
+  %tmp1 = load float, ptr %arrayidx12, align 4
   %mul = fmul float %tmp, %tmp1
-  %arrayidx16 = getelementptr inbounds [1024 x float], [1024 x float]* %C, i64 %indvars.iv41, i64 %indvars.iv38
-  %tmp2 = load float, float* %arrayidx16, align 4
+  %arrayidx16 = getelementptr inbounds [1024 x float], ptr %C, i64 %indvars.iv41, i64 %indvars.iv38
+  %tmp2 = load float, ptr %arrayidx16, align 4
   %add = fadd float %tmp2, %mul
-  store float %add, float* %arrayidx16, align 4
+  store float %add, ptr %arrayidx16, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1024
   br i1 %exitcond, label %for.body6, label %for.inc17

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_8.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_8.ll
index 9493eaf5d3ecd..d02bc359e79d1 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_8.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_8.ll
@@ -81,7 +81,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
 ; Function Attrs: noinline nounwind uwtable
-define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, [1024 x double]* %C, [1024 x float]* %A, [1024 x double]* %B) #0 {
+define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, double %alpha, double %beta, ptr %C, ptr %A, ptr %B) #0 {
 entry:
   br label %entry.split
 
@@ -98,16 +98,16 @@ for.cond4.preheader:                              ; preds = %for.inc17, %for.con
 
 for.body6:                                        ; preds = %for.body6, %for.cond4.preheader
   %indvars.iv = phi i64 [ 0, %for.cond4.preheader ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1024 x float], [1024 x float]* %A, i64 %indvars.iv41, i64 %indvars.iv
-  %tmp = load float, float* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds [1024 x float], ptr %A, i64 %indvars.iv41, i64 %indvars.iv
+  %tmp = load float, ptr %arrayidx8, align 4
   %conv = fpext float %tmp to double
-  %arrayidx12 = getelementptr inbounds [1024 x double], [1024 x double]* %B, i64 %indvars.iv, i64 %indvars.iv38
-  %tmp1 = load double, double* %arrayidx12, align 8
+  %arrayidx12 = getelementptr inbounds [1024 x double], ptr %B, i64 %indvars.iv, i64 %indvars.iv38
+  %tmp1 = load double, ptr %arrayidx12, align 8
   %mul = fmul double %conv, %tmp1
-  %arrayidx16 = getelementptr inbounds [1024 x double], [1024 x double]* %C, i64 %indvars.iv41, i64 %indvars.iv38
-  %tmp2 = load double, double* %arrayidx16, align 8
+  %arrayidx16 = getelementptr inbounds [1024 x double], ptr %C, i64 %indvars.iv41, i64 %indvars.iv38
+  %tmp2 = load double, ptr %arrayidx16, align 8
   %add = fadd double %tmp2, %mul
-  store double %add, double* %arrayidx16, align 8
+  store double %add, ptr %arrayidx16, align 8
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1024
   br i1 %exitcond, label %for.body6, label %for.inc17

diff  --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_9.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_9.ll
index 0d490cc765aaa..144abfd7622f5 100644
--- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_9.ll
+++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_9.ll
@@ -42,7 +42,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
-define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, i8 signext %alpha, i8 signext %beta, [1024 x i8]* %C, [1024 x i8]* %A, [1024 x i8]* %B) {
+define internal void @kernel_gemm(i32 %ni, i32 %nj, i32 %nk, i8 signext %alpha, i8 signext %beta, ptr %C, ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -59,15 +59,15 @@ for.cond4.preheader:                              ; preds = %for.inc20, %for.con
 
 for.body6:                                        ; preds = %for.body6, %for.cond4.preheader
   %indvars.iv = phi i64 [ 0, %for.cond4.preheader ], [ %indvars.iv.next, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [1024 x i8], [1024 x i8]* %A, i64 %indvars.iv45, i64 %indvars.iv
-  %tmp = load i8, i8* %arrayidx8, align 1
-  %arrayidx12 = getelementptr inbounds [1024 x i8], [1024 x i8]* %B, i64 %indvars.iv, i64 %indvars.iv42
-  %tmp1 = load i8, i8* %arrayidx12, align 1
+  %arrayidx8 = getelementptr inbounds [1024 x i8], ptr %A, i64 %indvars.iv45, i64 %indvars.iv
+  %tmp = load i8, ptr %arrayidx8, align 1
+  %arrayidx12 = getelementptr inbounds [1024 x i8], ptr %B, i64 %indvars.iv, i64 %indvars.iv42
+  %tmp1 = load i8, ptr %arrayidx12, align 1
   %mul = mul i8 %tmp1, %tmp
-  %arrayidx17 = getelementptr inbounds [1024 x i8], [1024 x i8]* %C, i64 %indvars.iv45, i64 %indvars.iv42
-  %tmp2 = load i8, i8* %arrayidx17, align 1
+  %arrayidx17 = getelementptr inbounds [1024 x i8], ptr %C, i64 %indvars.iv45, i64 %indvars.iv42
+  %tmp2 = load i8, ptr %arrayidx17, align 1
   %add = add i8 %mul, %tmp2
-  store i8 %add, i8* %arrayidx17, align 1
+  store i8 %add, ptr %arrayidx17, align 1
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp ne i64 %indvars.iv.next, 1024
   br i1 %exitcond, label %for.body6, label %for.inc20

diff  --git a/polly/test/ScheduleOptimizer/pattern_matching_based_opts_splitmap.ll b/polly/test/ScheduleOptimizer/pattern_matching_based_opts_splitmap.ll
index 6433e2c5e4223..5b9783d20bfc4 100644
--- a/polly/test/ScheduleOptimizer/pattern_matching_based_opts_splitmap.ll
+++ b/polly/test/ScheduleOptimizer/pattern_matching_based_opts_splitmap.ll
@@ -16,7 +16,7 @@
 ; ModuleID = 'pattern_matching_based_opts_splitmap.ll'
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @pattern_matching_based_opts_splitmap([2 x double]* noalias dereferenceable(32) %C, [784 x double]* noalias dereferenceable(12544) %A, [2 x double]* noalias dereferenceable(12544) %B) {
+define void @pattern_matching_based_opts_splitmap(ptr noalias dereferenceable(32) %C, ptr noalias dereferenceable(12544) %A, ptr noalias dereferenceable(12544) %B) {
 entry:
   br label %for.body
 
@@ -30,15 +30,15 @@ for.body3:                                        ; preds = %for.body, %for.inc1
 
 for.body6:                                        ; preds = %for.body3, %for.body6
   %k = phi i64 [ 0, %for.body3 ], [ %add17, %for.body6 ]
-  %arrayidx8 = getelementptr inbounds [784 x double], [784 x double]* %A, i64 %i, i64 %k
-  %tmp6 = load double, double* %arrayidx8, align 8
-  %arrayidx12 = getelementptr inbounds [2 x double], [2 x double]* %B, i64 %k, i64 %j
-  %tmp10 = load double, double* %arrayidx12, align 8
+  %arrayidx8 = getelementptr inbounds [784 x double], ptr %A, i64 %i, i64 %k
+  %tmp6 = load double, ptr %arrayidx8, align 8
+  %arrayidx12 = getelementptr inbounds [2 x double], ptr %B, i64 %k, i64 %j
+  %tmp10 = load double, ptr %arrayidx12, align 8
   %mul = fmul double %tmp6, %tmp10
-  %arrayidx16 = getelementptr inbounds [2 x double], [2 x double]* %C, i64 %i, i64 %j
-  %tmp14 = load double, double* %arrayidx16, align 8
+  %arrayidx16 = getelementptr inbounds [2 x double], ptr %C, i64 %i, i64 %j
+  %tmp14 = load double, ptr %arrayidx16, align 8
   %add = fadd double %tmp14, %mul
-  store double %add, double* %arrayidx16, align 8
+  store double %add, ptr %arrayidx16, align 8
   %add17 = add nsw i64 %k, 1
   %cmp5 = icmp slt i64 %add17, 784
   br i1 %cmp5, label %for.body6, label %for.inc18

diff  --git a/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll b/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll
index ca0bef10ca1f3..9089d45c1320e 100644
--- a/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll
+++ b/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll
@@ -19,20 +19,20 @@ for.cond1.preheader:                              ; preds = %entry.split, %for.i
 
 for.body3:                                        ; preds = %for.cond1.preheader, %for.inc25
   %indvar6 = phi i64 [ 0, %for.cond1.preheader ], [ %indvar.next7, %for.inc25 ]
-  %arrayidx24 = getelementptr [1536 x [1536 x float]], [1536 x [1536 x float]]* @C, i64 0, i64 %indvar4, i64 %indvar6
-  store float 0.000000e+00, float* %arrayidx24, align 4
+  %arrayidx24 = getelementptr [1536 x [1536 x float]], ptr @C, i64 0, i64 %indvar4, i64 %indvar6
+  store float 0.000000e+00, ptr %arrayidx24, align 4
   br label %for.body8
 
 for.body8:                                        ; preds = %for.body3, %for.body8
   %indvar = phi i64 [ 0, %for.body3 ], [ %indvar.next, %for.body8 ]
-  %arrayidx16 = getelementptr [1536 x [1536 x float]], [1536 x [1536 x float]]* @A, i64 0, i64 %indvar4, i64 %indvar
-  %arrayidx20 = getelementptr [1536 x [1536 x float]], [1536 x [1536 x float]]* @B, i64 0, i64 %indvar, i64 %indvar6
-  %0 = load float, float* %arrayidx24, align 4
-  %1 = load float, float* %arrayidx16, align 4
-  %2 = load float, float* %arrayidx20, align 4
+  %arrayidx16 = getelementptr [1536 x [1536 x float]], ptr @A, i64 0, i64 %indvar4, i64 %indvar
+  %arrayidx20 = getelementptr [1536 x [1536 x float]], ptr @B, i64 0, i64 %indvar, i64 %indvar6
+  %0 = load float, ptr %arrayidx24, align 4
+  %1 = load float, ptr %arrayidx16, align 4
+  %2 = load float, ptr %arrayidx20, align 4
   %mul = fmul float %1, %2
   %add = fadd float %0, %mul
-  store float %add, float* %arrayidx24, align 4
+  store float %add, ptr %arrayidx24, align 4
   %indvar.next = add i64 %indvar, 1
   %exitcond = icmp ne i64 %indvar.next, 1536
   br i1 %exitcond, label %for.body8, label %for.inc25

diff  --git a/polly/test/ScheduleOptimizer/prevectorization.ll b/polly/test/ScheduleOptimizer/prevectorization.ll
index f3cb9f8d99c09..55943d6daf736 100644
--- a/polly/test/ScheduleOptimizer/prevectorization.ll
+++ b/polly/test/ScheduleOptimizer/prevectorization.ll
@@ -22,20 +22,20 @@ for.cond1.preheader:                              ; preds = %entry.split, %for.i
 
 for.body3:                                        ; preds = %for.cond1.preheader, %for.inc25
   %indvar6 = phi i64 [ 0, %for.cond1.preheader ], [ %indvar.next7, %for.inc25 ]
-  %arrayidx24 = getelementptr [1536 x [1536 x float]], [1536 x [1536 x float]]* @C, i64 0, i64 %indvar4, i64 %indvar6
-  store float 0.000000e+00, float* %arrayidx24, align 4
+  %arrayidx24 = getelementptr [1536 x [1536 x float]], ptr @C, i64 0, i64 %indvar4, i64 %indvar6
+  store float 0.000000e+00, ptr %arrayidx24, align 4
   br label %for.body8
 
 for.body8:                                        ; preds = %for.body3, %for.body8
   %indvar = phi i64 [ 0, %for.body3 ], [ %indvar.next, %for.body8 ]
-  %arrayidx16 = getelementptr [1536 x [1536 x float]], [1536 x [1536 x float]]* @A, i64 0, i64 %indvar4, i64 %indvar
-  %arrayidx20 = getelementptr [1536 x [1536 x float]], [1536 x [1536 x float]]* @B, i64 0, i64 %indvar, i64 %indvar6
-  %0 = load float, float* %arrayidx24, align 4
-  %1 = load float, float* %arrayidx16, align 4
-  %2 = load float, float* %arrayidx20, align 4
+  %arrayidx16 = getelementptr [1536 x [1536 x float]], ptr @A, i64 0, i64 %indvar4, i64 %indvar
+  %arrayidx20 = getelementptr [1536 x [1536 x float]], ptr @B, i64 0, i64 %indvar, i64 %indvar6
+  %0 = load float, ptr %arrayidx24, align 4
+  %1 = load float, ptr %arrayidx16, align 4
+  %2 = load float, ptr %arrayidx20, align 4
   %mul = fmul float %1, %2
   %add = fadd float %0, %mul
-  store float %add, float* %arrayidx24, align 4
+  store float %add, ptr %arrayidx24, align 4
   %indvar.next = add i64 %indvar, 1
   %exitcond = icmp ne i64 %indvar.next, 1536
   br i1 %exitcond, label %for.body8, label %for.inc25

diff  --git a/polly/test/ScheduleOptimizer/rectangular-tiling.ll b/polly/test/ScheduleOptimizer/rectangular-tiling.ll
index 4bbc1448f6e4a..c254e4f367c4d 100644
--- a/polly/test/ScheduleOptimizer/rectangular-tiling.ll
+++ b/polly/test/ScheduleOptimizer/rectangular-tiling.ll
@@ -67,7 +67,7 @@
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
 ; Function Attrs: nounwind
-define void @rect([512 x i32]* %A) {
+define void @rect(ptr %A) {
 entry:
   br label %entry.split
 
@@ -82,8 +82,8 @@ for.body3:                                        ; preds = %for.body3.lr.ph, %f
   %j.0 = phi i32 [ 0, %for.body3.lr.ph ], [ %inc, %for.body3 ]
   %mul = mul nsw i32 %j.0, %i.0
   %rem = srem i32 %mul, 42
-  %arrayidx4 = getelementptr inbounds [512 x i32], [512 x i32]* %A, i32 %i.0, i32 %j.0
-  store i32 %rem, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds [512 x i32], ptr %A, i32 %i.0, i32 %j.0
+  store i32 %rem, ptr %arrayidx4, align 4
   %inc = add nsw i32 %j.0, 1
   %cmp2 = icmp slt i32 %inc, 512
   br i1 %cmp2, label %for.body3, label %for.inc5

diff  --git a/polly/test/ScheduleOptimizer/statistics.ll b/polly/test/ScheduleOptimizer/statistics.ll
index 086d96847fa34..472febea173fd 100644
--- a/polly/test/ScheduleOptimizer/statistics.ll
+++ b/polly/test/ScheduleOptimizer/statistics.ll
@@ -34,7 +34,7 @@
 ;    }
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo_1d(float* %A) {
+define void @foo_1d(ptr %A) {
 bb:
   br label %bb1
 
@@ -45,10 +45,10 @@ bb1:                                              ; preds = %bb6, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = sitofp i64 %i.0 to float
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, %tmp
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2
@@ -59,7 +59,7 @@ bb8:                                              ; preds = %bb1
   ret void
 }
 
-define void @foo_2d(float* %A) {
+define void @foo_2d(ptr %A) {
 bb:
   br label %bb2
 
@@ -80,10 +80,10 @@ bb5:                                              ; preds = %bb4
   %tmp = add nuw nsw i64 %i.0, %j.0
   %tmp6 = sitofp i64 %tmp to float
   %tmp7 = add nuw nsw i64 %i.0, %j.0
-  %tmp8 = getelementptr inbounds float, float* %A, i64 %tmp7
-  %tmp9 = load float, float* %tmp8, align 4
+  %tmp8 = getelementptr inbounds float, ptr %A, i64 %tmp7
+  %tmp9 = load float, ptr %tmp8, align 4
   %tmp10 = fadd float %tmp9, %tmp6
-  store float %tmp10, float* %tmp8, align 4
+  store float %tmp10, ptr %tmp8, align 4
   br label %bb11
 
 bb11:                                             ; preds = %bb5
@@ -101,7 +101,7 @@ bb16:                                             ; preds = %bb2
   ret void
 }
 
-define void @foo_3d(float* %A) {
+define void @foo_3d(ptr %A) {
 bb:
   br label %bb3
 
@@ -132,10 +132,10 @@ bb8:                                              ; preds = %bb7
   %tmp10 = sitofp i64 %tmp9 to float
   %tmp11 = add nuw nsw i64 %i.0, %j.0
   %tmp12 = add nuw nsw i64 %tmp11, %k.0
-  %tmp13 = getelementptr inbounds float, float* %A, i64 %tmp12
-  %tmp14 = load float, float* %tmp13, align 4
+  %tmp13 = getelementptr inbounds float, ptr %A, i64 %tmp12
+  %tmp14 = load float, ptr %tmp13, align 4
   %tmp15 = fadd float %tmp14, %tmp10
-  store float %tmp15, float* %tmp13, align 4
+  store float %tmp15, ptr %tmp13, align 4
   br label %bb16
 
 bb16:                                             ; preds = %bb8
@@ -160,7 +160,7 @@ bb24:                                             ; preds = %bb3
   ret void
 }
 
-define void @foo_4d(float* %A) {
+define void @foo_4d(ptr %A) {
 bb:
   br label %bb4
 
@@ -201,10 +201,10 @@ bb11:                                             ; preds = %bb10
   %tmp15 = add nuw nsw i64 %i.0, %j.0
   %tmp16 = add nuw nsw i64 %tmp15, %k.0
   %tmp17 = add nuw nsw i64 %tmp16, %l.0
-  %tmp18 = getelementptr inbounds float, float* %A, i64 %tmp17
-  %tmp19 = load float, float* %tmp18, align 4
+  %tmp18 = getelementptr inbounds float, ptr %A, i64 %tmp17
+  %tmp19 = load float, ptr %tmp18, align 4
   %tmp20 = fadd float %tmp19, %tmp14
-  store float %tmp20, float* %tmp18, align 4
+  store float %tmp20, ptr %tmp18, align 4
   br label %bb21
 
 bb21:                                             ; preds = %bb11
@@ -236,7 +236,7 @@ bb32:                                             ; preds = %bb4
   ret void
 }
 
-define void @foo_zero_iterations(float* %A) {
+define void @foo_zero_iterations(ptr %A) {
 bb:
   br label %bb1
 
@@ -247,10 +247,10 @@ bb1:                                              ; preds = %bb6, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = sitofp i64 %i.0 to float
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, %tmp
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2

diff  --git a/polly/test/ScheduleOptimizer/tile_after_fusion.ll b/polly/test/ScheduleOptimizer/tile_after_fusion.ll
index fe44d9cd225fc..8e5849234af60 100644
--- a/polly/test/ScheduleOptimizer/tile_after_fusion.ll
+++ b/polly/test/ScheduleOptimizer/tile_after_fusion.ll
@@ -32,7 +32,7 @@
 source_filename = "tile_after_fusion.c"
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @tf([256 x [256 x i32]]* %C, [256 x [256 x i32]]* %A0, [256 x [256 x i32]]* %A1) {
+define void @tf(ptr %C, ptr %A0, ptr %A1) {
 entry:
   br label %for.cond
 
@@ -58,12 +58,12 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
   br i1 %exitcond9, label %for.body6, label %for.end
 
 for.body6:                                        ; preds = %for.cond4
-  %arrayidx10 = getelementptr inbounds [256 x [256 x i32]], [256 x [256 x i32]]* %A0, i64 %indvars.iv13, i64 %indvars.iv10, i64 %indvars.iv7
-  %tmp = load i32, i32* %arrayidx10, align 4
-  %arrayidx16 = getelementptr inbounds [256 x [256 x i32]], [256 x [256 x i32]]* %C, i64 %indvars.iv13, i64 %indvars.iv10, i64 %indvars.iv7
-  %tmp16 = load i32, i32* %arrayidx16, align 4
+  %arrayidx10 = getelementptr inbounds [256 x [256 x i32]], ptr %A0, i64 %indvars.iv13, i64 %indvars.iv10, i64 %indvars.iv7
+  %tmp = load i32, ptr %arrayidx10, align 4
+  %arrayidx16 = getelementptr inbounds [256 x [256 x i32]], ptr %C, i64 %indvars.iv13, i64 %indvars.iv10, i64 %indvars.iv7
+  %tmp16 = load i32, ptr %arrayidx16, align 4
   %add = add nsw i32 %tmp16, %tmp
-  store i32 %add, i32* %arrayidx16, align 4
+  store i32 %add, ptr %arrayidx16, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body6
@@ -109,12 +109,12 @@ for.cond32:                                       ; preds = %for.inc48, %for.bod
   br i1 %exitcond, label %for.body34, label %for.end50
 
 for.body34:                                       ; preds = %for.cond32
-  %arrayidx40 = getelementptr inbounds [256 x [256 x i32]], [256 x [256 x i32]]* %A1, i64 %indvars.iv4, i64 %indvars.iv1, i64 %indvars.iv
-  %tmp17 = load i32, i32* %arrayidx40, align 4
-  %arrayidx46 = getelementptr inbounds [256 x [256 x i32]], [256 x [256 x i32]]* %C, i64 %indvars.iv4, i64 %indvars.iv1, i64 %indvars.iv
-  %tmp18 = load i32, i32* %arrayidx46, align 4
+  %arrayidx40 = getelementptr inbounds [256 x [256 x i32]], ptr %A1, i64 %indvars.iv4, i64 %indvars.iv1, i64 %indvars.iv
+  %tmp17 = load i32, ptr %arrayidx40, align 4
+  %arrayidx46 = getelementptr inbounds [256 x [256 x i32]], ptr %C, i64 %indvars.iv4, i64 %indvars.iv1, i64 %indvars.iv
+  %tmp18 = load i32, ptr %arrayidx46, align 4
   %add47 = add nsw i32 %tmp18, %tmp17
-  store i32 %add47, i32* %arrayidx46, align 4
+  store i32 %add47, ptr %arrayidx46, align 4
   br label %for.inc48
 
 for.inc48:                                        ; preds = %for.body34

diff  --git a/polly/test/ScheduleOptimizer/vec-addr-space.ll b/polly/test/ScheduleOptimizer/vec-addr-space.ll
index 7c66d7c58ce26..563c37f256ca0 100644
--- a/polly/test/ScheduleOptimizer/vec-addr-space.ll
+++ b/polly/test/ScheduleOptimizer/vec-addr-space.ll
@@ -4,7 +4,7 @@
 ; a pointer bitcast from a pointer having an address space to one without
 ;
 ; CHECK-LABEL: entry:
-; CHECK: load <4 x float>, <4 x float> addrspace(4)*
+; CHECK: load <4 x float>, ptr addrspace(4)
 ;
 ; ModuleID = '/tmp/lud.bc'
 source_filename = "lud.c"
@@ -14,7 +14,7 @@ target datalayout = "e-m:e-p:32:32-p1:32:32-p3:32:32-p5:32:32-i64:32-f64:32-v64:
 target triple = "x86_64-unknown-unknown"
 
 ; Function Attrs: noinline nounwind
-define void @LU_decomp_kij_opt(i32 %n, i32 %lda, float addrspace(4)* %A, float addrspace(4)* %scratch) #0 {
+define void @LU_decomp_kij_opt(i32 %n, i32 %lda, ptr addrspace(4) %A, ptr addrspace(4) %scratch) #0 {
 entry:
   %cmp34 = icmp sgt i32 %n, 0
   br i1 %cmp34, label %for.body.lr.ph, label %for.end34
@@ -27,8 +27,8 @@ for.body:                                         ; preds = %for.inc32, %for.bod
   %k.035 = phi i32 [ 0, %for.body.lr.ph ], [ %add2, %for.inc32 ]
   %mul = mul nsw i32 %k.035, %lda
   %add = add nsw i32 %mul, %k.035
-  %arrayidx = getelementptr inbounds float, float addrspace(4)* %A, i32 %add
-  %1 = load float, float addrspace(4)* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr addrspace(4) %A, i32 %add
+  %1 = load float, ptr addrspace(4) %arrayidx, align 4
   %conv1 = fdiv arcp float 1.000000e+00, %1
   %add2 = add nuw nsw i32 %k.035, 1
   %exitcond37 = icmp eq i32 %k.035, %0
@@ -41,24 +41,24 @@ for.body6:                                        ; preds = %for.inc29, %for.bod
   %i.033 = phi i32 [ %add2, %for.body6.lr.ph ], [ %inc30, %for.inc29 ]
   %mul7 = mul nsw i32 %i.033, %lda
   %add8 = add nsw i32 %mul7, %k.035
-  %arrayidx9 = getelementptr inbounds float, float addrspace(4)* %A, i32 %add8
-  %2 = load float, float addrspace(4)* %arrayidx9, align 4
+  %arrayidx9 = getelementptr inbounds float, ptr addrspace(4) %A, i32 %add8
+  %2 = load float, ptr addrspace(4) %arrayidx9, align 4
   %mul10 = fmul arcp contract float %conv1, %2
-  store float %mul10, float addrspace(4)* %arrayidx9, align 4
+  store float %mul10, ptr addrspace(4) %arrayidx9, align 4
   br label %for.body18
 
 for.body18:                                       ; preds = %for.body18, %for.body6
   %j.031 = phi i32 [ %add2, %for.body6 ], [ %inc, %for.body18 ]
-  %3 = load float, float addrspace(4)* %arrayidx9, align 4
+  %3 = load float, ptr addrspace(4) %arrayidx9, align 4
   %add23 = add nsw i32 %j.031, %mul
-  %arrayidx24 = getelementptr inbounds float, float addrspace(4)* %A, i32 %add23
-  %4 = load float, float addrspace(4)* %arrayidx24, align 4
+  %arrayidx24 = getelementptr inbounds float, ptr addrspace(4) %A, i32 %add23
+  %4 = load float, ptr addrspace(4) %arrayidx24, align 4
   %mul25 = fmul arcp contract float %3, %4
   %add27 = add nsw i32 %j.031, %mul7
-  %arrayidx28 = getelementptr inbounds float, float addrspace(4)* %A, i32 %add27
-  %5 = load float, float addrspace(4)* %arrayidx28, align 4
+  %arrayidx28 = getelementptr inbounds float, ptr addrspace(4) %A, i32 %add27
+  %5 = load float, ptr addrspace(4) %arrayidx28, align 4
   %sub = fsub arcp contract float %5, %mul25
-  store float %sub, float addrspace(4)* %arrayidx28, align 4
+  store float %sub, ptr addrspace(4) %arrayidx28, align 4
   %inc = add nuw nsw i32 %j.031, 1
   %exitcond = icmp eq i32 %inc, %n
   br i1 %exitcond, label %for.inc29, label %for.body18

diff  --git a/polly/test/ScheduleOptimizer/vivid-vbi-gen-vivid_vbi_gen_sliced-before-llvmreduced.ll b/polly/test/ScheduleOptimizer/vivid-vbi-gen-vivid_vbi_gen_sliced-before-llvmreduced.ll
index 9b215ab072067..d08595db8fce7 100644
--- a/polly/test/ScheduleOptimizer/vivid-vbi-gen-vivid_vbi_gen_sliced-before-llvmreduced.ll
+++ b/polly/test/ScheduleOptimizer/vivid-vbi-gen-vivid_vbi_gen_sliced-before-llvmreduced.ll
@@ -11,23 +11,22 @@ entry:
 
 for.body:                                         ; preds = %vivid_vbi_gen_teletext.exit, %entry
   %i.015 = phi i32 [ 0, %entry ], [ %inc, %vivid_vbi_gen_teletext.exit ]
-  %data0.014 = phi %struct.v4l2_sliced_vbi_data* [ null, %entry ], [ %incdec.ptr, %vivid_vbi_gen_teletext.exit ]
-  %arraydecay = getelementptr inbounds %struct.v4l2_sliced_vbi_data, %struct.v4l2_sliced_vbi_data* %data0.014, i32 0, i32 0, i32 0
-  %arrayidx.i = getelementptr inbounds %struct.v4l2_sliced_vbi_data, %struct.v4l2_sliced_vbi_data* %data0.014, i32 0, i32 0, i32 6
-  %0 = load i8, i8* %arrayidx.i, align 1
-  store i8 %0, i8* %arraydecay, align 1
+  %data0.014 = phi ptr [ null, %entry ], [ %incdec.ptr, %vivid_vbi_gen_teletext.exit ]
+  %arrayidx.i = getelementptr inbounds %struct.v4l2_sliced_vbi_data, ptr %data0.014, i32 0, i32 0, i32 6
+  %0 = load i8, ptr %arrayidx.i, align 1
+  store i8 %0, ptr %data0.014, align 1
   br label %for.body.for.body_crit_edge.i
 
 for.body.for.body_crit_edge.i:                    ; preds = %for.body.for.body_crit_edge.i, %for.body
   %inc10.i13 = phi i32 [ 1, %for.body ], [ %inc10.i, %for.body.for.body_crit_edge.i ]
-  %arrayidx2.phi.trans.insert.i = getelementptr inbounds %struct.v4l2_sliced_vbi_data, %struct.v4l2_sliced_vbi_data* %data0.014, i32 0, i32 0, i32 %inc10.i13
-  store i8 0, i8* %arrayidx2.phi.trans.insert.i, align 1
+  %arrayidx2.phi.trans.insert.i = getelementptr inbounds %struct.v4l2_sliced_vbi_data, ptr %data0.014, i32 0, i32 0, i32 %inc10.i13
+  store i8 0, ptr %arrayidx2.phi.trans.insert.i, align 1
   %inc10.i = add nuw nsw i32 %inc10.i13, 1
   %exitcond.not.i = icmp eq i32 %inc10.i13, 42
   br i1 %exitcond.not.i, label %vivid_vbi_gen_teletext.exit, label %for.body.for.body_crit_edge.i
 
 vivid_vbi_gen_teletext.exit:                      ; preds = %for.body.for.body_crit_edge.i
-  %incdec.ptr = getelementptr inbounds %struct.v4l2_sliced_vbi_data, %struct.v4l2_sliced_vbi_data* %data0.014, i32 1
+  %incdec.ptr = getelementptr inbounds %struct.v4l2_sliced_vbi_data, ptr %data0.014, i32 1
   %inc = add nuw nsw i32 %i.015, 1
   %exitcond.not = icmp eq i32 %i.015, 1
   br i1 %exitcond.not, label %for.end, label %for.body

diff  --git a/polly/test/ScopDetect/aliasing_parametric_simple_1.ll b/polly/test/ScopDetect/aliasing_parametric_simple_1.ll
index d6f3d2ae7fb85..2eddbd4cb2626 100644
--- a/polly/test/ScopDetect/aliasing_parametric_simple_1.ll
+++ b/polly/test/ScopDetect/aliasing_parametric_simple_1.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %B, i32 %c) {
+define void @jd(ptr %A, ptr %B, i32 %c) {
 entry:
   br label %for.cond
 
@@ -20,10 +20,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %idxprom = sext i32 %c to i64
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %idxprom
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp, i32* %arrayidx2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %idxprom
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopDetect/aliasing_parametric_simple_2.ll b/polly/test/ScopDetect/aliasing_parametric_simple_2.ll
index 7c2450d4fb35c..c111f686c4625 100644
--- a/polly/test/ScopDetect/aliasing_parametric_simple_2.ll
+++ b/polly/test/ScopDetect/aliasing_parametric_simple_2.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %B, i32 %c) {
+define void @jd(ptr %A, ptr %B, i32 %c) {
 entry:
   br label %for.cond
 
@@ -21,13 +21,13 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %sub = add nsw i32 %c, -10
   %idxprom = sext i32 %sub to i64
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %idxprom
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx1 = getelementptr inbounds i32, i32* %B, i64 5
-  %tmp1 = load i32, i32* %arrayidx1, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %idxprom
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %B, i64 5
+  %tmp1 = load i32, ptr %arrayidx1, align 4
   %add = add nsw i32 %tmp, %tmp1
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %add, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %add, ptr %arrayidx3, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopDetect/aliasing_simple_1.ll b/polly/test/ScopDetect/aliasing_simple_1.ll
index 77a19a017bbad..524ca19ae398a 100644
--- a/polly/test/ScopDetect/aliasing_simple_1.ll
+++ b/polly/test/ScopDetect/aliasing_simple_1.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %B) {
+define void @jd(ptr %A, ptr %B) {
 entry:
   br label %for.cond
 
@@ -19,9 +19,9 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp = load i32, i32* %B, align 4
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp, i32* %arrayidx2, align 4
+  %tmp = load i32, ptr %B, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopDetect/aliasing_simple_2.ll b/polly/test/ScopDetect/aliasing_simple_2.ll
index 315923c8c9f3b..457df996c7b85 100644
--- a/polly/test/ScopDetect/aliasing_simple_2.ll
+++ b/polly/test/ScopDetect/aliasing_simple_2.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %B) {
+define void @jd(ptr %A, ptr %B) {
 entry:
   br label %for.cond
 
@@ -19,12 +19,12 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp = load i32, i32* %B, align 4
-  %arrayidx1 = getelementptr inbounds i32, i32* %B, i64 1023
-  %tmp1 = load i32, i32* %arrayidx1, align 4
+  %tmp = load i32, ptr %B, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %B, i64 1023
+  %tmp1 = load i32, ptr %arrayidx1, align 4
   %add = add nsw i32 %tmp, %tmp1
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %add, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %add, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopDetect/base_pointer.ll b/polly/test/ScopDetect/base_pointer.ll
index f6bea32431cd8..e500f9bc20bc6 100644
--- a/polly/test/ScopDetect/base_pointer.ll
+++ b/polly/test/ScopDetect/base_pointer.ll
@@ -3,19 +3,19 @@
 
 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"
 
-define void @base_pointer_in_condition(i64** noalias %A_ptr, i64 %N) nounwind {
+define void @base_pointer_in_condition(ptr noalias %A_ptr, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %pre
 
 pre:
-  %A = load i64*, i64** %A_ptr
+  %A = load ptr, ptr %A_ptr
   br i1 true, label %for.i, label %then
 
 for.i:
   %indvar = phi i64 [ 0, %pre ], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %then, label %for.i
@@ -31,7 +31,7 @@ return:
 ; CHECK-LABEL: base_pointer_in_condition
 ; CHECK: Valid Region for Scop: pre => return
 
-define void @base_pointer_is_argument(float* %A, i64 %n) {
+define void @base_pointer_is_argument(ptr %A, i64 %n) {
 entry:
   br label %for.i
 
@@ -41,8 +41,8 @@ for.i:
 
 S1:
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* %A, i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr float, ptr %A, i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
   br label %for.i.inc
 
 for.i.inc:
@@ -67,8 +67,8 @@ for.i:
 
 S1:
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* inttoptr (i64 100 to float*), i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr float, ptr inttoptr (i64 100 to ptr), i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
   br label %for.i.inc
 
 for.i.inc:
@@ -95,8 +95,8 @@ for.i:
 
 S1:
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* @A, i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr float, ptr @A, i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
   br label %for.i.inc
 
 for.i.inc:
@@ -111,11 +111,11 @@ exit:
 ; CHECK-LABEL: base_pointer_is_global
 ; CHECK: Valid Region for Scop: for.i => exit
 
-declare float *@foo()
+declare ptr @foo()
 
 define void @base_pointer_is_inst_outside(i64 %n) {
 entry:
-  %A = call float *@foo()
+  %A = call ptr @foo()
   br label %for.i
 
 for.i:
@@ -124,8 +124,8 @@ for.i:
 
 S1:
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* %A, i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr float, ptr %A, i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
   br label %for.i.inc
 
 for.i.inc:
@@ -140,25 +140,25 @@ exit:
 ; CHECK-LABEL: base_pointer_is_inst_outside
 ; CHECK: Valid Region for Scop: for.i => exit
 
-declare float* @getNextBasePtr(float*) readnone nounwind
+declare ptr @getNextBasePtr(ptr) readnone nounwind
 
-define void @base_pointer_is_phi_node(i64 %n, float* %A) {
+define void @base_pointer_is_phi_node(i64 %n, ptr %A) {
 entry:
   br label %for.i
 
 for.i:
   %indvar.i = phi i64 [ %indvar.i.next, %for.i.inc ], [ 0, %entry ]
-  %ptr = phi float* [ %ptr.next, %for.i.inc ], [ %A, %entry ]
+  %ptr = phi ptr [ %ptr.next, %for.i.inc ], [ %A, %entry ]
 ; To get a PHI node inside a SCoP that can not be analyzed but
 ; for which the surrounding SCoP is normally still valid we use a function
 ; without any side effects.
-  %ptr.next = call float* @getNextBasePtr(float* %ptr)
+  %ptr.next = call ptr @getNextBasePtr(ptr %ptr)
   br label %S1
 
 S1:
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* %ptr, i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr float, ptr %ptr, i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
   br label %for.i.inc
 
 for.i.inc:
@@ -173,7 +173,7 @@ exit:
 ; CHECK-LABEL: base_pointer_is_phi_node
 ; CHECK-NOT: Valid Region for Scop
 
-define void @base_pointer_is_inst_inside_invariant_1(i64 %n, float* %A) {
+define void @base_pointer_is_inst_inside_invariant_1(i64 %n, ptr %A) {
 entry:
   br label %for.i
 
@@ -183,13 +183,13 @@ for.i:
 ; considered a valid base pointer because it can return a pointer that aliases
 ; with something else (e.g. %A or a global) or return a 
diff erent pointer at
 ; every call (e.g. malloc)
-  %ptr = call float* @getNextBasePtr(float* %A)
+  %ptr = call ptr @getNextBasePtr(ptr %A)
   br label %S1
 
 S1:
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* %ptr, i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr float, ptr %ptr, i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
   br label %for.i.inc
 
 for.i.inc:
@@ -204,22 +204,22 @@ exit:
 ; CHECK-LABEL: base_pointer_is_inst_inside_invariant_1
 ; CHECK-NOT: Valid Region for Scop
 
-declare float* @getNextBasePtr2(float*) readnone nounwind
+declare ptr @getNextBasePtr2(ptr) readnone nounwind
 
-define void @base_pointer_is_inst_inside_invariant_2(i64 %n, float* %A) {
+define void @base_pointer_is_inst_inside_invariant_2(i64 %n, ptr %A) {
 entry:
   br label %for.i
 
 for.i:
   %indvar.i = phi i64 [ %indvar.i.next, %for.i.inc ], [ 0, %entry ]
-  %ptr = call float* @getNextBasePtr2(float* %A)
-  %ptr2 = call float* @getNextBasePtr(float* %ptr)
+  %ptr = call ptr @getNextBasePtr2(ptr %A)
+  %ptr2 = call ptr @getNextBasePtr(ptr %ptr)
   br label %S1
 
 S1:
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* %ptr2, i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr float, ptr %ptr2, i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
   br label %for.i.inc
 
 for.i.inc:
@@ -234,22 +234,22 @@ exit:
 ; CHECK-LABEL: base_pointer_is_inst_inside_invariant_2
 ; CHECK-NOT: Valid Region for Scop
 
-declare float* @getNextBasePtr3(float*, i64) readnone nounwind
+declare ptr @getNextBasePtr3(ptr, i64) readnone nounwind
 
-define void @base_pointer_is_inst_inside_variant(i64 %n, float* %A) {
+define void @base_pointer_is_inst_inside_variant(i64 %n, ptr %A) {
 entry:
   br label %for.i
 
 for.i:
   %indvar.i = phi i64 [ %indvar.i.next, %for.i.inc ], [ 0, %entry ]
-  %ptr = call float* @getNextBasePtr3(float* %A, i64 %indvar.i)
-  %ptr2 = call float* @getNextBasePtr(float* %ptr)
+  %ptr = call ptr @getNextBasePtr3(ptr %A, i64 %indvar.i)
+  %ptr2 = call ptr @getNextBasePtr(ptr %ptr)
   br label %S1
 
 S1:
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* %ptr2, i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr float, ptr %ptr2, i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
   br label %for.i.inc
 
 for.i.inc:
@@ -264,21 +264,21 @@ exit:
 ; CHECK: base_pointer_is_inst_inside_variant
 ; CHECK-NOT: Valid Region for Scop
 
-define void @base_pointer_is_ptr2ptr(float** noalias %A, i64 %n) {
+define void @base_pointer_is_ptr2ptr(ptr noalias %A, i64 %n) {
 entry:
   br label %for.i
 
 for.i:
   %indvar.i = phi i64 [ %indvar.i.next, %for.i.inc ], [ 0, %entry ]
-  %arrayidx = getelementptr float*, float** %A, i64 %indvar.i
+  %arrayidx = getelementptr ptr, ptr %A, i64 %indvar.i
   br label %for.j
 
 for.j:
   %indvar.j = phi i64 [ 0, %for.i ], [ %indvar.j.next, %for.j ]
   %conv = sitofp i64 %indvar.i to float
-  %basepointer = load float*, float** %arrayidx, align 8
-  %arrayidx5 = getelementptr float, float* %basepointer, i64 %indvar.j
-  store float %conv, float* %arrayidx5, align 4
+  %basepointer = load ptr, ptr %arrayidx, align 8
+  %arrayidx5 = getelementptr float, ptr %basepointer, i64 %indvar.j
+  store float %conv, ptr %arrayidx5, align 4
   %indvar.j.next = add i64 %indvar.j, 1
   %exitcond.j = icmp ne i64 %indvar.j.next, %n
   br i1 %exitcond.j, label %for.j, label %for.i.inc

diff  --git a/polly/test/ScopDetect/base_pointer_setNewAccessRelation.ll b/polly/test/ScopDetect/base_pointer_setNewAccessRelation.ll
index e4020b0a7a453..ff9be6ea16e86 100644
--- a/polly/test/ScopDetect/base_pointer_setNewAccessRelation.ll
+++ b/polly/test/ScopDetect/base_pointer_setNewAccessRelation.ll
@@ -7,9 +7,9 @@
 ;
 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"
 
-declare float* @getNextBasePtr(float*) readnone nounwind
+declare ptr @getNextBasePtr(ptr) readnone nounwind
 
-define void @base_pointer_is_inst_inside_invariant_1(i64 %n, float* %A) {
+define void @base_pointer_is_inst_inside_invariant_1(i64 %n, ptr %A) {
 entry:
   br label %for.i
 
@@ -18,10 +18,10 @@ for.i:
   br label %S1
 
 S1:
-  %ptr = call float* @getNextBasePtr(float* %A)
+  %ptr = call ptr @getNextBasePtr(ptr %A)
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* %ptr, i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr float, ptr %ptr, i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
   br label %for.i.inc
 
 for.i.inc:

diff  --git a/polly/test/ScopDetect/callbr.ll b/polly/test/ScopDetect/callbr.ll
index f226818a4ca13..d65ab934bf2ef 100644
--- a/polly/test/ScopDetect/callbr.ll
+++ b/polly/test/ScopDetect/callbr.ll
@@ -10,7 +10,7 @@
 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 void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   callbr void asm sideeffect "", "!i,~{dirflag},~{fpsr},~{flags}"() #1
           to label %fallthrough [label %for]
@@ -24,7 +24,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/ScopDetect/collective_invariant_loads.ll b/polly/test/ScopDetect/collective_invariant_loads.ll
index 7ba35f21e030e..f1d2eea520c6d 100644
--- a/polly/test/ScopDetect/collective_invariant_loads.ll
+++ b/polly/test/ScopDetect/collective_invariant_loads.ll
@@ -18,11 +18,11 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%array_ty = type { i64, %array_ptr*, i8 }
-%array_ptr = type { [2 x i64], [2 x i64], [2 x i64], i64, i64, double*, double*, i8 }
+%array_ty = type { i64, ptr, i8 }
+%array_ptr = type { [2 x i64], [2 x i64], [2 x i64], i64, i64, ptr, ptr, i8 }
 
 ; Function Attrs: noinline
-define weak dso_local void @test_init_chpl(%array_ty* nonnull %arg) {
+define weak dso_local void @test_init_chpl(ptr nonnull %arg) {
 bb:
   br label %bb1
 
@@ -32,16 +32,16 @@ bb1:                                              ; preds = %bb14, %bb
 
 bb2:                                              ; preds = %bb2, %bb1
   %.01 = phi i64 [ 0, %bb1 ], [ %tmp13, %bb2 ]
-  %tmp = getelementptr inbounds %array_ty, %array_ty* %arg, i64 0, i32 1
-  %tmp3 = load %array_ptr*, %array_ptr** %tmp, align 8
-  %tmp4 = getelementptr inbounds %array_ptr, %array_ptr* %tmp3, i64 0, i32 1, i64 0
-  %tmp5 = load i64, i64* %tmp4, align 8
+  %tmp = getelementptr inbounds %array_ty, ptr %arg, i64 0, i32 1
+  %tmp3 = load ptr, ptr %tmp, align 8
+  %tmp4 = getelementptr inbounds %array_ptr, ptr %tmp3, i64 0, i32 1, i64 0
+  %tmp5 = load i64, ptr %tmp4, align 8
   %tmp6 = mul nsw i64 %tmp5, %.0
   %tmp7 = add nsw i64 %tmp6, %.01
-  %tmp8 = getelementptr inbounds %array_ptr, %array_ptr* %tmp3, i64 0, i32 6
-  %tmp9 = load double*, double** %tmp8, align 8
-  %tmp10 = getelementptr inbounds double, double* %tmp9, i64 %tmp7
-  store double 13.0, double* %tmp10, align 8
+  %tmp8 = getelementptr inbounds %array_ptr, ptr %tmp3, i64 0, i32 6
+  %tmp9 = load ptr, ptr %tmp8, align 8
+  %tmp10 = getelementptr inbounds double, ptr %tmp9, i64 %tmp7
+  store double 13.0, ptr %tmp10, align 8
   %tmp13 = add nuw nsw i64 %.01, 1
   %exitcond = icmp ne i64 %tmp13, 1000
   br i1 %exitcond, label %bb2, label %bb14

diff  --git a/polly/test/ScopDetect/cross_loop_non_single_exit.ll b/polly/test/ScopDetect/cross_loop_non_single_exit.ll
index 73b5be5b0f1dc..ae23930b92a65 100644
--- a/polly/test/ScopDetect/cross_loop_non_single_exit.ll
+++ b/polly/test/ScopDetect/cross_loop_non_single_exit.ll
@@ -12,7 +12,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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br i1 true, label %next, label %next2
@@ -22,8 +22,8 @@ next2:
 
 for.j:
   %indvar2 = phi i64 [ 0, %next2], [ %indvar2.next2, %for.j]
-  %scevgep2 = getelementptr i64, i64* %A, i64 %indvar2
-  store i64 %indvar2, i64* %scevgep2
+  %scevgep2 = getelementptr i64, ptr %A, i64 %indvar2
+  store i64 %indvar2, ptr %scevgep2
   %indvar2.next2 = add nsw i64 %indvar2, 1
   %exitcond2 = icmp eq i64 %indvar2.next2, %N
   br i1 %exitcond2, label %return, label %for.j
@@ -33,8 +33,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/ScopDetect/cross_loop_non_single_exit_2.ll b/polly/test/ScopDetect/cross_loop_non_single_exit_2.ll
index 6ffeaffc43fbb..5c25da66d7ef9 100644
--- a/polly/test/ScopDetect/cross_loop_non_single_exit_2.ll
+++ b/polly/test/ScopDetect/cross_loop_non_single_exit_2.ll
@@ -14,7 +14,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 declare i64 @foo()
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br i1 true, label %next, label %next2
@@ -24,8 +24,8 @@ next2:
 
 for.j:
   %indvar2 = phi i64 [ 0, %next2], [ %indvar2.next2, %for.j]
-  %scevgep2 = getelementptr i64, i64* %A, i64 %indvar2
-  store i64 %indvar2, i64* %scevgep2
+  %scevgep2 = getelementptr i64, ptr %A, i64 %indvar2
+  store i64 %indvar2, ptr %scevgep2
   %indvar2.next2 = add nsw i64 %indvar2, 1
   %exitcond2 = icmp eq i64 %indvar2.next2, %N
   br i1 %exitcond2, label %return, label %for.j
@@ -35,8 +35,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %i = call i64 @foo()
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N

diff  --git a/polly/test/ScopDetect/dependency_to_phi_node_outside_of_region.ll b/polly/test/ScopDetect/dependency_to_phi_node_outside_of_region.ll
index 9574f9307235f..12983d2321cc7 100644
--- a/polly/test/ScopDetect/dependency_to_phi_node_outside_of_region.ll
+++ b/polly/test/ScopDetect/dependency_to_phi_node_outside_of_region.ll
@@ -1,15 +1,15 @@
 ; RUN: opt %loadPolly -polly-detect -disable-output < %s
 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"
 
-define void @f(i64* %A, i64 %N, i64 %M) nounwind {
+define void @f(ptr %A, i64 %N, i64 %M) nounwind {
 entry:
   fence seq_cst
   br label %for.i
 
 for.i:
   %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %next, label %for.i
@@ -20,8 +20,8 @@ next:
 
 for.j:
   %indvar.j = phi i64 [ %indvar, %next ], [ %indvar.j.next, %for.j ]
-  %scevgep.j = getelementptr i64, i64* %A, i64 %indvar.j
-  store i64 %indvar.j, i64* %scevgep.j
+  %scevgep.j = getelementptr i64, ptr %A, i64 %indvar.j
+  store i64 %indvar.j, ptr %scevgep.j
   fence seq_cst
   %indvar.j.next = add nsw i64 %indvar.j, 1
   %exitcond.j = icmp eq i64 %indvar.j.next, %M

diff  --git a/polly/test/ScopDetect/dot-scops-npm.ll b/polly/test/ScopDetect/dot-scops-npm.ll
index c426d0209694d..30eefd1c18fd1 100644
--- a/polly/test/ScopDetect/dot-scops-npm.ll
+++ b/polly/test/ScopDetect/dot-scops-npm.ll
@@ -12,7 +12,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @func_npm(i32 %n, i32 %m, double* noalias nonnull %A) {
+define void @func_npm(i32 %n, i32 %m, ptr noalias nonnull %A) {
 ; CHECK:      digraph "Scop Graph for 'func_npm' function"
 ; CHECK-NEXT: label="Scop Graph for 'func_npm' function"
 ; CHECK:      Node0x[[EntryID:.*]] [shape=record,label="{entry:\l  br label %outer.for\l}"];
@@ -80,9 +80,9 @@ outer.for:
     br i1 %i.cmp, label %body1, label %inner.exit
 
     body1:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %i
-      %a = load double, double* %A_idx
-      store double %a, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %i
+      %a = load double, ptr %A_idx
+      store double %a, ptr %A_idx
       br label %inner.inc
 
   inner.inc:
@@ -93,7 +93,7 @@ outer.for:
     br label %outer.inc
 
 outer.inc:
-  store double %b, double* %A
+  store double %b, ptr %A
   %j.inc = add nuw nsw i32 %j, 1
   br label %outer.for
 

diff  --git a/polly/test/ScopDetect/dot-scops.ll b/polly/test/ScopDetect/dot-scops.ll
index 590f222c4690b..c31562e4c62d9 100644
--- a/polly/test/ScopDetect/dot-scops.ll
+++ b/polly/test/ScopDetect/dot-scops.ll
@@ -11,7 +11,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @func(i32 %n, i32 %m, double* noalias nonnull %A) {
+define void @func(i32 %n, i32 %m, ptr noalias nonnull %A) {
 entry:
   br label %outer.for
 
@@ -27,9 +27,9 @@ outer.for:
     br i1 %i.cmp, label %body1, label %inner.exit
 
     body1:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %i
-      %a = load double, double* %A_idx
-      store double %a, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %i
+      %a = load double, ptr %A_idx
+      store double %a, ptr %A_idx
       br label %inner.inc
 
   inner.inc:
@@ -40,7 +40,7 @@ outer.for:
     br label %outer.inc
 
 outer.inc:
-  store double %b, double* %A
+  store double %b, ptr %A
   %j.inc = add nuw nsw i32 %j, 1
   br label %outer.for
 

diff  --git a/polly/test/ScopDetect/error-block-always-executed.ll b/polly/test/ScopDetect/error-block-always-executed.ll
index 5b71bdaf8f3b8..894be2119941c 100644
--- a/polly/test/ScopDetect/error-block-always-executed.ll
+++ b/polly/test/ScopDetect/error-block-always-executed.ll
@@ -14,13 +14,13 @@ bb13:
   br i1 undef, label %bb14, label %bb19
 
 bb14:                                             ; preds = %bb13
-  %tmp = load i32, i32* undef, align 4, !tbaa !1
+  %tmp = load i32, ptr undef, align 4, !tbaa !1
   call void @quux() #2
   br i1 false, label %bb15, label %bb18
 
 bb15:                                             ; preds = %bb14
-  %tmp16 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp1, i64 0, i32 1
-  %tmp17 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp1, i64 0, i32 2
+  %tmp16 = getelementptr inbounds %struct.hoge, ptr %tmp1, i64 0, i32 1
+  %tmp17 = getelementptr inbounds %struct.hoge, ptr %tmp1, i64 0, i32 2
   br label %bb19
 
 bb18:                                             ; preds = %bb14

diff  --git a/polly/test/ScopDetect/error-block-referenced-from-scop.ll b/polly/test/ScopDetect/error-block-referenced-from-scop.ll
index ba75c3e21f85e..0853514821394 100644
--- a/polly/test/ScopDetect/error-block-referenced-from-scop.ll
+++ b/polly/test/ScopDetect/error-block-referenced-from-scop.ll
@@ -14,7 +14,7 @@ bb1:                                              ; preds = %bb
   br i1 undef, label %bb2, label %bb7
 
 bb2:                                              ; preds = %bb1
-  %tmp = load i32, i32* undef, align 8, !tbaa !1
+  %tmp = load i32, ptr undef, align 8, !tbaa !1
   %tmp3 = tail call i32 @widget() #2
   br i1 false, label %bb4, label %bb5
 

diff  --git a/polly/test/ScopDetect/ignore_func_flag_regex.ll b/polly/test/ScopDetect/ignore_func_flag_regex.ll
index 96a6aa459e798..224126ec010ee 100644
--- a/polly/test/ScopDetect/ignore_func_flag_regex.ll
+++ b/polly/test/ScopDetect/ignore_func_flag_regex.ll
@@ -25,7 +25,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f1(i32* %sum) {
+define void @f1(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -37,11 +37,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 
@@ -50,7 +50,7 @@ for.end:                                          ; preds = %for.cond
 }
 
 
-define void @f2(i32* %sum) {
+define void @f2(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -62,11 +62,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 
@@ -74,7 +74,7 @@ for.end:                                          ; preds = %for.cond
   ret void
 }
 
-define void @g1(i32* %sum) {
+define void @g1(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -86,11 +86,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 
@@ -98,7 +98,7 @@ for.end:                                          ; preds = %for.cond
   ret void
 }
 
-define void @h(i32* %sum) {
+define void @h(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -110,11 +110,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 

diff  --git a/polly/test/ScopDetect/index_from_unpredictable_loop.ll b/polly/test/ScopDetect/index_from_unpredictable_loop.ll
index a53b714e266c9..27ed64da17e6b 100644
--- a/polly/test/ScopDetect/index_from_unpredictable_loop.ll
+++ b/polly/test/ScopDetect/index_from_unpredictable_loop.ll
@@ -12,7 +12,7 @@
 ; %arrayidx101 that depends on that exit value cannot be affine.
 ; Derived from test-suite/MultiSource/Benchmarks/BitBench/uuencode/uuencode.c
 
-define void @encode_line(i8* nocapture readonly %input, i32 %octets, i64 %p) {
+define void @encode_line(ptr nocapture readonly %input, i32 %octets, i64 %p) {
 entry:
   br i1 undef, label %for.body, label %for.end
 
@@ -27,8 +27,8 @@ if.else:
 
 if.then84:
   %0 = add nsw i64 %indvars.iv, 1
-  %arrayidx101 = getelementptr inbounds i8, i8* %input, i64 %0
-  store i8 42, i8* %arrayidx101, align 1
+  %arrayidx101 = getelementptr inbounds i8, ptr %input, i64 %0
+  store i8 42, ptr %arrayidx101, align 1
   br label %for.end
 
 for.inc:

diff  --git a/polly/test/ScopDetect/index_from_unpredictable_loop2.ll b/polly/test/ScopDetect/index_from_unpredictable_loop2.ll
index c5c6d02adabde..9b5a3a4389d4f 100644
--- a/polly/test/ScopDetect/index_from_unpredictable_loop2.ll
+++ b/polly/test/ScopDetect/index_from_unpredictable_loop2.ll
@@ -12,7 +12,7 @@
 ; %arrayidx101 that depends on that exit value cannot be affine.
 ; Derived from test-suite/MultiSource/Benchmarks/BitBench/uuencode/uuencode.c
 
-define void @encode_line(i8* nocapture readonly %input, i32 %octets, i64 %p, i32 %n) {
+define void @encode_line(ptr nocapture readonly %input, i32 %octets, i64 %p, i32 %n) {
 entry:
   br label %outer.for
 
@@ -34,8 +34,8 @@ if.else:
 
 if.then84:
   %0 = add nsw i64 %indvars.iv, 1
-  %arrayidx101 = getelementptr inbounds i8, i8* %input, i64 %0
-  store i8 42, i8* %arrayidx101, align 1
+  %arrayidx101 = getelementptr inbounds i8, ptr %input, i64 %0
+  store i8 42, ptr %arrayidx101, align 1
   br label %for.end
 
 for.inc:

diff  --git a/polly/test/ScopDetect/indvars.ll b/polly/test/ScopDetect/indvars.ll
index 400deec48a883..2ba4d1f5aabf8 100644
--- a/polly/test/ScopDetect/indvars.ll
+++ b/polly/test/ScopDetect/indvars.ll
@@ -2,15 +2,15 @@
 ;
 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"
 
-define void @main(i64* %A, i64* %B) nounwind {
+define void @main(ptr %A, ptr %B) nounwind {
 entry:
   br label %for.i
 
 for.i:
   %indvar.i = phi i64 [ 0, %entry ], [ %indvar.next.i, %for.i.backedge ]
   %indvar.next.i = add i64 %indvar.i, 1
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar.i
-  store i64 %indvar.i, i64* %scevgep, align 4
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar.i
+  store i64 %indvar.i, ptr %scevgep, align 4
   br i1 true, label %for.j.preheader, label %for.j2
 
 for.j.preheader:
@@ -19,8 +19,8 @@ for.j.preheader:
 for.j:
   %indvar.j = phi i64 [ %indvar.next.j, %for.j ], [ 0, %for.j.preheader ]
   %indvar.next.j = add i64 %indvar.j, 1
-  %scevgep2 = getelementptr i64, i64* %B, i64 %indvar.j
-  store i64 %indvar.j, i64* %scevgep2, align 4
+  %scevgep2 = getelementptr i64, ptr %B, i64 %indvar.j
+  store i64 %indvar.j, ptr %scevgep2, align 4
   %exitcond.j = icmp eq i64 %indvar.next.j, 10
   br i1 %exitcond.j, label %for.j2, label %for.j
 

diff  --git a/polly/test/ScopDetect/intrinsics_1.ll b/polly/test/ScopDetect/intrinsics_1.ll
index ca9cf4a365a76..65d3968e247cb 100644
--- a/polly/test/ScopDetect/intrinsics_1.ll
+++ b/polly/test/ScopDetect/intrinsics_1.ll
@@ -15,7 +15,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @jd(i32* noalias %A, float* noalias %B) #0 {
+define void @jd(ptr noalias %A, ptr noalias %B) #0 {
 entry:
   br label %for.cond
 
@@ -36,8 +36,8 @@ for.body:                                         ; preds = %for.cond
   %call4 = call double @floor(double %call3) #2
   %tmp3 = call double @llvm.pow.f64(double %call1, double %call4)
   %conv5 = fptosi double %tmp3 to i32
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %conv5, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %conv5, ptr %arrayidx, align 4
   %tmp4 = trunc i64 %indvars.iv to i32
   %conv6 = sitofp i32 %tmp4 to double
   %call7 = call double @sin(double %conv6) #2
@@ -53,8 +53,8 @@ for.body:                                         ; preds = %for.cond
   %call14 = call double @__exp_finite(double %conv13) #2
   %add15 = fadd fast double %call12, %call14
   %conv16 = fptrunc double %add15 to float
-  %arrayidx18 = getelementptr inbounds float, float* %B, i64 %indvars.iv
-  store float %conv16, float* %arrayidx18, align 4
+  %arrayidx18 = getelementptr inbounds float, ptr %B, i64 %indvars.iv
+  store float %conv16, ptr %arrayidx18, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopDetect/intrinsics_2.ll b/polly/test/ScopDetect/intrinsics_2.ll
index 5568094f6c013..f0575511b2ef9 100644
--- a/polly/test/ScopDetect/intrinsics_2.ll
+++ b/polly/test/ScopDetect/intrinsics_2.ll
@@ -23,7 +23,6 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 define void @jd() #0 {
 entry:
   %tmp = alloca [1024 x i32], align 16
-  %tmp3 = bitcast [1024 x i32]* %tmp to i8*
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc11, %entry
@@ -32,7 +31,7 @@ for.cond:                                         ; preds = %for.inc11, %entry
   br i1 %exitcond5, label %for.body, label %for.end13
 
 for.body:                                         ; preds = %for.cond
-  call void @llvm.lifetime.start(i64 4096, i8* %tmp3) #1
+  call void @llvm.lifetime.start(i64 4096, ptr %tmp) #1
   br label %for.cond2
 
 for.cond2:                                        ; preds = %for.inc, %for.body
@@ -42,12 +41,12 @@ for.cond2:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body4, label %for.end
 
 for.body4:                                        ; preds = %for.cond2
-  %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv1
-  %tmp6 = load i32, i32* %arrayidx, align 4
-  %arrayidx6 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
-  %tmp7 = load i32, i32* %arrayidx6, align 4
+  %arrayidx = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv1
+  %tmp6 = load i32, ptr %arrayidx, align 4
+  %arrayidx6 = getelementptr inbounds [1024 x i32], ptr %tmp, i64 0, i64 %indvars.iv3
+  %tmp7 = load i32, ptr %arrayidx6, align 4
   %add = add nsw i32 %tmp7, %tmp6
-  store i32 %add, i32* %arrayidx6, align 4
+  store i32 %add, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body4
@@ -55,15 +54,15 @@ for.inc:                                          ; preds = %for.body4
   br label %for.cond2
 
 for.end:                                          ; preds = %for.cond2
-  %arrayidx8 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
-  %tmp8 = load i32, i32* %arrayidx8, align 4
-  %arrayidx10 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv3
-  store i32 %tmp8, i32* %arrayidx10, align 4
+  %arrayidx8 = getelementptr inbounds [1024 x i32], ptr %tmp, i64 0, i64 %indvars.iv3
+  %tmp8 = load i32, ptr %arrayidx8, align 4
+  %arrayidx10 = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv3
+  store i32 %tmp8, ptr %arrayidx10, align 4
   br label %for.inc11
 
 for.inc11:                                        ; preds = %for.end
   %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
-  call void @llvm.lifetime.end(i64 4096, i8* %tmp3) #1
+  call void @llvm.lifetime.end(i64 4096, ptr %tmp) #1
   br label %for.cond
 
 for.end13:                                        ; preds = %for.cond
@@ -71,10 +70,10 @@ for.end13:                                        ; preds = %for.cond
 }
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end(i64, ptr nocapture) #1
 
 attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="true" "use-soft-float"="false" }
 attributes #1 = { nounwind }

diff  --git a/polly/test/ScopDetect/intrinsics_3.ll b/polly/test/ScopDetect/intrinsics_3.ll
index 9fbbcf31e0dc9..bce90d136a411 100644
--- a/polly/test/ScopDetect/intrinsics_3.ll
+++ b/polly/test/ScopDetect/intrinsics_3.ll
@@ -23,7 +23,6 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 define void @jd() #0 {
 entry:
   %tmp = alloca [1024 x i32], align 16
-  %tmp3 = bitcast [1024 x i32]* @A to i8*
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc11, %entry
@@ -32,7 +31,7 @@ for.cond:                                         ; preds = %for.inc11, %entry
   br i1 %exitcond5, label %for.body, label %for.end13
 
 for.body:                                         ; preds = %for.cond
-  %lis = call {}* @llvm.invariant.start(i64 4096, i8* %tmp3) #1
+  %lis = call ptr @llvm.invariant.start(i64 4096, ptr @A) #1
   br label %for.cond2
 
 for.cond2:                                        ; preds = %for.inc, %for.body
@@ -44,13 +43,13 @@ for.cond2:                                        ; preds = %for.inc, %for.body
 for.body4:                                        ; preds = %for.cond2
   call void @llvm.assume(i1 %exitcond)
   call i1 @llvm.expect.i1(i1 %exitcond, i1 1)
-  %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv1
-  %tmp6 = load i32, i32* %arrayidx, align 4
-  %arrayidx6 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
+  %arrayidx = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv1
+  %tmp6 = load i32, ptr %arrayidx, align 4
+  %arrayidx6 = getelementptr inbounds [1024 x i32], ptr %tmp, i64 0, i64 %indvars.iv3
   call void @llvm.donothing()
-  %tmp7 = load i32, i32* %arrayidx6, align 4
+  %tmp7 = load i32, ptr %arrayidx6, align 4
   %add = add nsw i32 %tmp7, %tmp6
-  store i32 %add, i32* %arrayidx6, align 4
+  store i32 %add, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body4
@@ -58,11 +57,11 @@ for.inc:                                          ; preds = %for.body4
   br label %for.cond2
 
 for.end:                                          ; preds = %for.cond2
-  %arrayidx8 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
-  %tmp8 = load i32, i32* %arrayidx8, align 4
-  %arrayidx10 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv3
-  call void @llvm.invariant.end({}* %lis, i64 4096, i8* %tmp3) #1
-  store i32 %tmp8, i32* %arrayidx10, align 4
+  %arrayidx8 = getelementptr inbounds [1024 x i32], ptr %tmp, i64 0, i64 %indvars.iv3
+  %tmp8 = load i32, ptr %arrayidx8, align 4
+  %arrayidx10 = getelementptr inbounds [1024 x i32], ptr @A, i64 0, i64 %indvars.iv3
+  call void @llvm.invariant.end(ptr %lis, i64 4096, ptr @A) #1
+  store i32 %tmp8, ptr %arrayidx10, align 4
   br label %for.inc11
 
 for.inc11:                                        ; preds = %for.end
@@ -83,10 +82,10 @@ declare void @llvm.assume(i1) #1
 declare i1 @llvm.expect.i1(i1, i1) #1
 
 ; Function Attrs: nounwind
-declare {}* @llvm.invariant.start(i64, i8* nocapture) #1
+declare ptr @llvm.invariant.start(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind
-declare void @llvm.invariant.end({}*, i64, i8* nocapture) #1
+declare void @llvm.invariant.end(ptr, i64, ptr nocapture) #1
 
 attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="true" "use-soft-float"="false" }
 attributes #1 = { nounwind }

diff  --git a/polly/test/ScopDetect/invalid-latch-conditions.ll b/polly/test/ScopDetect/invalid-latch-conditions.ll
index af661fb71ffbb..eb8097470ecf6 100644
--- a/polly/test/ScopDetect/invalid-latch-conditions.ll
+++ b/polly/test/ScopDetect/invalid-latch-conditions.ll
@@ -13,7 +13,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @kernel_reg_detect([6 x i32]* %path) #0 {
+define void @kernel_reg_detect(ptr %path) #0 {
 entry:
   br label %for.body.6
 
@@ -25,10 +25,8 @@ for.body.6:                                       ; preds = %for.inc.43, %for.bo
   br i1 %exitcond, label %for.body.6, label %for.inc.40
 
 for.inc.40:                                       ; preds = %for.inc.40, %for.body.6
-  %arrayidx28 = getelementptr inbounds [6 x i32], [6 x i32]* %path, i64 0, i64 0
-  %tmp = load i32, i32* %arrayidx28, align 4
-  %arrayidx36 = getelementptr inbounds [6 x i32], [6 x i32]* %path, i64 0, i64 0
-  store i32 0, i32* %arrayidx36, align 4
+  %tmp = load i32, ptr %path, align 4
+  store i32 0, ptr %path, align 4
   %exitcond22 = icmp ne i64 0, 6
   br i1 %exitcond22, label %for.inc.40, label %for.inc.43
 

diff  --git a/polly/test/ScopDetect/invalidate_scalar_evolution.ll b/polly/test/ScopDetect/invalidate_scalar_evolution.ll
index 4acbdfcac264c..01d34c49e289c 100644
--- a/polly/test/ScopDetect/invalidate_scalar_evolution.ll
+++ b/polly/test/ScopDetect/invalidate_scalar_evolution.ll
@@ -8,7 +8,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"
 
-define void @f(i64* %A, i64 %N, i64 %p) nounwind {
+define void @f(ptr %A, i64 %N, i64 %p) nounwind {
 entry:
   fence seq_cst
   br label %pre
@@ -23,8 +23,8 @@ for.i:
   %indvar.p2 = phi i64 [ 0, %pre ], [ %indvar.p2.next, %for.i ]
   %sum = add i64 %indvar, %indvar.p1
   %sum2 = sub i64 %sum, %indvar.p2
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %indvar.p1.next = add nsw i64 %indvar.p1, %p_tmp
   %indvar.p2.next = add nsw i64 %indvar.p2, %p_tmp

diff  --git a/polly/test/ScopDetect/invariant-load-before-scop.ll b/polly/test/ScopDetect/invariant-load-before-scop.ll
index 127bcddb03b0c..f72085ff88a1b 100644
--- a/polly/test/ScopDetect/invariant-load-before-scop.ll
+++ b/polly/test/ScopDetect/invariant-load-before-scop.ll
@@ -8,43 +8,43 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%"struct.pov::Frame_Struct.37.89.245.349.401.505.557.713.817.869.1129.1493.1649.2013.2065.2117.2325.3312.36.110.184.258.332.1072" = type { %"struct.pov::Camera_Struct.12.64.220.324.376.480.532.688.792.844.1104.1468.1624.1988.2040.2092.2300.3287.11.85.159.233.307.1047"*, i32, i32, i32, %"struct.pov::Light_Source_Struct.31.83.239.343.395.499.551.707.811.863.1123.1487.1643.2007.2059.2111.2319.3306.30.104.178.252.326.1066"*, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, double, double, double, [5 x float], [5 x float], [5 x float], %"struct.pov::Media_Struct.20.72.228.332.384.488.540.696.800.852.1112.1476.1632.1996.2048.2100.2308.3295.19.93.167.241.315.1055"*, %"struct.pov::Fog_Struct.33.85.241.345.397.501.553.709.813.865.1125.1489.1645.2009.2061.2113.2321.3308.32.106.180.254.328.1068"*, %"struct.pov::Rainbow_Struct.34.86.242.346.398.502.554.710.814.866.1126.1490.1646.2010.2062.2114.2322.3309.33.107.181.255.329.1069"*, %"struct.pov::Skysphere_Struct.35.87.243.347.399.503.555.711.815.867.1127.1491.1647.2011.2063.2115.2323.3310.34.108.182.256.330.1070"*, %"struct.pov::light_group_light_struct.36.88.244.348.400.504.556.712.816.868.1128.1492.1648.2012.2064.2116.2324.3311.35.109.183.257.331.1071"* }
-%"struct.pov::Camera_Struct.12.64.220.324.376.480.532.688.792.844.1104.1468.1624.1988.2040.2092.2300.3287.11.85.159.233.307.1047" = type { [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], double, double, i32, double, double, i32, double, double, double, %"struct.pov::Tnormal_Struct.10.62.218.322.374.478.530.686.790.842.1102.1466.1622.1986.2038.2090.2298.3285.9.83.157.231.305.1045"*, %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"* }
-%"struct.pov::Tnormal_Struct.10.62.218.322.374.478.530.686.790.842.1102.1466.1622.1986.2038.2090.2298.3285.9.83.157.231.305.1045" = type { i16, i16, i16, i32, float, float, float, %"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036"*, %"struct.pov::Pattern_Struct.7.59.215.319.371.475.527.683.787.839.1099.1463.1619.1983.2035.2087.2295.3282.6.80.154.228.302.1042"*, %"struct.pov::Blend_Map_Struct.4.56.212.316.368.472.524.680.784.836.1096.1460.1616.1980.2032.2084.2292.3279.3.77.151.225.299.1039"*, %union.anon.25.9.61.217.321.373.477.529.685.789.841.1101.1465.1621.1985.2037.2089.2297.3284.8.82.156.230.304.1044, float, float }
-%"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036" = type { i16, %"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036"*, %"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036"* }
-%"struct.pov::Pattern_Struct.7.59.215.319.371.475.527.683.787.839.1099.1463.1619.1983.2035.2087.2295.3282.6.80.154.228.302.1042" = type { i16, i16, i16, i32, float, float, float, %"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036"*, %"struct.pov::Pattern_Struct.7.59.215.319.371.475.527.683.787.839.1099.1463.1619.1983.2035.2087.2295.3282.6.80.154.228.302.1042"*, %"struct.pov::Blend_Map_Struct.4.56.212.316.368.472.524.680.784.836.1096.1460.1616.1980.2032.2084.2292.3279.3.77.151.225.299.1039"*, %union.anon.17.6.58.214.318.370.474.526.682.786.838.1098.1462.1618.1982.2034.2086.2294.3281.5.79.153.227.301.1041 }
+%"struct.pov::Frame_Struct.37.89.245.349.401.505.557.713.817.869.1129.1493.1649.2013.2065.2117.2325.3312.36.110.184.258.332.1072" = type { ptr, i32, i32, i32, ptr, ptr, double, double, double, [5 x float], [5 x float], [5 x float], ptr, ptr, ptr, ptr, ptr }
+%"struct.pov::Camera_Struct.12.64.220.324.376.480.532.688.792.844.1104.1468.1624.1988.2040.2092.2300.3287.11.85.159.233.307.1047" = type { [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], double, double, i32, double, double, i32, double, double, double, ptr, ptr }
+%"struct.pov::Tnormal_Struct.10.62.218.322.374.478.530.686.790.842.1102.1466.1622.1986.2038.2090.2298.3285.9.83.157.231.305.1045" = type { i16, i16, i16, i32, float, float, float, ptr, ptr, ptr, %union.anon.25.9.61.217.321.373.477.529.685.789.841.1101.1465.1621.1985.2037.2089.2297.3284.8.82.156.230.304.1044, float, float }
+%"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036" = type { i16, ptr, ptr }
+%"struct.pov::Pattern_Struct.7.59.215.319.371.475.527.683.787.839.1099.1463.1619.1983.2035.2087.2295.3282.6.80.154.228.302.1042" = type { i16, i16, i16, i32, float, float, float, ptr, ptr, ptr, %union.anon.17.6.58.214.318.370.474.526.682.786.838.1098.1462.1618.1982.2034.2086.2294.3281.5.79.153.227.301.1041 }
 %union.anon.17.6.58.214.318.370.474.526.682.786.838.1098.1462.1618.1982.2034.2086.2294.3281.5.79.153.227.301.1041 = type { %struct.anon.21.5.57.213.317.369.473.525.681.785.837.1097.1461.1617.1981.2033.2085.2293.3280.4.78.152.226.300.1040 }
-%struct.anon.21.5.57.213.317.369.473.525.681.785.837.1097.1461.1617.1981.2033.2085.2293.3280.4.78.152.226.300.1040 = type { [3 x double], [3 x double], double, double, i16, [3 x double]*, i32, [3 x double] }
-%"struct.pov::Blend_Map_Struct.4.56.212.316.368.472.524.680.784.836.1096.1460.1616.1980.2032.2084.2292.3279.3.77.151.225.299.1039" = type { i32, i16, i8, i8, %"struct.pov::Blend_Map_Entry.3.55.211.315.367.471.523.679.783.835.1095.1459.1615.1979.2031.2083.2291.3278.2.76.150.224.298.1038"* }
+%struct.anon.21.5.57.213.317.369.473.525.681.785.837.1097.1461.1617.1981.2033.2085.2293.3280.4.78.152.226.300.1040 = type { [3 x double], [3 x double], double, double, i16, ptr, i32, [3 x double] }
+%"struct.pov::Blend_Map_Struct.4.56.212.316.368.472.524.680.784.836.1096.1460.1616.1980.2032.2084.2292.3279.3.77.151.225.299.1039" = type { i32, i16, i8, i8, ptr }
 %"struct.pov::Blend_Map_Entry.3.55.211.315.367.471.523.679.783.835.1095.1459.1615.1979.2031.2083.2291.3278.2.76.150.224.298.1038" = type { float, i8, %union.anon.2.54.210.314.366.470.522.678.782.834.1094.1458.1614.1978.2030.2082.2290.3277.1.75.149.223.297.1037 }
 %union.anon.2.54.210.314.366.470.522.678.782.834.1094.1458.1614.1978.2030.2082.2290.3277.1.75.149.223.297.1037 = type { [2 x double], [8 x i8] }
 %union.anon.25.9.61.217.321.373.477.529.685.789.841.1101.1465.1621.1985.2037.2089.2297.3284.8.82.156.230.304.1044 = type { %struct.anon.29.8.60.216.320.372.476.528.684.788.840.1100.1464.1620.1984.2036.2088.2296.3283.7.81.155.229.303.1043 }
-%struct.anon.29.8.60.216.320.372.476.528.684.788.840.1100.1464.1620.1984.2036.2088.2296.3283.7.81.155.229.303.1043 = type { [3 x double], [3 x double], double, double, i16, [3 x double]*, i32, [3 x double] }
+%struct.anon.29.8.60.216.320.372.476.528.684.788.840.1100.1464.1620.1984.2036.2088.2296.3283.7.81.155.229.303.1043 = type { [3 x double], [3 x double], double, double, i16, ptr, i32, [3 x double] }
 %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046" = type { [4 x [4 x double]], [4 x [4 x double]] }
-%"struct.pov::Light_Source_Struct.31.83.239.343.395.499.551.707.811.863.1123.1487.1643.2007.2059.2111.2319.3306.30.104.178.252.326.1066" = type { %"struct.pov::Method_Struct.27.79.235.339.391.495.547.703.807.859.1119.1483.1639.2003.2055.2107.2315.3302.26.100.174.248.322.1062"*, i32, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Texture_Struct.19.71.227.331.383.487.539.695.799.851.1111.1475.1631.1995.2047.2099.2307.3294.18.92.166.240.314.1054"*, %"struct.pov::Texture_Struct.19.71.227.331.383.487.539.695.799.851.1111.1475.1631.1995.2047.2099.2307.3294.18.92.166.240.314.1054"*, %"struct.pov::Interior_Struct.21.73.229.333.385.489.541.697.801.853.1113.1477.1633.1997.2049.2101.2309.3296.20.94.168.242.316.1056"*, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Light_Source_Struct.31.83.239.343.395.499.551.707.811.863.1123.1487.1643.2007.2059.2111.2319.3306.30.104.178.252.326.1066"*, %"struct.pov::Bounding_Box_Struct.22.74.230.334.386.490.542.698.802.854.1114.1478.1634.1998.2050.2102.2310.3297.21.95.169.243.317.1057", %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"*, %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"*, float, i32, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, [5 x float], [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], double, double, double, double, double, %"struct.pov::Light_Source_Struct.31.83.239.343.395.499.551.707.811.863.1123.1487.1643.2007.2059.2111.2319.3306.30.104.178.252.326.1066"*, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, [5 x float]**, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Blend_Map_Struct.4.56.212.316.368.472.524.680.784.836.1096.1460.1616.1980.2032.2084.2292.3279.3.77.151.225.299.1039"*, [6 x %"struct.pov::Project_Tree_Node_Struct.30.82.238.342.394.498.550.706.810.862.1122.1486.1642.2006.2058.2110.2318.3305.29.103.177.251.325.1065"*] }
-%"struct.pov::Method_Struct.27.79.235.339.391.495.547.703.807.859.1119.1483.1639.2003.2055.2107.2315.3302.26.100.174.248.322.1062" = type { i32 (%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Ray_Struct.24.76.232.336.388.492.544.700.804.856.1116.1480.1636.2000.2052.2104.2312.3299.23.97.171.245.319.1059"*, %"struct.pov::istack_struct.26.78.234.338.390.494.546.702.806.858.1118.1482.1638.2002.2054.2106.2314.3301.25.99.173.247.321.1061"*)*, i32 (double*, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*)*, void (double*, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::istk_entry.25.77.233.337.389.493.545.701.805.857.1117.1481.1637.2001.2053.2105.2313.3300.24.98.172.246.320.1060"*)*, void (double*, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::istk_entry.25.77.233.337.389.493.545.701.805.857.1117.1481.1637.2001.2053.2105.2313.3300.24.98.172.246.320.1060"*)*, i8* (%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*)*, void (%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, double*, %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"*)*, void (%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, double*, %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"*)*, void (%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, double*, %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"*)*, void (%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"*)*, void (%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*)*, void (%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*)* }
-%"struct.pov::Ray_Struct.24.76.232.336.388.492.544.700.804.856.1116.1480.1636.2000.2052.2104.2312.3299.23.97.171.245.319.1059" = type { [3 x double], [3 x double], i32, i32, [100 x %"struct.pov::Interior_Struct.21.73.229.333.385.489.541.697.801.853.1113.1477.1633.1997.2049.2101.2309.3296.20.94.168.242.316.1056"*] }
-%"struct.pov::istack_struct.26.78.234.338.390.494.546.702.806.858.1118.1482.1638.2002.2054.2106.2314.3301.25.99.173.247.321.1061" = type { %"struct.pov::istack_struct.26.78.234.338.390.494.546.702.806.858.1118.1482.1638.2002.2054.2106.2314.3301.25.99.173.247.321.1061"*, %"struct.pov::istk_entry.25.77.233.337.389.493.545.701.805.857.1117.1481.1637.2001.2053.2105.2313.3300.24.98.172.246.320.1060"*, i32, i32 }
-%"struct.pov::istk_entry.25.77.233.337.389.493.545.701.805.857.1117.1481.1637.2001.2053.2105.2313.3300.24.98.172.246.320.1060" = type { double, [3 x double], [3 x double], [3 x double], [2 x double], %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, i32, i32, double, double, double, double, double, double, double, double, double, i8*, i8* }
-%"struct.pov::Texture_Struct.19.71.227.331.383.487.539.695.799.851.1111.1475.1631.1995.2047.2099.2307.3294.18.92.166.240.314.1054" = type { i16, i16, i16, i32, float, float, float, %"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036"*, %"struct.pov::Pattern_Struct.7.59.215.319.371.475.527.683.787.839.1099.1463.1619.1983.2035.2087.2295.3282.6.80.154.228.302.1042"*, %"struct.pov::Blend_Map_Struct.4.56.212.316.368.472.524.680.784.836.1096.1460.1616.1980.2032.2084.2292.3279.3.77.151.225.299.1039"*, %union.anon.9.14.66.222.326.378.482.534.690.794.846.1106.1470.1626.1990.2042.2094.2302.3289.13.87.161.235.309.1049, %"struct.pov::Texture_Struct.19.71.227.331.383.487.539.695.799.851.1111.1475.1631.1995.2047.2099.2307.3294.18.92.166.240.314.1054"*, %"struct.pov::Pigment_Struct.17.69.225.329.381.485.537.693.797.849.1109.1473.1629.1993.2045.2097.2305.3292.16.90.164.238.312.1052"*, %"struct.pov::Tnormal_Struct.10.62.218.322.374.478.530.686.790.842.1102.1466.1622.1986.2038.2090.2298.3285.9.83.157.231.305.1045"*, %"struct.pov::Finish_Struct.18.70.226.330.382.486.538.694.798.850.1110.1474.1630.1994.2046.2098.2306.3293.17.91.165.239.313.1053"*, %"struct.pov::Texture_Struct.19.71.227.331.383.487.539.695.799.851.1111.1475.1631.1995.2047.2099.2307.3294.18.92.166.240.314.1054"*, i32 }
+%"struct.pov::Light_Source_Struct.31.83.239.343.395.499.551.707.811.863.1123.1487.1643.2007.2059.2111.2319.3306.30.104.178.252.326.1066" = type { ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"struct.pov::Bounding_Box_Struct.22.74.230.334.386.490.542.698.802.854.1114.1478.1634.1998.2050.2102.2310.3297.21.95.169.243.317.1057", ptr, ptr, float, i32, ptr, [5 x float], [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], double, double, double, double, double, ptr, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, [6 x ptr] }
+%"struct.pov::Method_Struct.27.79.235.339.391.495.547.703.807.859.1119.1483.1639.2003.2055.2107.2315.3302.26.100.174.248.322.1062" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
+%"struct.pov::Ray_Struct.24.76.232.336.388.492.544.700.804.856.1116.1480.1636.2000.2052.2104.2312.3299.23.97.171.245.319.1059" = type { [3 x double], [3 x double], i32, i32, [100 x ptr] }
+%"struct.pov::istack_struct.26.78.234.338.390.494.546.702.806.858.1118.1482.1638.2002.2054.2106.2314.3301.25.99.173.247.321.1061" = type { ptr, ptr, i32, i32 }
+%"struct.pov::istk_entry.25.77.233.337.389.493.545.701.805.857.1117.1481.1637.2001.2053.2105.2313.3300.24.98.172.246.320.1060" = type { double, [3 x double], [3 x double], [3 x double], [2 x double], ptr, i32, i32, double, double, double, double, double, double, double, double, double, ptr, ptr }
+%"struct.pov::Texture_Struct.19.71.227.331.383.487.539.695.799.851.1111.1475.1631.1995.2047.2099.2307.3294.18.92.166.240.314.1054" = type { i16, i16, i16, i32, float, float, float, ptr, ptr, ptr, %union.anon.9.14.66.222.326.378.482.534.690.794.846.1106.1470.1626.1990.2042.2094.2302.3289.13.87.161.235.309.1049, ptr, ptr, ptr, ptr, ptr, i32 }
 %union.anon.9.14.66.222.326.378.482.534.690.794.846.1106.1470.1626.1990.2042.2094.2302.3289.13.87.161.235.309.1049 = type { %struct.anon.13.13.65.221.325.377.481.533.689.793.845.1105.1469.1625.1989.2041.2093.2301.3288.12.86.160.234.308.1048 }
-%struct.anon.13.13.65.221.325.377.481.533.689.793.845.1105.1469.1625.1989.2041.2093.2301.3288.12.86.160.234.308.1048 = type { [3 x double], [3 x double], double, double, i16, [3 x double]*, i32, [3 x double] }
-%"struct.pov::Pigment_Struct.17.69.225.329.381.485.537.693.797.849.1109.1473.1629.1993.2045.2097.2305.3292.16.90.164.238.312.1052" = type { i16, i16, i16, i32, float, float, float, %"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036"*, %"struct.pov::Pattern_Struct.7.59.215.319.371.475.527.683.787.839.1099.1463.1619.1983.2035.2087.2295.3282.6.80.154.228.302.1042"*, %"struct.pov::Blend_Map_Struct.4.56.212.316.368.472.524.680.784.836.1096.1460.1616.1980.2032.2084.2292.3279.3.77.151.225.299.1039"*, %union.anon.0.16.68.224.328.380.484.536.692.796.848.1108.1472.1628.1992.2044.2096.2304.3291.15.89.163.237.311.1051, [5 x float] }
+%struct.anon.13.13.65.221.325.377.481.533.689.793.845.1105.1469.1625.1989.2041.2093.2301.3288.12.86.160.234.308.1048 = type { [3 x double], [3 x double], double, double, i16, ptr, i32, [3 x double] }
+%"struct.pov::Pigment_Struct.17.69.225.329.381.485.537.693.797.849.1109.1473.1629.1993.2045.2097.2305.3292.16.90.164.238.312.1052" = type { i16, i16, i16, i32, float, float, float, ptr, ptr, ptr, %union.anon.0.16.68.224.328.380.484.536.692.796.848.1108.1472.1628.1992.2044.2096.2304.3291.15.89.163.237.311.1051, [5 x float] }
 %union.anon.0.16.68.224.328.380.484.536.692.796.848.1108.1472.1628.1992.2044.2096.2304.3291.15.89.163.237.311.1051 = type { %struct.anon.5.15.67.223.327.379.483.535.691.795.847.1107.1471.1627.1991.2043.2095.2303.3290.14.88.162.236.310.1050 }
-%struct.anon.5.15.67.223.327.379.483.535.691.795.847.1107.1471.1627.1991.2043.2095.2303.3290.14.88.162.236.310.1050 = type { [3 x double], [3 x double], double, double, i16, [3 x double]*, i32, [3 x double] }
+%struct.anon.5.15.67.223.327.379.483.535.691.795.847.1107.1471.1627.1991.2043.2095.2303.3290.14.88.162.236.310.1050 = type { [3 x double], [3 x double], double, double, i16, ptr, i32, [3 x double] }
 %"struct.pov::Finish_Struct.18.70.226.330.382.486.538.694.798.850.1110.1474.1630.1994.2046.2098.2306.3293.17.91.165.239.313.1053" = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, [3 x float], [3 x float], [3 x float], float, i32, float, i32 }
-%"struct.pov::Interior_Struct.21.73.229.333.385.489.541.697.801.853.1113.1477.1633.1997.2049.2101.2309.3296.20.94.168.242.316.1056" = type { i32, i32, i32, float, float, float, float, float, float, [5 x float], %"struct.pov::Media_Struct.20.72.228.332.384.488.540.696.800.852.1112.1476.1632.1996.2048.2100.2308.3295.19.93.167.241.315.1055"* }
+%"struct.pov::Interior_Struct.21.73.229.333.385.489.541.697.801.853.1113.1477.1633.1997.2049.2101.2309.3296.20.94.168.242.316.1056" = type { i32, i32, i32, float, float, float, float, float, float, [5 x float], ptr }
 %"struct.pov::Bounding_Box_Struct.22.74.230.334.386.490.542.698.802.854.1114.1478.1634.1998.2050.2102.2310.3297.21.95.169.243.317.1057" = type { [3 x float], [3 x float] }
-%"struct.pov::Project_Tree_Node_Struct.30.82.238.342.394.498.550.706.810.862.1122.1486.1642.2006.2058.2110.2318.3305.29.103.177.251.325.1065" = type { i16, %"struct.pov::BBox_Tree_Struct.28.80.236.340.392.496.548.704.808.860.1120.1484.1640.2004.2056.2108.2316.3303.27.101.175.249.323.1063"*, %"struct.pov::Project_Struct.29.81.237.341.393.497.549.705.809.861.1121.1485.1641.2005.2057.2109.2317.3304.28.102.176.250.324.1064", i16, %"struct.pov::Project_Tree_Node_Struct.30.82.238.342.394.498.550.706.810.862.1122.1486.1642.2006.2058.2110.2318.3305.29.103.177.251.325.1065"** }
-%"struct.pov::BBox_Tree_Struct.28.80.236.340.392.496.548.704.808.860.1120.1484.1640.2004.2056.2108.2316.3303.27.101.175.249.323.1063" = type { i16, i16, %"struct.pov::Bounding_Box_Struct.22.74.230.334.386.490.542.698.802.854.1114.1478.1634.1998.2050.2102.2310.3297.21.95.169.243.317.1057", %"struct.pov::BBox_Tree_Struct.28.80.236.340.392.496.548.704.808.860.1120.1484.1640.2004.2056.2108.2316.3303.27.101.175.249.323.1063"** }
+%"struct.pov::Project_Tree_Node_Struct.30.82.238.342.394.498.550.706.810.862.1122.1486.1642.2006.2058.2110.2318.3305.29.103.177.251.325.1065" = type { i16, ptr, %"struct.pov::Project_Struct.29.81.237.341.393.497.549.705.809.861.1121.1485.1641.2005.2057.2109.2317.3304.28.102.176.250.324.1064", i16, ptr }
+%"struct.pov::BBox_Tree_Struct.28.80.236.340.392.496.548.704.808.860.1120.1484.1640.2004.2056.2108.2316.3303.27.101.175.249.323.1063" = type { i16, i16, %"struct.pov::Bounding_Box_Struct.22.74.230.334.386.490.542.698.802.854.1114.1478.1634.1998.2050.2102.2310.3297.21.95.169.243.317.1057", ptr }
 %"struct.pov::Project_Struct.29.81.237.341.393.497.549.705.809.861.1121.1485.1641.2005.2057.2109.2317.3304.28.102.176.250.324.1064" = type { i32, i32, i32, i32 }
-%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058" = type { %"struct.pov::Method_Struct.27.79.235.339.391.495.547.703.807.859.1119.1483.1639.2003.2055.2107.2315.3302.26.100.174.248.322.1062"*, i32, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Texture_Struct.19.71.227.331.383.487.539.695.799.851.1111.1475.1631.1995.2047.2099.2307.3294.18.92.166.240.314.1054"*, %"struct.pov::Texture_Struct.19.71.227.331.383.487.539.695.799.851.1111.1475.1631.1995.2047.2099.2307.3294.18.92.166.240.314.1054"*, %"struct.pov::Interior_Struct.21.73.229.333.385.489.541.697.801.853.1113.1477.1633.1997.2049.2101.2309.3296.20.94.168.242.316.1056"*, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058"*, %"struct.pov::Light_Source_Struct.31.83.239.343.395.499.551.707.811.863.1123.1487.1643.2007.2059.2111.2319.3306.30.104.178.252.326.1066"*, %"struct.pov::Bounding_Box_Struct.22.74.230.334.386.490.542.698.802.854.1114.1478.1634.1998.2050.2102.2310.3297.21.95.169.243.317.1057", %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"*, %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"*, float, i32 }
-%"struct.pov::Media_Struct.20.72.228.332.384.488.540.696.800.852.1112.1476.1632.1996.2048.2100.2308.3295.19.93.167.241.315.1055" = type { i32, i32, i32, i32, i32, double, i32, double, double, i32, i32, i32, i32, [5 x float], [5 x float], [5 x float], [5 x float], double, double, double, double*, double, i32, i32, %"struct.pov::Pigment_Struct.17.69.225.329.381.485.537.693.797.849.1109.1473.1629.1993.2045.2097.2305.3292.16.90.164.238.312.1052"*, %"struct.pov::Media_Struct.20.72.228.332.384.488.540.696.800.852.1112.1476.1632.1996.2048.2100.2308.3295.19.93.167.241.315.1055"* }
-%"struct.pov::Fog_Struct.33.85.241.345.397.501.553.709.813.865.1125.1489.1645.2009.2061.2113.2321.3308.32.106.180.254.328.1068" = type { i32, double, double, double, [5 x float], [3 x double], %"struct.pov::Turb_Struct.32.84.240.344.396.500.552.708.812.864.1124.1488.1644.2008.2060.2112.2320.3307.31.105.179.253.327.1067"*, float, %"struct.pov::Fog_Struct.33.85.241.345.397.501.553.709.813.865.1125.1489.1645.2009.2061.2113.2321.3308.32.106.180.254.328.1068"* }
-%"struct.pov::Turb_Struct.32.84.240.344.396.500.552.708.812.864.1124.1488.1644.2008.2060.2112.2320.3307.31.105.179.253.327.1067" = type { i16, %"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036"*, %"struct.pov::Warps_Struct.1.53.209.313.365.469.521.677.781.833.1093.1457.1613.1977.2029.2081.2289.3276.0.74.148.222.296.1036"*, [3 x double], i32, float, float }
-%"struct.pov::Rainbow_Struct.34.86.242.346.398.502.554.710.814.866.1126.1490.1646.2010.2062.2114.2322.3309.33.107.181.255.329.1069" = type { double, double, double, double, double, double, double, [3 x double], [3 x double], [3 x double], %"struct.pov::Pigment_Struct.17.69.225.329.381.485.537.693.797.849.1109.1473.1629.1993.2045.2097.2305.3292.16.90.164.238.312.1052"*, %"struct.pov::Rainbow_Struct.34.86.242.346.398.502.554.710.814.866.1126.1490.1646.2010.2062.2114.2322.3309.33.107.181.255.329.1069"* }
-%"struct.pov::Skysphere_Struct.35.87.243.347.399.503.555.711.815.867.1127.1491.1647.2011.2063.2115.2323.3310.34.108.182.256.330.1070" = type { i32, %"struct.pov::Pigment_Struct.17.69.225.329.381.485.537.693.797.849.1109.1473.1629.1993.2045.2097.2305.3292.16.90.164.238.312.1052"**, %"struct.pov::Transform_Struct.11.63.219.323.375.479.531.687.791.843.1103.1467.1623.1987.2039.2091.2299.3286.10.84.158.232.306.1046"* }
-%"struct.pov::light_group_light_struct.36.88.244.348.400.504.556.712.816.868.1128.1492.1648.2012.2064.2116.2324.3311.35.109.183.257.331.1071" = type { %"struct.pov::Light_Source_Struct.31.83.239.343.395.499.551.707.811.863.1123.1487.1643.2007.2059.2111.2319.3306.30.104.178.252.326.1066"*, %"struct.pov::light_group_light_struct.36.88.244.348.400.504.556.712.816.868.1128.1492.1648.2012.2064.2116.2324.3311.35.109.183.257.331.1071"* }
+%"struct.pov::Object_Struct.23.75.231.335.387.491.543.699.803.855.1115.1479.1635.1999.2051.2103.2311.3298.22.96.170.244.318.1058" = type { ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"struct.pov::Bounding_Box_Struct.22.74.230.334.386.490.542.698.802.854.1114.1478.1634.1998.2050.2102.2310.3297.21.95.169.243.317.1057", ptr, ptr, float, i32 }
+%"struct.pov::Media_Struct.20.72.228.332.384.488.540.696.800.852.1112.1476.1632.1996.2048.2100.2308.3295.19.93.167.241.315.1055" = type { i32, i32, i32, i32, i32, double, i32, double, double, i32, i32, i32, i32, [5 x float], [5 x float], [5 x float], [5 x float], double, double, double, ptr, double, i32, i32, ptr, ptr }
+%"struct.pov::Fog_Struct.33.85.241.345.397.501.553.709.813.865.1125.1489.1645.2009.2061.2113.2321.3308.32.106.180.254.328.1068" = type { i32, double, double, double, [5 x float], [3 x double], ptr, float, ptr }
+%"struct.pov::Turb_Struct.32.84.240.344.396.500.552.708.812.864.1124.1488.1644.2008.2060.2112.2320.3307.31.105.179.253.327.1067" = type { i16, ptr, ptr, [3 x double], i32, float, float }
+%"struct.pov::Rainbow_Struct.34.86.242.346.398.502.554.710.814.866.1126.1490.1646.2010.2062.2114.2322.3309.33.107.181.255.329.1069" = type { double, double, double, double, double, double, double, [3 x double], [3 x double], [3 x double], ptr, ptr }
+%"struct.pov::Skysphere_Struct.35.87.243.347.399.503.555.711.815.867.1127.1491.1647.2011.2063.2115.2323.3310.34.108.182.256.330.1070" = type { i32, ptr, ptr }
+%"struct.pov::light_group_light_struct.36.88.244.348.400.504.556.712.816.868.1128.1492.1648.2012.2064.2116.2324.3311.35.109.183.257.331.1071" = type { ptr, ptr }
 
 @_ZN3pov5FrameE = external global %"struct.pov::Frame_Struct.37.89.245.349.401.505.557.713.817.869.1129.1493.1649.2013.2065.2117.2325.3312.36.110.184.258.332.1072", align 8
 @_ZN3povL27Precompute_Camera_ConstantsE = external unnamed_addr global i1, align 4
@@ -52,13 +52,13 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; Function Attrs: uwtable
 define fastcc void @_ZN3povL10create_rayEPNS_10Ray_StructEddi() unnamed_addr {
 entry:
-  %0 = load %"struct.pov::Camera_Struct.12.64.220.324.376.480.532.688.792.844.1104.1468.1624.1988.2040.2092.2300.3287.11.85.159.233.307.1047"*, %"struct.pov::Camera_Struct.12.64.220.324.376.480.532.688.792.844.1104.1468.1624.1988.2040.2092.2300.3287.11.85.159.233.307.1047"** getelementptr inbounds (%"struct.pov::Frame_Struct.37.89.245.349.401.505.557.713.817.869.1129.1493.1649.2013.2065.2117.2325.3312.36.110.184.258.332.1072", %"struct.pov::Frame_Struct.37.89.245.349.401.505.557.713.817.869.1129.1493.1649.2013.2065.2117.2325.3312.36.110.184.258.332.1072"* @_ZN3pov5FrameE, i64 0, i32 0), align 8
-  %.b761 = load i1, i1* @_ZN3povL27Precompute_Camera_ConstantsE, align 4
+  %0 = load ptr, ptr @_ZN3pov5FrameE, align 8
+  %.b761 = load i1, ptr @_ZN3povL27Precompute_Camera_ConstantsE, align 4
   br label %if.end79
 
 if.end79:                                         ; preds = %entry
-  %arraydecay89 = getelementptr inbounds %"struct.pov::Camera_Struct.12.64.220.324.376.480.532.688.792.844.1104.1468.1624.1988.2040.2092.2300.3287.11.85.159.233.307.1047", %"struct.pov::Camera_Struct.12.64.220.324.376.480.532.688.792.844.1104.1468.1624.1988.2040.2092.2300.3287.11.85.159.233.307.1047"* %0, i64 0, i32 3, i64 0
-  %1 = load double, double* %arraydecay89, align 8
+  %arraydecay89 = getelementptr inbounds %"struct.pov::Camera_Struct.12.64.220.324.376.480.532.688.792.844.1104.1468.1624.1988.2040.2092.2300.3287.11.85.159.233.307.1047", ptr %0, i64 0, i32 3, i64 0
+  %1 = load double, ptr %arraydecay89, align 8
   br i1 %.b761, label %if.then87, label %if.end79.if.end100_crit_edge
 
 if.end79.if.end100_crit_edge:                     ; preds = %if.end79

diff  --git a/polly/test/ScopDetect/keep_going_expansion.ll b/polly/test/ScopDetect/keep_going_expansion.ll
index e27fec9f3df11..9bcfb3924f6a6 100644
--- a/polly/test/ScopDetect/keep_going_expansion.ll
+++ b/polly/test/ScopDetect/keep_going_expansion.ll
@@ -2,7 +2,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @a(i32 %n, i32* noalias %A, i32* noalias %B) #0 {
+define i32 @a(i32 %n, ptr noalias %A, ptr noalias %B) #0 {
 entry:
   br label %entry.split
 
@@ -15,8 +15,8 @@ for.cond2.preheader:                              ; preds = %for.body
 for.body:                                         ; preds = %entry.split, %for.body
   %indvar = phi i64 [ 0, %entry.split ], [ %indvar.next, %for.body ]
   %j.02 = trunc i64 %indvar to i32
-  %arrayidx = getelementptr i32, i32* %B, i64 %indvar
-  store i32 %j.02, i32* %arrayidx, align 4
+  %arrayidx = getelementptr i32, ptr %B, i64 %indvar
+  store i32 %j.02, ptr %arrayidx, align 4
   %indvar.next = add i64 %indvar, 1
   %exitcond3 = icmp ne i64 %indvar.next, 32
   br i1 %exitcond3, label %for.body, label %for.cond2.preheader
@@ -25,19 +25,19 @@ for.body4:                                        ; preds = %for.cond2.preheader
   %0 = phi i32 [ 0, %for.cond2.preheader ], [ %1, %for.body4 ]
   %mul = mul i32 %n, %0
   %idxprom5 = sext i32 %mul to i64
-  %arrayidx6 = getelementptr inbounds i32, i32* %A, i64 %idxprom5
-  store i32 %0, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %A, i64 %idxprom5
+  store i32 %0, ptr %arrayidx6, align 4
   %1 = add nsw i32 %0, 1
   %exitcond = icmp ne i32 %1, 32
   br i1 %exitcond, label %for.body4, label %for.end9
 
 for.end9:                                         ; preds = %for.body4
   %idxprom10 = sext i32 %n to i64
-  %arrayidx11 = getelementptr inbounds i32, i32* %A, i64 %idxprom10
-  %2 = load i32, i32* %arrayidx11, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %A, i64 %idxprom10
+  %2 = load i32, ptr %arrayidx11, align 4
   %idxprom12 = sext i32 %n to i64
-  %arrayidx13 = getelementptr inbounds i32, i32* %B, i64 %idxprom12
-  %3 = load i32, i32* %arrayidx13, align 4
+  %arrayidx13 = getelementptr inbounds i32, ptr %B, i64 %idxprom12
+  %3 = load i32, ptr %arrayidx13, align 4
   %add = add nsw i32 %3, %2
   ret i32 %add
 }

diff  --git a/polly/test/ScopDetect/mod_ref_read_pointer.ll b/polly/test/ScopDetect/mod_ref_read_pointer.ll
index 7a703cf3f088a..95a4649f47054 100644
--- a/polly/test/ScopDetect/mod_ref_read_pointer.ll
+++ b/polly/test/ScopDetect/mod_ref_read_pointer.ll
@@ -14,18 +14,18 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-declare i32 @func(i32* %A) #1
+declare i32 @func(ptr %A) #1
 
-define void @jd(i32* %A) {
+define void @jd(ptr %A) {
 entry:
   br label %for.body
 
 for.body:                                         ; preds = %entry, %for.inc
   %i = phi i64 [ 0, %entry ], [ %i.next, %for.inc ]
-  %call = call i32 @func(i32* %A)
+  %call = call i32 @func(ptr %A)
   %tmp = add nsw i64 %i, 2
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %tmp
-  store i32 %call, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %tmp
+  store i32 %call, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopDetect/more-than-one-loop.ll b/polly/test/ScopDetect/more-than-one-loop.ll
index 114bac1f3b8b1..bfd226c1bcfc6 100644
--- a/polly/test/ScopDetect/more-than-one-loop.ll
+++ b/polly/test/ScopDetect/more-than-one-loop.ll
@@ -14,7 +14,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, float* %B, i64 %N) {
+define void @foo(ptr %A, ptr %B, i64 %N) {
 entry:
   br label %bb
 
@@ -32,10 +32,10 @@ bb3:                                              ; preds = %bb9, %bb2
 
 bb4:                                              ; preds = %bb3
   %tmp5 = sitofp i64 %i.0 to float
-  %tmp6 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp7 = load float, float* %tmp6, align 4
+  %tmp6 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp7 = load float, ptr %tmp6, align 4
   %tmp8 = fadd float %tmp7, %tmp5
-  store float %tmp8, float* %tmp6, align 4
+  store float %tmp8, ptr %tmp6, align 4
   br label %bb9
 
 bb9:                                              ; preds = %bb4
@@ -55,10 +55,10 @@ bb13:                                             ; preds = %bb19, %bb12
 
 bb14:                                             ; preds = %bb13
   %tmp15 = sitofp i64 %i1.0 to float
-  %tmp16 = getelementptr inbounds float, float* %B, i64 %i1.0
-  %tmp17 = load float, float* %tmp16, align 4
+  %tmp16 = getelementptr inbounds float, ptr %B, i64 %i1.0
+  %tmp17 = load float, ptr %tmp16, align 4
   %tmp18 = fadd float %tmp17, %tmp15
-  store float %tmp18, float* %tmp16, align 4
+  store float %tmp18, ptr %tmp16, align 4
   br label %bb19
 
 bb19:                                             ; preds = %bb14

diff  --git a/polly/test/ScopDetect/multidim-with-undef-size.ll b/polly/test/ScopDetect/multidim-with-undef-size.ll
index c5f12e1d9cf00..9973c6c721698 100644
--- a/polly/test/ScopDetect/multidim-with-undef-size.ll
+++ b/polly/test/ScopDetect/multidim-with-undef-size.ll
@@ -6,7 +6,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; Make sure we do not detect the larger region bb14->bb19 that contains
 ; a multi-dimensional memory access with a size of 'undef * undef'.
 
-define void @hoge(i8* %arg) {
+define void @hoge(ptr %arg) {
 bb:
   br label %bb6
 
@@ -16,9 +16,9 @@ bb6:                                              ; preds = %bb
   %tmp8 = add i64 %tmp7, 0
   %tmp9 = add i64 %tmp8, 8
   %tmp10 = sub i64 %tmp9, undef
-  %tmp11 = getelementptr i8, i8* %arg, i64 %tmp10
-  %tmp12 = getelementptr inbounds i8, i8* %tmp11, i64 4
-  %tmp13 = getelementptr inbounds i8, i8* %tmp12, i64 20
+  %tmp11 = getelementptr i8, ptr %arg, i64 %tmp10
+  %tmp12 = getelementptr inbounds i8, ptr %tmp11, i64 4
+  %tmp13 = getelementptr inbounds i8, ptr %tmp12, i64 20
   br label %bb14
 
 bb14:                                             ; preds = %bb14, %bb6
@@ -27,8 +27,7 @@ bb14:                                             ; preds = %bb14, %bb6
   br i1 false, label %bb14, label %bb17
 
 bb17:                                             ; preds = %bb14
-  %tmp18 = bitcast i8* %tmp13 to i32*
-  store i32 undef, i32* %tmp18, align 4
+  store i32 undef, ptr %tmp13, align 4
   br label %bb19
 
 bb19:                                             ; preds = %bb17

diff  --git a/polly/test/ScopDetect/multidim.ll b/polly/test/ScopDetect/multidim.ll
index 003a0a8430966..f43698819f322 100644
--- a/polly/test/ScopDetect/multidim.ll
+++ b/polly/test/ScopDetect/multidim.ll
@@ -5,7 +5,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Make sure we do not crash in this test case.
 
-define void @hoge(i8* %arg)  {
+define void @hoge(ptr %arg)  {
 bb:
   br label %bb9
 
@@ -17,18 +17,17 @@ bb9:                                              ; preds = %bb
   %tmp13 = add i64 %tmp12, undef
   %tmp14 = add i64 %tmp13, 8
   %tmp15 = sub i64 %tmp14, undef
-  %tmp16 = getelementptr i8, i8* %arg, i64 %tmp15
-  %tmp17 = getelementptr inbounds i8, i8* %tmp16, i64 4
-  %tmp18 = getelementptr inbounds i8, i8* %tmp17, i64 20
+  %tmp16 = getelementptr i8, ptr %arg, i64 %tmp15
+  %tmp17 = getelementptr inbounds i8, ptr %tmp16, i64 4
+  %tmp18 = getelementptr inbounds i8, ptr %tmp17, i64 20
   br label %bb19
 
 bb19:                                             ; preds = %bb19, %bb9
   br i1 false, label %bb19, label %bb20
 
 bb20:                                             ; preds = %bb19
-  %tmp21 = getelementptr inbounds i8, i8* %tmp18, i64 4
-  %tmp22 = bitcast i8* %tmp21 to i32*
-  %tmp23 = load i32, i32* %tmp22
+  %tmp21 = getelementptr inbounds i8, ptr %tmp18, i64 4
+  %tmp23 = load i32, ptr %tmp21
   br label %bb24
 
 bb24:                                             ; preds = %bb20

diff  --git a/polly/test/ScopDetect/multidim_indirect_access.ll b/polly/test/ScopDetect/multidim_indirect_access.ll
index 9cd1d3e11e785..3e06251f5fd15 100644
--- a/polly/test/ScopDetect/multidim_indirect_access.ll
+++ b/polly/test/ScopDetect/multidim_indirect_access.ll
@@ -18,25 +18,25 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i64 %N) {
+define void @f(ptr %A, i64 %N) {
 bb:
   br label %bb0
 
 bb0:
   %j = phi i64 [ %j.next, %bb1 ], [ 1, %bb ]
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %exitcond0 = icmp sgt i64 %N, %j
   %j.next = add nuw nsw i64 %j, 1
   br i1 %exitcond0, label %bb1, label %bb13
 
 bb1:                                              ; preds = %bb7, %bb0
   %i = phi i64 [ %i.next, %bb1 ], [ 1, %bb0 ]
-  %.0 = phi i32* [ %A, %bb0 ], [ %tmp12, %bb1 ]
+  %.0 = phi ptr [ %A, %bb0 ], [ %tmp12, %bb1 ]
   %tmp8 = sext i32 %tmp to i64
-  %tmp9 = getelementptr inbounds i32, i32* %.0, i64 %tmp8
-  store i32 42, i32* %tmp9, align 4
+  %tmp9 = getelementptr inbounds i32, ptr %.0, i64 %tmp8
+  store i32 42, ptr %tmp9, align 4
   %tmp11 = sext i32 %tmp to i64
-  %tmp12 = getelementptr inbounds i32, i32* %.0, i64 %tmp11
+  %tmp12 = getelementptr inbounds i32, ptr %.0, i64 %tmp11
   %i.next = add nuw nsw i64 %i, 1
   %exitcond = icmp ne i64 %i, %N
   br i1 %exitcond, label %bb1, label %bb0

diff  --git a/polly/test/ScopDetect/multidim_two_accesses_
diff erent_delinearization.ll b/polly/test/ScopDetect/multidim_two_accesses_
diff erent_delinearization.ll
index 2664c37890ab7..ed554a24a6d6e 100644
--- a/polly/test/ScopDetect/multidim_two_accesses_
diff erent_delinearization.ll
+++ b/polly/test/ScopDetect/multidim_two_accesses_
diff erent_delinearization.ll
@@ -12,7 +12,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 ; CHECK-NOT: Valid Region for Scop
 
-define void @foo(i64 %n, i64 %m, double* %A) {
+define void @foo(i64 %n, i64 %m, ptr %A) {
 entry:
   br label %for.i
 
@@ -24,12 +24,12 @@ for.j:
   %j = phi i64 [ 0, %for.i ], [ %j.inc, %for.j ]
   %tmp = mul nsw i64 %i, %m
   %vlaarrayidx.sum = add i64 %j, %tmp
-  %arrayidx = getelementptr inbounds double, double* %A, i64 %vlaarrayidx.sum
-  store double 1.0, double* %arrayidx
+  %arrayidx = getelementptr inbounds double, ptr %A, i64 %vlaarrayidx.sum
+  store double 1.0, ptr %arrayidx
   %tmp1 = mul nsw i64 %j, %n
   %vlaarrayidx.sum1 = add i64 %i, %tmp1
-  %arrayidx1 = getelementptr inbounds double, double* %A, i64 %vlaarrayidx.sum1
-  store double 1.0, double* %arrayidx1
+  %arrayidx1 = getelementptr inbounds double, ptr %A, i64 %vlaarrayidx.sum1
+  store double 1.0, ptr %arrayidx1
   %j.inc = add nsw i64 %j, 1
   %j.exitcond = icmp eq i64 %j.inc, %m
   br i1 %j.exitcond, label %for.i.inc, label %for.j

diff  --git a/polly/test/ScopDetect/nested_loop_single_exit.ll b/polly/test/ScopDetect/nested_loop_single_exit.ll
index 45dbe416f2ef3..377e8088eedbc 100644
--- a/polly/test/ScopDetect/nested_loop_single_exit.ll
+++ b/polly/test/ScopDetect/nested_loop_single_exit.ll
@@ -11,7 +11,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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %next
@@ -25,8 +25,8 @@ for.j:
 
 for.i:
   %indvar = phi i64 [ 0, %for.j], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %for.inc8, label %for.i

diff  --git a/polly/test/ScopDetect/non-affine-conditional.ll b/polly/test/ScopDetect/non-affine-conditional.ll
index 965c7035b6622..fc2d0c02d2da1 100644
--- a/polly/test/ScopDetect/non-affine-conditional.ll
+++ b/polly/test/ScopDetect/non-affine-conditional.ll
@@ -10,7 +10,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb1
 
@@ -20,14 +20,14 @@ bb1:                                              ; preds = %bb8, %bb
   br i1 %exitcond, label %bb2, label %bb9
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %tmp, align 4
   %tmp4 = icmp eq i32 %tmp3, 0
   br i1 %tmp4, label %bb7, label %bb5
 
 bb5:                                              ; preds = %bb2
-  %tmp6 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 0, i32* %tmp6, align 4
+  %tmp6 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 0, ptr %tmp6, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb2, %bb5

diff  --git a/polly/test/ScopDetect/non-affine-float-compare.ll b/polly/test/ScopDetect/non-affine-float-compare.ll
index 10ae14f8abe78..984f14aaff8fb 100644
--- a/polly/test/ScopDetect/non-affine-float-compare.ll
+++ b/polly/test/ScopDetect/non-affine-float-compare.ll
@@ -9,7 +9,7 @@
 ; CHECK: Valid Region for Scop: bb1 => bb14
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(float* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb1
 
@@ -19,19 +19,19 @@ bb1:                                              ; preds = %bb13, %bb
   br i1 %exitcond, label %bb2, label %bb14
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp3 = load float, float* %tmp, align 4
+  %tmp = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp3 = load float, ptr %tmp, align 4
   %tmp4 = add nsw i64 %indvars.iv, -1
-  %tmp5 = getelementptr inbounds float, float* %A, i64 %tmp4
-  %tmp6 = load float, float* %tmp5, align 4
+  %tmp5 = getelementptr inbounds float, ptr %A, i64 %tmp4
+  %tmp6 = load float, ptr %tmp5, align 4
   %tmp7 = fcmp oeq float %tmp3, %tmp6
   br i1 %tmp7, label %bb8, label %bb12
 
 bb8:                                              ; preds = %bb2
-  %tmp9 = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp10 = load float, float* %tmp9, align 4
+  %tmp9 = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp10 = load float, ptr %tmp9, align 4
   %tmp11 = fadd float %tmp10, 1.000000e+00
-  store float %tmp11, float* %tmp9, align 4
+  store float %tmp11, ptr %tmp9, align 4
   br label %bb12
 
 bb12:                                             ; preds = %bb8, %bb2

diff  --git a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access.ll b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access.ll
index acb1076bed8a2..068367fa1e3c3 100644
--- a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access.ll
+++ b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access.ll
@@ -21,7 +21,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* noalias %A, i32* noalias %C) {
+define void @f(ptr noalias %A, ptr noalias %C) {
 bb:
   br label %bb1
 
@@ -35,17 +35,17 @@ bb2:                                              ; preds = %bb1
 
 bb3:                                              ; preds = %bb6, %bb2
   %indvars.j = phi i32 [ %tmp4, %bb6 ], [ 0, %bb2 ]
-  %tmp = getelementptr inbounds i32, i32* %C, i32 %indvars.j
-  %tmp4 = load i32, i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %C, i32 %indvars.j
+  %tmp4 = load i32, ptr %tmp, align 4
   %tmp5 = icmp eq i32 %tmp4, 0
   br i1 %tmp5, label %bb11, label %bb6
 
 bb6:                                              ; preds = %bb3
   %tmp7 = sext i32 %tmp4 to i64
-  %tmp8 = getelementptr inbounds i32, i32* %A, i64 %tmp7
-  %tmp9 = load i32, i32* %tmp8, align 4
+  %tmp8 = getelementptr inbounds i32, ptr %A, i64 %tmp7
+  %tmp9 = load i32, ptr %tmp8, align 4
   %tmp10 = add nsw i32 %tmp9, 1
-  store i32 %tmp10, i32* %tmp8, align 4
+  store i32 %tmp10, ptr %tmp8, align 4
   br label %bb3
 
 bb11:                                             ; preds = %bb3

diff  --git a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll
index 89d01a220b764..cd2140518b46a 100644
--- a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll
+++ b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll
@@ -22,7 +22,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb11
 
@@ -50,15 +50,15 @@ bb15:                                             ; preds = %bb24, %bb14
   br i1 %exitcond, label %bb16, label %bb25
 
 bb16:                                             ; preds = %bb15
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv8
-  %tmp17 = load i32, i32* %tmp, align 4
-  %tmp18 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv5
-  %tmp19 = load i32, i32* %tmp18, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv8
+  %tmp17 = load i32, ptr %tmp, align 4
+  %tmp18 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv5
+  %tmp19 = load i32, ptr %tmp18, align 4
   %tmp20 = add nsw i32 %tmp17, %tmp19
-  %tmp21 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp22 = load i32, i32* %tmp21, align 4
+  %tmp21 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp22 = load i32, ptr %tmp21, align 4
   %tmp23 = add nsw i32 %tmp22, %tmp20
-  store i32 %tmp23, i32* %tmp21, align 4
+  store i32 %tmp23, ptr %tmp21, align 4
   br label %bb24
 
 bb24:                                             ; preds = %bb16

diff  --git a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll
index b0b838d97a25a..fb936216e45c8 100644
--- a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll
+++ b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll
@@ -22,7 +22,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb11
 
@@ -51,15 +51,15 @@ bb15:                                             ; preds = %bb24, %bb14
   br i1 %exitcond, label %bb16, label %bb25
 
 bb16:                                             ; preds = %bb15
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv8
-  %tmp17 = load i32, i32* %tmp, align 4
-  %tmp18 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv5
-  %tmp19 = load i32, i32* %tmp18, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv8
+  %tmp17 = load i32, ptr %tmp, align 4
+  %tmp18 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv5
+  %tmp19 = load i32, ptr %tmp18, align 4
   %tmp20 = add nsw i32 %tmp17, %tmp19
-  %tmp21 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp22 = load i32, i32* %tmp21, align 4
+  %tmp21 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp22 = load i32, ptr %tmp21, align 4
   %tmp23 = add nsw i32 %tmp22, %tmp20
-  store i32 %tmp23, i32* %tmp21, align 4
+  store i32 %tmp23, ptr %tmp21, align 4
   br label %bb24
 
 bb24:                                             ; preds = %bb16

diff  --git a/polly/test/ScopDetect/non-affine-loop.ll b/polly/test/ScopDetect/non-affine-loop.ll
index 7445cf71bd9c1..d5f7ea128a79e 100644
--- a/polly/test/ScopDetect/non-affine-loop.ll
+++ b/polly/test/ScopDetect/non-affine-loop.ll
@@ -22,23 +22,23 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb1
 
 bb1:                                              ; preds = %bb9, %bb
   %indvars.iv = phi i64 [ %indvars.iv.next, %bb9 ], [ 0, %bb ]
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %tmp, align 4
   %tmp3 = sext i32 %tmp2 to i64
   %tmp4 = icmp slt i64 %indvars.iv, %tmp3
   br i1 %tmp4, label %bb5, label %bb10
 
 bb5:                                              ; preds = %bb1
-  %tmp6 = getelementptr inbounds i32, i32* %A, i64 -1
-  %tmp7 = load i32, i32* %tmp6, align 4
+  %tmp6 = getelementptr inbounds i32, ptr %A, i64 -1
+  %tmp7 = load i32, ptr %tmp6, align 4
   %tmp8 = add nsw i32 %tmp7, 1
-  store i32 %tmp8, i32* %tmp6, align 4
+  store i32 %tmp8, ptr %tmp6, align 4
   br label %bb9
 
 bb9:                                              ; preds = %bb5

diff  --git a/polly/test/ScopDetect/non-beneficial-loops-small-trip-count.ll b/polly/test/ScopDetect/non-beneficial-loops-small-trip-count.ll
index 60468d39e3983..43af1684dccb1 100644
--- a/polly/test/ScopDetect/non-beneficial-loops-small-trip-count.ll
+++ b/polly/test/ScopDetect/non-beneficial-loops-small-trip-count.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -49,20 +49,20 @@ for.cond.7:                                       ; preds = %for.inc, %for.body.
   br i1 %exitcond, label %for.body.9, label %for.end
 
 for.body.9:                                       ; preds = %for.cond.7
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4
   %tmp6 = add nsw i64 %indvars.iv, -1
-  %arrayidx11 = getelementptr inbounds i32, i32* %A, i64 %tmp6
-  %tmp7 = load i32, i32* %arrayidx11, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %A, i64 %tmp6
+  %tmp7 = load i32, ptr %arrayidx11, align 4
   %mul = mul nsw i32 %tmp, %tmp7
   %tmp8 = add nuw nsw i64 %indvars.iv, 1
-  %arrayidx13 = getelementptr inbounds i32, i32* %A, i64 %tmp8
-  %tmp9 = load i32, i32* %arrayidx13, align 4
+  %arrayidx13 = getelementptr inbounds i32, ptr %A, i64 %tmp8
+  %tmp9 = load i32, ptr %arrayidx13, align 4
   %add14 = add nsw i32 %mul, %tmp9
-  %arrayidx16 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp10 = load i32, i32* %arrayidx16, align 4
+  %arrayidx16 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp10 = load i32, ptr %arrayidx16, align 4
   %add17 = add nsw i32 %tmp10, %add14
-  store i32 %add17, i32* %arrayidx16, align 4
+  store i32 %add17, ptr %arrayidx16, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.9

diff  --git a/polly/test/ScopDetect/non-constant-add-rec-start-expr.ll b/polly/test/ScopDetect/non-constant-add-rec-start-expr.ll
index b05f956d5cfef..4cddcc916a76e 100644
--- a/polly/test/ScopDetect/non-constant-add-rec-start-expr.ll
+++ b/polly/test/ScopDetect/non-constant-add-rec-start-expr.ll
@@ -25,16 +25,16 @@ bb2:
 
 bb11:
   %tmp12 = phi i64 [ %tmp23, %bb24 ], [ 1, %bb2 ]
-  %tmp14 = getelementptr inbounds [17 x i32], [17 x i32]* %tmp1, i64 0, i64 1
+  %tmp14 = getelementptr inbounds [17 x i32], ptr %tmp1, i64 0, i64 1
   br label %bb15
 
 bb15:
   %tmp16 = sub nsw i64 %tmp12, 1
   %tmp17 = shl i64 %tmp16, 32
   %tmp18 = ashr exact i64 %tmp17, 32
-  %tmp19 = getelementptr inbounds [18 x [16 x i32]], [18 x [16 x i32]]* %tmp, i64 0, i64 %tmp4, i64 %tmp18
-  %tmp20 = load i32, i32* %tmp19, align 4
-  store i32 4, i32* %tmp19
+  %tmp19 = getelementptr inbounds [18 x [16 x i32]], ptr %tmp, i64 0, i64 %tmp4, i64 %tmp18
+  %tmp20 = load i32, ptr %tmp19, align 4
+  store i32 4, ptr %tmp19
   br label %bb21
 
 bb21:

diff  --git a/polly/test/ScopDetect/non-simple-memory-accesses.ll b/polly/test/ScopDetect/non-simple-memory-accesses.ll
index 781831f90e38d..a822289828855 100644
--- a/polly/test/ScopDetect/non-simple-memory-accesses.ll
+++ b/polly/test/ScopDetect/non-simple-memory-accesses.ll
@@ -16,7 +16,7 @@ bb:
   br label %bb1
 
 bb1:                                              ; preds = %bb
-  %tmp = load atomic i8, i8* bitcast (i64* @global to i8*) acquire, align 8
+  %tmp = load atomic i8, ptr @global acquire, align 8
   br i1 false, label %bb2, label %bb3
 
 bb2:                                              ; preds = %bb1

diff  --git a/polly/test/ScopDetect/non_affine_loop_condition.ll b/polly/test/ScopDetect/non_affine_loop_condition.ll
index 2d7004f5a6197..f268442cd8ee0 100644
--- a/polly/test/ScopDetect/non_affine_loop_condition.ll
+++ b/polly/test/ScopDetect/non_affine_loop_condition.ll
@@ -13,7 +13,7 @@
 ; CHECK: Valid Region for Scop: bb1 => bb12
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb1
 
@@ -26,16 +26,16 @@ bb2:                                              ; preds = %bb1
   br label %bb3
 
 bb3:                                              ; preds = %bb6, %bb2
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp4 = load i32, i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp4 = load i32, ptr %tmp, align 4
   %tmp5 = icmp eq i32 %tmp4, 0
   br i1 %tmp5, label %bb10, label %bb6
 
 bb6:                                              ; preds = %bb3
-  %tmp7 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp8 = load i32, i32* %tmp7, align 4
+  %tmp7 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp8 = load i32, ptr %tmp7, align 4
   %tmp9 = add nsw i32 %tmp8, -1
-  store i32 %tmp9, i32* %tmp7, align 4
+  store i32 %tmp9, ptr %tmp7, align 4
   br label %bb3
 
 bb10:                                             ; preds = %bb3

diff  --git a/polly/test/ScopDetect/only-one-affine-loop.ll b/polly/test/ScopDetect/only-one-affine-loop.ll
index 699745dc9c8b6..d6d50bb611d99 100644
--- a/polly/test/ScopDetect/only-one-affine-loop.ll
+++ b/polly/test/ScopDetect/only-one-affine-loop.ll
@@ -27,7 +27,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -56,10 +56,10 @@ for.cond.4:                                       ; preds = %for.inc, %for.body.
   br i1 %exitcond, label %for.body.6, label %for.end
 
 for.body.6:                                       ; preds = %for.cond.4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv5
-  %tmp11 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv5
+  %tmp11 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp11, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.6
@@ -92,10 +92,10 @@ for.cond.17:                                      ; preds = %for.inc.23, %for.bo
   br i1 %exitcond3, label %for.body.19, label %for.end.25
 
 for.body.19:                                      ; preds = %for.cond.17
-  %arrayidx21 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv5
-  %tmp14 = load i32, i32* %arrayidx21, align 4
+  %arrayidx21 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv5
+  %tmp14 = load i32, ptr %arrayidx21, align 4
   %inc22 = add nsw i32 %tmp14, 1
-  store i32 %inc22, i32* %arrayidx21, align 4
+  store i32 %inc22, ptr %arrayidx21, align 4
   br label %for.inc.23
 
 for.inc.23:                                       ; preds = %for.body.19
@@ -110,8 +110,8 @@ for.inc.26:                                       ; preds = %for.end.25
   br label %for.cond.12
 
 for.end.28:                                       ; preds = %for.cond.12
-  %arrayidx30 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv5
-  %tmp15 = load i32, i32* %arrayidx30, align 4
+  %arrayidx30 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv5
+  %tmp15 = load i32, ptr %arrayidx30, align 4
   %tobool = icmp eq i32 %tmp15, 0
   br i1 %tobool, label %if.end, label %if.then
 
@@ -133,10 +133,10 @@ for.cond.36:                                      ; preds = %for.inc.43, %for.bo
   br i1 %cmp38, label %for.body.39, label %for.end.45
 
 for.body.39:                                      ; preds = %for.cond.36
-  %arrayidx41 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv5
-  %tmp16 = load i32, i32* %arrayidx41, align 4
+  %arrayidx41 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv5
+  %tmp16 = load i32, ptr %arrayidx41, align 4
   %inc42 = add nsw i32 %tmp16, 1
-  store i32 %inc42, i32* %arrayidx41, align 4
+  store i32 %inc42, ptr %arrayidx41, align 4
   br label %for.inc.43
 
 for.inc.43:                                       ; preds = %for.body.39

diff  --git a/polly/test/ScopDetect/only_func_flag.ll b/polly/test/ScopDetect/only_func_flag.ll
index 14053f845c780..d465cd0f50f7c 100644
--- a/polly/test/ScopDetect/only_func_flag.ll
+++ b/polly/test/ScopDetect/only_func_flag.ll
@@ -24,7 +24,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum) {
+define void @f(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -36,11 +36,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 
@@ -49,7 +49,7 @@ for.end:                                          ; preds = %for.cond
 }
 
 
-define void @g(i32* %sum) {
+define void @g(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -61,11 +61,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 
@@ -74,7 +74,7 @@ for.end:                                          ; preds = %for.cond
 }
 
 
-define void @h(i32* %sum) {
+define void @h(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -86,11 +86,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 

diff  --git a/polly/test/ScopDetect/only_func_flag_regex.ll b/polly/test/ScopDetect/only_func_flag_regex.ll
index 881916d167f50..e6675798eeb94 100644
--- a/polly/test/ScopDetect/only_func_flag_regex.ll
+++ b/polly/test/ScopDetect/only_func_flag_regex.ll
@@ -31,7 +31,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f1(i32* %sum) {
+define void @f1(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -43,11 +43,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 
@@ -56,7 +56,7 @@ for.end:                                          ; preds = %for.cond
 }
 
 
-define void @f2(i32* %sum) {
+define void @f2(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -68,11 +68,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 
@@ -80,7 +80,7 @@ for.end:                                          ; preds = %for.cond
   ret void
 }
 
-define void @g1(i32* %sum) {
+define void @g1(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -92,11 +92,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 
@@ -104,7 +104,7 @@ for.end:                                          ; preds = %for.cond
   ret void
 }
 
-define void @h(i32* %sum) {
+define void @h(ptr %sum) {
 entry:
   br label %entry.split1
 
@@ -116,11 +116,11 @@ entry.split:                                      ; preds = %entry.split1
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 

diff  --git a/polly/test/ScopDetect/parametric-multiply-in-scev-2.ll b/polly/test/ScopDetect/parametric-multiply-in-scev-2.ll
index 3a8c04cc2e8f0..fc957a7f912cd 100644
--- a/polly/test/ScopDetect/parametric-multiply-in-scev-2.ll
+++ b/polly/test/ScopDetect/parametric-multiply-in-scev-2.ll
@@ -4,7 +4,7 @@
 ; CHECK-NOT: Valid Region
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @blam(float* %A, float* %B) {
+define void @blam(ptr %A, ptr %B) {
 bb:
   %tmp1 = alloca i64
   %tmp2 = shl i64 2, undef
@@ -14,12 +14,12 @@ bb:
 
 loop:
   %indvar = phi i64 [ %indvar.next, %loop ], [ 0, %bb ]
-  %gep = getelementptr inbounds i64, i64* %tmp1, i64 %indvar
-  %tmp12 = load i64, i64* %gep
+  %gep = getelementptr inbounds i64, ptr %tmp1, i64 %indvar
+  %tmp12 = load i64, ptr %gep
   %tmp13 = mul nsw i64 %tmp12, %tmp4
-  %ptr = getelementptr inbounds float, float* %B, i64 %tmp13
-  %val = load float, float* %ptr
-  store float %val, float* %A
+  %ptr = getelementptr inbounds float, ptr %B, i64 %tmp13
+  %val = load float, ptr %ptr
+  store float %val, ptr %A
   %indvar.next = add nsw i64 %indvar, 1
   br i1 false, label %loop, label %bb21
 

diff  --git a/polly/test/ScopDetect/parametric-multiply-in-scev.ll b/polly/test/ScopDetect/parametric-multiply-in-scev.ll
index 83be1437f510a..9c6e5ccc8f52e 100644
--- a/polly/test/ScopDetect/parametric-multiply-in-scev.ll
+++ b/polly/test/ScopDetect/parametric-multiply-in-scev.ll
@@ -6,7 +6,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"
 
-define void @foo(float* %A, i64 %n, i64 %k) {
+define void @foo(ptr %A, i64 %n, i64 %k) {
 entry:
   br label %for.j
 
@@ -15,8 +15,8 @@ for.j:
 
 if.then:
   %mul = mul nsw i64 %n, %k
-  %arrayidx = getelementptr float, float* %A, i64 %mul
-  store float 0.000000e+00, float* %arrayidx
+  %arrayidx = getelementptr float, ptr %A, i64 %mul
+  store float 0.000000e+00, ptr %arrayidx
   br label %return
 
 return:

diff  --git a/polly/test/ScopDetect/phi_with_multi_exiting_edges.ll b/polly/test/ScopDetect/phi_with_multi_exiting_edges.ll
index 3571e732aae4f..054de168d76b8 100644
--- a/polly/test/ScopDetect/phi_with_multi_exiting_edges.ll
+++ b/polly/test/ScopDetect/phi_with_multi_exiting_edges.ll
@@ -16,7 +16,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define float @test(i64 %n, float* noalias nonnull %A) {
+define float @test(i64 %n, ptr noalias nonnull %A) {
 entry:
   br label %for.cond
 
@@ -30,8 +30,8 @@ for.body:                                         ; preds = %for.cond
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp = load float, ptr %arrayidx, align 4
   %add = fadd float %sum.0, %tmp
   %add1 = add nuw nsw i64 %i.0, 1
   br label %for.cond
@@ -50,8 +50,8 @@ for.body.5:                                       ; preds = %for.cond.3
   br label %for.inc.8
 
 for.inc.8:                                        ; preds = %for.body.5
-  %arrayidx6 = getelementptr inbounds float, float* %A, i64 %i2.0
-  %tmp1 = load float, float* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds float, ptr %A, i64 %i2.0
+  %tmp1 = load float, ptr %arrayidx6, align 4
   %add7 = fadd float %sum.1, %tmp1
   %add9 = add nuw nsw i64 %i2.0, 1
   br label %for.cond.3

diff  --git a/polly/test/ScopDetect/profitability-large-basic-blocks.ll b/polly/test/ScopDetect/profitability-large-basic-blocks.ll
index e9f4fde2774ff..e1650febf11c0 100644
--- a/polly/test/ScopDetect/profitability-large-basic-blocks.ll
+++ b/polly/test/ScopDetect/profitability-large-basic-blocks.ll
@@ -18,15 +18,15 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, float* %B, i64 %N) {
+define void @foo(ptr %A, ptr %B, i64 %N) {
 entry:
   br label %header
 
 header:
   %i.0 = phi i64 [ 0, %entry ], [ %tmp10, %header ]
   %tmp5 = sitofp i64 %i.0 to float
-  %tmp6 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp7 = load float, float* %tmp6, align 4
+  %tmp6 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp7 = load float, ptr %tmp6, align 4
   %tmp8 = fadd float %tmp7, %tmp5
   %val0 = fadd float %tmp7, 1.0
   %val1 = fadd float %val0, 1.0
@@ -72,7 +72,7 @@ header:
   %val41 = fadd float %val40, 1.0
   %val42 = fadd float %val41, 1.0
   %val43 = fadd float %val42, 1.0
-  store float %val34, float* %tmp6, align 4
+  store float %val34, ptr %tmp6, align 4
   %exitcond = icmp ne i64 %i.0, 100
   %tmp10 = add nsw i64 %i.0, 1
   br i1 %exitcond, label %header, label %exit

diff  --git a/polly/test/ScopDetect/profitability-two-nested-loops.ll b/polly/test/ScopDetect/profitability-two-nested-loops.ll
index 2097588323013..525f91cbc2f40 100644
--- a/polly/test/ScopDetect/profitability-two-nested-loops.ll
+++ b/polly/test/ScopDetect/profitability-two-nested-loops.ll
@@ -16,7 +16,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-linux-gnu"
 
-define void @foo(float* %A, i64 %p) {
+define void @foo(ptr %A, i64 %p) {
 bb:
   br label %bb3
 
@@ -61,10 +61,10 @@ bb11:                                             ; preds = %bb10
 bb12:                                             ; preds = %bb10
   %tmp13 = sitofp i64 %j.0 to float
   %tmp14 = add nuw nsw i64 %i.0, %j.0
-  %tmp15 = getelementptr inbounds float, float* %A, i64 %tmp14
-  %tmp16 = load float, float* %tmp15, align 4
+  %tmp15 = getelementptr inbounds float, ptr %A, i64 %tmp14
+  %tmp16 = load float, ptr %tmp15, align 4
   %tmp17 = fadd float %tmp16, %tmp13
-  store float %tmp17, float* %tmp15, align 4
+  store float %tmp17, ptr %tmp15, align 4
   br label %bb18
 
 bb18:                                             ; preds = %bb12

diff  --git a/polly/test/ScopDetect/remove_all_children.ll b/polly/test/ScopDetect/remove_all_children.ll
index 4dbfb126038e2..6d5097b806071 100644
--- a/polly/test/ScopDetect/remove_all_children.ll
+++ b/polly/test/ScopDetect/remove_all_children.ll
@@ -2,7 +2,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"
 
-define void @remove_all_children(i32* %eclass) {
+define void @remove_all_children(ptr %eclass) {
 entry:
   br label %while.body
 
@@ -21,7 +21,6 @@ if.end33:                                         ; preds = %while.end30
 
 while.body36:                                     ; preds = %while.body36, %while.body36.lr.ph
   %indvar77 = phi i64 [ 0, %if.end33 ], [ %indvar.next78, %while.body36 ]
-  %arrayidx40 = getelementptr i32, i32* %eclass, i64 0
   %indvar.next78 = add i64 %indvar77, 1
   br i1 false, label %while.body36, label %while.end44
 
@@ -30,8 +29,7 @@ while.end44:                                      ; preds = %while.body36, %if.e
 
 while.body50:                                     ; preds = %while.body50, %while.body50.lr.ph
   %indvar79 = phi i64 [ 0, %while.end44 ], [ %indvar.next80, %while.body50 ]
-  %arrayidx55 = getelementptr i32, i32* %eclass, i64 0
-  store i32 0, i32* %arrayidx55, align 4
+  store i32 0, ptr %eclass, align 4
   %indvar.next80 = add i64 %indvar79, 1
   br i1 false, label %while.body50, label %while.cond.loopexit
 

diff  --git a/polly/test/ScopDetect/report-scop-location.ll b/polly/test/ScopDetect/report-scop-location.ll
index 6ef39cd119792..750699cbe7634 100644
--- a/polly/test/ScopDetect/report-scop-location.ll
+++ b/polly/test/ScopDetect/report-scop-location.ll
@@ -2,7 +2,7 @@
 target datalayout = "e-i64:64-f80:128-s:64-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @foo(float* %A) #0 !dbg !4 {
+define void @foo(ptr %A) #0 !dbg !4 {
 entry:
   br label %entry.split
 
@@ -12,9 +12,9 @@ entry.split:                                      ; preds = %entry
 for.body:                                         ; preds = %entry.split, %for.body
   %indvar = phi i64 [ 0, %entry.split ], [ %indvar.next, %for.body ]
   %i.01 = trunc i64 %indvar to i32, !dbg !13
-  %arrayidx = getelementptr float, float* %A, i64 %indvar, !dbg !13
+  %arrayidx = getelementptr float, ptr %A, i64 %indvar, !dbg !13
   %conv = sitofp i32 %i.01 to float, !dbg !13
-  store float %conv, float* %arrayidx, align 4, !dbg !13
+  store float %conv, ptr %arrayidx, align 4, !dbg !13
   %indvar.next = add i64 %indvar, 1, !dbg !11
   %exitcond = icmp ne i64 %indvar.next, 100, !dbg !11
   br i1 %exitcond, label %for.body, label %for.end, !dbg !11
@@ -28,7 +28,7 @@ for.end:                                          ; preds = %for.body
 ; CHECK: test.c:3: End of scop
 
 ; Function Attrs: nounwind uwtable
-define void @bar(float* %A) #0 !dbg !7 {
+define void @bar(ptr %A) #0 !dbg !7 {
 entry:
   br label %entry.split
 
@@ -38,9 +38,9 @@ entry.split:                                      ; preds = %entry
 for.body:                                         ; preds = %entry.split, %for.body
   %indvar = phi i64 [ 0, %entry.split ], [ %indvar.next, %for.body ]
   %i.01 = trunc i64 %indvar to i32, !dbg !17
-  %arrayidx = getelementptr float, float* %A, i64 %indvar, !dbg !17
+  %arrayidx = getelementptr float, ptr %A, i64 %indvar, !dbg !17
   %conv = sitofp i32 %i.01 to float, !dbg !17
-  store float %conv, float* %arrayidx, align 4, !dbg !17
+  store float %conv, ptr %arrayidx, align 4, !dbg !17
   %indvar.next = add i64 %indvar, 1, !dbg !15
   %exitcond = icmp ne i64 %indvar.next, 100, !dbg !15
   br i1 %exitcond, label %for.body, label %for.end, !dbg !15

diff  --git a/polly/test/ScopDetect/restrict-undef-size-scopdetect.ll b/polly/test/ScopDetect/restrict-undef-size-scopdetect.ll
index 9d72856f5632b..e94f1e7728c50 100644
--- a/polly/test/ScopDetect/restrict-undef-size-scopdetect.ll
+++ b/polly/test/ScopDetect/restrict-undef-size-scopdetect.ll
@@ -5,7 +5,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 %struct.bar = type { i32, [4 x i32] }
 
-define void @f(%struct.bar* %arg) {
+define void @f(ptr %arg) {
 bb:
   %tmp = alloca [4 x i32], align 16
   br label %bb1
@@ -15,13 +15,12 @@ bb1:                                              ; preds = %bb8, %bb
   br i1 false, label %bb3, label %bb6
 
 bb3:                                              ; preds = %bb1
-  %tmp4 = getelementptr inbounds [4 x i32], [4 x i32]* %tmp, i64 0, i64 0
-  %tmp5 = load i32, i32* %tmp4
+  %tmp5 = load i32, ptr %tmp
   br label %bb8
 
 bb6:                                              ; preds = %bb1
-  %tmp7 = getelementptr inbounds %struct.bar, %struct.bar* %arg, i64 0, i32 1, i64 undef
-  store i32 42, i32* %tmp7
+  %tmp7 = getelementptr inbounds %struct.bar, ptr %arg, i64 0, i32 1, i64 undef
+  store i32 42, ptr %tmp7
   br label %bb8
 
 bb8:                                              ; preds = %bb6, %bb3

diff  --git a/polly/test/ScopDetect/run_time_alias_check.ll b/polly/test/ScopDetect/run_time_alias_check.ll
index 4d5039642cbf5..672f3dfa6365a 100644
--- a/polly/test/ScopDetect/run_time_alias_check.ll
+++ b/polly/test/ScopDetect/run_time_alias_check.ll
@@ -2,9 +2,9 @@
 
 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"
 
-declare float* @getNextBasePtr(float*) readnone nounwind
+declare ptr @getNextBasePtr(ptr) readnone nounwind
 
-define void @base_pointer_is_inst_inside_invariant_1(i64 %n, float* %A, float* %B) {
+define void @base_pointer_is_inst_inside_invariant_1(i64 %n, ptr %A, ptr %B) {
 entry:
   br label %for.i
 
@@ -16,11 +16,11 @@ S1:
 ; To get an instruction inside a region, we use a function without side
 ; effects on which SCEV blocks, but for which it is still clear that the
 ; return value remains invariant throughout the whole loop.
-  %ptr = call float* @getNextBasePtr(float* %A)
+  %ptr = call ptr @getNextBasePtr(ptr %A)
   %conv = sitofp i64 %indvar.i to float
-  %arrayidx5 = getelementptr float, float* %ptr, i64 %indvar.i
-  store float %conv, float* %arrayidx5, align 4
-  store float 1.0, float* %B
+  %arrayidx5 = getelementptr float, ptr %ptr, i64 %indvar.i
+  store float %conv, ptr %arrayidx5, align 4
+  store float 1.0, ptr %B
   br label %for.i.inc
 
 for.i.inc:

diff  --git a/polly/test/ScopDetect/scev_remove_max.ll b/polly/test/ScopDetect/scev_remove_max.ll
index 18342a43c4ec4..5353e06bdf2fd 100644
--- a/polly/test/ScopDetect/scev_remove_max.ll
+++ b/polly/test/ScopDetect/scev_remove_max.ll
@@ -10,7 +10,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
- at vertPlane = external global i8*, align 8
+ at vertPlane = external global ptr, align 8
 
 define fastcc void @Maze2Mech(i64 %i, i64 %b1, i64 %yStart) {
 .split:
@@ -19,7 +19,7 @@ define fastcc void @Maze2Mech(i64 %i, i64 %b1, i64 %yStart) {
 DrawSegment.exit34:                               ; preds = %.split
   %tmp = icmp ugt i64 %yStart, %b1
   %tmp1 = select i1 %tmp, i64 %b1, i64 %yStart
-  %tmp2 = load i8*, i8** @vertPlane, align 8
+  %tmp2 = load ptr, ptr @vertPlane, align 8
   %y.04.i21 = add i64 %tmp1, 1
   br label %.lr.ph.i24
 
@@ -27,8 +27,8 @@ DrawSegment.exit34:                               ; preds = %.split
   %y.05.i22 = phi i64 [ %y.0.i23, %.lr.ph.i24 ], [ %y.04.i21, %DrawSegment.exit34 ]
   %tmp3 = mul i64 %y.05.i22, undef
   %tmp4 = add i64 %tmp3, %i
-  %tmp5 = getelementptr inbounds i8, i8* %tmp2, i64 %tmp4
-  %tmp6 = load i8, i8* %tmp5, align 1
+  %tmp5 = getelementptr inbounds i8, ptr %tmp2, i64 %tmp4
+  %tmp6 = load i8, ptr %tmp5, align 1
   %y.0.i23 = add nuw i64 %y.05.i22, 1
   br i1 false, label %bb, label %.lr.ph.i24
 

diff  --git a/polly/test/ScopDetect/sequential_loops.ll b/polly/test/ScopDetect/sequential_loops.ll
index a47b171d30fc3..e6ac38aa16047 100644
--- a/polly/test/ScopDetect/sequential_loops.ll
+++ b/polly/test/ScopDetect/sequential_loops.ll
@@ -12,7 +12,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ;     A[i] = i;
 ; }
 
-define void @f1(i64* %A, i64 %N) nounwind {
+define void @f1(ptr %A, i64 %N) nounwind {
 ; CHECK-LABEL: 'Polly - Detect static control parts (SCoPs)' for function 'f1'
 entry:
   fence seq_cst
@@ -20,16 +20,16 @@ entry:
 
 for.i.1:
   %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %for.i.1 ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %for.i.2, label %for.i.1
 
 for.i.2:
   %indvar.2 = phi i64 [ 0, %for.i.1 ], [ %indvar.next.2, %for.i.2 ]
-  %scevgep.2 = getelementptr i64, i64* %A, i64 %indvar.2
-  store i64 %indvar.2, i64* %scevgep.2
+  %scevgep.2 = getelementptr i64, ptr %A, i64 %indvar.2
+  store i64 %indvar.2, ptr %scevgep.2
   %indvar.next.2 = add nsw i64 %indvar.2, 1
   %exitcond.2 = icmp eq i64 %indvar.next.2, %N
   br i1 %exitcond.2, label %return, label %for.i.2
@@ -59,7 +59,7 @@ return:
 ;         A[i] = i;
 ;     }
 
-define void @f2(i64* %A, i64 %N) nounwind {
+define void @f2(ptr %A, i64 %N) nounwind {
 ; CHECK-LABEL: 'Polly - Detect static control parts (SCoPs)' for function 'f2'
 entry:
   fence seq_cst
@@ -67,8 +67,8 @@ entry:
 
 for.i.1:
   %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %for.i.1 ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %preheader, label %for.i.1
@@ -78,8 +78,8 @@ preheader:
 
 for.i.2:
   %indvar.2 = phi i64 [ 0, %preheader ], [ %indvar.next.2, %for.i.2 ]
-  %scevgep.2 = getelementptr i64, i64* %A, i64 %indvar.2
-  store i64 %indvar.2, i64* %scevgep.2
+  %scevgep.2 = getelementptr i64, ptr %A, i64 %indvar.2
+  store i64 %indvar.2, ptr %scevgep.2
   %indvar.next.2 = add nsw i64 %indvar.2, 1
   %exitcond.2 = icmp eq i64 %indvar.next.2, %N
   br i1 %exitcond.2, label %return, label %for.i.2

diff  --git a/polly/test/ScopDetect/simple_loop.ll b/polly/test/ScopDetect/simple_loop.ll
index 1cb310f77f6c5..c8ed89a97d007 100644
--- a/polly/test/ScopDetect/simple_loop.ll
+++ b/polly/test/ScopDetect/simple_loop.ll
@@ -8,15 +8,15 @@
 
 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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %for.i
 
 for.i:
   %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/ScopDetect/simple_loop_non_single_entry.ll b/polly/test/ScopDetect/simple_loop_non_single_entry.ll
index 3ff115d43c964..22adec5d20399 100644
--- a/polly/test/ScopDetect/simple_loop_non_single_entry.ll
+++ b/polly/test/ScopDetect/simple_loop_non_single_entry.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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br i1 true, label %then, label %else
@@ -30,8 +30,8 @@ else:
 
 for.i:
   %indvar = phi i64 [ 0, %then ], [ 0, %else], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/ScopDetect/simple_loop_non_single_exit.ll b/polly/test/ScopDetect/simple_loop_non_single_exit.ll
index ac19444c5a146..71ac830cae7d9 100644
--- a/polly/test/ScopDetect/simple_loop_non_single_exit.ll
+++ b/polly/test/ScopDetect/simple_loop_non_single_exit.ll
@@ -9,7 +9,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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %next
@@ -19,8 +19,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/ScopDetect/simple_loop_non_single_exit_2.ll b/polly/test/ScopDetect/simple_loop_non_single_exit_2.ll
index 54c35e2754206..d9915dc130d58 100644
--- a/polly/test/ScopDetect/simple_loop_non_single_exit_2.ll
+++ b/polly/test/ScopDetect/simple_loop_non_single_exit_2.ll
@@ -10,7 +10,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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br i1 true, label %next, label %return
@@ -20,8 +20,8 @@ next:
 
 for.i:
   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/ScopDetect/simple_loop_two_phi_nodes.ll b/polly/test/ScopDetect/simple_loop_two_phi_nodes.ll
index b5b6b18cb6369..867bd50513f01 100644
--- a/polly/test/ScopDetect/simple_loop_two_phi_nodes.ll
+++ b/polly/test/ScopDetect/simple_loop_two_phi_nodes.ll
@@ -11,7 +11,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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   %cmp = icmp sgt i64 %N, 0
   br i1 %cmp, label %for.i, label %return
@@ -19,8 +19,8 @@ entry:
 for.i:
   %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %for.i ]
   %indvar_non_canonical = phi i64 [ 1, %entry ], [ %indvar_non_canonical.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar_non_canonical, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar_non_canonical, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %indvar_non_canonical.next = add nsw i64 %indvar_non_canonical, 1
   %exitcond = icmp eq i64 %indvar.next, %N

diff  --git a/polly/test/ScopDetect/simple_loop_with_param.ll b/polly/test/ScopDetect/simple_loop_with_param.ll
index 950be6b90a19e..1ae5c66087392 100644
--- a/polly/test/ScopDetect/simple_loop_with_param.ll
+++ b/polly/test/ScopDetect/simple_loop_with_param.ll
@@ -16,7 +16,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"
 
-define void @f(i64* noalias %A, i64 %N, i64* noalias %init_ptr) nounwind {
+define void @f(ptr noalias %A, i64 %N, ptr noalias %init_ptr) nounwind {
 entry:
   br label %for.i
 
@@ -26,14 +26,14 @@ for.i:
   br label %entry.next
 
 entry.next:
-  %init = load i64, i64* %init_ptr
+  %init = load i64, ptr %init_ptr
   br label %for.j
 
 for.j:
   %indvar.j = phi i64 [ 0, %entry.next ], [ %indvar.j.next, %for.j ]
   %indvar.j.non_canonical = phi i64 [ %init, %entry.next ], [ %indvar.j.non_canonical.next, %for.j ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
-  store i64 %indvar.j.non_canonical, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar.j
+  store i64 %indvar.j.non_canonical, ptr %scevgep
   %indvar.j.next = add nsw i64 %indvar.j, 1
   %indvar.j.non_canonical.next = add nsw i64 %indvar.j.non_canonical, 1
   %exitcond.j = icmp eq i64 %indvar.j.next, %N

diff  --git a/polly/test/ScopDetect/simple_loop_with_param_2.ll b/polly/test/ScopDetect/simple_loop_with_param_2.ll
index dd6781f70a13c..1a4750621c19a 100644
--- a/polly/test/ScopDetect/simple_loop_with_param_2.ll
+++ b/polly/test/ScopDetect/simple_loop_with_param_2.ll
@@ -13,7 +13,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"
 
-define void @f(i64* noalias %A, i64 %N, i64* noalias %init_ptr) nounwind {
+define void @f(ptr noalias %A, i64 %N, ptr noalias %init_ptr) nounwind {
 entry:
   br label %for.i
 
@@ -23,14 +23,14 @@ for.i:
   br label %entry.next
 
 entry.next:
-  %init = load i64, i64* %init_ptr
+  %init = load i64, ptr %init_ptr
   br label %for.j
 
 for.j:
   %indvar.j = phi i64 [ 0, %entry.next ], [ %indvar.j.next, %for.j ]
   %init_plus_two = add i64 %init, 2
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
-  store i64 %init_plus_two, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar.j
+  store i64 %init_plus_two, ptr %scevgep
   %indvar.j.next = add nsw i64 %indvar.j, 1
   %exitcond.j = icmp eq i64 %indvar.j.next, %N
   br i1 %exitcond.j, label %for.i.end, label %for.j

diff  --git a/polly/test/ScopDetect/simple_non_single_entry.ll b/polly/test/ScopDetect/simple_non_single_entry.ll
index 04f68dc0d19fa..a1995a4279034 100644
--- a/polly/test/ScopDetect/simple_non_single_entry.ll
+++ b/polly/test/ScopDetect/simple_non_single_entry.ll
@@ -24,7 +24,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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br i1 true, label %then1, label %else1
@@ -53,8 +53,8 @@ for.i.head1:
 for.i:
   %indvar = phi i64 [ 0, %for.i.head1], [ %indvar.next, %for.i ]
   fence seq_cst
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/ScopDetect/skip_function_attribute.ll b/polly/test/ScopDetect/skip_function_attribute.ll
index 755ea84bd0e51..e85dbd4c2b83f 100644
--- a/polly/test/ScopDetect/skip_function_attribute.ll
+++ b/polly/test/ScopDetect/skip_function_attribute.ll
@@ -11,7 +11,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @polly_skip_me(i32* %A, i32 %N) #0 {
+define void @polly_skip_me(ptr %A, i32 %N) #0 {
 entry:
   br label %entry.split
 
@@ -24,12 +24,12 @@ for.body.preheader:                               ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.preheader, %for.body
   %i.02 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.02
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.02
+  %tmp = load i32, ptr %arrayidx, align 4
   %mul = mul nsw i32 %tmp, %tmp
   %add = add nsw i32 %mul, %tmp
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i32 %i.02
-  store i32 %add, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i32 %i.02
+  store i32 %add, ptr %arrayidx3, align 4
   %inc = add nsw i32 %i.02, 1
   %cmp = icmp slt i32 %inc, %N
   br i1 %cmp, label %for.body, label %for.end.loopexit

diff  --git a/polly/test/ScopDetect/srem_with_parametric_divisor.ll b/polly/test/ScopDetect/srem_with_parametric_divisor.ll
index c58e7a0b0fc8e..4b5c3b04c2ce2 100644
--- a/polly/test/ScopDetect/srem_with_parametric_divisor.ll
+++ b/polly/test/ScopDetect/srem_with_parametric_divisor.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, i64 %n, i64 %p) {
+define void @foo(ptr %A, i64 %n, i64 %p) {
 bb:
   br label %bb1
 
@@ -20,10 +20,10 @@ bb1:                                              ; preds = %bb6, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = srem i64 %n, %p
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %tmp
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %tmp
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, 1.000000e+00
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2

diff  --git a/polly/test/ScopDetect/statistics.ll b/polly/test/ScopDetect/statistics.ll
index daae08dde0676..64df3d0816059 100644
--- a/polly/test/ScopDetect/statistics.ll
+++ b/polly/test/ScopDetect/statistics.ll
@@ -57,7 +57,7 @@
 ;    }
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo_0d(float* %A) {
+define void @foo_0d(ptr %A) {
 bb:
   br label %bb1
 
@@ -65,14 +65,14 @@ bb1:
   br i1 true, label %exit, label %block
 
 block:
-  store float 42.0, float* %A
+  store float 42.0, ptr %A
   br label %exit
 
 exit:
   ret void
 }
 
-define void @foo_1d(float* %A) {
+define void @foo_1d(ptr %A) {
 bb:
   br label %bb1
 
@@ -83,10 +83,10 @@ bb1:                                              ; preds = %bb6, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = sitofp i64 %i.0 to float
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, %tmp
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2
@@ -97,7 +97,7 @@ bb8:                                              ; preds = %bb1
   ret void
 }
 
-define void @foo_2d(float* %A) {
+define void @foo_2d(ptr %A) {
 bb:
   br label %bb2
 
@@ -118,10 +118,10 @@ bb5:                                              ; preds = %bb4
   %tmp = add nuw nsw i64 %i.0, %j.0
   %tmp6 = sitofp i64 %tmp to float
   %tmp7 = add nuw nsw i64 %i.0, %j.0
-  %tmp8 = getelementptr inbounds float, float* %A, i64 %tmp7
-  %tmp9 = load float, float* %tmp8, align 4
+  %tmp8 = getelementptr inbounds float, ptr %A, i64 %tmp7
+  %tmp9 = load float, ptr %tmp8, align 4
   %tmp10 = fadd float %tmp9, %tmp6
-  store float %tmp10, float* %tmp8, align 4
+  store float %tmp10, ptr %tmp8, align 4
   br label %bb11
 
 bb11:                                             ; preds = %bb5
@@ -139,7 +139,7 @@ bb16:                                             ; preds = %bb2
   ret void
 }
 
-define void @foo_3d(float* %A) {
+define void @foo_3d(ptr %A) {
 bb:
   br label %bb3
 
@@ -170,10 +170,10 @@ bb8:                                              ; preds = %bb7
   %tmp10 = sitofp i64 %tmp9 to float
   %tmp11 = add nuw nsw i64 %i.0, %j.0
   %tmp12 = add nuw nsw i64 %tmp11, %k.0
-  %tmp13 = getelementptr inbounds float, float* %A, i64 %tmp12
-  %tmp14 = load float, float* %tmp13, align 4
+  %tmp13 = getelementptr inbounds float, ptr %A, i64 %tmp12
+  %tmp14 = load float, ptr %tmp13, align 4
   %tmp15 = fadd float %tmp14, %tmp10
-  store float %tmp15, float* %tmp13, align 4
+  store float %tmp15, ptr %tmp13, align 4
   br label %bb16
 
 bb16:                                             ; preds = %bb8
@@ -198,7 +198,7 @@ bb24:                                             ; preds = %bb3
   ret void
 }
 
-define void @foo_4d(float* %A) {
+define void @foo_4d(ptr %A) {
 bb:
   br label %bb4
 
@@ -239,10 +239,10 @@ bb11:                                             ; preds = %bb10
   %tmp15 = add nuw nsw i64 %i.0, %j.0
   %tmp16 = add nuw nsw i64 %tmp15, %k.0
   %tmp17 = add nuw nsw i64 %tmp16, %l.0
-  %tmp18 = getelementptr inbounds float, float* %A, i64 %tmp17
-  %tmp19 = load float, float* %tmp18, align 4
+  %tmp18 = getelementptr inbounds float, ptr %A, i64 %tmp17
+  %tmp19 = load float, ptr %tmp18, align 4
   %tmp20 = fadd float %tmp19, %tmp14
-  store float %tmp20, float* %tmp18, align 4
+  store float %tmp20, ptr %tmp18, align 4
   br label %bb21
 
 bb21:                                             ; preds = %bb11
@@ -274,7 +274,7 @@ bb32:                                             ; preds = %bb4
   ret void
 }
 
-define void @foo_zero_iterations(float* %A) {
+define void @foo_zero_iterations(ptr %A) {
 bb:
   br label %bb1
 
@@ -285,10 +285,10 @@ bb1:                                              ; preds = %bb6, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = sitofp i64 %i.0 to float
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, %tmp
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2

diff  --git a/polly/test/ScopDetect/tlr_is_hoistable_load.ll b/polly/test/ScopDetect/tlr_is_hoistable_load.ll
index aea93276b9b61..5c33522f62325 100644
--- a/polly/test/ScopDetect/tlr_is_hoistable_load.ll
+++ b/polly/test/ScopDetect/tlr_is_hoistable_load.ll
@@ -35,38 +35,37 @@ entry:
   %A = alloca [5 x i32], align 16
   %len = alloca i32, align 4
   %i = alloca i32, align 4
-  %0 = bitcast [5 x i32]* %A to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* bitcast ([5 x i32]* @test.A to i8*), i64 20, i32 16, i1 false)
-  store i32 5, i32* %len, align 4
-  store i32 0, i32* %i, align 4
+  call void @llvm.memcpy.p0.p0.i64(ptr %A, ptr @test.A, i64 20, i32 16, i1 false)
+  store i32 5, ptr %len, align 4
+  store i32 0, ptr %i, align 4
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
-  %1 = load i32, i32* %i, align 4
-  %2 = load i32, i32* %len, align 4
-  %cmp = icmp slt i32 %1, %2
+  %0 = load i32, ptr %i, align 4
+  %1 = load i32, ptr %len, align 4
+  %cmp = icmp slt i32 %0, %1
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %3 = load i32, i32* %i, align 4
-  %idxprom = sext i32 %3 to i64
-  %arrayidx = getelementptr inbounds [5 x i32], [5 x i32]* %A, i64 0, i64 %idxprom
-  %4 = load i32, i32* %arrayidx, align 4
-  %mul = mul nsw i32 %4, 2
-  %5 = load i32, i32* %i, align 4
-  %idxprom1 = sext i32 %5 to i64
-  %arrayidx2 = getelementptr inbounds [5 x i32], [5 x i32]* %A, i64 0, i64 %idxprom1
-  store i32 %mul, i32* %arrayidx2, align 4
+  %2 = load i32, ptr %i, align 4
+  %idxprom = sext i32 %2 to i64
+  %arrayidx = getelementptr inbounds [5 x i32], ptr %A, i64 0, i64 %idxprom
+  %3 = load i32, ptr %arrayidx, align 4
+  %mul = mul nsw i32 %3, 2
+  %4 = load i32, ptr %i, align 4
+  %idxprom1 = sext i32 %4 to i64
+  %arrayidx2 = getelementptr inbounds [5 x i32], ptr %A, i64 0, i64 %idxprom1
+  store i32 %mul, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
-  %6 = load i32, i32* %i, align 4
-  %inc = add nsw i32 %6, 1
-  store i32 %inc, i32* %i, align 4
+  %5 = load i32, ptr %i, align 4
+  %inc = add nsw i32 %5, 1
+  store i32 %inc, ptr %i, align 4
   br label %for.cond
 
 for.end:                                          ; preds = %for.cond
   ret void
 }
 
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1)
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i32, i1)

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportAlias-01.ll b/polly/test/ScopDetectionDiagnostics/ReportAlias-01.ll
index b47044598a59d..97ba7f9634e98 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportAlias-01.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportAlias-01.ll
@@ -11,22 +11,22 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %B) !dbg !4 {
+define void @f(ptr %A, ptr %B) !dbg !4 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  tail call void @llvm.dbg.value(metadata i32* %A, i64 0, metadata !13, metadata !DIExpression()), !dbg !14
-  tail call void @llvm.dbg.value(metadata i32* %B, i64 0, metadata !15, metadata !DIExpression()), !dbg !16
+  tail call void @llvm.dbg.value(metadata ptr %A, i64 0, metadata !13, metadata !DIExpression()), !dbg !14
+  tail call void @llvm.dbg.value(metadata ptr %B, i64 0, metadata !15, metadata !DIExpression()), !dbg !16
   tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !18, metadata !DIExpression()), !dbg !20
   br label %for.body, !dbg !21
 
 for.body:                                         ; preds = %entry.split, %for.body
   %indvar = phi i64 [ 0, %entry.split ], [ %indvar.next, %for.body ]
-  %arrayidx = getelementptr i32, i32* %B, i64 %indvar, !dbg !22
-  %arrayidx2 = getelementptr i32, i32* %A, i64 %indvar, !dbg !22
-  %0 = load i32, i32* %arrayidx, align 4, !dbg !22
-  store i32 %0, i32* %arrayidx2, align 4, !dbg !22
+  %arrayidx = getelementptr i32, ptr %B, i64 %indvar, !dbg !22
+  %arrayidx2 = getelementptr i32, ptr %A, i64 %indvar, !dbg !22
+  %0 = load i32, ptr %arrayidx, align 4, !dbg !22
+  store i32 %0, ptr %arrayidx2, align 4, !dbg !22
   tail call void @llvm.dbg.value(metadata !{null}, i64 0, metadata !18, metadata !DIExpression()), !dbg !20
   %indvar.next = add i64 %indvar, 1, !dbg !21
   %exitcond = icmp ne i64 %indvar.next, 42, !dbg !21

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportEntry.ll b/polly/test/ScopDetectionDiagnostics/ReportEntry.ll
index bf82c78f3cb11..fc21e192f32c2 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportEntry.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportEntry.ll
@@ -2,7 +2,7 @@
 
 ; CHECK: remark: <unknown>:0:0: Scop contains function entry (not yet supported).
 
-define void @hoge(i8* %arg)  {
+define void @hoge(ptr %arg)  {
 bb1:
   br i1 false, label %bb2, label %bb3
 

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportFuncCall-01.ll b/polly/test/ScopDetectionDiagnostics/ReportFuncCall-01.ll
index a2e96dc3bfa06..abace4ba520d2 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportFuncCall-01.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportFuncCall-01.ll
@@ -11,7 +11,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @a(double* %A, i32 %n) #0 !dbg !4 {
+define void @a(ptr %A, i32 %n) #0 !dbg !4 {
 entry:
   %cmp1 = icmp sgt i32 %n, 0, !dbg !10
   br i1 %cmp1, label %for.body.lr.ph, label %for.end, !dbg !10
@@ -22,9 +22,9 @@ for.body.lr.ph:                                   ; preds = %entry
 
 for.body:                                         ; preds = %for.body, %for.body.lr.ph
   %indvar = phi i64 [ 0, %for.body.lr.ph ], [ %indvar.next, %for.body ]
-  %arrayidx = getelementptr double, double* %A, i64 %indvar, !dbg !12
-  %call = tail call double @invalidCall(double* %A) #2, !dbg !12
-  store double %call, double* %arrayidx, align 8, !dbg !12, !tbaa !14
+  %arrayidx = getelementptr double, ptr %A, i64 %indvar, !dbg !12
+  %call = tail call double @invalidCall(ptr %A) #2, !dbg !12
+  store double %call, ptr %arrayidx, align 8, !dbg !12, !tbaa !14
   %indvar.next = add i64 %indvar, 1, !dbg !10
   %exitcond = icmp eq i64 %indvar.next, %0, !dbg !10
   br i1 %exitcond, label %for.end.loopexit, label %for.body, !dbg !10
@@ -36,7 +36,7 @@ for.end:                                          ; preds = %for.end.loopexit, %
   ret void, !dbg !18
 }
 
-declare double @invalidCall(double*) #1
+declare double @invalidCall(ptr) #1
 
 ; CHECK: remark: ReportFuncCall.c:4:8: The following errors keep this region from being a Scop.
 ; CHECK: remark: ReportFuncCall.c:5:12: This function call cannot be handled. Try to inline it.

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegion.ll b/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegion.ll
index b6453b54b0dfa..8368a68b42f08 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegion.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegion.ll
@@ -25,16 +25,16 @@ define void @foo(i32 %a, i32 %b) #0 !dbg !4 {
 entry:
   %a.addr = alloca i32, align 4
   %b.addr = alloca i32, align 4
-  store i32 %a, i32* %a.addr, align 4
-  call void @llvm.dbg.declare(metadata i32* %a.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
-  %0 = load i32, i32* %b.addr, align 4, !dbg !16
+  store i32 %a, ptr %a.addr, align 4
+  call void @llvm.dbg.declare(metadata ptr %a.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
+  %0 = load i32, ptr %b.addr, align 4, !dbg !16
   %cmp = icmp eq i32 %0, 42, !dbg !18
   br i1 %cmp, label %if.then, label %if.end6, !dbg !19
 
 if.then:                                          ; preds = %entry
-  %1 = load i32, i32* %a.addr, align 4, !dbg !20
+  %1 = load i32, ptr %a.addr, align 4, !dbg !20
   %cmp1 = icmp sgt i32 %1, 0, !dbg !23
   br i1 %cmp1, label %if.then2, label %if.end, !dbg !24
 
@@ -42,13 +42,13 @@ if.then2:                                         ; preds = %if.then
   br label %LABEL1, !dbg !25
 
 LABEL1:                                           ; preds = %if.then4, %if.then2
-  %2 = load i32, i32* %a.addr, align 4, !dbg !27
+  %2 = load i32, ptr %a.addr, align 4, !dbg !27
   %dec = add nsw i32 %2, -1, !dbg !27
-  store i32 %dec, i32* %a.addr, align 4, !dbg !27
+  store i32 %dec, ptr %a.addr, align 4, !dbg !27
   br label %if.end, !dbg !29
 
 if.end:                                           ; preds = %LABEL1, %if.then
-  %3 = load i32, i32* %a.addr, align 4, !dbg !30
+  %3 = load i32, ptr %a.addr, align 4, !dbg !30
   %cmp3 = icmp sgt i32 %3, 0, !dbg !32
   br i1 %cmp3, label %if.then4, label %if.end5, !dbg !33
 
@@ -56,9 +56,9 @@ if.then4:                                         ; preds = %if.end
   br label %LABEL1, !dbg !34
 
 if.end5:                                          ; preds = %if.end
-  %4 = load i32, i32* %b.addr, align 4, !dbg !36
+  %4 = load i32, ptr %b.addr, align 4, !dbg !36
   %add = add nsw i32 %4, 42, !dbg !37
-  store i32 %add, i32* %b.addr, align 4, !dbg !38
+  store i32 %add, ptr %b.addr, align 4, !dbg !38
   br label %if.end6, !dbg !39
 
 if.end6:                                          ; preds = %if.end5, %entry

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegionWithoutDebugLoc.ll b/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegionWithoutDebugLoc.ll
index 0f9d28d8d02e0..82c6c33e287c3 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegionWithoutDebugLoc.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegionWithoutDebugLoc.ll
@@ -2,7 +2,7 @@
 
 ; CHECK: remark: <unknown>:0:0: Irreducible region encountered in control flow.
 
-define void @hoge(i8* %arg)  {
+define void @hoge(ptr %arg)  {
 bb1:
   br i1 false, label %bb2, label %bb3
 

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportLoopBound-01.ll b/polly/test/ScopDetectionDiagnostics/ReportLoopBound-01.ll
index a3f8fa3b510cd..618237157e084 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportLoopBound-01.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportLoopBound-01.ll
@@ -37,18 +37,18 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %n) !dbg !4 {
+define void @f(ptr %A, i32 %n) !dbg !4 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  tail call void @llvm.dbg.value(metadata i32* %A, i64 0, metadata !13, metadata !DIExpression()), !dbg !14
-  tail call void @llvm.dbg.value(metadata i32* %A, i64 0, metadata !13, metadata !DIExpression()), !dbg !14
+  tail call void @llvm.dbg.value(metadata ptr %A, i64 0, metadata !13, metadata !DIExpression()), !dbg !14
+  tail call void @llvm.dbg.value(metadata ptr %A, i64 0, metadata !13, metadata !DIExpression()), !dbg !14
   tail call void @llvm.dbg.value(metadata i32 %n, i64 0, metadata !15, metadata !DIExpression()), !dbg !16
   tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !18, metadata !DIExpression()), !dbg !20
   %idxprom = sext i32 %n to i64, !dbg !21
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom, !dbg !21
-  %0 = load i32, i32* %arrayidx, align 4, !dbg !21
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom, !dbg !21
+  %0 = load i32, ptr %arrayidx, align 4, !dbg !21
   %cmp3 = icmp sgt i32 %0, 0, !dbg !21
   br i1 %cmp3, label %for.body.lr.ph, label %for.end, !dbg !21
 
@@ -57,13 +57,13 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %indvar = phi i64 [ 0, %for.body.lr.ph ], [ %indvar.next, %for.body ]
-  %arrayidx2 = getelementptr i32, i32* %A, i64 %indvar, !dbg !24
+  %arrayidx2 = getelementptr i32, ptr %A, i64 %indvar, !dbg !24
   %1 = add i64 %indvar, 1, !dbg !24
   %inc = trunc i64 %1 to i32, !dbg !21
-  store i32 0, i32* %arrayidx2, align 4, !dbg !24
+  store i32 0, ptr %arrayidx2, align 4, !dbg !24
   tail call void @llvm.dbg.value(metadata !{null}, i64 0, metadata !18, metadata !DIExpression()), !dbg !20
-  %arrayidx3 = getelementptr inbounds i32, i32* %arrayidx, i64 %indvar, !dbg !21
-  %2 = load i32, i32* %arrayidx3, align 4, !dbg !21
+  %arrayidx3 = getelementptr inbounds i32, ptr %arrayidx, i64 %indvar, !dbg !21
+  %2 = load i32, ptr %arrayidx3, align 4, !dbg !21
   %cmp = icmp slt i32 %inc, %2, !dbg !21
   %indvar.next = add i64 %indvar, 1, !dbg !21
   br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge, !dbg !21

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportLoopHasNoExit.ll b/polly/test/ScopDetectionDiagnostics/ReportLoopHasNoExit.ll
index 0a9305a200c23..5dbeaded45c90 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportLoopHasNoExit.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportLoopHasNoExit.ll
@@ -24,26 +24,26 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @func(i32 %param0, i32 %N, i32* %A) #0 !dbg !6 {
+define void @func(i32 %param0, i32 %N, ptr %A) #0 !dbg !6 {
 entry:
   %param0.addr = alloca i32, align 4
   %N.addr = alloca i32, align 4
-  %A.addr = alloca i32*, align 8
+  %A.addr = alloca ptr, align 8
   %i = alloca i32, align 4
-  store i32 %param0, i32* %param0.addr, align 4
-  store i32 %N, i32* %N.addr, align 4
-  store i32* %A, i32** %A.addr, align 8
-  store i32 0, i32* %i, align 4
+  store i32 %param0, ptr %param0.addr, align 4
+  store i32 %N, ptr %N.addr, align 4
+  store ptr %A, ptr %A.addr, align 8
+  store i32 0, ptr %i, align 4
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
-  %0 = load i32, i32* %i, align 4
-  %1 = load i32, i32* %N.addr, align 4
+  %0 = load i32, ptr %i, align 4
+  %1 = load i32, ptr %N.addr, align 4
   %cmp = icmp slt i32 %0, %1
   br i1 %cmp, label %for.body, label %for.end, !dbg !27
 
 for.body:                                         ; preds = %for.cond
-  %2 = load i32, i32* %param0.addr, align 4
+  %2 = load i32, ptr %param0.addr, align 4
   %tobool = icmp ne i32 %2, 0
   br i1 %tobool, label %if.then, label %if.else
 
@@ -51,28 +51,28 @@ if.then:                                          ; preds = %for.body
   br label %while.body
 
 while.body:                                       ; preds = %if.then, %while.body
-  %3 = load i32, i32* %i, align 4
+  %3 = load i32, ptr %i, align 4
   %idxprom = sext i32 %3 to i64
-  %4 = load i32*, i32** %A.addr, align 8
-  %arrayidx = getelementptr inbounds i32, i32* %4, i64 %idxprom
-  store i32 1, i32* %arrayidx, align 4
+  %4 = load ptr, ptr %A.addr, align 8
+  %arrayidx = getelementptr inbounds i32, ptr %4, i64 %idxprom
+  store i32 1, ptr %arrayidx, align 4
   br label %while.body, !dbg !37
 
 if.else:                                          ; preds = %for.body
-  %5 = load i32, i32* %i, align 4
+  %5 = load i32, ptr %i, align 4
   %idxprom1 = sext i32 %5 to i64
-  %6 = load i32*, i32** %A.addr, align 8
-  %arrayidx2 = getelementptr inbounds i32, i32* %6, i64 %idxprom1
-  store i32 2, i32* %arrayidx2, align 4
+  %6 = load ptr, ptr %A.addr, align 8
+  %arrayidx2 = getelementptr inbounds i32, ptr %6, i64 %idxprom1
+  store i32 2, ptr %arrayidx2, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end
-  %7 = load i32, i32* %i, align 4
+  %7 = load i32, ptr %i, align 4
   %inc = add nsw i32 %7, 1
-  store i32 %inc, i32* %i, align 4
+  store i32 %inc, ptr %i, align 4
   br label %for.cond
 
 for.end:                                          ; preds = %for.cond

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportMultipleNonAffineAccesses.ll b/polly/test/ScopDetectionDiagnostics/ReportMultipleNonAffineAccesses.ll
index 1b9ffabb2325f..634b63e6d44d1 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportMultipleNonAffineAccesses.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportMultipleNonAffineAccesses.ll
@@ -57,7 +57,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @manyaccesses(float* noalias %A, i64 %n, float* noalias %B) !dbg !4 {
+define void @manyaccesses(ptr noalias %A, i64 %n, ptr noalias %B) !dbg !4 {
 entry:
   br label %entry.split
 
@@ -69,28 +69,28 @@ for.body:                                         ; preds = %entry.split, %for.b
   %tmp3 = phi i64 [ 0, %entry.split ], [ %tmp14, %for.body ], !dbg !15
   %mul = mul i64 %tmp3, 2, !dbg !17
   %tmp4 = mul i64 %tmp, %tmp3, !dbg !18
-  %arrayidx8 = getelementptr float, float* %B, i64 %tmp4, !dbg !19
+  %arrayidx8 = getelementptr float, ptr %B, i64 %tmp4, !dbg !19
   %mul9 = mul i64 %n, %tmp3, !dbg !15
-  %arrayidx12 = getelementptr float, float* %B, i64 %mul9, !dbg !20
-  %arrayidx15 = getelementptr float, float* %B, i64 %tmp3, !dbg !21
+  %arrayidx12 = getelementptr float, ptr %B, i64 %mul9, !dbg !20
+  %arrayidx15 = getelementptr float, ptr %B, i64 %tmp3, !dbg !21
   %mul1 = mul nsw i64 %mul, %tmp3, !dbg !17
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %mul1, !dbg !22
-  %tmp5 = load float, float* %arrayidx, align 4, !dbg !22
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %mul1, !dbg !22
+  %tmp5 = load float, ptr %arrayidx, align 4, !dbg !22
   %mul3 = mul nsw i64 %mul, %tmp3, !dbg !27
   %add1 = or i64 %mul3, 1, !dbg !27
-  %arrayidx4 = getelementptr inbounds float, float* %A, i64 %add1, !dbg !28
-  %tmp6 = load float, float* %arrayidx4, align 4, !dbg !28
-  %tmp7 = load float, float* %B, align 4, !dbg !29
-  %tmp8 = load float, float* %arrayidx8, align 4, !dbg !19
+  %arrayidx4 = getelementptr inbounds float, ptr %A, i64 %add1, !dbg !28
+  %tmp6 = load float, ptr %arrayidx4, align 4, !dbg !28
+  %tmp7 = load float, ptr %B, align 4, !dbg !29
+  %tmp8 = load float, ptr %arrayidx8, align 4, !dbg !19
   %tmp9 = mul i64 %mul9, %tmp3, !dbg !15
   %arrayidx10.sum = add i64 %tmp9, %tmp3, !dbg !15
-  %arrayidx11 = getelementptr inbounds float, float* %B, i64 %arrayidx10.sum, !dbg !15
-  %tmp10 = load float, float* %arrayidx11, align 4, !dbg !15
-  %tmp11 = load float, float* %arrayidx12, align 4, !dbg !20
-  %tmp12 = load float, float* %arrayidx15, align 4, !dbg !21
+  %arrayidx11 = getelementptr inbounds float, ptr %B, i64 %arrayidx10.sum, !dbg !15
+  %tmp10 = load float, ptr %arrayidx11, align 4, !dbg !15
+  %tmp11 = load float, ptr %arrayidx12, align 4, !dbg !20
+  %tmp12 = load float, ptr %arrayidx15, align 4, !dbg !21
   %mul16 = mul nsw i64 %tmp3, %tmp3, !dbg !30
-  %arrayidx18 = getelementptr inbounds float, float* %B, i64 %mul16, !dbg !31
-  %tmp13 = load float, float* %arrayidx18, align 4, !dbg !31
+  %arrayidx18 = getelementptr inbounds float, ptr %B, i64 %mul16, !dbg !31
+  %tmp13 = load float, ptr %arrayidx18, align 4, !dbg !31
   %add19 = fadd float %tmp5, %tmp6, !dbg !32
   %add20 = fadd float %add19, %tmp7, !dbg !33
   %add21 = fadd float %add20, %tmp8, !dbg !34
@@ -99,8 +99,8 @@ for.body:                                         ; preds = %entry.split, %for.b
   %add24 = fadd float %add23, %tmp12, !dbg !37
   %add25 = fadd float %add24, %tmp13, !dbg !38
   %mul26 = mul nsw i64 %tmp3, %tmp3, !dbg !39
-  %arrayidx27 = getelementptr inbounds float, float* %A, i64 %mul26, !dbg !40
-  store float %add25, float* %arrayidx27, align 4, !dbg !40
+  %arrayidx27 = getelementptr inbounds float, ptr %A, i64 %mul26, !dbg !40
+  store float %add25, ptr %arrayidx27, align 4, !dbg !40
   %tmp14 = add nsw i64 %tmp3, 1, !dbg !41
   %exitcond = icmp ne i64 %tmp14, 1024, !dbg !10
   br i1 %exitcond, label %for.body, label %for.end, !dbg !10

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportNonAffineAccess-01.ll b/polly/test/ScopDetectionDiagnostics/ReportNonAffineAccess-01.ll
index 27fca8dc96be0..23d8c9c061c9b 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportNonAffineAccess-01.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportNonAffineAccess-01.ll
@@ -12,12 +12,12 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) !dbg !4 {
+define void @f(ptr %A) !dbg !4 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  tail call void @llvm.dbg.value(metadata i32* %A, i64 0, metadata !13, metadata !DIExpression()), !dbg !14
+  tail call void @llvm.dbg.value(metadata ptr %A, i64 0, metadata !13, metadata !DIExpression()), !dbg !14
   tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !16, metadata !DIExpression()), !dbg !18
   br label %for.body, !dbg !19
 
@@ -25,8 +25,8 @@ for.body:                                         ; preds = %entry.split, %for.b
   %0 = phi i32 [ 0, %entry.split ], [ %1, %for.body ], !dbg !20
   %mul = mul nsw i32 %0, %0, !dbg !20
   %idxprom1 = zext i32 %mul to i64, !dbg !20
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom1, !dbg !20
-  store i32 0, i32* %arrayidx, align 4, !dbg !20
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom1, !dbg !20
+  store i32 0, ptr %arrayidx, align 4, !dbg !20
   %1 = add nsw i32 %0, 1, !dbg !21
   tail call void @llvm.dbg.value(metadata i32 %1, i64 0, metadata !16, metadata !DIExpression()), !dbg !18
   %exitcond = icmp ne i32 %1, 42, !dbg !19

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportUnprofitable.ll b/polly/test/ScopDetectionDiagnostics/ReportUnprofitable.ll
index d4edc827d5749..d35b7a28ba89c 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportUnprofitable.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportUnprofitable.ll
@@ -76,9 +76,9 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 
 ; Function Attrs: nounwind uwtable
-define void @onlyWrite(float* %A) #0 !dbg !4 {
+define void @onlyWrite(ptr %A) #0 !dbg !4 {
 entry:
-  call void @llvm.dbg.value(metadata float* %A, i64 0, metadata !14, metadata !15), !dbg !16
+  call void @llvm.dbg.value(metadata ptr %A, i64 0, metadata !14, metadata !15), !dbg !16
   call void @llvm.dbg.value(metadata i64 0, i64 0, metadata !17, metadata !15), !dbg !20
   br label %for.cond, !dbg !21
 
@@ -88,8 +88,8 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end, !dbg !22
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0, !dbg !23
-  store float 0.000000e+00, float* %arrayidx, align 4, !dbg !25
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0, !dbg !23
+  store float 0.000000e+00, ptr %arrayidx, align 4, !dbg !25
   br label %for.inc, !dbg !23
 
 for.inc:                                          ; preds = %for.body
@@ -105,9 +105,9 @@ for.end:                                          ; preds = %for.cond
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
 ; Function Attrs: nounwind uwtable
-define void @onlyRead(float* %A) #0 !dbg !10 {
+define void @onlyRead(ptr %A) #0 !dbg !10 {
 entry:
-  call void @llvm.dbg.value(metadata float* %A, i64 0, metadata !29, metadata !15), !dbg !30
+  call void @llvm.dbg.value(metadata ptr %A, i64 0, metadata !29, metadata !15), !dbg !30
   call void @llvm.dbg.value(metadata i64 0, i64 0, metadata !31, metadata !15), !dbg !33
   br label %for.cond, !dbg !34
 
@@ -117,8 +117,8 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end, !dbg !35
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0, !dbg !36
-  %val = load float, float* %arrayidx, align 4, !dbg !38
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0, !dbg !36
+  %val = load float, ptr %arrayidx, align 4, !dbg !38
   br label %for.inc, !dbg !36
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportUnreachableInExit.ll b/polly/test/ScopDetectionDiagnostics/ReportUnreachableInExit.ll
index 39908a0256e55..6c868db78ce7e 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportUnreachableInExit.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportUnreachableInExit.ll
@@ -10,15 +10,15 @@
 
 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"
 
-define void @f(i64* %A, i64 %N) nounwind {
+define void @f(ptr %A, i64 %N) nounwind {
 entry:
   fence seq_cst
   br label %for.i
 
 for.i:
   %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %for.i ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar
-  store i64 %indvar, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar
+  store i64 %indvar, ptr %scevgep
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %N
   br i1 %exitcond, label %return, label %for.i

diff  --git a/polly/test/ScopDetectionDiagnostics/ReportVariantBasePtr-01.ll b/polly/test/ScopDetectionDiagnostics/ReportVariantBasePtr-01.ll
index b3f152db901b7..a82f56b7a5fa2 100644
--- a/polly/test/ScopDetectionDiagnostics/ReportVariantBasePtr-01.ll
+++ b/polly/test/ScopDetectionDiagnostics/ReportVariantBasePtr-01.ll
@@ -19,36 +19,36 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.b = type { double** }
+%struct.b = type { ptr }
 
-define void @a(%struct.b* nocapture readonly %A) #0 !dbg !4 {
+define void @a(ptr nocapture readonly %A) #0 !dbg !4 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  tail call void @llvm.dbg.value(metadata %struct.b* %A, i64 0, metadata !16, metadata !DIExpression()), !dbg !23
+  tail call void @llvm.dbg.value(metadata ptr %A, i64 0, metadata !16, metadata !DIExpression()), !dbg !23
   tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !17, metadata !DIExpression()), !dbg !25
   br label %for.body, !dbg !27
 
 for.body:                                         ; preds = %for.body, %entry.split
   %indvar4 = phi i64 [ %indvar.next, %for.body ], [ 0, %entry.split ]
-  %b = getelementptr inbounds %struct.b, %struct.b* %A, i64 %indvar4, i32 0, !dbg !26
+  %b = getelementptr inbounds %struct.b, ptr %A, i64 %indvar4, i32 0, !dbg !26
   %0 = mul i64 %indvar4, 4, !dbg !26
   %1 = add i64 %0, 3, !dbg !26
   %2 = add i64 %0, 2, !dbg !26
   %3 = add i64 %0, 1, !dbg !26
-  %4 = load double**, double*** %b, align 8, !dbg !26, !tbaa !28
-  %arrayidx = getelementptr double*, double** %4, i64 %0, !dbg !26
-  store double* null, double** %arrayidx, align 8, !dbg !26, !tbaa !33
-  %5 = load double**, double*** %b, align 8, !dbg !26, !tbaa !28
-  %arrayidx.1 = getelementptr double*, double** %5, i64 %3, !dbg !26
-  store double* null, double** %arrayidx.1, align 8, !dbg !26, !tbaa !33
-  %6 = load double**, double*** %b, align 8, !dbg !26, !tbaa !28
-  %arrayidx.2 = getelementptr double*, double** %6, i64 %2, !dbg !26
-  store double* null, double** %arrayidx.2, align 8, !dbg !26, !tbaa !33
-  %7 = load double**, double*** %b, align 8, !dbg !26, !tbaa !28
-  %arrayidx.3 = getelementptr double*, double** %7, i64 %1, !dbg !26
-  store double* null, double** %arrayidx.3, align 8, !dbg !26, !tbaa !33
+  %4 = load ptr, ptr %b, align 8, !dbg !26, !tbaa !28
+  %arrayidx = getelementptr ptr, ptr %4, i64 %0, !dbg !26
+  store ptr null, ptr %arrayidx, align 8, !dbg !26, !tbaa !33
+  %5 = load ptr, ptr %b, align 8, !dbg !26, !tbaa !28
+  %arrayidx.1 = getelementptr ptr, ptr %5, i64 %3, !dbg !26
+  store ptr null, ptr %arrayidx.1, align 8, !dbg !26, !tbaa !33
+  %6 = load ptr, ptr %b, align 8, !dbg !26, !tbaa !28
+  %arrayidx.2 = getelementptr ptr, ptr %6, i64 %2, !dbg !26
+  store ptr null, ptr %arrayidx.2, align 8, !dbg !26, !tbaa !33
+  %7 = load ptr, ptr %b, align 8, !dbg !26, !tbaa !28
+  %arrayidx.3 = getelementptr ptr, ptr %7, i64 %1, !dbg !26
+  store ptr null, ptr %arrayidx.3, align 8, !dbg !26, !tbaa !33
   %indvar.next = add i64 %indvar4, 1, !dbg !27
   %exitcond = icmp eq i64 %indvar.next, 8, !dbg !27
   br i1 %exitcond, label %for.end, label %for.body, !dbg !27

diff  --git a/polly/test/ScopDetectionDiagnostics/loop_has_multiple_exits.ll b/polly/test/ScopDetectionDiagnostics/loop_has_multiple_exits.ll
index c34a09f9f2241..7661bd004f5c0 100644
--- a/polly/test/ScopDetectionDiagnostics/loop_has_multiple_exits.ll
+++ b/polly/test/ScopDetectionDiagnostics/loop_has_multiple_exits.ll
@@ -9,21 +9,21 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @encode_line(i8* nocapture readonly %input, i32 %offset, i32 %octets, i8* nocapture %line) !dbg !9 {
+define void @encode_line(ptr nocapture readonly %input, i32 %offset, i32 %octets, ptr nocapture %line) !dbg !9 {
 entry:
   br label %entry.split, !dbg !26
 
 entry.split:                                      ; preds = %entry
-  call void @llvm.dbg.value(metadata i8* %input, metadata !17, metadata !DIExpression()), !dbg !26
+  call void @llvm.dbg.value(metadata ptr %input, metadata !17, metadata !DIExpression()), !dbg !26
   call void @llvm.dbg.value(metadata i32 %offset, metadata !18, metadata !DIExpression()), !dbg !27
   call void @llvm.dbg.value(metadata i32 %octets, metadata !19, metadata !DIExpression()), !dbg !28
-  call void @llvm.dbg.value(metadata i8* %line, metadata !20, metadata !DIExpression()), !dbg !29
+  call void @llvm.dbg.value(metadata ptr %line, metadata !20, metadata !DIExpression()), !dbg !29
   call void @llvm.dbg.value(metadata i32 0, metadata !21, metadata !DIExpression()), !dbg !30
   %conv = trunc i32 %octets to i8, !dbg !31
   call void @llvm.dbg.value(metadata i8 %conv, metadata !32, metadata !DIExpression()), !dbg !37
   %tmp = and i8 %conv, 63, !dbg !39
   %addconv.i = add nuw nsw i8 %tmp, 32, !dbg !40
-  store i8 %addconv.i, i8* %line, align 1, !dbg !41, !tbaa !42
+  store i8 %addconv.i, ptr %line, align 1, !dbg !41, !tbaa !42
   call void @llvm.dbg.value(metadata i32 1, metadata !21, metadata !DIExpression()), !dbg !30
   call void @llvm.dbg.value(metadata i32 %offset, metadata !18, metadata !DIExpression()), !dbg !27
   call void @llvm.dbg.value(metadata i32 %octets, metadata !19, metadata !DIExpression()), !dbg !28
@@ -51,8 +51,8 @@ if.else:                                          ; preds = %for.body
   br label %for.end
 
 if.then54:                                        ; No predecessors!
-  %arrayidx56 = getelementptr inbounds i8, i8* %input, i64 %indvars.iv, !dbg !50
-  %tmp2 = load i8, i8* %arrayidx56, align 1, !dbg !50, !tbaa !42
+  %arrayidx56 = getelementptr inbounds i8, ptr %input, i64 %indvars.iv, !dbg !50
+  %tmp2 = load i8, ptr %arrayidx56, align 1, !dbg !50, !tbaa !42
   %tmp3 = lshr i8 %tmp2, 2, !dbg !54
   call void @llvm.dbg.value(metadata i8 %tmp2, metadata !32, metadata !DIExpression(DW_OP_constu, 2, DW_OP_shra, DW_OP_stack_value)), !dbg !55
   %addconv.i210 = add nuw nsw i8 %tmp3, 32, !dbg !57
@@ -60,9 +60,9 @@ if.then54:                                        ; No predecessors!
   %inc62 = add nuw nsw i32 %loffs.0223, 1, !dbg !59
   call void @llvm.dbg.value(metadata i32 %inc62, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp4 = zext i32 %loffs.0223 to i64, !dbg !60
-  %arrayidx64 = getelementptr inbounds i8, i8* %line, i64 %tmp4, !dbg !60
-  store i8 %addconv.i210, i8* %arrayidx64, align 1, !dbg !61, !tbaa !42
-  %tmp5 = load i8, i8* %arrayidx56, align 1, !dbg !62, !tbaa !42
+  %arrayidx64 = getelementptr inbounds i8, ptr %line, i64 %tmp4, !dbg !60
+  store i8 %addconv.i210, ptr %arrayidx64, align 1, !dbg !61, !tbaa !42
+  %tmp5 = load i8, ptr %arrayidx56, align 1, !dbg !62, !tbaa !42
   %shl68 = shl i8 %tmp5, 4, !dbg !63
   call void @llvm.dbg.value(metadata i8 %shl68, metadata !32, metadata !DIExpression()), !dbg !64
   %tmp6 = and i8 %shl68, 48, !dbg !66
@@ -71,23 +71,23 @@ if.then54:                                        ; No predecessors!
   %inc72 = add nuw nsw i32 %loffs.0223, 2, !dbg !68
   call void @llvm.dbg.value(metadata i32 %inc72, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp7 = zext i32 %inc62 to i64, !dbg !69
-  %arrayidx74 = getelementptr inbounds i8, i8* %line, i64 %tmp7, !dbg !69
-  store i8 %addconv.i208, i8* %arrayidx74, align 1, !dbg !70, !tbaa !42
+  %arrayidx74 = getelementptr inbounds i8, ptr %line, i64 %tmp7, !dbg !69
+  store i8 %addconv.i208, ptr %arrayidx74, align 1, !dbg !70, !tbaa !42
   %inc75 = add nuw nsw i32 %loffs.0223, 3, !dbg !71
   call void @llvm.dbg.value(metadata i32 %inc75, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp8 = zext i32 %inc72 to i64, !dbg !72
-  %arrayidx77 = getelementptr inbounds i8, i8* %line, i64 %tmp8, !dbg !72
-  store i8 61, i8* %arrayidx77, align 1, !dbg !73, !tbaa !42
+  %arrayidx77 = getelementptr inbounds i8, ptr %line, i64 %tmp8, !dbg !72
+  store i8 61, ptr %arrayidx77, align 1, !dbg !73, !tbaa !42
   %inc78 = add nuw nsw i32 %loffs.0223, 4, !dbg !74
   call void @llvm.dbg.value(metadata i32 %inc78, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp9 = zext i32 %inc75 to i64, !dbg !75
-  %arrayidx80 = getelementptr inbounds i8, i8* %line, i64 %tmp9, !dbg !75
-  store i8 61, i8* %arrayidx80, align 1, !dbg !76, !tbaa !42
+  %arrayidx80 = getelementptr inbounds i8, ptr %line, i64 %tmp9, !dbg !75
+  store i8 61, ptr %arrayidx80, align 1, !dbg !76, !tbaa !42
   br label %for.end, !dbg !77
 
 if.then84:                                        ; No predecessors!
-  %arrayidx86 = getelementptr inbounds i8, i8* %input, i64 %indvars.iv, !dbg !78
-  %tmp10 = load i8, i8* %arrayidx86, align 1, !dbg !78, !tbaa !42
+  %arrayidx86 = getelementptr inbounds i8, ptr %input, i64 %indvars.iv, !dbg !78
+  %tmp10 = load i8, ptr %arrayidx86, align 1, !dbg !78, !tbaa !42
   %tmp11 = lshr i8 %tmp10, 2, !dbg !82
   call void @llvm.dbg.value(metadata i8 %tmp10, metadata !32, metadata !DIExpression(DW_OP_constu, 2, DW_OP_shra, DW_OP_stack_value)), !dbg !83
   %addconv.i206 = add nuw nsw i8 %tmp11, 32, !dbg !85
@@ -95,13 +95,13 @@ if.then84:                                        ; No predecessors!
   %inc92 = add nuw nsw i32 %loffs.0223, 1, !dbg !86
   call void @llvm.dbg.value(metadata i32 %inc92, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp12 = zext i32 %loffs.0223 to i64, !dbg !87
-  %arrayidx94 = getelementptr inbounds i8, i8* %line, i64 %tmp12, !dbg !87
-  store i8 %addconv.i206, i8* %arrayidx94, align 1, !dbg !88, !tbaa !42
-  %tmp13 = load i8, i8* %arrayidx86, align 1, !dbg !89, !tbaa !42
+  %arrayidx94 = getelementptr inbounds i8, ptr %line, i64 %tmp12, !dbg !87
+  store i8 %addconv.i206, ptr %arrayidx94, align 1, !dbg !88, !tbaa !42
+  %tmp13 = load i8, ptr %arrayidx86, align 1, !dbg !89, !tbaa !42
   %shl98 = shl i8 %tmp13, 4, !dbg !90
   %tmp14 = add nsw i64 %indvars.iv, 1, !dbg !91
-  %arrayidx101 = getelementptr inbounds i8, i8* %input, i64 %tmp14, !dbg !92
-  %tmp15 = load i8, i8* %arrayidx101, align 1, !dbg !92, !tbaa !42
+  %arrayidx101 = getelementptr inbounds i8, ptr %input, i64 %tmp14, !dbg !92
+  %tmp15 = load i8, ptr %arrayidx101, align 1, !dbg !92, !tbaa !42
   %tmp16 = ashr i8 %tmp15, 4, !dbg !93
   %or104 = or i8 %tmp16, %shl98, !dbg !94
   call void @llvm.dbg.value(metadata i8 %or104, metadata !32, metadata !DIExpression()), !dbg !95
@@ -111,9 +111,9 @@ if.then84:                                        ; No predecessors!
   %inc108 = add nuw nsw i32 %loffs.0223, 2, !dbg !99
   call void @llvm.dbg.value(metadata i32 %inc108, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp18 = zext i32 %inc92 to i64, !dbg !100
-  %arrayidx110 = getelementptr inbounds i8, i8* %line, i64 %tmp18, !dbg !100
-  store i8 %addconv.i204, i8* %arrayidx110, align 1, !dbg !101, !tbaa !42
-  %tmp19 = load i8, i8* %arrayidx101, align 1, !dbg !102, !tbaa !42
+  %arrayidx110 = getelementptr inbounds i8, ptr %line, i64 %tmp18, !dbg !100
+  store i8 %addconv.i204, ptr %arrayidx110, align 1, !dbg !101, !tbaa !42
+  %tmp19 = load i8, ptr %arrayidx101, align 1, !dbg !102, !tbaa !42
   %shl115 = shl i8 %tmp19, 2, !dbg !103
   call void @llvm.dbg.value(metadata i8 %shl115, metadata !32, metadata !DIExpression()), !dbg !104
   %tmp20 = and i8 %shl115, 60, !dbg !106
@@ -122,18 +122,18 @@ if.then84:                                        ; No predecessors!
   %inc119 = add nuw nsw i32 %loffs.0223, 3, !dbg !108
   call void @llvm.dbg.value(metadata i32 %inc119, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp21 = zext i32 %inc108 to i64, !dbg !109
-  %arrayidx121 = getelementptr inbounds i8, i8* %line, i64 %tmp21, !dbg !109
-  store i8 %addconv.i202, i8* %arrayidx121, align 1, !dbg !110, !tbaa !42
+  %arrayidx121 = getelementptr inbounds i8, ptr %line, i64 %tmp21, !dbg !109
+  store i8 %addconv.i202, ptr %arrayidx121, align 1, !dbg !110, !tbaa !42
   %inc122 = add nuw nsw i32 %loffs.0223, 4, !dbg !111
   call void @llvm.dbg.value(metadata i32 %inc122, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp22 = zext i32 %inc119 to i64, !dbg !112
-  %arrayidx124 = getelementptr inbounds i8, i8* %line, i64 %tmp22, !dbg !112
-  store i8 61, i8* %arrayidx124, align 1, !dbg !113, !tbaa !42
+  %arrayidx124 = getelementptr inbounds i8, ptr %line, i64 %tmp22, !dbg !112
+  store i8 61, ptr %arrayidx124, align 1, !dbg !113, !tbaa !42
   br label %for.end, !dbg !114
 
 if.end126:                                        ; preds = %for.body
-  %arrayidx6 = getelementptr inbounds i8, i8* %input, i64 %indvars.iv, !dbg !115
-  %tmp23 = load i8, i8* %arrayidx6, align 1, !dbg !115, !tbaa !42
+  %arrayidx6 = getelementptr inbounds i8, ptr %input, i64 %indvars.iv, !dbg !115
+  %tmp23 = load i8, ptr %arrayidx6, align 1, !dbg !115, !tbaa !42
   %tmp24 = lshr i8 %tmp23, 2, !dbg !117
   call void @llvm.dbg.value(metadata i8 %tmp23, metadata !32, metadata !DIExpression(DW_OP_constu, 2, DW_OP_shra, DW_OP_stack_value)), !dbg !118
   %addconv.i218 = add nuw nsw i8 %tmp24, 32, !dbg !120
@@ -141,13 +141,13 @@ if.end126:                                        ; preds = %for.body
   %inc11 = add nuw nsw i32 %loffs.0223, 1, !dbg !121
   call void @llvm.dbg.value(metadata i32 %inc11, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp25 = zext i32 %loffs.0223 to i64, !dbg !122
-  %arrayidx13 = getelementptr inbounds i8, i8* %line, i64 %tmp25, !dbg !122
-  store i8 %addconv.i218, i8* %arrayidx13, align 1, !dbg !123, !tbaa !42
-  %tmp26 = load i8, i8* %arrayidx6, align 1, !dbg !124, !tbaa !42
+  %arrayidx13 = getelementptr inbounds i8, ptr %line, i64 %tmp25, !dbg !122
+  store i8 %addconv.i218, ptr %arrayidx13, align 1, !dbg !123, !tbaa !42
+  %tmp26 = load i8, ptr %arrayidx6, align 1, !dbg !124, !tbaa !42
   %shl = shl i8 %tmp26, 4, !dbg !125
   %tmp27 = add nsw i64 %indvars.iv, 1, !dbg !126
-  %arrayidx18 = getelementptr inbounds i8, i8* %input, i64 %tmp27, !dbg !127
-  %tmp28 = load i8, i8* %arrayidx18, align 1, !dbg !127, !tbaa !42
+  %arrayidx18 = getelementptr inbounds i8, ptr %input, i64 %tmp27, !dbg !127
+  %tmp28 = load i8, ptr %arrayidx18, align 1, !dbg !127, !tbaa !42
   %tmp29 = ashr i8 %tmp28, 4, !dbg !128
   %or = or i8 %tmp29, %shl, !dbg !129
   call void @llvm.dbg.value(metadata i8 %or, metadata !32, metadata !DIExpression()), !dbg !130
@@ -157,13 +157,13 @@ if.end126:                                        ; preds = %for.body
   %inc24 = add nuw nsw i32 %loffs.0223, 2, !dbg !134
   call void @llvm.dbg.value(metadata i32 %inc24, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp31 = zext i32 %inc11 to i64, !dbg !135
-  %arrayidx26 = getelementptr inbounds i8, i8* %line, i64 %tmp31, !dbg !135
-  store i8 %addconv.i216, i8* %arrayidx26, align 1, !dbg !136, !tbaa !42
-  %tmp32 = load i8, i8* %arrayidx18, align 1, !dbg !137, !tbaa !42
+  %arrayidx26 = getelementptr inbounds i8, ptr %line, i64 %tmp31, !dbg !135
+  store i8 %addconv.i216, ptr %arrayidx26, align 1, !dbg !136, !tbaa !42
+  %tmp32 = load i8, ptr %arrayidx18, align 1, !dbg !137, !tbaa !42
   %shl31 = shl i8 %tmp32, 2, !dbg !138
   %tmp33 = add nsw i64 %indvars.iv, 2, !dbg !139
-  %arrayidx34 = getelementptr inbounds i8, i8* %input, i64 %tmp33, !dbg !140
-  %tmp34 = load i8, i8* %arrayidx34, align 1, !dbg !140, !tbaa !42
+  %arrayidx34 = getelementptr inbounds i8, ptr %input, i64 %tmp33, !dbg !140
+  %tmp34 = load i8, ptr %arrayidx34, align 1, !dbg !140, !tbaa !42
   %tmp35 = ashr i8 %tmp34, 6, !dbg !141
   %or37 = or i8 %tmp35, %shl31, !dbg !142
   call void @llvm.dbg.value(metadata i8 %or37, metadata !32, metadata !DIExpression()), !dbg !143
@@ -173,9 +173,9 @@ if.end126:                                        ; preds = %for.body
   %inc41 = add nuw nsw i32 %loffs.0223, 3, !dbg !147
   call void @llvm.dbg.value(metadata i32 %inc41, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp37 = zext i32 %inc24 to i64, !dbg !148
-  %arrayidx43 = getelementptr inbounds i8, i8* %line, i64 %tmp37, !dbg !148
-  store i8 %addconv.i214, i8* %arrayidx43, align 1, !dbg !149, !tbaa !42
-  %tmp38 = load i8, i8* %arrayidx34, align 1, !dbg !150, !tbaa !42
+  %arrayidx43 = getelementptr inbounds i8, ptr %line, i64 %tmp37, !dbg !148
+  store i8 %addconv.i214, ptr %arrayidx43, align 1, !dbg !149, !tbaa !42
+  %tmp38 = load i8, ptr %arrayidx34, align 1, !dbg !150, !tbaa !42
   call void @llvm.dbg.value(metadata i8 %tmp38, metadata !32, metadata !DIExpression()), !dbg !151
   %tmp39 = and i8 %tmp38, 63, !dbg !153
   %addconv.i212 = add nuw nsw i8 %tmp39, 32, !dbg !154
@@ -183,8 +183,8 @@ if.end126:                                        ; preds = %for.body
   %inc49 = add nuw nsw i32 %loffs.0223, 4, !dbg !155
   call void @llvm.dbg.value(metadata i32 %inc49, metadata !21, metadata !DIExpression()), !dbg !30
   %tmp40 = zext i32 %inc41 to i64, !dbg !156
-  %arrayidx51 = getelementptr inbounds i8, i8* %line, i64 %tmp40, !dbg !156
-  store i8 %addconv.i212, i8* %arrayidx51, align 1, !dbg !157, !tbaa !42
+  %arrayidx51 = getelementptr inbounds i8, ptr %line, i64 %tmp40, !dbg !156
+  store i8 %addconv.i212, ptr %arrayidx51, align 1, !dbg !157, !tbaa !42
   %indvars.iv.next = add nsw i64 %indvars.iv, 3, !dbg !158
   %sub = add nsw i32 %octets.addr.0221, -3, !dbg !159
   call void @llvm.dbg.value(metadata i32 %inc49, metadata !21, metadata !DIExpression()), !dbg !30
@@ -199,11 +199,11 @@ for.end:                                          ; preds = %if.end126, %if.then
   %inc128 = add nsw i32 %loffs.0.lcssa, 1, !dbg !162
   call void @llvm.dbg.value(metadata i32 %inc128, metadata !21, metadata !DIExpression()), !dbg !30
   %idxprom129 = sext i32 %loffs.0.lcssa to i64, !dbg !163
-  %arrayidx130 = getelementptr inbounds i8, i8* %line, i64 %idxprom129, !dbg !163
-  store i8 10, i8* %arrayidx130, align 1, !dbg !164, !tbaa !42
+  %arrayidx130 = getelementptr inbounds i8, ptr %line, i64 %idxprom129, !dbg !163
+  store i8 10, ptr %arrayidx130, align 1, !dbg !164, !tbaa !42
   %idxprom131 = sext i32 %inc128 to i64, !dbg !165
-  %arrayidx132 = getelementptr inbounds i8, i8* %line, i64 %idxprom131, !dbg !165
-  store i8 0, i8* %arrayidx132, align 1, !dbg !166, !tbaa !42
+  %arrayidx132 = getelementptr inbounds i8, ptr %line, i64 %idxprom131, !dbg !165
+  store i8 0, ptr %arrayidx132, align 1, !dbg !166, !tbaa !42
   ret void, !dbg !167
 }
 

diff  --git a/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll b/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll
index 0adaa358326de..667ed7d18ab5a 100644
--- a/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll
+++ b/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll
@@ -2,16 +2,16 @@
 
 ; CHECK: remark: <unknown>:0:0: Loop cannot be handled because not all latches are part of loop region.
 
-define void @foo(i8* %str0) {
+define void @foo(ptr %str0) {
 if.end32:
   br label %while.cond
 
 while.cond:
-  %str.1 = phi i8* [%str0, %if.end32], [%incdec.ptr58364, %lor.end], [%incdec.ptr58364, %while.cond]
-  %tmp5 = load i8, i8* %str.1, align 1
+  %str.1 = phi ptr [%str0, %if.end32], [%incdec.ptr58364, %lor.end], [%incdec.ptr58364, %while.cond]
+  %tmp5 = load i8, ptr %str.1, align 1
   %.off367 = add i8 %tmp5, -48
   %tmp6 = icmp ult i8 %.off367, 10
-  %incdec.ptr58364 = getelementptr inbounds i8, i8* %str.1, i64 1
+  %incdec.ptr58364 = getelementptr inbounds i8, ptr %str.1, i64 1
   br i1 %tmp6, label %while.cond, label %lor.end
 
 lor.end:

diff  --git a/polly/test/ScopInfo/20110312-Fail-without-basicaa.ll b/polly/test/ScopInfo/20110312-Fail-without-basicaa.ll
index 56a541d24c6f1..94dd5824777c0 100644
--- a/polly/test/ScopInfo/20110312-Fail-without-basicaa.ll
+++ b/polly/test/ScopInfo/20110312-Fail-without-basicaa.ll
@@ -8,16 +8,16 @@ entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  store float 0.000000e+00, float* %t.02.reg2mem
+  store float 0.000000e+00, ptr %t.02.reg2mem
   br label %for.body
 
 for.body:                                         ; preds = %for.body, %entry.split
   %j.01 = phi i32 [ 0, %entry.split ], [ %inc1, %for.body ]
-  %t.02.reload = load float, float* %t.02.reg2mem
+  %t.02.reload = load float, ptr %t.02.reg2mem
   %inc = fadd float %t.02.reload, 1.000000e+00
   %inc1 = add nsw i32 %j.01, 1
   %exitcond = icmp eq i32 %inc1, 5000001
-  store float %inc, float* %t.02.reg2mem
+  store float %inc, ptr %t.02.reg2mem
   br i1 %exitcond, label %for.end, label %for.body
 
 for.end:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/20111108-Parameter-not-detected.ll b/polly/test/ScopInfo/20111108-Parameter-not-detected.ll
index b88f6a89e94da..f295c8a57dcac 100644
--- a/polly/test/ScopInfo/20111108-Parameter-not-detected.ll
+++ b/polly/test/ScopInfo/20111108-Parameter-not-detected.ll
@@ -3,7 +3,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 declare void @foo()
 
-define i32 @main(i8* %A) nounwind uwtable {
+define i32 @main(ptr %A) nounwind uwtable {
 entry:
   br label %for.cond
 
@@ -28,8 +28,8 @@ for.body3:                                        ; preds = %for.cond1
   br i1 %cmp4, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body3
-  %arrayidx = getelementptr i8, i8* %A, i64 %indvar
-  store i8 5, i8* %arrayidx
+  %arrayidx = getelementptr i8, ptr %A, i64 %indvar
+  store i8 5, ptr %arrayidx
   br label %if.end
 
 if.end:                                           ; preds = %if.end.single_exit

diff  --git a/polly/test/ScopInfo/2012-03-16-Crash-because-of-unsigned-in-scev.ll b/polly/test/ScopInfo/2012-03-16-Crash-because-of-unsigned-in-scev.ll
index 92118538cce79..b55d635947e5e 100644
--- a/polly/test/ScopInfo/2012-03-16-Crash-because-of-unsigned-in-scev.ll
+++ b/polly/test/ScopInfo/2012-03-16-Crash-because-of-unsigned-in-scev.ll
@@ -4,12 +4,12 @@ target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:
 
 @array = external global [64 x i8], align 8
 
-define void @foo(i32* %A) nounwind {
+define void @foo(ptr %A) nounwind {
 entry:
   br label %if.then132
 
 if.then132:
-  %loaded = load i32, i32* %A
+  %loaded = load i32, ptr %A
   %0 = icmp ugt i32 %loaded, 10
   %umax = select i1 %0, i32 %loaded, i32 10
   br label %do.body
@@ -18,8 +18,8 @@ do.body:
   %indvar = phi i32 [ %3, %do.body ], [ 0, %if.then132 ]
   %1 = add i32 0, %umax
   %2 = sub i32 %1, %indvar
-  %arrayidx = getelementptr [64 x i8], [64 x i8]* @array, i32 0, i32 %2
-  store i8 1, i8* %arrayidx, align 1
+  %arrayidx = getelementptr [64 x i8], ptr @array, i32 0, i32 %2
+  store i8 1, ptr %arrayidx, align 1
   %3 = add i32 %indvar, 1
   %exitcond = icmp eq i32 %3, 20
   br i1 %exitcond, label %for.end, label %do.body

diff  --git a/polly/test/ScopInfo/2015-10-04-Crash-in-domain-generation.ll b/polly/test/ScopInfo/2015-10-04-Crash-in-domain-generation.ll
index c09266040571e..d4d931fd2e0cc 100644
--- a/polly/test/ScopInfo/2015-10-04-Crash-in-domain-generation.ll
+++ b/polly/test/ScopInfo/2015-10-04-Crash-in-domain-generation.ll
@@ -3,7 +3,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @kernel_reg_detect([6 x i32]* %path) {
+define void @kernel_reg_detect(ptr %path) {
 entry:
   br label %for.body.6
 
@@ -16,10 +16,8 @@ for.body.6:                                       ; preds = %for.inc.43, %for.bo
 for.inc.40:                                       ; preds = %for.inc.40, %for.body.6
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc.40 ], [ 0, %for.body.6 ]
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %arrayidx28 = getelementptr inbounds [6 x i32], [6 x i32]* %path, i64 0, i64 0
-  %tmp = load i32, i32* %arrayidx28, align 4
-  %arrayidx36 = getelementptr inbounds [6 x i32], [6 x i32]* %path, i64 0, i64 0
-  store i32 0, i32* %arrayidx36, align 4
+  %tmp = load i32, ptr %path, align 4
+  store i32 0, ptr %path, align 4
   %mul = mul i64 %indvars.iv, %indvars.iv
   %exitcond22 = icmp ne i64 %mul, 6
   br i1 %exitcond22, label %for.inc.40, label %for.inc.43

diff  --git a/polly/test/ScopInfo/Alias-0.ll b/polly/test/ScopInfo/Alias-0.ll
index 0f0c0447b08ff..0fc4ad91b7dbc 100644
--- a/polly/test/ScopInfo/Alias-0.ll
+++ b/polly/test/ScopInfo/Alias-0.ll
@@ -4,24 +4,24 @@
 
 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"
 
-define void @f(i32* nocapture %a, i32* nocapture %b) nounwind {
+define void @f(ptr nocapture %a, ptr nocapture %b) nounwind {
 bb.nph:
   %0 = tail call i32 (...) @rnd() nounwind       ; <i32> [#uses=1]
   %1 = icmp eq i32 %0, 0                          ; <i1> [#uses=1]
-  %iftmp.0.0 = select i1 %1, i32* %b, i32* %a     ; <i32*> [#uses=2]
+  %iftmp.0.0 = select i1 %1, ptr %b, ptr %a     ; <ptr> [#uses=2]
   br label %bb3
 
 bb3:                                              ; preds = %bb3, %bb.nph
   %i.06 = phi i64 [ 0, %bb.nph ], [ %tmp, %bb3 ]  ; <i64> [#uses=3]
-  %scevgep = getelementptr i32, i32* %a, i64 %i.06     ; <i32*> [#uses=1]
-  %scevgep7 = getelementptr i32, i32* %iftmp.0.0, i64 %i.06 ; <i32*> [#uses=1]
+  %scevgep = getelementptr i32, ptr %a, i64 %i.06     ; <ptr> [#uses=1]
+  %scevgep7 = getelementptr i32, ptr %iftmp.0.0, i64 %i.06 ; <ptr> [#uses=1]
   %tmp = add i64 %i.06, 1                         ; <i64> [#uses=3]
-  %scevgep8 = getelementptr i32, i32* %iftmp.0.0, i64 %tmp ; <i32*> [#uses=1]
-  %2 = load i32, i32* %scevgep, align 4                ; <i32> [#uses=1]
-  %3 = load i32, i32* %scevgep8, align 4               ; <i32> [#uses=1]
+  %scevgep8 = getelementptr i32, ptr %iftmp.0.0, i64 %tmp ; <ptr> [#uses=1]
+  %2 = load i32, ptr %scevgep, align 4                ; <i32> [#uses=1]
+  %3 = load i32, ptr %scevgep8, align 4               ; <i32> [#uses=1]
   %4 = shl i32 %3, 1                              ; <i32> [#uses=1]
   %5 = add nsw i32 %4, %2                         ; <i32> [#uses=1]
-  store i32 %5, i32* %scevgep7, align 4
+  store i32 %5, ptr %scevgep7, align 4
   %exitcond = icmp eq i64 %tmp, 64                ; <i1> [#uses=1]
   br i1 %exitcond, label %return, label %bb3
 

diff  --git a/polly/test/ScopInfo/Alias-1.ll b/polly/test/ScopInfo/Alias-1.ll
index a06511991c3ed..eab8c062f4ba2 100644
--- a/polly/test/ScopInfo/Alias-1.ll
+++ b/polly/test/ScopInfo/Alias-1.ll
@@ -4,25 +4,25 @@
 
 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"
 
-define void @f(i32* nocapture %a, i32* nocapture %b) nounwind {
+define void @f(ptr nocapture %a, ptr nocapture %b) nounwind {
 bb.nph:
   %0 = tail call i32 (...) @rnd() nounwind       ; <i32> [#uses=1]
   %1 = icmp eq i32 %0, 0                          ; <i1> [#uses=1]
-  %sel.b = getelementptr inbounds i32, i32* %b, i64 4
-  %iftmp.0.0 = select i1 %1, i32* %sel.b, i32* %a     ; <i32*> [#uses=2]
+  %sel.b = getelementptr inbounds i32, ptr %b, i64 4
+  %iftmp.0.0 = select i1 %1, ptr %sel.b, ptr %a     ; <ptr> [#uses=2]
   br label %bb3
 
 bb3:                                              ; preds = %bb3, %bb.nph
   %i.06 = phi i64 [ 0, %bb.nph ], [ %tmp, %bb3 ]  ; <i64> [#uses=3]
-  %scevgep = getelementptr i32, i32* %a, i64 %i.06     ; <i32*> [#uses=1]
-  %scevgep7 = getelementptr i32, i32* %iftmp.0.0, i64 %i.06 ; <i32*> [#uses=1]
+  %scevgep = getelementptr i32, ptr %a, i64 %i.06     ; <ptr> [#uses=1]
+  %scevgep7 = getelementptr i32, ptr %iftmp.0.0, i64 %i.06 ; <ptr> [#uses=1]
   %tmp = add i64 %i.06, 1                         ; <i64> [#uses=3]
-  %scevgep8 = getelementptr i32, i32* %iftmp.0.0, i64 %tmp ; <i32*> [#uses=1]
-  %2 = load i32, i32* %scevgep, align 4                ; <i32> [#uses=1]
-  %3 = load i32, i32* %scevgep8, align 4               ; <i32> [#uses=1]
+  %scevgep8 = getelementptr i32, ptr %iftmp.0.0, i64 %tmp ; <ptr> [#uses=1]
+  %2 = load i32, ptr %scevgep, align 4                ; <i32> [#uses=1]
+  %3 = load i32, ptr %scevgep8, align 4               ; <i32> [#uses=1]
   %4 = shl i32 %3, 1                              ; <i32> [#uses=1]
   %5 = add nsw i32 %4, %2                         ; <i32> [#uses=1]
-  store i32 %5, i32* %scevgep7, align 4
+  store i32 %5, ptr %scevgep7, align 4
   %exitcond = icmp eq i64 %tmp, 64                ; <i1> [#uses=1]
   br i1 %exitcond, label %return, label %bb3
 

diff  --git a/polly/test/ScopInfo/Alias-2.ll b/polly/test/ScopInfo/Alias-2.ll
index e007985e170b3..64f1e0bc919d5 100644
--- a/polly/test/ScopInfo/Alias-2.ll
+++ b/polly/test/ScopInfo/Alias-2.ll
@@ -4,26 +4,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"
 
-define void @f(i32** nocapture %ptrs, i64 %p0, i64 %p1, i64 %p2) nounwind {
+define void @f(ptr nocapture %ptrs, i64 %p0, i64 %p1, i64 %p2) nounwind {
 bb.nph:
-  %0 = getelementptr inbounds i32*, i32** %ptrs, i64 %p0 ; <i32**> [#uses=1]
-  %1 = load i32*, i32** %0, align 8                     ; <i32*> [#uses=1]
-  %2 = getelementptr inbounds i32*, i32** %ptrs, i64 %p1 ; <i32**> [#uses=1]
-  %3 = load i32*, i32** %2, align 8                     ; <i32*> [#uses=1]
-  %4 = getelementptr inbounds i32*, i32** %ptrs, i64 %p2 ; <i32**> [#uses=1]
-  %5 = load i32*, i32** %4, align 8                     ; <i32*> [#uses=1]
+  %0 = getelementptr inbounds ptr, ptr %ptrs, i64 %p0 ; <ptr> [#uses=1]
+  %1 = load ptr, ptr %0, align 8                     ; <ptr> [#uses=1]
+  %2 = getelementptr inbounds ptr, ptr %ptrs, i64 %p1 ; <ptr> [#uses=1]
+  %3 = load ptr, ptr %2, align 8                     ; <ptr> [#uses=1]
+  %4 = getelementptr inbounds ptr, ptr %ptrs, i64 %p2 ; <ptr> [#uses=1]
+  %5 = load ptr, ptr %4, align 8                     ; <ptr> [#uses=1]
   br label %bb
 
 bb:                                               ; preds = %bb, %bb.nph
   %i.03 = phi i64 [ 0, %bb.nph ], [ %tmp, %bb ]   ; <i64> [#uses=3]
-  %scevgep = getelementptr i32, i32* %3, i64 %i.03     ; <i32*> [#uses=1]
-  %scevgep4 = getelementptr i32, i32* %5, i64 %i.03    ; <i32*> [#uses=1]
+  %scevgep = getelementptr i32, ptr %3, i64 %i.03     ; <ptr> [#uses=1]
+  %scevgep4 = getelementptr i32, ptr %5, i64 %i.03    ; <ptr> [#uses=1]
   %tmp = add i64 %i.03, 1                         ; <i64> [#uses=3]
-  %scevgep5 = getelementptr i32, i32* %1, i64 %tmp     ; <i32*> [#uses=1]
-  %6 = load i32, i32* %scevgep, align 4                ; <i32> [#uses=1]
-  %7 = load i32, i32* %scevgep4, align 4               ; <i32> [#uses=1]
+  %scevgep5 = getelementptr i32, ptr %1, i64 %tmp     ; <ptr> [#uses=1]
+  %6 = load i32, ptr %scevgep, align 4                ; <i32> [#uses=1]
+  %7 = load i32, ptr %scevgep4, align 4               ; <i32> [#uses=1]
   %8 = add nsw i32 %7, %6                         ; <i32> [#uses=1]
-  store i32 %8, i32* %scevgep5, align 4
+  store i32 %8, ptr %scevgep5, align 4
   %exitcond = icmp eq i64 %tmp, 64                ; <i1> [#uses=1]
   br i1 %exitcond, label %return, label %bb
 

diff  --git a/polly/test/ScopInfo/Alias-3.ll b/polly/test/ScopInfo/Alias-3.ll
index e4d107c62c590..5e9b94e692bcc 100644
--- a/polly/test/ScopInfo/Alias-3.ll
+++ b/polly/test/ScopInfo/Alias-3.ll
@@ -4,17 +4,17 @@
 
 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"
 
-define void @f(i32* nocapture %a, i32* nocapture %b) nounwind {
+define void @f(ptr nocapture %a, ptr nocapture %b) nounwind {
 bb.nph:
   br label %bb
 
 bb:                                               ; preds = %bb, %bb.nph
   %i.03 = phi i64 [ 0, %bb.nph ], [ %2, %bb ]     ; <i64> [#uses=3]
-  %scevgep = getelementptr i32, i32* %b, i64 %i.03     ; <i32*> [#uses=1]
-  %scevgep4 = getelementptr i32, i32* %a, i64 %i.03    ; <i32*> [#uses=1]
-  %0 = load i32, i32* %scevgep, align 4                ; <i32> [#uses=1]
+  %scevgep = getelementptr i32, ptr %b, i64 %i.03     ; <ptr> [#uses=1]
+  %scevgep4 = getelementptr i32, ptr %a, i64 %i.03    ; <ptr> [#uses=1]
+  %0 = load i32, ptr %scevgep, align 4                ; <i32> [#uses=1]
   %1 = add nsw i32 %0, 2                          ; <i32> [#uses=1]
-  store i32 %1, i32* %scevgep4, align 4
+  store i32 %1, ptr %scevgep4, align 4
   %2 = add nsw i64 %i.03, 1                       ; <i64> [#uses=2]
   %exitcond = icmp eq i64 %2, 128                 ; <i1> [#uses=1]
   br i1 %exitcond, label %return, label %bb

diff  --git a/polly/test/ScopInfo/Alias-4.ll b/polly/test/ScopInfo/Alias-4.ll
index e1874063b7bcb..4d5a91abb96fb 100644
--- a/polly/test/ScopInfo/Alias-4.ll
+++ b/polly/test/ScopInfo/Alias-4.ll
@@ -4,17 +4,17 @@
 
 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"
 
-define void @f(i32* noalias nocapture %a, i32* noalias nocapture %b) nounwind {
+define void @f(ptr noalias nocapture %a, ptr noalias nocapture %b) nounwind {
 bb.nph:
   br label %bb
 
 bb:                                               ; preds = %bb, %bb.nph
   %i.03 = phi i64 [ 0, %bb.nph ], [ %2, %bb ]     ; <i64> [#uses=3]
-  %scevgep = getelementptr i32, i32* %b, i64 %i.03     ; <i32*> [#uses=1]
-  %scevgep4 = getelementptr i32, i32* %a, i64 %i.03    ; <i32*> [#uses=1]
-  %0 = load i32, i32* %scevgep, align 4                ; <i32> [#uses=1]
+  %scevgep = getelementptr i32, ptr %b, i64 %i.03     ; <ptr> [#uses=1]
+  %scevgep4 = getelementptr i32, ptr %a, i64 %i.03    ; <ptr> [#uses=1]
+  %0 = load i32, ptr %scevgep, align 4                ; <i32> [#uses=1]
   %1 = add nsw i32 %0, 2                          ; <i32> [#uses=1]
-  store i32 %1, i32* %scevgep4, align 4
+  store i32 %1, ptr %scevgep4, align 4
   %2 = add nsw i64 %i.03, 1                       ; <i64> [#uses=2]
   %exitcond = icmp eq i64 %2, 128                 ; <i1> [#uses=1]
   br i1 %exitcond, label %return, label %bb

diff  --git a/polly/test/ScopInfo/BoundChecks/single-loop.ll b/polly/test/ScopInfo/BoundChecks/single-loop.ll
index 24b5b35e41b1b..bc96c907afc9c 100644
--- a/polly/test/ScopInfo/BoundChecks/single-loop.ll
+++ b/polly/test/ScopInfo/BoundChecks/single-loop.ll
@@ -38,7 +38,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @foo(i64 %n, float* %A) #0 {
+define void @foo(i64 %n, ptr %A) #0 {
 entry:
   br label %for.cond
 
@@ -64,10 +64,10 @@ if.then.3:                                        ; preds = %if.end
 
 if.end.4:                                         ; preds = %if.end
   %conv = sitofp i64 %i.0 to float
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp = load float, ptr %arrayidx, align 4
   %add = fadd float %tmp, %conv
-  store float %add, float* %arrayidx, align 4
+  store float %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end.4

diff  --git a/polly/test/ScopInfo/BoundChecks/two-loops.ll b/polly/test/ScopInfo/BoundChecks/two-loops.ll
index b1e7e13047971..14e07f42a3aeb 100644
--- a/polly/test/ScopInfo/BoundChecks/two-loops.ll
+++ b/polly/test/ScopInfo/BoundChecks/two-loops.ll
@@ -35,7 +35,7 @@
 ; AST:     {  /* original code */ }
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n, float* %A) #0 {
+define void @foo(i64 %n, ptr %A) #0 {
 entry:
   br label %for.cond
 
@@ -69,10 +69,10 @@ if.then.6:                                        ; preds = %if.end
 
 if.end.7:                                         ; preds = %if.end
   %conv = sitofp i64 %i.0 to float
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp = load float, ptr %arrayidx, align 4
   %add = fadd float %tmp, %conv
-  store float %add, float* %arrayidx, align 4
+  store float %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end.7

diff  --git a/polly/test/ScopInfo/NonAffine/div_backedge.ll b/polly/test/ScopInfo/NonAffine/div_backedge.ll
index c89be9d721222..a6aca032ef626 100644
--- a/polly/test/ScopInfo/NonAffine/div_backedge.ll
+++ b/polly/test/ScopInfo/NonAffine/div_backedge.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A) {
+define void @foo(ptr %A) {
 entry:
   br label %for.cond
 
@@ -22,10 +22,10 @@ for.cond:                                         ; preds = %for.inc, %entry
   br label %for.body
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx0 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp0 = load float, float* %arrayidx0, align 4
+  %arrayidx0 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp0 = load float, ptr %arrayidx0, align 4
   %add0 = fadd float %tmp0, 2.000000e+00
-  store float %add0, float* %arrayidx0, align 4
+  store float %add0, ptr %arrayidx0, align 4
   %rem1 = sdiv i64 %i.0, 7
   %tobool = icmp eq i64 %rem1, 4
   br i1 %tobool, label %for.end, label %if.end

diff  --git a/polly/test/ScopInfo/NonAffine/div_domain.ll b/polly/test/ScopInfo/NonAffine/div_domain.ll
index 678467d4fcdea..f61c4eb459edd 100644
--- a/polly/test/ScopInfo/NonAffine/div_domain.ll
+++ b/polly/test/ScopInfo/NonAffine/div_domain.ll
@@ -31,7 +31,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A) {
+define void @foo(ptr %A) {
 entry:
   br label %for.cond
 
@@ -41,19 +41,19 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx0 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp0 = load float, float* %arrayidx0, align 4
+  %arrayidx0 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp0 = load float, ptr %arrayidx0, align 4
   %add0 = fadd float %tmp0, 2.000000e+00
-  store float %add0, float* %arrayidx0, align 4
+  store float %add0, ptr %arrayidx0, align 4
   %rem1 = sdiv i64 %i.0, 2
   %tobool = icmp ne i64 %rem1, 3
   br i1 %tobool, label %if.end, label %if.then
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp = load float, ptr %arrayidx, align 4
   %add = fadd float %tmp, 2.000000e+00
-  store float %add, float* %arrayidx, align 4
+  store float %add, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %for.body, %if.then

diff  --git a/polly/test/ScopInfo/NonAffine/invariant_loads_dependent_in_non_affine_region.ll b/polly/test/ScopInfo/NonAffine/invariant_loads_dependent_in_non_affine_region.ll
index 2cc9c4c8b0b61..f5d63dfb9d2c5 100644
--- a/polly/test/ScopInfo/NonAffine/invariant_loads_dependent_in_non_affine_region.ll
+++ b/polly/test/ScopInfo/NonAffine/invariant_loads_dependent_in_non_affine_region.ll
@@ -23,7 +23,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %B, i32* %C) {
+define void @f(ptr %A, ptr %B, ptr %C) {
 entry:
   br label %for.cond
 
@@ -33,16 +33,16 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4
-  %tmp1 = load i32, i32* %B, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4
+  %tmp1 = load i32, ptr %B, align 4
   %cmp1 = icmp eq i32 %tmp, %tmp1
   br i1 %cmp1, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %tmp2 = load i32, i32* %C, align 4
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp2, i32* %arrayidx3, align 4
+  %tmp2 = load i32, ptr %C, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp2, ptr %arrayidx3, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body

diff  --git a/polly/test/ScopInfo/NonAffine/modulo_backedge.ll b/polly/test/ScopInfo/NonAffine/modulo_backedge.ll
index db46bf2ef48eb..dec63ca6813d1 100644
--- a/polly/test/ScopInfo/NonAffine/modulo_backedge.ll
+++ b/polly/test/ScopInfo/NonAffine/modulo_backedge.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A) {
+define void @foo(ptr %A) {
 entry:
   br label %for.cond
 
@@ -22,10 +22,10 @@ for.cond:                                         ; preds = %for.inc, %entry
   br label %for.body
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx0 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp0 = load float, float* %arrayidx0, align 4
+  %arrayidx0 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp0 = load float, ptr %arrayidx0, align 4
   %add0 = fadd float %tmp0, 2.000000e+00
-  store float %add0, float* %arrayidx0, align 4
+  store float %add0, ptr %arrayidx0, align 4
   %rem1 = srem i64 %i.0, 7
   %tobool = icmp eq i64 %rem1, 0
   br i1 %tobool, label %for.end, label %if.end

diff  --git a/polly/test/ScopInfo/NonAffine/modulo_domain.ll b/polly/test/ScopInfo/NonAffine/modulo_domain.ll
index 5636ce53d9164..f5ebec2b03460 100644
--- a/polly/test/ScopInfo/NonAffine/modulo_domain.ll
+++ b/polly/test/ScopInfo/NonAffine/modulo_domain.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A) {
+define void @foo(ptr %A) {
 entry:
   br label %for.cond
 
@@ -28,19 +28,19 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx0 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp0 = load float, float* %arrayidx0, align 4
+  %arrayidx0 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp0 = load float, ptr %arrayidx0, align 4
   %add0 = fadd float %tmp0, 2.000000e+00
-  store float %add0, float* %arrayidx0, align 4
+  store float %add0, ptr %arrayidx0, align 4
   %rem1 = srem i64 %i.0, 2
   %tobool = icmp eq i64 %rem1, 0
   br i1 %tobool, label %if.end, label %if.then
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp = load float, ptr %arrayidx, align 4
   %add = fadd float %tmp, 2.000000e+00
-  store float %add, float* %arrayidx, align 4
+  store float %add, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %for.body, %if.then

diff  --git a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll
index eebeb5c0b9c6f..837d9b21b16e0 100644
--- a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll
+++ b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll
@@ -50,7 +50,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* noalias %A, i32* noalias %C) {
+define void @f(ptr noalias %A, ptr noalias %C) {
 bb:
   br label %bb1
 
@@ -63,17 +63,17 @@ bb2:                                              ; preds = %bb1
   br label %bb3
 
 bb3:                                              ; preds = %bb6, %bb2
-  %tmp = getelementptr inbounds i32, i32* %C, i64 %indvars.iv
-  %tmp4 = load i32, i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %C, i64 %indvars.iv
+  %tmp4 = load i32, ptr %tmp, align 4
   %tmp5 = icmp eq i32 %tmp4, 0
   br i1 %tmp5, label %bb11, label %bb6
 
 bb6:                                              ; preds = %bb3
   %tmp7 = sext i32 %tmp4 to i64
-  %tmp8 = getelementptr inbounds i32, i32* %A, i64 %tmp7
-  %tmp9 = load i32, i32* %tmp8, align 4
+  %tmp8 = getelementptr inbounds i32, ptr %A, i64 %tmp7
+  %tmp9 = load i32, ptr %tmp8, align 4
   %tmp10 = add nsw i32 %tmp9, 1
-  store i32 %tmp10, i32* %tmp8, align 4
+  store i32 %tmp10, ptr %tmp8, align 4
   br i1 true, label %bb11, label %bb3
 
 bb11:                                             ; preds = %bb3

diff  --git a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll
index 811a380d3e550..f2574b77d6e5e 100644
--- a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll
+++ b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll
@@ -103,7 +103,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb11
 
@@ -131,15 +131,15 @@ bb15:                                             ; preds = %bb24, %bb14
   br i1 %exitcond, label %bb16, label %bb25
 
 bb16:                                             ; preds = %bb15
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv8
-  %tmp17 = load i32, i32* %tmp, align 4
-  %tmp18 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv5
-  %tmp19 = load i32, i32* %tmp18, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv8
+  %tmp17 = load i32, ptr %tmp, align 4
+  %tmp18 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv5
+  %tmp19 = load i32, ptr %tmp18, align 4
   %tmp20 = add nsw i32 %tmp17, %tmp19
-  %tmp21 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp22 = load i32, i32* %tmp21, align 4
+  %tmp21 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp22 = load i32, ptr %tmp21, align 4
   %tmp23 = add nsw i32 %tmp22, %tmp20
-  store i32 %tmp23, i32* %tmp21, align 4
+  store i32 %tmp23, ptr %tmp21, align 4
   br label %bb24
 
 bb24:                                             ; preds = %bb16

diff  --git a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll
index 8beca1654a530..b11675b3662f5 100644
--- a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll
+++ b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll
@@ -103,7 +103,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb11
 
@@ -132,15 +132,15 @@ bb15:                                             ; preds = %bb24, %bb14
   br i1 %exitcond, label %bb16, label %bb25
 
 bb16:                                             ; preds = %bb15
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv8
-  %tmp17 = load i32, i32* %tmp, align 4
-  %tmp18 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv5
-  %tmp19 = load i32, i32* %tmp18, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv8
+  %tmp17 = load i32, ptr %tmp, align 4
+  %tmp18 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv5
+  %tmp19 = load i32, ptr %tmp18, align 4
   %tmp20 = add nsw i32 %tmp17, %tmp19
-  %tmp21 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp22 = load i32, i32* %tmp21, align 4
+  %tmp21 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp22 = load i32, ptr %tmp21, align 4
   %tmp23 = add nsw i32 %tmp22, %tmp20
-  store i32 %tmp23, i32* %tmp21, align 4
+  store i32 %tmp23, ptr %tmp21, align 4
   br label %bb24
 
 bb24:                                             ; preds = %bb16

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_access_with_range_2.ll b/polly/test/ScopInfo/NonAffine/non_affine_access_with_range_2.ll
index 96bc327e32470..34b04933af86d 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_access_with_range_2.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_access_with_range_2.ll
@@ -20,7 +20,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb4
 
@@ -39,10 +39,10 @@ bb6:                                              ; preds = %bb11, %bb5
 
 bb7:                                              ; preds = %bb6
   %tmp = mul nsw i64 %indvars.iv1, %indvars.iv
-  %tmp8 = getelementptr inbounds i32, i32* %A, i64 %tmp
-  %tmp9 = load i32, i32* %tmp8, align 4
+  %tmp8 = getelementptr inbounds i32, ptr %A, i64 %tmp
+  %tmp9 = load i32, ptr %tmp8, align 4
   %tmp10 = add nsw i32 %tmp9, 1
-  store i32 %tmp10, i32* %tmp8, align 4
+  store i32 %tmp10, ptr %tmp8, align 4
   br label %bb11
 
 bb11:                                             ; preds = %bb7

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_but_sdiv.ll b/polly/test/ScopInfo/NonAffine/non_affine_but_sdiv.ll
index 015356c5e2f7a..9955c88b2cfda 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_but_sdiv.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_but_sdiv.ll
@@ -21,7 +21,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -36,17 +36,17 @@ for.body:                                         ; preds = %for.cond
   %tmp1 = trunc i64 %indvars.iv to i32
   %add = add nsw i32 %tmp1, %div
   %idxprom = sext i32 %add to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %div1 = sdiv i32 %N, -5
   %tmp3 = trunc i64 %indvars.iv to i32
   %add2 = add nsw i32 %tmp3, %div1
   %idxprom3 = sext i32 %add2 to i64
-  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 %idxprom3
-  %tmp4 = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %idxprom3
+  %tmp4 = load i32, ptr %arrayidx4, align 4
   %add5 = add nsw i32 %tmp2, %tmp4
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %add5, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %add5, ptr %arrayidx7, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll b/polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll
index ab90638c50228..b194ee762e9fd 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll
@@ -37,7 +37,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @pos(float* %A, i64 %n) {
+define void @pos(ptr %A, i64 %n) {
 bb:
   br label %bb1
 
@@ -48,10 +48,10 @@ bb1:                                              ; preds = %bb6, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = srem i64 %n, 42
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %tmp
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %tmp
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, 1.000000e+00
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2
@@ -62,7 +62,7 @@ bb8:                                              ; preds = %bb1
   ret void
 }
 
-define void @neg(float* %A, i64 %n) {
+define void @neg(ptr %A, i64 %n) {
 bb:
   br label %bb1
 
@@ -73,10 +73,10 @@ bb1:                                              ; preds = %bb6, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = srem i64 %n, -42
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %tmp
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %tmp
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, 1.000000e+00
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll b/polly/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll
index 369fe9464cdef..1f55530b137d5 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll
@@ -25,7 +25,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb1
 
@@ -35,24 +35,24 @@ bb1:                                              ; preds = %bb17, %bb
   br i1 %exitcond, label %bb2, label %bb18
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %tmp, align 4
   %tmp4 = icmp eq i32 %tmp3, 0
   br i1 %tmp4, label %bb16, label %bb5
 
 bb5:                                              ; preds = %bb2
   %tmp6 = add nsw i64 %indvars.iv, -1
-  %tmp7 = getelementptr inbounds i32, i32* %A, i64 %tmp6
-  %tmp8 = load i32, i32* %tmp7, align 4
+  %tmp7 = getelementptr inbounds i32, ptr %A, i64 %tmp6
+  %tmp8 = load i32, ptr %tmp7, align 4
   %tmp9 = icmp eq i32 %tmp8, 0
   br i1 %tmp9, label %bb15, label %bb10
 
 bb10:                                             ; preds = %bb5
   %tmp11 = add nsw i64 %indvars.iv, -2
-  %tmp12 = getelementptr inbounds i32, i32* %A, i64 %tmp11
-  %tmp13 = load i32, i32* %tmp12, align 4
-  %tmp14 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp13, i32* %tmp14, align 4
+  %tmp12 = getelementptr inbounds i32, ptr %A, i64 %tmp11
+  %tmp13 = load i32, ptr %tmp12, align 4
+  %tmp14 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp13, ptr %tmp14, align 4
   br label %bb15
 
 bb15:                                             ; preds = %bb5, %bb10

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll b/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll
index 5009e8d6ed517..3511362304b40 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll
@@ -107,7 +107,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   br label %bb3
@@ -118,8 +118,8 @@ bb3:                                              ; preds = %bb18, %bb
   br i1 %exitcond, label %bb4, label %bb19
 
 bb4:                                              ; preds = %bb3
-  %tmp5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv1
-  %tmp6 = load i32, i32* %tmp5, align 4
+  %tmp5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv1
+  %tmp6 = load i32, ptr %tmp5, align 4
   %tmp7 = icmp eq i32 %tmp6, 0
   br i1 %tmp7, label %bb17, label %bb8
 
@@ -132,10 +132,10 @@ bb9:                                              ; preds = %bb15, %bb8
   br i1 %tmp10, label %bb11, label %bb16
 
 bb11:                                             ; preds = %bb9
-  %tmp12 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp13 = load i32, i32* %tmp12, align 4
+  %tmp12 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp13 = load i32, ptr %tmp12, align 4
   %tmp14 = add nsw i32 %tmp13, 1
-  store i32 %tmp14, i32* %tmp12, align 4
+  store i32 %tmp14, ptr %tmp12, align 4
   br label %bb15
 
 bb15:                                             ; preds = %bb11

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll b/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll
index 75fcd69432af6..c2e1e46f6f185 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll
@@ -113,7 +113,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   br label %bb3
@@ -124,8 +124,8 @@ bb3:                                              ; preds = %bb19, %bb
   br i1 %exitcond, label %bb4, label %bb20
 
 bb4:                                              ; preds = %bb3
-  %tmp5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv1
-  %tmp6 = load i32, i32* %tmp5, align 4
+  %tmp5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv1
+  %tmp6 = load i32, ptr %tmp5, align 4
   %tmp7 = icmp eq i32 %tmp6, 0
   br i1 %tmp7, label %bb18, label %bb8
 
@@ -139,10 +139,10 @@ bb9:                                              ; preds = %bb16, %bb8
   br i1 %tmp11, label %bb12, label %bb17
 
 bb12:                                             ; preds = %bb9
-  %tmp13 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp14 = load i32, i32* %tmp13, align 4
+  %tmp13 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp14 = load i32, ptr %tmp13, align 4
   %tmp15 = add nsw i32 %tmp14, 1
-  store i32 %tmp15, i32* %tmp13, align 4
+  store i32 %tmp15, ptr %tmp13, align 4
   br label %bb16
 
 bb16:                                             ; preds = %bb12

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_float_compare.ll b/polly/test/ScopInfo/NonAffine/non_affine_float_compare.ll
index d24b7fb249e74..c62447b6c15c1 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_float_compare.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_float_compare.ll
@@ -42,7 +42,7 @@
 ; CHECK-NEXT: }
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(float* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb1
 
@@ -52,19 +52,19 @@ bb1:                                              ; preds = %bb13, %bb
   br i1 %exitcond, label %bb2, label %bb14
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp3 = load float, float* %tmp, align 4
+  %tmp = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp3 = load float, ptr %tmp, align 4
   %tmp4 = add nsw i64 %indvars.iv, -1
-  %tmp5 = getelementptr inbounds float, float* %A, i64 %tmp4
-  %tmp6 = load float, float* %tmp5, align 4
+  %tmp5 = getelementptr inbounds float, ptr %A, i64 %tmp4
+  %tmp6 = load float, ptr %tmp5, align 4
   %tmp7 = fcmp oeq float %tmp3, %tmp6
   br i1 %tmp7, label %bb8, label %bb12
 
 bb8:                                              ; preds = %bb2
-  %tmp9 = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp10 = load float, float* %tmp9, align 4
+  %tmp9 = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp10 = load float, ptr %tmp9, align 4
   %tmp11 = fadd float %tmp10, 1.000000e+00
-  store float %tmp11, float* %tmp9, align 4
+  store float %tmp11, ptr %tmp9, align 4
   br label %bb12
 
 bb12:                                             ; preds = %bb8, %bb2

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_loop_condition.ll b/polly/test/ScopInfo/NonAffine/non_affine_loop_condition.ll
index eb4cb844627a9..873b44b9c8cf8 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_loop_condition.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_loop_condition.ll
@@ -50,7 +50,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %C) {
+define void @f(ptr %A, ptr %C) {
 bb:
   br label %bb1
 
@@ -63,16 +63,16 @@ bb2:                                              ; preds = %bb1
   br label %bb3
 
 bb3:                                              ; preds = %bb6, %bb2
-  %tmp = getelementptr inbounds i32, i32* %C, i64 %indvars.iv
-  %tmp4 = load i32, i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %C, i64 %indvars.iv
+  %tmp4 = load i32, ptr %tmp, align 4
   %tmp5 = icmp eq i32 %tmp4, 0
   br i1 %tmp5, label %bb10, label %bb6
 
 bb6:                                              ; preds = %bb3
-  %tmp7 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp8 = load i32, i32* %tmp7, align 4
+  %tmp7 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp8 = load i32, ptr %tmp7, align 4
   %tmp9 = add nsw i32 %tmp8, 1
-  store i32 %tmp9, i32* %tmp7, align 4
+  store i32 %tmp9, ptr %tmp7, align 4
   br label %bb3
 
 bb10:                                             ; preds = %bb3

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll b/polly/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
index 135100ca60f35..127bf80b9451d 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
@@ -97,7 +97,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N, i32 %M) {
+define void @f(ptr %A, i32 %N, i32 %M) {
 bb:
   %tmp = icmp sgt i32 %M, 0
   %smax = select i1 %tmp, i32 %M, i32 0
@@ -111,8 +111,8 @@ bb2:                                              ; preds = %bb23, %bb
   br i1 %tmp3, label %bb4, label %bb24
 
 bb4:                                              ; preds = %bb2
-  %tmp5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp6 = load i32, i32* %tmp5, align 4
+  %tmp5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp6 = load i32, ptr %tmp5, align 4
   %tmp7 = icmp eq i32 %tmp6, 0
   br i1 %tmp7, label %bb18, label %bb8
 
@@ -125,10 +125,10 @@ bb9:                                              ; preds = %bb15, %bb8
   br i1 %tmp10, label %bb11, label %bb17
 
 bb11:                                             ; preds = %bb9
-  %tmp12 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp13 = load i32, i32* %tmp12, align 4
+  %tmp12 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp13 = load i32, ptr %tmp12, align 4
   %tmp14 = add nsw i32 %tmp13, 1
-  store i32 %tmp14, i32* %tmp12, align 4
+  store i32 %tmp14, ptr %tmp12, align 4
   br label %bb15
 
 bb15:                                             ; preds = %bb11
@@ -141,10 +141,10 @@ bb17:                                             ; preds = %bb9
 bb18:                                             ; preds = %bb4, %bb17
   %j.2 = phi i32 [ %smax, %bb17 ], [ %j.0, %bb4 ]
   %tmp19 = sext i32 %j.2 to i64
-  %tmp20 = getelementptr inbounds i32, i32* %A, i64 %tmp19
-  %tmp21 = load i32, i32* %tmp20, align 4
-  %tmp22 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp21, i32* %tmp22, align 4
+  %tmp20 = getelementptr inbounds i32, ptr %A, i64 %tmp19
+  %tmp21 = load i32, ptr %tmp20, align 4
+  %tmp22 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp21, ptr %tmp22, align 4
   br label %bb23
 
 bb23:                                             ; preds = %bb18

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_parametric_loop.ll b/polly/test/ScopInfo/NonAffine/non_affine_parametric_loop.ll
index a66375467bfec..de011e29aeeaa 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_parametric_loop.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_parametric_loop.ll
@@ -6,16 +6,16 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ;     A[INDEX[i]] = i;
 ; }
 
-define void @foo(i64 %n, double* noalias %A, i64* noalias %INDEX) {
+define void @foo(i64 %n, ptr noalias %A, ptr noalias %INDEX) {
 entry:
   br label %for.body
 
 for.body:
   %i = phi i64 [ %inc, %for.body ], [ 0, %entry ]
-  %arrayidx = getelementptr inbounds i64, i64* %INDEX, i64 %i
-  %val = load i64, i64* %arrayidx
-  %arrayidx1 = getelementptr inbounds double, double* %A, i64 %val
-  store double 1.0, double* %arrayidx1
+  %arrayidx = getelementptr inbounds i64, ptr %INDEX, i64 %i
+  %val = load i64, ptr %arrayidx
+  %arrayidx1 = getelementptr inbounds double, ptr %A, i64 %val
+  store double 1.0, ptr %arrayidx1
   %inc = add nsw i64 %i, 1
   %exitcond = icmp eq i64 %inc, %n
   br i1 %exitcond, label %for.end, label %for.body

diff  --git a/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll b/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll
index b93f9ee72ce80..7303b4ea47fdc 100644
--- a/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll
+++ b/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll
@@ -16,7 +16,7 @@
 ; CHECK-NEXT:     { Stmt_region_entry__TO__region_exit[i0] -> MemRef_A[0] };
 ; CHECK-NOT: MayWriteAccess
 
-define void @f(i32* %A, i32* %B, i32* %C, float %b) {
+define void @f(ptr %A, ptr %B, ptr %C, float %b) {
 entry:
   br label %for.cond
 
@@ -35,18 +35,18 @@ bb3:
   br label %bb3
 
 guaranteed:
-  %ptr = getelementptr i32, i32* %B, i32 %indvar
-  %val = load i32, i32* %ptr
+  %ptr = getelementptr i32, ptr %B, i32 %indvar
+  %val = load i32, ptr %ptr
   %cmp = icmp eq i32 %val, 0
-  store i32 0, i32* %A
+  store i32 0, ptr %A
   br i1 %cmp, label %bb5, label %bb6
 
 bb5:
   br label %region_exit
 
 bb6:
-  %ptr2 = getelementptr i32, i32* %C, i32 %indvar
-  %val2 = load i32, i32* %ptr2
+  %ptr2 = getelementptr i32, ptr %C, i32 %indvar
+  %val2 = load i32, ptr %ptr2
   %cmp2 = icmp eq i32 %val2, 0
   br i1 %cmp2, label %region_exit, label %region_entry
 

diff  --git a/polly/test/ScopInfo/aliasing_conditional_alias_groups_1.ll b/polly/test/ScopInfo/aliasing_conditional_alias_groups_1.ll
index b362b3ec429b0..dc59fbfc66a80 100644
--- a/polly/test/ScopInfo/aliasing_conditional_alias_groups_1.ll
+++ b/polly/test/ScopInfo/aliasing_conditional_alias_groups_1.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32 %b, i32* %A, i32* %B) {
+define void @jd(i32 %b, ptr %A, ptr %B) {
 entry:
   br label %for.cond
 
@@ -30,18 +30,18 @@ for.body:                                         ; preds = %for.cond
 
 if.then:                                          ; preds = %for.body
   %tmp = add nsw i64 %indvars.iv, -1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %tmp
-  %tmp3 = load i32, i32* %arrayidx, align 4
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp3, i32* %arrayidx2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %tmp
+  %tmp3 = load i32, ptr %arrayidx, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp3, ptr %arrayidx2, align 4
   br label %if.end
 
 if.else:                                          ; preds = %for.body
   %tmp4 = add nsw i64 %indvars.iv, -1
-  %arrayidx5 = getelementptr inbounds i32, i32* %B, i64 %tmp4
-  %tmp5 = load i32, i32* %arrayidx5, align 4
-  %arrayidx7 = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  store i32 %tmp5, i32* %arrayidx7, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %B, i64 %tmp4
+  %tmp5 = load i32, ptr %arrayidx5, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  store i32 %tmp5, ptr %arrayidx7, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/polly/test/ScopInfo/aliasing_conditional_alias_groups_2.ll b/polly/test/ScopInfo/aliasing_conditional_alias_groups_2.ll
index 6ca40b2ee8e56..a19d60dd9147f 100644
--- a/polly/test/ScopInfo/aliasing_conditional_alias_groups_2.ll
+++ b/polly/test/ScopInfo/aliasing_conditional_alias_groups_2.ll
@@ -16,7 +16,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32 %b, i32* %A, i32* %B) {
+define void @jd(i32 %b, ptr %A, ptr %B) {
 entry:
   br label %for.cond
 
@@ -30,17 +30,17 @@ for.body:                                         ; preds = %for.cond
   br i1 %tobool, label %if.else, label %if.then
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 5
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp, i32* %arrayidx1, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 5
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp, ptr %arrayidx1, align 4
   br label %if.end
 
 if.else:                                          ; preds = %for.body
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 7
-  %tmp1 = load i32, i32* %arrayidx2, align 4
-  %arrayidx4 = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  store i32 %tmp1, i32* %arrayidx4, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 7
+  %tmp1 = load i32, ptr %arrayidx2, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  store i32 %tmp1, ptr %arrayidx4, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/polly/test/ScopInfo/aliasing_dead_access.ll b/polly/test/ScopInfo/aliasing_dead_access.ll
index 176d0cf664538..2a725cf3c8557 100644
--- a/polly/test/ScopInfo/aliasing_dead_access.ll
+++ b/polly/test/ScopInfo/aliasing_dead_access.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %B) {
+define void @jd(ptr %A, ptr %B) {
 entry:
   br label %for.cond
 
@@ -31,10 +31,10 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %cmp2, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp1, i32* %arrayidx5, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp1, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/ScopInfo/aliasing_many_arrays_to_compare.ll b/polly/test/ScopInfo/aliasing_many_arrays_to_compare.ll
index ae5e8d7bcf208..937d4ada3ec95 100644
--- a/polly/test/ScopInfo/aliasing_many_arrays_to_compare.ll
+++ b/polly/test/ScopInfo/aliasing_many_arrays_to_compare.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, float* %B, float* %C, float* %D) {
+define void @foo(ptr %A, ptr %B, ptr %C, ptr %D) {
 entry:
   br label %for.cond
 
@@ -28,22 +28,22 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp = load float, ptr %arrayidx, align 4
   %inc = fadd float %tmp, 1.000000e+00
-  store float %inc, float* %arrayidx, align 4
-  %arrayidx1 = getelementptr inbounds float, float* %B, i64 %i.0
-  %tmp1 = load float, float* %arrayidx1, align 4
+  store float %inc, ptr %arrayidx, align 4
+  %arrayidx1 = getelementptr inbounds float, ptr %B, i64 %i.0
+  %tmp1 = load float, ptr %arrayidx1, align 4
   %inc2 = fadd float %tmp1, 1.000000e+00
-  store float %inc2, float* %arrayidx1, align 4
-  %arrayidx3 = getelementptr inbounds float, float* %C, i64 %i.0
-  %tmp2 = load float, float* %arrayidx3, align 4
+  store float %inc2, ptr %arrayidx1, align 4
+  %arrayidx3 = getelementptr inbounds float, ptr %C, i64 %i.0
+  %tmp2 = load float, ptr %arrayidx3, align 4
   %inc4 = fadd float %tmp2, 1.000000e+00
-  store float %inc4, float* %arrayidx3, align 4
-  %arrayidx5 = getelementptr inbounds float, float* %D, i64 %i.0
-  %tmp3 = load float, float* %arrayidx5, align 4
+  store float %inc4, ptr %arrayidx3, align 4
+  %arrayidx5 = getelementptr inbounds float, ptr %D, i64 %i.0
+  %tmp3 = load float, ptr %arrayidx5, align 4
   %inc6 = fadd float %tmp3, 1.000000e+00
-  store float %inc6, float* %arrayidx5, align 4
+  store float %inc6, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/aliasing_many_parameters_not_all_involved.ll b/polly/test/ScopInfo/aliasing_many_parameters_not_all_involved.ll
index 2fad0cdd8d2e7..c7592bcb09fcf 100644
--- a/polly/test/ScopInfo/aliasing_many_parameters_not_all_involved.ll
+++ b/polly/test/ScopInfo/aliasing_many_parameters_not_all_involved.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %B, i32* %C, i64 %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7, i64 %p8, i64 %p9, i64 %p10) {
+define void @jd(ptr %A, ptr %B, ptr %C, i64 %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7, i64 %p8, i64 %p9, i64 %p10) {
 entry:
   br label %for.cond
 
@@ -28,57 +28,57 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %p1
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx1 = getelementptr inbounds i32, i32* %B, i64 %p2
-  %tmp1 = load i32, i32* %arrayidx1, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %p1
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %B, i64 %p2
+  %tmp1 = load i32, ptr %arrayidx1, align 4
   %sub = sub nsw i32 %tmp, %tmp1
   %sub2 = sub nsw i64 0, %p3
-  %arrayidx3 = getelementptr inbounds i32, i32* %B, i64 %sub2
-  %tmp2 = load i32, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %B, i64 %sub2
+  %tmp2 = load i32, ptr %arrayidx3, align 4
   %add = add nsw i32 %sub, %tmp2
-  %arrayidx4 = getelementptr inbounds i32, i32* %B, i64 %p4
-  %tmp3 = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %B, i64 %p4
+  %tmp3 = load i32, ptr %arrayidx4, align 4
   %sub5 = sub nsw i32 %add, %tmp3
-  %arrayidx6 = getelementptr inbounds i32, i32* %B, i64 %p5
-  %tmp4 = load i32, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %B, i64 %p5
+  %tmp4 = load i32, ptr %arrayidx6, align 4
   %add7 = add nsw i32 %sub5, %tmp4
   %sub8 = sub nsw i64 0, %p6
-  %arrayidx9 = getelementptr inbounds i32, i32* %B, i64 %sub8
-  %tmp5 = load i32, i32* %arrayidx9, align 4
+  %arrayidx9 = getelementptr inbounds i32, ptr %B, i64 %sub8
+  %tmp5 = load i32, ptr %arrayidx9, align 4
   %sub10 = sub nsw i32 %add7, %tmp5
-  %arrayidx11 = getelementptr inbounds i32, i32* %B, i64 %p7
-  %tmp6 = load i32, i32* %arrayidx11, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %B, i64 %p7
+  %tmp6 = load i32, ptr %arrayidx11, align 4
   %add12 = add nsw i32 %sub10, %tmp6
-  %arrayidx13 = getelementptr inbounds i32, i32* %C, i64 %p3
-  %tmp7 = load i32, i32* %arrayidx13, align 4
+  %arrayidx13 = getelementptr inbounds i32, ptr %C, i64 %p3
+  %tmp7 = load i32, ptr %arrayidx13, align 4
   %sub14 = sub nsw i32 %add12, %tmp7
   %sub15 = sub nsw i64 0, %p4
-  %arrayidx16 = getelementptr inbounds i32, i32* %C, i64 %sub15
-  %tmp8 = load i32, i32* %arrayidx16, align 4
+  %arrayidx16 = getelementptr inbounds i32, ptr %C, i64 %sub15
+  %tmp8 = load i32, ptr %arrayidx16, align 4
   %add17 = add nsw i32 %sub14, %tmp8
-  %arrayidx18 = getelementptr inbounds i32, i32* %C, i64 %p5
-  %tmp9 = load i32, i32* %arrayidx18, align 4
+  %arrayidx18 = getelementptr inbounds i32, ptr %C, i64 %p5
+  %tmp9 = load i32, ptr %arrayidx18, align 4
   %sub19 = sub nsw i32 %add17, %tmp9
-  %arrayidx20 = getelementptr inbounds i32, i32* %C, i64 %p6
-  %tmp10 = load i32, i32* %arrayidx20, align 4
+  %arrayidx20 = getelementptr inbounds i32, ptr %C, i64 %p6
+  %tmp10 = load i32, ptr %arrayidx20, align 4
   %add21 = add nsw i32 %sub19, %tmp10
   %sub22 = sub nsw i64 0, %p7
-  %arrayidx23 = getelementptr inbounds i32, i32* %C, i64 %sub22
-  %tmp11 = load i32, i32* %arrayidx23, align 4
+  %arrayidx23 = getelementptr inbounds i32, ptr %C, i64 %sub22
+  %tmp11 = load i32, ptr %arrayidx23, align 4
   %sub24 = sub nsw i32 %add21, %tmp11
-  %arrayidx25 = getelementptr inbounds i32, i32* %C, i64 %p8
-  %tmp12 = load i32, i32* %arrayidx25, align 4
+  %arrayidx25 = getelementptr inbounds i32, ptr %C, i64 %p8
+  %tmp12 = load i32, ptr %arrayidx25, align 4
   %add26 = add nsw i32 %sub24, %tmp12
-  %arrayidx27 = getelementptr inbounds i32, i32* %C, i64 %p9
-  %tmp13 = load i32, i32* %arrayidx27, align 4
+  %arrayidx27 = getelementptr inbounds i32, ptr %C, i64 %p9
+  %tmp13 = load i32, ptr %arrayidx27, align 4
   %sub28 = sub nsw i32 %add26, %tmp13
   %sub29 = sub nsw i64 0, %p10
-  %arrayidx30 = getelementptr inbounds i32, i32* %C, i64 %sub29
-  %tmp14 = load i32, i32* %arrayidx30, align 4
+  %arrayidx30 = getelementptr inbounds i32, ptr %C, i64 %sub29
+  %tmp14 = load i32, ptr %arrayidx30, align 4
   %add31 = add nsw i32 %sub28, %tmp14
-  %arrayidx32 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %add31, i32* %arrayidx32, align 4
+  %arrayidx32 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %add31, ptr %arrayidx32, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/aliasing_many_read_only_acesses.ll b/polly/test/ScopInfo/aliasing_many_read_only_acesses.ll
index 1f3e271407220..c22cfe55e1185 100644
--- a/polly/test/ScopInfo/aliasing_many_read_only_acesses.ll
+++ b/polly/test/ScopInfo/aliasing_many_read_only_acesses.ll
@@ -23,7 +23,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @many_read_only_accesses(float* %A, float* %B) {
+define void @many_read_only_accesses(ptr %A, ptr %B) {
 bb:
   br label %bb2
 
@@ -41,171 +41,171 @@ bb4:                                              ; preds = %bb169, %bb3
   br i1 %exitcond, label %bb5, label %bb171
 
 bb5:                                              ; preds = %bb4
-  %tmp = getelementptr inbounds float, float* %B, i64 %i.0
-  %tmp6 = load float, float* %tmp, align 4
+  %tmp = getelementptr inbounds float, ptr %B, i64 %i.0
+  %tmp6 = load float, ptr %tmp, align 4
   %tmp7 = add nuw nsw i64 %i.0, 1
-  %tmp8 = getelementptr inbounds float, float* %B, i64 %tmp7
-  %tmp9 = load float, float* %tmp8, align 4
+  %tmp8 = getelementptr inbounds float, ptr %B, i64 %tmp7
+  %tmp9 = load float, ptr %tmp8, align 4
   %tmp10 = fadd float %tmp6, %tmp9
   %tmp11 = add nuw nsw i64 %i.0, 2
-  %tmp12 = getelementptr inbounds float, float* %B, i64 %tmp11
-  %tmp13 = load float, float* %tmp12, align 4
+  %tmp12 = getelementptr inbounds float, ptr %B, i64 %tmp11
+  %tmp13 = load float, ptr %tmp12, align 4
   %tmp14 = fadd float %tmp10, %tmp13
   %tmp15 = add nuw nsw i64 %i.0, 3
-  %tmp16 = getelementptr inbounds float, float* %B, i64 %tmp15
-  %tmp17 = load float, float* %tmp16, align 4
+  %tmp16 = getelementptr inbounds float, ptr %B, i64 %tmp15
+  %tmp17 = load float, ptr %tmp16, align 4
   %tmp18 = fadd float %tmp14, %tmp17
   %tmp19 = add nuw nsw i64 %i.0, 4
-  %tmp20 = getelementptr inbounds float, float* %B, i64 %tmp19
-  %tmp21 = load float, float* %tmp20, align 4
+  %tmp20 = getelementptr inbounds float, ptr %B, i64 %tmp19
+  %tmp21 = load float, ptr %tmp20, align 4
   %tmp22 = fadd float %tmp18, %tmp21
   %tmp23 = add nuw nsw i64 %i.0, 5
-  %tmp24 = getelementptr inbounds float, float* %B, i64 %tmp23
-  %tmp25 = load float, float* %tmp24, align 4
+  %tmp24 = getelementptr inbounds float, ptr %B, i64 %tmp23
+  %tmp25 = load float, ptr %tmp24, align 4
   %tmp26 = fadd float %tmp22, %tmp25
   %tmp27 = add nuw nsw i64 %i.0, 6
-  %tmp28 = getelementptr inbounds float, float* %B, i64 %tmp27
-  %tmp29 = load float, float* %tmp28, align 4
+  %tmp28 = getelementptr inbounds float, ptr %B, i64 %tmp27
+  %tmp29 = load float, ptr %tmp28, align 4
   %tmp30 = fadd float %tmp26, %tmp29
   %tmp31 = add nuw nsw i64 %i.0, 7
-  %tmp32 = getelementptr inbounds float, float* %B, i64 %tmp31
-  %tmp33 = load float, float* %tmp32, align 4
+  %tmp32 = getelementptr inbounds float, ptr %B, i64 %tmp31
+  %tmp33 = load float, ptr %tmp32, align 4
   %tmp34 = fadd float %tmp30, %tmp33
   %tmp35 = add nuw nsw i64 %i.0, 8
-  %tmp36 = getelementptr inbounds float, float* %B, i64 %tmp35
-  %tmp37 = load float, float* %tmp36, align 4
+  %tmp36 = getelementptr inbounds float, ptr %B, i64 %tmp35
+  %tmp37 = load float, ptr %tmp36, align 4
   %tmp38 = fadd float %tmp34, %tmp37
   %tmp39 = add nuw nsw i64 %i.0, 9
-  %tmp40 = getelementptr inbounds float, float* %B, i64 %tmp39
-  %tmp41 = load float, float* %tmp40, align 4
+  %tmp40 = getelementptr inbounds float, ptr %B, i64 %tmp39
+  %tmp41 = load float, ptr %tmp40, align 4
   %tmp42 = fadd float %tmp38, %tmp41
-  %tmp43 = getelementptr inbounds float, float* %B, i64 %i.0
-  %tmp44 = load float, float* %tmp43, align 4
+  %tmp43 = getelementptr inbounds float, ptr %B, i64 %i.0
+  %tmp44 = load float, ptr %tmp43, align 4
   %tmp45 = fadd float %tmp42, %tmp44
   %tmp46 = add nuw nsw i64 %i.0, 11
-  %tmp47 = getelementptr inbounds float, float* %B, i64 %tmp46
-  %tmp48 = load float, float* %tmp47, align 4
+  %tmp47 = getelementptr inbounds float, ptr %B, i64 %tmp46
+  %tmp48 = load float, ptr %tmp47, align 4
   %tmp49 = fadd float %tmp45, %tmp48
   %tmp50 = add nuw nsw i64 %i.0, 12
-  %tmp51 = getelementptr inbounds float, float* %B, i64 %tmp50
-  %tmp52 = load float, float* %tmp51, align 4
+  %tmp51 = getelementptr inbounds float, ptr %B, i64 %tmp50
+  %tmp52 = load float, ptr %tmp51, align 4
   %tmp53 = fadd float %tmp49, %tmp52
   %tmp54 = add nuw nsw i64 %i.0, 13
-  %tmp55 = getelementptr inbounds float, float* %B, i64 %tmp54
-  %tmp56 = load float, float* %tmp55, align 4
+  %tmp55 = getelementptr inbounds float, ptr %B, i64 %tmp54
+  %tmp56 = load float, ptr %tmp55, align 4
   %tmp57 = fadd float %tmp53, %tmp56
   %tmp58 = add nuw nsw i64 %i.0, 14
-  %tmp59 = getelementptr inbounds float, float* %B, i64 %tmp58
-  %tmp60 = load float, float* %tmp59, align 4
+  %tmp59 = getelementptr inbounds float, ptr %B, i64 %tmp58
+  %tmp60 = load float, ptr %tmp59, align 4
   %tmp61 = fadd float %tmp57, %tmp60
   %tmp62 = add nuw nsw i64 %i.0, 15
-  %tmp63 = getelementptr inbounds float, float* %B, i64 %tmp62
-  %tmp64 = load float, float* %tmp63, align 4
+  %tmp63 = getelementptr inbounds float, ptr %B, i64 %tmp62
+  %tmp64 = load float, ptr %tmp63, align 4
   %tmp65 = fadd float %tmp61, %tmp64
   %tmp66 = add nuw nsw i64 %i.0, 16
-  %tmp67 = getelementptr inbounds float, float* %B, i64 %tmp66
-  %tmp68 = load float, float* %tmp67, align 4
+  %tmp67 = getelementptr inbounds float, ptr %B, i64 %tmp66
+  %tmp68 = load float, ptr %tmp67, align 4
   %tmp69 = fadd float %tmp65, %tmp68
   %tmp70 = add nuw nsw i64 %i.0, 17
-  %tmp71 = getelementptr inbounds float, float* %B, i64 %tmp70
-  %tmp72 = load float, float* %tmp71, align 4
+  %tmp71 = getelementptr inbounds float, ptr %B, i64 %tmp70
+  %tmp72 = load float, ptr %tmp71, align 4
   %tmp73 = fadd float %tmp69, %tmp72
   %tmp74 = add nuw nsw i64 %i.0, 18
-  %tmp75 = getelementptr inbounds float, float* %B, i64 %tmp74
-  %tmp76 = load float, float* %tmp75, align 4
+  %tmp75 = getelementptr inbounds float, ptr %B, i64 %tmp74
+  %tmp76 = load float, ptr %tmp75, align 4
   %tmp77 = fadd float %tmp73, %tmp76
   %tmp78 = add nuw nsw i64 %i.0, 19
-  %tmp79 = getelementptr inbounds float, float* %B, i64 %tmp78
-  %tmp80 = load float, float* %tmp79, align 4
+  %tmp79 = getelementptr inbounds float, ptr %B, i64 %tmp78
+  %tmp80 = load float, ptr %tmp79, align 4
   %tmp81 = fadd float %tmp77, %tmp80
   %tmp82 = add nuw nsw i64 %i.0, 10
-  %tmp83 = getelementptr inbounds float, float* %B, i64 %tmp82
-  %tmp84 = load float, float* %tmp83, align 4
+  %tmp83 = getelementptr inbounds float, ptr %B, i64 %tmp82
+  %tmp84 = load float, ptr %tmp83, align 4
   %tmp85 = fadd float %tmp81, %tmp84
   %tmp86 = add nuw nsw i64 %i.0, 21
-  %tmp87 = getelementptr inbounds float, float* %B, i64 %tmp86
-  %tmp88 = load float, float* %tmp87, align 4
+  %tmp87 = getelementptr inbounds float, ptr %B, i64 %tmp86
+  %tmp88 = load float, ptr %tmp87, align 4
   %tmp89 = fadd float %tmp85, %tmp88
   %tmp90 = add nuw nsw i64 %i.0, 22
-  %tmp91 = getelementptr inbounds float, float* %B, i64 %tmp90
-  %tmp92 = load float, float* %tmp91, align 4
+  %tmp91 = getelementptr inbounds float, ptr %B, i64 %tmp90
+  %tmp92 = load float, ptr %tmp91, align 4
   %tmp93 = fadd float %tmp89, %tmp92
   %tmp94 = add nuw nsw i64 %i.0, 23
-  %tmp95 = getelementptr inbounds float, float* %B, i64 %tmp94
-  %tmp96 = load float, float* %tmp95, align 4
+  %tmp95 = getelementptr inbounds float, ptr %B, i64 %tmp94
+  %tmp96 = load float, ptr %tmp95, align 4
   %tmp97 = fadd float %tmp93, %tmp96
   %tmp98 = add nuw nsw i64 %i.0, 24
-  %tmp99 = getelementptr inbounds float, float* %B, i64 %tmp98
-  %tmp100 = load float, float* %tmp99, align 4
+  %tmp99 = getelementptr inbounds float, ptr %B, i64 %tmp98
+  %tmp100 = load float, ptr %tmp99, align 4
   %tmp101 = fadd float %tmp97, %tmp100
   %tmp102 = add nuw nsw i64 %i.0, 25
-  %tmp103 = getelementptr inbounds float, float* %B, i64 %tmp102
-  %tmp104 = load float, float* %tmp103, align 4
+  %tmp103 = getelementptr inbounds float, ptr %B, i64 %tmp102
+  %tmp104 = load float, ptr %tmp103, align 4
   %tmp105 = fadd float %tmp101, %tmp104
   %tmp106 = add nuw nsw i64 %i.0, 26
-  %tmp107 = getelementptr inbounds float, float* %B, i64 %tmp106
-  %tmp108 = load float, float* %tmp107, align 4
+  %tmp107 = getelementptr inbounds float, ptr %B, i64 %tmp106
+  %tmp108 = load float, ptr %tmp107, align 4
   %tmp109 = fadd float %tmp105, %tmp108
   %tmp110 = add nuw nsw i64 %i.0, 27
-  %tmp111 = getelementptr inbounds float, float* %B, i64 %tmp110
-  %tmp112 = load float, float* %tmp111, align 4
+  %tmp111 = getelementptr inbounds float, ptr %B, i64 %tmp110
+  %tmp112 = load float, ptr %tmp111, align 4
   %tmp113 = fadd float %tmp109, %tmp112
   %tmp114 = add nuw nsw i64 %i.0, 28
-  %tmp115 = getelementptr inbounds float, float* %B, i64 %tmp114
-  %tmp116 = load float, float* %tmp115, align 4
+  %tmp115 = getelementptr inbounds float, ptr %B, i64 %tmp114
+  %tmp116 = load float, ptr %tmp115, align 4
   %tmp117 = fadd float %tmp113, %tmp116
   %tmp118 = add nuw nsw i64 %i.0, 29
-  %tmp119 = getelementptr inbounds float, float* %B, i64 %tmp118
-  %tmp120 = load float, float* %tmp119, align 4
+  %tmp119 = getelementptr inbounds float, ptr %B, i64 %tmp118
+  %tmp120 = load float, ptr %tmp119, align 4
   %tmp121 = fadd float %tmp117, %tmp120
   %tmp122 = add nuw nsw i64 %i.0, 20
-  %tmp123 = getelementptr inbounds float, float* %B, i64 %tmp122
-  %tmp124 = load float, float* %tmp123, align 4
+  %tmp123 = getelementptr inbounds float, ptr %B, i64 %tmp122
+  %tmp124 = load float, ptr %tmp123, align 4
   %tmp125 = fadd float %tmp121, %tmp124
   %tmp126 = add nuw nsw i64 %i.0, 31
-  %tmp127 = getelementptr inbounds float, float* %B, i64 %tmp126
-  %tmp128 = load float, float* %tmp127, align 4
+  %tmp127 = getelementptr inbounds float, ptr %B, i64 %tmp126
+  %tmp128 = load float, ptr %tmp127, align 4
   %tmp129 = fadd float %tmp125, %tmp128
   %tmp130 = add nuw nsw i64 %i.0, 32
-  %tmp131 = getelementptr inbounds float, float* %B, i64 %tmp130
-  %tmp132 = load float, float* %tmp131, align 4
+  %tmp131 = getelementptr inbounds float, ptr %B, i64 %tmp130
+  %tmp132 = load float, ptr %tmp131, align 4
   %tmp133 = fadd float %tmp129, %tmp132
   %tmp134 = add nuw nsw i64 %i.0, 33
-  %tmp135 = getelementptr inbounds float, float* %B, i64 %tmp134
-  %tmp136 = load float, float* %tmp135, align 4
+  %tmp135 = getelementptr inbounds float, ptr %B, i64 %tmp134
+  %tmp136 = load float, ptr %tmp135, align 4
   %tmp137 = fadd float %tmp133, %tmp136
   %tmp138 = add nuw nsw i64 %i.0, 34
-  %tmp139 = getelementptr inbounds float, float* %B, i64 %tmp138
-  %tmp140 = load float, float* %tmp139, align 4
+  %tmp139 = getelementptr inbounds float, ptr %B, i64 %tmp138
+  %tmp140 = load float, ptr %tmp139, align 4
   %tmp141 = fadd float %tmp137, %tmp140
   %tmp142 = add nuw nsw i64 %i.0, 35
-  %tmp143 = getelementptr inbounds float, float* %B, i64 %tmp142
-  %tmp144 = load float, float* %tmp143, align 4
+  %tmp143 = getelementptr inbounds float, ptr %B, i64 %tmp142
+  %tmp144 = load float, ptr %tmp143, align 4
   %tmp145 = fadd float %tmp141, %tmp144
   %tmp146 = add nuw nsw i64 %i.0, 36
-  %tmp147 = getelementptr inbounds float, float* %B, i64 %tmp146
-  %tmp148 = load float, float* %tmp147, align 4
+  %tmp147 = getelementptr inbounds float, ptr %B, i64 %tmp146
+  %tmp148 = load float, ptr %tmp147, align 4
   %tmp149 = fadd float %tmp145, %tmp148
   %tmp150 = add nuw nsw i64 %i.0, 37
-  %tmp151 = getelementptr inbounds float, float* %B, i64 %tmp150
-  %tmp152 = load float, float* %tmp151, align 4
+  %tmp151 = getelementptr inbounds float, ptr %B, i64 %tmp150
+  %tmp152 = load float, ptr %tmp151, align 4
   %tmp153 = fadd float %tmp149, %tmp152
   %tmp154 = add nuw nsw i64 %i.0, 38
-  %tmp155 = getelementptr inbounds float, float* %B, i64 %tmp154
-  %tmp156 = load float, float* %tmp155, align 4
+  %tmp155 = getelementptr inbounds float, ptr %B, i64 %tmp154
+  %tmp156 = load float, ptr %tmp155, align 4
   %tmp157 = fadd float %tmp153, %tmp156
   %tmp158 = add nuw nsw i64 %i.0, 39
-  %tmp159 = getelementptr inbounds float, float* %B, i64 %tmp158
-  %tmp160 = load float, float* %tmp159, align 4
+  %tmp159 = getelementptr inbounds float, ptr %B, i64 %tmp158
+  %tmp160 = load float, ptr %tmp159, align 4
   %tmp161 = fadd float %tmp157, %tmp160
   %tmp162 = add nuw nsw i64 %i.0, 30
-  %tmp163 = getelementptr inbounds float, float* %B, i64 %tmp162
-  %tmp164 = load float, float* %tmp163, align 4
+  %tmp163 = getelementptr inbounds float, ptr %B, i64 %tmp162
+  %tmp164 = load float, ptr %tmp163, align 4
   %tmp165 = fadd float %tmp161, %tmp164
-  %tmp166 = getelementptr inbounds float, float* %A, i64 %j.0
-  %tmp167 = load float, float* %tmp166, align 4
+  %tmp166 = getelementptr inbounds float, ptr %A, i64 %j.0
+  %tmp167 = load float, ptr %tmp166, align 4
   %tmp168 = fadd float %tmp167, %tmp165
-  store float %tmp168, float* %tmp166, align 4
+  store float %tmp168, ptr %tmp166, align 4
   br label %bb169
 
 bb169:                                            ; preds = %bb5

diff  --git a/polly/test/ScopInfo/aliasing_multiple_alias_groups.ll b/polly/test/ScopInfo/aliasing_multiple_alias_groups.ll
index ee386029363e5..16cb3dc0f5ac8 100644
--- a/polly/test/ScopInfo/aliasing_multiple_alias_groups.ll
+++ b/polly/test/ScopInfo/aliasing_multiple_alias_groups.ll
@@ -10,20 +10,20 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* nocapture %Int0, i32* nocapture readonly %Int1, float* nocapture %Float0, float* nocapture readonly %Float1) {
+define void @jd(ptr nocapture %Int0, ptr nocapture readonly %Int1, ptr nocapture %Float0, ptr nocapture readonly %Float1) {
 entry:
   br label %for.body
 
 for.body:                                         ; preds = %for.body, %entry
   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %Int1, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4, !tbaa !0
-  %arrayidx2 = getelementptr inbounds i32, i32* %Int0, i64 %indvars.iv
-  store i32 %tmp, i32* %arrayidx2, align 4, !tbaa !0
-  %arrayidx4 = getelementptr inbounds float, float* %Float1, i64 %indvars.iv
-  %tmp1 = load float, float* %arrayidx4, align 4, !tbaa !4
-  %arrayidx6 = getelementptr inbounds float, float* %Float0, i64 %indvars.iv
-  store float %tmp1, float* %arrayidx6, align 4, !tbaa !4
+  %arrayidx = getelementptr inbounds i32, ptr %Int1, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4, !tbaa !0
+  %arrayidx2 = getelementptr inbounds i32, ptr %Int0, i64 %indvars.iv
+  store i32 %tmp, ptr %arrayidx2, align 4, !tbaa !0
+  %arrayidx4 = getelementptr inbounds float, ptr %Float1, i64 %indvars.iv
+  %tmp1 = load float, ptr %arrayidx4, align 4, !tbaa !4
+  %arrayidx6 = getelementptr inbounds float, ptr %Float0, i64 %indvars.iv
+  store float %tmp1, ptr %arrayidx6, align 4, !tbaa !4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 1024
   br i1 %exitcond, label %for.end, label %for.body

diff  --git a/polly/test/ScopInfo/aliasing_with_non_affine_access.ll b/polly/test/ScopInfo/aliasing_with_non_affine_access.ll
index d4a759e6e13a6..056b644cd5eda 100644
--- a/polly/test/ScopInfo/aliasing_with_non_affine_access.ll
+++ b/polly/test/ScopInfo/aliasing_with_non_affine_access.ll
@@ -13,27 +13,26 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.info = type { i32, %struct.ctr*, i32, %struct.ord*, %struct.ctr*, i32, i8*, i32, i32, double }
+%struct.info = type { i32, ptr, i32, ptr, ptr, i32, ptr, i32, i32, double }
 %struct.ctr = type { i32, i8, i8, i32 }
 %struct.ord = type { i32, i8 }
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #0
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) #0
 
-define void @test1(%struct.info** %ppIdxInfo) {
+define void @test1(ptr %ppIdxInfo) {
 entry:
-  %tmp0 = load %struct.info*, %struct.info** %ppIdxInfo, align 8
+  %tmp0 = load ptr, ptr %ppIdxInfo, align 8
   br label %if.end125
 
 if.end125:                                        ; preds = %entry
-  %tmp1 = load %struct.ctr*, %struct.ctr** undef, align 8
+  %tmp1 = load ptr, ptr undef, align 8
   br label %for.end143
 
 for.end143:                                       ; preds = %if.end125
-  %tmp2 = bitcast %struct.ctr* %tmp1 to i8*
-  tail call void @llvm.memset.p0i8.i64(i8* %tmp2, i8 0, i64 32, i32 4, i1 false)
-  %needToFreeIdxStr = getelementptr inbounds %struct.info, %struct.info* %tmp0, i64 0, i32 7
-  %tmp3 = load i32, i32* %needToFreeIdxStr, align 8
+  tail call void @llvm.memset.p0.i64(ptr %tmp1, i8 0, i64 32, i32 4, i1 false)
+  %needToFreeIdxStr = getelementptr inbounds %struct.info, ptr %tmp0, i64 0, i32 7
+  %tmp3 = load i32, ptr %needToFreeIdxStr, align 8
   br i1 false, label %if.end149, label %if.then148
 
 if.then148:                                       ; preds = %for.end143
@@ -43,20 +42,19 @@ if.end149:                                        ; preds = %if.then148, %for.en
   ret void
 }
 
-define void @test2(%struct.info** %ppIdxInfo, i64 %n) {
+define void @test2(ptr %ppIdxInfo, i64 %n) {
 entry:
-  %tmp0 = load %struct.info*, %struct.info** %ppIdxInfo, align 8
+  %tmp0 = load ptr, ptr %ppIdxInfo, align 8
   br label %if.end125
 
 if.end125:                                        ; preds = %entry
-  %tmp1 = load %struct.ctr*, %struct.ctr** undef, align 8
+  %tmp1 = load ptr, ptr undef, align 8
   br label %for.end143
 
 for.end143:                                       ; preds = %if.end125
-  %tmp2 = bitcast %struct.ctr* %tmp1 to i8*
-  tail call void @llvm.memset.p0i8.i64(i8* %tmp2, i8 0, i64 %n, i32 4, i1 false)
-  %needToFreeIdxStr = getelementptr inbounds %struct.info, %struct.info* %tmp0, i64 0, i32 7
-  %tmp3 = load i32, i32* %needToFreeIdxStr, align 8
+  tail call void @llvm.memset.p0.i64(ptr %tmp1, i8 0, i64 %n, i32 4, i1 false)
+  %needToFreeIdxStr = getelementptr inbounds %struct.info, ptr %tmp0, i64 0, i32 7
+  %tmp3 = load i32, ptr %needToFreeIdxStr, align 8
   br i1 false, label %if.end149, label %if.then148
 
 if.then148:                                       ; preds = %for.end143
@@ -66,7 +64,7 @@ if.end149:                                        ; preds = %if.then148, %for.en
   ret void
 }
 
-define i32 @test3(i32* %x, i32 %n) {
+define i32 @test3(ptr %x, i32 %n) {
 entry:
   br label %entry.split
 
@@ -76,7 +74,6 @@ entry.split:                                      ; preds = %entry
   br i1 %cmp8, label %for.body.lr.ph, label %for.cond.cleanup
 
 for.body.lr.ph:                                   ; preds = %entry.split
-  %tmp0 = bitcast i32* %x to i8*
   br label %for.body
 
 for.cond.cleanup:                                 ; preds = %for.body, %entry.split
@@ -85,10 +82,10 @@ for.cond.cleanup:                                 ; preds = %for.body, %entry.sp
 for.body:                                         ; preds = %for.body, %for.body.lr.ph
   %i.09 = phi i64 [ 0, %for.body.lr.ph ], [ %inc, %for.body ]
   %mul = mul nsw i64 %i.09, %i.09
-  tail call void @llvm.memset.p0i8.i64(i8* %tmp0, i8 0, i64 %mul, i32 4, i1 false)
+  tail call void @llvm.memset.p0.i64(ptr %x, i8 0, i64 %mul, i32 4, i1 false)
   %add = add nuw nsw i64 %i.09, 1000
-  %arrayidx = getelementptr inbounds i32, i32* %x, i64 %add
-  store i32 5, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %x, i64 %add
+  store i32 5, ptr %arrayidx, align 4
   %inc = add nuw nsw i64 %i.09, 1
   %exitcond = icmp eq i64 %inc, %conv
   br i1 %exitcond, label %for.cond.cleanup, label %for.body

diff  --git a/polly/test/ScopInfo/allow-all-parameters-dereferencable.ll b/polly/test/ScopInfo/allow-all-parameters-dereferencable.ll
index 22f77eef14dfa..d170a50e26fc8 100644
--- a/polly/test/ScopInfo/allow-all-parameters-dereferencable.ll
+++ b/polly/test/ScopInfo/allow-all-parameters-dereferencable.ll
@@ -38,9 +38,9 @@ target triple = "x86_64-unknown-linux-gnu"
 @global = external global i32
 
 ; Function Attrs: nounwind uwtable
-define void @hoge(i32* noalias %arg, i32* noalias %arg1, [0 x double]* noalias %arg2, float* %A) #0 {
+define void @hoge(ptr noalias %arg, ptr noalias %arg1, ptr noalias %arg2, ptr %A) #0 {
 bb:
-  %tmp = load i32, i32* @global, align 4
+  %tmp = load i32, ptr @global, align 4
   %tmp3 = icmp sgt i32 %tmp, 1
   br label %bb14
 
@@ -51,16 +51,15 @@ bb15:                                             ; preds = %bb14
   br i1 %tmp3, label %bb16, label %bb27
 
 bb16:                                             ; preds = %bb15
-  %tmp17 = load i32, i32* %arg1, align 4
+  %tmp17 = load i32, ptr %arg1, align 4
   br label %bb18
 
 bb18:                                             ; preds = %bb18, %bb16
   %tmp19 = phi i32 [ %tmp25, %bb18 ], [ 1, %bb16 ]
   %tmp20 = sext i32 %tmp19 to i64
   %tmp21 = add nsw i64 %tmp20, -1
-  %tmp22 = getelementptr [0 x double], [0 x double]* %arg2, i64 0, i64 %tmp21
-  %tmp23 = bitcast double* %tmp22 to i64*
-  store i64 undef, i64* %tmp23, align 8
+  %tmp22 = getelementptr [0 x double], ptr %arg2, i64 0, i64 %tmp21
+  store i64 undef, ptr %tmp22, align 8
   %tmp24 = icmp eq i32 %tmp19, %tmp17
   %tmp25 = add i32 %tmp19, 1
   br i1 %tmp24, label %bb26, label %bb18
@@ -69,18 +68,18 @@ bb26:                                             ; preds = %bb18
   br label %bb27
 
 bb27:                                             ; preds = %bb26, %bb15
-  %tmp28 = load i32, i32* %arg, align 4
-  store float 42.0, float* %A
+  %tmp28 = load i32, ptr %arg, align 4
+  store float 42.0, ptr %A
   br label %bb29
 
 bb29:                                             ; preds = %bb35, %bb27
-  %tmp30 = load i32, i32* %arg1, align 4
-  store float 42.0, float* %A
+  %tmp30 = load i32, ptr %arg1, align 4
+  store float 42.0, ptr %A
   br label %bb31
 
 bb31:                                             ; preds = %bb31, %bb29
   %tmp32 = phi i32 [ 1, %bb31 ], [ 1, %bb29 ]
-  store float 42.0, float* %A
+  store float 42.0, ptr %A
   %tmp33 = icmp eq i32 %tmp32, %tmp30
   br i1 %tmp33, label %bb34, label %bb31
 

diff  --git a/polly/test/ScopInfo/assume_gep_bounds.ll b/polly/test/ScopInfo/assume_gep_bounds.ll
index 22b0c8341b7e5..d0ce47148071d 100644
--- a/polly/test/ScopInfo/assume_gep_bounds.ll
+++ b/polly/test/ScopInfo/assume_gep_bounds.ll
@@ -25,7 +25,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo([20 x [30 x float]]* %A, i64 %n, i64 %m, i64 %p) {
+define void @foo(ptr %A, i64 %n, i64 %m, i64 %p) {
 entry:
   br label %for.cond
 
@@ -54,8 +54,8 @@ for.body6:                                        ; preds = %for.cond4
   %add = add nsw i64 %i.0, %j.0
   %add7 = add nsw i64 %add, %k.0
   %conv = sitofp i64 %add7 to float
-  %arrayidx9 = getelementptr inbounds [20 x [30 x float]], [20 x [30 x float]]* %A, i64 %i.0, i64 %j.0, i64 %k.0
-  store float %conv, float* %arrayidx9, align 4
+  %arrayidx9 = getelementptr inbounds [20 x [30 x float]], ptr %A, i64 %i.0, i64 %j.0, i64 %k.0
+  store float %conv, ptr %arrayidx9, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body6

diff  --git a/polly/test/ScopInfo/assume_gep_bounds_2.ll b/polly/test/ScopInfo/assume_gep_bounds_2.ll
index 2b074bb4ef990..e327195da94cf 100644
--- a/polly/test/ScopInfo/assume_gep_bounds_2.ll
+++ b/polly/test/ScopInfo/assume_gep_bounds_2.ll
@@ -21,7 +21,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo([20 x float]* noalias %A, [20 x float]* noalias %B, i64 %n, i64 %m, i64 %p) {
+define void @foo(ptr noalias %A, ptr noalias %B, i64 %n, i64 %m, i64 %p) {
 entry:
   br label %for.cond
 
@@ -41,8 +41,8 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 for.body3:                                        ; preds = %for.cond1
   %add = add nsw i64 %i.0, %j.0
   %conv = sitofp i64 %add to float
-  %arrayidx4 = getelementptr inbounds [20 x float], [20 x float]* %A, i64 %i.0, i64 %j.0
-  store float %conv, float* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds [20 x float], ptr %A, i64 %i.0, i64 %j.0
+  store float %conv, ptr %arrayidx4, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3
@@ -75,8 +75,8 @@ for.cond14:                                       ; preds = %for.inc22, %for.bod
 for.body17:                                       ; preds = %for.cond14
   %add18 = add nsw i64 %i8.0, %j13.0
   %conv19 = sitofp i64 %add18 to float
-  %arrayidx21 = getelementptr inbounds [20 x float], [20 x float]* %B, i64 %i8.0, i64 %j13.0
-  store float %conv19, float* %arrayidx21, align 4
+  %arrayidx21 = getelementptr inbounds [20 x float], ptr %B, i64 %i8.0, i64 %j13.0
+  store float %conv19, ptr %arrayidx21, align 4
   br label %for.inc22
 
 for.inc22:                                        ; preds = %for.body17

diff  --git a/polly/test/ScopInfo/assume_gep_bounds_many.ll b/polly/test/ScopInfo/assume_gep_bounds_many.ll
index f927f5bd03201..261491564fc20 100644
--- a/polly/test/ScopInfo/assume_gep_bounds_many.ll
+++ b/polly/test/ScopInfo/assume_gep_bounds_many.ll
@@ -72,7 +72,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n1_a, i64 %n1_b, i64 %n1_c, i64 %n1_d, i64 %n2_a, i64 %n2_b, i64 %n2_c, i64 %n2_d, i64 %n3_a, i64 %n3_b, i64 %n3_c, i64 %n3_d, i64 %n4_a, i64 %n4_b, i64 %n4_c, i64 %n4_d, i64 %n5_a, i64 %n5_b, i64 %n5_c, i64 %n5_d, i64 %n6_a, i64 %n6_b, i64 %n6_c, i64 %n6_d, i64 %n7_a, i64 %n7_b, i64 %n7_c, i64 %n7_d, i64 %n8_a, i64 %n8_b, i64 %n8_c, i64 %n8_d, i64 %n9_a, i64 %n9_b, i64 %n9_c, i64 %n9_d, i64 %p1_b, i64 %p1_c, i64 %p1_d, i64 %p2_b, i64 %p2_c, i64 %p2_d, i64 %p3_b, i64 %p3_c, i64 %p3_d, i64 %p4_b, i64 %p4_c, i64 %p4_d, i64 %p5_b, i64 %p5_c, i64 %p5_d, i64 %p6_b, i64 %p6_c, i64 %p6_d, i64 %p7_b, i64 %p7_c, i64 %p7_d, i64 %p8_b, i64 %p8_c, i64 %p8_d, i64 %p9_b, i64 %p9_c, i64 %p9_d, float* %A_1, float* %A_2, float* %A_3, float* %A_4, float* %A_5, float* %A_6, float* %A_7, float* %A_8, float* %A_9) {
+define void @foo(i64 %n1_a, i64 %n1_b, i64 %n1_c, i64 %n1_d, i64 %n2_a, i64 %n2_b, i64 %n2_c, i64 %n2_d, i64 %n3_a, i64 %n3_b, i64 %n3_c, i64 %n3_d, i64 %n4_a, i64 %n4_b, i64 %n4_c, i64 %n4_d, i64 %n5_a, i64 %n5_b, i64 %n5_c, i64 %n5_d, i64 %n6_a, i64 %n6_b, i64 %n6_c, i64 %n6_d, i64 %n7_a, i64 %n7_b, i64 %n7_c, i64 %n7_d, i64 %n8_a, i64 %n8_b, i64 %n8_c, i64 %n8_d, i64 %n9_a, i64 %n9_b, i64 %n9_c, i64 %n9_d, i64 %p1_b, i64 %p1_c, i64 %p1_d, i64 %p2_b, i64 %p2_c, i64 %p2_d, i64 %p3_b, i64 %p3_c, i64 %p3_d, i64 %p4_b, i64 %p4_c, i64 %p4_d, i64 %p5_b, i64 %p5_c, i64 %p5_d, i64 %p6_b, i64 %p6_c, i64 %p6_d, i64 %p7_b, i64 %p7_c, i64 %p7_d, i64 %p8_b, i64 %p8_c, i64 %p8_d, i64 %p9_b, i64 %p9_c, i64 %p9_d, ptr %A_1, ptr %A_2, ptr %A_3, ptr %A_4, ptr %A_5, ptr %A_6, ptr %A_7, ptr %A_8, ptr %A_9) {
 bb:
   br label %bb1
 
@@ -113,16 +113,16 @@ bb11:                                             ; preds = %bb9
   %tmp16 = mul nuw i64 %p1_b, %p1_c
   %tmp17 = mul nuw i64 %tmp16, %p1_d
   %tmp18 = mul nsw i64 %i.0, %tmp17
-  %tmp19 = getelementptr inbounds float, float* %A_1, i64 %tmp18
+  %tmp19 = getelementptr inbounds float, ptr %A_1, i64 %tmp18
   %tmp20 = mul nuw i64 %p1_c, %p1_d
   %tmp21 = mul nsw i64 %j.0, %tmp20
-  %tmp22 = getelementptr inbounds float, float* %tmp19, i64 %tmp21
+  %tmp22 = getelementptr inbounds float, ptr %tmp19, i64 %tmp21
   %tmp23 = mul nsw i64 %k.0, %p1_d
-  %tmp24 = getelementptr inbounds float, float* %tmp22, i64 %tmp23
-  %tmp25 = getelementptr inbounds float, float* %tmp24, i64 %l.0
-  %tmp26 = load float, float* %tmp25, align 4
+  %tmp24 = getelementptr inbounds float, ptr %tmp22, i64 %tmp23
+  %tmp25 = getelementptr inbounds float, ptr %tmp24, i64 %l.0
+  %tmp26 = load float, ptr %tmp25, align 4
   %tmp27 = fadd float %tmp26, %tmp15
-  store float %tmp27, float* %tmp25, align 4
+  store float %tmp27, ptr %tmp25, align 4
   br label %bb28
 
 bb28:                                             ; preds = %bb11
@@ -190,16 +190,16 @@ bb51:                                             ; preds = %bb49
   %tmp56 = mul nuw i64 %p2_b, %p2_c
   %tmp57 = mul nuw i64 %tmp56, %p2_d
   %tmp58 = mul nsw i64 %i1.0, %tmp57
-  %tmp59 = getelementptr inbounds float, float* %A_2, i64 %tmp58
+  %tmp59 = getelementptr inbounds float, ptr %A_2, i64 %tmp58
   %tmp60 = mul nuw i64 %p2_c, %p2_d
   %tmp61 = mul nsw i64 %j2.0, %tmp60
-  %tmp62 = getelementptr inbounds float, float* %tmp59, i64 %tmp61
+  %tmp62 = getelementptr inbounds float, ptr %tmp59, i64 %tmp61
   %tmp63 = mul nsw i64 %k3.0, %p2_d
-  %tmp64 = getelementptr inbounds float, float* %tmp62, i64 %tmp63
-  %tmp65 = getelementptr inbounds float, float* %tmp64, i64 %l4.0
-  %tmp66 = load float, float* %tmp65, align 4
+  %tmp64 = getelementptr inbounds float, ptr %tmp62, i64 %tmp63
+  %tmp65 = getelementptr inbounds float, ptr %tmp64, i64 %l4.0
+  %tmp66 = load float, ptr %tmp65, align 4
   %tmp67 = fadd float %tmp66, %tmp55
-  store float %tmp67, float* %tmp65, align 4
+  store float %tmp67, ptr %tmp65, align 4
   br label %bb68
 
 bb68:                                             ; preds = %bb51
@@ -267,16 +267,16 @@ bb91:                                             ; preds = %bb89
   %tmp96 = mul nuw i64 %p3_b, %p3_c
   %tmp97 = mul nuw i64 %tmp96, %p3_d
   %tmp98 = mul nsw i64 %i5.0, %tmp97
-  %tmp99 = getelementptr inbounds float, float* %A_3, i64 %tmp98
+  %tmp99 = getelementptr inbounds float, ptr %A_3, i64 %tmp98
   %tmp100 = mul nuw i64 %p3_c, %p3_d
   %tmp101 = mul nsw i64 %j6.0, %tmp100
-  %tmp102 = getelementptr inbounds float, float* %tmp99, i64 %tmp101
+  %tmp102 = getelementptr inbounds float, ptr %tmp99, i64 %tmp101
   %tmp103 = mul nsw i64 %k7.0, %p3_d
-  %tmp104 = getelementptr inbounds float, float* %tmp102, i64 %tmp103
-  %tmp105 = getelementptr inbounds float, float* %tmp104, i64 %l8.0
-  %tmp106 = load float, float* %tmp105, align 4
+  %tmp104 = getelementptr inbounds float, ptr %tmp102, i64 %tmp103
+  %tmp105 = getelementptr inbounds float, ptr %tmp104, i64 %l8.0
+  %tmp106 = load float, ptr %tmp105, align 4
   %tmp107 = fadd float %tmp106, %tmp95
-  store float %tmp107, float* %tmp105, align 4
+  store float %tmp107, ptr %tmp105, align 4
   br label %bb108
 
 bb108:                                            ; preds = %bb91
@@ -344,16 +344,16 @@ bb131:                                            ; preds = %bb129
   %tmp136 = mul nuw i64 %p4_b, %p4_c
   %tmp137 = mul nuw i64 %tmp136, %p4_d
   %tmp138 = mul nsw i64 %i9.0, %tmp137
-  %tmp139 = getelementptr inbounds float, float* %A_4, i64 %tmp138
+  %tmp139 = getelementptr inbounds float, ptr %A_4, i64 %tmp138
   %tmp140 = mul nuw i64 %p4_c, %p4_d
   %tmp141 = mul nsw i64 %j10.0, %tmp140
-  %tmp142 = getelementptr inbounds float, float* %tmp139, i64 %tmp141
+  %tmp142 = getelementptr inbounds float, ptr %tmp139, i64 %tmp141
   %tmp143 = mul nsw i64 %k11.0, %p4_d
-  %tmp144 = getelementptr inbounds float, float* %tmp142, i64 %tmp143
-  %tmp145 = getelementptr inbounds float, float* %tmp144, i64 %l12.0
-  %tmp146 = load float, float* %tmp145, align 4
+  %tmp144 = getelementptr inbounds float, ptr %tmp142, i64 %tmp143
+  %tmp145 = getelementptr inbounds float, ptr %tmp144, i64 %l12.0
+  %tmp146 = load float, ptr %tmp145, align 4
   %tmp147 = fadd float %tmp146, %tmp135
-  store float %tmp147, float* %tmp145, align 4
+  store float %tmp147, ptr %tmp145, align 4
   br label %bb148
 
 bb148:                                            ; preds = %bb131
@@ -421,16 +421,16 @@ bb171:                                            ; preds = %bb169
   %tmp176 = mul nuw i64 %p5_b, %p5_c
   %tmp177 = mul nuw i64 %tmp176, %p5_d
   %tmp178 = mul nsw i64 %i13.0, %tmp177
-  %tmp179 = getelementptr inbounds float, float* %A_5, i64 %tmp178
+  %tmp179 = getelementptr inbounds float, ptr %A_5, i64 %tmp178
   %tmp180 = mul nuw i64 %p5_c, %p5_d
   %tmp181 = mul nsw i64 %j14.0, %tmp180
-  %tmp182 = getelementptr inbounds float, float* %tmp179, i64 %tmp181
+  %tmp182 = getelementptr inbounds float, ptr %tmp179, i64 %tmp181
   %tmp183 = mul nsw i64 %k15.0, %p5_d
-  %tmp184 = getelementptr inbounds float, float* %tmp182, i64 %tmp183
-  %tmp185 = getelementptr inbounds float, float* %tmp184, i64 %l16.0
-  %tmp186 = load float, float* %tmp185, align 4
+  %tmp184 = getelementptr inbounds float, ptr %tmp182, i64 %tmp183
+  %tmp185 = getelementptr inbounds float, ptr %tmp184, i64 %l16.0
+  %tmp186 = load float, ptr %tmp185, align 4
   %tmp187 = fadd float %tmp186, %tmp175
-  store float %tmp187, float* %tmp185, align 4
+  store float %tmp187, ptr %tmp185, align 4
   br label %bb188
 
 bb188:                                            ; preds = %bb171
@@ -498,16 +498,16 @@ bb211:                                            ; preds = %bb209
   %tmp216 = mul nuw i64 %p6_b, %p6_c
   %tmp217 = mul nuw i64 %tmp216, %p6_d
   %tmp218 = mul nsw i64 %i17.0, %tmp217
-  %tmp219 = getelementptr inbounds float, float* %A_6, i64 %tmp218
+  %tmp219 = getelementptr inbounds float, ptr %A_6, i64 %tmp218
   %tmp220 = mul nuw i64 %p6_c, %p6_d
   %tmp221 = mul nsw i64 %j18.0, %tmp220
-  %tmp222 = getelementptr inbounds float, float* %tmp219, i64 %tmp221
+  %tmp222 = getelementptr inbounds float, ptr %tmp219, i64 %tmp221
   %tmp223 = mul nsw i64 %k19.0, %p6_d
-  %tmp224 = getelementptr inbounds float, float* %tmp222, i64 %tmp223
-  %tmp225 = getelementptr inbounds float, float* %tmp224, i64 %l20.0
-  %tmp226 = load float, float* %tmp225, align 4
+  %tmp224 = getelementptr inbounds float, ptr %tmp222, i64 %tmp223
+  %tmp225 = getelementptr inbounds float, ptr %tmp224, i64 %l20.0
+  %tmp226 = load float, ptr %tmp225, align 4
   %tmp227 = fadd float %tmp226, %tmp215
-  store float %tmp227, float* %tmp225, align 4
+  store float %tmp227, ptr %tmp225, align 4
   br label %bb228
 
 bb228:                                            ; preds = %bb211
@@ -575,16 +575,16 @@ bb251:                                            ; preds = %bb249
   %tmp256 = mul nuw i64 %p7_b, %p7_c
   %tmp257 = mul nuw i64 %tmp256, %p7_d
   %tmp258 = mul nsw i64 %i21.0, %tmp257
-  %tmp259 = getelementptr inbounds float, float* %A_7, i64 %tmp258
+  %tmp259 = getelementptr inbounds float, ptr %A_7, i64 %tmp258
   %tmp260 = mul nuw i64 %p7_c, %p7_d
   %tmp261 = mul nsw i64 %j22.0, %tmp260
-  %tmp262 = getelementptr inbounds float, float* %tmp259, i64 %tmp261
+  %tmp262 = getelementptr inbounds float, ptr %tmp259, i64 %tmp261
   %tmp263 = mul nsw i64 %k23.0, %p7_d
-  %tmp264 = getelementptr inbounds float, float* %tmp262, i64 %tmp263
-  %tmp265 = getelementptr inbounds float, float* %tmp264, i64 %l24.0
-  %tmp266 = load float, float* %tmp265, align 4
+  %tmp264 = getelementptr inbounds float, ptr %tmp262, i64 %tmp263
+  %tmp265 = getelementptr inbounds float, ptr %tmp264, i64 %l24.0
+  %tmp266 = load float, ptr %tmp265, align 4
   %tmp267 = fadd float %tmp266, %tmp255
-  store float %tmp267, float* %tmp265, align 4
+  store float %tmp267, ptr %tmp265, align 4
   br label %bb268
 
 bb268:                                            ; preds = %bb251
@@ -652,16 +652,16 @@ bb291:                                            ; preds = %bb289
   %tmp296 = mul nuw i64 %p8_b, %p8_c
   %tmp297 = mul nuw i64 %tmp296, %p8_d
   %tmp298 = mul nsw i64 %i25.0, %tmp297
-  %tmp299 = getelementptr inbounds float, float* %A_8, i64 %tmp298
+  %tmp299 = getelementptr inbounds float, ptr %A_8, i64 %tmp298
   %tmp300 = mul nuw i64 %p8_c, %p8_d
   %tmp301 = mul nsw i64 %j26.0, %tmp300
-  %tmp302 = getelementptr inbounds float, float* %tmp299, i64 %tmp301
+  %tmp302 = getelementptr inbounds float, ptr %tmp299, i64 %tmp301
   %tmp303 = mul nsw i64 %k27.0, %p8_d
-  %tmp304 = getelementptr inbounds float, float* %tmp302, i64 %tmp303
-  %tmp305 = getelementptr inbounds float, float* %tmp304, i64 %l28.0
-  %tmp306 = load float, float* %tmp305, align 4
+  %tmp304 = getelementptr inbounds float, ptr %tmp302, i64 %tmp303
+  %tmp305 = getelementptr inbounds float, ptr %tmp304, i64 %l28.0
+  %tmp306 = load float, ptr %tmp305, align 4
   %tmp307 = fadd float %tmp306, %tmp295
-  store float %tmp307, float* %tmp305, align 4
+  store float %tmp307, ptr %tmp305, align 4
   br label %bb308
 
 bb308:                                            ; preds = %bb291
@@ -729,16 +729,16 @@ bb331:                                            ; preds = %bb329
   %tmp336 = mul nuw i64 %p9_b, %p9_c
   %tmp337 = mul nuw i64 %tmp336, %p9_d
   %tmp338 = mul nsw i64 %i29.0, %tmp337
-  %tmp339 = getelementptr inbounds float, float* %A_9, i64 %tmp338
+  %tmp339 = getelementptr inbounds float, ptr %A_9, i64 %tmp338
   %tmp340 = mul nuw i64 %p9_c, %p9_d
   %tmp341 = mul nsw i64 %j30.0, %tmp340
-  %tmp342 = getelementptr inbounds float, float* %tmp339, i64 %tmp341
+  %tmp342 = getelementptr inbounds float, ptr %tmp339, i64 %tmp341
   %tmp343 = mul nsw i64 %k31.0, %p9_d
-  %tmp344 = getelementptr inbounds float, float* %tmp342, i64 %tmp343
-  %tmp345 = getelementptr inbounds float, float* %tmp344, i64 %l32.0
-  %tmp346 = load float, float* %tmp345, align 4
+  %tmp344 = getelementptr inbounds float, ptr %tmp342, i64 %tmp343
+  %tmp345 = getelementptr inbounds float, ptr %tmp344, i64 %l32.0
+  %tmp346 = load float, ptr %tmp345, align 4
   %tmp347 = fadd float %tmp346, %tmp335
-  store float %tmp347, float* %tmp345, align 4
+  store float %tmp347, ptr %tmp345, align 4
   br label %bb348
 
 bb348:                                            ; preds = %bb331

diff  --git a/polly/test/ScopInfo/avoid_new_parameters_from_geps.ll b/polly/test/ScopInfo/avoid_new_parameters_from_geps.ll
index 309ef6b33d209..0e17eb1d36685 100644
--- a/polly/test/ScopInfo/avoid_new_parameters_from_geps.ll
+++ b/polly/test/ScopInfo/avoid_new_parameters_from_geps.ll
@@ -13,10 +13,10 @@
 ; CHECK-NEXT:     Invalid Context:
 ; CHECK-NEXT:     {  : false }
 ; CHECK:          Arrays {
-; CHECK-NEXT:         i32* MemRef_team2_0_in; // Element size 8
+; CHECK-NEXT:         ptr MemRef_team2_0_in; // Element size 8
 ; CHECK-NEXT:     }
 ; CHECK-NEXT:     Arrays (Bounds as pw_affs) {
-; CHECK-NEXT:         i32* MemRef_team2_0_in; // Element size 8
+; CHECK-NEXT:         ptr MemRef_team2_0_in; // Element size 8
 ; CHECK-NEXT:     }
 ; CHECK-NEXT:     Alias Groups (0):
 ; CHECK-NEXT:         n/a
@@ -50,14 +50,14 @@ for.body58:                                       ; preds = %for.cond56.preheade
   br i1 %cmp59, label %if.then60, label %if.else71
 
 if.then60:                                        ; preds = %for.body58
-  %arrayidx70 = getelementptr inbounds [18 x [15 x [3 x i32]]], [18 x [15 x [3 x i32]]]* @sched, i64 0, i64 1, i64 %indvars.iv78, i64 1
+  %arrayidx70 = getelementptr inbounds [18 x [15 x [3 x i32]]], ptr @sched, i64 0, i64 1, i64 %indvars.iv78, i64 1
   br label %land.lhs.true
 
 if.else71:                                        ; preds = %for.body58
   br label %land.lhs.true
 
 land.lhs.true:                                    ; preds = %if.else71, %if.then60
-  %team2.0.in = phi i32* [ %arrayidx70, %if.then60 ], [ undef, %if.else71 ]
+  %team2.0.in = phi ptr [ %arrayidx70, %if.then60 ], [ undef, %if.else71 ]
   br i1 undef, label %for.inc158, label %if.then86
 
 if.then86:                                        ; preds = %land.lhs.true

diff  --git a/polly/test/ScopInfo/bool-addrec.ll b/polly/test/ScopInfo/bool-addrec.ll
index acecfb5b14ca8..1924a4b5266b3 100644
--- a/polly/test/ScopInfo/bool-addrec.ll
+++ b/polly/test/ScopInfo/bool-addrec.ll
@@ -10,7 +10,7 @@
 
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"
 
-define void @f(i32* %a, i32 %x) {
+define void @f(ptr %a, i32 %x) {
 entry:
   br label %for.body
 
@@ -21,22 +21,22 @@ for.body:                                         ; preds = %entry, %for.inc
   br i1 %cmp1, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %a, i32 %i.03
-  store i32 3, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %a, i32 %i.03
+  store i32 3, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body
   %mul = shl nsw i32 %i.03, 1
-  %arrayidx2 = getelementptr inbounds i32, i32* %a, i32 %mul
-  store i32 3, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %a, i32 %mul
+  store i32 3, ptr %arrayidx2, align 4
   %rem32 = and i32 %i.03, 1
   %cmp4 = icmp eq i32 %rem32, 0
   br i1 %cmp4, label %if.then5, label %for.inc
 
 if.then5:                                         ; preds = %if.end
   %mul6 = mul nsw i32 %i.03, 3
-  %arrayidx7 = getelementptr inbounds i32, i32* %a, i32 %mul6
-  store i32 3, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %a, i32 %mul6
+  store i32 3, ptr %arrayidx7, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end, %if.then5

diff  --git a/polly/test/ScopInfo/bounded_loop_assumptions.ll b/polly/test/ScopInfo/bounded_loop_assumptions.ll
index d35ca1f54f247..d472c7586c537 100644
--- a/polly/test/ScopInfo/bounded_loop_assumptions.ll
+++ b/polly/test/ScopInfo/bounded_loop_assumptions.ll
@@ -20,7 +20,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @jd(i32* noalias %A, i32 %x, i32 %N) {
+define i32 @jd(ptr noalias %A, i32 %x, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -44,8 +44,8 @@ for.body3:                                        ; preds = %for.cond1
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %x.addr.1, %tmp1
   %inc = add i32 %j.0, 1
   br label %for.cond1

diff  --git a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-2.ll b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-2.ll
index 31180fc714114..5c5f264aab609 100644
--- a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-2.ll
+++ b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-2.ll
@@ -20,14 +20,14 @@
 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
 target triple = "aarch64--linux-android"
 
-define void @f(i16 %event, float* %A) {
+define void @f(i16 %event, ptr %A) {
 entry:
   br label %loop
 
 loop:
   %indvar = phi i8 [ 0, %entry ], [ %indvar.next, %loop ]
   %indvar.next = add i8 %indvar, -1
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   %cmp = icmp eq i8 %indvar.next, 0
   br i1 false, label %barrier, label %loop
 
@@ -39,7 +39,7 @@ branch:
   br i1 %cmp, label %branch, label %then
 
 then:
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   br label %end
 
 end:

diff  --git a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-3.ll b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-3.ll
index 7ce66eb4cc35f..d69d3a16c0d72 100644
--- a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-3.ll
+++ b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-3.ll
@@ -59,14 +59,14 @@
 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
 target triple = "aarch64--linux-android"
 
-define void @f(i16 %event, i8 %p, float* %A) {
+define void @f(i16 %event, i8 %p, ptr %A) {
 entry:
   br label %loop
 
 loop:
   %indvar = phi i8 [ 0, %entry ], [ %indvar.next, %loop ]
   %indvar.next = add i8 %indvar, 1
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   %cmp = icmp eq i8 %indvar.next, %p
   %possibly_infinite = icmp eq i8 100, %p
   br i1 %possibly_infinite, label %branch, label %loop
@@ -75,7 +75,7 @@ branch:
   br i1 %cmp, label %end, label %then
 
 then:
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   br label %end
 
 end:

diff  --git a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations.ll b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations.ll
index 0196b03916f62..57918fa5c92d9 100644
--- a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations.ll
+++ b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations.ll
@@ -28,7 +28,7 @@
 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
 target triple = "aarch64--linux-android"
 
-define void @f(i16 %event, float* %A) {
+define void @f(i16 %event, ptr %A) {
 entry:
   br label %loop
 
@@ -42,7 +42,7 @@ branch:
   br i1 %cmp, label %end, label %then
 
 then:
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   br label %end
 
 end:

diff  --git a/polly/test/ScopInfo/bug_2011_1_5.ll b/polly/test/ScopInfo/bug_2011_1_5.ll
index f00a73f537564..95c25f9d9cdbd 100644
--- a/polly/test/ScopInfo/bug_2011_1_5.ll
+++ b/polly/test/ScopInfo/bug_2011_1_5.ll
@@ -12,7 +12,7 @@ entry:
  br label %bb1.i198.i
 
 bb1.i198.i:                                       ; preds = %bb.i197.i, %psetq.exit196.i
-  %tmp51.i = inttoptr i64 0 to %struct.precisionType*
+  %tmp51.i = inttoptr i64 0 to ptr
   br i1 undef, label %bb1.i210.i, label %bb.i209.i
 
 bb.i209.i:                                        ; preds = %bb1.i198.i
@@ -23,8 +23,7 @@ bb1.i210.i:                                       ; preds = %bb.i209.i, %bb1.i19
   br i1 %0, label %bb1.i216.i, label %bb.i215.i
 
 bb.i215.i:                                        ; preds = %bb1.i210.i
-  %1 = getelementptr inbounds %struct.precisionType, %struct.precisionType* %tmp51.i, i64 0, i32 0
-  store i16 undef, i16* %1, align 2
+  store i16 undef, ptr %tmp51.i, align 2
   br label %bb1.i216.i
 
 bb1.i216.i:                                       ; preds = %bb.i215.i, %bb1.i210.i

diff  --git a/polly/test/ScopInfo/bug_scev_not_fully_eval.ll b/polly/test/ScopInfo/bug_scev_not_fully_eval.ll
index 2d5a4a501d8af..89d5f318829e6 100644
--- a/polly/test/ScopInfo/bug_scev_not_fully_eval.ll
+++ b/polly/test/ScopInfo/bug_scev_not_fully_eval.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-print-detect -disable-output < %s | not FileCheck %s
 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"
 
- at edge.8265 = external global [72 x i32], align 32 ; <[72 x i32]*> [#uses=1]
+ at edge.8265 = external global [72 x i32], align 32 ; <ptr> [#uses=1]
 
 define void @compact_unitcell_edges() nounwind {
 bb.nph19:
@@ -22,8 +22,8 @@ bb.nph:                                           ; preds = %bb4
 bb7:                                              ; preds = %bb7, %bb.nph
   %indvar = phi i64 [ 0, %bb.nph ], [ %indvar.next, %bb7 ] ; <i64> [#uses=2]
   %tmp21 = add i64 %tmp, %indvar                  ; <i64> [#uses=1]
-  %scevgep = getelementptr [72 x i32], [72 x i32]* @edge.8265, i64 0, i64 %tmp21 ; <i32*> [#uses=1]
-  store i32 undef, i32* %scevgep, align 4
+  %scevgep = getelementptr [72 x i32], ptr @edge.8265, i64 0, i64 %tmp21 ; <ptr> [#uses=1]
+  store i32 undef, ptr %scevgep, align 4
   %indvar.next = add i64 %indvar, 1               ; <i64> [#uses=1]
   br i1 undef, label %bb10, label %bb7
 

diff  --git a/polly/test/ScopInfo/cfg_consequences.ll b/polly/test/ScopInfo/cfg_consequences.ll
index 8c5e7f2943320..84f94b135735c 100644
--- a/polly/test/ScopInfo/cfg_consequences.ll
+++ b/polly/test/ScopInfo/cfg_consequences.ll
@@ -216,112 +216,112 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @consequences(i32* %A, i32 %bool_cond, i32 %lhs, i32 %rhs) {
+define void @consequences(ptr %A, i32 %bool_cond, i32 %lhs, i32 %rhs) {
 entry:
   br label %BC
 
 BC:                                               ; preds = %entry
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   %tobool = icmp eq i32 %bool_cond, 0
   br i1 %tobool, label %M_BC, label %S_BC
 
 S_BC:                                             ; preds = %if.then
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %M_BC
 
 M_BC:                                           ; preds = %BC, %S_BC
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %NEG_BC
 
 NEG_BC:                                           ; preds = %if.end
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   %tobool1 = icmp eq i32 %bool_cond, 0
   br i1 %tobool1, label %S_NEG_BC, label %M_NEG_BC
 
 S_NEG_BC:                                         ; preds = %if.then.2
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %M_NEG_BC
 
 M_NEG_BC:                                         ; preds = %NEG_BC, %S_NEG_BC
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %SLT
 
 SLT:                                              ; preds = %if.end.3
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   %cmp = icmp slt i32 %lhs, %rhs
   br i1 %cmp, label %S_SLT, label %M_SLT
 
 S_SLT:                                            ; preds = %if.then.4
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %M_SLT
 
 M_SLT:                                         ; preds = %S_SLT, %SLT
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %SLE
 
 SLE:                                              ; preds = %if.end.5
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   %cmp6 = icmp sgt i32 %lhs, %rhs
   br i1 %cmp6, label %M_SLE, label %S_SLE
 
 S_SLE:                                            ; preds = %if.then.7
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %M_SLE
 
 M_SLE:                                         ; preds = %SLE, %S_SLE
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %SGT
 
 SGT:                                              ; preds = %if.end.8
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   %cmp9 = icmp sgt i32 %lhs, %rhs
   br i1 %cmp9, label %S_SGT, label %M_SGT
 
 S_SGT:                                            ; preds = %if.then.10
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %M_SGT
 
 M_SGT:                                        ; preds = %S_SGT, %SGT
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %SGE
 
 SGE:                                              ; preds = %if.end.11
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   %cmp12 = icmp slt i32 %lhs, %rhs
   br i1 %cmp12, label %M_SGE, label %S_SGE
 
 S_SGE:                                            ; preds = %if.then.13
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %M_SGE
 
 M_SGE:                                        ; preds = %SGE, %S_SGE
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %EQ
 
 EQ:                                               ; preds = %if.end.14
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   %cmp15 = icmp eq i32 %lhs, %rhs
   br i1 %cmp15, label %S_EQ, label %M_EQ
 
 S_EQ:                                             ; preds = %if.then.16
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %M_EQ
 
 M_EQ:                                        ; preds = %S_EQ, %EQ
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %NEQ
 
 NEQ:                                              ; preds = %if.end.17
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   %cmp18 = icmp eq i32 %lhs, %rhs
   br i1 %cmp18, label %M_NEQ, label %S_NEQ
 
 S_NEQ:                                            ; preds = %if.then.19
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %M_NEQ
 
 M_NEQ:                                        ; preds = %NEQ, %S_NEQ
-  store i32 0, i32* %A, align 4
+  store i32 0, ptr %A, align 4
   br label %exit
 
 exit:

diff  --git a/polly/test/ScopInfo/complex-branch-structure.ll b/polly/test/ScopInfo/complex-branch-structure.ll
index 0ea7117ea48be..24ebdcf213f8c 100644
--- a/polly/test/ScopInfo/complex-branch-structure.ll
+++ b/polly/test/ScopInfo/complex-branch-structure.ll
@@ -22,7 +22,7 @@
 
 ; CHECK: Low complexity assumption: {  : false }
 
-define void @foo(float* %A, float* %B, float* %C, float* %D, float* %E,
+define void @foo(ptr %A, ptr %B, ptr %C, ptr %D, ptr %E,
                  i64 %A1.p, i64 %A2.p, i64 %A3.p,
                  i64 %B1.p, i64 %B2.p, i64 %B3.p,
                  i64 %C1.p, i64 %C2.p, i64 %C3.p,
@@ -36,142 +36,142 @@ loop.header:
   switch i2 0, label %A0 [i2 1, label %A2 i2 2, label %A4]
 
 A0:
-  %val.A0 = load float, float* %A
-  store float %val.A0, float* %A
+  %val.A0 = load float, ptr %A
+  store float %val.A0, ptr %A
   br label %A1
 
 A2:
-  %val.A2 = load float, float* %A
-  store float %val.A2, float* %A
+  %val.A2 = load float, ptr %A
+  store float %val.A2, ptr %A
   %A2.cmp = icmp eq i64 %A2.p, 0
   br i1 %A2.cmp, label %A1, label %A3
 
 A4:
-  %val.A4 = load float, float* %A
-  store float %val.A4, float* %A
+  %val.A4 = load float, ptr %A
+  store float %val.A4, ptr %A
   br label %A3
 
 A1:
-  %val.A1 = load float, float* %A
-  store float %val.A1, float* %A
+  %val.A1 = load float, ptr %A
+  store float %val.A1, ptr %A
   %A1.cmp = icmp eq i64 %A1.p, 0
   br i1 %A1.cmp, label %B0, label %B2
 
 A3:
-  %val.A3 = load float, float* %A
-  store float %val.A3, float* %A
+  %val.A3 = load float, ptr %A
+  store float %val.A3, ptr %A
   %A3.cmp = icmp eq i64 %A3.p, 0
   br i1 %A3.cmp, label %B2, label %B4
 
 B0:
-  %val.B0 = load float, float* %B
-  store float %val.B0, float* %B
+  %val.B0 = load float, ptr %B
+  store float %val.B0, ptr %B
   br label %B1
 
 B2:
-  %val.B2 = load float, float* %B
-  store float %val.B2, float* %B
+  %val.B2 = load float, ptr %B
+  store float %val.B2, ptr %B
   %B2.cmp = icmp eq i64 %B2.p, 0
   br i1 %B2.cmp, label %B1, label %B3
 
 B4:
-  %val.B4 = load float, float* %B
-  store float %val.B4, float* %B
+  %val.B4 = load float, ptr %B
+  store float %val.B4, ptr %B
   br label %B3
 
 B1:
-  %val.B1 = load float, float* %B
-  store float %val.B1, float* %B
+  %val.B1 = load float, ptr %B
+  store float %val.B1, ptr %B
   %B1.cmp = icmp eq i64 %B1.p, 0
   br i1 %B1.cmp, label %C0, label %C2
 
 B3:
-  %val.B3 = load float, float* %A
-  store float %val.B3, float* %A
+  %val.B3 = load float, ptr %A
+  store float %val.B3, ptr %A
   %B3.cmp = icmp eq i64 %A3.p, 0
   br i1 %B3.cmp, label %C2, label %C4
 
 C0:
-  %val.C0 = load float, float* %C
-  store float %val.C0, float* %C
+  %val.C0 = load float, ptr %C
+  store float %val.C0, ptr %C
   br label %C1
 
 C2:
-  %val.C2 = load float, float* %C
-  store float %val.C2, float* %C
+  %val.C2 = load float, ptr %C
+  store float %val.C2, ptr %C
   %C2.cmp = icmp eq i64 %C2.p, 0
   br i1 %C2.cmp, label %C1, label %C3
 
 C4:
-  %val.C4 = load float, float* %C
-  store float %val.C4, float* %C
+  %val.C4 = load float, ptr %C
+  store float %val.C4, ptr %C
   br label %C3
 
 C1:
-  %val.C1 = load float, float* %C
-  store float %val.C1, float* %C
+  %val.C1 = load float, ptr %C
+  store float %val.C1, ptr %C
   %C1.cmp = icmp eq i64 %C1.p, 0
   br i1 %C1.cmp, label %D0, label %D2
 
 C3:
-  %val.C3 = load float, float* %C
-  store float %val.C3, float* %C
+  %val.C3 = load float, ptr %C
+  store float %val.C3, ptr %C
   %C3.cmp = icmp eq i64 %C3.p, 0
   br i1 %C3.cmp, label %D2, label %D4
 
 D0:
-  %val.D0 = load float, float* %D
-  store float %val.D0, float* %D
+  %val.D0 = load float, ptr %D
+  store float %val.D0, ptr %D
   br label %D1
 
 D2:
-  %val.D2 = load float, float* %D
-  store float %val.D2, float* %D
+  %val.D2 = load float, ptr %D
+  store float %val.D2, ptr %D
   %D2.cmp = icmp eq i64 %D2.p, 0
   br i1 %D2.cmp, label %D1, label %D3
 
 D4:
-  %val.D4 = load float, float* %D
-  store float %val.D4, float* %D
+  %val.D4 = load float, ptr %D
+  store float %val.D4, ptr %D
   br label %D3
 
 D1:
-  %val.D1 = load float, float* %D
-  store float %val.D1, float* %D
+  %val.D1 = load float, ptr %D
+  store float %val.D1, ptr %D
   %D1.cmp = icmp eq i64 %D1.p, 0
   br i1 %D1.cmp, label %E0, label %E2
 
 D3:
-  %val.D3 = load float, float* %D
-  store float %val.D3, float* %D
+  %val.D3 = load float, ptr %D
+  store float %val.D3, ptr %D
   %D3.cmp = icmp eq i64 %D3.p, 0
   br i1 %D3.cmp, label %E2, label %E4
 
 E0:
-  %val.E0 = load float, float* %E
-  store float %val.E0, float* %E
+  %val.E0 = load float, ptr %E
+  store float %val.E0, ptr %E
   br label %E1
 
 E2:
-  %val.E2 = load float, float* %E
-  store float %val.E2, float* %E
+  %val.E2 = load float, ptr %E
+  store float %val.E2, ptr %E
   %E2.cmp = icmp eq i64 %E2.p, 0
   br i1 %E2.cmp, label %E1, label %E3
 
 E4:
-  %val.E4 = load float, float* %E
-  store float %val.E4, float* %E
+  %val.E4 = load float, ptr %E
+  store float %val.E4, ptr %E
   br label %E3
 
 E1:
-  %val.E1 = load float, float* %E
-  store float %val.E1, float* %E
+  %val.E1 = load float, ptr %E
+  store float %val.E1, ptr %E
   %E1.cmp = icmp eq i64 %E1.p, 0
   br i1 %E1.cmp, label %F0, label %F2
 
 E3:
-  %val.E3 = load float, float* %E
-  store float %val.E3, float* %E
+  %val.E3 = load float, ptr %E
+  store float %val.E3, ptr %E
   %E3.cmp = icmp eq i64 %E3.p, 0
   br i1 %E3.cmp, label %F2, label %F4
 

diff  --git a/polly/test/ScopInfo/complex-condition.ll b/polly/test/ScopInfo/complex-condition.ll
index cee9edb7f3810..31d34b0337253 100644
--- a/polly/test/ScopInfo/complex-condition.ll
+++ b/polly/test/ScopInfo/complex-condition.ll
@@ -23,119 +23,119 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %Begin
 
 Begin:                                            ; preds = %entry
-  %tmp = load i32, i32* %A, align 4
+  %tmp = load i32, ptr %A, align 4
   %cmp = icmp eq i32 %tmp, 1
-  %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 1
-  %tmp1 = load i32, i32* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %A, i64 1
+  %tmp1 = load i32, ptr %arrayidx1, align 4
   %cmp2 = icmp eq i32 %tmp1, 1
   %or = or i1 %cmp, %cmp2
-  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 2
-  %tmp2 = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 2
+  %tmp2 = load i32, ptr %arrayidx4, align 4
   %cmp5 = icmp eq i32 %tmp2, 1
   %or7 = or i1 %or, %cmp5
-  %arrayidx8 = getelementptr inbounds i32, i32* %A, i64 3
-  %tmp3 = load i32, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %A, i64 3
+  %tmp3 = load i32, ptr %arrayidx8, align 4
   %cmp9 = icmp eq i32 %tmp3, 1
   %or11 = or i1 %or7, %cmp9
-  %arrayidx12 = getelementptr inbounds i32, i32* %A, i64 4
-  %tmp4 = load i32, i32* %arrayidx12, align 4
+  %arrayidx12 = getelementptr inbounds i32, ptr %A, i64 4
+  %tmp4 = load i32, ptr %arrayidx12, align 4
   %cmp13 = icmp eq i32 %tmp4, 1
   %or15 = or i1 %or11, %cmp13
-  %arrayidx16 = getelementptr inbounds i32, i32* %A, i64 5
-  %tmp5 = load i32, i32* %arrayidx16, align 4
+  %arrayidx16 = getelementptr inbounds i32, ptr %A, i64 5
+  %tmp5 = load i32, ptr %arrayidx16, align 4
   %cmp17 = icmp eq i32 %tmp5, 1
   %or19 = or i1 %or15, %cmp17
-  %arrayidx20 = getelementptr inbounds i32, i32* %A, i64 6
-  %tmp6 = load i32, i32* %arrayidx20, align 4
+  %arrayidx20 = getelementptr inbounds i32, ptr %A, i64 6
+  %tmp6 = load i32, ptr %arrayidx20, align 4
   %cmp21 = icmp eq i32 %tmp6, 1
   %or23 = or i1 %or19, %cmp21
-  %arrayidx24 = getelementptr inbounds i32, i32* %A, i64 7
-  %tmp7 = load i32, i32* %arrayidx24, align 4
+  %arrayidx24 = getelementptr inbounds i32, ptr %A, i64 7
+  %tmp7 = load i32, ptr %arrayidx24, align 4
   %cmp25 = icmp eq i32 %tmp7, 1
   %or27 = or i1 %or23, %cmp25
-  %arrayidx28 = getelementptr inbounds i32, i32* %A, i64 8
-  %tmp8 = load i32, i32* %arrayidx28, align 4
+  %arrayidx28 = getelementptr inbounds i32, ptr %A, i64 8
+  %tmp8 = load i32, ptr %arrayidx28, align 4
   %cmp29 = icmp eq i32 %tmp8, 1
   %or31 = or i1 %or27, %cmp29
-  %arrayidx32 = getelementptr inbounds i32, i32* %A, i64 9
-  %tmp9 = load i32, i32* %arrayidx32, align 4
+  %arrayidx32 = getelementptr inbounds i32, ptr %A, i64 9
+  %tmp9 = load i32, ptr %arrayidx32, align 4
   %cmp33 = icmp eq i32 %tmp9, 1
   %or35 = or i1 %or31, %cmp33
-  %arrayidx36 = getelementptr inbounds i32, i32* %A, i64 10
-  %tmp10 = load i32, i32* %arrayidx36, align 4
+  %arrayidx36 = getelementptr inbounds i32, ptr %A, i64 10
+  %tmp10 = load i32, ptr %arrayidx36, align 4
   %cmp37 = icmp eq i32 %tmp10, 1
   %or39 = or i1 %or35, %cmp37
-  %arrayidx40 = getelementptr inbounds i32, i32* %A, i64 11
-  %tmp11 = load i32, i32* %arrayidx40, align 4
+  %arrayidx40 = getelementptr inbounds i32, ptr %A, i64 11
+  %tmp11 = load i32, ptr %arrayidx40, align 4
   %cmp41 = icmp eq i32 %tmp11, 1
   %or43 = or i1 %or39, %cmp41
-  %arrayidx44 = getelementptr inbounds i32, i32* %A, i64 12
-  %tmp12 = load i32, i32* %arrayidx44, align 4
+  %arrayidx44 = getelementptr inbounds i32, ptr %A, i64 12
+  %tmp12 = load i32, ptr %arrayidx44, align 4
   %cmp45 = icmp eq i32 %tmp12, 1
   %or47 = or i1 %or43, %cmp45
-  %arrayidx48 = getelementptr inbounds i32, i32* %A, i64 13
-  %tmp13 = load i32, i32* %arrayidx48, align 4
+  %arrayidx48 = getelementptr inbounds i32, ptr %A, i64 13
+  %tmp13 = load i32, ptr %arrayidx48, align 4
   %cmp49 = icmp eq i32 %tmp13, 1
   %or51 = or i1 %or47, %cmp49
-  %arrayidx52 = getelementptr inbounds i32, i32* %A, i64 14
-  %tmp14 = load i32, i32* %arrayidx52, align 4
+  %arrayidx52 = getelementptr inbounds i32, ptr %A, i64 14
+  %tmp14 = load i32, ptr %arrayidx52, align 4
   %cmp53 = icmp eq i32 %tmp14, 1
   %or55 = or i1 %or51, %cmp53
-  %arrayidx56 = getelementptr inbounds i32, i32* %A, i64 15
-  %tmp15 = load i32, i32* %arrayidx56, align 4
+  %arrayidx56 = getelementptr inbounds i32, ptr %A, i64 15
+  %tmp15 = load i32, ptr %arrayidx56, align 4
   %cmp57 = icmp eq i32 %tmp15, 1
   %or59 = or i1 %or55, %cmp57
-  %arrayidx60 = getelementptr inbounds i32, i32* %A, i64 16
-  %tmp16 = load i32, i32* %arrayidx60, align 4
+  %arrayidx60 = getelementptr inbounds i32, ptr %A, i64 16
+  %tmp16 = load i32, ptr %arrayidx60, align 4
   %cmp61 = icmp eq i32 %tmp16, 1
   %or63 = or i1 %or59, %cmp61
-  %arrayidx64 = getelementptr inbounds i32, i32* %A, i64 17
-  %tmp17 = load i32, i32* %arrayidx64, align 4
+  %arrayidx64 = getelementptr inbounds i32, ptr %A, i64 17
+  %tmp17 = load i32, ptr %arrayidx64, align 4
   %cmp65 = icmp eq i32 %tmp17, 1
   %or67 = or i1 %or63, %cmp65
-  %arrayidx68 = getelementptr inbounds i32, i32* %A, i64 18
-  %tmp18 = load i32, i32* %arrayidx68, align 4
+  %arrayidx68 = getelementptr inbounds i32, ptr %A, i64 18
+  %tmp18 = load i32, ptr %arrayidx68, align 4
   %cmp69 = icmp eq i32 %tmp18, 1
   %or71 = or i1 %or67, %cmp69
-  %arrayidx72 = getelementptr inbounds i32, i32* %A, i64 19
-  %tmp19 = load i32, i32* %arrayidx72, align 4
+  %arrayidx72 = getelementptr inbounds i32, ptr %A, i64 19
+  %tmp19 = load i32, ptr %arrayidx72, align 4
   %cmp73 = icmp eq i32 %tmp19, 1
   %or75 = or i1 %or71, %cmp73
-  %arrayidx76 = getelementptr inbounds i32, i32* %A, i64 20
-  %tmp20 = load i32, i32* %arrayidx76, align 4
+  %arrayidx76 = getelementptr inbounds i32, ptr %A, i64 20
+  %tmp20 = load i32, ptr %arrayidx76, align 4
   %cmp77 = icmp eq i32 %tmp20, 1
   %or79 = or i1 %or75, %cmp77
-  %arrayidx80 = getelementptr inbounds i32, i32* %A, i64 21
-  %tmp21 = load i32, i32* %arrayidx80, align 4
+  %arrayidx80 = getelementptr inbounds i32, ptr %A, i64 21
+  %tmp21 = load i32, ptr %arrayidx80, align 4
   %cmp81 = icmp eq i32 %tmp21, 1
   %or83 = or i1 %or79, %cmp81
-  %arrayidx84 = getelementptr inbounds i32, i32* %A, i64 22
-  %tmp22 = load i32, i32* %arrayidx84, align 4
+  %arrayidx84 = getelementptr inbounds i32, ptr %A, i64 22
+  %tmp22 = load i32, ptr %arrayidx84, align 4
   %cmp85 = icmp eq i32 %tmp22, 1
   %or87 = or i1 %or83, %cmp85
-  %arrayidx88 = getelementptr inbounds i32, i32* %A, i64 23
-  %tmp23 = load i32, i32* %arrayidx88, align 4
+  %arrayidx88 = getelementptr inbounds i32, ptr %A, i64 23
+  %tmp23 = load i32, ptr %arrayidx88, align 4
   %cmp88 = icmp eq i32 %tmp23, 1
   %or89 = or i1 %or87, %cmp88
   br i1 %or89, label %if.else, label %if.then
 
 if.then:                                          ; preds = %Begin
-  %arrayidx90 = getelementptr inbounds i32, i32* %A, i64 -1
-  %tmp24 = load i32, i32* %arrayidx90, align 4
+  %arrayidx90 = getelementptr inbounds i32, ptr %A, i64 -1
+  %tmp24 = load i32, ptr %arrayidx90, align 4
   %inc = add nsw i32 %tmp24, 1
-  store i32 %inc, i32* %arrayidx90, align 4
+  store i32 %inc, ptr %arrayidx90, align 4
   br label %if.end
 
 if.else:                                          ; preds = %Begin
-  %arrayidx91 = getelementptr inbounds i32, i32* %A, i64 -1
-  %tmp25 = load i32, i32* %arrayidx91, align 4
+  %arrayidx91 = getelementptr inbounds i32, ptr %A, i64 -1
+  %tmp25 = load i32, ptr %arrayidx91, align 4
   %dec = add nsw i32 %tmp25, -1
-  store i32 %dec, i32* %arrayidx91, align 4
+  store i32 %dec, ptr %arrayidx91, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/polly/test/ScopInfo/complex-expression.ll b/polly/test/ScopInfo/complex-expression.ll
index 72777b9ecdd6d..1822c9de852a4 100644
--- a/polly/test/ScopInfo/complex-expression.ll
+++ b/polly/test/ScopInfo/complex-expression.ll
@@ -13,7 +13,7 @@
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 
 ; Function Attrs: norecurse nounwind
-define i32 @foo(i32* nocapture readonly %src1, i32* nocapture readonly %src2, i32* nocapture %score, i32* nocapture %max, i32 %n) #0 {
+define i32 @foo(ptr nocapture readonly %src1, ptr nocapture readonly %src2, ptr nocapture %score, ptr nocapture %max, i32 %n) #0 {
 entry:
   %cmp33 = icmp sgt i32 %n, 0
   br i1 %cmp33, label %for.body.preheader, label %for.body7.preheader
@@ -25,83 +25,83 @@ for.body7.preheader.loopexit:                     ; preds = %for.body
   br label %for.body7.preheader
 
 for.body7.preheader:                              ; preds = %for.body7.preheader.loopexit, %entry
-  %0 = load i32, i32* %score, align 4, !tbaa !3
+  %0 = load i32, ptr %score, align 4, !tbaa !3
   %cmp9 = icmp sgt i32 %0, -1
   %.scoreMax.0 = select i1 %cmp9, i32 %0, i32 -1
-  %arrayidx8.1 = getelementptr inbounds i32, i32* %score, i32 1
-  %1 = load i32, i32* %arrayidx8.1, align 4, !tbaa !3
+  %arrayidx8.1 = getelementptr inbounds i32, ptr %score, i32 1
+  %1 = load i32, ptr %arrayidx8.1, align 4, !tbaa !3
   %cmp9.1 = icmp sgt i32 %1, %.scoreMax.0
   %.scoreMax.0.1 = select i1 %cmp9.1, i32 %1, i32 %.scoreMax.0
-  %arrayidx8.2 = getelementptr inbounds i32, i32* %score, i32 2
-  %2 = load i32, i32* %arrayidx8.2, align 4, !tbaa !3
+  %arrayidx8.2 = getelementptr inbounds i32, ptr %score, i32 2
+  %2 = load i32, ptr %arrayidx8.2, align 4, !tbaa !3
   %cmp9.2 = icmp sgt i32 %2, %.scoreMax.0.1
   %.scoreMax.0.2 = select i1 %cmp9.2, i32 %2, i32 %.scoreMax.0.1
-  %arrayidx8.3 = getelementptr inbounds i32, i32* %score, i32 3
-  %3 = load i32, i32* %arrayidx8.3, align 4, !tbaa !3
+  %arrayidx8.3 = getelementptr inbounds i32, ptr %score, i32 3
+  %3 = load i32, ptr %arrayidx8.3, align 4, !tbaa !3
   %cmp9.3 = icmp sgt i32 %3, %.scoreMax.0.2
   %.scoreMax.0.3 = select i1 %cmp9.3, i32 %3, i32 %.scoreMax.0.2
-  %arrayidx8.4 = getelementptr inbounds i32, i32* %score, i32 4
-  %4 = load i32, i32* %arrayidx8.4, align 4, !tbaa !3
+  %arrayidx8.4 = getelementptr inbounds i32, ptr %score, i32 4
+  %4 = load i32, ptr %arrayidx8.4, align 4, !tbaa !3
   %cmp9.4 = icmp sgt i32 %4, %.scoreMax.0.3
   %.scoreMax.0.4 = select i1 %cmp9.4, i32 %4, i32 %.scoreMax.0.3
-  %arrayidx8.5 = getelementptr inbounds i32, i32* %score, i32 5
-  %5 = load i32, i32* %arrayidx8.5, align 4, !tbaa !3
+  %arrayidx8.5 = getelementptr inbounds i32, ptr %score, i32 5
+  %5 = load i32, ptr %arrayidx8.5, align 4, !tbaa !3
   %cmp9.5 = icmp sgt i32 %5, %.scoreMax.0.4
   %.scoreMax.0.5 = select i1 %cmp9.5, i32 %5, i32 %.scoreMax.0.4
-  %arrayidx8.6 = getelementptr inbounds i32, i32* %score, i32 6
-  %6 = load i32, i32* %arrayidx8.6, align 4, !tbaa !3
+  %arrayidx8.6 = getelementptr inbounds i32, ptr %score, i32 6
+  %6 = load i32, ptr %arrayidx8.6, align 4, !tbaa !3
   %cmp9.6 = icmp sgt i32 %6, %.scoreMax.0.5
   %.scoreMax.0.6 = select i1 %cmp9.6, i32 %6, i32 %.scoreMax.0.5
-  %arrayidx8.7 = getelementptr inbounds i32, i32* %score, i32 7
-  %7 = load i32, i32* %arrayidx8.7, align 4, !tbaa !3
+  %arrayidx8.7 = getelementptr inbounds i32, ptr %score, i32 7
+  %7 = load i32, ptr %arrayidx8.7, align 4, !tbaa !3
   %cmp9.7 = icmp sgt i32 %7, %.scoreMax.0.6
   %.scoreMax.0.7 = select i1 %cmp9.7, i32 %7, i32 %.scoreMax.0.6
-  %arrayidx8.8 = getelementptr inbounds i32, i32* %score, i32 8
-  %8 = load i32, i32* %arrayidx8.8, align 4, !tbaa !3
+  %arrayidx8.8 = getelementptr inbounds i32, ptr %score, i32 8
+  %8 = load i32, ptr %arrayidx8.8, align 4, !tbaa !3
   %cmp9.8 = icmp sgt i32 %8, %.scoreMax.0.7
   %.scoreMax.0.8 = select i1 %cmp9.8, i32 %8, i32 %.scoreMax.0.7
-  %arrayidx8.9 = getelementptr inbounds i32, i32* %score, i32 9
-  %9 = load i32, i32* %arrayidx8.9, align 4, !tbaa !3
+  %arrayidx8.9 = getelementptr inbounds i32, ptr %score, i32 9
+  %9 = load i32, ptr %arrayidx8.9, align 4, !tbaa !3
   %cmp9.9 = icmp sgt i32 %9, %.scoreMax.0.8
   %.scoreMax.0.9 = select i1 %cmp9.9, i32 %9, i32 %.scoreMax.0.8
-  %arrayidx8.10 = getelementptr inbounds i32, i32* %score, i32 10
-  %10 = load i32, i32* %arrayidx8.10, align 4, !tbaa !3
+  %arrayidx8.10 = getelementptr inbounds i32, ptr %score, i32 10
+  %10 = load i32, ptr %arrayidx8.10, align 4, !tbaa !3
   %cmp9.10 = icmp sgt i32 %10, %.scoreMax.0.9
   %.scoreMax.0.10 = select i1 %cmp9.10, i32 %10, i32 %.scoreMax.0.9
-  %arrayidx8.11 = getelementptr inbounds i32, i32* %score, i32 11
-  %11 = load i32, i32* %arrayidx8.11, align 4, !tbaa !3
+  %arrayidx8.11 = getelementptr inbounds i32, ptr %score, i32 11
+  %11 = load i32, ptr %arrayidx8.11, align 4, !tbaa !3
   %cmp9.11 = icmp sgt i32 %11, %.scoreMax.0.10
   %.scoreMax.0.11 = select i1 %cmp9.11, i32 %11, i32 %.scoreMax.0.10
-  %arrayidx8.12 = getelementptr inbounds i32, i32* %score, i32 12
-  %12 = load i32, i32* %arrayidx8.12, align 4, !tbaa !3
+  %arrayidx8.12 = getelementptr inbounds i32, ptr %score, i32 12
+  %12 = load i32, ptr %arrayidx8.12, align 4, !tbaa !3
   %cmp9.12 = icmp sgt i32 %12, %.scoreMax.0.11
   %.scoreMax.0.12 = select i1 %cmp9.12, i32 %12, i32 %.scoreMax.0.11
-  %arrayidx8.13 = getelementptr inbounds i32, i32* %score, i32 13
-  %13 = load i32, i32* %arrayidx8.13, align 4, !tbaa !3
+  %arrayidx8.13 = getelementptr inbounds i32, ptr %score, i32 13
+  %13 = load i32, ptr %arrayidx8.13, align 4, !tbaa !3
   %cmp9.13 = icmp sgt i32 %13, %.scoreMax.0.12
   %.scoreMax.0.13 = select i1 %cmp9.13, i32 %13, i32 %.scoreMax.0.12
-  %arrayidx8.14 = getelementptr inbounds i32, i32* %score, i32 14
-  %14 = load i32, i32* %arrayidx8.14, align 4, !tbaa !3
+  %arrayidx8.14 = getelementptr inbounds i32, ptr %score, i32 14
+  %14 = load i32, ptr %arrayidx8.14, align 4, !tbaa !3
   %cmp9.14 = icmp sgt i32 %14, %.scoreMax.0.13
   %.scoreMax.0.14 = select i1 %cmp9.14, i32 %14, i32 %.scoreMax.0.13
-  %arrayidx8.15 = getelementptr inbounds i32, i32* %score, i32 15
-  %15 = load i32, i32* %arrayidx8.15, align 4, !tbaa !3
+  %arrayidx8.15 = getelementptr inbounds i32, ptr %score, i32 15
+  %15 = load i32, ptr %arrayidx8.15, align 4, !tbaa !3
   %cmp9.15 = icmp sgt i32 %15, %.scoreMax.0.14
   %.scoreMax.0.15 = select i1 %cmp9.15, i32 %15, i32 %.scoreMax.0.14
-  %arrayidx8.16 = getelementptr inbounds i32, i32* %score, i32 16
-  %16 = load i32, i32* %arrayidx8.16, align 4, !tbaa !3
+  %arrayidx8.16 = getelementptr inbounds i32, ptr %score, i32 16
+  %16 = load i32, ptr %arrayidx8.16, align 4, !tbaa !3
   %cmp9.16 = icmp sgt i32 %16, %.scoreMax.0.15
   %.scoreMax.0.16 = select i1 %cmp9.16, i32 %16, i32 %.scoreMax.0.15
-  %arrayidx8.17 = getelementptr inbounds i32, i32* %score, i32 17
-  %17 = load i32, i32* %arrayidx8.17, align 4, !tbaa !3
+  %arrayidx8.17 = getelementptr inbounds i32, ptr %score, i32 17
+  %17 = load i32, ptr %arrayidx8.17, align 4, !tbaa !3
   %cmp9.17 = icmp sgt i32 %17, %.scoreMax.0.16
   %.scoreMax.0.17 = select i1 %cmp9.17, i32 %17, i32 %.scoreMax.0.16
-  %arrayidx8.18 = getelementptr inbounds i32, i32* %score, i32 18
-  %18 = load i32, i32* %arrayidx8.18, align 4, !tbaa !3
+  %arrayidx8.18 = getelementptr inbounds i32, ptr %score, i32 18
+  %18 = load i32, ptr %arrayidx8.18, align 4, !tbaa !3
   %cmp9.18 = icmp sgt i32 %18, %.scoreMax.0.17
   %.scoreMax.0.18 = select i1 %cmp9.18, i32 %18, i32 %.scoreMax.0.17
-  %arrayidx8.19 = getelementptr inbounds i32, i32* %score, i32 19
-  %19 = load i32, i32* %arrayidx8.19, align 4, !tbaa !3
+  %arrayidx8.19 = getelementptr inbounds i32, ptr %score, i32 19
+  %19 = load i32, ptr %arrayidx8.19, align 4, !tbaa !3
   %cmp9.19 = icmp sgt i32 %19, %.scoreMax.0.18
   %.scoreMax.0.19 = select i1 %cmp9.19, i32 %19, i32 %.scoreMax.0.18
   %cmp14 = icmp eq i32 %.scoreMax.0.19, -1
@@ -109,19 +109,19 @@ for.body7.preheader:                              ; preds = %for.body7.preheader
 
 for.body:                                         ; preds = %for.body.preheader, %for.body
   %i.034 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]
-  %arrayidx = getelementptr inbounds i32, i32* %src1, i32 %i.034
-  %20 = load i32, i32* %arrayidx, align 4, !tbaa !3
-  %arrayidx1 = getelementptr inbounds i32, i32* %src2, i32 %i.034
-  %21 = load i32, i32* %arrayidx1, align 4, !tbaa !3
+  %arrayidx = getelementptr inbounds i32, ptr %src1, i32 %i.034
+  %20 = load i32, ptr %arrayidx, align 4, !tbaa !3
+  %arrayidx1 = getelementptr inbounds i32, ptr %src2, i32 %i.034
+  %21 = load i32, ptr %arrayidx1, align 4, !tbaa !3
   %add = add nsw i32 %21, %20
-  %arrayidx2 = getelementptr inbounds i32, i32* %score, i32 %i.034
-  store i32 %add, i32* %arrayidx2, align 4, !tbaa !3
+  %arrayidx2 = getelementptr inbounds i32, ptr %score, i32 %i.034
+  store i32 %add, ptr %arrayidx2, align 4, !tbaa !3
   %inc = add nuw nsw i32 %i.034, 1
   %exitcond = icmp eq i32 %inc, %n
   br i1 %exitcond, label %for.body7.preheader.loopexit, label %for.body
 
 if.end16:                                         ; preds = %for.body7.preheader
-  store i32 %.scoreMax.0.19, i32* %max, align 4, !tbaa !3
+  store i32 %.scoreMax.0.19, ptr %max, align 4, !tbaa !3
   br label %cleanup
 
 cleanup:                                          ; preds = %for.body7.preheader, %if.end16

diff  --git a/polly/test/ScopInfo/complex-loop-nesting.ll b/polly/test/ScopInfo/complex-loop-nesting.ll
index ee559bfebcac6..97a9bfd939d59 100644
--- a/polly/test/ScopInfo/complex-loop-nesting.ll
+++ b/polly/test/ScopInfo/complex-loop-nesting.ll
@@ -38,31 +38,31 @@
 
 target datalayout = "e-m:e-i64:64-i128:128-n8:16:32:64-S128"
 
-define void @foo(i32* %A) {
+define void @foo(ptr %A) {
 entry:
   br label %for.body.outer
 
 for.body.outer:                                   ; preds = %for.body, %entry
   %indvar = phi i32 [0, %entry], [%indvar.next, %for.body]
-  %addr = getelementptr i32, i32* %A, i32 %indvar
-  %val = load i32, i32* %addr
+  %addr = getelementptr i32, ptr %A, i32 %indvar
+  %val = load i32, ptr %addr
   %indvar.next = add i32 %indvar, 1
-  store i32 %val, i32* %addr
+  store i32 %val, ptr %addr
   br label %for.body
 
 for.body:                                         ; preds = %for.inc, %for.body.outer
   %indvar.2 = phi i32 [0, %for.body.outer], [%indvar.2.next, %for.inc]
-  %addr.2 = getelementptr i32, i32* %A, i32 %indvar.2
-  %val.2  = load i32, i32* %addr.2
+  %addr.2 = getelementptr i32, ptr %A, i32 %indvar.2
+  %val.2  = load i32, ptr %addr.2
   %indvar.2.next = add i32 %indvar.2, 1
-  store i32 %val.2, i32* %addr.2
+  store i32 %val.2, ptr %addr.2
   %cond.1 = icmp sle i32 %indvar, 256
   br i1 %cond.1, label %for.body.outer, label %for.inc
 
 for.inc:                                          ; preds = %for.body
-  %addr.3 = getelementptr i32, i32* %A, i32 %indvar.2
-  %val.3  = load i32, i32* %addr.3
-  store i32 %val.3, i32* %addr.3
+  %addr.3 = getelementptr i32, ptr %A, i32 %indvar.2
+  %val.3  = load i32, ptr %addr.3
+  store i32 %val.3, ptr %addr.3
   %cond = icmp sle i32 %indvar.2, 1024
   br i1 %cond, label %for.body, label %for.end
 

diff  --git a/polly/test/ScopInfo/complex-successor-structure-2.ll b/polly/test/ScopInfo/complex-successor-structure-2.ll
index 55f7963e5e6be..6bb7bb14a8cc1 100644
--- a/polly/test/ScopInfo/complex-successor-structure-2.ll
+++ b/polly/test/ScopInfo/complex-successor-structure-2.ll
@@ -109,7 +109,7 @@ target triple = "thumbv7--linux-android"
 @Table2 = external global [1792 x i16], align 2
 @Table3 = external global [16 x i16], align 2
 
-define void @foo(i16* nocapture readonly %indice, i16* nocapture %Output, i16* nocapture readonly %In1, i16* nocapture readonly %In2, i16 signext %var, i16 signext %var2) {
+define void @foo(ptr nocapture readonly %indice, ptr nocapture %Output, ptr nocapture readonly %In1, ptr nocapture readonly %In2, i16 signext %var, i16 signext %var2) {
 entry:
   %.reg2mem158 = alloca i16
   %.reg2mem156 = alloca i16
@@ -118,420 +118,418 @@ entry:
   %.reg2mem150 = alloca i16
   %.reg2mem = alloca i16
   %Temp_Ref = alloca [16 x i16], align 2
-  %0 = bitcast [16 x i16]* %Temp_Ref to i8*
   %cmp = icmp eq i16 %var, 0
   br label %for.body
 
 for.body:                                       ; preds = %for.body, %entry
   %i.2138 = phi i32 [ %inc47, %for.body ], [ 0, %entry ]
-  %arrayidx28 = getelementptr inbounds [16 x i16], [16 x i16]* @Table3, i32 0, i32 %i.2138
-  %1 = load i16, i16* %arrayidx28, align 2
-  %conv29 = sext i16 %1 to i32
-  %arrayidx36 = getelementptr inbounds i16, i16* %In2, i32 %i.2138
-  %2 = load i16, i16* %arrayidx36, align 2
-  %conv37 = sext i16 %2 to i32
+  %arrayidx28 = getelementptr inbounds [16 x i16], ptr @Table3, i32 0, i32 %i.2138
+  %0 = load i16, ptr %arrayidx28, align 2
+  %conv29 = sext i16 %0 to i32
+  %arrayidx36 = getelementptr inbounds i16, ptr %In2, i32 %i.2138
+  %1 = load i16, ptr %arrayidx36, align 2
+  %conv37 = sext i16 %1 to i32
   %shl38147 = add nsw i32 %conv37, %conv29
   %add35.1 = add nuw nsw i32 %i.2138, 16
-  %arrayidx36.1 = getelementptr inbounds i16, i16* %In2, i32 %add35.1
-  %3 = load i16, i16* %arrayidx36.1, align 2
-  %conv37.1 = sext i16 %3 to i32
+  %arrayidx36.1 = getelementptr inbounds i16, ptr %In2, i32 %add35.1
+  %2 = load i16, ptr %arrayidx36.1, align 2
+  %conv37.1 = sext i16 %2 to i32
   %shl38.1148 = add nsw i32 %conv37.1, %shl38147
   %add35.2 = add nuw nsw i32 %i.2138, 32
-  %arrayidx36.2 = getelementptr inbounds i16, i16* %In2, i32 %add35.2
-  %4 = load i16, i16* %arrayidx36.2, align 2
-  %conv37.2 = sext i16 %4 to i32
+  %arrayidx36.2 = getelementptr inbounds i16, ptr %In2, i32 %add35.2
+  %3 = load i16, ptr %arrayidx36.2, align 2
+  %conv37.2 = sext i16 %3 to i32
   %shl38.2149 = add nsw i32 %conv37.2, %shl38.1148
   %add39.2 = shl i32 %shl38.2149, 14
   %add43 = add nsw i32 %add39.2, 32768
   %shr129 = lshr i32 %add43, 16
   %conv44 = trunc i32 %shr129 to i16
-  %arrayidx45 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 %i.2138
-  store i16 %conv44, i16* %arrayidx45, align 2
+  %arrayidx45 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 %i.2138
+  store i16 %conv44, ptr %arrayidx45, align 2
   %inc47 = add nuw nsw i32 %i.2138, 1
   %exitcond144 = icmp eq i32 %i.2138, 15
   br i1 %exitcond144, label %if.entry, label %for.body
 
 if.entry:                             ; preds = %for.body
-  %5 = load i16, i16* %In1, align 2
-  %conv54 = sext i16 %5 to i32
+  %4 = load i16, ptr %In1, align 2
+  %conv54 = sext i16 %4 to i32
   %mul55 = mul nsw i32 %conv54, 29491
   %shr56127 = lshr i32 %mul55, 15
-  %arrayidx57 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 0
-  %6 = load i16, i16* %arrayidx57, align 2
-  %conv58 = sext i16 %6 to i32
+  %5 = load i16, ptr %Temp_Ref, align 2
+  %conv58 = sext i16 %5 to i32
   %mul59 = mul nsw i32 %conv58, 3277
   %shr60128 = lshr i32 %mul59, 15
   %add61 = add nuw nsw i32 %shr60128, %shr56127
   %conv62 = trunc i32 %add61 to i16
-  store i16 %conv62, i16* %Output, align 2
-  %arrayidx53.1 = getelementptr inbounds i16, i16* %In1, i32 1
-  %7 = load i16, i16* %arrayidx53.1, align 2
-  %conv54.1 = sext i16 %7 to i32
+  store i16 %conv62, ptr %Output, align 2
+  %arrayidx53.1 = getelementptr inbounds i16, ptr %In1, i32 1
+  %6 = load i16, ptr %arrayidx53.1, align 2
+  %conv54.1 = sext i16 %6 to i32
   %mul55.1 = mul nsw i32 %conv54.1, 29491
   %shr56127.1 = lshr i32 %mul55.1, 15
-  %arrayidx57.1 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 1
-  %8 = load i16, i16* %arrayidx57.1, align 2
-  %conv58.1 = sext i16 %8 to i32
+  %arrayidx57.1 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 1
+  %7 = load i16, ptr %arrayidx57.1, align 2
+  %conv58.1 = sext i16 %7 to i32
   %mul59.1 = mul nsw i32 %conv58.1, 3277
   %shr60128.1 = lshr i32 %mul59.1, 15
   %add61.1 = add nuw nsw i32 %shr60128.1, %shr56127.1
   %conv62.1 = trunc i32 %add61.1 to i16
-  %arrayidx63.1 = getelementptr inbounds i16, i16* %Output, i32 1
-  store i16 %conv62.1, i16* %arrayidx63.1, align 2
-  %arrayidx53.2 = getelementptr inbounds i16, i16* %In1, i32 2
-  %9 = load i16, i16* %arrayidx53.2, align 2
-  %conv54.2 = sext i16 %9 to i32
+  %arrayidx63.1 = getelementptr inbounds i16, ptr %Output, i32 1
+  store i16 %conv62.1, ptr %arrayidx63.1, align 2
+  %arrayidx53.2 = getelementptr inbounds i16, ptr %In1, i32 2
+  %8 = load i16, ptr %arrayidx53.2, align 2
+  %conv54.2 = sext i16 %8 to i32
   %mul55.2 = mul nsw i32 %conv54.2, 29491
   %shr56127.2 = lshr i32 %mul55.2, 15
-  %arrayidx57.2 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 2
-  %10 = load i16, i16* %arrayidx57.2, align 2
-  %conv58.2 = sext i16 %10 to i32
+  %arrayidx57.2 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 2
+  %9 = load i16, ptr %arrayidx57.2, align 2
+  %conv58.2 = sext i16 %9 to i32
   %mul59.2 = mul nsw i32 %conv58.2, 3277
   %shr60128.2 = lshr i32 %mul59.2, 15
   %add61.2 = add nuw nsw i32 %shr60128.2, %shr56127.2
   %conv62.2 = trunc i32 %add61.2 to i16
-  %arrayidx63.2 = getelementptr inbounds i16, i16* %Output, i32 2
-  store i16 %conv62.2, i16* %arrayidx63.2, align 2
-  %arrayidx53.3 = getelementptr inbounds i16, i16* %In1, i32 3
-  %11 = load i16, i16* %arrayidx53.3, align 2
-  %conv54.3 = sext i16 %11 to i32
+  %arrayidx63.2 = getelementptr inbounds i16, ptr %Output, i32 2
+  store i16 %conv62.2, ptr %arrayidx63.2, align 2
+  %arrayidx53.3 = getelementptr inbounds i16, ptr %In1, i32 3
+  %10 = load i16, ptr %arrayidx53.3, align 2
+  %conv54.3 = sext i16 %10 to i32
   %mul55.3 = mul nsw i32 %conv54.3, 29491
   %shr56127.3 = lshr i32 %mul55.3, 15
-  %arrayidx57.3 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 3
-  %12 = load i16, i16* %arrayidx57.3, align 2
-  %conv58.3 = sext i16 %12 to i32
+  %arrayidx57.3 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 3
+  %11 = load i16, ptr %arrayidx57.3, align 2
+  %conv58.3 = sext i16 %11 to i32
   %mul59.3 = mul nsw i32 %conv58.3, 3277
   %shr60128.3 = lshr i32 %mul59.3, 15
   %add61.3 = add nuw nsw i32 %shr60128.3, %shr56127.3
   %conv62.3 = trunc i32 %add61.3 to i16
-  %arrayidx63.3 = getelementptr inbounds i16, i16* %Output, i32 3
-  store i16 %conv62.3, i16* %arrayidx63.3, align 2
-  %arrayidx53.4 = getelementptr inbounds i16, i16* %In1, i32 4
-  %13 = load i16, i16* %arrayidx53.4, align 2
-  %conv54.4 = sext i16 %13 to i32
+  %arrayidx63.3 = getelementptr inbounds i16, ptr %Output, i32 3
+  store i16 %conv62.3, ptr %arrayidx63.3, align 2
+  %arrayidx53.4 = getelementptr inbounds i16, ptr %In1, i32 4
+  %12 = load i16, ptr %arrayidx53.4, align 2
+  %conv54.4 = sext i16 %12 to i32
   %mul55.4 = mul nsw i32 %conv54.4, 29491
   %shr56127.4 = lshr i32 %mul55.4, 15
-  %arrayidx57.4 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 4
-  %14 = load i16, i16* %arrayidx57.4, align 2
-  %conv58.4 = sext i16 %14 to i32
+  %arrayidx57.4 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 4
+  %13 = load i16, ptr %arrayidx57.4, align 2
+  %conv58.4 = sext i16 %13 to i32
   %mul59.4 = mul nsw i32 %conv58.4, 3277
   %shr60128.4 = lshr i32 %mul59.4, 15
   %add61.4 = add nuw nsw i32 %shr60128.4, %shr56127.4
   %conv62.4 = trunc i32 %add61.4 to i16
-  %arrayidx63.4 = getelementptr inbounds i16, i16* %Output, i32 4
-  store i16 %conv62.4, i16* %arrayidx63.4, align 2
-  %arrayidx53.5 = getelementptr inbounds i16, i16* %In1, i32 5
-  %15 = load i16, i16* %arrayidx53.5, align 2
-  %conv54.5 = sext i16 %15 to i32
+  %arrayidx63.4 = getelementptr inbounds i16, ptr %Output, i32 4
+  store i16 %conv62.4, ptr %arrayidx63.4, align 2
+  %arrayidx53.5 = getelementptr inbounds i16, ptr %In1, i32 5
+  %14 = load i16, ptr %arrayidx53.5, align 2
+  %conv54.5 = sext i16 %14 to i32
   %mul55.5 = mul nsw i32 %conv54.5, 29491
   %shr56127.5 = lshr i32 %mul55.5, 15
-  %arrayidx57.5 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 5
-  %16 = load i16, i16* %arrayidx57.5, align 2
-  %conv58.5 = sext i16 %16 to i32
+  %arrayidx57.5 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 5
+  %15 = load i16, ptr %arrayidx57.5, align 2
+  %conv58.5 = sext i16 %15 to i32
   %mul59.5 = mul nsw i32 %conv58.5, 3277
   %shr60128.5 = lshr i32 %mul59.5, 15
   %add61.5 = add nuw nsw i32 %shr60128.5, %shr56127.5
   %conv62.5 = trunc i32 %add61.5 to i16
-  %arrayidx63.5 = getelementptr inbounds i16, i16* %Output, i32 5
-  store i16 %conv62.5, i16* %arrayidx63.5, align 2
-  %arrayidx53.6 = getelementptr inbounds i16, i16* %In1, i32 6
-  %17 = load i16, i16* %arrayidx53.6, align 2
-  %conv54.6 = sext i16 %17 to i32
+  %arrayidx63.5 = getelementptr inbounds i16, ptr %Output, i32 5
+  store i16 %conv62.5, ptr %arrayidx63.5, align 2
+  %arrayidx53.6 = getelementptr inbounds i16, ptr %In1, i32 6
+  %16 = load i16, ptr %arrayidx53.6, align 2
+  %conv54.6 = sext i16 %16 to i32
   %mul55.6 = mul nsw i32 %conv54.6, 29491
   %shr56127.6 = lshr i32 %mul55.6, 15
-  %arrayidx57.6 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 6
-  %18 = load i16, i16* %arrayidx57.6, align 2
-  %conv58.6 = sext i16 %18 to i32
+  %arrayidx57.6 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 6
+  %17 = load i16, ptr %arrayidx57.6, align 2
+  %conv58.6 = sext i16 %17 to i32
   %mul59.6 = mul nsw i32 %conv58.6, 3277
   %shr60128.6 = lshr i32 %mul59.6, 15
   %add61.6 = add nuw nsw i32 %shr60128.6, %shr56127.6
   %conv62.6 = trunc i32 %add61.6 to i16
-  %arrayidx63.6 = getelementptr inbounds i16, i16* %Output, i32 6
-  store i16 %conv62.6, i16* %arrayidx63.6, align 2
-  %arrayidx53.7 = getelementptr inbounds i16, i16* %In1, i32 7
-  %19 = load i16, i16* %arrayidx53.7, align 2
-  %conv54.7 = sext i16 %19 to i32
+  %arrayidx63.6 = getelementptr inbounds i16, ptr %Output, i32 6
+  store i16 %conv62.6, ptr %arrayidx63.6, align 2
+  %arrayidx53.7 = getelementptr inbounds i16, ptr %In1, i32 7
+  %18 = load i16, ptr %arrayidx53.7, align 2
+  %conv54.7 = sext i16 %18 to i32
   %mul55.7 = mul nsw i32 %conv54.7, 29491
   %shr56127.7 = lshr i32 %mul55.7, 15
-  %arrayidx57.7 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 7
-  %20 = load i16, i16* %arrayidx57.7, align 2
-  %conv58.7 = sext i16 %20 to i32
+  %arrayidx57.7 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 7
+  %19 = load i16, ptr %arrayidx57.7, align 2
+  %conv58.7 = sext i16 %19 to i32
   %mul59.7 = mul nsw i32 %conv58.7, 3277
   %shr60128.7 = lshr i32 %mul59.7, 15
   %add61.7 = add nuw nsw i32 %shr60128.7, %shr56127.7
   %conv62.7 = trunc i32 %add61.7 to i16
-  %arrayidx63.7 = getelementptr inbounds i16, i16* %Output, i32 7
-  store i16 %conv62.7, i16* %arrayidx63.7, align 2
-  %arrayidx53.8 = getelementptr inbounds i16, i16* %In1, i32 8
-  %21 = load i16, i16* %arrayidx53.8, align 2
-  %conv54.8 = sext i16 %21 to i32
+  %arrayidx63.7 = getelementptr inbounds i16, ptr %Output, i32 7
+  store i16 %conv62.7, ptr %arrayidx63.7, align 2
+  %arrayidx53.8 = getelementptr inbounds i16, ptr %In1, i32 8
+  %20 = load i16, ptr %arrayidx53.8, align 2
+  %conv54.8 = sext i16 %20 to i32
   %mul55.8 = mul nsw i32 %conv54.8, 29491
   %shr56127.8 = lshr i32 %mul55.8, 15
-  %arrayidx57.8 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 8
-  %22 = load i16, i16* %arrayidx57.8, align 2
-  %conv58.8 = sext i16 %22 to i32
+  %arrayidx57.8 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 8
+  %21 = load i16, ptr %arrayidx57.8, align 2
+  %conv58.8 = sext i16 %21 to i32
   %mul59.8 = mul nsw i32 %conv58.8, 3277
   %shr60128.8 = lshr i32 %mul59.8, 15
   %add61.8 = add nuw nsw i32 %shr60128.8, %shr56127.8
   %conv62.8 = trunc i32 %add61.8 to i16
-  %arrayidx63.8 = getelementptr inbounds i16, i16* %Output, i32 8
-  store i16 %conv62.8, i16* %arrayidx63.8, align 2
-  %arrayidx53.9 = getelementptr inbounds i16, i16* %In1, i32 9
-  %23 = load i16, i16* %arrayidx53.9, align 2
-  %conv54.9 = sext i16 %23 to i32
+  %arrayidx63.8 = getelementptr inbounds i16, ptr %Output, i32 8
+  store i16 %conv62.8, ptr %arrayidx63.8, align 2
+  %arrayidx53.9 = getelementptr inbounds i16, ptr %In1, i32 9
+  %22 = load i16, ptr %arrayidx53.9, align 2
+  %conv54.9 = sext i16 %22 to i32
   %mul55.9 = mul nsw i32 %conv54.9, 29491
   %shr56127.9 = lshr i32 %mul55.9, 15
-  %arrayidx57.9 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 9
-  %24 = load i16, i16* %arrayidx57.9, align 2
-  %conv58.9 = sext i16 %24 to i32
+  %arrayidx57.9 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 9
+  %23 = load i16, ptr %arrayidx57.9, align 2
+  %conv58.9 = sext i16 %23 to i32
   %mul59.9 = mul nsw i32 %conv58.9, 3277
   %shr60128.9 = lshr i32 %mul59.9, 15
   %add61.9 = add nuw nsw i32 %shr60128.9, %shr56127.9
   %conv62.9 = trunc i32 %add61.9 to i16
-  %arrayidx63.9 = getelementptr inbounds i16, i16* %Output, i32 9
-  store i16 %conv62.9, i16* %arrayidx63.9, align 2
-  %arrayidx53.10 = getelementptr inbounds i16, i16* %In1, i32 10
-  %25 = load i16, i16* %arrayidx53.10, align 2
-  %conv54.10 = sext i16 %25 to i32
+  %arrayidx63.9 = getelementptr inbounds i16, ptr %Output, i32 9
+  store i16 %conv62.9, ptr %arrayidx63.9, align 2
+  %arrayidx53.10 = getelementptr inbounds i16, ptr %In1, i32 10
+  %24 = load i16, ptr %arrayidx53.10, align 2
+  %conv54.10 = sext i16 %24 to i32
   %mul55.10 = mul nsw i32 %conv54.10, 29491
   %shr56127.10 = lshr i32 %mul55.10, 15
-  %arrayidx57.10 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 10
-  %26 = load i16, i16* %arrayidx57.10, align 2
-  %conv58.10 = sext i16 %26 to i32
+  %arrayidx57.10 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 10
+  %25 = load i16, ptr %arrayidx57.10, align 2
+  %conv58.10 = sext i16 %25 to i32
   %mul59.10 = mul nsw i32 %conv58.10, 3277
   %shr60128.10 = lshr i32 %mul59.10, 15
   %add61.10 = add nuw nsw i32 %shr60128.10, %shr56127.10
   %conv62.10 = trunc i32 %add61.10 to i16
-  %arrayidx63.10 = getelementptr inbounds i16, i16* %Output, i32 10
-  store i16 %conv62.10, i16* %arrayidx63.10, align 2
-  %arrayidx53.11 = getelementptr inbounds i16, i16* %In1, i32 11
-  %27 = load i16, i16* %arrayidx53.11, align 2
-  %conv54.11 = sext i16 %27 to i32
+  %arrayidx63.10 = getelementptr inbounds i16, ptr %Output, i32 10
+  store i16 %conv62.10, ptr %arrayidx63.10, align 2
+  %arrayidx53.11 = getelementptr inbounds i16, ptr %In1, i32 11
+  %26 = load i16, ptr %arrayidx53.11, align 2
+  %conv54.11 = sext i16 %26 to i32
   %mul55.11 = mul nsw i32 %conv54.11, 29491
   %shr56127.11 = lshr i32 %mul55.11, 15
-  %arrayidx57.11 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 11
-  %28 = load i16, i16* %arrayidx57.11, align 2
-  %conv58.11 = sext i16 %28 to i32
+  %arrayidx57.11 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 11
+  %27 = load i16, ptr %arrayidx57.11, align 2
+  %conv58.11 = sext i16 %27 to i32
   %mul59.11 = mul nsw i32 %conv58.11, 3277
   %shr60128.11 = lshr i32 %mul59.11, 15
   %add61.11 = add nuw nsw i32 %shr60128.11, %shr56127.11
   %conv62.11 = trunc i32 %add61.11 to i16
-  %arrayidx63.11 = getelementptr inbounds i16, i16* %Output, i32 11
-  store i16 %conv62.11, i16* %arrayidx63.11, align 2
-  %arrayidx53.12 = getelementptr inbounds i16, i16* %In1, i32 12
-  %29 = load i16, i16* %arrayidx53.12, align 2
-  %conv54.12 = sext i16 %29 to i32
+  %arrayidx63.11 = getelementptr inbounds i16, ptr %Output, i32 11
+  store i16 %conv62.11, ptr %arrayidx63.11, align 2
+  %arrayidx53.12 = getelementptr inbounds i16, ptr %In1, i32 12
+  %28 = load i16, ptr %arrayidx53.12, align 2
+  %conv54.12 = sext i16 %28 to i32
   %mul55.12 = mul nsw i32 %conv54.12, 29491
   %shr56127.12 = lshr i32 %mul55.12, 15
-  %arrayidx57.12 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 12
-  %30 = load i16, i16* %arrayidx57.12, align 2
-  %conv58.12 = sext i16 %30 to i32
+  %arrayidx57.12 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 12
+  %29 = load i16, ptr %arrayidx57.12, align 2
+  %conv58.12 = sext i16 %29 to i32
   %mul59.12 = mul nsw i32 %conv58.12, 3277
   %shr60128.12 = lshr i32 %mul59.12, 15
   %add61.12 = add nuw nsw i32 %shr60128.12, %shr56127.12
   %conv62.12 = trunc i32 %add61.12 to i16
-  %arrayidx63.12 = getelementptr inbounds i16, i16* %Output, i32 12
-  store i16 %conv62.12, i16* %arrayidx63.12, align 2
-  %arrayidx53.13 = getelementptr inbounds i16, i16* %In1, i32 13
-  %31 = load i16, i16* %arrayidx53.13, align 2
-  %conv54.13 = sext i16 %31 to i32
+  %arrayidx63.12 = getelementptr inbounds i16, ptr %Output, i32 12
+  store i16 %conv62.12, ptr %arrayidx63.12, align 2
+  %arrayidx53.13 = getelementptr inbounds i16, ptr %In1, i32 13
+  %30 = load i16, ptr %arrayidx53.13, align 2
+  %conv54.13 = sext i16 %30 to i32
   %mul55.13 = mul nsw i32 %conv54.13, 29491
   %shr56127.13 = lshr i32 %mul55.13, 15
-  %arrayidx57.13 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 13
-  %32 = load i16, i16* %arrayidx57.13, align 2
-  %conv58.13 = sext i16 %32 to i32
+  %arrayidx57.13 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 13
+  %31 = load i16, ptr %arrayidx57.13, align 2
+  %conv58.13 = sext i16 %31 to i32
   %mul59.13 = mul nsw i32 %conv58.13, 3277
   %shr60128.13 = lshr i32 %mul59.13, 15
   %add61.13 = add nuw nsw i32 %shr60128.13, %shr56127.13
   %conv62.13 = trunc i32 %add61.13 to i16
-  %arrayidx63.13 = getelementptr inbounds i16, i16* %Output, i32 13
-  store i16 %conv62.13, i16* %arrayidx63.13, align 2
-  %arrayidx53.14 = getelementptr inbounds i16, i16* %In1, i32 14
-  %33 = load i16, i16* %arrayidx53.14, align 2
-  %conv54.14 = sext i16 %33 to i32
+  %arrayidx63.13 = getelementptr inbounds i16, ptr %Output, i32 13
+  store i16 %conv62.13, ptr %arrayidx63.13, align 2
+  %arrayidx53.14 = getelementptr inbounds i16, ptr %In1, i32 14
+  %32 = load i16, ptr %arrayidx53.14, align 2
+  %conv54.14 = sext i16 %32 to i32
   %mul55.14 = mul nsw i32 %conv54.14, 29491
   %shr56127.14 = lshr i32 %mul55.14, 15
-  %arrayidx57.14 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 14
-  %34 = load i16, i16* %arrayidx57.14, align 2
-  %conv58.14 = sext i16 %34 to i32
+  %arrayidx57.14 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 14
+  %33 = load i16, ptr %arrayidx57.14, align 2
+  %conv58.14 = sext i16 %33 to i32
   %mul59.14 = mul nsw i32 %conv58.14, 3277
   %shr60128.14 = lshr i32 %mul59.14, 15
   %add61.14 = add nuw nsw i32 %shr60128.14, %shr56127.14
   %conv62.14 = trunc i32 %add61.14 to i16
-  %arrayidx63.14 = getelementptr inbounds i16, i16* %Output, i32 14
-  store i16 %conv62.14, i16* %arrayidx63.14, align 2
-  %arrayidx53.15 = getelementptr inbounds i16, i16* %In1, i32 15
-  %35 = load i16, i16* %arrayidx53.15, align 2
-  %conv54.15 = sext i16 %35 to i32
+  %arrayidx63.14 = getelementptr inbounds i16, ptr %Output, i32 14
+  store i16 %conv62.14, ptr %arrayidx63.14, align 2
+  %arrayidx53.15 = getelementptr inbounds i16, ptr %In1, i32 15
+  %34 = load i16, ptr %arrayidx53.15, align 2
+  %conv54.15 = sext i16 %34 to i32
   %mul55.15 = mul nsw i32 %conv54.15, 29491
   %shr56127.15 = lshr i32 %mul55.15, 15
-  %arrayidx57.15 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 15
-  %36 = load i16, i16* %arrayidx57.15, align 2
-  %conv58.15 = sext i16 %36 to i32
+  %arrayidx57.15 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 15
+  %35 = load i16, ptr %arrayidx57.15, align 2
+  %conv58.15 = sext i16 %35 to i32
   %mul59.15 = mul nsw i32 %conv58.15, 3277
   %shr60128.15 = lshr i32 %mul59.15, 15
   %add61.15 = add nuw nsw i32 %shr60128.15, %shr56127.15
   %conv62.15 = trunc i32 %add61.15 to i16
-  %arrayidx63.15 = getelementptr inbounds i16, i16* %Output, i32 15
-  store i16 %conv62.15, i16* %arrayidx63.15, align 2
-  store i16 %conv62.9, i16* %.reg2mem
-  store i16 %conv62.10, i16* %.reg2mem150
-  store i16 %conv62.11, i16* %.reg2mem152
-  store i16 %conv62.12, i16* %.reg2mem154
-  store i16 %conv62.13, i16* %.reg2mem156
-  store i16 %conv62.14, i16* %.reg2mem158
-  %.reload159 = load i16, i16* %.reg2mem158
-  %.reload157 = load i16, i16* %.reg2mem156
-  %.reload155 = load i16, i16* %.reg2mem154
-  %.reload153 = load i16, i16* %.reg2mem152
-  %.reload151 = load i16, i16* %.reg2mem150
-  %.reload = load i16, i16* %.reg2mem
-  %37 = load i16, i16* %Output, align 2
-  %cmp77 = icmp slt i16 %37, 128
+  %arrayidx63.15 = getelementptr inbounds i16, ptr %Output, i32 15
+  store i16 %conv62.15, ptr %arrayidx63.15, align 2
+  store i16 %conv62.9, ptr %.reg2mem
+  store i16 %conv62.10, ptr %.reg2mem150
+  store i16 %conv62.11, ptr %.reg2mem152
+  store i16 %conv62.12, ptr %.reg2mem154
+  store i16 %conv62.13, ptr %.reg2mem156
+  store i16 %conv62.14, ptr %.reg2mem158
+  %.reload159 = load i16, ptr %.reg2mem158
+  %.reload157 = load i16, ptr %.reg2mem156
+  %.reload155 = load i16, ptr %.reg2mem154
+  %.reload153 = load i16, ptr %.reg2mem152
+  %.reload151 = load i16, ptr %.reg2mem150
+  %.reload = load i16, ptr %.reg2mem
+  %36 = load i16, ptr %Output, align 2
+  %cmp77 = icmp slt i16 %36, 128
   br i1 %cmp77, label %A0, label %B0
 
 A0:                                        ; preds = %if.entry
-  store i16 128, i16* %Output, align 2
+  store i16 128, ptr %Output, align 2
   br label %B0
 
 B0:                                         ; preds = %A, %if.entry
-  %38 = phi i16 [ 128, %A0 ], [ %37, %if.entry ]
-  %add84 = add i16 %38, 128
-  %arrayidx74.1 = getelementptr inbounds i16, i16* %Output, i32 1
-  %39 = load i16, i16* %arrayidx74.1, align 2
-  %cmp77.1 = icmp slt i16 %39, %add84
+  %37 = phi i16 [ 128, %A0 ], [ %36, %if.entry ]
+  %add84 = add i16 %37, 128
+  %arrayidx74.1 = getelementptr inbounds i16, ptr %Output, i32 1
+  %38 = load i16, ptr %arrayidx74.1, align 2
+  %cmp77.1 = icmp slt i16 %38, %add84
   br i1 %cmp77.1, label %A1, label %B1
 
 A1:                                      ; preds = %B
-  store i16 %add84, i16* %arrayidx74.1, align 2
+  store i16 %add84, ptr %arrayidx74.1, align 2
   br label %B1
 
 B1:                                       ; preds = %A1, %B
-  %40 = phi i16 [ %add84, %A1 ], [ %39, %B0 ]
-  %add84.1 = add i16 %40, 128
-  %arrayidx74.2 = getelementptr inbounds i16, i16* %Output, i32 2
-  %41 = load i16, i16* %arrayidx74.2, align 2
-  %cmp77.2 = icmp slt i16 %41, %add84.1
+  %39 = phi i16 [ %add84, %A1 ], [ %38, %B0 ]
+  %add84.1 = add i16 %39, 128
+  %arrayidx74.2 = getelementptr inbounds i16, ptr %Output, i32 2
+  %40 = load i16, ptr %arrayidx74.2, align 2
+  %cmp77.2 = icmp slt i16 %40, %add84.1
   br i1 %cmp77.2, label %A2, label %B2
 
 A2:                                      ; preds = %B1
-  store i16 %add84.1, i16* %arrayidx74.2, align 2
+  store i16 %add84.1, ptr %arrayidx74.2, align 2
   br label %B2
 
 B2:                                       ; preds = %A2, %B1
-  %42 = phi i16 [ %add84.1, %A2 ], [ %41, %B1 ]
-  %add84.2 = add i16 %42, 128
-  %arrayidx74.3 = getelementptr inbounds i16, i16* %Output, i32 3
-  %43 = load i16, i16* %arrayidx74.3, align 2
-  %cmp77.3 = icmp slt i16 %43, %add84.2
+  %41 = phi i16 [ %add84.1, %A2 ], [ %40, %B1 ]
+  %add84.2 = add i16 %41, 128
+  %arrayidx74.3 = getelementptr inbounds i16, ptr %Output, i32 3
+  %42 = load i16, ptr %arrayidx74.3, align 2
+  %cmp77.3 = icmp slt i16 %42, %add84.2
   br i1 %cmp77.3, label %A3, label %B3
 
 A3:                                      ; preds = %B2
-  store i16 %add84.2, i16* %arrayidx74.3, align 2
+  store i16 %add84.2, ptr %arrayidx74.3, align 2
   br label %B3
 
 B3:                                       ; preds = %A3, %B2
-  %44 = phi i16 [ %add84.2, %A3 ], [ %43, %B2 ]
-  %add84.3 = add i16 %44, 128
-  %arrayidx74.4 = getelementptr inbounds i16, i16* %Output, i32 4
-  %45 = load i16, i16* %arrayidx74.4, align 2
-  %cmp77.4 = icmp slt i16 %45, %add84.3
+  %43 = phi i16 [ %add84.2, %A3 ], [ %42, %B2 ]
+  %add84.3 = add i16 %43, 128
+  %arrayidx74.4 = getelementptr inbounds i16, ptr %Output, i32 4
+  %44 = load i16, ptr %arrayidx74.4, align 2
+  %cmp77.4 = icmp slt i16 %44, %add84.3
   br i1 %cmp77.4, label %A4, label %B4
 
 A4:                                      ; preds = %B3
-  store i16 %add84.3, i16* %arrayidx74.4, align 2
+  store i16 %add84.3, ptr %arrayidx74.4, align 2
   br label %B4
 
 B4:                                       ; preds = %A4, %B3
-  %46 = phi i16 [ %add84.3, %A4 ], [ %45, %B3 ]
-  %add84.4 = add i16 %44, 128
-  %arrayidx74.5 = getelementptr inbounds i16, i16* %Output, i32 5
-  %47 = load i16, i16* %arrayidx74.5, align 2
-  %cmp77.5 = icmp slt i16 %47, %add84.4
+  %45 = phi i16 [ %add84.3, %A4 ], [ %44, %B3 ]
+  %add84.4 = add i16 %43, 128
+  %arrayidx74.5 = getelementptr inbounds i16, ptr %Output, i32 5
+  %46 = load i16, ptr %arrayidx74.5, align 2
+  %cmp77.5 = icmp slt i16 %46, %add84.4
   br i1 %cmp77.5, label %A5, label %B5
 
 A5:                                      ; preds = %B4
-  store i16 %add84.4, i16* %arrayidx74.5, align 2
+  store i16 %add84.4, ptr %arrayidx74.5, align 2
   br label %B5
 
 B5:                                       ; preds = %A5, %B4
-  %48 = phi i16 [ %add84.4, %A5 ], [ %47, %B4 ]
-  %add84.5 = add i16 %44, 128
-  %arrayidx74.6 = getelementptr inbounds i16, i16* %Output, i32 6
-  %49 = load i16, i16* %arrayidx74.6, align 2
-  %cmp77.6 = icmp slt i16 %49, %add84.5
+  %47 = phi i16 [ %add84.4, %A5 ], [ %46, %B4 ]
+  %add84.5 = add i16 %43, 128
+  %arrayidx74.6 = getelementptr inbounds i16, ptr %Output, i32 6
+  %48 = load i16, ptr %arrayidx74.6, align 2
+  %cmp77.6 = icmp slt i16 %48, %add84.5
   br i1 %cmp77.6, label %A6, label %B6
 
 A6:                                      ; preds = %B5
-  store i16 %add84.5, i16* %arrayidx74.6, align 2
+  store i16 %add84.5, ptr %arrayidx74.6, align 2
   br label %B6
 
 B6:                                       ; preds = %A6, %B5
-  %50 = phi i16 [ %add84.5, %A6 ], [ %49, %B5 ]
-  %add84.6 = add i16 %44, 128
-  %arrayidx74.7 = getelementptr inbounds i16, i16* %Output, i32 7
-  %51 = load i16, i16* %arrayidx74.7, align 2
-  %cmp77.7 = icmp slt i16 %51, %add84.6
+  %49 = phi i16 [ %add84.5, %A6 ], [ %48, %B5 ]
+  %add84.6 = add i16 %43, 128
+  %arrayidx74.7 = getelementptr inbounds i16, ptr %Output, i32 7
+  %50 = load i16, ptr %arrayidx74.7, align 2
+  %cmp77.7 = icmp slt i16 %50, %add84.6
   br i1 %cmp77.7, label %A7, label %B7
 
 A7:                                      ; preds = %B6
-  store i16 %add84.6, i16* %arrayidx74.7, align 2
+  store i16 %add84.6, ptr %arrayidx74.7, align 2
   br label %B7
 
 B7:                                       ; preds = %A7, %B6
-  %52 = phi i16 [ %add84.6, %A7 ], [ %51, %B6 ]
-  %add84.7 = add i16 %44, 128
-  %arrayidx74.8 = getelementptr inbounds i16, i16* %Output, i32 8
-  %53 = load i16, i16* %arrayidx74.8, align 2
-  %cmp77.8 = icmp slt i16 %53, %add84.7
+  %51 = phi i16 [ %add84.6, %A7 ], [ %50, %B6 ]
+  %add84.7 = add i16 %43, 128
+  %arrayidx74.8 = getelementptr inbounds i16, ptr %Output, i32 8
+  %52 = load i16, ptr %arrayidx74.8, align 2
+  %cmp77.8 = icmp slt i16 %52, %add84.7
   br i1 %cmp77.8, label %A8, label %B8
 
 A8:                                      ; preds = %B7
-  store i16 %add84.7, i16* %arrayidx74.8, align 2
+  store i16 %add84.7, ptr %arrayidx74.8, align 2
   br label %B8
 
 B8:                                       ; preds = %A8, %B7
-  %54 = phi i16 [ %add84.7, %A8 ], [ %53, %B7 ]
-  %add84.8 = add i16 %44, 128
+  %53 = phi i16 [ %add84.7, %A8 ], [ %52, %B7 ]
+  %add84.8 = add i16 %43, 128
   %cmp77.9 = icmp slt i16 %.reload, %add84.8
   br i1 %cmp77.9, label %A9, label %B9
 
 A9:                                      ; preds = %B8
-  %arrayidx74.9 = getelementptr inbounds i16, i16* %Output, i32 9
-  store i16 %add84.8, i16* %arrayidx74.9, align 2
+  %arrayidx74.9 = getelementptr inbounds i16, ptr %Output, i32 9
+  store i16 %add84.8, ptr %arrayidx74.9, align 2
   br label %B9
 
 B9:                                       ; preds = %A9, %B8
-  %55 = phi i16 [ %add84.8, %A9 ], [ %.reload, %B8 ]
-  %add84.9 = add i16 %44, 128
+  %54 = phi i16 [ %add84.8, %A9 ], [ %.reload, %B8 ]
+  %add84.9 = add i16 %43, 128
   %cmp77.10 = icmp slt i16 %.reload151, %add84.9
   br i1 %cmp77.10, label %A10, label %B10
 
 A10:                                     ; preds = %B9
-  %arrayidx74.10 = getelementptr inbounds i16, i16* %Output, i32 10
-  store i16 %add84.9, i16* %arrayidx74.10, align 2
+  %arrayidx74.10 = getelementptr inbounds i16, ptr %Output, i32 10
+  store i16 %add84.9, ptr %arrayidx74.10, align 2
   br label %B10
 
 B10:                                      ; preds = %A10, %B9
-  %56 = phi i16 [ %add84.9, %A10 ], [ %.reload151, %B9 ]
-  %add84.10 = add i16 %44, 128
+  %55 = phi i16 [ %add84.9, %A10 ], [ %.reload151, %B9 ]
+  %add84.10 = add i16 %43, 128
   %cmp77.11 = icmp slt i16 %.reload153, %add84.10
   br i1 %cmp77.11, label %A11, label %B11
 
 A11:                                     ; preds = %B10
-  %arrayidx74.11 = getelementptr inbounds i16, i16* %Output, i32 11
-  store i16 %add84.10, i16* %arrayidx74.11, align 2
+  %arrayidx74.11 = getelementptr inbounds i16, ptr %Output, i32 11
+  store i16 %add84.10, ptr %arrayidx74.11, align 2
   br label %B11
 
 B11:                                      ; preds = %A11, %B10
-  %57 = phi i16 [ %add84.10, %A11 ], [ %.reload153, %B10 ]
-  %add84.11 = add i16 %44, 128
+  %56 = phi i16 [ %add84.10, %A11 ], [ %.reload153, %B10 ]
+  %add84.11 = add i16 %43, 128
   %cmp77.12 = icmp slt i16 %.reload155, %add84.11
   br i1 %cmp77.12, label %A12, label %B13
 
 A12:                                     ; preds = %B11
-  %arrayidx74.12 = getelementptr inbounds i16, i16* %Output, i32 12
-  store i16 %add84.11, i16* %arrayidx74.12, align 2
+  %arrayidx74.12 = getelementptr inbounds i16, ptr %Output, i32 12
+  store i16 %add84.11, ptr %arrayidx74.12, align 2
   br label %B13
 
 B13:                                      ; preds = %A12, %B13

diff  --git a/polly/test/ScopInfo/complex-successor-structure-3.ll b/polly/test/ScopInfo/complex-successor-structure-3.ll
index c3b513800d19f..14c3fc1babeb5 100644
--- a/polly/test/ScopInfo/complex-successor-structure-3.ll
+++ b/polly/test/ScopInfo/complex-successor-structure-3.ll
@@ -141,32 +141,32 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i16* noalias %In, i32* noalias %Out) {
+define void @f(ptr noalias %In, ptr noalias %Out) {
 entry:
-  %tmp = load i16, i16* %In, align 2
+  %tmp = load i16, ptr %In, align 2
   %conv = sext i16 %tmp to i32
   %cmp = icmp slt i16 %tmp, 1041
   br i1 %cmp, label %B0, label %C0
 
 B0:                                               ; preds = %entry
-  %arrayidx4 = getelementptr inbounds i32, i32* %Out, i64 1041
-  %tmp3 = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %Out, i64 1041
+  %tmp3 = load i32, ptr %arrayidx4, align 4
   %inc5 = add nsw i32 %tmp3, 1
-  store i32 %inc5, i32* %arrayidx4, align 4
+  store i32 %inc5, ptr %arrayidx4, align 4
   br label %A1
 
 C0:                                               ; preds = %entry
   %idxprom6 = sext i16 %tmp to i64
-  %arrayidx7 = getelementptr inbounds i32, i32* %Out, i64 %idxprom6
-  %tmp4 = load i32, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %Out, i64 %idxprom6
+  %tmp4 = load i32, ptr %arrayidx7, align 4
   %dec = add nsw i32 %tmp4, -1
-  store i32 %dec, i32* %arrayidx7, align 4
+  store i32 %dec, ptr %arrayidx7, align 4
   br label %A1
 
 A1:                                               ; preds = %B0, %C0
   %V.0 = phi i32 [ 1041, %B0 ], [ %conv, %C0 ]
-  %arrayidx10 = getelementptr inbounds i16, i16* %In, i64 1
-  %tmp5 = load i16, i16* %arrayidx10, align 2
+  %arrayidx10 = getelementptr inbounds i16, ptr %In, i64 1
+  %tmp5 = load i16, ptr %arrayidx10, align 2
   %conv11 = sext i16 %tmp5 to i32
   %add12 = add nsw i32 %V.0, 42
   %cmp13 = icmp slt i32 %conv11, %add12
@@ -175,46 +175,46 @@ A1:                                               ; preds = %B0, %C0
 B1:                                               ; preds = %A1
   %add16 = add nsw i32 %V.0, 42
   %idxprom17 = sext i32 %add16 to i64
-  %arrayidx18 = getelementptr inbounds i32, i32* %Out, i64 %idxprom17
-  %tmp6 = load i32, i32* %arrayidx18, align 4
+  %arrayidx18 = getelementptr inbounds i32, ptr %Out, i64 %idxprom17
+  %tmp6 = load i32, ptr %arrayidx18, align 4
   %inc19 = add nsw i32 %tmp6, 1
-  store i32 %inc19, i32* %arrayidx18, align 4
+  store i32 %inc19, ptr %arrayidx18, align 4
   br label %A2
 
 C1:                                               ; preds = %A1
   %idxprom21 = sext i16 %tmp5 to i64
-  %arrayidx22 = getelementptr inbounds i32, i32* %Out, i64 %idxprom21
-  %tmp7 = load i32, i32* %arrayidx22, align 4
+  %arrayidx22 = getelementptr inbounds i32, ptr %Out, i64 %idxprom21
+  %tmp7 = load i32, ptr %arrayidx22, align 4
   %dec23 = add nsw i32 %tmp7, -1
-  store i32 %dec23, i32* %arrayidx22, align 4
+  store i32 %dec23, ptr %arrayidx22, align 4
   br label %A2
 
 A2:                                               ; preds = %B1, %C1
-  %arrayidx27 = getelementptr inbounds i16, i16* %In, i64 2
-  %tmp8 = load i16, i16* %arrayidx27, align 2
+  %arrayidx27 = getelementptr inbounds i16, ptr %In, i64 2
+  %tmp8 = load i16, ptr %arrayidx27, align 2
   %conv28 = sext i16 %tmp8 to i32
   %cmp30 = icmp slt i16 %tmp8, 1041
   br i1 %cmp30, label %B2, label %C2
 
 B2:                                               ; preds = %A2
-  %arrayidx35 = getelementptr inbounds i32, i32* %Out, i64 1041
-  %tmp9 = load i32, i32* %arrayidx35, align 4
+  %arrayidx35 = getelementptr inbounds i32, ptr %Out, i64 1041
+  %tmp9 = load i32, ptr %arrayidx35, align 4
   %inc36 = add nsw i32 %tmp9, 1
-  store i32 %inc36, i32* %arrayidx35, align 4
+  store i32 %inc36, ptr %arrayidx35, align 4
   br label %A3
 
 C2:                                               ; preds = %A2
   %idxprom38 = sext i16 %tmp8 to i64
-  %arrayidx39 = getelementptr inbounds i32, i32* %Out, i64 %idxprom38
-  %tmp10 = load i32, i32* %arrayidx39, align 4
+  %arrayidx39 = getelementptr inbounds i32, ptr %Out, i64 %idxprom38
+  %tmp10 = load i32, ptr %arrayidx39, align 4
   %dec40 = add nsw i32 %tmp10, -1
-  store i32 %dec40, i32* %arrayidx39, align 4
+  store i32 %dec40, ptr %arrayidx39, align 4
   br label %A3
 
 A3:                                               ; preds = %B2, %C2
   %V.1 = phi i32 [ 1041, %B2 ], [ %conv28, %C2 ]
-  %arrayidx44 = getelementptr inbounds i16, i16* %In, i64 3
-  %tmp11 = load i16, i16* %arrayidx44, align 2
+  %arrayidx44 = getelementptr inbounds i16, ptr %In, i64 3
+  %tmp11 = load i16, ptr %arrayidx44, align 2
   %conv45 = sext i16 %tmp11 to i32
   %add46 = add nsw i32 %V.1, 42
   %cmp47 = icmp slt i32 %conv45, %add46
@@ -223,142 +223,142 @@ A3:                                               ; preds = %B2, %C2
 B3:                                               ; preds = %A3
   %add50 = add nsw i32 %V.1, 42
   %idxprom51 = sext i32 %add50 to i64
-  %arrayidx52 = getelementptr inbounds i32, i32* %Out, i64 %idxprom51
-  %tmp12 = load i32, i32* %arrayidx52, align 4
+  %arrayidx52 = getelementptr inbounds i32, ptr %Out, i64 %idxprom51
+  %tmp12 = load i32, ptr %arrayidx52, align 4
   %inc53 = add nsw i32 %tmp12, 1
-  store i32 %inc53, i32* %arrayidx52, align 4
+  store i32 %inc53, ptr %arrayidx52, align 4
   br label %A4
 
 C3:                                               ; preds = %A3
   %idxprom55 = sext i16 %tmp11 to i64
-  %arrayidx56 = getelementptr inbounds i32, i32* %Out, i64 %idxprom55
-  %tmp13 = load i32, i32* %arrayidx56, align 4
+  %arrayidx56 = getelementptr inbounds i32, ptr %Out, i64 %idxprom55
+  %tmp13 = load i32, ptr %arrayidx56, align 4
   %dec57 = add nsw i32 %tmp13, -1
-  store i32 %dec57, i32* %arrayidx56, align 4
+  store i32 %dec57, ptr %arrayidx56, align 4
   br label %A4
 
 A4:                                               ; preds = %B3, %C3
-  %arrayidx61 = getelementptr inbounds i16, i16* %In, i64 4
-  %tmp14 = load i16, i16* %arrayidx61, align 2
+  %arrayidx61 = getelementptr inbounds i16, ptr %In, i64 4
+  %tmp14 = load i16, ptr %arrayidx61, align 2
   %conv62 = sext i16 %tmp14 to i32
   %cmp64 = icmp slt i16 %tmp14, 1041
   br i1 %cmp64, label %B4, label %C4
 
 B4:                                               ; preds = %A4
-  %arrayidx69 = getelementptr inbounds i32, i32* %Out, i64 1041
-  %tmp15 = load i32, i32* %arrayidx69, align 4
+  %arrayidx69 = getelementptr inbounds i32, ptr %Out, i64 1041
+  %tmp15 = load i32, ptr %arrayidx69, align 4
   %inc70 = add nsw i32 %tmp15, 1
-  store i32 %inc70, i32* %arrayidx69, align 4
+  store i32 %inc70, ptr %arrayidx69, align 4
   br label %A5
 
 C4:                                               ; preds = %A4
   %idxprom72 = sext i16 %tmp14 to i64
-  %arrayidx73 = getelementptr inbounds i32, i32* %Out, i64 %idxprom72
-  %tmp16 = load i32, i32* %arrayidx73, align 4
+  %arrayidx73 = getelementptr inbounds i32, ptr %Out, i64 %idxprom72
+  %tmp16 = load i32, ptr %arrayidx73, align 4
   %dec74 = add nsw i32 %tmp16, -1
-  store i32 %dec74, i32* %arrayidx73, align 4
+  store i32 %dec74, ptr %arrayidx73, align 4
   %phitmp = add nsw i32 %conv62, 42
   br label %A5
 
 A5:                                               ; preds = %B4, %C4
   %V.2 = phi i32 [ 1083, %B4 ], [ %phitmp, %C4 ]
-  %arrayidx78 = getelementptr inbounds i16, i16* %In, i64 5
-  %tmp17 = load i16, i16* %arrayidx78, align 2
+  %arrayidx78 = getelementptr inbounds i16, ptr %In, i64 5
+  %tmp17 = load i16, ptr %arrayidx78, align 2
   %conv79 = sext i16 %tmp17 to i32
   %cmp81 = icmp slt i32 %conv79, %V.2
   br i1 %cmp81, label %B5, label %C5
 
 B5:                                               ; preds = %A5
   %idxprom85 = sext i32 %V.2 to i64
-  %arrayidx86 = getelementptr inbounds i32, i32* %Out, i64 %idxprom85
-  %tmp18 = load i32, i32* %arrayidx86, align 4
+  %arrayidx86 = getelementptr inbounds i32, ptr %Out, i64 %idxprom85
+  %tmp18 = load i32, ptr %arrayidx86, align 4
   %inc87 = add nsw i32 %tmp18, 1
-  store i32 %inc87, i32* %arrayidx86, align 4
+  store i32 %inc87, ptr %arrayidx86, align 4
   br label %A6
 
 C5:                                               ; preds = %A5
   %idxprom89 = sext i16 %tmp17 to i64
-  %arrayidx90 = getelementptr inbounds i32, i32* %Out, i64 %idxprom89
-  %tmp19 = load i32, i32* %arrayidx90, align 4
+  %arrayidx90 = getelementptr inbounds i32, ptr %Out, i64 %idxprom89
+  %tmp19 = load i32, ptr %arrayidx90, align 4
   %dec91 = add nsw i32 %tmp19, -1
-  store i32 %dec91, i32* %arrayidx90, align 4
+  store i32 %dec91, ptr %arrayidx90, align 4
   br label %A6
 
 A6:                                               ; preds = %B5, %C5
-  %arrayidx95 = getelementptr inbounds i16, i16* %In, i64 6
-  %tmp20 = load i16, i16* %arrayidx95, align 2
+  %arrayidx95 = getelementptr inbounds i16, ptr %In, i64 6
+  %tmp20 = load i16, ptr %arrayidx95, align 2
   %conv96 = sext i16 %tmp20 to i32
   %cmp98 = icmp slt i16 %tmp20, 1041
   br i1 %cmp98, label %B6, label %C6
 
 B6:                                               ; preds = %A6
-  %arrayidx103 = getelementptr inbounds i32, i32* %Out, i64 1041
-  %tmp21 = load i32, i32* %arrayidx103, align 4
+  %arrayidx103 = getelementptr inbounds i32, ptr %Out, i64 1041
+  %tmp21 = load i32, ptr %arrayidx103, align 4
   %inc104 = add nsw i32 %tmp21, 1
-  store i32 %inc104, i32* %arrayidx103, align 4
+  store i32 %inc104, ptr %arrayidx103, align 4
   br label %A7
 
 C6:                                               ; preds = %A6
   %idxprom106 = sext i16 %tmp20 to i64
-  %arrayidx107 = getelementptr inbounds i32, i32* %Out, i64 %idxprom106
-  %tmp22 = load i32, i32* %arrayidx107, align 4
+  %arrayidx107 = getelementptr inbounds i32, ptr %Out, i64 %idxprom106
+  %tmp22 = load i32, ptr %arrayidx107, align 4
   %dec108 = add nsw i32 %tmp22, -1
-  store i32 %dec108, i32* %arrayidx107, align 4
+  store i32 %dec108, ptr %arrayidx107, align 4
   %phitmp1 = add nsw i32 %conv96, 42
   br label %A7
 
 A7:                                               ; preds = %B6, %C6
   %V.3 = phi i32 [ 1083, %B6 ], [ %phitmp1, %C6 ]
-  %arrayidx112 = getelementptr inbounds i16, i16* %In, i64 7
-  %tmp23 = load i16, i16* %arrayidx112, align 2
+  %arrayidx112 = getelementptr inbounds i16, ptr %In, i64 7
+  %tmp23 = load i16, ptr %arrayidx112, align 2
   %conv113 = sext i16 %tmp23 to i32
   %cmp115 = icmp slt i32 %conv113, %V.3
   br i1 %cmp115, label %B7, label %C7
 
 B7:                                               ; preds = %A7
   %idxprom119 = sext i32 %V.3 to i64
-  %arrayidx120 = getelementptr inbounds i32, i32* %Out, i64 %idxprom119
-  %tmp24 = load i32, i32* %arrayidx120, align 4
+  %arrayidx120 = getelementptr inbounds i32, ptr %Out, i64 %idxprom119
+  %tmp24 = load i32, ptr %arrayidx120, align 4
   %inc121 = add nsw i32 %tmp24, 1
-  store i32 %inc121, i32* %arrayidx120, align 4
+  store i32 %inc121, ptr %arrayidx120, align 4
   br label %A8
 
 C7:                                               ; preds = %A7
   %idxprom123 = sext i16 %tmp23 to i64
-  %arrayidx124 = getelementptr inbounds i32, i32* %Out, i64 %idxprom123
-  %tmp25 = load i32, i32* %arrayidx124, align 4
+  %arrayidx124 = getelementptr inbounds i32, ptr %Out, i64 %idxprom123
+  %tmp25 = load i32, ptr %arrayidx124, align 4
   %dec125 = add nsw i32 %tmp25, -1
-  store i32 %dec125, i32* %arrayidx124, align 4
+  store i32 %dec125, ptr %arrayidx124, align 4
   br label %A8
 
 A8:                                               ; preds = %B7, %C7
-  %arrayidx129 = getelementptr inbounds i16, i16* %In, i64 8
-  %tmp26 = load i16, i16* %arrayidx129, align 2
+  %arrayidx129 = getelementptr inbounds i16, ptr %In, i64 8
+  %tmp26 = load i16, ptr %arrayidx129, align 2
   %cmp132 = icmp slt i16 %tmp26, 1041
   br i1 %cmp132, label %B8, label %C8
 
 B8:                                               ; preds = %A8
-  %arrayidx137 = getelementptr inbounds i32, i32* %Out, i64 1041
-  %tmp27 = load i32, i32* %arrayidx137, align 4
+  %arrayidx137 = getelementptr inbounds i32, ptr %Out, i64 1041
+  %tmp27 = load i32, ptr %arrayidx137, align 4
   %inc138 = add nsw i32 %tmp27, 1
-  store i32 %inc138, i32* %arrayidx137, align 4
+  store i32 %inc138, ptr %arrayidx137, align 4
   br label %FINAL
 
 C8:                                               ; preds = %A8
   %idxprom140 = sext i16 %tmp26 to i64
-  %arrayidx141 = getelementptr inbounds i32, i32* %Out, i64 %idxprom140
-  %tmp28 = load i32, i32* %arrayidx141, align 4
+  %arrayidx141 = getelementptr inbounds i32, ptr %Out, i64 %idxprom140
+  %tmp28 = load i32, ptr %arrayidx141, align 4
   %dec142 = add nsw i32 %tmp28, -1
-  store i32 %dec142, i32* %arrayidx141, align 4
+  store i32 %dec142, ptr %arrayidx141, align 4
   %phitmp2 = sext i16 %tmp26 to i64
   br label %FINAL
 
 FINAL:                                        ; preds = %C8, %B8
   %V.4 = phi i64 [ 1041, %B8 ], [ %phitmp2, %C8 ]
-  %arrayidx145 = getelementptr inbounds i32, i32* %Out, i64 %V.4
-  %tmp29 = load i32, i32* %arrayidx145, align 4
+  %arrayidx145 = getelementptr inbounds i32, ptr %Out, i64 %V.4
+  %tmp29 = load i32, ptr %arrayidx145, align 4
   %inc146 = add nsw i32 %tmp29, 1
-  store i32 %inc146, i32* %arrayidx145, align 4
+  store i32 %inc146, ptr %arrayidx145, align 4
   br label %ScopExit
 
 ScopExit:

diff  --git a/polly/test/ScopInfo/complex-successor-structure.ll b/polly/test/ScopInfo/complex-successor-structure.ll
index 66d6aef83cdc0..364344045a6a9 100644
--- a/polly/test/ScopInfo/complex-successor-structure.ll
+++ b/polly/test/ScopInfo/complex-successor-structure.ll
@@ -108,7 +108,7 @@ target triple = "thumbv7--linux-android"
 @Table2 = external global [1792 x i16], align 2
 @Table3 = external global [16 x i16], align 2
 
-define void @foo(i16* nocapture readonly %indice, i16* nocapture %Output, i16* nocapture readonly %In1, i16* nocapture readonly %In2, i16 signext %var, i16 signext %var2) {
+define void @foo(ptr nocapture readonly %indice, ptr nocapture %Output, ptr nocapture readonly %In1, ptr nocapture readonly %In2, i16 signext %var, i16 signext %var2) {
 entry:
   %.reg2mem158 = alloca i16
   %.reg2mem156 = alloca i16
@@ -117,420 +117,418 @@ entry:
   %.reg2mem150 = alloca i16
   %.reg2mem = alloca i16
   %Temp_Ref = alloca [16 x i16], align 2
-  %0 = bitcast [16 x i16]* %Temp_Ref to i8*
   %cmp = icmp eq i16 %var, 0
   br label %for.body
 
 for.body:                                       ; preds = %for.body, %entry
   %i.2138 = phi i32 [ %inc47, %for.body ], [ 0, %entry ]
-  %arrayidx28 = getelementptr inbounds [16 x i16], [16 x i16]* @Table3, i32 0, i32 %i.2138
-  %1 = load i16, i16* %arrayidx28, align 2
-  %conv29 = sext i16 %1 to i32
-  %arrayidx36 = getelementptr inbounds i16, i16* %In2, i32 %i.2138
-  %2 = load i16, i16* %arrayidx36, align 2
-  %conv37 = sext i16 %2 to i32
+  %arrayidx28 = getelementptr inbounds [16 x i16], ptr @Table3, i32 0, i32 %i.2138
+  %0 = load i16, ptr %arrayidx28, align 2
+  %conv29 = sext i16 %0 to i32
+  %arrayidx36 = getelementptr inbounds i16, ptr %In2, i32 %i.2138
+  %1 = load i16, ptr %arrayidx36, align 2
+  %conv37 = sext i16 %1 to i32
   %shl38147 = add nsw i32 %conv37, %conv29
   %add35.1 = add nuw nsw i32 %i.2138, 16
-  %arrayidx36.1 = getelementptr inbounds i16, i16* %In2, i32 %add35.1
-  %3 = load i16, i16* %arrayidx36.1, align 2
-  %conv37.1 = sext i16 %3 to i32
+  %arrayidx36.1 = getelementptr inbounds i16, ptr %In2, i32 %add35.1
+  %2 = load i16, ptr %arrayidx36.1, align 2
+  %conv37.1 = sext i16 %2 to i32
   %shl38.1148 = add nsw i32 %conv37.1, %shl38147
   %add35.2 = add nuw nsw i32 %i.2138, 32
-  %arrayidx36.2 = getelementptr inbounds i16, i16* %In2, i32 %add35.2
-  %4 = load i16, i16* %arrayidx36.2, align 2
-  %conv37.2 = sext i16 %4 to i32
+  %arrayidx36.2 = getelementptr inbounds i16, ptr %In2, i32 %add35.2
+  %3 = load i16, ptr %arrayidx36.2, align 2
+  %conv37.2 = sext i16 %3 to i32
   %shl38.2149 = add nsw i32 %conv37.2, %shl38.1148
   %add39.2 = shl i32 %shl38.2149, 14
   %add43 = add nsw i32 %add39.2, 32768
   %shr129 = lshr i32 %add43, 16
   %conv44 = trunc i32 %shr129 to i16
-  %arrayidx45 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 %i.2138
-  store i16 %conv44, i16* %arrayidx45, align 2
+  %arrayidx45 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 %i.2138
+  store i16 %conv44, ptr %arrayidx45, align 2
   %inc47 = add nuw nsw i32 %i.2138, 1
   %exitcond144 = icmp eq i32 %i.2138, 15
   br i1 %exitcond144, label %if.entry, label %for.body
 
 if.entry:                             ; preds = %for.body
-  %5 = load i16, i16* %In1, align 2
-  %conv54 = sext i16 %5 to i32
+  %4 = load i16, ptr %In1, align 2
+  %conv54 = sext i16 %4 to i32
   %mul55 = mul nsw i32 %conv54, 29491
   %shr56127 = lshr i32 %mul55, 15
-  %arrayidx57 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 0
-  %6 = load i16, i16* %arrayidx57, align 2
-  %conv58 = sext i16 %6 to i32
+  %5 = load i16, ptr %Temp_Ref, align 2
+  %conv58 = sext i16 %5 to i32
   %mul59 = mul nsw i32 %conv58, 3277
   %shr60128 = lshr i32 %mul59, 15
   %add61 = add nuw nsw i32 %shr60128, %shr56127
   %conv62 = trunc i32 %add61 to i16
-  store i16 %conv62, i16* %Output, align 2
-  %arrayidx53.1 = getelementptr inbounds i16, i16* %In1, i32 1
-  %7 = load i16, i16* %arrayidx53.1, align 2
-  %conv54.1 = sext i16 %7 to i32
+  store i16 %conv62, ptr %Output, align 2
+  %arrayidx53.1 = getelementptr inbounds i16, ptr %In1, i32 1
+  %6 = load i16, ptr %arrayidx53.1, align 2
+  %conv54.1 = sext i16 %6 to i32
   %mul55.1 = mul nsw i32 %conv54.1, 29491
   %shr56127.1 = lshr i32 %mul55.1, 15
-  %arrayidx57.1 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 1
-  %8 = load i16, i16* %arrayidx57.1, align 2
-  %conv58.1 = sext i16 %8 to i32
+  %arrayidx57.1 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 1
+  %7 = load i16, ptr %arrayidx57.1, align 2
+  %conv58.1 = sext i16 %7 to i32
   %mul59.1 = mul nsw i32 %conv58.1, 3277
   %shr60128.1 = lshr i32 %mul59.1, 15
   %add61.1 = add nuw nsw i32 %shr60128.1, %shr56127.1
   %conv62.1 = trunc i32 %add61.1 to i16
-  %arrayidx63.1 = getelementptr inbounds i16, i16* %Output, i32 1
-  store i16 %conv62.1, i16* %arrayidx63.1, align 2
-  %arrayidx53.2 = getelementptr inbounds i16, i16* %In1, i32 2
-  %9 = load i16, i16* %arrayidx53.2, align 2
-  %conv54.2 = sext i16 %9 to i32
+  %arrayidx63.1 = getelementptr inbounds i16, ptr %Output, i32 1
+  store i16 %conv62.1, ptr %arrayidx63.1, align 2
+  %arrayidx53.2 = getelementptr inbounds i16, ptr %In1, i32 2
+  %8 = load i16, ptr %arrayidx53.2, align 2
+  %conv54.2 = sext i16 %8 to i32
   %mul55.2 = mul nsw i32 %conv54.2, 29491
   %shr56127.2 = lshr i32 %mul55.2, 15
-  %arrayidx57.2 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 2
-  %10 = load i16, i16* %arrayidx57.2, align 2
-  %conv58.2 = sext i16 %10 to i32
+  %arrayidx57.2 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 2
+  %9 = load i16, ptr %arrayidx57.2, align 2
+  %conv58.2 = sext i16 %9 to i32
   %mul59.2 = mul nsw i32 %conv58.2, 3277
   %shr60128.2 = lshr i32 %mul59.2, 15
   %add61.2 = add nuw nsw i32 %shr60128.2, %shr56127.2
   %conv62.2 = trunc i32 %add61.2 to i16
-  %arrayidx63.2 = getelementptr inbounds i16, i16* %Output, i32 2
-  store i16 %conv62.2, i16* %arrayidx63.2, align 2
-  %arrayidx53.3 = getelementptr inbounds i16, i16* %In1, i32 3
-  %11 = load i16, i16* %arrayidx53.3, align 2
-  %conv54.3 = sext i16 %11 to i32
+  %arrayidx63.2 = getelementptr inbounds i16, ptr %Output, i32 2
+  store i16 %conv62.2, ptr %arrayidx63.2, align 2
+  %arrayidx53.3 = getelementptr inbounds i16, ptr %In1, i32 3
+  %10 = load i16, ptr %arrayidx53.3, align 2
+  %conv54.3 = sext i16 %10 to i32
   %mul55.3 = mul nsw i32 %conv54.3, 29491
   %shr56127.3 = lshr i32 %mul55.3, 15
-  %arrayidx57.3 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 3
-  %12 = load i16, i16* %arrayidx57.3, align 2
-  %conv58.3 = sext i16 %12 to i32
+  %arrayidx57.3 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 3
+  %11 = load i16, ptr %arrayidx57.3, align 2
+  %conv58.3 = sext i16 %11 to i32
   %mul59.3 = mul nsw i32 %conv58.3, 3277
   %shr60128.3 = lshr i32 %mul59.3, 15
   %add61.3 = add nuw nsw i32 %shr60128.3, %shr56127.3
   %conv62.3 = trunc i32 %add61.3 to i16
-  %arrayidx63.3 = getelementptr inbounds i16, i16* %Output, i32 3
-  store i16 %conv62.3, i16* %arrayidx63.3, align 2
-  %arrayidx53.4 = getelementptr inbounds i16, i16* %In1, i32 4
-  %13 = load i16, i16* %arrayidx53.4, align 2
-  %conv54.4 = sext i16 %13 to i32
+  %arrayidx63.3 = getelementptr inbounds i16, ptr %Output, i32 3
+  store i16 %conv62.3, ptr %arrayidx63.3, align 2
+  %arrayidx53.4 = getelementptr inbounds i16, ptr %In1, i32 4
+  %12 = load i16, ptr %arrayidx53.4, align 2
+  %conv54.4 = sext i16 %12 to i32
   %mul55.4 = mul nsw i32 %conv54.4, 29491
   %shr56127.4 = lshr i32 %mul55.4, 15
-  %arrayidx57.4 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 4
-  %14 = load i16, i16* %arrayidx57.4, align 2
-  %conv58.4 = sext i16 %14 to i32
+  %arrayidx57.4 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 4
+  %13 = load i16, ptr %arrayidx57.4, align 2
+  %conv58.4 = sext i16 %13 to i32
   %mul59.4 = mul nsw i32 %conv58.4, 3277
   %shr60128.4 = lshr i32 %mul59.4, 15
   %add61.4 = add nuw nsw i32 %shr60128.4, %shr56127.4
   %conv62.4 = trunc i32 %add61.4 to i16
-  %arrayidx63.4 = getelementptr inbounds i16, i16* %Output, i32 4
-  store i16 %conv62.4, i16* %arrayidx63.4, align 2
-  %arrayidx53.5 = getelementptr inbounds i16, i16* %In1, i32 5
-  %15 = load i16, i16* %arrayidx53.5, align 2
-  %conv54.5 = sext i16 %15 to i32
+  %arrayidx63.4 = getelementptr inbounds i16, ptr %Output, i32 4
+  store i16 %conv62.4, ptr %arrayidx63.4, align 2
+  %arrayidx53.5 = getelementptr inbounds i16, ptr %In1, i32 5
+  %14 = load i16, ptr %arrayidx53.5, align 2
+  %conv54.5 = sext i16 %14 to i32
   %mul55.5 = mul nsw i32 %conv54.5, 29491
   %shr56127.5 = lshr i32 %mul55.5, 15
-  %arrayidx57.5 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 5
-  %16 = load i16, i16* %arrayidx57.5, align 2
-  %conv58.5 = sext i16 %16 to i32
+  %arrayidx57.5 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 5
+  %15 = load i16, ptr %arrayidx57.5, align 2
+  %conv58.5 = sext i16 %15 to i32
   %mul59.5 = mul nsw i32 %conv58.5, 3277
   %shr60128.5 = lshr i32 %mul59.5, 15
   %add61.5 = add nuw nsw i32 %shr60128.5, %shr56127.5
   %conv62.5 = trunc i32 %add61.5 to i16
-  %arrayidx63.5 = getelementptr inbounds i16, i16* %Output, i32 5
-  store i16 %conv62.5, i16* %arrayidx63.5, align 2
-  %arrayidx53.6 = getelementptr inbounds i16, i16* %In1, i32 6
-  %17 = load i16, i16* %arrayidx53.6, align 2
-  %conv54.6 = sext i16 %17 to i32
+  %arrayidx63.5 = getelementptr inbounds i16, ptr %Output, i32 5
+  store i16 %conv62.5, ptr %arrayidx63.5, align 2
+  %arrayidx53.6 = getelementptr inbounds i16, ptr %In1, i32 6
+  %16 = load i16, ptr %arrayidx53.6, align 2
+  %conv54.6 = sext i16 %16 to i32
   %mul55.6 = mul nsw i32 %conv54.6, 29491
   %shr56127.6 = lshr i32 %mul55.6, 15
-  %arrayidx57.6 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 6
-  %18 = load i16, i16* %arrayidx57.6, align 2
-  %conv58.6 = sext i16 %18 to i32
+  %arrayidx57.6 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 6
+  %17 = load i16, ptr %arrayidx57.6, align 2
+  %conv58.6 = sext i16 %17 to i32
   %mul59.6 = mul nsw i32 %conv58.6, 3277
   %shr60128.6 = lshr i32 %mul59.6, 15
   %add61.6 = add nuw nsw i32 %shr60128.6, %shr56127.6
   %conv62.6 = trunc i32 %add61.6 to i16
-  %arrayidx63.6 = getelementptr inbounds i16, i16* %Output, i32 6
-  store i16 %conv62.6, i16* %arrayidx63.6, align 2
-  %arrayidx53.7 = getelementptr inbounds i16, i16* %In1, i32 7
-  %19 = load i16, i16* %arrayidx53.7, align 2
-  %conv54.7 = sext i16 %19 to i32
+  %arrayidx63.6 = getelementptr inbounds i16, ptr %Output, i32 6
+  store i16 %conv62.6, ptr %arrayidx63.6, align 2
+  %arrayidx53.7 = getelementptr inbounds i16, ptr %In1, i32 7
+  %18 = load i16, ptr %arrayidx53.7, align 2
+  %conv54.7 = sext i16 %18 to i32
   %mul55.7 = mul nsw i32 %conv54.7, 29491
   %shr56127.7 = lshr i32 %mul55.7, 15
-  %arrayidx57.7 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 7
-  %20 = load i16, i16* %arrayidx57.7, align 2
-  %conv58.7 = sext i16 %20 to i32
+  %arrayidx57.7 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 7
+  %19 = load i16, ptr %arrayidx57.7, align 2
+  %conv58.7 = sext i16 %19 to i32
   %mul59.7 = mul nsw i32 %conv58.7, 3277
   %shr60128.7 = lshr i32 %mul59.7, 15
   %add61.7 = add nuw nsw i32 %shr60128.7, %shr56127.7
   %conv62.7 = trunc i32 %add61.7 to i16
-  %arrayidx63.7 = getelementptr inbounds i16, i16* %Output, i32 7
-  store i16 %conv62.7, i16* %arrayidx63.7, align 2
-  %arrayidx53.8 = getelementptr inbounds i16, i16* %In1, i32 8
-  %21 = load i16, i16* %arrayidx53.8, align 2
-  %conv54.8 = sext i16 %21 to i32
+  %arrayidx63.7 = getelementptr inbounds i16, ptr %Output, i32 7
+  store i16 %conv62.7, ptr %arrayidx63.7, align 2
+  %arrayidx53.8 = getelementptr inbounds i16, ptr %In1, i32 8
+  %20 = load i16, ptr %arrayidx53.8, align 2
+  %conv54.8 = sext i16 %20 to i32
   %mul55.8 = mul nsw i32 %conv54.8, 29491
   %shr56127.8 = lshr i32 %mul55.8, 15
-  %arrayidx57.8 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 8
-  %22 = load i16, i16* %arrayidx57.8, align 2
-  %conv58.8 = sext i16 %22 to i32
+  %arrayidx57.8 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 8
+  %21 = load i16, ptr %arrayidx57.8, align 2
+  %conv58.8 = sext i16 %21 to i32
   %mul59.8 = mul nsw i32 %conv58.8, 3277
   %shr60128.8 = lshr i32 %mul59.8, 15
   %add61.8 = add nuw nsw i32 %shr60128.8, %shr56127.8
   %conv62.8 = trunc i32 %add61.8 to i16
-  %arrayidx63.8 = getelementptr inbounds i16, i16* %Output, i32 8
-  store i16 %conv62.8, i16* %arrayidx63.8, align 2
-  %arrayidx53.9 = getelementptr inbounds i16, i16* %In1, i32 9
-  %23 = load i16, i16* %arrayidx53.9, align 2
-  %conv54.9 = sext i16 %23 to i32
+  %arrayidx63.8 = getelementptr inbounds i16, ptr %Output, i32 8
+  store i16 %conv62.8, ptr %arrayidx63.8, align 2
+  %arrayidx53.9 = getelementptr inbounds i16, ptr %In1, i32 9
+  %22 = load i16, ptr %arrayidx53.9, align 2
+  %conv54.9 = sext i16 %22 to i32
   %mul55.9 = mul nsw i32 %conv54.9, 29491
   %shr56127.9 = lshr i32 %mul55.9, 15
-  %arrayidx57.9 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 9
-  %24 = load i16, i16* %arrayidx57.9, align 2
-  %conv58.9 = sext i16 %24 to i32
+  %arrayidx57.9 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 9
+  %23 = load i16, ptr %arrayidx57.9, align 2
+  %conv58.9 = sext i16 %23 to i32
   %mul59.9 = mul nsw i32 %conv58.9, 3277
   %shr60128.9 = lshr i32 %mul59.9, 15
   %add61.9 = add nuw nsw i32 %shr60128.9, %shr56127.9
   %conv62.9 = trunc i32 %add61.9 to i16
-  %arrayidx63.9 = getelementptr inbounds i16, i16* %Output, i32 9
-  store i16 %conv62.9, i16* %arrayidx63.9, align 2
-  %arrayidx53.10 = getelementptr inbounds i16, i16* %In1, i32 10
-  %25 = load i16, i16* %arrayidx53.10, align 2
-  %conv54.10 = sext i16 %25 to i32
+  %arrayidx63.9 = getelementptr inbounds i16, ptr %Output, i32 9
+  store i16 %conv62.9, ptr %arrayidx63.9, align 2
+  %arrayidx53.10 = getelementptr inbounds i16, ptr %In1, i32 10
+  %24 = load i16, ptr %arrayidx53.10, align 2
+  %conv54.10 = sext i16 %24 to i32
   %mul55.10 = mul nsw i32 %conv54.10, 29491
   %shr56127.10 = lshr i32 %mul55.10, 15
-  %arrayidx57.10 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 10
-  %26 = load i16, i16* %arrayidx57.10, align 2
-  %conv58.10 = sext i16 %26 to i32
+  %arrayidx57.10 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 10
+  %25 = load i16, ptr %arrayidx57.10, align 2
+  %conv58.10 = sext i16 %25 to i32
   %mul59.10 = mul nsw i32 %conv58.10, 3277
   %shr60128.10 = lshr i32 %mul59.10, 15
   %add61.10 = add nuw nsw i32 %shr60128.10, %shr56127.10
   %conv62.10 = trunc i32 %add61.10 to i16
-  %arrayidx63.10 = getelementptr inbounds i16, i16* %Output, i32 10
-  store i16 %conv62.10, i16* %arrayidx63.10, align 2
-  %arrayidx53.11 = getelementptr inbounds i16, i16* %In1, i32 11
-  %27 = load i16, i16* %arrayidx53.11, align 2
-  %conv54.11 = sext i16 %27 to i32
+  %arrayidx63.10 = getelementptr inbounds i16, ptr %Output, i32 10
+  store i16 %conv62.10, ptr %arrayidx63.10, align 2
+  %arrayidx53.11 = getelementptr inbounds i16, ptr %In1, i32 11
+  %26 = load i16, ptr %arrayidx53.11, align 2
+  %conv54.11 = sext i16 %26 to i32
   %mul55.11 = mul nsw i32 %conv54.11, 29491
   %shr56127.11 = lshr i32 %mul55.11, 15
-  %arrayidx57.11 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 11
-  %28 = load i16, i16* %arrayidx57.11, align 2
-  %conv58.11 = sext i16 %28 to i32
+  %arrayidx57.11 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 11
+  %27 = load i16, ptr %arrayidx57.11, align 2
+  %conv58.11 = sext i16 %27 to i32
   %mul59.11 = mul nsw i32 %conv58.11, 3277
   %shr60128.11 = lshr i32 %mul59.11, 15
   %add61.11 = add nuw nsw i32 %shr60128.11, %shr56127.11
   %conv62.11 = trunc i32 %add61.11 to i16
-  %arrayidx63.11 = getelementptr inbounds i16, i16* %Output, i32 11
-  store i16 %conv62.11, i16* %arrayidx63.11, align 2
-  %arrayidx53.12 = getelementptr inbounds i16, i16* %In1, i32 12
-  %29 = load i16, i16* %arrayidx53.12, align 2
-  %conv54.12 = sext i16 %29 to i32
+  %arrayidx63.11 = getelementptr inbounds i16, ptr %Output, i32 11
+  store i16 %conv62.11, ptr %arrayidx63.11, align 2
+  %arrayidx53.12 = getelementptr inbounds i16, ptr %In1, i32 12
+  %28 = load i16, ptr %arrayidx53.12, align 2
+  %conv54.12 = sext i16 %28 to i32
   %mul55.12 = mul nsw i32 %conv54.12, 29491
   %shr56127.12 = lshr i32 %mul55.12, 15
-  %arrayidx57.12 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 12
-  %30 = load i16, i16* %arrayidx57.12, align 2
-  %conv58.12 = sext i16 %30 to i32
+  %arrayidx57.12 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 12
+  %29 = load i16, ptr %arrayidx57.12, align 2
+  %conv58.12 = sext i16 %29 to i32
   %mul59.12 = mul nsw i32 %conv58.12, 3277
   %shr60128.12 = lshr i32 %mul59.12, 15
   %add61.12 = add nuw nsw i32 %shr60128.12, %shr56127.12
   %conv62.12 = trunc i32 %add61.12 to i16
-  %arrayidx63.12 = getelementptr inbounds i16, i16* %Output, i32 12
-  store i16 %conv62.12, i16* %arrayidx63.12, align 2
-  %arrayidx53.13 = getelementptr inbounds i16, i16* %In1, i32 13
-  %31 = load i16, i16* %arrayidx53.13, align 2
-  %conv54.13 = sext i16 %31 to i32
+  %arrayidx63.12 = getelementptr inbounds i16, ptr %Output, i32 12
+  store i16 %conv62.12, ptr %arrayidx63.12, align 2
+  %arrayidx53.13 = getelementptr inbounds i16, ptr %In1, i32 13
+  %30 = load i16, ptr %arrayidx53.13, align 2
+  %conv54.13 = sext i16 %30 to i32
   %mul55.13 = mul nsw i32 %conv54.13, 29491
   %shr56127.13 = lshr i32 %mul55.13, 15
-  %arrayidx57.13 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 13
-  %32 = load i16, i16* %arrayidx57.13, align 2
-  %conv58.13 = sext i16 %32 to i32
+  %arrayidx57.13 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 13
+  %31 = load i16, ptr %arrayidx57.13, align 2
+  %conv58.13 = sext i16 %31 to i32
   %mul59.13 = mul nsw i32 %conv58.13, 3277
   %shr60128.13 = lshr i32 %mul59.13, 15
   %add61.13 = add nuw nsw i32 %shr60128.13, %shr56127.13
   %conv62.13 = trunc i32 %add61.13 to i16
-  %arrayidx63.13 = getelementptr inbounds i16, i16* %Output, i32 13
-  store i16 %conv62.13, i16* %arrayidx63.13, align 2
-  %arrayidx53.14 = getelementptr inbounds i16, i16* %In1, i32 14
-  %33 = load i16, i16* %arrayidx53.14, align 2
-  %conv54.14 = sext i16 %33 to i32
+  %arrayidx63.13 = getelementptr inbounds i16, ptr %Output, i32 13
+  store i16 %conv62.13, ptr %arrayidx63.13, align 2
+  %arrayidx53.14 = getelementptr inbounds i16, ptr %In1, i32 14
+  %32 = load i16, ptr %arrayidx53.14, align 2
+  %conv54.14 = sext i16 %32 to i32
   %mul55.14 = mul nsw i32 %conv54.14, 29491
   %shr56127.14 = lshr i32 %mul55.14, 15
-  %arrayidx57.14 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 14
-  %34 = load i16, i16* %arrayidx57.14, align 2
-  %conv58.14 = sext i16 %34 to i32
+  %arrayidx57.14 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 14
+  %33 = load i16, ptr %arrayidx57.14, align 2
+  %conv58.14 = sext i16 %33 to i32
   %mul59.14 = mul nsw i32 %conv58.14, 3277
   %shr60128.14 = lshr i32 %mul59.14, 15
   %add61.14 = add nuw nsw i32 %shr60128.14, %shr56127.14
   %conv62.14 = trunc i32 %add61.14 to i16
-  %arrayidx63.14 = getelementptr inbounds i16, i16* %Output, i32 14
-  store i16 %conv62.14, i16* %arrayidx63.14, align 2
-  %arrayidx53.15 = getelementptr inbounds i16, i16* %In1, i32 15
-  %35 = load i16, i16* %arrayidx53.15, align 2
-  %conv54.15 = sext i16 %35 to i32
+  %arrayidx63.14 = getelementptr inbounds i16, ptr %Output, i32 14
+  store i16 %conv62.14, ptr %arrayidx63.14, align 2
+  %arrayidx53.15 = getelementptr inbounds i16, ptr %In1, i32 15
+  %34 = load i16, ptr %arrayidx53.15, align 2
+  %conv54.15 = sext i16 %34 to i32
   %mul55.15 = mul nsw i32 %conv54.15, 29491
   %shr56127.15 = lshr i32 %mul55.15, 15
-  %arrayidx57.15 = getelementptr inbounds [16 x i16], [16 x i16]* %Temp_Ref, i32 0, i32 15
-  %36 = load i16, i16* %arrayidx57.15, align 2
-  %conv58.15 = sext i16 %36 to i32
+  %arrayidx57.15 = getelementptr inbounds [16 x i16], ptr %Temp_Ref, i32 0, i32 15
+  %35 = load i16, ptr %arrayidx57.15, align 2
+  %conv58.15 = sext i16 %35 to i32
   %mul59.15 = mul nsw i32 %conv58.15, 3277
   %shr60128.15 = lshr i32 %mul59.15, 15
   %add61.15 = add nuw nsw i32 %shr60128.15, %shr56127.15
   %conv62.15 = trunc i32 %add61.15 to i16
-  %arrayidx63.15 = getelementptr inbounds i16, i16* %Output, i32 15
-  store i16 %conv62.15, i16* %arrayidx63.15, align 2
-  store i16 %conv62.9, i16* %.reg2mem
-  store i16 %conv62.10, i16* %.reg2mem150
-  store i16 %conv62.11, i16* %.reg2mem152
-  store i16 %conv62.12, i16* %.reg2mem154
-  store i16 %conv62.13, i16* %.reg2mem156
-  store i16 %conv62.14, i16* %.reg2mem158
-  %.reload159 = load i16, i16* %.reg2mem158
-  %.reload157 = load i16, i16* %.reg2mem156
-  %.reload155 = load i16, i16* %.reg2mem154
-  %.reload153 = load i16, i16* %.reg2mem152
-  %.reload151 = load i16, i16* %.reg2mem150
-  %.reload = load i16, i16* %.reg2mem
-  %37 = load i16, i16* %In1, align 2
-  %cmp77 = icmp slt i16 %37, 128
+  %arrayidx63.15 = getelementptr inbounds i16, ptr %Output, i32 15
+  store i16 %conv62.15, ptr %arrayidx63.15, align 2
+  store i16 %conv62.9, ptr %.reg2mem
+  store i16 %conv62.10, ptr %.reg2mem150
+  store i16 %conv62.11, ptr %.reg2mem152
+  store i16 %conv62.12, ptr %.reg2mem154
+  store i16 %conv62.13, ptr %.reg2mem156
+  store i16 %conv62.14, ptr %.reg2mem158
+  %.reload159 = load i16, ptr %.reg2mem158
+  %.reload157 = load i16, ptr %.reg2mem156
+  %.reload155 = load i16, ptr %.reg2mem154
+  %.reload153 = load i16, ptr %.reg2mem152
+  %.reload151 = load i16, ptr %.reg2mem150
+  %.reload = load i16, ptr %.reg2mem
+  %36 = load i16, ptr %In1, align 2
+  %cmp77 = icmp slt i16 %36, 128
   br i1 %cmp77, label %A0, label %B0
 
 A0:                                        ; preds = %if.entry
-  store i16 128, i16* %Output, align 2
+  store i16 128, ptr %Output, align 2
   br label %B0
 
 B0:                                         ; preds = %A, %if.entry
-  %38 = phi i16 [ 128, %A0 ], [ %37, %if.entry ]
-  %add84 = add i16 %38, 128
-  %arrayidx74.1 = getelementptr inbounds i16, i16* %Output, i32 1
-  %39 = load i16, i16* %arrayidx74.1, align 2
-  %cmp77.1 = icmp slt i16 %39, %add84
+  %37 = phi i16 [ 128, %A0 ], [ %36, %if.entry ]
+  %add84 = add i16 %37, 128
+  %arrayidx74.1 = getelementptr inbounds i16, ptr %Output, i32 1
+  %38 = load i16, ptr %arrayidx74.1, align 2
+  %cmp77.1 = icmp slt i16 %38, %add84
   br i1 %cmp77.1, label %A1, label %B1
 
 A1:                                      ; preds = %B
-  store i16 %add84, i16* %arrayidx74.1, align 2
+  store i16 %add84, ptr %arrayidx74.1, align 2
   br label %B1
 
 B1:                                       ; preds = %A1, %B
-  %40 = phi i16 [ %add84, %A1 ], [ %39, %B0 ]
-  %add84.1 = add i16 %40, 128
-  %arrayidx74.2 = getelementptr inbounds i16, i16* %Output, i32 2
-  %41 = load i16, i16* %arrayidx74.2, align 2
-  %cmp77.2 = icmp slt i16 %41, %add84.1
+  %39 = phi i16 [ %add84, %A1 ], [ %38, %B0 ]
+  %add84.1 = add i16 %39, 128
+  %arrayidx74.2 = getelementptr inbounds i16, ptr %Output, i32 2
+  %40 = load i16, ptr %arrayidx74.2, align 2
+  %cmp77.2 = icmp slt i16 %40, %add84.1
   br i1 %cmp77.2, label %A2, label %B2
 
 A2:                                      ; preds = %B1
-  store i16 %add84.1, i16* %arrayidx74.2, align 2
+  store i16 %add84.1, ptr %arrayidx74.2, align 2
   br label %B2
 
 B2:                                       ; preds = %A2, %B1
-  %42 = phi i16 [ %add84.1, %A2 ], [ %41, %B1 ]
-  %add84.2 = add i16 %42, 128
-  %arrayidx74.3 = getelementptr inbounds i16, i16* %Output, i32 3
-  %43 = load i16, i16* %arrayidx74.3, align 2
-  %cmp77.3 = icmp slt i16 %43, %add84.2
+  %41 = phi i16 [ %add84.1, %A2 ], [ %40, %B1 ]
+  %add84.2 = add i16 %41, 128
+  %arrayidx74.3 = getelementptr inbounds i16, ptr %Output, i32 3
+  %42 = load i16, ptr %arrayidx74.3, align 2
+  %cmp77.3 = icmp slt i16 %42, %add84.2
   br i1 %cmp77.3, label %A3, label %B3
 
 A3:                                      ; preds = %B2
-  store i16 %add84.2, i16* %arrayidx74.3, align 2
+  store i16 %add84.2, ptr %arrayidx74.3, align 2
   br label %B3
 
 B3:                                       ; preds = %A3, %B2
-  %44 = phi i16 [ %add84.2, %A3 ], [ %43, %B2 ]
-  %add84.3 = add i16 %44, 128
-  %arrayidx74.4 = getelementptr inbounds i16, i16* %Output, i32 4
-  %45 = load i16, i16* %arrayidx74.4, align 2
-  %cmp77.4 = icmp slt i16 %45, %add84.3
+  %43 = phi i16 [ %add84.2, %A3 ], [ %42, %B2 ]
+  %add84.3 = add i16 %43, 128
+  %arrayidx74.4 = getelementptr inbounds i16, ptr %Output, i32 4
+  %44 = load i16, ptr %arrayidx74.4, align 2
+  %cmp77.4 = icmp slt i16 %44, %add84.3
   br i1 %cmp77.4, label %A4, label %B4
 
 A4:                                      ; preds = %B3
-  store i16 %add84.3, i16* %arrayidx74.4, align 2
+  store i16 %add84.3, ptr %arrayidx74.4, align 2
   br label %B4
 
 B4:                                       ; preds = %A4, %B3
-  %46 = phi i16 [ %add84.3, %A4 ], [ %45, %B3 ]
-  %add84.4 = add i16 %46, 128
-  %arrayidx74.5 = getelementptr inbounds i16, i16* %Output, i32 5
-  %47 = load i16, i16* %arrayidx74.5, align 2
-  %cmp77.5 = icmp slt i16 %47, %add84.4
+  %45 = phi i16 [ %add84.3, %A4 ], [ %44, %B3 ]
+  %add84.4 = add i16 %45, 128
+  %arrayidx74.5 = getelementptr inbounds i16, ptr %Output, i32 5
+  %46 = load i16, ptr %arrayidx74.5, align 2
+  %cmp77.5 = icmp slt i16 %46, %add84.4
   br i1 %cmp77.5, label %A5, label %B5
 
 A5:                                      ; preds = %B4
-  store i16 %add84.4, i16* %arrayidx74.5, align 2
+  store i16 %add84.4, ptr %arrayidx74.5, align 2
   br label %B5
 
 B5:                                       ; preds = %A5, %B4
-  %48 = phi i16 [ %add84.4, %A5 ], [ %47, %B4 ]
-  %add84.5 = add i16 %48, 128
-  %arrayidx74.6 = getelementptr inbounds i16, i16* %Output, i32 6
-  %49 = load i16, i16* %arrayidx74.6, align 2
-  %cmp77.6 = icmp slt i16 %49, %add84.5
+  %47 = phi i16 [ %add84.4, %A5 ], [ %46, %B4 ]
+  %add84.5 = add i16 %47, 128
+  %arrayidx74.6 = getelementptr inbounds i16, ptr %Output, i32 6
+  %48 = load i16, ptr %arrayidx74.6, align 2
+  %cmp77.6 = icmp slt i16 %48, %add84.5
   br i1 %cmp77.6, label %A6, label %B6
 
 A6:                                      ; preds = %B5
-  store i16 %add84.5, i16* %arrayidx74.6, align 2
+  store i16 %add84.5, ptr %arrayidx74.6, align 2
   br label %B6
 
 B6:                                       ; preds = %A6, %B5
-  %50 = phi i16 [ %add84.5, %A6 ], [ %49, %B5 ]
-  %add84.6 = add i16 %50, 128
-  %arrayidx74.7 = getelementptr inbounds i16, i16* %Output, i32 7
-  %51 = load i16, i16* %arrayidx74.7, align 2
-  %cmp77.7 = icmp slt i16 %51, %add84.6
+  %49 = phi i16 [ %add84.5, %A6 ], [ %48, %B5 ]
+  %add84.6 = add i16 %49, 128
+  %arrayidx74.7 = getelementptr inbounds i16, ptr %Output, i32 7
+  %50 = load i16, ptr %arrayidx74.7, align 2
+  %cmp77.7 = icmp slt i16 %50, %add84.6
   br i1 %cmp77.7, label %A7, label %B7
 
 A7:                                      ; preds = %B6
-  store i16 %add84.6, i16* %arrayidx74.7, align 2
+  store i16 %add84.6, ptr %arrayidx74.7, align 2
   br label %B7
 
 B7:                                       ; preds = %A7, %B6
-  %52 = phi i16 [ %add84.6, %A7 ], [ %51, %B6 ]
-  %add84.7 = add i16 %52, 128
-  %arrayidx74.8 = getelementptr inbounds i16, i16* %Output, i32 8
-  %53 = load i16, i16* %arrayidx74.8, align 2
-  %cmp77.8 = icmp slt i16 %53, %add84.7
+  %51 = phi i16 [ %add84.6, %A7 ], [ %50, %B6 ]
+  %add84.7 = add i16 %51, 128
+  %arrayidx74.8 = getelementptr inbounds i16, ptr %Output, i32 8
+  %52 = load i16, ptr %arrayidx74.8, align 2
+  %cmp77.8 = icmp slt i16 %52, %add84.7
   br i1 %cmp77.8, label %A8, label %B8
 
 A8:                                      ; preds = %B7
-  store i16 %add84.7, i16* %arrayidx74.8, align 2
+  store i16 %add84.7, ptr %arrayidx74.8, align 2
   br label %B8
 
 B8:                                       ; preds = %A8, %B7
-  %54 = phi i16 [ %add84.7, %A8 ], [ %53, %B7 ]
-  %add84.8 = add i16 %54, 128
+  %53 = phi i16 [ %add84.7, %A8 ], [ %52, %B7 ]
+  %add84.8 = add i16 %53, 128
   %cmp77.9 = icmp slt i16 %.reload, %add84.8
   br i1 %cmp77.9, label %A9, label %B9
 
 A9:                                      ; preds = %B8
-  %arrayidx74.9 = getelementptr inbounds i16, i16* %Output, i32 9
-  store i16 %add84.8, i16* %arrayidx74.9, align 2
+  %arrayidx74.9 = getelementptr inbounds i16, ptr %Output, i32 9
+  store i16 %add84.8, ptr %arrayidx74.9, align 2
   br label %B9
 
 B9:                                       ; preds = %A9, %B8
-  %55 = phi i16 [ %add84.8, %A9 ], [ %.reload, %B8 ]
-  %add84.9 = add i16 %55, 128
+  %54 = phi i16 [ %add84.8, %A9 ], [ %.reload, %B8 ]
+  %add84.9 = add i16 %54, 128
   %cmp77.10 = icmp slt i16 %.reload151, %add84.9
   br i1 %cmp77.10, label %A10, label %B10
 
 A10:                                     ; preds = %B9
-  %arrayidx74.10 = getelementptr inbounds i16, i16* %Output, i32 10
-  store i16 %add84.9, i16* %arrayidx74.10, align 2
+  %arrayidx74.10 = getelementptr inbounds i16, ptr %Output, i32 10
+  store i16 %add84.9, ptr %arrayidx74.10, align 2
   br label %B10
 
 B10:                                      ; preds = %A10, %B9
-  %56 = phi i16 [ %add84.9, %A10 ], [ %.reload151, %B9 ]
-  %add84.10 = add i16 %56, 128
+  %55 = phi i16 [ %add84.9, %A10 ], [ %.reload151, %B9 ]
+  %add84.10 = add i16 %55, 128
   %cmp77.11 = icmp slt i16 %.reload153, %add84.10
   br i1 %cmp77.11, label %A11, label %B11
 
 A11:                                     ; preds = %B10
-  %arrayidx74.11 = getelementptr inbounds i16, i16* %Output, i32 11
-  store i16 %add84.10, i16* %arrayidx74.11, align 2
+  %arrayidx74.11 = getelementptr inbounds i16, ptr %Output, i32 11
+  store i16 %add84.10, ptr %arrayidx74.11, align 2
   br label %B11
 
 B11:                                      ; preds = %A11, %B10
-  %57 = phi i16 [ %add84.10, %A11 ], [ %.reload153, %B10 ]
-  %add84.11 = add i16 %57, 128
+  %56 = phi i16 [ %add84.10, %A11 ], [ %.reload153, %B10 ]
+  %add84.11 = add i16 %56, 128
   %cmp77.12 = icmp slt i16 %.reload155, %add84.11
   br i1 %cmp77.12, label %A12, label %B13
 
 A12:                                     ; preds = %B11
-  %arrayidx74.12 = getelementptr inbounds i16, i16* %Output, i32 12
-  store i16 %add84.11, i16* %arrayidx74.12, align 2
+  %arrayidx74.12 = getelementptr inbounds i16, ptr %Output, i32 12
+  store i16 %add84.11, ptr %arrayidx74.12, align 2
   br label %B13
 
 B13:                                      ; preds = %A12, %B13

diff  --git a/polly/test/ScopInfo/complex_domain_binary_condition.ll b/polly/test/ScopInfo/complex_domain_binary_condition.ll
index 4434b9026d173..cec26855debbb 100644
--- a/polly/test/ScopInfo/complex_domain_binary_condition.ll
+++ b/polly/test/ScopInfo/complex_domain_binary_condition.ll
@@ -8,11 +8,11 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 %struct.bc_struct.0.2.4.6.13.20.27.43.44.46.50.52.58.60.81.89.90.99.107.108.109.111.116.118.149 = type { i32, i32, i32, i32, [1024 x i8] }
 
 ; Function Attrs: nounwind uwtable
-define void @bc_multiply(%struct.bc_struct.0.2.4.6.13.20.27.43.44.46.50.52.58.60.81.89.90.99.107.108.109.111.116.118.149* readonly %n1, i32 %scale) #0 {
+define void @bc_multiply(ptr readonly %n1, i32 %scale) #0 {
 entry:
-  %0 = load i32, i32* undef, align 4
-  %1 = load i32, i32* undef, align 4
-  %2 = load i32, i32* undef, align 4
+  %0 = load i32, ptr undef, align 4
+  %1 = load i32, ptr undef, align 4
+  %2 = load i32, ptr undef, align 4
   %add3 = add nsw i32 %2, %1
   %cmp = icmp sgt i32 %0, %2
   %. = select i1 %cmp, i32 %0, i32 %2
@@ -21,8 +21,8 @@ entry:
   %cmp26 = icmp sgt i32 0, %scale..
   %scale...add7 = select i1 %cmp26, i32 %scale.., i32 0
   %sub = sub nsw i32 0, %scale...add7
-  %add.ptr = getelementptr inbounds %struct.bc_struct.0.2.4.6.13.20.27.43.44.46.50.52.58.60.81.89.90.99.107.108.109.111.116.118.149, %struct.bc_struct.0.2.4.6.13.20.27.43.44.46.50.52.58.60.81.89.90.99.107.108.109.111.116.118.149* %n1, i64 0, i32 4, i64 0
-  %add.ptr59 = getelementptr inbounds i8, i8* %add.ptr, i64 -1
+  %add.ptr = getelementptr inbounds %struct.bc_struct.0.2.4.6.13.20.27.43.44.46.50.52.58.60.81.89.90.99.107.108.109.111.116.118.149, ptr %n1, i64 0, i32 4, i64 0
+  %add.ptr59 = getelementptr inbounds i8, ptr %add.ptr, i64 -1
   %idx.ext62 = sext i32 %add3 to i64
   %cmp70140 = icmp sgt i32 %sub, 0
   br label %for.body104.lr.ph
@@ -40,13 +40,13 @@ for.body104:                                      ; preds = %while.end146, %for.
   %cmp107 = icmp slt i64 %7, -1
   %.op = xor i64 %7, -1
   %idx.neg116 = select i1 %cmp107, i64 0, i64 %.op
-  %add.ptr117 = getelementptr inbounds i8, i8* %add.ptr59, i64 %idx.neg116
+  %add.ptr117 = getelementptr inbounds i8, ptr %add.ptr59, i64 %idx.neg116
   br label %while.body138
 
 while.body138:                                    ; preds = %while.body138, %for.body104
-  %n1ptr.1126 = phi i8* [ %incdec.ptr139, %while.body138 ], [ %add.ptr117, %for.body104 ]
-  %incdec.ptr139 = getelementptr inbounds i8, i8* %n1ptr.1126, i64 -1
-  %cmp132 = icmp uge i8* %incdec.ptr139, null
+  %n1ptr.1126 = phi ptr [ %incdec.ptr139, %while.body138 ], [ %add.ptr117, %for.body104 ]
+  %incdec.ptr139 = getelementptr inbounds i8, ptr %n1ptr.1126, i64 -1
+  %cmp132 = icmp uge ptr %incdec.ptr139, null
   %cmp135 = icmp slt i64 0, -1
   %or.cond99 = and i1 %cmp135, %cmp132
   br i1 %or.cond99, label %while.body138, label %while.end146

diff  --git a/polly/test/ScopInfo/complex_execution_context.ll b/polly/test/ScopInfo/complex_execution_context.ll
index 0fd15deb9c5c8..164254308fa9c 100644
--- a/polly/test/ScopInfo/complex_execution_context.ll
+++ b/polly/test/ScopInfo/complex_execution_context.ll
@@ -9,7 +9,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @board = external global [421 x i8], align 16
 
 ; Function Attrs: nounwind uwtable
-define fastcc void @ping_recurse(i32* nocapture %mx, i32* nocapture %mr, i32 %color) unnamed_addr {
+define fastcc void @ping_recurse(ptr nocapture %mx, ptr nocapture %mr, i32 %color) unnamed_addr {
 entry:
   br label %land.lhs.true38.1
 
@@ -17,32 +17,27 @@ if.end58:                                         ; preds = %land.lhs.true38.2,
   ret void
 
 land.lhs.true38.1:                                ; preds = %entry
-  %arrayidx34.1 = getelementptr inbounds [421 x i8], [421 x i8]* @board, i64 0, i64 0
-  %arrayidx40.1 = getelementptr inbounds i32, i32* %mr, i64 0
-  %0 = load i32, i32* %arrayidx40.1, align 4
+  %0 = load i32, ptr %mr, align 4
   %cmp41.1 = icmp eq i32 %0, 0
   br i1 %cmp41.1, label %land.lhs.true43.1, label %if.end54.1
 
 land.lhs.true43.1:                                ; preds = %land.lhs.true38.1
-  %arrayidx45.1 = getelementptr inbounds i32, i32* %mx, i64 0
-  %1 = load i32, i32* %arrayidx45.1, align 4
+  %1 = load i32, ptr %mx, align 4
   %cmp46.1 = icmp eq i32 %1, 1
   %cmp51.1 = icmp eq i32 0, %color
   %or.cond.1 = or i1 %cmp51.1, %cmp46.1
   br i1 %or.cond.1, label %if.then53.1, label %if.end54.1
 
 if.then53.1:                                      ; preds = %land.lhs.true43.1
-  tail call fastcc void @ping_recurse(i32* nonnull %mx, i32* nonnull %mr, i32 %color)
+  tail call fastcc void @ping_recurse(ptr nonnull %mx, ptr nonnull %mr, i32 %color)
   br label %if.end54.1
 
 if.end54.1:                                       ; preds = %if.then53.1, %land.lhs.true43.1, %land.lhs.true38.1
-  %arrayidx34.2 = getelementptr inbounds [421 x i8], [421 x i8]* @board, i64 0, i64 0
-  %2 = load i8, i8* %arrayidx34.2, align 1
+  %2 = load i8, ptr @board, align 1
   %cmp36.2 = icmp eq i8 %2, 3
   br i1 %cmp36.2, label %if.end58, label %land.lhs.true38.2
 
 land.lhs.true38.2:                                ; preds = %if.end54.1
-  %arrayidx40.2 = getelementptr inbounds i32, i32* %mr, i64 0
-  %3 = load i32, i32* %arrayidx40.2, align 4
+  %3 = load i32, ptr %mr, align 4
   br label %if.end58
 }

diff  --git a/polly/test/ScopInfo/cond_constant_in_loop.ll b/polly/test/ScopInfo/cond_constant_in_loop.ll
index 62bcecae77d30..ef7d857e10847 100644
--- a/polly/test/ScopInfo/cond_constant_in_loop.ll
+++ b/polly/test/ScopInfo/cond_constant_in_loop.ll
@@ -13,25 +13,25 @@
 
 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"
 
-define void @f(i64* nocapture %a, i64 %N, i64 %M) nounwind {
+define void @f(ptr nocapture %a, i64 %N, i64 %M) nounwind {
 entry:
   %0 = icmp sgt i64 %M, 0                         ; <i1> [#uses=1]
   br i1 %0, label %bb, label %return
 
 bb:                                               ; preds = %bb3, %entry
   %1 = phi i64 [ 0, %entry ], [ %2, %bb3 ]        ; <i64> [#uses=5]
-  %scevgep = getelementptr i64, i64* %a, i64 %1        ; <i64*> [#uses=2]
+  %scevgep = getelementptr i64, ptr %a, i64 %1        ; <ptr> [#uses=2]
   br i1 true, label %bb1, label %bb2
 
 bb1:                                              ; preds = %bb
-  store i64 %1, i64* %scevgep, align 8
+  store i64 %1, ptr %scevgep, align 8
   br label %bb3
 
 bb2:                                              ; preds = %bb
   %tmp7 = sub i64 %1, %N                          ; <i64> [#uses=1]
-  %scevgep8 = getelementptr i64, i64* %a, i64 %tmp7    ; <i64*> [#uses=1]
-  store i64 %M, i64* %scevgep, align 8
-  store i64 0, i64* %scevgep8, align 8
+  %scevgep8 = getelementptr i64, ptr %a, i64 %tmp7    ; <ptr> [#uses=1]
+  store i64 %M, ptr %scevgep, align 8
+  store i64 0, ptr %scevgep8, align 8
   br label %bb3
 
 bb3:                                              ; preds = %bb2, %bb1

diff  --git a/polly/test/ScopInfo/cond_in_loop.ll b/polly/test/ScopInfo/cond_in_loop.ll
index ed9e1022003cc..2d435f6a6a934 100644
--- a/polly/test/ScopInfo/cond_in_loop.ll
+++ b/polly/test/ScopInfo/cond_in_loop.ll
@@ -13,26 +13,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"
 
-define void @f(i64* nocapture %a, i64 %N, i64 %M) nounwind {
+define void @f(ptr nocapture %a, i64 %N, i64 %M) nounwind {
 entry:
   %0 = icmp sgt i64 %M, 0                         ; <i1> [#uses=1]
   br i1 %0, label %bb, label %return
 
 bb:                                               ; preds = %bb3, %entry
   %1 = phi i64 [ 0, %entry ], [ %3, %bb3 ]        ; <i64> [#uses=5]
-  %scevgep = getelementptr i64, i64* %a, i64 %1        ; <i64*> [#uses=2]
+  %scevgep = getelementptr i64, ptr %a, i64 %1        ; <ptr> [#uses=2]
   %2 = icmp slt i64 %1, %N                        ; <i1> [#uses=1]
   br i1 %2, label %bb1, label %bb2
 
 bb1:                                              ; preds = %bb
-  store i64 %1, i64* %scevgep, align 8
+  store i64 %1, ptr %scevgep, align 8
   br label %bb3
 
 bb2:                                              ; preds = %bb
   %tmp7 = sub i64 %1, %N                          ; <i64> [#uses=1]
-  %scevgep8 = getelementptr i64, i64* %a, i64 %tmp7    ; <i64*> [#uses=1]
-  store i64 %M, i64* %scevgep, align 8
-  store i64 0, i64* %scevgep8, align 8
+  %scevgep8 = getelementptr i64, ptr %a, i64 %tmp7    ; <ptr> [#uses=1]
+  store i64 %M, ptr %scevgep, align 8
+  store i64 0, ptr %scevgep8, align 8
   br label %bb3
 
 bb3:                                              ; preds = %bb2, %bb1

diff  --git a/polly/test/ScopInfo/condition-after-error-block-2.ll b/polly/test/ScopInfo/condition-after-error-block-2.ll
index 61a18bd4ff553..695d864e483c3 100644
--- a/polly/test/ScopInfo/condition-after-error-block-2.ll
+++ b/polly/test/ScopInfo/condition-after-error-block-2.ll
@@ -17,7 +17,7 @@
 
 declare void @bar()
 
-define void @foo(float* %X, i64 %p) {
+define void @foo(ptr %X, i64 %p) {
 entry:
   br label %br
 
@@ -32,7 +32,7 @@ br2:
 loop:
   %indvar = phi i64 [0, %br2], [%indvar.next, %loop]
   %indvar.next = add nsw i64 %indvar, 1
-  store float 41.0, float* %X
+  store float 41.0, ptr %X
   %cmp2 = icmp sle i64 %indvar, 1024
   br i1 %cmp2, label %loop, label %merge
 
@@ -49,12 +49,12 @@ merge:
   br i1 %add, label %A, label %B
 
 A:
-  store float 42.0, float* %X
+  store float 42.0, ptr %X
   br label %exit
 
 B:
   call void @bar()
-  store float 41.0, float* %X
+  store float 41.0, ptr %X
   br label %exit
 
 exit:

diff  --git a/polly/test/ScopInfo/condition-after-error-block-before-scop.ll b/polly/test/ScopInfo/condition-after-error-block-before-scop.ll
index 2f56ba613c771..184be3642f0c5 100644
--- a/polly/test/ScopInfo/condition-after-error-block-before-scop.ll
+++ b/polly/test/ScopInfo/condition-after-error-block-before-scop.ll
@@ -3,14 +3,14 @@
 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"
 
-%class.node = type { i32 (...)**, %class.node* }
+%class.node = type { ptr, ptr }
 
-define void @foobar(double* %A) {
+define void @foobar(ptr %A) {
 if.end:
   br i1 undef, label %if.then29, label %lor.lhs.false
 
 lor.lhs.false:
-  %call25 = tail call i32 undef(%class.node* undef)
+  %call25 = tail call i32 undef(ptr undef)
   br i1 undef, label %if.then29, label %if.end30
 
 if.then29:
@@ -33,7 +33,7 @@ if.end91:
   br i1 %tobool76.not, label %if.end98, label %if.then93
 
 if.then93:
-  store double 0.0, double* %A
+  store double 0.0, ptr %A
   br label %if.end98
 
 if.end98:
@@ -43,6 +43,6 @@ if.end98:
 
 
 ; CHECK: polly.stmt.if.then93:
-; CHECK:   store double 0.000000e+00, double* %A
+; CHECK:   store double 0.000000e+00, ptr %A
 ; CHECK:   br label %polly.exiting
 

diff  --git a/polly/test/ScopInfo/condtion-after-error-block.ll b/polly/test/ScopInfo/condtion-after-error-block.ll
index e02863e005be7..92e743e2d8796 100644
--- a/polly/test/ScopInfo/condtion-after-error-block.ll
+++ b/polly/test/ScopInfo/condtion-after-error-block.ll
@@ -24,7 +24,7 @@
 
 declare void @bar()
 
-define void @foo(float* %X, i64 %p) {
+define void @foo(ptr %X, i64 %p) {
 entry:
   br label %br
 
@@ -39,7 +39,7 @@ br2:
 loop:
   %indvar = phi i64 [0, %br2], [%indvar.next, %loop]
   %indvar.next = add nsw i64 %indvar, 1
-  store float 41.0, float* %X
+  store float 41.0, ptr %X
   %cmp2 = icmp sle i64 %indvar, 1024
   br i1 %cmp2, label %loop, label %merge
 
@@ -55,12 +55,12 @@ merge:
   br i1 %phi, label %A, label %B
 
 A:
-  store float 42.0, float* %X
+  store float 42.0, ptr %X
   br label %exit
 
 B:
   call void @bar()
-  store float 41.0, float* %X
+  store float 41.0, ptr %X
   br label %exit
 
 exit:

diff  --git a/polly/test/ScopInfo/const_srem_sdiv.ll b/polly/test/ScopInfo/const_srem_sdiv.ll
index deb367fb9afe3..3acca980da707 100644
--- a/polly/test/ScopInfo/const_srem_sdiv.ll
+++ b/polly/test/ScopInfo/const_srem_sdiv.ll
@@ -35,7 +35,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i64* %D, i64* %R) {
+define void @f(ptr %D, ptr %R) {
 entry:
   br label %for.cond
 
@@ -46,53 +46,53 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %rem = srem i64 8, 3
-  %arrayidx = getelementptr inbounds i64, i64* %R, i64 %rem
-  %tmp = load i64, i64* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds i64, ptr %R, i64 %rem
+  %tmp = load i64, ptr %arrayidx, align 8
   %div = sdiv i64 8, 3
-  %arrayidx1 = getelementptr inbounds i64, i64* %D, i64 %div
-  store i64 %tmp, i64* %arrayidx1, align 8
+  %arrayidx1 = getelementptr inbounds i64, ptr %D, i64 %div
+  store i64 %tmp, ptr %arrayidx1, align 8
   %rem2 = srem i64 8, -3
-  %arrayidx3 = getelementptr inbounds i64, i64* %R, i64 %rem2
-  %tmp1 = load i64, i64* %arrayidx3, align 8
+  %arrayidx3 = getelementptr inbounds i64, ptr %R, i64 %rem2
+  %tmp1 = load i64, ptr %arrayidx3, align 8
   %div5 = sdiv i64 8, -3
-  %arrayidx6 = getelementptr inbounds i64, i64* %D, i64 %div5
-  store i64 %tmp1, i64* %arrayidx6, align 8
+  %arrayidx6 = getelementptr inbounds i64, ptr %D, i64 %div5
+  store i64 %tmp1, ptr %arrayidx6, align 8
   %rem8 = srem i64 -8, 3
-  %arrayidx9 = getelementptr inbounds i64, i64* %R, i64 %rem8
-  %tmp2 = load i64, i64* %arrayidx9, align 8
+  %arrayidx9 = getelementptr inbounds i64, ptr %R, i64 %rem8
+  %tmp2 = load i64, ptr %arrayidx9, align 8
   %div11 = sdiv i64 -8, 3
-  %arrayidx12 = getelementptr inbounds i64, i64* %D, i64 %div11
-  store i64 %tmp2, i64* %arrayidx12, align 8
+  %arrayidx12 = getelementptr inbounds i64, ptr %D, i64 %div11
+  store i64 %tmp2, ptr %arrayidx12, align 8
   %rem15 = srem i64 -8, -3
-  %arrayidx16 = getelementptr inbounds i64, i64* %R, i64 %rem15
-  %tmp3 = load i64, i64* %arrayidx16, align 8
+  %arrayidx16 = getelementptr inbounds i64, ptr %R, i64 %rem15
+  %tmp3 = load i64, ptr %arrayidx16, align 8
   %div19 = sdiv i64 -8, -3
-  %arrayidx20 = getelementptr inbounds i64, i64* %D, i64 %div19
-  store i64 %tmp3, i64* %arrayidx20, align 8
+  %arrayidx20 = getelementptr inbounds i64, ptr %D, i64 %div19
+  store i64 %tmp3, ptr %arrayidx20, align 8
   %rem29 = srem i64 1, 2
-  %arrayidx30 = getelementptr inbounds i64, i64* %R, i64 %rem29
-  %tmp5 = load i64, i64* %arrayidx30, align 8
+  %arrayidx30 = getelementptr inbounds i64, ptr %R, i64 %rem29
+  %tmp5 = load i64, ptr %arrayidx30, align 8
   %div31 = sdiv i64 1, 2
-  %arrayidx32 = getelementptr inbounds i64, i64* %D, i64 %div31
-  store i64 %tmp5, i64* %arrayidx32, align 8
+  %arrayidx32 = getelementptr inbounds i64, ptr %D, i64 %div31
+  store i64 %tmp5, ptr %arrayidx32, align 8
   %rem34 = srem i64 1, -2
-  %arrayidx35 = getelementptr inbounds i64, i64* %R, i64 %rem34
-  %tmp6 = load i64, i64* %arrayidx35, align 8
+  %arrayidx35 = getelementptr inbounds i64, ptr %R, i64 %rem34
+  %tmp6 = load i64, ptr %arrayidx35, align 8
   %div37 = sdiv i64 1, -2
-  %arrayidx38 = getelementptr inbounds i64, i64* %D, i64 %div37
-  store i64 %tmp6, i64* %arrayidx38, align 8
+  %arrayidx38 = getelementptr inbounds i64, ptr %D, i64 %div37
+  store i64 %tmp6, ptr %arrayidx38, align 8
   %rem40 = srem i64 -1, 2
-  %arrayidx41 = getelementptr inbounds i64, i64* %R, i64 %rem40
-  %tmp7 = load i64, i64* %arrayidx41, align 8
+  %arrayidx41 = getelementptr inbounds i64, ptr %R, i64 %rem40
+  %tmp7 = load i64, ptr %arrayidx41, align 8
   %div43 = sdiv i64 -1, 2
-  %arrayidx44 = getelementptr inbounds i64, i64* %D, i64 %div43
-  store i64 %tmp7, i64* %arrayidx44, align 8
+  %arrayidx44 = getelementptr inbounds i64, ptr %D, i64 %div43
+  store i64 %tmp7, ptr %arrayidx44, align 8
   %rem47 = srem i64 -1, -2
-  %arrayidx48 = getelementptr inbounds i64, i64* %R, i64 %rem47
-  %tmp8 = load i64, i64* %arrayidx48, align 8
+  %arrayidx48 = getelementptr inbounds i64, ptr %R, i64 %rem47
+  %tmp8 = load i64, ptr %arrayidx48, align 8
   %div51 = sdiv i64 -1, -2
-  %arrayidx52 = getelementptr inbounds i64, i64* %D, i64 %div51
-  store i64 %tmp8, i64* %arrayidx52, align 8
+  %arrayidx52 = getelementptr inbounds i64, ptr %D, i64 %div51
+  store i64 %tmp8, ptr %arrayidx52, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/constant-non-integer-branch-condition.ll b/polly/test/ScopInfo/constant-non-integer-branch-condition.ll
index 97649e2c8b6dc..fc95a4cc78913 100644
--- a/polly/test/ScopInfo/constant-non-integer-branch-condition.ll
+++ b/polly/test/ScopInfo/constant-non-integer-branch-condition.ll
@@ -9,15 +9,15 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define i32 @main(i32* %A) #0 {
+define i32 @main(ptr %A) #0 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  br i1 icmp ne (i32 (...)* @test_weak, i32 (...)* null), label %if.then, label %cleanup
+  br i1 icmp ne (ptr @test_weak, ptr null), label %if.then, label %cleanup
 
 if.then:                                          ; preds = %entry.split
-  store i32 0, i32* %A
+  store i32 0, ptr %A
   br label %cleanup
 
 cleanup:                                          ; preds = %if.then, %entry.split

diff  --git a/polly/test/ScopInfo/constant_functions_outside_scop_as_unknown.ll b/polly/test/ScopInfo/constant_functions_outside_scop_as_unknown.ll
index 671a281bd42f2..38b2b8958e2fc 100644
--- a/polly/test/ScopInfo/constant_functions_outside_scop_as_unknown.ll
+++ b/polly/test/ScopInfo/constant_functions_outside_scop_as_unknown.ll
@@ -8,25 +8,25 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 ; CHECK-NEXT: p2: %param2
 ; CHECK-NEXT: Arrays {
 
-define void @f(i8* %param1) {
+define void @f(ptr %param1) {
 entry:
   br label %for.cond
 
 for.cond:
-  %hook = phi i8* [ %param1, %entry ], [ %add.ptr201, %cleanup ]
+  %hook = phi ptr [ %param1, %entry ], [ %add.ptr201, %cleanup ]
   br i1 undef, label %for.body, label %for.cond.cleanup
 
 for.body:
   %param2 = call i32 @g()
-  %add.ptr60 = getelementptr inbounds i8, i8* %hook, i32 %param2
+  %add.ptr60 = getelementptr inbounds i8, ptr %hook, i32 %param2
   br label %for.cond62
 
 for.cond62:
-  %cmp64 = icmp ule i8* %add.ptr60, null
+  %cmp64 = icmp ule ptr %add.ptr60, null
   br i1 %cmp64, label %for.cond62, label %cleanup
 
 cleanup:
-  %add.ptr201 = getelementptr inbounds i8, i8* %hook, i32 1
+  %add.ptr201 = getelementptr inbounds i8, ptr %hook, i32 1
   br label %for.cond
 
 for.cond.cleanup:

diff  --git a/polly/test/ScopInfo/constant_start_integer.ll b/polly/test/ScopInfo/constant_start_integer.ll
index 0b6240849f551..aa6640c98f739 100644
--- a/polly/test/ScopInfo/constant_start_integer.ll
+++ b/polly/test/ScopInfo/constant_start_integer.ll
@@ -19,7 +19,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK: MustWriteAccess
 ; CHECK:   [p_0] -> { Stmt_for_body3[i0] -> MemRef_input[64p_0 + i0] };
 
-define void @foo(float* nocapture %input) {
+define void @foo(ptr nocapture %input) {
 entry:
   br label %for.cond1.preheader
 
@@ -32,11 +32,11 @@ for.body3:                                        ; preds = %for.body3, %for.con
   %i.020 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
   %add = add nsw i64 %i.020, %mul
   %add4 = add nsw i64 %add, 1
-  %arrayidx = getelementptr inbounds float, float* %input, i64 %add4
-  %0 = load float, float* %arrayidx, align 8
+  %arrayidx = getelementptr inbounds float, ptr %input, i64 %add4
+  %0 = load float, ptr %arrayidx, align 8
   %mul5 = fmul float %0, %0
-  %arrayidx9 = getelementptr inbounds float, float* %input, i64 %add
-  store float %mul5, float* %arrayidx9, align 8
+  %arrayidx9 = getelementptr inbounds float, ptr %input, i64 %add
+  store float %mul5, ptr %arrayidx9, align 8
   %inc = add nsw i64 %i.020, 1
   %exitcond = icmp eq i64 %inc, 63
   br i1 %exitcond, label %for.inc10, label %for.body3

diff  --git a/polly/test/ScopInfo/debug_call.ll b/polly/test/ScopInfo/debug_call.ll
index bf597a9506e60..93b5bc520a00e 100644
--- a/polly/test/ScopInfo/debug_call.ll
+++ b/polly/test/ScopInfo/debug_call.ll
@@ -2,7 +2,7 @@
 ;
 ; Check that the call to dbg_printf is accepted as a debug-function.
 ;
-declare void @dbg_printf(i8*, ...)
+declare void @dbg_printf(ptr, ...)
 
 define void @func(i32 %n) {
 entry:
@@ -14,7 +14,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      call void (i8*, ...) @dbg_printf(i8* null, i32 %j)
+      call void (ptr, ...) @dbg_printf(ptr null, i32 %j)
       br label %inc
 
 inc:

diff  --git a/polly/test/ScopInfo/delinearize-together-all-data-refs.ll b/polly/test/ScopInfo/delinearize-together-all-data-refs.ll
index 98b071c058b16..108392b27f073 100644
--- a/polly/test/ScopInfo/delinearize-together-all-data-refs.ll
+++ b/polly/test/ScopInfo/delinearize-together-all-data-refs.ll
@@ -20,7 +20,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @foo(i64 %n, i64 %m, i64 %o, double* nocapture %A) {
+define void @foo(i64 %n, i64 %m, i64 %o, ptr nocapture %A) {
 entry:
   %cmp35 = icmp sgt i64 %n, 0
   br i1 %cmp35, label %for.cond1.preheader.lr.ph, label %for.end18
@@ -55,11 +55,11 @@ for.body6.lr.ph:                                  ; preds = %for.cond4.preheader
 for.body6:                                        ; preds = %for.body6, %for.body6.lr.ph
   %k.032 = phi i64 [ 0, %for.body6.lr.ph ], [ %inc, %for.body6 ]
   %arrayidx8.sum = add i64 %arrayidx.sum, %k.032
-  %arrayidx9 = getelementptr inbounds double, double* %A, i64 %arrayidx8.sum
-  store double 1.000000e+00, double* %arrayidx9, align 8
+  %arrayidx9 = getelementptr inbounds double, ptr %A, i64 %arrayidx8.sum
+  store double 1.000000e+00, ptr %arrayidx9, align 8
   %arrayidx10.sum = add i64 %k.032, %2
-  %arrayidx12 = getelementptr inbounds double, double* %A, i64 %arrayidx10.sum
-  store double 2.000000e+00, double* %arrayidx12, align 8
+  %arrayidx12 = getelementptr inbounds double, ptr %A, i64 %arrayidx10.sum
+  store double 2.000000e+00, ptr %arrayidx12, align 8
   %inc = add nsw i64 %k.032, 1
   %osub = sub nsw i64 %o, 7
   %exitcond = icmp eq i64 %inc, %osub

diff  --git a/polly/test/ScopInfo/div_by_zero.ll b/polly/test/ScopInfo/div_by_zero.ll
index 7f0de0d51224e..2205b85a9ebc4 100644
--- a/polly/test/ScopInfo/div_by_zero.ll
+++ b/polly/test/ScopInfo/div_by_zero.ll
@@ -9,7 +9,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   br label %for.cond
 
@@ -21,10 +21,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %div = sdiv i32 %i.0, 0
   %idxprom = sext i32 %div to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  %tmp = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/do-not-model-error-block-accesses.ll b/polly/test/ScopInfo/do-not-model-error-block-accesses.ll
index 8bd0ce34fdf6d..997e0d4b37cf0 100644
--- a/polly/test/ScopInfo/do-not-model-error-block-accesses.ll
+++ b/polly/test/ScopInfo/do-not-model-error-block-accesses.ll
@@ -14,8 +14,8 @@ entry.split:                                      ; preds = %entry
   br i1 false, label %if.end.38, label %if.else
 
 if.else:                                          ; preds = %entry.split
-  call void (i32, i32, i32*, ...) bitcast (void (...)* @BYTES_TO_BITS to void (i32, i32, i32*, ...)*)(i32 undef, i32 1, i32* undef) #2
-  %0 = load i32, i32* null, align 4
+  call void (i32, i32, ptr, ...) @BYTES_TO_BITS(i32 undef, i32 1, ptr undef) #2
+  %0 = load i32, ptr null, align 4
   br label %if.end.38
 
 if.end.38:                                        ; preds = %if.else, %entry.split

diff  --git a/polly/test/ScopInfo/eager-binary-and-or-conditions.ll b/polly/test/ScopInfo/eager-binary-and-or-conditions.ll
index 56527f6bf5cbd..e9ad63c51b85b 100644
--- a/polly/test/ScopInfo/eager-binary-and-or-conditions.ll
+++ b/polly/test/ScopInfo/eager-binary-and-or-conditions.ll
@@ -46,7 +46,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @or(float* nocapture %A, i64 %n, i64 %m) #0 {
+define void @or(ptr nocapture %A, i64 %n, i64 %m) #0 {
 entry:
   br label %for.body
 
@@ -59,10 +59,10 @@ for.body:                                         ; preds = %for.inc, %entry
 
 if.then:                                          ; preds = %for.body
   %conv = sitofp i64 %i.03 to float
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.03
-  %0 = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.03
+  %0 = load float, ptr %arrayidx, align 4
   %add = fadd float %conv, %0
-  store float %add, float* %arrayidx, align 4
+  store float %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.then, %for.body
@@ -75,7 +75,7 @@ for.end:                                          ; preds = %for.inc
 }
 
 ; Function Attrs: nounwind uwtable
-define void @and(float* nocapture %A, i64 %n, i64 %m) #0 {
+define void @and(ptr nocapture %A, i64 %n, i64 %m) #0 {
 entry:
   br label %for.body
 
@@ -88,10 +88,10 @@ for.body:                                         ; preds = %for.inc, %entry
 
 if.then:                                          ; preds = %for.body
   %conv = sitofp i64 %i.03 to float
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.03
-  %0 = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.03
+  %0 = load float, ptr %arrayidx, align 4
   %add = fadd float %conv, %0
-  store float %add, float* %arrayidx, align 4
+  store float %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body, %if.then

diff  --git a/polly/test/ScopInfo/early_exit_for_complex_domains.ll b/polly/test/ScopInfo/early_exit_for_complex_domains.ll
index a06cd2869b8e6..a72ea031c2360 100644
--- a/polly/test/ScopInfo/early_exit_for_complex_domains.ll
+++ b/polly/test/ScopInfo/early_exit_for_complex_domains.ll
@@ -7,12 +7,11 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 %struct.regnode_charclass_class.2.42.654.690.726.870.978.1770.1806.1842.2166.2274.2382.2598.2814.3030.3064 = type { i8, i8, i16, i32, [32 x i8], [4 x i8] }
 
 ; Function Attrs: nounwind uwtable
-define void @S_cl_or(%struct.regnode_charclass_class.2.42.654.690.726.870.978.1770.1806.1842.2166.2274.2382.2598.2814.3030.3064* %cl, %struct.regnode_charclass_class.2.42.654.690.726.870.978.1770.1806.1842.2166.2274.2382.2598.2814.3030.3064* %or_with) #0 {
+define void @S_cl_or(ptr %cl, ptr %or_with) #0 {
 entry:
-  %flags = getelementptr inbounds %struct.regnode_charclass_class.2.42.654.690.726.870.978.1770.1806.1842.2166.2274.2382.2598.2814.3030.3064, %struct.regnode_charclass_class.2.42.654.690.726.870.978.1770.1806.1842.2166.2274.2382.2598.2814.3030.3064* %or_with, i64 0, i32 0
-  %0 = load i8, i8* %flags, align 4, !tbaa !1
+  %0 = load i8, ptr %or_with, align 4, !tbaa !1
   %conv = zext i8 %0 to i32
-  %1 = load i8, i8* undef, align 4, !tbaa !1
+  %1 = load i8, ptr undef, align 4, !tbaa !1
   br label %land.lhs.true35
 
 land.lhs.true35:                                  ; preds = %entry
@@ -24,14 +23,14 @@ land.lhs.true35:                                  ; preds = %entry
   br i1 %or.cond45, label %if.end91, label %for.body49
 
 for.body49:                                       ; preds = %land.lhs.true35
-  %2 = load i8, i8* %flags, align 4, !tbaa !1
+  %2 = load i8, ptr %or_with, align 4, !tbaa !1
   %and65 = and i8 %2, 8
   %tobool66 = icmp eq i8 %and65, 0
   br i1 %tobool66, label %if.end91, label %for.body71
 
 for.body71:                                       ; preds = %for.body71, %for.body49
-  %arrayidx77 = getelementptr inbounds %struct.regnode_charclass_class.2.42.654.690.726.870.978.1770.1806.1842.2166.2274.2382.2598.2814.3030.3064, %struct.regnode_charclass_class.2.42.654.690.726.870.978.1770.1806.1842.2166.2274.2382.2598.2814.3030.3064* %cl, i64 0, i32 5, i64 0
-  store i8 undef, i8* %arrayidx77, align 1, !tbaa !7
+  %arrayidx77 = getelementptr inbounds %struct.regnode_charclass_class.2.42.654.690.726.870.978.1770.1806.1842.2166.2274.2382.2598.2814.3030.3064, ptr %cl, i64 0, i32 5, i64 0
+  store i8 undef, ptr %arrayidx77, align 1, !tbaa !7
   br i1 false, label %for.body71, label %if.end91
 
 if.end91:                                         ; preds = %for.body71, %for.body49, %land.lhs.true35

diff  --git a/polly/test/ScopInfo/error-blocks-1.ll b/polly/test/ScopInfo/error-blocks-1.ll
index 0cabe902b4976..03353edf297ad 100644
--- a/polly/test/ScopInfo/error-blocks-1.ll
+++ b/polly/test/ScopInfo/error-blocks-1.ll
@@ -32,7 +32,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @g(i32* %A, i32 %N) {
+define void @g(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -48,17 +48,17 @@ for.body:                                         ; preds = %for.cond
 
 if.then:                                          ; preds = %for.body
   call void (...) @f() #2
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp12 = load i32, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp12 = load i32, ptr %arrayidx2, align 4
   %inc2 = add nsw i32 %tmp12, 1
-  store i32 %inc2, i32* %arrayidx2, align 4
+  store i32 %inc2, ptr %arrayidx2, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp1, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end

diff  --git a/polly/test/ScopInfo/error-blocks-2.ll b/polly/test/ScopInfo/error-blocks-2.ll
index 6ec1d5c66b8a2..29095dacacfb9 100644
--- a/polly/test/ScopInfo/error-blocks-2.ll
+++ b/polly/test/ScopInfo/error-blocks-2.ll
@@ -31,10 +31,10 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32 %N, i32* noalias %valid, i32* noalias %ptr, i32* noalias %A) {
+define void @f(i32 %N, ptr noalias %valid, ptr noalias %ptr, ptr noalias %A) {
 entry:
-  %ptr.addr = alloca i32*, align 8
-  store i32* %ptr, i32** %ptr.addr, align 8
+  %ptr.addr = alloca ptr, align 8
+  store ptr %ptr, ptr %ptr.addr, align 8
   %tmp = sext i32 %N to i64
   br label %for.cond
 
@@ -44,22 +44,22 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %valid_val = load i32, i32* %valid, align 4
+  %valid_val = load i32, ptr %valid, align 4
   %cmp1 = icmp eq i32 %valid_val, 0
   br i1 %cmp1, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  call void @doSth(i32** nonnull %ptr.addr)
+  call void @doSth(ptr nonnull %ptr.addr)
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body
   br label %S
 
 S:                                                ; preds = %if.end
-  %tmp2 = load i32*, i32** %ptr.addr, align 8
-  %tmp3 = load i32, i32* %tmp2, align 4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp3, i32* %arrayidx, align 4
+  %tmp2 = load ptr, ptr %ptr.addr, align 8
+  %tmp3 = load i32, ptr %tmp2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp3, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %S
@@ -70,4 +70,4 @@ for.end:                                          ; preds = %for.cond
   ret void
 }
 
-declare void @doSth(i32**)
+declare void @doSth(ptr)

diff  --git a/polly/test/ScopInfo/error-blocks-3.ll b/polly/test/ScopInfo/error-blocks-3.ll
index c3d921da2d7a2..e7643601356db 100644
--- a/polly/test/ScopInfo/error-blocks-3.ll
+++ b/polly/test/ScopInfo/error-blocks-3.ll
@@ -28,7 +28,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @g(i32* %A, i32 %N) {
+define void @g(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -48,17 +48,17 @@ if.then:                                          ; preds = %for.body
 
 S:                                                ; preds = %if.then
   %idxprom = sext i32 %call to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp1, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %if.end3
 
 if.end3:                                          ; preds = %if.end, %for.body
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx5, align 4
   %inc6 = add nsw i32 %tmp2, 1
-  store i32 %inc6, i32* %arrayidx5, align 4
+  store i32 %inc6, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end3, %if.then2

diff  --git a/polly/test/ScopInfo/escaping_empty_scop.ll b/polly/test/ScopInfo/escaping_empty_scop.ll
index ff95512378b9b..8837e19eefe42 100644
--- a/polly/test/ScopInfo/escaping_empty_scop.ll
+++ b/polly/test/ScopInfo/escaping_empty_scop.ll
@@ -27,7 +27,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @f(i32* %A) {
+define i32 @f(ptr %A) {
 bb:
   br label %bb1
 
@@ -38,7 +38,7 @@ bb1:                                              ; preds = %bb3, %bb
 
 bb2:                                              ; preds = %bb1
   %a.1 = mul i32 %i.0, 2
-  store i32 %i.0, i32 *%A, align 4
+  store i32 %i.0, ptr %A, align 4
   br label %bb3
 
 bb3:                                              ; preds = %bb2

diff  --git a/polly/test/ScopInfo/exit-phi-1.ll b/polly/test/ScopInfo/exit-phi-1.ll
index 788e953a5b635..8e6c5fb9e2119 100644
--- a/polly/test/ScopInfo/exit-phi-1.ll
+++ b/polly/test/ScopInfo/exit-phi-1.ll
@@ -9,7 +9,7 @@
 ;
 ; CHECK:         Arrays {
 ; CHECK-NEXT:        double MemRef_up_3_ph; // Element size 8
-; CHECK-NEXT:        i32* MemRef_A[*]; // Element size 8
+; CHECK-NEXT:        ptr MemRef_A[*]; // Element size 8
 ; CHECK-NEXT:        double MemRef_up_3_ph; // Element size 8
 ; CHECK-NEXT:    }
 ;
@@ -21,16 +21,16 @@
 ; CODEGEN-NEXT:   %up.3.ph = phi double [ 0.000000e+00, %entry ], [ %up.3.ph.ph.merge, %polly.merge_new_and_old ]
 ;
 ; CODEGEN:      polly.stmt.if.then111:
-; CODEGEN-NEXT:   store double undef, double* %up.3.ph.s2a
+; CODEGEN-NEXT:   store double undef, ptr %up.3.ph.s2a
 ;
 ; CODEGEN:      polly.exiting:
-; CODEGEN-NEXT:   %up.3.ph.ph.final_reload = load double, double* %up.3.ph.s2a
+; CODEGEN-NEXT:   %up.3.ph.ph.final_reload = load double, ptr %up.3.ph.s2a
 ;
 ; ModuleID = 'bugpoint-reduced-simplified.bc'
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: uwtable
-define void @_ZN6soplex14SPxAggregateSM9eliminateERKNS_7SVectorEd(i32** nocapture readonly %A) {
+define void @_ZN6soplex14SPxAggregateSM9eliminateERKNS_7SVectorEd(ptr nocapture readonly %A) {
 entry:
   br label %for.cond.outer304
 
@@ -39,9 +39,8 @@ for.cond.outer304:                                ; preds = %if.else113, %if.the
   br i1 undef, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond.outer304
-  %0 = load i32*, i32** %A, align 8
+  %0 = load ptr, ptr %A, align 8
   %add = fadd double %up.3.ph, undef
-  %val.i.i.i235 = getelementptr inbounds i32, i32* %0, i64 0
   br i1 false, label %if.else113, label %if.then111
 
 if.then111:                                       ; preds = %for.body

diff  --git a/polly/test/ScopInfo/exit-phi-2.ll b/polly/test/ScopInfo/exit-phi-2.ll
index 35d5080e32707..d218d5fa039b8 100644
--- a/polly/test/ScopInfo/exit-phi-2.ll
+++ b/polly/test/ScopInfo/exit-phi-2.ll
@@ -6,7 +6,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 define void @local_book_besterror() {
 entry:
-  %0 = load i64, i64* undef, align 8
+  %0 = load i64, ptr undef, align 8
   %conv = trunc i64 %0 to i32
   br label %for.body64
 

diff  --git a/polly/test/ScopInfo/exit_phi_accesses-2.ll b/polly/test/ScopInfo/exit_phi_accesses-2.ll
index 99a4728691b46..e376f0df9d54e 100644
--- a/polly/test/ScopInfo/exit_phi_accesses-2.ll
+++ b/polly/test/ScopInfo/exit_phi_accesses-2.ll
@@ -20,7 +20,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define float @foo(float* %A) {
+define float @foo(ptr %A) {
 entry:
   br label %header
 
@@ -31,10 +31,10 @@ header:
 body:
   %i = phi i64 [ 0, %header ], [ %next, %body ]
   %sum = phi float [ 0.0, %header ], [ %sum.next, %body ]
-  %arrayidx = getelementptr float, float* %A, i64 %i
+  %arrayidx = getelementptr float, ptr %A, i64 %i
   %scalar = fadd float 0.0, 0.0
   %next = add nuw nsw i64 %i, 1
-  %val = load float, float* %arrayidx
+  %val = load float, ptr %arrayidx
   %sum.next = fadd float %sum, %val
   %cond = icmp ne i64 %i, 100
   br i1 %cond, label %body, label %after

diff  --git a/polly/test/ScopInfo/exit_phi_accesses.ll b/polly/test/ScopInfo/exit_phi_accesses.ll
index 7eb4c0d749631..f4fbe31f6b24c 100644
--- a/polly/test/ScopInfo/exit_phi_accesses.ll
+++ b/polly/test/ScopInfo/exit_phi_accesses.ll
@@ -25,7 +25,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define float @foo(float %sum, float* %A) {
+define float @foo(float %sum, ptr %A) {
 entry:
   br label %header
 

diff  --git a/polly/test/ScopInfo/expensive-boundary-context.ll b/polly/test/ScopInfo/expensive-boundary-context.ll
index 4aaf055fd8f50..7001b96acd216 100644
--- a/polly/test/ScopInfo/expensive-boundary-context.ll
+++ b/polly/test/ScopInfo/expensive-boundary-context.ll
@@ -4,24 +4,24 @@
 ; CHECK-NOT:   Assumed Context:
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.hoge = type { i32, %struct.widget*, %struct.ham*, %struct.ham*, i32, %struct.wombat*, double*, i32, i32, i32**, i32, i32*, [6 x i32], i32, %struct.foo*, i32 }
-%struct.widget = type { i32, i32, %struct.wombat*, i32*, %struct.quux*, i32, %struct.barney*, i32, i32, [3 x i32], i32 }
-%struct.quux = type { %struct.wombat*, i32*, i32*, i32, i32, i32, [3 x [3 x [3 x %struct.hoge.0*]]]* }
-%struct.hoge.0 = type { i32, %struct.hoge.0* }
+%struct.hoge = type { i32, ptr, ptr, ptr, i32, ptr, ptr, i32, i32, ptr, i32, ptr, [6 x i32], i32, ptr, i32 }
+%struct.widget = type { i32, i32, ptr, ptr, ptr, i32, ptr, i32, i32, [3 x i32], i32 }
+%struct.quux = type { ptr, ptr, ptr, i32, i32, i32, ptr }
+%struct.hoge.0 = type { i32, ptr }
 %struct.barney = type { [3 x i32], [3 x i32] }
-%struct.ham = type { [3 x i32]*, i32, i32, i32, i32 }
-%struct.wombat = type { %struct.barney*, i32, i32 }
-%struct.foo = type { i32, i32, i32, i32, i32*, i32*, %struct.wibble**, %struct.wibble**, i32*, i32*, %struct.wibble*, %struct.wibble* }
-%struct.wibble = type { %struct.foo.1**, i32 }
+%struct.ham = type { ptr, i32, i32, i32, i32 }
+%struct.wombat = type { ptr, i32, i32 }
+%struct.foo = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
+%struct.wibble = type { ptr, i32 }
 %struct.foo.1 = type { [3 x i32], [3 x i32], i32, i32, [4 x i32], [4 x i32] }
 
 ; Function Attrs: nounwind uwtable
 define void @hoge() #0 {
 bb:
-  %tmp52 = alloca %struct.hoge*, align 8
-  %tmp53 = alloca %struct.barney*, align 8
-  %tmp54 = alloca %struct.barney*, align 8
-  %tmp55 = alloca %struct.barney*, align 8
+  %tmp52 = alloca ptr, align 8
+  %tmp53 = alloca ptr, align 8
+  %tmp54 = alloca ptr, align 8
+  %tmp55 = alloca ptr, align 8
   br label %bb56
 
 bb56:                                             ; preds = %bb
@@ -37,13 +37,10 @@ bb58:                                             ; preds = %bb56
   unreachable
 
 bb59:                                             ; preds = %bb56
-  %tmp = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp60 = getelementptr inbounds %struct.barney, %struct.barney* %tmp, i32 0, i32 1
-  %tmp61 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp60, i64 0, i64 0
-  %tmp62 = load i32, i32* %tmp61, align 4, !tbaa !5
-  %tmp63 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp64 = getelementptr inbounds %struct.barney, %struct.barney* %tmp63, i32 0, i32 0
-  %tmp65 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp64, i64 0, i64 0
+  %tmp = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp60 = getelementptr inbounds %struct.barney, ptr %tmp, i32 0, i32 1
+  %tmp62 = load i32, ptr %tmp60, align 4, !tbaa !5
+  %tmp63 = load ptr, ptr %tmp54, align 8, !tbaa !1
   %tmp66 = sub nsw i32 %tmp62, 0
   %tmp67 = add nsw i32 %tmp66, 1
   %tmp68 = icmp slt i32 0, %tmp67
@@ -53,13 +50,12 @@ bb69:                                             ; preds = %bb59
   br label %bb70
 
 bb70:                                             ; preds = %bb69, %bb59
-  %tmp71 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp72 = getelementptr inbounds %struct.barney, %struct.barney* %tmp71, i32 0, i32 1
-  %tmp73 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp72, i64 0, i64 1
-  %tmp74 = load i32, i32* %tmp73, align 4, !tbaa !5
-  %tmp75 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp76 = getelementptr inbounds %struct.barney, %struct.barney* %tmp75, i32 0, i32 0
-  %tmp77 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp76, i64 0, i64 1
+  %tmp71 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp72 = getelementptr inbounds %struct.barney, ptr %tmp71, i32 0, i32 1
+  %tmp73 = getelementptr inbounds [3 x i32], ptr %tmp72, i64 0, i64 1
+  %tmp74 = load i32, ptr %tmp73, align 4, !tbaa !5
+  %tmp75 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp77 = getelementptr inbounds [3 x i32], ptr %tmp75, i64 0, i64 1
   %tmp78 = sub nsw i32 %tmp74, 0
   %tmp79 = add nsw i32 %tmp78, 1
   %tmp80 = icmp slt i32 0, %tmp79
@@ -69,13 +65,10 @@ bb81:                                             ; preds = %bb70
   br label %bb82
 
 bb82:                                             ; preds = %bb81, %bb70
-  %tmp83 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp84 = getelementptr inbounds %struct.barney, %struct.barney* %tmp83, i32 0, i32 1
-  %tmp85 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp84, i64 0, i64 0
-  %tmp86 = load i32, i32* %tmp85, align 4, !tbaa !5
-  %tmp87 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp88 = getelementptr inbounds %struct.barney, %struct.barney* %tmp87, i32 0, i32 0
-  %tmp89 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp88, i64 0, i64 0
+  %tmp83 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp84 = getelementptr inbounds %struct.barney, ptr %tmp83, i32 0, i32 1
+  %tmp86 = load i32, ptr %tmp84, align 4, !tbaa !5
+  %tmp87 = load ptr, ptr %tmp54, align 8, !tbaa !1
   %tmp90 = sub nsw i32 %tmp86, 0
   %tmp91 = add nsw i32 %tmp90, 1
   %tmp92 = icmp slt i32 0, %tmp91
@@ -85,13 +78,10 @@ bb93:                                             ; preds = %bb82
   br label %bb94
 
 bb94:                                             ; preds = %bb93, %bb82
-  %tmp95 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp96 = getelementptr inbounds %struct.barney, %struct.barney* %tmp95, i32 0, i32 1
-  %tmp97 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp96, i64 0, i64 0
-  %tmp98 = load i32, i32* %tmp97, align 4, !tbaa !5
-  %tmp99 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp100 = getelementptr inbounds %struct.barney, %struct.barney* %tmp99, i32 0, i32 0
-  %tmp101 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp100, i64 0, i64 0
+  %tmp95 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp96 = getelementptr inbounds %struct.barney, ptr %tmp95, i32 0, i32 1
+  %tmp98 = load i32, ptr %tmp96, align 4, !tbaa !5
+  %tmp99 = load ptr, ptr %tmp54, align 8, !tbaa !1
   %tmp102 = sub nsw i32 %tmp98, 0
   %tmp103 = add nsw i32 %tmp102, 1
   %tmp104 = icmp slt i32 0, %tmp103
@@ -101,13 +91,12 @@ bb105:                                            ; preds = %bb94
   br label %bb106
 
 bb106:                                            ; preds = %bb105, %bb94
-  %tmp107 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp108 = getelementptr inbounds %struct.barney, %struct.barney* %tmp107, i32 0, i32 1
-  %tmp109 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp108, i64 0, i64 1
-  %tmp110 = load i32, i32* %tmp109, align 4, !tbaa !5
-  %tmp111 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp112 = getelementptr inbounds %struct.barney, %struct.barney* %tmp111, i32 0, i32 0
-  %tmp113 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp112, i64 0, i64 1
+  %tmp107 = load ptr, ptr %tmp53, align 8, !tbaa !1
+  %tmp108 = getelementptr inbounds %struct.barney, ptr %tmp107, i32 0, i32 1
+  %tmp109 = getelementptr inbounds [3 x i32], ptr %tmp108, i64 0, i64 1
+  %tmp110 = load i32, ptr %tmp109, align 4, !tbaa !5
+  %tmp111 = load ptr, ptr %tmp53, align 8, !tbaa !1
+  %tmp113 = getelementptr inbounds [3 x i32], ptr %tmp111, i64 0, i64 1
   %tmp114 = sub nsw i32 %tmp110, 0
   %tmp115 = add nsw i32 %tmp114, 1
   %tmp116 = icmp slt i32 0, %tmp115
@@ -117,13 +106,10 @@ bb117:                                            ; preds = %bb106
   br label %bb118
 
 bb118:                                            ; preds = %bb117, %bb106
-  %tmp119 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp120 = getelementptr inbounds %struct.barney, %struct.barney* %tmp119, i32 0, i32 1
-  %tmp121 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp120, i64 0, i64 0
-  %tmp122 = load i32, i32* %tmp121, align 4, !tbaa !5
-  %tmp123 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp124 = getelementptr inbounds %struct.barney, %struct.barney* %tmp123, i32 0, i32 0
-  %tmp125 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp124, i64 0, i64 0
+  %tmp119 = load ptr, ptr %tmp53, align 8, !tbaa !1
+  %tmp120 = getelementptr inbounds %struct.barney, ptr %tmp119, i32 0, i32 1
+  %tmp122 = load i32, ptr %tmp120, align 4, !tbaa !5
+  %tmp123 = load ptr, ptr %tmp53, align 8, !tbaa !1
   %tmp126 = sub nsw i32 %tmp122, 0
   %tmp127 = add nsw i32 %tmp126, 1
   %tmp128 = icmp slt i32 0, %tmp127
@@ -133,13 +119,10 @@ bb129:                                            ; preds = %bb118
   br label %bb130
 
 bb130:                                            ; preds = %bb129, %bb118
-  %tmp131 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp132 = getelementptr inbounds %struct.barney, %struct.barney* %tmp131, i32 0, i32 1
-  %tmp133 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp132, i64 0, i64 0
-  %tmp134 = load i32, i32* %tmp133, align 4, !tbaa !5
-  %tmp135 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp136 = getelementptr inbounds %struct.barney, %struct.barney* %tmp135, i32 0, i32 0
-  %tmp137 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp136, i64 0, i64 0
+  %tmp131 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp132 = getelementptr inbounds %struct.barney, ptr %tmp131, i32 0, i32 1
+  %tmp134 = load i32, ptr %tmp132, align 4, !tbaa !5
+  %tmp135 = load ptr, ptr %tmp54, align 8, !tbaa !1
   %tmp138 = sub nsw i32 %tmp134, 0
   %tmp139 = add nsw i32 %tmp138, 1
   %tmp140 = icmp slt i32 0, %tmp139
@@ -149,13 +132,10 @@ bb141:                                            ; preds = %bb130
   br label %bb142
 
 bb142:                                            ; preds = %bb141, %bb130
-  %tmp143 = load %struct.barney*, %struct.barney** %tmp55, align 8, !tbaa !1
-  %tmp144 = getelementptr inbounds %struct.barney, %struct.barney* %tmp143, i32 0, i32 1
-  %tmp145 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp144, i64 0, i64 0
-  %tmp146 = load i32, i32* %tmp145, align 4, !tbaa !5
-  %tmp147 = load %struct.barney*, %struct.barney** %tmp55, align 8, !tbaa !1
-  %tmp148 = getelementptr inbounds %struct.barney, %struct.barney* %tmp147, i32 0, i32 0
-  %tmp149 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp148, i64 0, i64 0
+  %tmp143 = load ptr, ptr %tmp55, align 8, !tbaa !1
+  %tmp144 = getelementptr inbounds %struct.barney, ptr %tmp143, i32 0, i32 1
+  %tmp146 = load i32, ptr %tmp144, align 4, !tbaa !5
+  %tmp147 = load ptr, ptr %tmp55, align 8, !tbaa !1
   %tmp150 = sub nsw i32 %tmp146, 0
   %tmp151 = add nsw i32 %tmp150, 1
   %tmp152 = icmp slt i32 0, %tmp151
@@ -165,14 +145,11 @@ bb153:                                            ; preds = %bb142
   br label %bb154
 
 bb154:                                            ; preds = %bb153, %bb142
-  %tmp155 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp156 = getelementptr inbounds %struct.barney, %struct.barney* %tmp155, i32 0, i32 1
-  %tmp157 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp156, i64 0, i64 0
-  %tmp158 = load i32, i32* %tmp157, align 4, !tbaa !5
-  %tmp159 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp160 = getelementptr inbounds %struct.barney, %struct.barney* %tmp159, i32 0, i32 0
-  %tmp161 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp160, i64 0, i64 0
-  %tmp162 = load i32, i32* %tmp161, align 4, !tbaa !5
+  %tmp155 = load ptr, ptr %tmp53, align 8, !tbaa !1
+  %tmp156 = getelementptr inbounds %struct.barney, ptr %tmp155, i32 0, i32 1
+  %tmp158 = load i32, ptr %tmp156, align 4, !tbaa !5
+  %tmp159 = load ptr, ptr %tmp53, align 8, !tbaa !1
+  %tmp162 = load i32, ptr %tmp159, align 4, !tbaa !5
   %tmp163 = sub nsw i32 %tmp158, %tmp162
   %tmp164 = add nsw i32 %tmp163, 1
   %tmp165 = icmp slt i32 0, %tmp164
@@ -182,14 +159,11 @@ bb166:                                            ; preds = %bb154
   br label %bb167
 
 bb167:                                            ; preds = %bb166, %bb154
-  %tmp168 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp169 = getelementptr inbounds %struct.barney, %struct.barney* %tmp168, i32 0, i32 1
-  %tmp170 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp169, i64 0, i64 0
-  %tmp171 = load i32, i32* %tmp170, align 4, !tbaa !5
-  %tmp172 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp173 = getelementptr inbounds %struct.barney, %struct.barney* %tmp172, i32 0, i32 0
-  %tmp174 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp173, i64 0, i64 0
-  %tmp175 = load i32, i32* %tmp174, align 4, !tbaa !5
+  %tmp168 = load ptr, ptr %tmp53, align 8, !tbaa !1
+  %tmp169 = getelementptr inbounds %struct.barney, ptr %tmp168, i32 0, i32 1
+  %tmp171 = load i32, ptr %tmp169, align 4, !tbaa !5
+  %tmp172 = load ptr, ptr %tmp53, align 8, !tbaa !1
+  %tmp175 = load i32, ptr %tmp172, align 4, !tbaa !5
   %tmp176 = sub nsw i32 %tmp171, %tmp175
   %tmp177 = add nsw i32 %tmp176, 1
   %tmp178 = icmp slt i32 0, %tmp177
@@ -199,14 +173,13 @@ bb179:                                            ; preds = %bb167
   br label %bb180
 
 bb180:                                            ; preds = %bb179, %bb167
-  %tmp181 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp182 = getelementptr inbounds %struct.barney, %struct.barney* %tmp181, i32 0, i32 1
-  %tmp183 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp182, i64 0, i64 1
-  %tmp184 = load i32, i32* %tmp183, align 4, !tbaa !5
-  %tmp185 = load %struct.barney*, %struct.barney** %tmp53, align 8, !tbaa !1
-  %tmp186 = getelementptr inbounds %struct.barney, %struct.barney* %tmp185, i32 0, i32 0
-  %tmp187 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp186, i64 0, i64 1
-  %tmp188 = load i32, i32* %tmp187, align 4, !tbaa !5
+  %tmp181 = load ptr, ptr %tmp53, align 8, !tbaa !1
+  %tmp182 = getelementptr inbounds %struct.barney, ptr %tmp181, i32 0, i32 1
+  %tmp183 = getelementptr inbounds [3 x i32], ptr %tmp182, i64 0, i64 1
+  %tmp184 = load i32, ptr %tmp183, align 4, !tbaa !5
+  %tmp185 = load ptr, ptr %tmp53, align 8, !tbaa !1
+  %tmp187 = getelementptr inbounds [3 x i32], ptr %tmp185, i64 0, i64 1
+  %tmp188 = load i32, ptr %tmp187, align 4, !tbaa !5
   %tmp189 = sub nsw i32 %tmp184, %tmp188
   %tmp190 = add nsw i32 %tmp189, 1
   %tmp191 = icmp slt i32 0, %tmp190
@@ -216,14 +189,11 @@ bb192:                                            ; preds = %bb180
   br label %bb193
 
 bb193:                                            ; preds = %bb192, %bb180
-  %tmp194 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp195 = getelementptr inbounds %struct.barney, %struct.barney* %tmp194, i32 0, i32 1
-  %tmp196 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp195, i64 0, i64 0
-  %tmp197 = load i32, i32* %tmp196, align 4, !tbaa !5
-  %tmp198 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp199 = getelementptr inbounds %struct.barney, %struct.barney* %tmp198, i32 0, i32 0
-  %tmp200 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp199, i64 0, i64 0
-  %tmp201 = load i32, i32* %tmp200, align 4, !tbaa !5
+  %tmp194 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp195 = getelementptr inbounds %struct.barney, ptr %tmp194, i32 0, i32 1
+  %tmp197 = load i32, ptr %tmp195, align 4, !tbaa !5
+  %tmp198 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp201 = load i32, ptr %tmp198, align 4, !tbaa !5
   %tmp202 = sub nsw i32 %tmp197, %tmp201
   %tmp203 = add nsw i32 %tmp202, 1
   %tmp204 = icmp slt i32 0, %tmp203
@@ -233,14 +203,11 @@ bb205:                                            ; preds = %bb193
   br label %bb206
 
 bb206:                                            ; preds = %bb205, %bb193
-  %tmp207 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp208 = getelementptr inbounds %struct.barney, %struct.barney* %tmp207, i32 0, i32 1
-  %tmp209 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp208, i64 0, i64 0
-  %tmp210 = load i32, i32* %tmp209, align 4, !tbaa !5
-  %tmp211 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp212 = getelementptr inbounds %struct.barney, %struct.barney* %tmp211, i32 0, i32 0
-  %tmp213 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp212, i64 0, i64 0
-  %tmp214 = load i32, i32* %tmp213, align 4, !tbaa !5
+  %tmp207 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp208 = getelementptr inbounds %struct.barney, ptr %tmp207, i32 0, i32 1
+  %tmp210 = load i32, ptr %tmp208, align 4, !tbaa !5
+  %tmp211 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp214 = load i32, ptr %tmp211, align 4, !tbaa !5
   %tmp215 = sub nsw i32 %tmp210, %tmp214
   %tmp216 = add nsw i32 %tmp215, 1
   %tmp217 = icmp slt i32 0, %tmp216
@@ -250,14 +217,13 @@ bb218:                                            ; preds = %bb206
   br label %bb219
 
 bb219:                                            ; preds = %bb218, %bb206
-  %tmp220 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp221 = getelementptr inbounds %struct.barney, %struct.barney* %tmp220, i32 0, i32 1
-  %tmp222 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp221, i64 0, i64 1
-  %tmp223 = load i32, i32* %tmp222, align 4, !tbaa !5
-  %tmp224 = load %struct.barney*, %struct.barney** %tmp54, align 8, !tbaa !1
-  %tmp225 = getelementptr inbounds %struct.barney, %struct.barney* %tmp224, i32 0, i32 0
-  %tmp226 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp225, i64 0, i64 1
-  %tmp227 = load i32, i32* %tmp226, align 4, !tbaa !5
+  %tmp220 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp221 = getelementptr inbounds %struct.barney, ptr %tmp220, i32 0, i32 1
+  %tmp222 = getelementptr inbounds [3 x i32], ptr %tmp221, i64 0, i64 1
+  %tmp223 = load i32, ptr %tmp222, align 4, !tbaa !5
+  %tmp224 = load ptr, ptr %tmp54, align 8, !tbaa !1
+  %tmp226 = getelementptr inbounds [3 x i32], ptr %tmp224, i64 0, i64 1
+  %tmp227 = load i32, ptr %tmp226, align 4, !tbaa !5
   %tmp228 = sub nsw i32 %tmp223, %tmp227
   %tmp229 = add nsw i32 %tmp228, 1
   %tmp230 = icmp slt i32 0, %tmp229
@@ -267,14 +233,11 @@ bb231:                                            ; preds = %bb219
   br label %bb232
 
 bb232:                                            ; preds = %bb231, %bb219
-  %tmp233 = load %struct.barney*, %struct.barney** %tmp55, align 8, !tbaa !1
-  %tmp234 = getelementptr inbounds %struct.barney, %struct.barney* %tmp233, i32 0, i32 1
-  %tmp235 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp234, i64 0, i64 0
-  %tmp236 = load i32, i32* %tmp235, align 4, !tbaa !5
-  %tmp237 = load %struct.barney*, %struct.barney** %tmp55, align 8, !tbaa !1
-  %tmp238 = getelementptr inbounds %struct.barney, %struct.barney* %tmp237, i32 0, i32 0
-  %tmp239 = getelementptr inbounds [3 x i32], [3 x i32]* %tmp238, i64 0, i64 0
-  %tmp240 = load i32, i32* %tmp239, align 4, !tbaa !5
+  %tmp233 = load ptr, ptr %tmp55, align 8, !tbaa !1
+  %tmp234 = getelementptr inbounds %struct.barney, ptr %tmp233, i32 0, i32 1
+  %tmp236 = load i32, ptr %tmp234, align 4, !tbaa !5
+  %tmp237 = load ptr, ptr %tmp55, align 8, !tbaa !1
+  %tmp240 = load i32, ptr %tmp237, align 4, !tbaa !5
   %tmp241 = sub nsw i32 %tmp236, %tmp240
   %tmp242 = add nsw i32 %tmp241, 1
   %tmp243 = icmp slt i32 0, %tmp242

diff  --git a/polly/test/ScopInfo/extract_constant_factor_introduces_new_parameter.ll b/polly/test/ScopInfo/extract_constant_factor_introduces_new_parameter.ll
index 16dd05d53fd2e..89ca344fdf54b 100644
--- a/polly/test/ScopInfo/extract_constant_factor_introduces_new_parameter.ll
+++ b/polly/test/ScopInfo/extract_constant_factor_introduces_new_parameter.ll
@@ -18,7 +18,7 @@
 
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 
-define void @barney(i32* %arg, i32* %arg1, double* %arg2, i32* %arg3, i32 %a, i32 %b, i32 %c) {
+define void @barney(ptr %arg, ptr %arg1, ptr %arg2, ptr %arg3, i32 %a, i32 %b, i32 %c) {
 bb:
   br label %bb10
 
@@ -31,9 +31,9 @@ bb11:                                             ; preds = %bb10
   %tmp8 = add nsw i32 %c, 1
   %tmp12 = mul nsw i32 %b, %a
   %tmp13 = add nsw i32 %tmp8, %tmp12
-  %tmp6 = getelementptr inbounds double, double* %arg2, i32 %tmp5
-  %tmp14 = getelementptr inbounds double, double* %tmp6, i32 %tmp13
-  %tmp15 = load double, double* %tmp14
+  %tmp6 = getelementptr inbounds double, ptr %arg2, i32 %tmp5
+  %tmp14 = getelementptr inbounds double, ptr %tmp6, i32 %tmp13
+  %tmp15 = load double, ptr %tmp14
   br label %bb16
 
 bb16:                                             ; preds = %bb11, %bb10

diff  --git a/polly/test/ScopInfo/full-function.ll b/polly/test/ScopInfo/full-function.ll
index 07af785304c27..670472576fe79 100644
--- a/polly/test/ScopInfo/full-function.ll
+++ b/polly/test/ScopInfo/full-function.ll
@@ -43,7 +43,7 @@
 ; WITHOUT-FULL-NEXT:                { Stmt_loop_1[i0] -> MemRef_A[0] };
 ; WITHOUT-FULL-NEXT:    }
 
-define void @foo(float* %A, i32 %p) {
+define void @foo(ptr %A, i32 %p) {
 bb:
   %cmp = icmp eq i32 %p, 42
   br i1 %cmp, label %loop.1, label %loop.2
@@ -51,14 +51,14 @@ bb:
 loop.1:
   %indvar.1 = phi i64 [0, %bb], [%indvar.next.1, %loop.1]
   %indvar.next.1 = add i64 %indvar.1, 1
-  store float 42.0, float* %A
+  store float 42.0, ptr %A
   %cmp.1 = icmp sle i64 %indvar.1, 1024
   br i1 %cmp.1, label %loop.1, label %merge
 
 loop.2:
   %indvar.2 = phi i64 [0, %bb], [%indvar.next.2, %loop.2]
   %indvar.next.2 = add i64 %indvar.2, 1
-  store float 42.0, float* %A
+  store float 42.0, ptr %A
   %cmp.2 = icmp sle i64 %indvar.2, 1024
   br i1 %cmp.2, label %loop.2, label %merge
 

diff  --git a/polly/test/ScopInfo/granularity_same_name.ll b/polly/test/ScopInfo/granularity_same_name.ll
index 96a7308b9fdaf..1ebf5c6f71a2e 100644
--- a/polly/test/ScopInfo/granularity_same_name.ll
+++ b/polly/test/ScopInfo/granularity_same_name.ll
@@ -15,7 +15,7 @@
 ;   double unrelatedB = 21.0 + 21.0;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -26,7 +26,7 @@ for:
 
     body:
       %unrelatedA = fadd double 21.0, 21.0
-      store double 0.0, double* %A
+      store double 0.0, ptr %A
       %unrelatedB = fadd double 21.0, 21.0
       br label %inc
 

diff  --git a/polly/test/ScopInfo/granularity_scalar-indep.ll b/polly/test/ScopInfo/granularity_scalar-indep.ll
index db99295d8a0f5..fe509b4682721 100644
--- a/polly/test/ScopInfo/granularity_scalar-indep.ll
+++ b/polly/test/ScopInfo/granularity_scalar-indep.ll
@@ -12,7 +12,7 @@
 ;   B[0] = valB;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -22,10 +22,10 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %valA = load double, double* %A
+      %valA = load double, ptr %A
       %valB = fadd double 21.0, 21.0
-      store double %valA, double* %A
-      store double %valB, double* %B
+      store double %valA, ptr %A
+      store double %valB, ptr %B
       br label %inc
 
 inc:
@@ -51,8 +51,8 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:             [n] -> { Stmt_body[i0] -> MemRef_A[0] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:               %valA = load double, double* %A, align 8
-; CHECK-NEXT:               store double %valA, double* %A, align 8
+; CHECK-NEXT:               %valA = load double, ptr %A, align 8
+; CHECK-NEXT:               store double %valA, ptr %A, align 8
 ; CHECK-NEXT:         }
 ; CHECK-NEXT:     Stmt_body_b
 ; CHECK-NEXT:         Domain :=
@@ -63,6 +63,6 @@ return:
 ; CHECK-NEXT:             [n] -> { Stmt_body_b[i0] -> MemRef_B[0] };
 ; CHECK-NEXT:         Instructions {
 ; CHECK-NEXT:               %valB = fadd double 2.100000e+01, 2.100000e+01
-; CHECK-NEXT:               store double %valB, double* %B, align 8
+; CHECK-NEXT:               store double %valB, ptr %B, align 8
 ; CHECK-NEXT:         }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi1.ll b/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi1.ll
index 458e291218750..56bc11aed28d3 100644
--- a/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi1.ll
+++ b/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi1.ll
@@ -17,7 +17,7 @@
 ;   A[0] = valA;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -25,7 +25,7 @@ for:
   %j = phi i32 [0, %entry], [%j.inc, %for]
   %valA = phi double [42.0, %entry], [%valB, %for]
   %valB = phi double [21.0, %entry], [%valA, %for]
-  store double %valA, double* %A
+  store double %valA, ptr %A
   %j.cmp = icmp slt i32 %j, %n
   %j.inc = add nuw nsw i32 %j, 1
   br i1 %j.cmp, label %for, label %exit
@@ -57,6 +57,6 @@ return:
 ; CHECK-NEXT:         Instructions {
 ; CHECK-NEXT:               %valA = phi double [ 4.200000e+01, %entry ], [ %valB, %for ]
 ; CHECK-NEXT:               %valB = phi double [ 2.100000e+01, %entry ], [ %valA, %for ]
-; CHECK-NEXT:               store double %valA, double* %A, align 8
+; CHECK-NEXT:               store double %valA, ptr %A, align 8
 ; CHECK-NEXT:         }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi2.ll b/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi2.ll
index a17835683afce..f46cf4e6a0a20 100644
--- a/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi2.ll
+++ b/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi2.ll
@@ -17,7 +17,7 @@
 ;   A[0] = valA;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -25,7 +25,7 @@ for:
   %j = phi i32 [0, %entry], [%j.inc, %for]
   %valA = phi double [42.0, %entry], [%valB, %for]
   %valB = phi double [21.0, %entry], [%add, %for]
-  store double %valB, double* %A
+  store double %valB, ptr %A
   %add = fadd double %valA, 0.1
   %j.cmp = icmp slt i32 %j, %n
   %j.inc = add nuw nsw i32 %j, 1
@@ -58,7 +58,7 @@ return:
 ; CHECK-NEXT:         Instructions {
 ; CHECK-NEXT:               %valA = phi double [ 4.200000e+01, %entry ], [ %valB, %for ]
 ; CHECK-NEXT:               %valB = phi double [ 2.100000e+01, %entry ], [ %add, %for ]
-; CHECK-NEXT:               store double %valB, double* %A, align 8
+; CHECK-NEXT:               store double %valB, ptr %A, align 8
 ; CHECK-NEXT:               %add = fadd double %valA, 1.000000e-01
 ; CHECK-NEXT:         }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ScopInfo/granularity_scalar-indep_epilogue.ll b/polly/test/ScopInfo/granularity_scalar-indep_epilogue.ll
index 3d2f4ec1ca7ea..e202e38f0844e 100644
--- a/polly/test/ScopInfo/granularity_scalar-indep_epilogue.ll
+++ b/polly/test/ScopInfo/granularity_scalar-indep_epilogue.ll
@@ -12,7 +12,7 @@
 ;   phi = 42.0;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -22,8 +22,8 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %valA = load double, double* %A
-      store double %valA, double* %A
+      %valA = load double, ptr %A
+      store double %valA, ptr %A
       br label %bodyB
 
     bodyB:
@@ -53,8 +53,8 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:             [n] -> { Stmt_bodyA[i0] -> MemRef_A[0] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:             %valA = load double, double* %A, align 8
-; CHECK-NEXT:             store double %valA, double* %A, align 8
+; CHECK-NEXT:             %valA = load double, ptr %A, align 8
+; CHECK-NEXT:             store double %valA, ptr %A, align 8
 ; CHECK-NEXT:         }
 ; CHECK-NEXT:     Stmt_bodyA_last
 ; CHECK-NEXT:         Domain :=

diff  --git a/polly/test/ScopInfo/granularity_scalar-indep_epilogue_last.ll b/polly/test/ScopInfo/granularity_scalar-indep_epilogue_last.ll
index 0dc207e85cddd..40af34bfb0673 100644
--- a/polly/test/ScopInfo/granularity_scalar-indep_epilogue_last.ll
+++ b/polly/test/ScopInfo/granularity_scalar-indep_epilogue_last.ll
@@ -14,7 +14,7 @@
 ;   phi = valA;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -24,10 +24,10 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %valA = load double, double* %A
-      store double %valA, double* %A
-      %valB = load double, double* %B
-      store double %valB, double* %B
+      %valA = load double, ptr %A
+      store double %valA, ptr %A
+      %valB = load double, ptr %B
+      store double %valB, ptr %B
       br label %bodyB
 
     bodyB:
@@ -59,8 +59,8 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:             [n] -> { Stmt_bodyA[i0] -> MemRef_phi__phi[] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:               %valA = load double, double* %A, align 8
-; CHECK-NEXT:               store double %valA, double* %A, align 8
+; CHECK-NEXT:               %valA = load double, ptr %A, align 8
+; CHECK-NEXT:               store double %valA, ptr %A, align 8
 ; CHECK-NEXT:         }
 ; CHECK-NEXT:     Stmt_bodyA_b
 ; CHECK-NEXT:         Domain :=
@@ -72,7 +72,7 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:             [n] -> { Stmt_bodyA_b[i0] -> MemRef_B[0] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:               %valB = load double, double* %B, align 8
-; CHECK-NEXT:               store double %valB, double* %B, align 8
+; CHECK-NEXT:               %valB = load double, ptr %B, align 8
+; CHECK-NEXT:               store double %valB, ptr %B, align 8
 ; CHECK-NEXT:         }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ScopInfo/granularity_scalar-indep_noepilogue.ll b/polly/test/ScopInfo/granularity_scalar-indep_noepilogue.ll
index e3f7e8b45e031..9a0d207c0c2a1 100644
--- a/polly/test/ScopInfo/granularity_scalar-indep_noepilogue.ll
+++ b/polly/test/ScopInfo/granularity_scalar-indep_noepilogue.ll
@@ -12,7 +12,7 @@
 ;   phi = valA;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -22,8 +22,8 @@ for:
   br i1 %j.cmp, label %bodyA, label %exit
 
     bodyA:
-      %valA = load double, double* %A
-      store double %valA, double* %A
+      %valA = load double, ptr %A
+      store double %valA, ptr %A
       br label %bodyB
 
     bodyB:
@@ -55,7 +55,7 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:             [n] -> { Stmt_bodyA[i0] -> MemRef_phi__phi[] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:               %valA = load double, double* %A, align 8
-; CHECK-NEXT:               store double %valA, double* %A, align 8
+; CHECK-NEXT:               %valA = load double, ptr %A, align 8
+; CHECK-NEXT:               store double %valA, ptr %A, align 8
 ; CHECK-NEXT:         }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ScopInfo/granularity_scalar-indep_ordered-2.ll b/polly/test/ScopInfo/granularity_scalar-indep_ordered-2.ll
index e533b10889fad..d093806bc9cc1 100644
--- a/polly/test/ScopInfo/granularity_scalar-indep_ordered-2.ll
+++ b/polly/test/ScopInfo/granularity_scalar-indep_ordered-2.ll
@@ -14,7 +14,7 @@
 ;   A[0] = valB;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B, double* noalias nonnull %X, double* noalias nonnull %Y) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, ptr noalias nonnull %X, ptr noalias nonnull %Y) {
 entry:
   br label %for
 
@@ -24,12 +24,12 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %valX = load double, double* %X
-      store double %valX, double* %Y
-      %valA = load double, double* %A
-      %valB = load double, double* %B
-      store double %valA, double* %A
-      store double %valB, double* %A
+      %valX = load double, ptr %X
+      store double %valX, ptr %Y
+      %valA = load double, ptr %A
+      %valB = load double, ptr %B
+      store double %valA, ptr %A
+      store double %valB, ptr %A
       br label %inc
 
 inc:
@@ -55,8 +55,8 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:             [n] -> { Stmt_body[i0] -> MemRef_Y[0] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:               %valX = load double, double* %X, align 8
-; CHECK-NEXT:               store double %valX, double* %Y, align 8
+; CHECK-NEXT:               %valX = load double, ptr %X, align 8
+; CHECK-NEXT:               store double %valX, ptr %Y, align 8
 ; CHECK-NEXT:         }
 ; CHECK-NEXT: 	Stmt_body_b
 ; CHECK-NEXT:         Domain :=
@@ -72,9 +72,9 @@ return:
 ; CHECK-NEXT:         MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:             [n] -> { Stmt_body_b[i0] -> MemRef_A[0] };
 ; CHECK-NEXT:         Instructions {
-; CHECK-NEXT:               %valA = load double, double* %A, align 8
-; CHECK-NEXT:               %valB = load double, double* %B, align 8
-; CHECK-NEXT:               store double %valA, double* %A, align 8
-; CHECK-NEXT:               store double %valB, double* %A, align 8
+; CHECK-NEXT:               %valA = load double, ptr %A, align 8
+; CHECK-NEXT:               %valB = load double, ptr %B, align 8
+; CHECK-NEXT:               store double %valA, ptr %A, align 8
+; CHECK-NEXT:               store double %valB, ptr %A, align 8
 ; CHECK-NEXT:         }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ScopInfo/granularity_scalar-indep_ordered.ll b/polly/test/ScopInfo/granularity_scalar-indep_ordered.ll
index f48b02a222de2..b1d2936882aa1 100644
--- a/polly/test/ScopInfo/granularity_scalar-indep_ordered.ll
+++ b/polly/test/ScopInfo/granularity_scalar-indep_ordered.ll
@@ -11,7 +11,7 @@
 ;   A[0] = valB;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -21,10 +21,10 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %valA = load double, double* %A
-      %valB = load double, double* %B
-      store double %valA, double* %A
-      store double %valB, double* %A
+      %valA = load double, ptr %A
+      %valB = load double, ptr %B
+      store double %valA, ptr %A
+      store double %valB, ptr %A
       br label %inc
 
 inc:
@@ -54,9 +54,9 @@ return:
 ; CHECK-NEXT:          MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:              [n] -> { Stmt_body[i0] -> MemRef_A[0] };
 ; CHECK-NEXT:          Instructions {
-; CHECK-NEXT:                %valA = load double, double* %A, align 8
-; CHECK-NEXT:                %valB = load double, double* %B, align 8
-; CHECK-NEXT:                store double %valA, double* %A, align 8
-; CHECK-NEXT:                store double %valB, double* %A, align 8
+; CHECK-NEXT:                %valA = load double, ptr %A, align 8
+; CHECK-NEXT:                %valB = load double, ptr %B, align 8
+; CHECK-NEXT:                store double %valA, ptr %A, align 8
+; CHECK-NEXT:                store double %valB, ptr %A, align 8
 ; CHECK-NEXT:          }
 ; CHECK-NEXT: }

diff  --git a/polly/test/ScopInfo/i1_params.ll b/polly/test/ScopInfo/i1_params.ll
index 251b9a17c6d65..1cb1329b08f99 100644
--- a/polly/test/ScopInfo/i1_params.ll
+++ b/polly/test/ScopInfo/i1_params.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i1 %p0, i1 %p1, i32* %A) {
+define void @f(i1 %p0, i1 %p1, ptr %A) {
 entry:
   %tmp4 = sext i1 %p0 to i64
   %tmp = zext i1 %p1 to i64
@@ -31,11 +31,11 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %tmp5 = add nsw i64 %indvars.iv, %tmp
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %tmp5
-  %tmp6 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %tmp5
+  %tmp6 = load i32, ptr %arrayidx, align 4
   %tmp7 = add nsw i64 %indvars.iv, %tmp4
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %tmp7
-  store i32 %tmp6, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %tmp7
+  store i32 %tmp6, ptr %arrayidx3, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/infeasible-rtc.ll b/polly/test/ScopInfo/infeasible-rtc.ll
index bd9907dc21cd7..ef96627e640e1 100644
--- a/polly/test/ScopInfo/infeasible-rtc.ll
+++ b/polly/test/ScopInfo/infeasible-rtc.ll
@@ -12,18 +12,18 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; Verify that we detect this scop, but that, due to an infeasible run-time
 ; check, we refuse to model it.
 
-define void @test(i64* %a) nounwind uwtable {
+define void @test(ptr %a) nounwind uwtable {
 preheader:
   br label %test1.header
 
 test1.header:
   %i = phi i56 [ 0, %preheader ], [ %i.1, %test1.header ]
   %tmp = zext i56 %i to i64
-  %A.addr = getelementptr i64, i64* %a, i64 %tmp
-  %A.load = load i64, i64* %A.addr, align 4
+  %A.addr = getelementptr i64, ptr %a, i64 %tmp
+  %A.load = load i64, ptr %A.addr, align 4
   %A.inc = zext i56 %i to i64
   %A.val = add nsw i64 %A.load, %A.inc
-  store i64 %A.val, i64* %A.addr, align 4
+  store i64 %A.val, ptr %A.addr, align 4
   %i.1 = add i56 %i, 1
   %exitcond = icmp eq i56 %i.1, 0
   br i1 %exitcond, label %test1.exit, label %test1.header
@@ -37,18 +37,18 @@ test1.exit:
 
 ; SCOPS: { Stmt_header[i0] : 0 <= i0 <= 127 };
 
-define void @test2([128 x i32]* %a) nounwind uwtable {
+define void @test2(ptr %a) nounwind uwtable {
 preheader:
   br label %header
 
 header:
   %i = phi i7 [ 0, %preheader ], [ %i.1, %header ]
   %tmp = zext i7 %i to i64
-  %A.addr = getelementptr [128 x i32], [128 x i32]* %a, i64 0, i64 %tmp
-  %A.load = load i32, i32* %A.addr, align 4
+  %A.addr = getelementptr [128 x i32], ptr %a, i64 0, i64 %tmp
+  %A.load = load i32, ptr %A.addr, align 4
   %A.inc = zext i7 %i to i32
   %A.val = add nsw i32 %A.load, %A.inc
-  store i32 %A.val, i32* %A.addr, align 4
+  store i32 %A.val, ptr %A.addr, align 4
   %i.1 = add i7 %i, 1
   %exitcond = icmp eq i7 %i.1, 0
   br i1 %exitcond, label %exit, label %header

diff  --git a/polly/test/ScopInfo/infeasible_invalid_context.ll b/polly/test/ScopInfo/infeasible_invalid_context.ll
index 77212e28ddec0..2c299f06c12ef 100644
--- a/polly/test/ScopInfo/infeasible_invalid_context.ll
+++ b/polly/test/ScopInfo/infeasible_invalid_context.ll
@@ -12,11 +12,11 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739 = type { i32, i32, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, i32, i32, %struct.plist.0.6.12.66.120.174.216.306.324.336.348.366.378.390.432.444.666.726.732.738* }
-%struct.plist.0.6.12.66.120.174.216.306.324.336.348.366.378.390.432.444.666.726.732.738 = type { i32, %struct.plist.0.6.12.66.120.174.216.306.324.336.348.366.378.390.432.444.666.726.732.738* }
+%struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739 = type { i32, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr }
+%struct.plist.0.6.12.66.120.174.216.306.324.336.348.366.378.390.432.444.666.726.732.738 = type { i32, ptr }
 
- at vFixedEdgeRoot = external global %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, align 8
- at hEdgeRoot = external global %struct.tnode.1.7.13.67.121.175.217.307.325.337.349.367.379.391.433.445.667.727.733.739*, align 8
+ at vFixedEdgeRoot = external global ptr, align 8
+ at hEdgeRoot = external global ptr, align 8
 
 ; Function Attrs: nounwind uwtable
 define void @readgeo() #0 {
@@ -55,7 +55,7 @@ if.else154:                                       ; preds = %if.end116
   br label %if.end193
 
 if.end193:                                        ; preds = %if.else154, %if.then120
-  %0 = load i32, i32* %vx, align 4
+  %0 = load i32, ptr %vx, align 4
   br label %for.inc216
 
 for.inc216:                                       ; preds = %if.end193, %if.then93

diff  --git a/polly/test/ScopInfo/integers.ll b/polly/test/ScopInfo/integers.ll
index bb3c8830b77ad..b608bf84cffae 100644
--- a/polly/test/ScopInfo/integers.ll
+++ b/polly/test/ScopInfo/integers.ll
@@ -5,13 +5,13 @@
 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"
 
 ; Large positive integer
-define void @f(i1024* nocapture %a) nounwind {
+define void @f(ptr nocapture %a) nounwind {
 entry:
   br label %bb
 
 bb:
   %indvar = phi i1024 [ 0, %entry ], [ %indvar.next, %bb ]
-  store i1024 %indvar, i1024* %a, align 8
+  store i1024 %indvar, ptr %a, align 8
   %indvar.next = add nsw i1024 %indvar, 1
   %exitcond = icmp eq i1024 %indvar, 123456000000000000000000000
 ; CHECK-LABEL: Function: f
@@ -24,14 +24,14 @@ return:
 }
 
 ; Normal positive integer
-define void @f2(i32* nocapture %a) nounwind {
+define void @f2(ptr nocapture %a) nounwind {
 entry:
   br label %bb
 
 bb:
   %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb ]
-  %scevgep = getelementptr i32, i32* %a, i32 %indvar
-  store i32 %indvar, i32* %scevgep, align 8
+  %scevgep = getelementptr i32, ptr %a, i32 %indvar
+  store i32 %indvar, ptr %scevgep, align 8
   %indvar.next = add nsw i32 %indvar, 1
   %exitcond = icmp eq i32 %indvar, 123456
 ; CHECK-LABEL: Function: f2
@@ -44,14 +44,14 @@ return:
 }
 
 ; Normal negative integer
-define void @f3(i32* nocapture %a, i32 %n) nounwind {
+define void @f3(ptr nocapture %a, i32 %n) nounwind {
 entry:
   br label %bb
 
 bb:
   %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb ]
-  %scevgep = getelementptr i32, i32* %a, i32 %indvar
-  store i32 %indvar, i32* %scevgep, align 8
+  %scevgep = getelementptr i32, ptr %a, i32 %indvar
+  store i32 %indvar, ptr %scevgep, align 8
   %indvar.next = add nsw i32 %indvar, 1
   %sub = sub i32 %n, 123456
   %exitcond = icmp eq i32 %indvar, %sub
@@ -65,14 +65,14 @@ return:
 }
 
 ; Large negative integer
-define void @f4(i1024* nocapture %a, i1024 %n) nounwind {
+define void @f4(ptr nocapture %a, i1024 %n) nounwind {
 entry:
   br label %bb
 
 bb:
   %indvar = phi i1024 [ 0, %entry ], [ %indvar.next, %bb ]
-  %scevgep = getelementptr i1024, i1024* %a, i1024 %indvar
-  store i1024 %indvar, i1024* %scevgep, align 8
+  %scevgep = getelementptr i1024, ptr %a, i1024 %indvar
+  store i1024 %indvar, ptr %scevgep, align 8
   %indvar.next = add nsw i1024 %indvar, 1
   %sub = sub i1024 %n, 123456000000000000000000000000000000
 ; CHECK-LABEL: Function: f4
@@ -85,14 +85,14 @@ return:
   ret void
 }
 
-define void @f5(i1023* nocapture %a, i1023 %n) nounwind {
+define void @f5(ptr nocapture %a, i1023 %n) nounwind {
 entry:
   br label %bb
 
 bb:
   %indvar = phi i1023 [ 0, %entry ], [ %indvar.next, %bb ]
-  %scevgep = getelementptr i1023, i1023* %a, i1023 %indvar
-  store i1023 %indvar, i1023* %scevgep, align 8
+  %scevgep = getelementptr i1023, ptr %a, i1023 %indvar
+  store i1023 %indvar, ptr %scevgep, align 8
   %indvar.next = add nsw i1023 %indvar, 1
   %sub = sub i1023 %n, 123456000000000000000000000000000000
 ; CHECK-LABEL: Function: f5
@@ -106,14 +106,14 @@ return:
 }
 
 ; Tiny negative integer
-define void @f6(i3* nocapture %a, i3 %n) nounwind {
+define void @f6(ptr nocapture %a, i3 %n) nounwind {
 entry:
   br label %bb
 
 bb:
   %indvar = phi i3 [ 0, %entry ], [ %indvar.next, %bb ]
-  %scevgep = getelementptr i3, i3* %a, i3 %indvar
-  store i3 %indvar, i3* %scevgep, align 8
+  %scevgep = getelementptr i3, ptr %a, i3 %indvar
+  store i3 %indvar, ptr %scevgep, align 8
   %indvar.next = add nsw i3 %indvar, 1
   %sub = sub i3 %n, 3
 ; CHECK-LABEL: Function: f6

diff  --git a/polly/test/ScopInfo/inter-error-bb-dependence.ll b/polly/test/ScopInfo/inter-error-bb-dependence.ll
index 5d23dfd297c25..4e23de7e6a994 100644
--- a/polly/test/ScopInfo/inter-error-bb-dependence.ll
+++ b/polly/test/ScopInfo/inter-error-bb-dependence.ll
@@ -6,7 +6,7 @@
 
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 
-declare noalias i8* @widget()
+declare noalias ptr @widget()
 
 declare void @quux()
 
@@ -33,12 +33,12 @@ bb25:                                             ; preds = %bb25, %bb16
   br i1 %tmp27, label %bb31, label %bb25
 
 bb31:                                             ; preds = %bb25, %bb16
-  %tmp32 = call noalias i8* @widget()
+  %tmp32 = call noalias ptr @widget()
   br label %bb33
 
 bb33:                                             ; preds = %bb31
   call void @quux()
-  %tmp34 = icmp eq i8* %tmp32, null
+  %tmp34 = icmp eq ptr %tmp32, null
   br label %bb36
 
 bb36:                                             ; preds = %bb33, %bb5

diff  --git a/polly/test/ScopInfo/inter_bb_scalar_dep.ll b/polly/test/ScopInfo/inter_bb_scalar_dep.ll
index fd6e1fe9047d7..456f7a773f044 100644
--- a/polly/test/ScopInfo/inter_bb_scalar_dep.ll
+++ b/polly/test/ScopInfo/inter_bb_scalar_dep.ll
@@ -19,7 +19,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK:           ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:          MemRef_init_ptr[0]
 
-define void @f(i64* noalias %A, i64 %N, i64* noalias %init_ptr) #0 {
+define void @f(ptr noalias %A, i64 %N, ptr noalias %init_ptr) #0 {
 entry:
   br label %for.i
 
@@ -29,7 +29,7 @@ for.i:                                            ; preds = %for.i.end, %entry
   br label %entry.next
 
 entry.next:                                       ; preds = %for.i
-  %init = load i64, i64* %init_ptr
+  %init = load i64, ptr %init_ptr
 ; CHECK-NOT: Stmt_entry_next
   br label %for.j
 
@@ -41,8 +41,8 @@ for.j:                                            ; preds = %for.j, %entry.next
 ; CHECK-NEXT:          [N] -> { Stmt_for_j[i0, i1] -> MemRef_init[] };
 ; CHECK:           MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:          [N] -> { Stmt_for_j[i0, i1] -> MemRef_A[i1] };
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
-  store i64 %init_plus_two, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar.j
+  store i64 %init_plus_two, ptr %scevgep
   %indvar.j.next = add nsw i64 %indvar.j, 1
   %exitcond.j = icmp eq i64 %indvar.j.next, %N
   br i1 %exitcond.j, label %for.i.end, label %for.j

diff  --git a/polly/test/ScopInfo/intra-non-affine-stmt-phi-node.ll b/polly/test/ScopInfo/intra-non-affine-stmt-phi-node.ll
index 2f839748bf533..859972b274021 100644
--- a/polly/test/ScopInfo/intra-non-affine-stmt-phi-node.ll
+++ b/polly/test/ScopInfo/intra-non-affine-stmt-phi-node.ll
@@ -20,7 +20,7 @@
 ; CHECK-NEXT:             { Stmt_backedge[i0] -> MemRef_A[0] };
 ; CHECK-NEXT: }
 
-define void @foo(float* %A, i1 %cond0, i1 %cond1) {
+define void @foo(ptr %A, i1 %cond0, i1 %cond1) {
 entry:
   br label %loop
 
@@ -40,7 +40,7 @@ branch2:
 backedge:
   %merge = phi float [%val0, %loop], [%val1, %branch1], [%val2, %branch2]
   %indvar.next = add i64 %indvar, 1
-  store float %merge, float* %A
+  store float %merge, ptr %A
   %cmp = icmp sle i64 %indvar.next, 100
   br i1 %cmp, label %loop, label %exit
 

diff  --git a/polly/test/ScopInfo/intra_and_inter_bb_scalar_dep.ll b/polly/test/ScopInfo/intra_and_inter_bb_scalar_dep.ll
index 2153ac416ab35..37f4e0513ed3c 100644
--- a/polly/test/ScopInfo/intra_and_inter_bb_scalar_dep.ll
+++ b/polly/test/ScopInfo/intra_and_inter_bb_scalar_dep.ll
@@ -33,7 +33,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"
 
-define void @f(i64* noalias %A, i64 %N, i64* noalias %init_ptr) #0 {
+define void @f(ptr noalias %A, i64 %N, ptr noalias %init_ptr) #0 {
 entry:
   br label %for.i
 
@@ -43,15 +43,15 @@ for.i:                                            ; preds = %for.i.end, %entry
   br label %entry.next
 
 entry.next:                                       ; preds = %for.i
-  %init = load i64, i64* %init_ptr
+  %init = load i64, ptr %init_ptr
   br label %for.j
 
 for.j:                                            ; preds = %for.j, %entry.next
   %indvar.j = phi i64 [ 0, %entry.next ], [ %indvar.j.next, %for.j ]
-  %init_2 = load i64, i64* %init_ptr
+  %init_2 = load i64, ptr %init_ptr
   %init_sum = add i64 %init, %init_2
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
-  store i64 %init_sum, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar.j
+  store i64 %init_sum, ptr %scevgep
   %indvar.j.next = add nsw i64 %indvar.j, 1
   %exitcond.j = icmp eq i64 %indvar.j.next, %N
   br i1 %exitcond.j, label %for.i.end, label %for.j

diff  --git a/polly/test/ScopInfo/intra_bb_scalar_dep.ll b/polly/test/ScopInfo/intra_bb_scalar_dep.ll
index 6cd9135d105c1..0252273d3107e 100644
--- a/polly/test/ScopInfo/intra_bb_scalar_dep.ll
+++ b/polly/test/ScopInfo/intra_bb_scalar_dep.ll
@@ -18,7 +18,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK:      Invariant Accesses:
 ; CHECK-NEXT:     ReadAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:          [N] -> { Stmt_for_j[i0, i1] -> MemRef_init_ptr[0] };
-define void @f(i64* noalias %A, i64 %N, i64* noalias %init_ptr) #0 {
+define void @f(ptr noalias %A, i64 %N, ptr noalias %init_ptr) #0 {
 entry:
   br label %for.i
 
@@ -32,10 +32,10 @@ entry.next:                                       ; preds = %for.i
 
 for.j:                                            ; preds = %for.j, %entry.next
   %indvar.j = phi i64 [ 0, %entry.next ], [ %indvar.j.next, %for.j ]
-  %init = load i64, i64* %init_ptr
+  %init = load i64, ptr %init_ptr
   %init_plus_two = add i64 %init, 2
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
-  store i64 %init_plus_two, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar.j
+  store i64 %init_plus_two, ptr %scevgep
 ; CHECK:      Statements {
 ; CHECK-NEXT:   Stmt_for_j
 ; CHECK-NOT:     ReadAccess

diff  --git a/polly/test/ScopInfo/intrinsics.ll b/polly/test/ScopInfo/intrinsics.ll
index 5d4d8c43e878c..853429341381a 100644
--- a/polly/test/ScopInfo/intrinsics.ll
+++ b/polly/test/ScopInfo/intrinsics.ll
@@ -3,7 +3,7 @@
 ; Verify that we remove the ignored intrinsics from the instruction list.
 ;
 ; CHECK:       Instructions {
-; CHECK-NEXT:      store i32 %i.0, i32* %arrayidx, align 4
+; CHECK-NEXT:      store i32 %i.0, ptr %arrayidx, align 4
 ; CHECK-NEXT:    }
 ;
 ;    int A[1024];
@@ -26,9 +26,9 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* %A, i64 0, i64 %idxprom
+  %arrayidx = getelementptr inbounds [1024 x i32], ptr %A, i64 0, i64 %idxprom
   call void @llvm.donothing()
-  store i32 %i.0, i32* %arrayidx, align 4
+  store i32 %i.0, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/invalid_add_rec_after_invariant_load_remapping.ll b/polly/test/ScopInfo/invalid_add_rec_after_invariant_load_remapping.ll
index 3c3566b4cb8e7..8d0de03e9866f 100644
--- a/polly/test/ScopInfo/invalid_add_rec_after_invariant_load_remapping.ll
+++ b/polly/test/ScopInfo/invalid_add_rec_after_invariant_load_remapping.ll
@@ -9,17 +9,17 @@
 ; Check we do not crash.
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.codebook.48.118.748.1882.2972 = type { i64, i64, i64, %struct.static_codebook.19.89.719.1853.2971*, float*, i32*, i32*, i8*, i32*, i32, i32 }
-%struct.static_codebook.19.89.719.1853.2971 = type { i64, i64, i64*, i32, i64, i64, i32, i32, i64*, %struct.encode_aux_nearestmatch.16.86.716.1850.2968*, %struct.encode_aux_threshmatch.17.87.717.1851.2969*, %struct.encode_aux_pigeonhole.18.88.718.1852.2970*, i32 }
-%struct.encode_aux_nearestmatch.16.86.716.1850.2968 = type { i64*, i64*, i64*, i64*, i64, i64 }
-%struct.encode_aux_threshmatch.17.87.717.1851.2969 = type { float*, i64*, i32, i32 }
-%struct.encode_aux_pigeonhole.18.88.718.1852.2970 = type { float, float, i32, i32, i64*, i64, i64*, i64*, i64* }
+%struct.codebook.48.118.748.1882.2972 = type { i64, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
+%struct.static_codebook.19.89.719.1853.2971 = type { i64, i64, ptr, i32, i64, i64, i32, i32, ptr, ptr, ptr, ptr, i32 }
+%struct.encode_aux_nearestmatch.16.86.716.1850.2968 = type { ptr, ptr, ptr, ptr, i64, i64 }
+%struct.encode_aux_threshmatch.17.87.717.1851.2969 = type { ptr, ptr, i32, i32 }
+%struct.encode_aux_pigeonhole.18.88.718.1852.2970 = type { float, float, i32, i32, ptr, i64, ptr, ptr, ptr }
 
 ; Function Attrs: inlinehint nounwind uwtable
 declare i64 @decode_packed_entry_number() #0
 
 ; Function Attrs: nounwind uwtable
-define void @vorbis_book_decodev_set(%struct.codebook.48.118.748.1882.2972* %book) #1 {
+define void @vorbis_book_decodev_set(ptr %book) #1 {
 entry:
   br i1 undef, label %for.body, label %return
 
@@ -31,25 +31,23 @@ for.body:                                         ; preds = %for.cond.loopexit,
   br i1 undef, label %return, label %if.end
 
 if.end:                                           ; preds = %for.body
-  %valuelist = getelementptr inbounds %struct.codebook.48.118.748.1882.2972, %struct.codebook.48.118.748.1882.2972* %book, i64 0, i32 4
-  %0 = load float*, float** %valuelist, align 8
+  %valuelist = getelementptr inbounds %struct.codebook.48.118.748.1882.2972, ptr %book, i64 0, i32 4
+  %0 = load ptr, ptr %valuelist, align 8
   %sext = shl i64 %call, 32
   %conv4 = ashr exact i64 %sext, 32
-  %dim = getelementptr inbounds %struct.codebook.48.118.748.1882.2972, %struct.codebook.48.118.748.1882.2972* %book, i64 0, i32 0
-  %1 = load i64, i64* %dim, align 8
+  %1 = load i64, ptr %book, align 8
   %mul = mul nsw i64 %1, %conv4
-  %add.ptr = getelementptr inbounds float, float* %0, i64 %mul
+  %add.ptr = getelementptr inbounds float, ptr %0, i64 %mul
   %cmp8.7 = icmp sgt i64 %1, 0
   br i1 %cmp8.7, label %for.body.10, label %for.cond.loopexit
 
 for.body.10:                                      ; preds = %for.body.10, %if.end
   %indvars.iv15 = phi i64 [ %indvars.iv.next16, %for.body.10 ], [ 0, %if.end ]
   %indvars.iv.next16 = add nuw nsw i64 %indvars.iv15, 1
-  %arrayidx = getelementptr inbounds float, float* %add.ptr, i64 %indvars.iv15
-  %2 = bitcast float* %arrayidx to i32*
-  %3 = load i32, i32* %2, align 4
-  %4 = load i64, i64* %dim, align 8
-  %cmp8 = icmp slt i64 %indvars.iv.next16, %4
+  %arrayidx = getelementptr inbounds float, ptr %add.ptr, i64 %indvars.iv15
+  %2 = load i32, ptr %arrayidx, align 4
+  %3 = load i64, ptr %book, align 8
+  %cmp8 = icmp slt i64 %indvars.iv.next16, %3
   br i1 %cmp8, label %for.body.10, label %for.cond.loopexit
 
 return:                                           ; preds = %for.body, %for.cond.loopexit, %entry

diff  --git a/polly/test/ScopInfo/invalidate_iterator_during_MA_removal.ll b/polly/test/ScopInfo/invalidate_iterator_during_MA_removal.ll
index 095daa0cd51e8..dcb0ad301ba30 100644
--- a/polly/test/ScopInfo/invalidate_iterator_during_MA_removal.ll
+++ b/polly/test/ScopInfo/invalidate_iterator_during_MA_removal.ll
@@ -7,50 +7,48 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.vorbis_dsp_state.29.212.395.700.761.944.1066.1127.1188.2825.2980.1.51.76.101.126.780 = type { i32, %struct.vorbis_info.28.211.394.699.760.943.1065.1126.1187.2824.2979.0.50.75.100.125.779*, float**, float**, i32, i32, i32, i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i8* }
-%struct.vorbis_info.28.211.394.699.760.943.1065.1126.1187.2824.2979.0.50.75.100.125.779 = type { i32, i32, i64, i64, i64, i64, i64, i8* }
-%struct.codec_setup_info.59.242.425.730.791.974.1096.1157.1218.2855.2992.13.63.88.113.138.792 = type { [2 x i64], i32, i32, i32, i32, i32, i32, [64 x %struct.vorbis_info_mode.36.219.402.707.768.951.1073.1134.1195.2832.2981.2.52.77.102.127.781*], [64 x i32], [64 x i8*], [64 x i32], [64 x i8*], [64 x i32], [64 x i8*], [256 x %struct.static_codebook.18.201.384.689.750.933.1055.1116.1177.2814.2985.6.56.81.106.131.785*], %struct.codebook.43.226.409.714.775.958.1080.1141.1202.2839.2986.7.57.82.107.132.786*, [4 x %struct.vorbis_info_psy.35.218.401.706.767.950.1072.1133.1194.2831.2987.8.58.83.108.133.787*], %struct.vorbis_info_psy_global.13.196.379.684.745.928.1050.1111.1172.2809.2988.9.59.84.109.134.788, %struct.bitrate_manager_info.56.239.422.727.788.971.1093.1154.1215.2852.2989.10.60.85.110.135.789, %struct.highlevel_encode_setup.58.241.424.729.790.973.1095.1156.1217.2854.2991.12.62.87.112.137.791, i32 }
+%struct.vorbis_dsp_state.29.212.395.700.761.944.1066.1127.1188.2825.2980.1.51.76.101.126.780 = type { i32, ptr, ptr, ptr, i32, i32, i32, i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, ptr }
+%struct.vorbis_info.28.211.394.699.760.943.1065.1126.1187.2824.2979.0.50.75.100.125.779 = type { i32, i32, i64, i64, i64, i64, i64, ptr }
+%struct.codec_setup_info.59.242.425.730.791.974.1096.1157.1218.2855.2992.13.63.88.113.138.792 = type { [2 x i64], i32, i32, i32, i32, i32, i32, [64 x ptr], [64 x i32], [64 x ptr], [64 x i32], [64 x ptr], [64 x i32], [64 x ptr], [256 x ptr], ptr, [4 x ptr], %struct.vorbis_info_psy_global.13.196.379.684.745.928.1050.1111.1172.2809.2988.9.59.84.109.134.788, %struct.bitrate_manager_info.56.239.422.727.788.971.1093.1154.1215.2852.2989.10.60.85.110.135.789, %struct.highlevel_encode_setup.58.241.424.729.790.973.1095.1156.1217.2854.2991.12.62.87.112.137.791, i32 }
 %struct.vorbis_info_mode.36.219.402.707.768.951.1073.1134.1195.2832.2981.2.52.77.102.127.781 = type { i32, i32, i32, i32 }
-%struct.static_codebook.18.201.384.689.750.933.1055.1116.1177.2814.2985.6.56.81.106.131.785 = type { i64, i64, i64*, i32, i64, i64, i32, i32, i64*, %struct.encode_aux_nearestmatch.15.198.381.686.747.930.1052.1113.1174.2811.2982.3.53.78.103.128.782*, %struct.encode_aux_threshmatch.16.199.382.687.748.931.1053.1114.1175.2812.2983.4.54.79.104.129.783*, %struct.encode_aux_pigeonhole.17.200.383.688.749.932.1054.1115.1176.2813.2984.5.55.80.105.130.784*, i32 }
-%struct.encode_aux_nearestmatch.15.198.381.686.747.930.1052.1113.1174.2811.2982.3.53.78.103.128.782 = type { i64*, i64*, i64*, i64*, i64, i64 }
-%struct.encode_aux_threshmatch.16.199.382.687.748.931.1053.1114.1175.2812.2983.4.54.79.104.129.783 = type { float*, i64*, i32, i32 }
-%struct.encode_aux_pigeonhole.17.200.383.688.749.932.1054.1115.1176.2813.2984.5.55.80.105.130.784 = type { float, float, i32, i32, i64*, i64, i64*, i64*, i64* }
-%struct.codebook.43.226.409.714.775.958.1080.1141.1202.2839.2986.7.57.82.107.132.786 = type { i64, i64, i64, %struct.static_codebook.18.201.384.689.750.933.1055.1116.1177.2814.2985.6.56.81.106.131.785*, float*, i32*, i32*, i8*, i32*, i32, i32 }
+%struct.static_codebook.18.201.384.689.750.933.1055.1116.1177.2814.2985.6.56.81.106.131.785 = type { i64, i64, ptr, i32, i64, i64, i32, i32, ptr, ptr, ptr, ptr, i32 }
+%struct.encode_aux_nearestmatch.15.198.381.686.747.930.1052.1113.1174.2811.2982.3.53.78.103.128.782 = type { ptr, ptr, ptr, ptr, i64, i64 }
+%struct.encode_aux_threshmatch.16.199.382.687.748.931.1053.1114.1175.2812.2983.4.54.79.104.129.783 = type { ptr, ptr, i32, i32 }
+%struct.encode_aux_pigeonhole.17.200.383.688.749.932.1054.1115.1176.2813.2984.5.55.80.105.130.784 = type { float, float, i32, i32, ptr, i64, ptr, ptr, ptr }
+%struct.codebook.43.226.409.714.775.958.1080.1141.1202.2839.2986.7.57.82.107.132.786 = type { i64, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
 %struct.vorbis_info_psy.35.218.401.706.767.950.1072.1133.1194.2831.2987.8.58.83.108.133.787 = type { i32, float, float, [3 x float], float, float, float, [17 x float], i32, float, float, float, i32, i32, i32, [3 x [17 x float]], [40 x float], float, i32, i32, i32, i32, double }
 %struct.vorbis_info_psy_global.13.196.379.684.745.928.1050.1111.1172.2809.2988.9.59.84.109.134.788 = type { i32, [7 x float], [7 x float], float, float, float, [15 x i32], [2 x [15 x i32]], [15 x i32], [15 x i32], [2 x [15 x i32]] }
 %struct.bitrate_manager_info.56.239.422.727.788.971.1093.1154.1215.2852.2989.10.60.85.110.135.789 = type { double, double, double, double, double, double, double, double, double }
-%struct.highlevel_encode_setup.58.241.424.729.790.973.1095.1156.1217.2854.2991.12.62.87.112.137.791 = type { i8*, i32, double, double, double, double, i32, i64, i64, i64, i64, double, double, double, i32, i32, double, double, double, double, double, double, [4 x %struct.highlevel_byblocktype.57.240.423.728.789.972.1094.1155.1216.2853.2990.11.61.86.111.136.790] }
+%struct.highlevel_encode_setup.58.241.424.729.790.973.1095.1156.1217.2854.2991.12.62.87.112.137.791 = type { ptr, i32, double, double, double, double, i32, i64, i64, i64, i64, double, double, double, i32, i32, double, double, double, double, double, double, [4 x %struct.highlevel_byblocktype.57.240.423.728.789.972.1094.1155.1216.2853.2990.11.61.86.111.136.790] }
 %struct.highlevel_byblocktype.57.240.423.728.789.972.1094.1155.1216.2853.2990.11.61.86.111.136.790 = type { double, double, double, double }
-%struct.private_state.60.243.426.731.792.975.1097.1158.1219.2856.3003.24.74.99.124.149.803 = type { %struct.envelope_lookup.48.231.414.719.780.963.1085.1146.1207.2844.2996.17.67.92.117.142.796*, [2 x i32], [2 x i8**], [2 x %struct.drft_lookup.51.234.417.722.783.966.1088.1149.1210.2847.2997.18.68.93.118.143.797], i32, i8**, i8**, %struct.vorbis_look_psy.50.233.416.721.782.965.1087.1148.1209.2846.2998.19.69.94.119.144.798*, %struct.vorbis_look_psy_global.44.227.410.715.776.959.1081.1142.1203.2840.2999.20.70.95.120.145.799*, i8*, i8*, i8*, %struct.bitrate_manager_state.49.232.415.720.781.964.1086.1147.1208.2845.3002.23.73.98.123.148.802, i64 }
-%struct.envelope_lookup.48.231.414.719.780.963.1085.1146.1207.2844.2996.17.67.92.117.142.796 = type { i32, i32, i32, float, %struct.mdct_lookup.45.228.411.716.777.960.1082.1143.1204.2841.2993.14.64.89.114.139.793, float*, [7 x %struct.envelope_band.46.229.412.717.778.961.1083.1144.1205.2842.2994.15.65.90.115.140.794], %struct.envelope_filter_state.47.230.413.718.779.962.1084.1145.1206.2843.2995.16.66.91.116.141.795*, i32, i32*, i64, i64, i64, i64 }
-%struct.mdct_lookup.45.228.411.716.777.960.1082.1143.1204.2841.2993.14.64.89.114.139.793 = type { i32, i32, float*, i32*, float }
-%struct.envelope_band.46.229.412.717.778.961.1083.1144.1205.2842.2994.15.65.90.115.140.794 = type { i32, i32, float*, float }
+%struct.private_state.60.243.426.731.792.975.1097.1158.1219.2856.3003.24.74.99.124.149.803 = type { ptr, [2 x i32], [2 x ptr], [2 x %struct.drft_lookup.51.234.417.722.783.966.1088.1149.1210.2847.2997.18.68.93.118.143.797], i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.bitrate_manager_state.49.232.415.720.781.964.1086.1147.1208.2845.3002.23.73.98.123.148.802, i64 }
+%struct.envelope_lookup.48.231.414.719.780.963.1085.1146.1207.2844.2996.17.67.92.117.142.796 = type { i32, i32, i32, float, %struct.mdct_lookup.45.228.411.716.777.960.1082.1143.1204.2841.2993.14.64.89.114.139.793, ptr, [7 x %struct.envelope_band.46.229.412.717.778.961.1083.1144.1205.2842.2994.15.65.90.115.140.794], ptr, i32, ptr, i64, i64, i64, i64 }
+%struct.mdct_lookup.45.228.411.716.777.960.1082.1143.1204.2841.2993.14.64.89.114.139.793 = type { i32, i32, ptr, ptr, float }
+%struct.envelope_band.46.229.412.717.778.961.1083.1144.1205.2842.2994.15.65.90.115.140.794 = type { i32, i32, ptr, float }
 %struct.envelope_filter_state.47.230.413.718.779.962.1084.1145.1206.2843.2995.16.66.91.116.141.795 = type { [17 x float], i32, [15 x float], float, float, i32 }
-%struct.drft_lookup.51.234.417.722.783.966.1088.1149.1210.2847.2997.18.68.93.118.143.797 = type { i32, float*, i32* }
-%struct.vorbis_look_psy.50.233.416.721.782.965.1087.1148.1209.2846.2998.19.69.94.119.144.798 = type { i32, %struct.vorbis_info_psy.35.218.401.706.767.950.1072.1133.1194.2831.2987.8.58.83.108.133.787*, float***, float**, float*, i64*, i64*, i64, i64, i32, i32, i64 }
-%struct.vorbis_look_psy_global.44.227.410.715.776.959.1081.1142.1203.2840.2999.20.70.95.120.145.799 = type { float, i32, %struct.vorbis_info_psy_global.13.196.379.684.745.928.1050.1111.1172.2809.2988.9.59.84.109.134.788*, [2 x [3 x i32]] }
-%struct.bitrate_manager_state.49.232.415.720.781.964.1086.1147.1208.2845.3002.23.73.98.123.148.802 = type { i32*, i32*, i32, i32, i32, i64*, i32, i32, i32, i32, i32, i32, i64*, i64*, i64*, i64, i64, i32, i32, i32, i32, i32, double, %struct.oggpack_buffer.27.210.393.698.759.942.1064.1125.1186.2823.3000.21.71.96.121.146.800*, %struct.ogg_packet.39.222.405.710.771.954.1076.1137.1198.2835.3001.22.72.97.122.147.801* }
-%struct.oggpack_buffer.27.210.393.698.759.942.1064.1125.1186.2823.3000.21.71.96.121.146.800 = type { i64, i32, i8*, i8*, i64 }
-%struct.ogg_packet.39.222.405.710.771.954.1076.1137.1198.2835.3001.22.72.97.122.147.801 = type { i8*, i64, i64, i64, i64, i64 }
+%struct.drft_lookup.51.234.417.722.783.966.1088.1149.1210.2847.2997.18.68.93.118.143.797 = type { i32, ptr, ptr }
+%struct.vorbis_look_psy.50.233.416.721.782.965.1087.1148.1209.2846.2998.19.69.94.119.144.798 = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i32, i32, i64 }
+%struct.vorbis_look_psy_global.44.227.410.715.776.959.1081.1142.1203.2840.2999.20.70.95.120.145.799 = type { float, i32, ptr, [2 x [3 x i32]] }
+%struct.bitrate_manager_state.49.232.415.720.781.964.1086.1147.1208.2845.3002.23.73.98.123.148.802 = type { ptr, ptr, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, i64, i64, i32, i32, i32, i32, i32, double, ptr, ptr }
+%struct.oggpack_buffer.27.210.393.698.759.942.1064.1125.1186.2823.3000.21.71.96.121.146.800 = type { i64, i32, ptr, ptr, i64 }
+%struct.ogg_packet.39.222.405.710.771.954.1076.1137.1198.2835.3001.22.72.97.122.147.801 = type { ptr, i64, i64, i64, i64, i64 }
 
-define void @vorbis_synthesis_blockin(%struct.vorbis_dsp_state.29.212.395.700.761.944.1066.1127.1188.2825.2980.1.51.76.101.126.780* nocapture %v, double* %A) {
+define void @vorbis_synthesis_blockin(ptr nocapture %v, ptr %A) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %vi1 = getelementptr inbounds %struct.vorbis_dsp_state.29.212.395.700.761.944.1066.1127.1188.2825.2980.1.51.76.101.126.780, %struct.vorbis_dsp_state.29.212.395.700.761.944.1066.1127.1188.2825.2980.1.51.76.101.126.780* %v, i64 0, i32 1
-  %tmp = load %struct.vorbis_info.28.211.394.699.760.943.1065.1126.1187.2824.2979.0.50.75.100.125.779*, %struct.vorbis_info.28.211.394.699.760.943.1065.1126.1187.2824.2979.0.50.75.100.125.779** %vi1, align 8
-  %codec_setup = getelementptr inbounds %struct.vorbis_info.28.211.394.699.760.943.1065.1126.1187.2824.2979.0.50.75.100.125.779, %struct.vorbis_info.28.211.394.699.760.943.1065.1126.1187.2824.2979.0.50.75.100.125.779* %tmp, i64 0, i32 7
-  %tmp1 = bitcast i8** %codec_setup to %struct.codec_setup_info.59.242.425.730.791.974.1096.1157.1218.2855.2992.13.63.88.113.138.792**
-  %tmp2 = load %struct.codec_setup_info.59.242.425.730.791.974.1096.1157.1218.2855.2992.13.63.88.113.138.792*, %struct.codec_setup_info.59.242.425.730.791.974.1096.1157.1218.2855.2992.13.63.88.113.138.792** %tmp1, align 8
-  %backend_state = getelementptr inbounds %struct.vorbis_dsp_state.29.212.395.700.761.944.1066.1127.1188.2825.2980.1.51.76.101.126.780, %struct.vorbis_dsp_state.29.212.395.700.761.944.1066.1127.1188.2825.2980.1.51.76.101.126.780* %v, i64 0, i32 19
-  %tmp3 = bitcast i8** %backend_state to %struct.private_state.60.243.426.731.792.975.1097.1158.1219.2856.3003.24.74.99.124.149.803**
-  %tmp4 = load %struct.private_state.60.243.426.731.792.975.1097.1158.1219.2856.3003.24.74.99.124.149.803*, %struct.private_state.60.243.426.731.792.975.1097.1158.1219.2856.3003.24.74.99.124.149.803** %tmp3, align 8
+  %vi1 = getelementptr inbounds %struct.vorbis_dsp_state.29.212.395.700.761.944.1066.1127.1188.2825.2980.1.51.76.101.126.780, ptr %v, i64 0, i32 1
+  %tmp = load ptr, ptr %vi1, align 8
+  %codec_setup = getelementptr inbounds %struct.vorbis_info.28.211.394.699.760.943.1065.1126.1187.2824.2979.0.50.75.100.125.779, ptr %tmp, i64 0, i32 7
+  %tmp2 = load ptr, ptr %codec_setup, align 8
+  %backend_state = getelementptr inbounds %struct.vorbis_dsp_state.29.212.395.700.761.944.1066.1127.1188.2825.2980.1.51.76.101.126.780, ptr %v, i64 0, i32 19
+  %tmp4 = load ptr, ptr %backend_state, align 8
   br i1 false, label %cleanup, label %if.end
 
 if.end:                                           ; preds = %entry.split
-  %sample_count = getelementptr inbounds %struct.private_state.60.243.426.731.792.975.1097.1158.1219.2856.3003.24.74.99.124.149.803, %struct.private_state.60.243.426.731.792.975.1097.1158.1219.2856.3003.24.74.99.124.149.803* %tmp4, i64 0, i32 13
-  store i64 -1, i64* %sample_count, align 8
+  %sample_count = getelementptr inbounds %struct.private_state.60.243.426.731.792.975.1097.1158.1219.2856.3003.24.74.99.124.149.803, ptr %tmp4, i64 0, i32 13
+  store i64 -1, ptr %sample_count, align 8
   br label %cleanup
 
 cleanup:                                          ; preds = %if.end, %entry.split

diff  --git a/polly/test/ScopInfo/invariant-load-instlist.ll b/polly/test/ScopInfo/invariant-load-instlist.ll
index f1c6332679d5b..7f4cf050f0644 100644
--- a/polly/test/ScopInfo/invariant-load-instlist.ll
+++ b/polly/test/ScopInfo/invariant-load-instlist.ll
@@ -8,8 +8,8 @@ target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16
 target triple = "x86_64-pc-windows-msvc19.27.29112"
 
 @b = external dso_local global i32, align 4
- at c = external dso_local global i32*, align 8
- at a = external dso_local local_unnamed_addr global i32**, align 8
+ at c = external dso_local global ptr, align 8
+ at a = external dso_local local_unnamed_addr global ptr, align 8
 
 define void @func() {
 for.cond1.preheader.preheader:
@@ -19,10 +19,10 @@ for.end12:
   br i1 undef, label %for.end12.1, label %for.end12
 
 for.end12.1:
-  %0 = phi i32* [ %1, %for.end12.1 ], [ undef, %for.end12 ]
+  %0 = phi ptr [ %1, %for.end12.1 ], [ undef, %for.end12 ]
   %storemerge26.1 = phi i32 [ %inc14.1, %for.end12.1 ], [ 0, %for.end12 ]
-  %1 = load i32*, i32** @c, align 8
-  store i32 0, i32* %1, align 4
+  %1 = load ptr, ptr @c, align 8
+  store i32 0, ptr %1, align 4
   %inc14.1 = add nuw nsw i32 %storemerge26.1, 1
   %exitcond.1.not = icmp eq i32 %inc14.1, 35
   br i1 %exitcond.1.not, label %for.inc16.1, label %for.end12.1

diff  --git a/polly/test/ScopInfo/invariant-loads-leave-read-only-statements.ll b/polly/test/ScopInfo/invariant-loads-leave-read-only-statements.ll
index 964e9556defbd..b97fe22e076e3 100644
--- a/polly/test/ScopInfo/invariant-loads-leave-read-only-statements.ll
+++ b/polly/test/ScopInfo/invariant-loads-leave-read-only-statements.ll
@@ -19,33 +19,27 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%jl_value_t = type { %jl_value_t* }
+%jl_value_t = type { ptr }
 
-define %jl_value_t* @julia_gemm_22583(%jl_value_t*, %jl_value_t** %tmp1, i32) {
+define ptr @julia_gemm_22583(ptr, ptr %tmp1, i32) {
 top:
   br label %top.split
 
 top.split:                                        ; preds = %top
-  %tmp3 = load %jl_value_t*, %jl_value_t** %tmp1, align 8
-  %tmp4 = bitcast %jl_value_t* %tmp3 to double**
-  %tmp5 = load double*, double** %tmp4, align 8
-  %tmp6 = getelementptr inbounds %jl_value_t, %jl_value_t* %tmp3, i64 3, i32 0
-  %tmp7 = bitcast %jl_value_t** %tmp6 to i64*
-  %tmp8 = load i64, i64* %tmp7, align 8
-  %tmp9 = getelementptr %jl_value_t*, %jl_value_t** %tmp1, i64 1
-  %tmp10 = load %jl_value_t*, %jl_value_t** %tmp9, align 8
-  %tmp11 = bitcast %jl_value_t* %tmp10 to double**
-  %tmp12 = load double*, double** %tmp11, align 8
-  %tmp13 = getelementptr inbounds %jl_value_t, %jl_value_t* %tmp10, i64 3, i32 0
-  %tmp14 = bitcast %jl_value_t** %tmp13 to i64*
-  %tmp15 = load i64, i64* %tmp14, align 8
-  %tmp16 = getelementptr %jl_value_t*, %jl_value_t** %tmp1, i64 2
-  %tmp17 = load %jl_value_t*, %jl_value_t** %tmp16, align 8
-  %tmp18 = bitcast %jl_value_t* %tmp17 to double**
-  %tmp19 = load double*, double** %tmp18, align 8
-  %tmp20 = getelementptr inbounds %jl_value_t, %jl_value_t* %tmp17, i64 3, i32 0
-  %tmp21 = bitcast %jl_value_t** %tmp20 to i64*
-  %tmp22 = load i64, i64* %tmp21, align 8
+  %tmp3 = load ptr, ptr %tmp1, align 8
+  %tmp5 = load ptr, ptr %tmp3, align 8
+  %tmp6 = getelementptr inbounds %jl_value_t, ptr %tmp3, i64 3, i32 0
+  %tmp8 = load i64, ptr %tmp6, align 8
+  %tmp9 = getelementptr ptr, ptr %tmp1, i64 1
+  %tmp10 = load ptr, ptr %tmp9, align 8
+  %tmp12 = load ptr, ptr %tmp10, align 8
+  %tmp13 = getelementptr inbounds %jl_value_t, ptr %tmp10, i64 3, i32 0
+  %tmp15 = load i64, ptr %tmp13, align 8
+  %tmp16 = getelementptr ptr, ptr %tmp1, i64 2
+  %tmp17 = load ptr, ptr %tmp16, align 8
+  %tmp19 = load ptr, ptr %tmp17, align 8
+  %tmp20 = getelementptr inbounds %jl_value_t, ptr %tmp17, i64 3, i32 0
+  %tmp22 = load i64, ptr %tmp20, align 8
   %tmp23 = icmp sgt i64 %tmp8, 0
   %tmp24 = select i1 %tmp23, i64 %tmp8, i64 0
   %tmp25 = add i64 %tmp24, 1
@@ -78,20 +72,20 @@ L.4:                                              ; preds = %L.4.preheader, %L.4
   %tmp31 = add i64 %"#s4.0", -1
   %tmp32 = mul i64 %tmp31, %tmp22
   %tmp33 = add i64 %tmp32, %tmp30
-  %tmp34 = getelementptr double, double* %tmp19, i64 %tmp33
-  %tmp35 = load double, double* %tmp34, align 8
+  %tmp34 = getelementptr double, ptr %tmp19, i64 %tmp33
+  %tmp35 = load double, ptr %tmp34, align 8
   %tmp36 = add i64 %"#s3.0", -1
   %tmp37 = mul i64 %tmp36, %tmp8
   %tmp38 = add i64 %tmp37, %tmp30
-  %tmp39 = getelementptr double, double* %tmp5, i64 %tmp38
-  %tmp40 = load double, double* %tmp39, align 8
+  %tmp39 = getelementptr double, ptr %tmp5, i64 %tmp38
+  %tmp40 = load double, ptr %tmp39, align 8
   %tmp41 = mul i64 %tmp36, %tmp15
   %tmp42 = add i64 %tmp41, %tmp31
-  %tmp43 = getelementptr double, double* %tmp12, i64 %tmp42
-  %tmp44 = load double, double* %tmp43, align 8
+  %tmp43 = getelementptr double, ptr %tmp12, i64 %tmp42
+  %tmp44 = load double, ptr %tmp43, align 8
   %tmp45 = fmul double %tmp40, %tmp44
   %tmp46 = fadd double %tmp35, %tmp45
-  store double %tmp46, double* %tmp34, align 8
+  store double %tmp46, ptr %tmp34, align 8
   %tmp47 = icmp eq i64 %tmp29, %tmp25
   br i1 %tmp47, label %L.7.loopexit, label %L.4
 
@@ -113,5 +107,5 @@ L.11.loopexit:                                    ; preds = %L.9
   br label %L.11
 
 L.11:                                             ; preds = %L.11.loopexit, %top.split
-  ret %jl_value_t* inttoptr (i64 140220477440016 to %jl_value_t*)
+  ret ptr inttoptr (i64 140220477440016 to ptr)
 }

diff  --git a/polly/test/ScopInfo/invariant_load.ll b/polly/test/ScopInfo/invariant_load.ll
index 892e40380f6fa..fcea77e19b856 100644
--- a/polly/test/ScopInfo/invariant_load.ll
+++ b/polly/test/ScopInfo/invariant_load.ll
@@ -11,7 +11,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* noalias %A, i32* noalias %B) {
+define void @f(ptr noalias %A, ptr noalias %B) {
 bb:
   br label %bb1
 
@@ -21,9 +21,9 @@ bb1:                                              ; preds = %bb4, %bb
   br i1 %exitcond, label %bb2, label %bb5
 
 bb2:                                              ; preds = %bb1
-  %tmp = load i32, i32* %B, align 4
-  %tmp3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp, i32* %tmp3, align 4
+  %tmp = load i32, ptr %B, align 4
+  %tmp3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp, ptr %tmp3, align 4
   br label %bb4
 
 bb4:                                              ; preds = %bb2

diff  --git a/polly/test/ScopInfo/invariant_load_access_classes_
diff erent_base_type_same_pointer.ll b/polly/test/ScopInfo/invariant_load_access_classes_
diff erent_base_type_same_pointer.ll
index 2fd67c80746bd..bbf6d69a5fbb5 100644
--- a/polly/test/ScopInfo/invariant_load_access_classes_
diff erent_base_type_same_pointer.ll
+++ b/polly/test/ScopInfo/invariant_load_access_classes_
diff erent_base_type_same_pointer.ll
@@ -32,10 +32,10 @@
 ; CODEGEN:   br label %polly.split_new_and_old
 ;
 ; CODEGEN: polly.preload.begin:
-; CODEGEN-DAG:   %U.load[[f:[.0-9]*]] = load float, float* bitcast (i32* @U to float*)
-; CODEGEN-DAG:   store float %U.load[[f]], float* %U.f.preload.s2a
-; CODEGEN-DAG:   %U.load[[i:[.0-9]*]] = load i32, i32* @U
-; CODEGEN-DAG:   store i32 %U.load[[i]], i32* %U.i.preload.s2a
+; CODEGEN-DAG:   %U.load[[f:[.0-9]*]] = load float, ptr @U
+; CODEGEN-DAG:   store float %U.load[[f]], ptr %U.f.preload.s2a
+; CODEGEN-DAG:   %U.load[[i:[.0-9]*]] = load i32, ptr @U
+; CODEGEN-DAG:   store i32 %U.load[[i]], ptr %U.i.preload.s2a
 ;
 ; CODEGEN:     polly.merge_new_and_old:
 ; CODEGEN-NOT:   merge = phi
@@ -50,7 +50,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @U = common global i32 0, align 4
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -60,13 +60,12 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %U.i = load i32, i32* @U, align 4
-  %U.cast = bitcast i32 *@U to float*
-  %U.f = load float, float* %U.cast, align 4
+  %U.i = load i32, ptr @U, align 4
+  %U.f = load float, ptr @U, align 4
   %conv = fptosi float %U.f to i32
   %add = add nsw i32 %U.i, %conv
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %add, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/invariant_load_access_classes_
diff erent_base_type_same_pointer_escaping.ll b/polly/test/ScopInfo/invariant_load_access_classes_
diff erent_base_type_same_pointer_escaping.ll
index 7fbf7f7d27eb6..011c2fe3d549e 100644
--- a/polly/test/ScopInfo/invariant_load_access_classes_
diff erent_base_type_same_pointer_escaping.ll
+++ b/polly/test/ScopInfo/invariant_load_access_classes_
diff erent_base_type_same_pointer_escaping.ll
@@ -37,18 +37,18 @@
 ; CODEGEN:   br label %polly.split_new_and_old
 ;
 ; CODEGEN: polly.preload.begin:
-; CODEGEN-DAG:   %U.load[[f:[.0-9]*]] = load float, float* bitcast (i32* @U to float*)
-; CODEGEN-DAG:   store float %U.load[[f]], float* %U.f.preload.s2a
-; CODEGEN-DAG:   %U.load[[i:[.0-9]*]] = load i32, i32* @U
-; CODEGEN-DAG:   store i32 %U.load[[i]], i32* %U.i.preload.s2a
+; CODEGEN-DAG:   %U.load[[f:[.0-9]*]] = load float, ptr @U
+; CODEGEN-DAG:   store float %U.load[[f]], ptr %U.f.preload.s2a
+; CODEGEN-DAG:   %U.load[[i:[.0-9]*]] = load i32, ptr @U
+; CODEGEN-DAG:   store i32 %U.load[[i]], ptr %U.i.preload.s2a
 ;
 ; CODEGEN:     polly.merge_new_and_old:
 ; CODEGEN-DAG:   %U.f.merge = phi float [ %U.f.final_reload, %polly.exiting ], [ %U.f, %do.cond ]
 ; CODEGEN-DAG:   %U.i.merge = phi i32 [ %U.i.final_reload, %polly.exiting ], [ %U.i, %do.cond ]
 ;
 ; CODEGEN: polly.loop_exit:
-; CODEGEN-DAG:   %U.f.final_reload = load float, float* %U.f.preload.s2a
-; CODEGEN-DAG:   %U.i.final_reload = load i32, i32* %U.i.preload.s2a
+; CODEGEN-DAG:   %U.f.final_reload = load float, ptr %U.f.preload.s2a
+; CODEGEN-DAG:   %U.i.final_reload = load i32, ptr %U.i.preload.s2a
 ;
 ; CODEGEN: polly.stmt.do.body:
 ; CODEGEN:   %p_add = add nsw i32 %U.load[[i]], %p_conv
@@ -57,19 +57,18 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @U = common global i32 0, align 4
 
-define i32 @f(i32* %A) {
+define i32 @f(ptr %A) {
 entry:
   br label %do.body
 
 do.body:                                          ; preds = %do.cond, %entry
   %indvars.iv = phi i64 [ %indvars.iv.next, %do.cond ], [ 0, %entry ]
-  %U.i = load i32, i32* @U, align 4
-  %U.cast = bitcast i32 *@U to float*
-  %U.f = load float, float* %U.cast, align 4
+  %U.i = load i32, ptr @U, align 4
+  %U.f = load float, ptr @U, align 4
   %conv = fptosi float %U.f to i32
   %add = add nsw i32 %U.i, %conv
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %add, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %add, ptr %arrayidx, align 4
   br label %do.cond
 
 do.cond:                                          ; preds = %do.body

diff  --git a/polly/test/ScopInfo/invariant_load_addrec_sum.ll b/polly/test/ScopInfo/invariant_load_addrec_sum.ll
index f5712770ad644..09b158d342edb 100644
--- a/polly/test/ScopInfo/invariant_load_addrec_sum.ll
+++ b/polly/test/ScopInfo/invariant_load_addrec_sum.ll
@@ -13,7 +13,7 @@
 ; CHECK:                [y, p_1_loaded_from_j] -> { Stmt_for_body[i0] -> MemRef_p[p_1_loaded_from_j + i0] };
 
 
-define void @a(i32 %y, i32* nocapture %p, i32* nocapture readonly %j) local_unnamed_addr #0 {
+define void @a(i32 %y, ptr nocapture %p, ptr nocapture readonly %j) local_unnamed_addr #0 {
 entry:
   br label %entry.split
 
@@ -23,11 +23,11 @@ entry.split:
 
 for.body:
   %i.024 = phi i32 [ %inc, %for.body ], [ 0, %entry.split ]
-  %0 = load i32, i32* %j, align 4
+  %0 = load i32, ptr %j, align 4
   %add = add nsw i32 %0, %i.024
   %idxprom = sext i32 %add to i64
-  %arrayidx = getelementptr inbounds i32, i32* %p, i64 %idxprom
-  store i32 %i.024, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %p, i64 %idxprom
+  store i32 %i.024, ptr %arrayidx, align 4
   %inc = add nuw nsw i32 %i.024, 1
   %exitcond26 = icmp eq i32 %inc, 10000
   br i1 %exitcond26, label %if.end, label %for.body
@@ -35,11 +35,11 @@ for.body:
 for.body5:
   %i1.023 = phi i32 [ %inc10, %for.body5 ], [ 0, %entry.split ]
   %mul = shl nsw i32 %i1.023, 1
-  %1 = load i32, i32* %j, align 4
+  %1 = load i32, ptr %j, align 4
   %add6 = add nsw i32 %1, %i1.023
   %idxprom7 = sext i32 %add6 to i64
-  %arrayidx8 = getelementptr inbounds i32, i32* %p, i64 %idxprom7
-  store i32 %mul, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %p, i64 %idxprom7
+  store i32 %mul, ptr %arrayidx8, align 4
   %inc10 = add nuw nsw i32 %i1.023, 1
   %exitcond = icmp eq i32 %inc10, 10000
   br i1 %exitcond, label %if.end, label %for.body5

diff  --git a/polly/test/ScopInfo/invariant_load_base_pointer.ll b/polly/test/ScopInfo/invariant_load_base_pointer.ll
index edc4b7880f8d2..ddf11d892adbe 100644
--- a/polly/test/ScopInfo/invariant_load_base_pointer.ll
+++ b/polly/test/ScopInfo/invariant_load_base_pointer.ll
@@ -11,7 +11,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32** %BPLoc) {
+define void @f(ptr %BPLoc) {
 bb:
   br label %bb1
 
@@ -21,9 +21,9 @@ bb1:                                              ; preds = %bb4, %bb
   br i1 %exitcond, label %bb2, label %bb5
 
 bb2:                                              ; preds = %bb1
-  %tmp = load i32*, i32** %BPLoc, align 8
-  %tmp3 = getelementptr inbounds i32, i32* %tmp, i64 %indvars.iv
-  store i32 0, i32* %tmp3, align 4
+  %tmp = load ptr, ptr %BPLoc, align 8
+  %tmp3 = getelementptr inbounds i32, ptr %tmp, i64 %indvars.iv
+  store i32 0, ptr %tmp3, align 4
   br label %bb4
 
 bb4:                                              ; preds = %bb2

diff  --git a/polly/test/ScopInfo/invariant_load_base_pointer_conditional.ll b/polly/test/ScopInfo/invariant_load_base_pointer_conditional.ll
index 863724664ef8f..07f2c3768b0ad 100644
--- a/polly/test/ScopInfo/invariant_load_base_pointer_conditional.ll
+++ b/polly/test/ScopInfo/invariant_load_base_pointer_conditional.ll
@@ -14,7 +14,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32** %BPLoc, i32* %A, i32 %N) {
+define void @f(ptr %BPLoc, ptr %A, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   br label %bb1
@@ -29,14 +29,14 @@ bb3:                                              ; preds = %bb1
   br i1 %tmp4, label %bb5, label %bb8
 
 bb5:                                              ; preds = %bb3
-  %tmp6 = load i32*, i32** %BPLoc, align 8
-  %tmp7 = getelementptr inbounds i32, i32* %tmp6, i64 %indvars.iv
-  store i32 0, i32* %tmp7, align 4
+  %tmp6 = load ptr, ptr %BPLoc, align 8
+  %tmp7 = getelementptr inbounds i32, ptr %tmp6, i64 %indvars.iv
+  store i32 0, ptr %tmp7, align 4
   br label %bb10
 
 bb8:                                              ; preds = %bb3
-  %tmp9 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 0, i32* %tmp9, align 4
+  %tmp9 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 0, ptr %tmp9, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb8, %bb5

diff  --git a/polly/test/ScopInfo/invariant_load_base_pointer_in_conditional.ll b/polly/test/ScopInfo/invariant_load_base_pointer_in_conditional.ll
index ba6c905347b8f..d66d718d492ae 100644
--- a/polly/test/ScopInfo/invariant_load_base_pointer_in_conditional.ll
+++ b/polly/test/ScopInfo/invariant_load_base_pointer_in_conditional.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %BP, i32* %A, i32 %N) {
+define void @f(ptr %BP, ptr %A, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   br label %bb1
@@ -30,14 +30,14 @@ bb3:                                              ; preds = %bb1
   br i1 %tmp4, label %bb5, label %bb8
 
 bb5:                                              ; preds = %bb3
-  %tmp9a = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %inv = load i32, i32 *%BP
-  store i32 %inv, i32* %tmp9a, align 4
+  %tmp9a = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %inv = load i32, ptr %BP
+  store i32 %inv, ptr %tmp9a, align 4
   br label %bb10
 
 bb8:                                              ; preds = %bb3
-  %tmp9b = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 0, i32* %tmp9b, align 4
+  %tmp9b = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 0, ptr %tmp9b, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb8, %bb5

diff  --git a/polly/test/ScopInfo/invariant_load_branch_condition.ll b/polly/test/ScopInfo/invariant_load_branch_condition.ll
index 0e75d5c2b739d..4f49d2969d865 100644
--- a/polly/test/ScopInfo/invariant_load_branch_condition.ll
+++ b/polly/test/ScopInfo/invariant_load_branch_condition.ll
@@ -24,21 +24,21 @@
 ; CHECK-NEXT:             [val] -> { Stmt_loop[i0] -> MemRef_X[0] };
 ; CHECK-NEXT: }
 
-define void @foo(i1* %ptr, float* %X) {
+define void @foo(ptr %ptr, ptr %X) {
 entry:
   br label %next
 
 next:
-  %val = load i1, i1* %ptr
+  %val = load i1, ptr %ptr
   br i1 %val, label %a, label %loop
 
 a:
-  store float 1.0, float* %X
+  store float 1.0, ptr %X
   br label %merge
 
 loop:
   %indvar = phi i64 [0, %next], [%indvar.next, %loop]
-  store float 1.0, float* %X
+  store float 1.0, ptr %X
   %indvar.next = add nsw i64 %indvar, 1
   %cmp = icmp sle i64 %indvar, 1024
   br i1 %cmp, label %loop, label %merge

diff  --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs.ll
index 905cf47610bd6..c6a7faf2e3553 100644
--- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs.ll
+++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs.ll
@@ -17,7 +17,7 @@
 ; CHECK-NEXT:       MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                { Stmt_body2[i0] -> MemRef_baseB[0] };
 
-define void @foo(float** %A) {
+define void @foo(ptr %A) {
 start:
   br label %loop
 
@@ -28,13 +28,13 @@ loop:
   br i1 %icmp, label %body1, label %exit
 
 body1:
-  %baseA = load float*, float** %A
-  store float 42.0, float* %baseA
+  %baseA = load ptr, ptr %A
+  store float 42.0, ptr %baseA
   br label %body2
 
 body2:
-  %baseB = load float*, float** %A
-  store float 42.0, float* %baseB
+  %baseB = load ptr, ptr %A
+  store float 42.0, ptr %baseB
   br label %latch
 
 latch:

diff  --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_2.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_2.ll
index abcc6e0e1e659..921dd4fbde5c6 100644
--- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_2.ll
+++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_2.ll
@@ -47,7 +47,7 @@
 ; CHECK-NEXT:                 { Stmt_body4[i0] -> MemRef_ptr[] };
 ; CHECK-NEXT:     }
 
-define void @foo(float** %A, float** %X) {
+define void @foo(ptr %A, ptr %X) {
 start:
   br label %loop
 
@@ -58,28 +58,28 @@ loop:
   br i1 %icmp, label %body0, label %exit
 
 body0:
-  %ptr = load float*, float** %A
-  store float* %ptr, float** %X
+  %ptr = load ptr, ptr %A
+  store ptr %ptr, ptr %X
   br label %body1
 
 body1:
-  %baseA = load float*, float** %A
-  store float 42.0, float* %baseA
+  %baseA = load ptr, ptr %A
+  store float 42.0, ptr %baseA
   br label %body2
 
 body2:
-  %ptr2 = load float*, float** %A
-  store float* %ptr, float** %X
+  %ptr2 = load ptr, ptr %A
+  store ptr %ptr, ptr %X
   br label %body3
 
 body3:
-  %baseB = load float*, float** %A
-  store float 42.0, float* %baseB
+  %baseB = load ptr, ptr %A
+  store float 42.0, ptr %baseB
   br label %body4
 
 body4:
-  %ptr3 = load float*, float** %A
-  store float* %ptr, float** %X
+  %ptr3 = load ptr, ptr %A
+  store ptr %ptr, ptr %X
   br label %latch
 
 latch:

diff  --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_3.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_3.ll
index c0310325b705e..c15d11ca865d3 100644
--- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_3.ll
+++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_3.ll
@@ -28,7 +28,7 @@
 ; CHECK-NEXT:       { Stmt_body2[i0] -> MemRef_baseB[0] };
 
 
-define void @foo(float** %A) {
+define void @foo(ptr %A) {
 start:
   br label %loop
 
@@ -39,14 +39,14 @@ loop:
   br i1 %icmp, label %body1, label %exit
 
 body1:
-  %baseA = load float*, float** %A
-  store float 42.0, float* %baseA
+  %baseA = load ptr, ptr %A
+  store float 42.0, ptr %baseA
   %cmp = icmp slt i64 %indvar.next, 512
   br i1 %cmp, label %body2, label %latch
 
 body2:
-  %baseB = load float*, float** %A
-  store float 42.0, float* %baseB
+  %baseB = load ptr, ptr %A
+  store float 42.0, ptr %baseB
   br label %latch
 
 latch:

diff  --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4.ll
index 0a454992d1ba5..0495a330792c5 100644
--- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4.ll
+++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4.ll
@@ -22,7 +22,7 @@
 ; CHECK-NEXT: }
 
 
-define void @foo(float** %A, i64 %n, i64 %m) {
+define void @foo(ptr %A, i64 %n, i64 %m) {
 start:
   br label %loop
 
@@ -33,16 +33,16 @@ loop:
   br i1 %icmp, label %body1, label %exit
 
 body1:
-  %baseB = load float*, float** %A
-  store float 42.0, float* %baseB
+  %baseB = load ptr, ptr %A
+  store float 42.0, ptr %baseB
   br label %body2
 
 body2:
-  %baseA = load float*, float** %A
+  %baseA = load ptr, ptr %A
   %offsetA = mul i64 %indvar, %n
   %offsetA2 = add i64 %offsetA, %indvar
-  %ptrA = getelementptr float, float* %baseA, i64 %offsetA2
-  store float 42.0, float* %ptrA
+  %ptrA = getelementptr float, ptr %baseA, i64 %offsetA2
+  store float 42.0, ptr %ptrA
   br label %latch
 
 latch:

diff  --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4b.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4b.ll
index 3734527f73238..9144fcf186c37 100644
--- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4b.ll
+++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4b.ll
@@ -20,7 +20,7 @@
 ; CHECK-NEXT:         [m, n] -> { Stmt_body2[i0] -> MemRef_baseA[i0, i0] };
 ; CHECK-NEXT: }
 
-define void @foo(float** %A, i64 %n, i64 %m) {
+define void @foo(ptr %A, i64 %n, i64 %m) {
 start:
   br label %loop
 
@@ -31,19 +31,19 @@ loop:
   br i1 %icmp, label %body1, label %exit
 
 body1:
-  %baseB = load float*, float** %A
+  %baseB = load ptr, ptr %A
   %offsetB = mul i64 %indvar, %m
   %offsetB2 = add i64 %offsetB, %indvar
-  %ptrB = getelementptr float, float* %baseB, i64 %offsetB2
-  store float 42.0, float* %ptrB
+  %ptrB = getelementptr float, ptr %baseB, i64 %offsetB2
+  store float 42.0, ptr %ptrB
   br label %body2
 
 body2:
-  %baseA = load float*, float** %A
+  %baseA = load ptr, ptr %A
   %offsetA = mul i64 %indvar, %n
   %offsetA2 = add i64 %offsetA, %indvar
-  %ptrA = getelementptr float, float* %baseA, i64 %offsetA2
-  store float 42.0, float* %ptrA
+  %ptrA = getelementptr float, ptr %baseA, i64 %offsetA2
+  store float 42.0, ptr %ptrA
   br label %latch
 
 latch:

diff  --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4c.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4c.ll
index 7fa375d6c1d23..aefacff6b46fd 100644
--- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4c.ll
+++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4c.ll
@@ -21,7 +21,7 @@
 ; CHECK-NEXT:             { Stmt_body2[i0] -> MemRef_baseA[0] };
 ; CHECK-NEXT: }
 
-define void @foo(float** %A, i64 %n, i64 %m) {
+define void @foo(ptr %A, i64 %n, i64 %m) {
 start:
   br label %loop
 
@@ -32,14 +32,13 @@ loop:
   br i1 %icmp, label %body1, label %exit
 
 body1:
-  %baseB = load float*, float** %A
-  store float 42.0, float* %baseB
+  %baseB = load ptr, ptr %A
+  store float 42.0, ptr %baseB
   br label %body2
 
 body2:
-  %baseA = load float*, float** %A
-  %ptrcast = bitcast float* %baseA to i64*
-  store i64 42, i64* %ptrcast
+  %baseA = load ptr, ptr %A
+  store i64 42, ptr %baseA
   br label %latch
 
 latch:

diff  --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_5.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_5.ll
index d137b919bf503..ecc0c0a230142 100644
--- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_5.ll
+++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_5.ll
@@ -42,7 +42,7 @@
 ; CHECK-NEXT:             { Stmt_body2[i0] -> MemRef_baseA2[0] };
 ; CHECK-NEXT: }
 
-define void @foo(float** %A, float* %B) {
+define void @foo(ptr %A, ptr %B) {
 start:
   br label %loop
 
@@ -53,17 +53,17 @@ loop:
   br i1 %icmp, label %body1, label %exit
 
 body1:
-  %baseA1 = load float*, float** %A
-  %ptr = getelementptr inbounds float, float* %baseA1, i64 %indvar
-  %v0 = load float, float* %ptr
-  %v1 = load float, float* %baseA1
-  store float %v0, float* %B
-  store float %v1, float* %B
+  %baseA1 = load ptr, ptr %A
+  %ptr = getelementptr inbounds float, ptr %baseA1, i64 %indvar
+  %v0 = load float, ptr %ptr
+  %v1 = load float, ptr %baseA1
+  store float %v0, ptr %B
+  store float %v1, ptr %B
   br label %body2
 
 body2:
-  %baseA2 = load float*, float** %A
-  store float undef, float* %baseA2
+  %baseA2 = load ptr, ptr %A
+  store float undef, ptr %baseA2
   br label %body3
 
 body3:

diff  --git a/polly/test/ScopInfo/invariant_load_complex_condition.ll b/polly/test/ScopInfo/invariant_load_complex_condition.ll
index 7149b50a1d209..e721c222db5f8 100644
--- a/polly/test/ScopInfo/invariant_load_complex_condition.ll
+++ b/polly/test/ScopInfo/invariant_load_complex_condition.ll
@@ -3,7 +3,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.IP = type { i32****, i32***, %struct.P, %struct.S, %struct.m }
+%struct.IP = type { ptr, ptr, %struct.P, %struct.S, %struct.m }
 %struct.P = type { i32 }
 %struct.S = type { i32 }
 %struct.D = type { i32 }
@@ -32,7 +32,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; CHECK-NEXT:             [block_y, block_x] -> { Stmt_entry_split[] -> MemRef0[] };
 ; CHECK-NEXT: }
 
- at img = external global %struct.IP*, align 8
+ at img = external global ptr, align 8
 
 ; Function Attrs: nounwind uwtable
 define void @dct_luma(i32 %block_x, i32 %block_y) #0 {
@@ -47,15 +47,13 @@ entry.split:                                      ; preds = %entry
   %rem5 = srem i32 %div, 2
   %add6 = add nsw i32 %mul4, %rem5
   %idxprom = sext i32 %add6 to i64
-  %0 = load %struct.IP*, %struct.IP** @img, align 8
-  %cofAC = getelementptr inbounds %struct.IP, %struct.IP* %0, i32 0, i32 0
-  %1 = load i32****, i32***** %cofAC, align 8
-  %arrayidx = getelementptr inbounds i32***, i32**** %1, i64 0
-  %2 = load i32***, i32**** %arrayidx, align 8
-  %arrayidx8 = getelementptr inbounds i32**, i32*** %2, i64 %idxprom
-  %3 = load i32**, i32*** %arrayidx8, align 8
-  %mb_data = getelementptr inbounds %struct.IP, %struct.IP* %0, i64 0, i32 4
-  %4 = load %struct.m, %struct.m* %mb_data, align 8
+  %0 = load ptr, ptr @img, align 8
+  %1 = load ptr, ptr %0, align 8
+  %2 = load ptr, ptr %1, align 8
+  %arrayidx8 = getelementptr inbounds ptr, ptr %2, i64 %idxprom
+  %3 = load ptr, ptr %arrayidx8, align 8
+  %mb_data = getelementptr inbounds %struct.IP, ptr %0, i64 0, i32 4
+  %4 = load %struct.m, ptr %mb_data, align 8
   br i1 false, label %land.rhs, label %land.end
 
 land.rhs:                                         ; preds = %entry.split

diff  --git a/polly/test/ScopInfo/invariant_load_condition.ll b/polly/test/ScopInfo/invariant_load_condition.ll
index 5992bec42b30a..84546984709ed 100644
--- a/polly/test/ScopInfo/invariant_load_condition.ll
+++ b/polly/test/ScopInfo/invariant_load_condition.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %C) {
+define void @f(ptr %A, ptr %C) {
 bb:
   br label %bb1
 
@@ -22,13 +22,13 @@ bb1:                                              ; preds = %bb7, %bb
   br i1 %exitcond, label %bb2, label %bb8
 
 bb2:                                              ; preds = %bb1
-  %tmp = load i32, i32* %C, align 4
+  %tmp = load i32, ptr %C, align 4
   %tmp3 = icmp eq i32 %tmp, 0
   br i1 %tmp3, label %bb6, label %bb4
 
 bb4:                                              ; preds = %bb2
-  %tmp5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 0, i32* %tmp5, align 4
+  %tmp5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 0, ptr %tmp5, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2, %bb4

diff  --git a/polly/test/ScopInfo/invariant_load_dereferenceable.ll b/polly/test/ScopInfo/invariant_load_dereferenceable.ll
index a9f62fba1f885..adba32d8d463c 100644
--- a/polly/test/ScopInfo/invariant_load_dereferenceable.ll
+++ b/polly/test/ScopInfo/invariant_load_dereferenceable.ll
@@ -17,7 +17,7 @@
 
 ; CHECK-NOT: Function: foo_undereferanceable
 
-define void @foo_dereferanceable(double* %A, double* %B, i64* dereferenceable(8) align 8 %sizeA_ptr,
+define void @foo_dereferanceable(ptr %A, ptr %B, ptr dereferenceable(8) align 8 %sizeA_ptr,
 		i32 %lb.i, i32 %lb.j, i32 %ub.i, i32 %ub.j) {
 entry:
 	br label %for.i
@@ -46,11 +46,11 @@ stmt:
 	%sext.i = sext i32 %indvar.i to i64
 	%sext.j = sext i32 %indvar.j to i64
 
-	%sizeA = load i64, i64* %sizeA_ptr
+	%sizeA = load i64, ptr %sizeA_ptr
 	%prodA = mul i64 %sext.j, %sizeA
 	%offsetA = add i64 %sext.i, %prodA
-	%ptrA = getelementptr double, double* %A, i64 %offsetA
-	store double 42.0, double* %ptrA
+	%ptrA = getelementptr double, ptr %A, i64 %offsetA
+	store double 42.0, ptr %ptrA
 
 	br label %for.latch.j
 
@@ -64,7 +64,7 @@ exit:
 	ret void
 }
 
-define void @foo_undereferanceable(double* %A, double* %B, i64* %sizeA_ptr) {
+define void @foo_undereferanceable(ptr %A, ptr %B, ptr %sizeA_ptr) {
 entry:
 	br label %for.i
 
@@ -92,11 +92,11 @@ stmt:
 	%sext.i = sext i32 %indvar.i to i64
 	%sext.j = sext i32 %indvar.j to i64
 
-	%sizeA = load i64, i64* %sizeA_ptr
+	%sizeA = load i64, ptr %sizeA_ptr
 	%prodA = mul i64 %sext.j, %sizeA
 	%offsetA = add i64 %sext.i, %prodA
-	%ptrA = getelementptr double, double* %A, i64 %offsetA
-	store double 42.0, double* %ptrA
+	%ptrA = getelementptr double, ptr %A, i64 %offsetA
+	store double 42.0, ptr %ptrA
 
 	br label %for.latch.j
 

diff  --git a/polly/test/ScopInfo/invariant_load_distinct_parameter_valuations.ll b/polly/test/ScopInfo/invariant_load_distinct_parameter_valuations.ll
index e0944f70be346..60b4a1daa824b 100644
--- a/polly/test/ScopInfo/invariant_load_distinct_parameter_valuations.ll
+++ b/polly/test/ScopInfo/invariant_load_distinct_parameter_valuations.ll
@@ -24,7 +24,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @encode_residual_fixed(i32* %res, i32* %smp, i32 %n, i32 %order) {
+define void @encode_residual_fixed(ptr %res, ptr %smp, i32 %n, i32 %order) {
 bb:
   br label %.split
 
@@ -37,12 +37,12 @@ bb:
 bb1:                                              ; preds = %.split
   %tmp = add nsw i32 %order, -1
   %tmp2 = sext i32 %tmp to i64
-  %tmp3 = getelementptr inbounds i32, i32* %smp, i64 %tmp2
-  %tmp4 = load i32, i32* %tmp3, align 4
+  %tmp3 = getelementptr inbounds i32, ptr %smp, i64 %tmp2
+  %tmp4 = load i32, ptr %tmp3, align 4
   %tmp5 = add nsw i32 %order, -2
   %tmp6 = sext i32 %tmp5 to i64
-  %tmp7 = getelementptr inbounds i32, i32* %smp, i64 %tmp6
-  %tmp8 = load i32, i32* %tmp7, align 4
+  %tmp7 = getelementptr inbounds i32, ptr %smp, i64 %tmp6
+  %tmp8 = load i32, ptr %tmp7, align 4
   %tmp9 = sub nsw i32 %tmp4, %tmp8
   %tmp10 = icmp slt i32 %order, %n
   br i1 %tmp10, label %.lr.ph, label %.loopexit
@@ -54,8 +54,8 @@ bb1:                                              ; preds = %.split
 bb12:                                             ; preds = %bb12, %.lr.ph
   %indvars.iv = phi i64 [ %tmp11, %.lr.ph ], [ %indvars.iv.next, %bb12 ]
   %i.03 = phi i32 [ %order, %.lr.ph ], [ %tmp14, %bb12 ]
-  %tmp13 = getelementptr inbounds i32, i32* %res, i64 %indvars.iv
-  store i32 %tmp9, i32* %tmp13, align 4
+  %tmp13 = getelementptr inbounds i32, ptr %res, i64 %indvars.iv
+  store i32 %tmp9, ptr %tmp13, align 4
   %tmp14 = add nsw i32 %i.03, 2
   %tmp15 = icmp slt i32 %tmp14, %n
   %indvars.iv.next = add nsw i64 %indvars.iv, 2
@@ -64,12 +64,12 @@ bb12:                                             ; preds = %bb12, %.lr.ph
 bb16:                                             ; preds = %.split
   %tmp17 = add nsw i32 %order, -1
   %tmp18 = sext i32 %tmp17 to i64
-  %tmp19 = getelementptr inbounds i32, i32* %smp, i64 %tmp18
-  %tmp20 = load i32, i32* %tmp19, align 4
+  %tmp19 = getelementptr inbounds i32, ptr %smp, i64 %tmp18
+  %tmp20 = load i32, ptr %tmp19, align 4
   %tmp21 = add nsw i32 %order, -2
   %tmp22 = sext i32 %tmp21 to i64
-  %tmp23 = getelementptr inbounds i32, i32* %smp, i64 %tmp22
-  %tmp24 = load i32, i32* %tmp23, align 4
+  %tmp23 = getelementptr inbounds i32, ptr %smp, i64 %tmp22
+  %tmp24 = load i32, ptr %tmp23, align 4
   %tmp25 = sub nsw i32 %tmp20, %tmp24
   %tmp26 = icmp slt i32 %order, %n
   br i1 %tmp26, label %.lr.ph5, label %.loopexit2
@@ -81,8 +81,8 @@ bb16:                                             ; preds = %.split
 bb28:                                             ; preds = %bb28, %.lr.ph5
   %indvars.iv6 = phi i64 [ %tmp27, %.lr.ph5 ], [ %indvars.iv.next7, %bb28 ]
   %i.14 = phi i32 [ %order, %.lr.ph5 ], [ %tmp30, %bb28 ]
-  %tmp29 = getelementptr inbounds i32, i32* %res, i64 %indvars.iv6
-  store i32 %tmp25, i32* %tmp29, align 4
+  %tmp29 = getelementptr inbounds i32, ptr %res, i64 %indvars.iv6
+  store i32 %tmp25, ptr %tmp29, align 4
   %tmp30 = add nsw i32 %i.14, 2
   %tmp31 = icmp slt i32 %tmp30, %n
   %indvars.iv.next7 = add nsw i64 %indvars.iv6, 2
@@ -101,8 +101,8 @@ bb28:                                             ; preds = %bb28, %.lr.ph5
   br label %bb32
 
 bb32:                                             ; preds = %.loopexit2, %.loopexit, %.split
-  %tmp33 = getelementptr inbounds i32, i32* %res, i64 2
-  %tmp34 = load i32, i32* %tmp33, align 4
+  %tmp33 = getelementptr inbounds i32, ptr %res, i64 2
+  %tmp34 = load i32, ptr %tmp33, align 4
   %tmp35 = icmp eq i32 %tmp34, 5
   br i1 %tmp35, label %bb37, label %bb36
 

diff  --git a/polly/test/ScopInfo/invariant_load_in_non_affine.ll b/polly/test/ScopInfo/invariant_load_in_non_affine.ll
index 410b7407f21c5..d00bc2d642e0d 100644
--- a/polly/test/ScopInfo/invariant_load_in_non_affine.ll
+++ b/polly/test/ScopInfo/invariant_load_in_non_affine.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, float* %B, i64* %p) {
+define void @foo(ptr %A, ptr %B, ptr %p) {
 bb:
   br label %bb2
 
@@ -30,21 +30,21 @@ bb4:                                              ; preds = %bb18, %bb3
   br i1 %exitcond, label %bb5, label %bb20
 
 bb5:                                              ; preds = %bb4
-  %tmp = getelementptr inbounds float, float* %B, i64 %i.0
-  %tmp6 = load float, float* %tmp, align 4
+  %tmp = getelementptr inbounds float, ptr %B, i64 %i.0
+  %tmp6 = load float, ptr %tmp, align 4
   %tmp7 = fcmp une float %tmp6, 0.000000e+00
   br i1 %tmp7, label %bb8, label %bb17
 
 bb8:                                              ; preds = %bb5
   %tmp9 = mul nuw nsw i64 %i.0, %j.0
   %tmp10 = sitofp i64 %tmp9 to float
-  %tmp11 = load i64, i64* %p, align 8
+  %tmp11 = load i64, ptr %p, align 8
   %tmp12 = mul nsw i64 %i.0, %tmp11
   %tmp13 = add nsw i64 %tmp12, %j.0
-  %tmp14 = getelementptr inbounds float, float* %A, i64 %tmp13
-  %tmp15 = load float, float* %tmp14, align 4
+  %tmp14 = getelementptr inbounds float, ptr %A, i64 %tmp13
+  %tmp15 = load float, ptr %tmp14, align 4
   %tmp16 = fadd float %tmp15, %tmp10
-  store float %tmp16, float* %tmp14, align 4
+  store float %tmp16, ptr %tmp14, align 4
   br label %bb17
 
 bb17:                                             ; preds = %bb8, %bb5

diff  --git a/polly/test/ScopInfo/invariant_load_loop_ub.ll b/polly/test/ScopInfo/invariant_load_loop_ub.ll
index e8c4e6dc8d37c..856b6e4dd5088 100644
--- a/polly/test/ScopInfo/invariant_load_loop_ub.ll
+++ b/polly/test/ScopInfo/invariant_load_loop_ub.ll
@@ -12,20 +12,20 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %UB) {
+define void @f(ptr %A, ptr %UB) {
 bb:
   br label %bb1
 
 bb1:                                              ; preds = %bb6, %bb
   %indvars.iv = phi i64 [ %indvars.iv.next, %bb6 ], [ 0, %bb ]
-  %tmp = load i32, i32* %UB, align 4
+  %tmp = load i32, ptr %UB, align 4
   %tmp2 = sext i32 %tmp to i64
   %tmp3 = icmp slt i64 %indvars.iv, %tmp2
   br i1 %tmp3, label %bb4, label %bb7
 
 bb4:                                              ; preds = %bb1
-  %tmp5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 0, i32* %tmp5, align 4
+  %tmp5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 0, ptr %tmp5, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb4

diff  --git a/polly/test/ScopInfo/invariant_load_ptr_ptr_noalias.ll b/polly/test/ScopInfo/invariant_load_ptr_ptr_noalias.ll
index a588a5d9b9945..69463d420aca7 100644
--- a/polly/test/ScopInfo/invariant_load_ptr_ptr_noalias.ll
+++ b/polly/test/ScopInfo/invariant_load_ptr_ptr_noalias.ll
@@ -13,14 +13,14 @@
 ; CHECK: }
 ;
 ; CHECK: Arrays {
-; CHECK:   i32** MemRef_A[*];
-; CHECK:   i32* MemRef_tmp3[*]; [BasePtrOrigin: MemRef_A]
+; CHECK:   ptr MemRef_A[*];
+; CHECK:   ptr MemRef_tmp3[*]; [BasePtrOrigin: MemRef_A]
 ; CHECK:   i32 MemRef_tmp5[*]; [BasePtrOrigin: MemRef_tmp3]
 ; CHECK: }
 ;
 ; CHECK: Arrays (Bounds as pw_affs) {
-; CHECK:   i32** MemRef_A[*];
-; CHECK:   i32* MemRef_tmp3[*]; [BasePtrOrigin: MemRef_A]
+; CHECK:   ptr MemRef_A[*];
+; CHECK:   ptr MemRef_tmp3[*]; [BasePtrOrigin: MemRef_A]
 ; CHECK:   i32 MemRef_tmp5[*]; [BasePtrOrigin: MemRef_tmp3]
 ; CHECK: }
 ;
@@ -31,7 +31,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32*** %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb1
 
@@ -41,12 +41,12 @@ bb1:                                              ; preds = %bb7, %bb
   br i1 %exitcond, label %bb2, label %bb8
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i32**, i32*** %A, i64 42
-  %tmp3 = load i32**, i32*** %tmp, align 8
-  %tmp4 = getelementptr inbounds i32*, i32** %tmp3, i64 32
-  %tmp5 = load i32*, i32** %tmp4, align 8
-  %tmp6 = getelementptr inbounds i32, i32* %tmp5, i64 %indvars.iv
-  store i32 0, i32* %tmp6, align 4
+  %tmp = getelementptr inbounds ptr, ptr %A, i64 42
+  %tmp3 = load ptr, ptr %tmp, align 8
+  %tmp4 = getelementptr inbounds ptr, ptr %tmp3, i64 32
+  %tmp5 = load ptr, ptr %tmp4, align 8
+  %tmp6 = getelementptr inbounds i32, ptr %tmp5, i64 %indvars.iv
+  store i32 0, ptr %tmp6, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb2

diff  --git a/polly/test/ScopInfo/invariant_load_scalar_dep.ll b/polly/test/ScopInfo/invariant_load_scalar_dep.ll
index 0feda0b13025b..79a10426862a1 100644
--- a/polly/test/ScopInfo/invariant_load_scalar_dep.ll
+++ b/polly/test/ScopInfo/invariant_load_scalar_dep.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* noalias %A, i32* noalias %B) {
+define void @f(ptr noalias %A, ptr noalias %B) {
 bb:
   br label %bb1
 
@@ -25,12 +25,12 @@ bb1:                                              ; preds = %bb4, %bb
   br i1 %exitcond, label %bb2, label %bb5
 
 bb2:                                              ; preds = %bb1
-  %tmp = load i32, i32* %B, align 4
+  %tmp = load i32, ptr %B, align 4
   br label %bb2b
 
 bb2b:
-  %tmp3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp, i32* %tmp3, align 4
+  %tmp3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp, ptr %tmp3, align 4
   br label %bb4
 
 bb4:                                              ; preds = %bb2

diff  --git a/polly/test/ScopInfo/invariant_load_stmt_domain.ll b/polly/test/ScopInfo/invariant_load_stmt_domain.ll
index 82d2dfdf9f671..6cd71c85ea2fd 100644
--- a/polly/test/ScopInfo/invariant_load_stmt_domain.ll
+++ b/polly/test/ScopInfo/invariant_load_stmt_domain.ll
@@ -36,7 +36,7 @@
 ; CHECK-NEXT:              { Stmt_loop_next[i0] -> MemRef_val__phi[] };
 ; CHECK-NEXT:  }
 
-define void @foo(float* %a, float* noalias %B) {
+define void @foo(ptr %a, ptr noalias %B) {
 entry:
   br label %loop
 
@@ -44,14 +44,14 @@ loop:
   %indvar = phi i64 [0, %entry], [%indvar.next, %loop.next]
   %val = phi float [1.0, %entry], [%a.val, %loop.next]
   %indvar.next = add nuw nsw i64 %indvar, 1
-  %ptr = getelementptr float, float* %B, i64 %indvar
-  store float %val, float* %ptr
+  %ptr = getelementptr float, ptr %B, i64 %indvar
+  store float %val, ptr %ptr
   %icmp = icmp eq i64 %indvar.next, 2
   br i1 %icmp, label %ret, label %loop.next
 
 loop.next:
-  %Aptr = getelementptr float, float* %a, i64 %indvar.next
-  %a.val = load float, float* %Aptr
+  %Aptr = getelementptr float, ptr %a, i64 %indvar.next
+  %a.val = load float, ptr %Aptr
   br label %loop
 
 ret:

diff  --git a/polly/test/ScopInfo/invariant_load_zext_parameter-2.ll b/polly/test/ScopInfo/invariant_load_zext_parameter-2.ll
index 11d4710368385..e77515280241e 100644
--- a/polly/test/ScopInfo/invariant_load_zext_parameter-2.ll
+++ b/polly/test/ScopInfo/invariant_load_zext_parameter-2.ll
@@ -30,10 +30,10 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %I0, i32* %I1, i32* %I2, i32* %V, i64 %p0, i64 %p1, i64 %p2, i64 %p3) {
+define void @f(ptr %I0, ptr %I1, ptr %I2, ptr %V, i64 %p0, i64 %p1, i64 %p2, i64 %p3) {
 entry:
-  %tmp = load i32, i32* %I1, align 4
-  store i32 %tmp, i32* %V, align 4
+  %tmp = load i32, ptr %I1, align 4
+  store i32 %tmp, ptr %V, align 4
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
@@ -42,29 +42,29 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp3 = load i32, i32* %I1, align 4
+  %tmp3 = load i32, ptr %I1, align 4
   %conv = sext i32 %tmp3 to i64
   %mul = mul nsw i64 %conv, %p0
   %conv1 = sext i32 %tmp3 to i64
   %mul2 = mul nsw i64 %conv1, %p1
   %add = add nsw i64 %mul, %mul2
-  %arrayidx = getelementptr inbounds i32, i32* %I0, i64 %add
-  %tmp4 = load i32, i32* %arrayidx, align 4
-  %arrayidx3 = getelementptr inbounds i32, i32* %V, i64 %indvars.iv1
-  store i32 %tmp4, i32* %arrayidx3, align 4
-  %tmp5 = load i32, i32* %I2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %I0, i64 %add
+  %tmp4 = load i32, ptr %arrayidx, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %V, i64 %indvars.iv1
+  store i32 %tmp4, ptr %arrayidx3, align 4
+  %tmp5 = load i32, ptr %I2, align 4
   %conv5 = sext i32 %tmp5 to i64
   %mul6 = mul nsw i64 %conv5, %p0
-  %arrayidx7 = getelementptr inbounds i32, i32* %I2, i64 1
-  %tmp6 = load i32, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %I2, i64 1
+  %tmp6 = load i32, ptr %arrayidx7, align 4
   %conv8 = sext i32 %tmp6 to i64
   %mul9 = mul nsw i64 %conv8, %p1
-  %arrayidx10 = getelementptr inbounds i32, i32* %I2, i64 2
-  %tmp7 = load i32, i32* %arrayidx10, align 4
+  %arrayidx10 = getelementptr inbounds i32, ptr %I2, i64 2
+  %tmp7 = load i32, ptr %arrayidx10, align 4
   %conv11 = sext i32 %tmp7 to i64
   %mul12 = mul nsw i64 %conv11, %p2
-  %arrayidx13 = getelementptr inbounds i32, i32* %I2, i64 3
-  %tmp8 = load i32, i32* %arrayidx13, align 4
+  %arrayidx13 = getelementptr inbounds i32, ptr %I2, i64 3
+  %tmp8 = load i32, ptr %arrayidx13, align 4
   %conv14 = sext i32 %tmp8 to i64
   %mul15 = mul nsw i64 %conv14, %p3
   br label %do.body
@@ -76,18 +76,18 @@ do.body:                                          ; preds = %do.cond, %for.body
 
 if.then:                                          ; preds = %do.body
   %add18 = add nsw i64 %mul6, %mul12
-  %arrayidx19 = getelementptr inbounds i32, i32* %I1, i64 %add18
-  %tmp9 = load i32, i32* %arrayidx19, align 4
-  %arrayidx21 = getelementptr inbounds i32, i32* %V, i64 %indvars.iv1
-  %tmp10 = load i32, i32* %arrayidx21, align 4
+  %arrayidx19 = getelementptr inbounds i32, ptr %I1, i64 %add18
+  %tmp9 = load i32, ptr %arrayidx19, align 4
+  %arrayidx21 = getelementptr inbounds i32, ptr %V, i64 %indvars.iv1
+  %tmp10 = load i32, ptr %arrayidx21, align 4
   %add22 = add nsw i32 %tmp10, %tmp9
-  store i32 %add22, i32* %arrayidx21, align 4
-  %arrayidx23 = getelementptr inbounds i32, i32* %I1, i64 %add
-  %tmp11 = load i32, i32* %arrayidx23, align 4
-  %arrayidx25 = getelementptr inbounds i32, i32* %V, i64 %indvars.iv1
-  %tmp12 = load i32, i32* %arrayidx25, align 4
+  store i32 %add22, ptr %arrayidx21, align 4
+  %arrayidx23 = getelementptr inbounds i32, ptr %I1, i64 %add
+  %tmp11 = load i32, ptr %arrayidx23, align 4
+  %arrayidx25 = getelementptr inbounds i32, ptr %V, i64 %indvars.iv1
+  %tmp12 = load i32, ptr %arrayidx25, align 4
   %add26 = add nsw i32 %tmp12, %tmp11
-  store i32 %add26, i32* %arrayidx25, align 4
+  store i32 %add26, ptr %arrayidx25, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %do.body

diff  --git a/polly/test/ScopInfo/invariant_load_zextended_in_own_execution_context.ll b/polly/test/ScopInfo/invariant_load_zextended_in_own_execution_context.ll
index 576e0bb586e55..775369e55c92a 100644
--- a/polly/test/ScopInfo/invariant_load_zextended_in_own_execution_context.ll
+++ b/polly/test/ScopInfo/invariant_load_zextended_in_own_execution_context.ll
@@ -6,7 +6,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @currpc = external global i32, align 4
- at inbuff = external global i8*, align 8
+ at inbuff = external global ptr, align 8
 
 ; Function Attrs: uwtable
 define void @_Z13dotableswitchP9Classfile() {
@@ -14,8 +14,8 @@ entry:
   br i1 undef, label %for.end, label %while.body
 
 while.body:                                       ; preds = %while.body, %entry
-  store i8* undef, i8** @inbuff, align 8
-  %0 = load i32, i32* @currpc, align 4
+  store ptr undef, ptr @inbuff, align 8
+  %0 = load i32, ptr @currpc, align 4
   %rem = and i32 %0, 3
   %tobool = icmp eq i32 %rem, 0
   br i1 %tobool, label %while.end, label %while.body

diff  --git a/polly/test/ScopInfo/invariant_loads_complicated_dependences.ll b/polly/test/ScopInfo/invariant_loads_complicated_dependences.ll
index a13344123dcfa..1d54ccc690239 100644
--- a/polly/test/ScopInfo/invariant_loads_complicated_dependences.ll
+++ b/polly/test/ScopInfo/invariant_loads_complicated_dependences.ll
@@ -30,7 +30,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* noalias %A, i32* noalias %V, i32* noalias %U, i32* noalias %UBptr, i32* noalias %LBptr) {
+define void @f(ptr noalias %A, ptr noalias %V, ptr noalias %U, ptr noalias %UBptr, ptr noalias %LBptr) {
 entry:
   br label %for.cond
 
@@ -40,7 +40,7 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %LB = load i32, i32* %LBptr, align 4
+  %LB = load i32, ptr %LBptr, align 4
   br label %do.body
 
 do.body:                                          ; preds = %do.cond, %for.body
@@ -49,19 +49,19 @@ do.body:                                          ; preds = %do.cond, %for.body
   br i1 %cmp1, label %if.then, label %if.else
 
 if.then:                                          ; preds = %do.body
-  %tmp1 = load i32, i32* %V, align 4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %tmp1 = load i32, ptr %V, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp2, %tmp1
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %if.end
 
 if.else:                                          ; preds = %do.body
-  %tmp3 = load i32, i32* %U, align 4
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp4 = load i32, i32* %arrayidx3, align 4
+  %tmp3 = load i32, ptr %U, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp4 = load i32, ptr %arrayidx3, align 4
   %add4 = add nsw i32 %tmp4, %tmp3
-  store i32 %add4, i32* %arrayidx3, align 4
+  store i32 %add4, ptr %arrayidx3, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then
@@ -69,7 +69,7 @@ if.end:                                           ; preds = %if.else, %if.then
 
 do.cond:                                          ; preds = %if.end
   %inc = add nsw i32 %j.0, 1
-  %UB = load i32, i32* %UBptr, align 4
+  %UB = load i32, ptr %UBptr, align 4
   %cmp5 = icmp slt i32 %j.0, %UB
   br i1 %cmp5, label %do.body, label %do.end
 

diff  --git a/polly/test/ScopInfo/invariant_loads_cyclic_dependences.ll b/polly/test/ScopInfo/invariant_loads_cyclic_dependences.ll
index 658eb54db1940..e97de0c936bc4 100644
--- a/polly/test/ScopInfo/invariant_loads_cyclic_dependences.ll
+++ b/polly/test/ScopInfo/invariant_loads_cyclic_dependences.ll
@@ -22,7 +22,7 @@
 ;
 target datalayout = "e-m:e-i32:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* noalias %V, i32* noalias %UB, i32* noalias %A) {
+define void @f(ptr noalias %V, ptr noalias %UB, ptr noalias %A) {
 entry:
   br label %for.cond
 
@@ -36,18 +36,18 @@ for.body:                                         ; preds = %for.cond
 
 do.body:                                          ; preds = %do.cond, %for.body
   %indvars.iv = phi i32 [ %indvars.iv.next, %do.cond ], [ 0, %for.body ]
-  %tmp = load i32, i32* %V, align 4
+  %tmp = load i32, ptr %V, align 4
   %tmp4 = add nuw nsw i32 %indvars.iv, %indvars.iv2
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %tmp4
-  %tmp5 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %tmp4
+  %tmp5 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp5, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %do.cond
 
 do.cond:                                          ; preds = %do.body
   %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1
-  %arrayidx3 = getelementptr inbounds i32, i32* %UB, i32 %tmp
-  %tmp6 = load i32, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %UB, i32 %tmp
+  %tmp6 = load i32, ptr %arrayidx3, align 4
   %cmp4 = icmp slt i32 %indvars.iv, %tmp6
   br i1 %cmp4, label %do.body, label %do.end
 

diff  --git a/polly/test/ScopInfo/invariant_loop_bounds.ll b/polly/test/ScopInfo/invariant_loop_bounds.ll
index 537e1937414cf..4e1fd88fac305 100644
--- a/polly/test/ScopInfo/invariant_loop_bounds.ll
+++ b/polly/test/ScopInfo/invariant_loop_bounds.ll
@@ -50,7 +50,7 @@ entry:
 
 for.cond:                                         ; preds = %for.inc.16, %entry
   %indvars.iv5 = phi i64 [ %indvars.iv.next6, %for.inc.16 ], [ 0, %entry ]
-  %bounds2 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @bounds, i64 0, i64 2), align 4
+  %bounds2 = load i32, ptr getelementptr inbounds ([3 x i32], ptr @bounds, i64 0, i64 2), align 4
   %tmp7 = sext i32 %bounds2 to i64
   %cmp = icmp slt i64 %indvars.iv5, %tmp7
   br i1 %cmp, label %for.body, label %for.end.18
@@ -60,7 +60,7 @@ for.body:                                         ; preds = %for.cond
 
 for.cond.1:                                       ; preds = %for.inc.13, %for.body
   %indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc.13 ], [ 0, %for.body ]
-  %bounds1 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @bounds, i64 0, i64 1), align 4
+  %bounds1 = load i32, ptr getelementptr inbounds ([3 x i32], ptr @bounds, i64 0, i64 1), align 4
   %tmp9 = sext i32 %bounds1 to i64
   %cmp2 = icmp slt i64 %indvars.iv3, %tmp9
   br i1 %cmp2, label %for.body.3, label %for.end.15
@@ -70,7 +70,7 @@ for.body.3:                                       ; preds = %for.cond.1
 
 for.cond.4:                                       ; preds = %for.inc, %for.body.3
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %for.body.3 ]
-  %bounds0 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @bounds, i64 0, i64 0), align 4
+  %bounds0 = load i32, ptr @bounds, align 4
   %tmp11 = sext i32 %bounds0 to i64
   %cmp5 = icmp slt i64 %indvars.iv, %tmp11
   br i1 %cmp5, label %for.body.6, label %for.end
@@ -80,10 +80,10 @@ for.body.6:                                       ; preds = %for.cond.4
   %tmp13 = add nsw i64 %tmp12, %indvars.iv5
   %tmp14 = trunc i64 %tmp13 to i32
   %conv = sitofp i32 %tmp14 to double
-  %arrayidx11 = getelementptr inbounds [1024 x [1024 x [1024 x double]]], [1024 x [1024 x [1024 x double]]]* @data, i64 0, i64 %indvars.iv5, i64 %indvars.iv3, i64 %indvars.iv
-  %tmp15 = load double, double* %arrayidx11, align 8
+  %arrayidx11 = getelementptr inbounds [1024 x [1024 x [1024 x double]]], ptr @data, i64 0, i64 %indvars.iv5, i64 %indvars.iv3, i64 %indvars.iv
+  %tmp15 = load double, ptr %arrayidx11, align 8
   %add12 = fadd double %tmp15, %conv
-  store double %add12, double* %arrayidx11, align 8
+  store double %add12, ptr %arrayidx11, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.6

diff  --git a/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-1.ll b/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-1.ll
index 6cb5f26cec039..3d5737bbe1683 100644
--- a/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-1.ll
+++ b/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-1.ll
@@ -48,7 +48,7 @@ entry:
 
 for.cond:                                         ; preds = %for.inc.16, %entry
   %indvars.iv5 = phi i64 [ %indvars.iv.next6, %for.inc.16 ], [ 0, %entry ]
-  %bounds0l0 = load i32, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @bounds, i64 0, i64 0), align 4
+  %bounds0l0 = load i32, ptr @bounds, align 4
   %tmp7 = sext i32 %bounds0l0 to i64
   %cmp = icmp slt i64 %indvars.iv5, %tmp7
   br i1 %cmp, label %for.body, label %for.end.18
@@ -58,7 +58,7 @@ for.body:                                         ; preds = %for.cond
 
 for.cond.1:                                       ; preds = %for.inc.13, %for.body
   %indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc.13 ], [ 0, %for.body ]
-  %bounds0l1 = load i32, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @bounds, i64 0, i64 0), align 4
+  %bounds0l1 = load i32, ptr @bounds, align 4
   %tmp9 = sext i32 %bounds0l1 to i64
   %cmp2 = icmp slt i64 %indvars.iv3, %tmp9
   br i1 %cmp2, label %for.body.3, label %for.end.15
@@ -68,7 +68,7 @@ for.body.3:                                       ; preds = %for.cond.1
 
 for.cond.4:                                       ; preds = %for.inc, %for.body.3
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %for.body.3 ]
-  %bounds0l2 = load i32, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @bounds, i64 0, i64 0), align 4
+  %bounds0l2 = load i32, ptr @bounds, align 4
   %tmp11 = sext i32 %bounds0l2 to i64
   %cmp5 = icmp slt i64 %indvars.iv, %tmp11
   br i1 %cmp5, label %for.body.6, label %for.end
@@ -78,10 +78,10 @@ for.body.6:                                       ; preds = %for.cond.4
   %tmp13 = add nsw i64 %tmp12, %indvars.iv5
   %tmp14 = trunc i64 %tmp13 to i32
   %conv = sitofp i32 %tmp14 to double
-  %arrayidx11 = getelementptr inbounds [1024 x [1024 x [1024 x double]]], [1024 x [1024 x [1024 x double]]]* @data, i64 0, i64 %indvars.iv5, i64 %indvars.iv3, i64 %indvars.iv
-  %tmp15 = load double, double* %arrayidx11, align 8
+  %arrayidx11 = getelementptr inbounds [1024 x [1024 x [1024 x double]]], ptr @data, i64 0, i64 %indvars.iv5, i64 %indvars.iv3, i64 %indvars.iv
+  %tmp15 = load double, ptr %arrayidx11, align 8
   %add12 = fadd double %tmp15, %conv
-  store double %add12, double* %arrayidx11, align 8
+  store double %add12, ptr %arrayidx11, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.6

diff  --git a/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-2.ll b/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-2.ll
index dcfb60e57c395..e2de503eb83fb 100644
--- a/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-2.ll
+++ b/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-2.ll
@@ -50,7 +50,7 @@ entry:
 
 for.cond:                                         ; preds = %for.inc.16, %entry
   %indvars.iv5 = phi i64 [ %indvars.iv.next6, %for.inc.16 ], [ 0, %entry ]
-  %bounds0l0 = load i32, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @bounds, i64 0, i64 0), align 4
+  %bounds0l0 = load i32, ptr @bounds, align 4
   %tmp7 = sext i32 %bounds0l0 to i64
   %cmp = icmp slt i64 %indvars.iv5, %tmp7
   br i1 %cmp, label %for.body, label %for.end.18
@@ -61,7 +61,7 @@ for.body:                                         ; preds = %for.cond
 
 for.cond.1:                                       ; preds = %for.inc.13, %for.body
   %indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc.13 ], [ 0, %for.body ]
-  %bounds0l1 = load i32, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @bounds, i64 0, i64 0), align 4
+  %bounds0l1 = load i32, ptr @bounds, align 4
   %tmp9 = sext i32 %bounds0l1 to i64
   %cmp2 = icmp slt i64 %indvars.iv3, %tmp9
   br i1 %cmp2, label %for.body.3, label %for.end.15
@@ -71,7 +71,7 @@ for.body.3:                                       ; preds = %for.cond.1
 
 for.cond.4:                                       ; preds = %for.inc, %for.body.3
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %for.body.3 ]
-  %bounds0l2 = load i32, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @bounds, i64 0, i64 0), align 4
+  %bounds0l2 = load i32, ptr @bounds, align 4
   %tmp11 = sext i32 %bounds0l2 to i64
   %cmp5 = icmp slt i64 %indvars.iv, %tmp11
   br i1 %cmp5, label %for.body.6, label %for.end
@@ -81,10 +81,10 @@ for.body.6:                                       ; preds = %for.cond.4
   %tmp13 = add nsw i64 %tmp12, %indvars.iv5
   %tmp14 = trunc i64 %tmp13 to i32
   %conv = sitofp i32 %tmp14 to double
-  %arrayidx11 = getelementptr inbounds [1024 x [1024 x [1024 x double]]], [1024 x [1024 x [1024 x double]]]* @data, i64 0, i64 %indvars.iv5, i64 %indvars.iv3, i64 %indvars.iv
-  %tmp15 = load double, double* %arrayidx11, align 8
+  %arrayidx11 = getelementptr inbounds [1024 x [1024 x [1024 x double]]], ptr @data, i64 0, i64 %indvars.iv5, i64 %indvars.iv3, i64 %indvars.iv
+  %tmp15 = load double, ptr %arrayidx11, align 8
   %add12 = fadd double %tmp15, %conv
-  store double %add12, double* %arrayidx11, align 8
+  store double %add12, ptr %arrayidx11, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.6

diff  --git a/polly/test/ScopInfo/isl_aff_out_of_bounds.ll b/polly/test/ScopInfo/isl_aff_out_of_bounds.ll
index 1bd89b6884a47..ca1b235be358d 100644
--- a/polly/test/ScopInfo/isl_aff_out_of_bounds.ll
+++ b/polly/test/ScopInfo/isl_aff_out_of_bounds.ll
@@ -7,29 +7,29 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 declare double @frexp(double)
 
-define void @vorbis_lsp_to_curve(float* %lsp, i32 %m) {
+define void @vorbis_lsp_to_curve(ptr %lsp, i32 %m) {
 entry:
   %q.1.reg2mem = alloca float, align 4
   br i1 undef, label %do.body, label %while.end
 
 do.body:                                          ; preds = %do.body, %entry
-  %ftmp.0 = phi float* [ %add.ptr, %do.body ], [ %lsp, %entry ]
-  %add.ptr = getelementptr inbounds float, float* %ftmp.0, i64 2
+  %ftmp.0 = phi ptr [ %add.ptr, %do.body ], [ %lsp, %entry ]
+  %add.ptr = getelementptr inbounds float, ptr %ftmp.0, i64 2
   br i1 true, label %do.end, label %do.body
 
 do.end:                                           ; preds = %do.body
   br i1 false, label %if.end.single_exit, label %if.then
 
 if.then:                                          ; preds = %do.end
-  %0 = load float, float* %add.ptr, align 4
-  store float %0, float* %q.1.reg2mem, align 4
+  %0 = load float, ptr %add.ptr, align 4
+  store float %0, ptr %q.1.reg2mem, align 4
   br label %if.end.single_exit
 
 if.end.single_exit:                               ; preds = %do.end, %if.then
   br label %if.end
 
 if.end:                                           ; preds = %if.end.single_exit
-  %q.1.reload = load float, float* %q.1.reg2mem, align 4
+  %q.1.reload = load float, ptr %q.1.reg2mem, align 4
   %conv31 = fpext float %q.1.reload to double
   %call32 = call double @frexp(double %conv31)
   unreachable

diff  --git a/polly/test/ScopInfo/isl_trip_count_01.ll b/polly/test/ScopInfo/isl_trip_count_01.ll
index ea1800870fabd..fc6b79c5a68aa 100644
--- a/polly/test/ScopInfo/isl_trip_count_01.ll
+++ b/polly/test/ScopInfo/isl_trip_count_01.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 
-define void @f(i32* nocapture %A, i32 %N, i32 %M) {
+define void @f(ptr nocapture %A, i32 %N, i32 %M) {
 entry:
   %cmp3 = icmp sgt i32 %M, %N
   br i1 %cmp3, label %while.end, label %while.body.preheader
@@ -24,8 +24,8 @@ while.body:
   %i.05 = phi i32 [ %inc, %while.body ], [ 0, %while.body.preheader ]
   %M.addr.04 = phi i32 [ %add, %while.body ], [ %M, %while.body.preheader ]
   %inc = add nuw nsw i32 %i.05, 1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.05
-  store i32 1, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.05
+  store i32 1, ptr %arrayidx, align 4
   %add = add nsw i32 %M.addr.04, 4
   %cmp = icmp sgt i32 %add, %N
   br i1 %cmp, label %while.end.loopexit, label %while.body

diff  --git a/polly/test/ScopInfo/isl_trip_count_02.ll b/polly/test/ScopInfo/isl_trip_count_02.ll
index 6ea570d74d62c..9376cb415cec5 100644
--- a/polly/test/ScopInfo/isl_trip_count_02.ll
+++ b/polly/test/ScopInfo/isl_trip_count_02.ll
@@ -11,7 +11,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 
-define void @f(i32* %A, i32 %N, i32 %M) {
+define void @f(ptr %A, i32 %N, i32 %M) {
 entry:
   br label %entry.split
 
@@ -21,8 +21,8 @@ entry.split:
 
 for.body:
   %indvars.iv = phi i32 [ %indvars.iv.next, %for.body ], [ %M, %entry.split ]
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %indvars.iv
-  store i32 %indvars.iv, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %indvars.iv
+  store i32 %indvars.iv, ptr %arrayidx, align 4
   %cmp = icmp slt i32 %M, %N
   %indvars.iv.next = add i32 %indvars.iv, 1
   br i1 %cmp, label %for.cond.for.end_crit_edge, label %for.body

diff  --git a/polly/test/ScopInfo/isl_trip_count_03.ll b/polly/test/ScopInfo/isl_trip_count_03.ll
index 51af3700fd675..f5b0048a0e0e6 100644
--- a/polly/test/ScopInfo/isl_trip_count_03.ll
+++ b/polly/test/ScopInfo/isl_trip_count_03.ll
@@ -36,7 +36,7 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %indvar = phi i64 [ 0, %for.body.lr.ph ], [ %indvar.next, %for.next ]
-  %arrayidx = getelementptr [100 x i32], [100 x i32]* @A, i64 0, i64 %indvar
+  %arrayidx = getelementptr [100 x i32], ptr @A, i64 0, i64 %indvar
   %0 = mul i64 %indvar, 2
   %1 = add i64 %0, 2
   %add1 = trunc i64 %1 to i32
@@ -45,9 +45,9 @@ for.body:                                         ; preds = %for.body.lr.ph, %fo
   br i1 %cmp, label %for.next, label %for.cond.for.end_crit_edge
 
 for.next:
-  %2 = load i32, i32* %arrayidx, align 4
+  %2 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %2, 1
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.body
 
 for.cond.for.end_crit_edge:                       ; preds = %for.body

diff  --git a/polly/test/ScopInfo/isl_trip_count_multiple_exiting_blocks.ll b/polly/test/ScopInfo/isl_trip_count_multiple_exiting_blocks.ll
index 42b0f3cff17aa..91bc19e2de446 100644
--- a/polly/test/ScopInfo/isl_trip_count_multiple_exiting_blocks.ll
+++ b/polly/test/ScopInfo/isl_trip_count_multiple_exiting_blocks.ll
@@ -21,7 +21,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %do.body
 
@@ -34,9 +34,9 @@ if.then:                                          ; preds = %do.body
   br label %do.end
 
 if.end:                                           ; preds = %do.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
   %tmp = trunc i64 %indvars.iv to i32
-  store i32 %tmp, i32* %arrayidx, align 4
+  store i32 %tmp, ptr %arrayidx, align 4
   br label %do.cond
 
 do.cond:                                          ; preds = %if.end

diff  --git a/polly/test/ScopInfo/licm_load.ll b/polly/test/ScopInfo/licm_load.ll
index f131b7e515791..1ba6f9135deab 100644
--- a/polly/test/ScopInfo/licm_load.ll
+++ b/polly/test/ScopInfo/licm_load.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i32 %n, float* noalias nonnull %A, float* noalias nonnull %B, i32 %j) {
+define void @foo(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %j) {
 entry:
   %tmp = sext i32 %n to i64
   br label %for.cond
@@ -25,12 +25,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %idxprom = sext i32 %j to i64
-  %arrayidx = getelementptr inbounds float, float* %B, i64 %idxprom
-  %tmp1 = bitcast float* %arrayidx to i32*
-  %tmp2 = load i32, i32* %tmp1, align 4
-  %arrayidx2 = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp3 = bitcast float* %arrayidx2 to i32*
-  store i32 %tmp2, i32* %tmp3, align 4
+  %arrayidx = getelementptr inbounds float, ptr %B, i64 %idxprom
+  %tmp2 = load i32, ptr %arrayidx, align 4
+  %arrayidx2 = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  store i32 %tmp2, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/licm_potential_store.ll b/polly/test/ScopInfo/licm_potential_store.ll
index 8857456932891..19aeeb605e403 100644
--- a/polly/test/ScopInfo/licm_potential_store.ll
+++ b/polly/test/ScopInfo/licm_potential_store.ll
@@ -24,57 +24,56 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i32 %n, float* noalias nonnull %A, float %x) {
+define void @foo(i32 %n, ptr noalias nonnull %A, float %x) {
 entry:
   %n.addr = alloca i32, align 4
-  %A.addr = alloca float*, align 8
+  %A.addr = alloca ptr, align 8
   %x.addr = alloca float, align 4
   %i = alloca i32, align 4
   %j = alloca i32, align 4
-  store i32 %n, i32* %n.addr, align 4
-  store float* %A, float** %A.addr, align 8
-  store float %x, float* %x.addr, align 4
-  %tmp = load i32, i32* %n.addr, align 4
+  store i32 %n, ptr %n.addr, align 4
+  store ptr %A, ptr %A.addr, align 8
+  store float %x, ptr %x.addr, align 4
+  %tmp = load i32, ptr %n.addr, align 4
   %tmp1 = zext i32 %tmp to i64
-  store i32 0, i32* %i, align 4
+  store i32 0, ptr %i, align 4
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc.4, %entry
-  %tmp2 = load i32, i32* %i, align 4
+  %tmp2 = load i32, ptr %i, align 4
   %cmp = icmp slt i32 %tmp2, 5
   br i1 %cmp, label %for.body, label %for.end.6
 
 for.body:                                         ; preds = %for.cond
-  store i32 0, i32* %j, align 4
+  store i32 0, ptr %j, align 4
   br label %for.cond.1
 
 for.cond.1:                                       ; preds = %for.inc, %for.body
-  %tmp3 = load i32, i32* %j, align 4
-  %tmp4 = load i32, i32* %n.addr, align 4
+  %tmp3 = load i32, ptr %j, align 4
+  %tmp4 = load i32, ptr %n.addr, align 4
   %cmp2 = icmp slt i32 %tmp3, %tmp4
   br i1 %cmp2, label %for.body.3, label %for.end
 
 for.body.3:                                       ; preds = %for.cond.1
-  store float 7.000000e+00, float* %x.addr, align 4
+  store float 7.000000e+00, ptr %x.addr, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.3
-  %tmp5 = load i32, i32* %j, align 4
+  %tmp5 = load i32, ptr %j, align 4
   %add = add nsw i32 %tmp5, 1
-  store i32 %add, i32* %j, align 4
+  store i32 %add, ptr %j, align 4
   br label %for.cond.1
 
 for.end:                                          ; preds = %for.cond.1
-  %tmp6 = load float, float* %x.addr, align 4
-  %tmp7 = load float*, float** %A.addr, align 8
-  %arrayidx = getelementptr inbounds float, float* %tmp7, i64 0
-  store float %tmp6, float* %arrayidx, align 4
+  %tmp6 = load float, ptr %x.addr, align 4
+  %tmp7 = load ptr, ptr %A.addr, align 8
+  store float %tmp6, ptr %tmp7, align 4
   br label %for.inc.4
 
 for.inc.4:                                        ; preds = %for.end
-  %tmp8 = load i32, i32* %i, align 4
+  %tmp8 = load i32, ptr %i, align 4
   %add5 = add nsw i32 %tmp8, 1
-  store i32 %add5, i32* %i, align 4
+  store i32 %add5, ptr %i, align 4
   br label %for.cond
 
 for.end.6:                                        ; preds = %for.cond

diff  --git a/polly/test/ScopInfo/licm_reduction_nested.ll b/polly/test/ScopInfo/licm_reduction_nested.ll
index 232af93df7b88..a3ba478cd9ff1 100644
--- a/polly/test/ScopInfo/licm_reduction_nested.ll
+++ b/polly/test/ScopInfo/licm_reduction_nested.ll
@@ -14,7 +14,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64* noalias %A, i64* noalias %B, i64 %j) {
+define void @foo(ptr noalias %A, ptr noalias %B, i64 %j) {
 entry:
   br label %for.cond
 
@@ -33,12 +33,12 @@ for.cond.1:                                       ; preds = %for.inc, %for.body
 
 for.body.3:                                       ; preds = %for.cond.1
   %add = add nuw nsw i64 %i.0, %k.0
-  %arrayidx = getelementptr inbounds i64, i64* %B, i64 %add
-  %tmp = load i64, i64* %arrayidx, align 8
-  %arrayidx4 = getelementptr inbounds i64, i64* %A, i64 %j
-  %tmp2 = load i64, i64* %arrayidx4, align 8
+  %arrayidx = getelementptr inbounds i64, ptr %B, i64 %add
+  %tmp = load i64, ptr %arrayidx, align 8
+  %arrayidx4 = getelementptr inbounds i64, ptr %A, i64 %j
+  %tmp2 = load i64, ptr %arrayidx4, align 8
   %add5 = add i64 %tmp2, %tmp
-  store i64 %add5, i64* %arrayidx4, align 8
+  store i64 %add5, ptr %arrayidx4, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.3

diff  --git a/polly/test/ScopInfo/long-compile-time-alias-analysis.ll b/polly/test/ScopInfo/long-compile-time-alias-analysis.ll
index 173efa4d3edc9..1cbecf0869689 100644
--- a/polly/test/ScopInfo/long-compile-time-alias-analysis.ll
+++ b/polly/test/ScopInfo/long-compile-time-alias-analysis.ll
@@ -6,47 +6,45 @@
 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
 target triple = "aarch64--linux-android"
 
-%0 = type { i8*, i64, i64, i64, i64, i64, i64 }
+%0 = type { ptr, i64, i64, i64, i64, i64, i64 }
 
-define void @_Z1fR1SS0_Ph(%0* nocapture readonly dereferenceable(56) %arg, %0* nocapture readonly dereferenceable(56) %arg1, i8* nocapture readonly %arg2) {
+define void @_Z1fR1SS0_Ph(ptr nocapture readonly dereferenceable(56) %arg, ptr nocapture readonly dereferenceable(56) %arg1, ptr nocapture readonly %arg2) {
 bb:
-  %tmp = getelementptr inbounds %0, %0* %arg1, i64 0, i32 1
-  %tmp3 = getelementptr inbounds %0, %0* %arg, i64 0, i32 0
-  %tmp4 = load i8*, i8** %tmp3, align 8
-  %tmp5 = getelementptr inbounds %0, %0* %arg, i64 0, i32 4
-  %tmp6 = load i64, i64* %tmp5, align 8
-  %tmp7 = getelementptr inbounds %0, %0* %arg, i64 0, i32 1
-  %tmp8 = load i64, i64* %tmp7, align 8
+  %tmp = getelementptr inbounds %0, ptr %arg1, i64 0, i32 1
+  %tmp4 = load ptr, ptr %arg, align 8
+  %tmp5 = getelementptr inbounds %0, ptr %arg, i64 0, i32 4
+  %tmp6 = load i64, ptr %tmp5, align 8
+  %tmp7 = getelementptr inbounds %0, ptr %arg, i64 0, i32 1
+  %tmp8 = load i64, ptr %tmp7, align 8
   %tmp9 = mul i64 %tmp8, %tmp6
-  %tmp10 = getelementptr inbounds i8, i8* %tmp4, i64 %tmp9
-  %tmp11 = getelementptr inbounds %0, %0* %arg, i64 0, i32 3
-  %tmp12 = load i64, i64* %tmp11, align 8
-  %tmp13 = getelementptr inbounds i8, i8* %tmp10, i64 %tmp12
-  %tmp14 = getelementptr inbounds %0, %0* %arg, i64 0, i32 6
-  %tmp15 = load i64, i64* %tmp14, align 8
+  %tmp10 = getelementptr inbounds i8, ptr %tmp4, i64 %tmp9
+  %tmp11 = getelementptr inbounds %0, ptr %arg, i64 0, i32 3
+  %tmp12 = load i64, ptr %tmp11, align 8
+  %tmp13 = getelementptr inbounds i8, ptr %tmp10, i64 %tmp12
+  %tmp14 = getelementptr inbounds %0, ptr %arg, i64 0, i32 6
+  %tmp15 = load i64, ptr %tmp14, align 8
   %tmp16 = add i64 %tmp15, 1
   %tmp17 = icmp eq i64 %tmp16, %tmp6
   br i1 %tmp17, label %bb51, label %bb18
 
 bb18:                                             ; preds = %bb
-  %tmp19 = getelementptr inbounds %0, %0* %arg, i64 0, i32 2
-  %tmp20 = load i64, i64* %tmp19, align 8
+  %tmp19 = getelementptr inbounds %0, ptr %arg, i64 0, i32 2
+  %tmp20 = load i64, ptr %tmp19, align 8
   %tmp21 = mul i64 %tmp20, %tmp8
-  %tmp22 = getelementptr inbounds i8, i8* %tmp13, i64 %tmp21
-  %tmp23 = getelementptr inbounds i8, i8* %tmp22, i64 %tmp9
-  %tmp24 = getelementptr inbounds i8, i8* %tmp23, i64 %tmp12
-  %tmp25 = bitcast %0* %arg1 to i16**
-  %tmp26 = load i16*, i16** %tmp25, align 8
-  %tmp27 = load i64, i64* %tmp, align 8
-  %tmp28 = getelementptr inbounds %0, %0* %arg1, i64 0, i32 4
-  %tmp29 = load i64, i64* %tmp28, align 8
+  %tmp22 = getelementptr inbounds i8, ptr %tmp13, i64 %tmp21
+  %tmp23 = getelementptr inbounds i8, ptr %tmp22, i64 %tmp9
+  %tmp24 = getelementptr inbounds i8, ptr %tmp23, i64 %tmp12
+  %tmp26 = load ptr, ptr %arg1, align 8
+  %tmp27 = load i64, ptr %tmp, align 8
+  %tmp28 = getelementptr inbounds %0, ptr %arg1, i64 0, i32 4
+  %tmp29 = load i64, ptr %tmp28, align 8
   %tmp30 = mul i64 %tmp27, %tmp29
-  %tmp31 = getelementptr inbounds i16, i16* %tmp26, i64 %tmp30
-  %tmp32 = getelementptr inbounds %0, %0* %arg1, i64 0, i32 3
-  %tmp33 = load i64, i64* %tmp32, align 8
-  %tmp34 = getelementptr inbounds i16, i16* %tmp31, i64 %tmp33
-  %tmp35 = getelementptr inbounds %0, %0* %arg, i64 0, i32 5
-  %tmp36 = load i64, i64* %tmp35, align 8
+  %tmp31 = getelementptr inbounds i16, ptr %tmp26, i64 %tmp30
+  %tmp32 = getelementptr inbounds %0, ptr %arg1, i64 0, i32 3
+  %tmp33 = load i64, ptr %tmp32, align 8
+  %tmp34 = getelementptr inbounds i16, ptr %tmp31, i64 %tmp33
+  %tmp35 = getelementptr inbounds %0, ptr %arg, i64 0, i32 5
+  %tmp36 = load i64, ptr %tmp35, align 8
   br label %bb37
 
 bb37:                                             ; preds = %bb57, %bb18
@@ -56,9 +54,9 @@ bb37:                                             ; preds = %bb57, %bb18
   %tmp41 = phi i64 [ %tmp8, %bb18 ], [ %tmp61, %bb57 ]
   %tmp42 = phi i64 [ %tmp12, %bb18 ], [ %tmp62, %bb57 ]
   %tmp43 = phi i64 [ %tmp36, %bb18 ], [ %tmp63, %bb57 ]
-  %tmp44 = phi i16* [ %tmp34, %bb18 ], [ %tmp69, %bb57 ]
-  %tmp45 = phi i8* [ %tmp13, %bb18 ], [ %tmp64, %bb57 ]
-  %tmp46 = phi i8* [ %tmp24, %bb18 ], [ %tmp68, %bb57 ]
+  %tmp44 = phi ptr [ %tmp34, %bb18 ], [ %tmp69, %bb57 ]
+  %tmp45 = phi ptr [ %tmp13, %bb18 ], [ %tmp64, %bb57 ]
+  %tmp46 = phi ptr [ %tmp24, %bb18 ], [ %tmp68, %bb57 ]
   %tmp47 = phi i64 [ 0, %bb18 ], [ %tmp70, %bb57 ]
   %tmp48 = add i64 %tmp43, 1
   %tmp49 = sub i64 %tmp48, %tmp42
@@ -69,10 +67,10 @@ bb51:                                             ; preds = %bb57, %bb
   ret void
 
 bb52:                                             ; preds = %bb176
-  %tmp53 = load i64, i64* %tmp7, align 8
-  %tmp54 = load i64, i64* %tmp, align 8
-  %tmp55 = load i64, i64* %tmp14, align 8
-  %tmp56 = load i64, i64* %tmp5, align 8
+  %tmp53 = load i64, ptr %tmp7, align 8
+  %tmp54 = load i64, ptr %tmp, align 8
+  %tmp55 = load i64, ptr %tmp14, align 8
+  %tmp56 = load i64, ptr %tmp5, align 8
   br label %bb57
 
 bb57:                                             ; preds = %bb52, %bb37
@@ -82,12 +80,12 @@ bb57:                                             ; preds = %bb52, %bb37
   %tmp61 = phi i64 [ %tmp53, %bb52 ], [ %tmp41, %bb37 ]
   %tmp62 = phi i64 [ %tmp179, %bb52 ], [ %tmp42, %bb37 ]
   %tmp63 = phi i64 [ %tmp178, %bb52 ], [ %tmp43, %bb37 ]
-  %tmp64 = getelementptr inbounds i8, i8* %tmp45, i64 %tmp61
+  %tmp64 = getelementptr inbounds i8, ptr %tmp45, i64 %tmp61
   %tmp65 = and i64 %tmp47, 1
   %tmp66 = icmp eq i64 %tmp65, 0
-  %tmp67 = getelementptr inbounds i8, i8* %tmp46, i64 %tmp61
-  %tmp68 = select i1 %tmp66, i8* %tmp46, i8* %tmp67
-  %tmp69 = getelementptr inbounds i16, i16* %tmp44, i64 %tmp60
+  %tmp67 = getelementptr inbounds i8, ptr %tmp46, i64 %tmp61
+  %tmp68 = select i1 %tmp66, ptr %tmp46, ptr %tmp67
+  %tmp69 = getelementptr inbounds i16, ptr %tmp44, i64 %tmp60
   %tmp70 = add i64 %tmp47, 1
   %tmp71 = add i64 %tmp59, 1
   %tmp72 = sub i64 %tmp71, %tmp58
@@ -97,18 +95,18 @@ bb57:                                             ; preds = %bb52, %bb37
 bb74:                                             ; preds = %bb176, %bb37
   %tmp75 = phi i64 [ %tmp181, %bb176 ], [ %tmp49, %bb37 ]
   %tmp76 = phi i64 [ %tmp177, %bb176 ], [ 0, %bb37 ]
-  %tmp77 = getelementptr inbounds i8, i8* %tmp45, i64 %tmp76
-  %tmp78 = load i8, i8* %tmp77, align 1
+  %tmp77 = getelementptr inbounds i8, ptr %tmp45, i64 %tmp76
+  %tmp78 = load i8, ptr %tmp77, align 1
   %tmp79 = zext i8 %tmp78 to i32
   %tmp80 = or i64 %tmp76, 1
-  %tmp81 = getelementptr inbounds i8, i8* %tmp45, i64 %tmp80
-  %tmp82 = load i8, i8* %tmp81, align 1
+  %tmp81 = getelementptr inbounds i8, ptr %tmp45, i64 %tmp80
+  %tmp82 = load i8, ptr %tmp81, align 1
   %tmp83 = zext i8 %tmp82 to i32
-  %tmp84 = getelementptr inbounds i8, i8* %tmp46, i64 %tmp76
-  %tmp85 = load i8, i8* %tmp84, align 1
+  %tmp84 = getelementptr inbounds i8, ptr %tmp46, i64 %tmp76
+  %tmp85 = load i8, ptr %tmp84, align 1
   %tmp86 = zext i8 %tmp85 to i32
-  %tmp87 = getelementptr inbounds i8, i8* %tmp46, i64 %tmp80
-  %tmp88 = load i8, i8* %tmp87, align 1
+  %tmp87 = getelementptr inbounds i8, ptr %tmp46, i64 %tmp80
+  %tmp88 = load i8, ptr %tmp87, align 1
   %tmp89 = zext i8 %tmp88 to i32
   %tmp90 = mul nuw nsw i32 %tmp86, 517
   %tmp91 = add nsw i32 %tmp90, -66176
@@ -157,21 +155,21 @@ bb120:                                            ; preds = %bb109
 
 bb124:                                            ; preds = %bb120
   %tmp125 = sext i32 %tmp101 to i64
-  %tmp126 = getelementptr inbounds i8, i8* %arg2, i64 %tmp125
-  %tmp127 = load i8, i8* %tmp126, align 1
+  %tmp126 = getelementptr inbounds i8, ptr %arg2, i64 %tmp125
+  %tmp127 = load i8, ptr %tmp126, align 1
   %tmp128 = zext i8 %tmp127 to i32
   %tmp129 = lshr i32 %tmp128, 3
   %tmp130 = shl nuw nsw i32 %tmp129, 11
   %tmp131 = sext i32 %tmp111 to i64
-  %tmp132 = getelementptr inbounds i8, i8* %arg2, i64 %tmp131
-  %tmp133 = load i8, i8* %tmp132, align 1
+  %tmp132 = getelementptr inbounds i8, ptr %arg2, i64 %tmp131
+  %tmp133 = load i8, ptr %tmp132, align 1
   %tmp134 = zext i8 %tmp133 to i32
   %tmp135 = lshr i32 %tmp134, 2
   %tmp136 = shl nuw nsw i32 %tmp135, 5
   %tmp137 = or i32 %tmp136, %tmp130
   %tmp138 = sext i32 %tmp113 to i64
-  %tmp139 = getelementptr inbounds i8, i8* %arg2, i64 %tmp138
-  %tmp140 = load i8, i8* %tmp139, align 1
+  %tmp139 = getelementptr inbounds i8, ptr %arg2, i64 %tmp138
+  %tmp140 = load i8, ptr %tmp139, align 1
   %tmp141 = zext i8 %tmp140 to i32
   %tmp142 = lshr i32 %tmp141, 3
   %tmp143 = or i32 %tmp137, %tmp142
@@ -182,16 +180,16 @@ bb145:                                            ; preds = %bb124
   %tmp146 = add nsw i32 %tmp97, %tmp115
   %tmp147 = sdiv i32 %tmp146, 256
   %tmp148 = sext i32 %tmp147 to i64
-  %tmp149 = getelementptr inbounds i8, i8* %arg2, i64 %tmp148
-  %tmp150 = load i8, i8* %tmp149, align 1
+  %tmp149 = getelementptr inbounds i8, ptr %arg2, i64 %tmp148
+  %tmp150 = load i8, ptr %tmp149, align 1
   %tmp151 = extractvalue { i32, i1 } %tmp122, 0
   %tmp152 = sdiv i32 %tmp151, 256
   %tmp153 = sext i32 %tmp152 to i64
-  %tmp154 = getelementptr inbounds i8, i8* %arg2, i64 %tmp153
-  %tmp155 = load i8, i8* %tmp154, align 1
+  %tmp154 = getelementptr inbounds i8, ptr %arg2, i64 %tmp153
+  %tmp155 = load i8, ptr %tmp154, align 1
   %tmp156 = sext i32 %tmp117 to i64
-  %tmp157 = getelementptr inbounds i8, i8* %arg2, i64 %tmp156
-  %tmp158 = load i8, i8* %tmp157, align 1
+  %tmp157 = getelementptr inbounds i8, ptr %arg2, i64 %tmp156
+  %tmp158 = load i8, ptr %tmp157, align 1
   %tmp159 = zext i8 %tmp158 to i32
   %tmp160 = lshr i32 %tmp159, 3
   %tmp161 = shl nuw nsw i32 %tmp160, 11
@@ -204,21 +202,20 @@ bb145:                                            ; preds = %bb124
   %tmp168 = or i32 %tmp167, %tmp161
   %tmp169 = shl nuw i32 %tmp168, 16
   %tmp170 = or i32 %tmp169, %tmp143
-  %tmp171 = getelementptr inbounds i16, i16* %tmp44, i64 %tmp76
-  %tmp172 = bitcast i16* %tmp171 to i32*
-  store i32 %tmp170, i32* %tmp172, align 4
+  %tmp171 = getelementptr inbounds i16, ptr %tmp44, i64 %tmp76
+  store i32 %tmp170, ptr %tmp171, align 4
   br label %bb176
 
 bb173:                                            ; preds = %bb124
   %tmp174 = trunc i32 %tmp143 to i16
-  %tmp175 = getelementptr inbounds i16, i16* %tmp44, i64 %tmp76
-  store i16 %tmp174, i16* %tmp175, align 2
+  %tmp175 = getelementptr inbounds i16, ptr %tmp44, i64 %tmp76
+  store i16 %tmp174, ptr %tmp175, align 2
   br label %bb176
 
 bb176:                                            ; preds = %bb173, %bb145
   %tmp177 = add i64 %tmp76, 2
-  %tmp178 = load i64, i64* %tmp35, align 8
-  %tmp179 = load i64, i64* %tmp11, align 8
+  %tmp178 = load i64, ptr %tmp35, align 8
+  %tmp179 = load i64, ptr %tmp11, align 8
   %tmp180 = add i64 %tmp178, 1
   %tmp181 = sub i64 %tmp180, %tmp179
   %tmp182 = icmp ult i64 %tmp177, %tmp181

diff  --git a/polly/test/ScopInfo/long-sequence-of-error-blocks-2.ll b/polly/test/ScopInfo/long-sequence-of-error-blocks-2.ll
index 5fdc15e26f52e..c88ea1327389e 100644
--- a/polly/test/ScopInfo/long-sequence-of-error-blocks-2.ll
+++ b/polly/test/ScopInfo/long-sequence-of-error-blocks-2.ll
@@ -3,38 +3,38 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-%struct.hoge = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [8 x [2 x i32]], [8 x [2 x i32]], [4 x [4 x i32]], i32, i32, i32, i32, [256 x i8], [256 x i8], [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, [500 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [1024 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], i32, i32, i32*, i32*, i8*, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, [5 x double], i32, [8 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [6 x double], [6 x double], [256 x i8], i32, i32, i32, i32, [2 x [5 x i32]], [2 x [5 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i32 }
+%struct.hoge = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [8 x [2 x i32]], [8 x [2 x i32]], [4 x [4 x i32]], i32, i32, i32, i32, [256 x i8], [256 x i8], [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, [500 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [1024 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], i32, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, [5 x double], i32, [8 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [6 x double], [6 x double], [256 x i8], i32, i32, i32, i32, [2 x [5 x i32]], [2 x [5 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i32 }
 
 ; The execution context of invalid loads in this test case has at some point become very complex and we should bail.
 ; CHECK-NOT: Statements
 
 @global = external global [300 x i8], align 16
- at global1 = external global %struct.hoge*, align 8
+ at global1 = external global ptr, align 8
 @global2 = external unnamed_addr constant [79 x i8], align 1
 @global3 = external unnamed_addr constant [57 x i8], align 1
 
 declare void @widget() #0
 
 ; Function Attrs: nounwind
-declare void @quux(i8*, i64, i8*, ...) #1
+declare void @quux(ptr, i64, ptr, ...) #1
 
 ; Function Attrs: nounwind uwtable
-define void @hoge(float* %A) #2 {
+define void @hoge(ptr %A) #2 {
 bb:
   br label %bb15
 
 bb15:                                             ; preds = %bb
-  %tmp = load %struct.hoge*, %struct.hoge** @global1, align 8, !tbaa !1
-  %tmp16 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp, i64 0, i32 153
-  store float 1.0, float* %A
-  %tmp17 = load i32, i32* %tmp16, align 4, !tbaa !5
+  %tmp = load ptr, ptr @global1, align 8, !tbaa !1
+  %tmp16 = getelementptr inbounds %struct.hoge, ptr %tmp, i64 0, i32 153
+  store float 1.0, ptr %A
+  %tmp17 = load i32, ptr %tmp16, align 4, !tbaa !5
   %tmp18 = icmp eq i32 %tmp17, 0
   br i1 %tmp18, label %bb24, label %bb19
 
 bb19:                                             ; preds = %bb15
-  %tmp20 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp, i64 0, i32 50
-  store float 1.0, float* %A
-  %tmp21 = load i32, i32* %tmp20, align 8, !tbaa !9
+  %tmp20 = getelementptr inbounds %struct.hoge, ptr %tmp, i64 0, i32 50
+  store float 1.0, ptr %A
+  %tmp21 = load i32, ptr %tmp20, align 8, !tbaa !9
   %tmp22 = icmp eq i32 %tmp21, 0
   br i1 %tmp22, label %bb24, label %bb23
 
@@ -43,44 +43,43 @@ bb23:                                             ; preds = %bb19
   br label %bb24
 
 bb24:                                             ; preds = %bb23, %bb19, %bb15
-  %tmp25 = load %struct.hoge*, %struct.hoge** @global1, align 8, !tbaa !1
-  store float 1.0, float* %A
-  %tmp26 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp25, i64 0, i32 16
-  %tmp27 = load i32, i32* %tmp26, align 8, !tbaa !10
+  %tmp25 = load ptr, ptr @global1, align 8, !tbaa !1
+  store float 1.0, ptr %A
+  %tmp26 = getelementptr inbounds %struct.hoge, ptr %tmp25, i64 0, i32 16
+  %tmp27 = load i32, ptr %tmp26, align 8, !tbaa !10
   %tmp28 = icmp eq i32 %tmp27, 3
   br i1 %tmp28, label %bb29, label %bb34
 
 bb29:                                             ; preds = %bb24
-  %tmp30 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp25, i64 0, i32 0
-  store float 1.0, float* %A
-  %tmp31 = load i32, i32* %tmp30, align 8, !tbaa !11
+  store float 1.0, ptr %A
+  %tmp31 = load i32, ptr %tmp25, align 8, !tbaa !11
   %tmp32 = icmp slt i32 %tmp31, 144
   br i1 %tmp32, label %bb33, label %bb34
 
 bb33:                                             ; preds = %bb29
-  call void (i8*, i64, i8*, ...) @quux(i8* getelementptr inbounds ([300 x i8], [300 x i8]* @global, i64 0, i64 0), i64 300, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @global2, i64 0, i64 0), i32 144) #3
+  call void (ptr, i64, ptr, ...) @quux(ptr @global, i64 300, ptr @global2, i32 144) #3
   br label %bb34
 
 bb34:                                             ; preds = %bb33, %bb29, %bb24
-  %tmp35 = load %struct.hoge*, %struct.hoge** @global1, align 8, !tbaa !1
-  store float 1.0, float* %A
-  %tmp36 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp35, i64 0, i32 40
-  %tmp37 = load i32, i32* %tmp36, align 8, !tbaa !12
+  %tmp35 = load ptr, ptr @global1, align 8, !tbaa !1
+  store float 1.0, ptr %A
+  %tmp36 = getelementptr inbounds %struct.hoge, ptr %tmp35, i64 0, i32 40
+  %tmp37 = load i32, ptr %tmp36, align 8, !tbaa !12
   %tmp38 = icmp eq i32 %tmp37, 0
   br i1 %tmp38, label %bb49, label %bb39
 
 bb39:                                             ; preds = %bb34
-  %tmp40 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp35, i64 0, i32 46
-  store float 1.0, float* %A
-  %tmp41 = load i32, i32* %tmp40, align 8, !tbaa !13
+  %tmp40 = getelementptr inbounds %struct.hoge, ptr %tmp35, i64 0, i32 46
+  store float 1.0, ptr %A
+  %tmp41 = load i32, ptr %tmp40, align 8, !tbaa !13
   %tmp42 = icmp eq i32 %tmp41, 0
   br i1 %tmp42, label %bb49, label %bb43
 
 bb43:                                             ; preds = %bb39
-  %tmp44 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp35, i64 0, i32 7
-  store float 1.0, float* %A
-  %tmp45 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp35, i64 0, i32 48
-  %tmp46 = load i32, i32* %tmp45, align 8, !tbaa !14
+  %tmp44 = getelementptr inbounds %struct.hoge, ptr %tmp35, i64 0, i32 7
+  store float 1.0, ptr %A
+  %tmp45 = getelementptr inbounds %struct.hoge, ptr %tmp35, i64 0, i32 48
+  %tmp46 = load i32, ptr %tmp45, align 8, !tbaa !14
   %tmp47 = icmp slt i32 0, %tmp46
   br i1 %tmp47, label %bb48, label %bb49
 
@@ -89,29 +88,29 @@ bb48:                                             ; preds = %bb43
   br label %bb49
 
 bb49:                                             ; preds = %bb48, %bb43, %bb39, %bb34
-  store float 1.0, float* %A
-  %tmp50 = load %struct.hoge*, %struct.hoge** @global1, align 8, !tbaa !1
-  %tmp51 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp50, i64 0, i32 198
-  %tmp52 = load i32, i32* %tmp51, align 8, !tbaa !15
+  store float 1.0, ptr %A
+  %tmp50 = load ptr, ptr @global1, align 8, !tbaa !1
+  %tmp51 = getelementptr inbounds %struct.hoge, ptr %tmp50, i64 0, i32 198
+  %tmp52 = load i32, ptr %tmp51, align 8, !tbaa !15
   %tmp53 = icmp eq i32 %tmp52, 0
   br i1 %tmp53, label %bb59, label %bb54
 
 bb54:                                             ; preds = %bb49
-  store float 1.0, float* %A
-  %tmp55 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp50, i64 0, i32 16
-  %tmp56 = load i32, i32* %tmp55, align 8, !tbaa !10
+  store float 1.0, ptr %A
+  %tmp55 = getelementptr inbounds %struct.hoge, ptr %tmp50, i64 0, i32 16
+  %tmp56 = load i32, ptr %tmp55, align 8, !tbaa !10
   %tmp57 = icmp eq i32 %tmp56, 0
   br i1 %tmp57, label %bb58, label %bb59
 
 bb58:                                             ; preds = %bb54
-  call void (i8*, i64, i8*, ...) @quux(i8* getelementptr inbounds ([300 x i8], [300 x i8]* @global, i64 0, i64 0), i64 300, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @global3, i64 0, i64 0)) #3
+  call void (ptr, i64, ptr, ...) @quux(ptr @global, i64 300, ptr @global3) #3
   br label %bb59
 
 bb59:                                             ; preds = %bb58, %bb54, %bb49
-  store float 1.0, float* %A
-  %tmp60 = load %struct.hoge*, %struct.hoge** @global1, align 8, !tbaa !1
-  %tmp61 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp60, i64 0, i32 31
-  %tmp62 = load i32, i32* %tmp61, align 4, !tbaa !16
+  store float 1.0, ptr %A
+  %tmp60 = load ptr, ptr @global1, align 8, !tbaa !1
+  %tmp61 = getelementptr inbounds %struct.hoge, ptr %tmp60, i64 0, i32 31
+  %tmp62 = load i32, ptr %tmp61, align 4, !tbaa !16
   %tmp63 = icmp eq i32 %tmp62, 0
   br i1 %tmp63, label %bb65, label %bb64
 

diff  --git a/polly/test/ScopInfo/long-sequence-of-error-blocks.ll b/polly/test/ScopInfo/long-sequence-of-error-blocks.ll
index 2b4553e6d4da7..5b6ea9cc212dc 100644
--- a/polly/test/ScopInfo/long-sequence-of-error-blocks.ll
+++ b/polly/test/ScopInfo/long-sequence-of-error-blocks.ll
@@ -4,7 +4,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-%struct.hoge = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [8 x [2 x i32]], [8 x [2 x i32]], [4 x [4 x i32]], i32, i32, i32, i32, [256 x i8], [256 x i8], [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, [500 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [1024 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], i32, i32, i32*, i32*, i8*, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, [5 x double], i32, [8 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [6 x double], [6 x double], [256 x i8], i32, i32, i32, i32, [2 x [5 x i32]], [2 x [5 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i32 }
+%struct.hoge = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [8 x [2 x i32]], [8 x [2 x i32]], [4 x [4 x i32]], i32, i32, i32, i32, [256 x i8], [256 x i8], [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, [500 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [1024 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], [256 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i8], i32, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, [5 x double], i32, [8 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [6 x double], [6 x double], [256 x i8], i32, i32, i32, i32, [2 x [5 x i32]], [2 x [5 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i32 }
 
 ; This test case contains a long sequence of branch instructions together with
 ; function calls that are considered 'error blocks'. We verify that the
@@ -47,32 +47,32 @@ target triple = "x86_64-unknown-linux-gnu"
 ; CHECK-NEXT: }
 
 @global = external global [300 x i8], align 16
- at global1 = external global %struct.hoge*, align 8
+ at global1 = external global ptr, align 8
 @global2 = external unnamed_addr constant [79 x i8], align 1
 @global3 = external unnamed_addr constant [57 x i8], align 1
 
 declare void @widget() #0
 
 ; Function Attrs: nounwind
-declare void @quux(i8*, i64, i8*, ...) #1
+declare void @quux(ptr, i64, ptr, ...) #1
 
 ; Function Attrs: nounwind uwtable
-define void @hoge(float* %A) #2 {
+define void @hoge(ptr %A) #2 {
 bb:
   br label %bb15
 
 bb15:                                             ; preds = %bb
-  %tmp = load %struct.hoge*, %struct.hoge** @global1, align 8, !tbaa !1
-  %tmp16 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp, i64 0, i32 153
-  store float 1.0, float* %A
-  %tmp17 = load i32, i32* %tmp16, align 4, !tbaa !5
+  %tmp = load ptr, ptr @global1, align 8, !tbaa !1
+  %tmp16 = getelementptr inbounds %struct.hoge, ptr %tmp, i64 0, i32 153
+  store float 1.0, ptr %A
+  %tmp17 = load i32, ptr %tmp16, align 4, !tbaa !5
   %tmp18 = icmp eq i32 %tmp17, 0
   br i1 %tmp18, label %bb24, label %bb19
 
 bb19:                                             ; preds = %bb15
-  %tmp20 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp, i64 0, i32 50
-  store float 1.0, float* %A
-  %tmp21 = load i32, i32* %tmp20, align 8, !tbaa !9
+  %tmp20 = getelementptr inbounds %struct.hoge, ptr %tmp, i64 0, i32 50
+  store float 1.0, ptr %A
+  %tmp21 = load i32, ptr %tmp20, align 8, !tbaa !9
   %tmp22 = icmp eq i32 %tmp21, 0
   br i1 %tmp22, label %bb24, label %bb23
 
@@ -81,22 +81,21 @@ bb23:                                             ; preds = %bb19
   br label %bb24
 
 bb24:                                             ; preds = %bb23, %bb19, %bb15
-  %tmp25 = load %struct.hoge*, %struct.hoge** @global1, align 8, !tbaa !1
-  store float 1.0, float* %A
-  %tmp26 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp25, i64 0, i32 16
-  %tmp27 = load i32, i32* %tmp26, align 8, !tbaa !10
+  %tmp25 = load ptr, ptr @global1, align 8, !tbaa !1
+  store float 1.0, ptr %A
+  %tmp26 = getelementptr inbounds %struct.hoge, ptr %tmp25, i64 0, i32 16
+  %tmp27 = load i32, ptr %tmp26, align 8, !tbaa !10
   %tmp28 = icmp eq i32 %tmp27, 3
   br i1 %tmp28, label %bb29, label %bb34
 
 bb29:                                             ; preds = %bb24
-  %tmp30 = getelementptr inbounds %struct.hoge, %struct.hoge* %tmp25, i64 0, i32 0
-  store float 1.0, float* %A
-  %tmp31 = load i32, i32* %tmp30, align 8, !tbaa !11
+  store float 1.0, ptr %A
+  %tmp31 = load i32, ptr %tmp25, align 8, !tbaa !11
   %tmp32 = icmp slt i32 %tmp31, 144
   br i1 %tmp32, label %bb33, label %bb34
 
 bb33:                                             ; preds = %bb29
-  call void (i8*, i64, i8*, ...) @quux(i8* getelementptr inbounds ([300 x i8], [300 x i8]* @global, i64 0, i64 0), i64 300, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @global2, i64 0, i64 0), i32 144) #3
+  call void (ptr, i64, ptr, ...) @quux(ptr @global, i64 300, ptr @global2, i32 144) #3
   br label %bb34
 
 bb34:                                             ; preds = %bb33, %bb29, %bb24

diff  --git a/polly/test/ScopInfo/loop-multiexit-succ-cond.ll b/polly/test/ScopInfo/loop-multiexit-succ-cond.ll
index bf6529b5c9d3a..350db05c6dc03 100644
--- a/polly/test/ScopInfo/loop-multiexit-succ-cond.ll
+++ b/polly/test/ScopInfo/loop-multiexit-succ-cond.ll
@@ -39,7 +39,7 @@
 
 declare void @g();
 
-define void @func(i64 %count1, i64 %count2, i32 %dobreak, float* %A) {
+define void @func(i64 %count1, i64 %count2, i32 %dobreak, ptr %A) {
 entry:
   %fadd = fadd float undef, undef
   br label %loopguard
@@ -50,7 +50,7 @@ loopguard:
 
 
 loop_enter:
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   br label %loop_header
 
 loop_header:
@@ -66,7 +66,7 @@ loop_continue:
 
 
 loop_break:
-  store float 2.0, float* %A
+  store float 2.0, ptr %A
   br label %loop_break_error
 
 loop_break_error:
@@ -79,7 +79,7 @@ loop_break_g:
 
 
 loop_finish:
-    store float 3.0, float* %A
+    store float 3.0, ptr %A
   br label %loop_finish_error
 
 loop_finish_error:
@@ -88,7 +88,7 @@ loop_finish_error:
 
 
 loop_skip:
-  store float 4.0, float* %A
+  store float 4.0, ptr %A
   br label %loop_skip_error
 
 loop_skip_error:
@@ -98,6 +98,6 @@ loop_skip_error:
 
 return:
   %phi = phi float [ 0.0, %loop_finish_error ], [ 0.0, %loop_break_error ], [ 2.0, %loop_break_g ], [ 3.0, %loop_skip_error ]
-  store float 1.0, float* %A
+  store float 1.0, ptr %A
   ret void
 }

diff  --git a/polly/test/ScopInfo/loop_affine_bound_0.ll b/polly/test/ScopInfo/loop_affine_bound_0.ll
index e029082c5a6c9..33f49df7780f7 100644
--- a/polly/test/ScopInfo/loop_affine_bound_0.ll
+++ b/polly/test/ScopInfo/loop_affine_bound_0.ll
@@ -10,7 +10,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"
 
-define void @f([128 x i64]* nocapture %a, i64 %N, i64 %M) nounwind {
+define void @f(ptr nocapture %a, i64 %N, i64 %M) nounwind {
 entry:
   %0 = shl i64 %N, 2                              ; <i64> [#uses=2]
   %1 = mul i64 %M, 7                              ; <i64> [#uses=2]
@@ -21,8 +21,8 @@ entry:
 
 bb1:                                              ; preds = %bb2.preheader, %bb1
   %i.06 = phi i64 [ 0, %bb2.preheader ], [ %5, %bb1 ] ; <i64> [#uses=2]
-  %scevgep = getelementptr [128 x i64], [128 x i64]* %a, i64 %i.06, i64 %10 ; <i64*> [#uses=1]
-  store i64 0, i64* %scevgep, align 8
+  %scevgep = getelementptr [128 x i64], ptr %a, i64 %i.06, i64 %10 ; <ptr> [#uses=1]
+  store i64 0, ptr %scevgep, align 8
   %5 = add nsw i64 %i.06, 1                       ; <i64> [#uses=2]
   %exitcond = icmp eq i64 %5, %8                  ; <i1> [#uses=1]
   br i1 %exitcond, label %bb3, label %bb1

diff  --git a/polly/test/ScopInfo/loop_affine_bound_1.ll b/polly/test/ScopInfo/loop_affine_bound_1.ll
index 7c58d201308da..38e47b74465bd 100644
--- a/polly/test/ScopInfo/loop_affine_bound_1.ll
+++ b/polly/test/ScopInfo/loop_affine_bound_1.ll
@@ -10,7 +10,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"
 
-define void @f([128 x i64]* nocapture %a, i64 %N, i64 %M) nounwind {
+define void @f(ptr nocapture %a, i64 %N, i64 %M) nounwind {
 entry:
   %0 = shl i64 %N, 2                              ; <i64> [#uses=2]
   %1 = mul i64 %M, 7                              ; <i64> [#uses=2]
@@ -21,8 +21,8 @@ entry:
 
 bb1:                                              ; preds = %bb2.preheader, %bb1
   %indvar = phi i64 [ 0, %bb2.preheader ], [ %indvar.next, %bb1 ] ; <i64> [#uses=2]
-  %scevgep = getelementptr [128 x i64], [128 x i64]* %a, i64 %indvar, i64 %tmp10 ; <i64*> [#uses=1]
-  store i64 0, i64* %scevgep, align 8
+  %scevgep = getelementptr [128 x i64], ptr %a, i64 %indvar, i64 %tmp10 ; <ptr> [#uses=1]
+  store i64 0, ptr %scevgep, align 8
   %indvar.next = add i64 %indvar, 1               ; <i64> [#uses=2]
   %exitcond = icmp sge i64 %indvar.next, %tmp9     ; <i1> [#uses=1]
   br i1 %exitcond, label %bb3, label %bb1

diff  --git a/polly/test/ScopInfo/loop_affine_bound_2.ll b/polly/test/ScopInfo/loop_affine_bound_2.ll
index a5e5de18de383..e34662f4e6abc 100644
--- a/polly/test/ScopInfo/loop_affine_bound_2.ll
+++ b/polly/test/ScopInfo/loop_affine_bound_2.ll
@@ -10,7 +10,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"
 
-define void @f([128 x i64]* nocapture %a, i64 %N, i64 %M) nounwind {
+define void @f(ptr nocapture %a, i64 %N, i64 %M) nounwind {
 entry:
   %0 = shl i64 %N, 2
   %1 = mul i64 %M, 7
@@ -46,8 +46,8 @@ bb:                                               ; preds = %bb3, %bb.nph8
 bb1:                                              ; preds = %bb1, %bb
   %indvar = phi i64 [ 0, %bb ], [ %indvar.next, %bb1 ]
   %tmp16 = add i64 %indvar, %tmp15
-  %scevgep = getelementptr [128 x i64], [128 x i64]* %a, i64 %tmp16, i64 %tmp17
-  store i64 0, i64* %scevgep
+  %scevgep = getelementptr [128 x i64], ptr %a, i64 %tmp16, i64 %tmp17
+  store i64 0, ptr %scevgep
   %indvar.next = add i64 %indvar, 1
   %exitcond = icmp eq i64 %indvar.next, %tmp13
   br i1 %exitcond, label %bb3, label %bb1

diff  --git a/polly/test/ScopInfo/loop_carry.ll b/polly/test/ScopInfo/loop_carry.ll
index 786837c185656..f7c1dca0919cf 100644
--- a/polly/test/ScopInfo/loop_carry.ll
+++ b/polly/test/ScopInfo/loop_carry.ll
@@ -12,14 +12,14 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ;  return 0;
 ;}
 
-define i64 @f(i64* nocapture %a, i64 %n) nounwind {
+define i64 @f(ptr nocapture %a, i64 %n) nounwind {
 entry:
   %0 = icmp sgt i64 %n, 1                         ; <i1> [#uses=1]
   br i1 %0, label %bb.nph, label %bb2
 
 bb.nph:                                           ; preds = %entry
   %tmp = add i64 %n, -1                           ; <i64> [#uses=1]
-  %.pre = load i64, i64* %a, align 8                   ; <i64> [#uses=1]
+  %.pre = load i64, ptr %a, align 8                   ; <i64> [#uses=1]
   br label %bb
 
 bb:                                               ; preds = %bb, %bb.nph
@@ -27,16 +27,16 @@ bb:                                               ; preds = %bb, %bb.nph
   %indvar = phi i64 [ 0, %bb.nph ], [ %tmp6, %bb ] ; <i64> [#uses=3]
   %k.05 = phi i64 [ 1, %bb.nph ], [ %tmp5, %bb ]     ; <i64> [#uses=1]
   %tmp6 = add i64 %indvar, 1                      ; <i64> [#uses=3]
-  %scevgep = getelementptr i64, i64* %a, i64 %tmp6     ; <i64*> [#uses=1]
+  %scevgep = getelementptr i64, ptr %a, i64 %tmp6     ; <ptr> [#uses=1]
   %tmp2 = mul nsw i64 %tmp1, %k.05                      ; <i64> [#uses=2]
-  store i64 %tmp2, i64* %scevgep, align 8
+  store i64 %tmp2, ptr %scevgep, align 8
   %tmp7 = shl i64 %indvar, 1                      ; <i64> [#uses=1]
   %tmp11 = add i64 %indvar, 4                     ; <i64> [#uses=1]
   %tmp8 = add i64 %tmp7, 2                        ; <i64> [#uses=1]
-  %scevgep12 = getelementptr i64, i64* %a, i64 %tmp11  ; <i64*> [#uses=1]
-  %scevgep9 = getelementptr i64, i64* %a, i64 %tmp8    ; <i64*> [#uses=1]
-  %tmp3 = load i64, i64* %scevgep9, align 8               ; <i64> [#uses=1]
-  %tmp4 = load i64, i64* %scevgep12, align 8              ; <i64> [#uses=1]
+  %scevgep12 = getelementptr i64, ptr %a, i64 %tmp11  ; <ptr> [#uses=1]
+  %scevgep9 = getelementptr i64, ptr %a, i64 %tmp8    ; <ptr> [#uses=1]
+  %tmp3 = load i64, ptr %scevgep9, align 8               ; <i64> [#uses=1]
+  %tmp4 = load i64, ptr %scevgep12, align 8              ; <i64> [#uses=1]
   %tmp5 = add nsw i64 %tmp3, %tmp4                         ; <i64> [#uses=1]
   %exitcond = icmp eq i64 %tmp6, %tmp             ; <i1> [#uses=1]
   br i1 %exitcond, label %bb2, label %bb

diff  --git a/polly/test/ScopInfo/many-scalar-dependences.ll b/polly/test/ScopInfo/many-scalar-dependences.ll
index 962a42ac8604f..aaa02f581a1cd 100644
--- a/polly/test/ScopInfo/many-scalar-dependences.ll
+++ b/polly/test/ScopInfo/many-scalar-dependences.ll
@@ -147,7 +147,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f([100 x float]* %a) {
+define void @f(ptr %a) {
 bb:
   br label %bb5
 
@@ -184,10 +184,10 @@ bb11:                                             ; preds = %bb10
 
 bb12:                                             ; preds = %bb11, %bb10
   %x.3 = phi float [ 4.200000e+01, %bb11 ], [ %x.2, %bb10 ]
-  %tmp13 = getelementptr inbounds [100 x float], [100 x float]* %a, i64 %indvars.iv2, i64 %indvars.iv
-  %tmp14 = load float, float* %tmp13, align 4
+  %tmp13 = getelementptr inbounds [100 x float], ptr %a, i64 %indvars.iv2, i64 %indvars.iv
+  %tmp14 = load float, ptr %tmp13, align 4
   %tmp15 = fadd float %tmp14, %x.3
-  store float %tmp15, float* %tmp13, align 4
+  store float %tmp15, ptr %tmp13, align 4
   br label %bb16
 
 bb16:                                             ; preds = %bb12

diff  --git a/polly/test/ScopInfo/max-loop-depth.ll b/polly/test/ScopInfo/max-loop-depth.ll
index 3e69c08ff5b9a..3c7db44586046 100644
--- a/polly/test/ScopInfo/max-loop-depth.ll
+++ b/polly/test/ScopInfo/max-loop-depth.ll
@@ -16,7 +16,7 @@
 ; CHECK: Max Loop Depth: 1
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i32* %A, i32* %B, i64 %N, i64 %M) {
+define void @foo(ptr %A, ptr %B, i64 %N, i64 %M) {
 entry:
   %cmp1 = icmp slt i64 0, %M
   br i1 %cmp1, label %for.body1, label %for.end1
@@ -29,10 +29,10 @@ entry:
 
   for.body2:                                        ; preds = %for.body1, %for.inc2
     %i.1 = phi i64 [ 0, %for.body1 ], [ %i.next.1, %for.inc2 ]
-    %arrayidx = getelementptr inbounds i32, i32* %A, i64 %i.1
-    %tmp = load i32, i32* %arrayidx, align 4
+    %arrayidx = getelementptr inbounds i32, ptr %A, i64 %i.1
+    %tmp = load i32, ptr %arrayidx, align 4
     %add = add nsw i32 %tmp, 1
-    store i32 %add, i32* %arrayidx, align 4
+    store i32 %add, ptr %arrayidx, align 4
     br label %for.inc2
 
   for.inc2:                                          ; preds = %for.body2
@@ -47,10 +47,10 @@ entry:
 
   for.body3:					   ; preds = %for.end2
     %i.2 = phi i64 [ 0, %for.end2 ], [ %i.next.2, %for.inc3 ]
-    %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %i.2
-    %tmp1 = load i32, i32* %arrayidx1, align 4
+    %arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %i.2
+    %tmp1 = load i32, ptr %arrayidx1, align 4
     %add1 = add nsw i32 %tmp1, 1
-    store i32 %add1, i32* %arrayidx1, align 4
+    store i32 %add1, ptr %arrayidx1, align 4
     br label %for.inc3
 
   for.inc3:					  ; preds = %for.body3

diff  --git a/polly/test/ScopInfo/memcpy-raw-source.ll b/polly/test/ScopInfo/memcpy-raw-source.ll
index 2612b2abdc538..137ab82292205 100644
--- a/polly/test/ScopInfo/memcpy-raw-source.ll
+++ b/polly/test/ScopInfo/memcpy-raw-source.ll
@@ -8,7 +8,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @tonemasks = external global [17 x [6 x [56 x float]]], align 16
 
 ; Function Attrs: argmemonly nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #0
+declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i32, i1) #0
 
 ; Function Attrs: nounwind uwtable
 define void @setup_tone_curves() #1 {
@@ -24,27 +24,20 @@ for.cond7.preheader:                              ; preds = %for.cond7.preheader
 
 for.body36:                                       ; preds = %for.body36, %for.cond7.preheader
   %indvars.iv49 = phi i64 [ %indvars.iv.next50, %for.body36 ], [ 0, %for.cond7.preheader ]
-  %arraydecay42 = getelementptr inbounds [17 x [8 x [56 x float]]], [17 x [8 x [56 x float]]]* %workc, i64 0, i64 0, i64 0, i64 0
-  %0 = bitcast float* %arraydecay42 to i8*
-  %arraydecay47 = getelementptr inbounds [17 x [6 x [56 x float]]], [17 x [6 x [56 x float]]]* @tonemasks, i64 0, i64 0, i64 %indvars.iv49, i64 0
-  %1 = bitcast float* %arraydecay47 to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 224, i32 16, i1 false)
+  %arraydecay47 = getelementptr inbounds [17 x [6 x [56 x float]]], ptr @tonemasks, i64 0, i64 0, i64 %indvars.iv49, i64 0
+  call void @llvm.memcpy.p0.p0.i64(ptr %workc, ptr %arraydecay47, i64 224, i32 16, i1 false)
   %indvars.iv.next50 = add nuw nsw i64 %indvars.iv49, 1
   br i1 false, label %for.body36, label %for.end50
 
 for.end50:                                        ; preds = %for.body36
-  %arrayidx38 = getelementptr inbounds [17 x [8 x [56 x float]]], [17 x [8 x [56 x float]]]* %workc, i64 0, i64 0
-  %2 = bitcast [8 x [56 x float]]* %arrayidx38 to i8*
-  %arraydecay58 = getelementptr inbounds [17 x [6 x [56 x float]]], [17 x [6 x [56 x float]]]* @tonemasks, i64 0, i64 0, i64 0, i64 0
-  %3 = bitcast float* %arraydecay58 to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 224, i32 16, i1 false)
+  call void @llvm.memcpy.p0.p0.i64(ptr %workc, ptr @tonemasks, i64 224, i32 16, i1 false)
   br label %for.body74
 
 for.body74:                                       ; preds = %for.body74, %for.end50
   %indvars.iv53 = phi i64 [ %indvars.iv.next54, %for.body74 ], [ 0, %for.end50 ]
-  %arrayidx99 = getelementptr inbounds [17 x [8 x [56 x float]]], [17 x [8 x [56 x float]]]* %workc, i64 0, i64 0, i64 0, i64 %indvars.iv53
-  %4 = load float, float* %arrayidx99, align 4
-  store float undef, float* %arrayidx99, align 4
+  %arrayidx99 = getelementptr inbounds [17 x [8 x [56 x float]]], ptr %workc, i64 0, i64 0, i64 0, i64 %indvars.iv53
+  %0 = load float, ptr %arrayidx99, align 4
+  store float undef, ptr %arrayidx99, align 4
   %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 1
   %exitcond57 = icmp ne i64 %indvars.iv.next54, 56
   br i1 %exitcond57, label %for.body74, label %for.inc104

diff  --git a/polly/test/ScopInfo/memset.ll b/polly/test/ScopInfo/memset.ll
index 85c28ec116f96..ef86b4c275e5b 100644
--- a/polly/test/ScopInfo/memset.ll
+++ b/polly/test/ScopInfo/memset.ll
@@ -13,10 +13,9 @@
 ; CHECK-NEXT:            MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                { Stmt_for_body3[i0, i1] -> MemRef_A[o0] : 0 <= o0 <= 186 };
 ;
-; IR:   %[[r1:[a-zA-Z0-9]*]] = bitcast i32* %A to i8*
 ;
 ; IR: polly.stmt.for.body3:
-; IR:   call void @llvm.memset.p0i8.i64(i8* align 4 %[[r1]], i8 36, i64 187, i1 false)
+; IR:   call void @llvm.memset.p0.i64(ptr align 4 %A, i8 36, i64 187, i1 false)
 ;
 ;    #include <string.h>
 ;
@@ -28,7 +27,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* noalias %A) {
+define void @jd(ptr noalias %A) {
 entry:
   br label %for.cond
 
@@ -46,8 +45,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %tmp = bitcast i32* %A to i8*
-  call void @llvm.memset.p0i8.i64(i8* %tmp, i8 36, i64 187, i32 4, i1 false)
+  call void @llvm.memset.p0.i64(ptr %A, i8 36, i64 187, i32 4, i1 false)
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3
@@ -65,5 +63,5 @@ for.end6:                                         ; preds = %for.cond
   ret void
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #1
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) #1
 

diff  --git a/polly/test/ScopInfo/memset_null.ll b/polly/test/ScopInfo/memset_null.ll
index d1ae8481c85a2..1608ff6ebef4c 100644
--- a/polly/test/ScopInfo/memset_null.ll
+++ b/polly/test/ScopInfo/memset_null.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-i64:64-i128:128-n8:16:32:64-S128"
 
-define void @test(i32* %A) {
+define void @test(ptr %A) {
 entry:
   br i1 undef, label %for.end68, label %for.cond5.preheader.lr.ph
 
@@ -26,12 +26,12 @@ for.cond5.preheader.lr.ph:                        ; preds = %entry
   br label %for.cond5.preheader.us221
 
 for.cond5.preheader.us221:                        ; preds = %for.cond5.preheader.us221, %for.cond5.preheader.lr.ph
-  store i32 0, i32* %A
-  call void @llvm.memset.p0i8.i64(i8* null, i8 0, i64 undef, i32 1, i1 false)
+  store i32 0, ptr %A
+  call void @llvm.memset.p0.i64(ptr null, i8 0, i64 undef, i32 1, i1 false)
   br i1 true, label %for.end68, label %for.cond5.preheader.us221
 
 for.end68:                                        ; preds = %for.cond5.preheader.us221, %entry
   ret void
 }
 
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1)
+declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1)

diff  --git a/polly/test/ScopInfo/mismatching-array-dimensions.ll b/polly/test/ScopInfo/mismatching-array-dimensions.ll
index 10edd12eeef2d..a1c6d4e821272 100644
--- a/polly/test/ScopInfo/mismatching-array-dimensions.ll
+++ b/polly/test/ScopInfo/mismatching-array-dimensions.ll
@@ -6,7 +6,7 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.9.0"
 
 ; Function Attrs: nounwind ssp uwtable
-define void @hoge([38 x [64 x float]]* %arg, [32 x [2 x float]]* %arg5, i32 %arg6) #0 {
+define void @hoge(ptr %arg, ptr %arg5, i32 %arg6) #0 {
 bb:
   br i1 undef, label %bb7, label %bb25
 
@@ -16,15 +16,12 @@ bb7:                                              ; preds = %bb21, %bb
   br i1 %tmp9, label %bb10, label %bb21
 
 bb10:                                             ; preds = %bb10, %bb7
-  %tmp11 = getelementptr inbounds [32 x [2 x float]], [32 x [2 x float]]* %arg5, i64 %tmp8, i64 0
-  %tmp = bitcast [2 x float]* %tmp11 to i32*
-  %tmp12 = load i32, i32* %tmp, align 4, !tbaa !4
-  %tmp13 = getelementptr inbounds [32 x [2 x float]], [32 x [2 x float]]* %arg5, i64 %tmp8, i64 0, i64 1
-  %tmp14 = bitcast float* %tmp13 to i32*
-  %tmp15 = load i32, i32* %tmp14, align 4, !tbaa !4
-  %tmp16 = getelementptr inbounds [38 x [64 x float]], [38 x [64 x float]]* %arg, i64 1, i64 0, i64 %tmp8
-  %tmp17 = bitcast float* %tmp16 to i32*
-  store i32 %tmp15, i32* %tmp17, align 4, !tbaa !4
+  %tmp11 = getelementptr inbounds [32 x [2 x float]], ptr %arg5, i64 %tmp8, i64 0
+  %tmp12 = load i32, ptr %tmp11, align 4, !tbaa !4
+  %tmp13 = getelementptr inbounds [32 x [2 x float]], ptr %arg5, i64 %tmp8, i64 0, i64 1
+  %tmp15 = load i32, ptr %tmp13, align 4, !tbaa !4
+  %tmp16 = getelementptr inbounds [38 x [64 x float]], ptr %arg, i64 1, i64 0, i64 %tmp8
+  store i32 %tmp15, ptr %tmp16, align 4, !tbaa !4
   %tmp18 = add nuw nsw i64 0, 1
   %tmp19 = trunc i64 %tmp18 to i32
   %tmp20 = icmp ne i32 %tmp19, %arg6

diff  --git a/polly/test/ScopInfo/mod_ref_access_pointee_arguments.ll b/polly/test/ScopInfo/mod_ref_access_pointee_arguments.ll
index 7b624ee42696c..72889324e37ef 100644
--- a/polly/test/ScopInfo/mod_ref_access_pointee_arguments.ll
+++ b/polly/test/ScopInfo/mod_ref_access_pointee_arguments.ll
@@ -27,18 +27,17 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* noalias %A, i32* noalias %B) {
+define void @jd(ptr noalias %A, ptr noalias %B) {
 entry:
   br label %for.body
 
 for.body:                                         ; preds = %entry, %for.inc
   %i = phi i64 [ 0, %entry ], [ %i.next, %for.inc ]
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %i
-  %arrayidx1 = getelementptr inbounds i32, i32* %B, i64 %i
-  %bc = bitcast i32* %arrayidx to i8*
-  call void @f(i8* %bc, i32 1, i32 1, i32 1)
-  %tmp = load i32, i32* %arrayidx1
-  store i32 %tmp, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %i
+  %arrayidx1 = getelementptr inbounds i32, ptr %B, i64 %i
+  call void @f(ptr %arrayidx, i32 1, i32 1, i32 1)
+  %tmp = load i32, ptr %arrayidx1
+  store i32 %tmp, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -50,6 +49,6 @@ for.end:                                          ; preds = %for.inc
   ret void
 }
 
-declare void @f(i8*, i32, i32, i32) #0
+declare void @f(ptr, i32, i32, i32) #0
 
 attributes #0 = { argmemonly nounwind }

diff  --git a/polly/test/ScopInfo/mod_ref_read_pointee_arguments.ll b/polly/test/ScopInfo/mod_ref_read_pointee_arguments.ll
index 7b9f494ecbe03..2f6c6792fd9d2 100644
--- a/polly/test/ScopInfo/mod_ref_read_pointee_arguments.ll
+++ b/polly/test/ScopInfo/mod_ref_read_pointee_arguments.ll
@@ -31,9 +31,9 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* noalias %A, i32* noalias %B) gc "dummy" {
+define void @jd(ptr noalias %A, ptr noalias %B) gc "dummy" {
 entry:
-  %dummyloc = alloca i8*
+  %dummyloc = alloca ptr
   br label %entry.split
 
 entry.split:					  ; preds = %entry
@@ -41,13 +41,12 @@ entry.split:					  ; preds = %entry
 
 for.body:                                         ; preds = %entry.split, %for.inc
   %i = phi i64 [ 0, %entry.split ], [ %i.next, %for.inc ]
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %i
-  %arrayidx1 = getelementptr inbounds i32, i32* %B, i64 %i
-  %bc = bitcast i32* %arrayidx to i8*
-  %dummy = call i8* @f(i8* %bc, i8** null)
-  store i8* %dummy, i8** %dummyloc, align 4
-  %tmp = load i32, i32* %arrayidx1
-  store i32 %tmp, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %i
+  %arrayidx1 = getelementptr inbounds i32, ptr %B, i64 %i
+  %dummy = call ptr @f(ptr %arrayidx, ptr null)
+  store ptr %dummy, ptr %dummyloc, align 4
+  %tmp = load i32, ptr %arrayidx1
+  store i32 %tmp, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -59,6 +58,6 @@ for.end:                                          ; preds = %for.inc
   ret void
 }
 
-declare i8* @f(i8*, i8**) #0
+declare ptr @f(ptr, ptr) #0
 
 attributes #0 = { argmemonly readonly nounwind }

diff  --git a/polly/test/ScopInfo/mod_ref_read_pointer.ll b/polly/test/ScopInfo/mod_ref_read_pointer.ll
index c66d7f4be4427..657e37c68a7bb 100644
--- a/polly/test/ScopInfo/mod_ref_read_pointer.ll
+++ b/polly/test/ScopInfo/mod_ref_read_pointer.ll
@@ -23,16 +23,16 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A) {
+define void @jd(ptr %A) {
 entry:
   br label %for.body
 
 for.body:                                         ; preds = %entry, %for.inc
   %i = phi i64 [ 0, %entry ], [ %i.next, %for.inc ]
-  %call = call i32 @func(i32* %A) #2
+  %call = call i32 @func(ptr %A) #2
   %tmp = add nsw i64 %i, 2
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %tmp
-  store i32 %call, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %tmp
+  store i32 %call, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -44,6 +44,6 @@ for.end:                                          ; preds = %for.inc
   ret void
 }
 
-declare i32 @func(i32*) #0
+declare i32 @func(ptr) #0
 
 attributes #0 = { nounwind readonly }

diff  --git a/polly/test/ScopInfo/mod_ref_read_pointers.ll b/polly/test/ScopInfo/mod_ref_read_pointers.ll
index 7cad5698fcffa..7ed3423a2aebb 100644
--- a/polly/test/ScopInfo/mod_ref_read_pointers.ll
+++ b/polly/test/ScopInfo/mod_ref_read_pointers.ll
@@ -30,19 +30,19 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* noalias %A, i32* noalias %B) {
+define void @jd(ptr noalias %A, ptr noalias %B) {
 entry:
   br label %for.body
 
 for.body:                                         ; preds = %entry, %for.inc
   %i = phi i64 [ 0, %entry ], [ %i.next, %for.inc ]
-  %call = call i32 @func(i32* %A)
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %i
-  %tmp = load i32, i32* %arrayidx, align 4
+  %call = call i32 @func(ptr %A)
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %i
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %call, %tmp
   %tmp1 = add nsw i64 %i, 2
-  %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %tmp1
-  store i32 %add, i32* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %tmp1
+  store i32 %add, ptr %arrayidx1, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -54,6 +54,6 @@ for.end:                                          ; preds = %for.inc
   ret void
 }
 
-declare i32 @func(i32*) #0
+declare i32 @func(ptr) #0
 
 attributes #0 = { nounwind readonly }

diff  --git a/polly/test/ScopInfo/modulo_zext_1.ll b/polly/test/ScopInfo/modulo_zext_1.ll
index 5b853ae36cd50..d611ec4807b5c 100644
--- a/polly/test/ScopInfo/modulo_zext_1.ll
+++ b/polly/test/ScopInfo/modulo_zext_1.ll
@@ -25,7 +25,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   br label %for.cond
 
@@ -38,10 +38,10 @@ for.body:                                         ; preds = %for.cond
   %i.t = trunc i32 %i.0 to i1
   %rem = zext i1 %i.t to i32
   %idxprom = sext i32 %rem to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  %tmp = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/modulo_zext_2.ll b/polly/test/ScopInfo/modulo_zext_2.ll
index a2099ed37c131..8d23218491740 100644
--- a/polly/test/ScopInfo/modulo_zext_2.ll
+++ b/polly/test/ScopInfo/modulo_zext_2.ll
@@ -26,7 +26,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -43,10 +43,10 @@ for.body:                                         ; preds = %for.cond
   br i1 %tobool, label %if.end, label %if.then
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp2, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %for.body, %if.then

diff  --git a/polly/test/ScopInfo/modulo_zext_3.ll b/polly/test/ScopInfo/modulo_zext_3.ll
index 99b4df31f93a6..acb26dc1c77f7 100644
--- a/polly/test/ScopInfo/modulo_zext_3.ll
+++ b/polly/test/ScopInfo/modulo_zext_3.ll
@@ -26,7 +26,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i64* %A, i64 %N) {
+define void @f(ptr %A, i64 %N) {
 entry:
   br label %for.cond
 
@@ -38,10 +38,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %i.t = trunc i64 %i.0 to i33
   %rem = zext i33 %i.t to i64
-  %arrayidx = getelementptr inbounds i64, i64* %A, i64 %rem
-  %tmp = load i64, i64* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %rem
+  %tmp = load i64, ptr %arrayidx, align 4
   %inc = add nsw i64 %tmp, 1
-  store i64 %inc, i64* %arrayidx, align 4
+  store i64 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/multi-scop.ll b/polly/test/ScopInfo/multi-scop.ll
index ccea6d5254722..186aee8329466 100644
--- a/polly/test/ScopInfo/multi-scop.ll
+++ b/polly/test/ScopInfo/multi-scop.ll
@@ -2,7 +2,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; This test case contains two scops.
-define void @test(i32 %l, double* %a) {
+define void @test(i32 %l, ptr %a) {
 entry:
   br label %entry.split
 
@@ -22,8 +22,8 @@ for.body81:                                       ; preds = %for.body81, %for.en
   %j.19 = phi i32 [ %shl, %for.end ], [ %add169, %for.body81 ]
   %add13710 = or i32 %j.19, 1
   %idxprom138 = sext i32 %add13710 to i64
-  %arrayidx139 = getelementptr inbounds double, double* %a, i64 %idxprom138
-  store double undef, double* %arrayidx139, align 8
+  %arrayidx139 = getelementptr inbounds double, ptr %a, i64 %idxprom138
+  store double undef, ptr %arrayidx139, align 8
   %add169 = add nsw i32 %j.19, 2
   br i1 false, label %for.body81, label %for.end170
 

diff  --git a/polly/test/ScopInfo/multidim_2d-diagonal-matrix.ll b/polly/test/ScopInfo/multidim_2d-diagonal-matrix.ll
index f1de0d07c0aab..278c06a2fdba5 100644
--- a/polly/test/ScopInfo/multidim_2d-diagonal-matrix.ll
+++ b/polly/test/ScopInfo/multidim_2d-diagonal-matrix.ll
@@ -22,7 +22,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK:   [n] -> { Stmt_for_i[i0] -> MemRef_A[i0, i0] };
 
 
-define void @foo(i64 %n, double* %A) {
+define void @foo(i64 %n, ptr %A) {
 entry:
   br label %for.i
 
@@ -30,8 +30,8 @@ for.i:
   %i = phi i64 [ 0, %entry ], [ %i.inc, %for.i ]
   %tmp = mul nsw i64 %i, %n
   %vlaarrayidx.sum = add i64 %i, %tmp
-  %arrayidx = getelementptr inbounds double, double* %A, i64 %vlaarrayidx.sum
-  store double 1.0, double* %arrayidx
+  %arrayidx = getelementptr inbounds double, ptr %A, i64 %vlaarrayidx.sum
+  store double 1.0, ptr %arrayidx
   %i.inc = add nsw i64 %i, 1
   %i.exitcond = icmp eq i64 %i.inc, %n
   br i1 %i.exitcond, label %end, label %for.i

diff  --git a/polly/test/ScopInfo/multidim_2d_outer_parametric_offset.ll b/polly/test/ScopInfo/multidim_2d_outer_parametric_offset.ll
index 1d97418a24bcf..06a76466c25eb 100644
--- a/polly/test/ScopInfo/multidim_2d_outer_parametric_offset.ll
+++ b/polly/test/ScopInfo/multidim_2d_outer_parametric_offset.ll
@@ -25,7 +25,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK-NEXT:             [m, p] -> { Stmt_for_j[i0, i1] -> MemRef_A[p + i0, i1] };
 ; CHECK-NEXT: }
 
-define void @foo(i64 %n, i64 %m, i64 %p, double* %A) {
+define void @foo(i64 %n, i64 %m, i64 %p, ptr %A) {
 entry:
   br label %for.i
 
@@ -38,8 +38,8 @@ for.i:
 for.j:
   %j = phi i64 [ 0, %for.i ], [ %j.inc, %for.j ]
   %vlaarrayidx.sum = add i64 %j, %tmp
-  %arrayidx = getelementptr inbounds double, double* %A, i64 %vlaarrayidx.sum
-  store double 1.0, double* %arrayidx
+  %arrayidx = getelementptr inbounds double, ptr %A, i64 %vlaarrayidx.sum
+  store double 1.0, ptr %arrayidx
   %j.inc = add nsw i64 %j, 1
   %j.exitcond = icmp eq i64 %j.inc, %m
   br i1 %j.exitcond, label %for.i.inc, label %for.j

diff  --git a/polly/test/ScopInfo/multidim_2d_parametric_array_static_loop_bounds.ll b/polly/test/ScopInfo/multidim_2d_parametric_array_static_loop_bounds.ll
index 0f353d874212c..bfbe5682d44ad 100644
--- a/polly/test/ScopInfo/multidim_2d_parametric_array_static_loop_bounds.ll
+++ b/polly/test/ScopInfo/multidim_2d_parametric_array_static_loop_bounds.ll
@@ -23,7 +23,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK-NEXT:             [m] -> { Stmt_for_j[i0, i1] -> MemRef_A[i0, i1] };
 ; CHECK-NEXT: }
 
-define void @foo(i64 %n, i64 %m, double* %A) {
+define void @foo(i64 %n, i64 %m, ptr %A) {
 entry:
   br label %for.i
 
@@ -35,8 +35,8 @@ for.i:
 for.j:
   %j = phi i64 [ 0, %for.i ], [ %j.inc, %for.j ]
   %vlaarrayidx.sum = add i64 %j, %tmp
-  %arrayidx = getelementptr inbounds double, double* %A, i64 %vlaarrayidx.sum
-  store double 1.0, double* %arrayidx
+  %arrayidx = getelementptr inbounds double, ptr %A, i64 %vlaarrayidx.sum
+  store double 1.0, ptr %arrayidx
   %j.inc = add nsw i64 %j, 1
   %j.exitcond = icmp eq i64 %j.inc, 150
   br i1 %j.exitcond, label %for.i.inc, label %for.j

diff  --git a/polly/test/ScopInfo/multidim_2d_with_modref_call.ll b/polly/test/ScopInfo/multidim_2d_with_modref_call.ll
index 76bebad986c71..ba934adb675aa 100644
--- a/polly/test/ScopInfo/multidim_2d_with_modref_call.ll
+++ b/polly/test/ScopInfo/multidim_2d_with_modref_call.ll
@@ -123,16 +123,16 @@
 
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 
-define void @ham(i64* noalias %arg, i64* noalias %arg1, i64* noalias %arg2, i64* noalias %arg3, [1000 x double]* noalias %arg4) unnamed_addr {
+define void @ham(ptr noalias %arg, ptr noalias %arg1, ptr noalias %arg2, ptr noalias %arg3, ptr noalias %arg4) unnamed_addr {
 bb:
   br label %bb5
 
 bb5:                                              ; preds = %bb
-  %tmp = load i64, i64* %arg1, align 8
+  %tmp = load i64, ptr %arg1, align 8
   %tmp6 = icmp slt i64 %tmp, 0
   %tmp7 = select i1 %tmp6, i64 0, i64 %tmp
   %tmp8 = xor i64 %tmp7, -1
-  %tmp9 = load i64, i64* %arg, align 8
+  %tmp9 = load i64, ptr %arg, align 8
   %tmp10 = icmp sgt i64 %tmp9, 0
   br i1 %tmp10, label %bb11, label %bb32
 
@@ -141,7 +141,7 @@ bb11:                                             ; preds = %bb5
 
 bb12:                                             ; preds = %bb28, %bb11
   %tmp13 = phi i64 [ %tmp30, %bb28 ], [ 1, %bb11 ]
-  %tmp14 = load i64, i64* %arg1, align 8
+  %tmp14 = load i64, ptr %arg1, align 8
   %tmp15 = icmp sgt i64 %tmp14, 0
   br i1 %tmp15, label %bb16, label %bb28
 
@@ -155,10 +155,10 @@ bb17:                                             ; preds = %bb17, %bb16
   %tmp21 = add i64 %tmp20, %tmp18
   %tmp22 = add i64 %tmp18, %tmp13
   %tmp23 = sitofp i64 %tmp22 to double
-  %tmp24 = getelementptr [1000 x double], [1000 x double]* %arg4, i64 0, i64 %tmp21
-  %call = call double @func(double* %tmp24) #2
+  %tmp24 = getelementptr [1000 x double], ptr %arg4, i64 0, i64 %tmp21
+  %call = call double @func(ptr %tmp24) #2
   %sum = fadd double %call, %tmp23
-  store double %sum, double* %tmp24, align 8
+  store double %sum, ptr %tmp24, align 8
   %tmp25 = icmp eq i64 %tmp18, %tmp14
   %tmp26 = add i64 %tmp18, 1
   br i1 %tmp25, label %bb27, label %bb17
@@ -178,6 +178,6 @@ bb32:                                             ; preds = %bb31, %bb5
   ret void
 }
 
-declare double @func(double*) #1
+declare double @func(ptr) #1
 
 attributes #1 = { nounwind readonly }

diff  --git a/polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll b/polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll
index fe8cfdd035285..3da123fd1f608 100644
--- a/polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll
+++ b/polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll
@@ -27,12 +27,12 @@
 ; CHECK-NEXT:    Arrays {
 ; CHECK-NEXT:        i64 MemRef_arg1[*]; // Element size 8
 ; CHECK-NEXT:        i64 MemRef_tmp13; // Element size 8
-; CHECK-NEXT:        [1000 x double]* MemRef_arg4[*]; // Element size 8
+; CHECK-NEXT:        ptr MemRef_arg4[*]; // Element size 8
 ; CHECK-NEXT:    }
 ; CHECK-NEXT:    Arrays (Bounds as pw_affs) {
 ; CHECK-NEXT:        i64 MemRef_arg1[*]; // Element size 8
 ; CHECK-NEXT:        i64 MemRef_tmp13; // Element size 8
-; CHECK-NEXT:        [1000 x double]* MemRef_arg4[*]; // Element size 8
+; CHECK-NEXT:        ptr MemRef_arg4[*]; // Element size 8
 ; CHECK-NEXT:    }
 ; CHECK-NEXT:    Alias Groups (0):
 ; CHECK-NEXT:        n/a
@@ -80,14 +80,14 @@
 ; NONAFFINE-NEXT:        i64 MemRef_arg1[*]; // Element size 8
 ; NONAFFINE-NEXT:        i64 MemRef_tmp7; // Element size 8
 ; NONAFFINE-NEXT:        i64 MemRef_tmp8; // Element size 8
-; NONAFFINE-NEXT:        [1000 x double]* MemRef_arg4[*]; // Element size 8
+; NONAFFINE-NEXT:        ptr MemRef_arg4[*]; // Element size 8
 ; NONAFFINE-NEXT:    }
 ; NONAFFINE-NEXT:    Arrays (Bounds as pw_affs) {
 ; NONAFFINE-NEXT:        i64 MemRef_arg[*]; // Element size 8
 ; NONAFFINE-NEXT:        i64 MemRef_arg1[*]; // Element size 8
 ; NONAFFINE-NEXT:        i64 MemRef_tmp7; // Element size 8
 ; NONAFFINE-NEXT:        i64 MemRef_tmp8; // Element size 8
-; NONAFFINE-NEXT:        [1000 x double]* MemRef_arg4[*]; // Element size 8
+; NONAFFINE-NEXT:        ptr MemRef_arg4[*]; // Element size 8
 ; NONAFFINE-NEXT:    }
 ; NONAFFINE-NEXT:    Alias Groups (0):
 ; NONAFFINE-NEXT:        n/a
@@ -118,16 +118,16 @@
 
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 
-define void @ham(i64* noalias %arg, i64* noalias %arg1, i64* noalias %arg2, i64* noalias %arg3, [1000 x double]* noalias %arg4) gc "dummy" {
+define void @ham(ptr noalias %arg, ptr noalias %arg1, ptr noalias %arg2, ptr noalias %arg3, ptr noalias %arg4) gc "dummy" {
 bb:
   br label %bb5
 
 bb5:                                              ; preds = %bb
-  %tmp = load i64, i64* %arg1, align 8
+  %tmp = load i64, ptr %arg1, align 8
   %tmp6 = icmp slt i64 %tmp, 0
   %tmp7 = select i1 %tmp6, i64 0, i64 %tmp
   %tmp8 = xor i64 %tmp7, -1
-  %tmp9 = load i64, i64* %arg, align 8
+  %tmp9 = load i64, ptr %arg, align 8
   %tmp10 = icmp sgt i64 %tmp9, 0
   br i1 %tmp10, label %bb11, label %bb32
 
@@ -136,7 +136,7 @@ bb11:                                             ; preds = %bb5
 
 bb12:                                             ; preds = %bb28, %bb11
   %tmp13 = phi i64 [ %tmp30, %bb28 ], [ 1, %bb11 ]
-  %tmp14 = load i64, i64* %arg1, align 8
+  %tmp14 = load i64, ptr %arg1, align 8
   %tmp15 = icmp sgt i64 %tmp14, 0
   br i1 %tmp15, label %bb16, label %bb28
 
@@ -150,10 +150,9 @@ bb17:                                             ; preds = %bb17, %bb16
   %tmp21 = add i64 %tmp20, %tmp18
   %tmp22 = add i64 %tmp18, %tmp13
   %tmp23 = sitofp i64 %tmp22 to double
-  %tmp24 = getelementptr [1000 x double], [1000 x double]* %arg4, i64 0, i64 %tmp21
-  %bc = bitcast double* %tmp24 to i8*
-  %dummy = call i8* @llvm.gcread(i8* %bc, i8** null)
-  store double %tmp23, double* %tmp24, align 8
+  %tmp24 = getelementptr [1000 x double], ptr %arg4, i64 0, i64 %tmp21
+  %dummy = call ptr @llvm.gcread(ptr %tmp24, ptr null)
+  store double %tmp23, ptr %tmp24, align 8
   %tmp25 = icmp eq i64 %tmp18, %tmp14
   %tmp26 = add i64 %tmp18, 1
   br i1 %tmp25, label %bb27, label %bb17
@@ -173,4 +172,4 @@ bb32:                                             ; preds = %bb31, %bb5
   ret void
 }
 
-declare i8* @llvm.gcread(i8*, i8**)
+declare ptr @llvm.gcread(ptr, ptr)

diff  --git a/polly/test/ScopInfo/multidim_3d_parametric_array_static_loop_bounds.ll b/polly/test/ScopInfo/multidim_3d_parametric_array_static_loop_bounds.ll
index c2fe44b494695..988475575fec7 100644
--- a/polly/test/ScopInfo/multidim_3d_parametric_array_static_loop_bounds.ll
+++ b/polly/test/ScopInfo/multidim_3d_parametric_array_static_loop_bounds.ll
@@ -27,7 +27,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK-NEXT:             [m, o] -> { Stmt_for_k[i0, i1, i2] -> MemRef_A[i0, i1, i2] };
 ; CHECK-NEXT: }
 
-define void @foo(i64 %n, i64 %m, i64 %o, double* %A) {
+define void @foo(i64 %n, i64 %m, i64 %o, ptr %A) {
 entry:
   br label %for.i
 
@@ -45,8 +45,8 @@ for.k:
   %subscript1 = add i64 %j, %subscript0
   %subscript2 = mul i64 %subscript1, %o
   %subscript = add i64 %subscript2, %k
-  %idx = getelementptr inbounds double, double* %A, i64 %subscript
-  store double 1.0, double* %idx
+  %idx = getelementptr inbounds double, ptr %A, i64 %subscript
+  store double 1.0, ptr %idx
   br label %for.k.inc
 
 for.k.inc:

diff  --git a/polly/test/ScopInfo/multidim_fixedsize_
diff erent_dimensionality.ll b/polly/test/ScopInfo/multidim_fixedsize_
diff erent_dimensionality.ll
index a9f84ec363a8e..ddc35a46a633f 100644
--- a/polly/test/ScopInfo/multidim_fixedsize_
diff erent_dimensionality.ll
+++ b/polly/test/ScopInfo/multidim_fixedsize_
diff erent_dimensionality.ll
@@ -92,7 +92,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @first_higher_dimensional([400 x float]* %A) {
+define void @first_higher_dimensional(ptr %A) {
 bb:
   br label %bb4
 
@@ -112,10 +112,10 @@ bb6:                                              ; preds = %bb12, %bb5
 bb7:                                              ; preds = %bb6
   %tmp = add nuw nsw i64 %i.0, %j.0
   %tmp8 = sitofp i64 %tmp to float
-  %tmp9 = getelementptr inbounds [400 x float], [400 x float]* %A, i64 %i.0, i64 %j.0
-  %tmp10 = load float, float* %tmp9, align 4
+  %tmp9 = getelementptr inbounds [400 x float], ptr %A, i64 %i.0, i64 %j.0
+  %tmp10 = load float, ptr %tmp9, align 4
   %tmp11 = fadd float %tmp10, %tmp8
-  store float %tmp11, float* %tmp9, align 4
+  store float %tmp11, ptr %tmp9, align 4
   br label %bb12
 
 bb12:                                             ; preds = %bb7
@@ -130,12 +130,11 @@ bb15:                                             ; preds = %bb14
   br label %bb4
 
 bb17:                                             ; preds = %bb4
-  %tmp18 = getelementptr inbounds [400 x float], [400 x float]* %A, i64 100, i64 100
-  %tmp19 = load float, float* %tmp18, align 4
-  %tmp20 = getelementptr inbounds [400 x float], [400 x float]* %A, i64 0, i64 0
-  %tmp21 = load float, float* %tmp20, align 4
+  %tmp18 = getelementptr inbounds [400 x float], ptr %A, i64 100, i64 100
+  %tmp19 = load float, ptr %tmp18, align 4
+  %tmp21 = load float, ptr %A, align 4
   %tmp22 = fadd float %tmp21, %tmp19
-  store float %tmp22, float* %tmp20, align 4
+  store float %tmp22, ptr %A, align 4
   br label %bb23
 
 bb23:                                             ; preds = %bb35, %bb17
@@ -154,10 +153,10 @@ bb25:                                             ; preds = %bb32, %bb24
 bb26:                                             ; preds = %bb25
   %tmp27 = add nuw nsw i64 %i1.0, %j2.0
   %tmp28 = sitofp i64 %tmp27 to float
-  %tmp29 = getelementptr inbounds [400 x float], [400 x float]* %A, i64 %i1.0, i64 %j2.0
-  %tmp30 = load float, float* %tmp29, align 4
+  %tmp29 = getelementptr inbounds [400 x float], ptr %A, i64 %i1.0, i64 %j2.0
+  %tmp30 = load float, ptr %tmp29, align 4
   %tmp31 = fadd float %tmp30, %tmp28
-  store float %tmp31, float* %tmp29, align 4
+  store float %tmp31, ptr %tmp29, align 4
   br label %bb32
 
 bb32:                                             ; preds = %bb26
@@ -175,7 +174,7 @@ bb37:                                             ; preds = %bb23
   ret void
 }
 
-define void @first_lower_dimensional([400 x float]* %A, [400 x float]* %B) {
+define void @first_lower_dimensional(ptr %A, ptr %B) {
 bb:
   br label %bb4
 
@@ -195,10 +194,10 @@ bb6:                                              ; preds = %bb12, %bb5
 bb7:                                              ; preds = %bb6
   %tmp = add nuw nsw i64 %i.0, %j.0
   %tmp8 = sitofp i64 %tmp to float
-  %tmp9 = getelementptr inbounds [400 x float], [400 x float]* %B, i64 %i.0, i64 %j.0
-  %tmp10 = load float, float* %tmp9, align 4
+  %tmp9 = getelementptr inbounds [400 x float], ptr %B, i64 %i.0, i64 %j.0
+  %tmp10 = load float, ptr %tmp9, align 4
   %tmp11 = fadd float %tmp10, %tmp8
-  store float %tmp11, float* %tmp9, align 4
+  store float %tmp11, ptr %tmp9, align 4
   br label %bb12
 
 bb12:                                             ; preds = %bb7
@@ -213,12 +212,11 @@ bb15:                                             ; preds = %bb14
   br label %bb4
 
 bb17:                                             ; preds = %bb4
-  %tmp18 = getelementptr inbounds [400 x float], [400 x float]* %B, i64 100, i64 100
-  %tmp19 = load float, float* %tmp18, align 4
-  %tmp20 = getelementptr inbounds [400 x float], [400 x float]* %A, i64 0, i64 0
-  %tmp21 = load float, float* %tmp20, align 4
+  %tmp18 = getelementptr inbounds [400 x float], ptr %B, i64 100, i64 100
+  %tmp19 = load float, ptr %tmp18, align 4
+  %tmp21 = load float, ptr %A, align 4
   %tmp22 = fadd float %tmp21, %tmp19
-  store float %tmp22, float* %tmp20, align 4
+  store float %tmp22, ptr %A, align 4
   br label %bb23
 
 bb23:                                             ; preds = %bb35, %bb17
@@ -237,10 +235,10 @@ bb25:                                             ; preds = %bb32, %bb24
 bb26:                                             ; preds = %bb25
   %tmp27 = add nuw nsw i64 %i1.0, %j2.0
   %tmp28 = sitofp i64 %tmp27 to float
-  %tmp29 = getelementptr inbounds [400 x float], [400 x float]* %A, i64 %i1.0, i64 %j2.0
-  %tmp30 = load float, float* %tmp29, align 4
+  %tmp29 = getelementptr inbounds [400 x float], ptr %A, i64 %i1.0, i64 %j2.0
+  %tmp30 = load float, ptr %tmp29, align 4
   %tmp31 = fadd float %tmp30, %tmp28
-  store float %tmp31, float* %tmp29, align 4
+  store float %tmp31, ptr %tmp29, align 4
   br label %bb32
 
 bb32:                                             ; preds = %bb26

diff  --git a/polly/test/ScopInfo/multidim_fixedsize_multi_offset.ll b/polly/test/ScopInfo/multidim_fixedsize_multi_offset.ll
index d21a4fc0051ba..9c749f0c48c83 100644
--- a/polly/test/ScopInfo/multidim_fixedsize_multi_offset.ll
+++ b/polly/test/ScopInfo/multidim_fixedsize_multi_offset.ll
@@ -36,10 +36,9 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f([2 x i32]* %A) {
+define void @f(ptr %A) {
 entry:
-  %arrayidx3 = getelementptr inbounds [2 x i32], [2 x i32]* %A, i64 1, i64 0
-  %tmp = bitcast i32* %arrayidx3 to [2 x i32]*
+  %arrayidx3 = getelementptr inbounds [2 x i32], ptr %A, i64 1, i64 0
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
@@ -48,14 +47,14 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx5 = getelementptr inbounds [2 x i32], [2 x i32]* %A, i64 %indvars.iv, i64 0
-  %tmp1 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds [2 x i32], ptr %A, i64 %indvars.iv, i64 0
+  %tmp1 = load i32, ptr %arrayidx5, align 4
   %inc = add nsw i32 %tmp1, 1
-  store i32 %inc, i32* %arrayidx5, align 4
-  %arrayidx8 = getelementptr inbounds [2 x i32], [2 x i32]* %tmp, i64 %indvars.iv, i64 0
-  %tmp2 = load i32, i32* %arrayidx8, align 4
+  store i32 %inc, ptr %arrayidx5, align 4
+  %arrayidx8 = getelementptr inbounds [2 x i32], ptr %arrayidx3, i64 %indvars.iv, i64 0
+  %tmp2 = load i32, ptr %arrayidx8, align 4
   %inc9 = add nsw i32 %tmp2, 1
-  store i32 %inc9, i32* %arrayidx8, align 4
+  store i32 %inc9, ptr %arrayidx8, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/multidim_fold_constant_dim.ll b/polly/test/ScopInfo/multidim_fold_constant_dim.ll
index 258278e9dec1d..e95d400a860c7 100644
--- a/polly/test/ScopInfo/multidim_fold_constant_dim.ll
+++ b/polly/test/ScopInfo/multidim_fold_constant_dim.ll
@@ -38,7 +38,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 %struct.com = type { double, double }
 %struct.com2 = type { [20000000000 x double] }
 
-define void @foo(i64 %n, %struct.com* %A) {
+define void @foo(i64 %n, ptr %A) {
 entry:
   br label %for.cond
 
@@ -57,17 +57,16 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 
 for.body3:                                        ; preds = %for.cond1
   %tmp = mul nsw i64 %i.0, %n
-  %arrayidx = getelementptr inbounds %struct.com, %struct.com* %A, i64 %tmp
-  %arrayidx4 = getelementptr inbounds %struct.com, %struct.com* %arrayidx, i64 %j.0
-  %Img = getelementptr inbounds %struct.com, %struct.com* %arrayidx4, i64 0, i32 1
-  %tmp2 = load double, double* %Img, align 8
+  %arrayidx = getelementptr inbounds %struct.com, ptr %A, i64 %tmp
+  %arrayidx4 = getelementptr inbounds %struct.com, ptr %arrayidx, i64 %j.0
+  %Img = getelementptr inbounds %struct.com, ptr %arrayidx4, i64 0, i32 1
+  %tmp2 = load double, ptr %Img, align 8
   %tmp3 = mul nsw i64 %i.0, %n
-  %arrayidx5 = getelementptr inbounds %struct.com, %struct.com* %A, i64 %tmp3
-  %arrayidx6 = getelementptr inbounds %struct.com, %struct.com* %arrayidx5, i64 %j.0
-  %Real = getelementptr inbounds %struct.com, %struct.com* %arrayidx6, i64 0, i32 0
-  %tmp4 = load double, double* %Real, align 8
+  %arrayidx5 = getelementptr inbounds %struct.com, ptr %A, i64 %tmp3
+  %arrayidx6 = getelementptr inbounds %struct.com, ptr %arrayidx5, i64 %j.0
+  %tmp4 = load double, ptr %arrayidx6, align 8
   %add = fadd double %tmp4, %tmp2
-  store double %add, double* %Real, align 8
+  store double %add, ptr %arrayidx6, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3
@@ -89,7 +88,7 @@ for.end9:                                         ; preds = %for.cond
 ; CHECK-NEXT:     double MemRef_O[*][%n]; // Element size 8
 ; CHECK-NEXT: }
 
-define void @foo_overflow(i64 %n, %struct.com2* nocapture %O) local_unnamed_addr #0 {
+define void @foo_overflow(i64 %n, ptr nocapture %O) local_unnamed_addr #0 {
 entry:
   br label %for.body
 
@@ -99,7 +98,7 @@ for.cond.cleanup:                                 ; preds = %for.cond.cleanup3
 for.body:                                         ; preds = %for.cond.cleanup3, %entry
   %i.024 = phi i64 [ 0, %entry ], [ %inc12, %for.cond.cleanup3 ]
   %0 = mul nsw i64 %i.024, %n
-  %arrayidx = getelementptr inbounds %struct.com2, %struct.com2* %O, i64 %0
+  %arrayidx = getelementptr inbounds %struct.com2, ptr %O, i64 %0
   br label %for.body4
 
 for.cond.cleanup3:                                ; preds = %for.body4
@@ -109,14 +108,12 @@ for.cond.cleanup3:                                ; preds = %for.body4
 
 for.body4:                                        ; preds = %for.body4, %for.body
   %j.023 = phi i64 [ 0, %for.body ], [ %inc, %for.body4 ]
-  %arrayidx5 = getelementptr inbounds %struct.com2, %struct.com2* %arrayidx, i64 %j.023
-  %Real = getelementptr inbounds %struct.com2, %struct.com2* %arrayidx5, i64 0, i32 0
-  %arrayidx6 = getelementptr inbounds [20000000000 x double], [20000000000 x double]* %Real, i64 0, i64 1
-  %1 = load double, double* %arrayidx6, align 8
-  %arrayidx10 = getelementptr inbounds [20000000000 x double], [20000000000 x double]* %Real, i64 0, i64 0
-  %2 = load double, double* %arrayidx10, align 8
+  %arrayidx5 = getelementptr inbounds %struct.com2, ptr %arrayidx, i64 %j.023
+  %arrayidx6 = getelementptr inbounds [20000000000 x double], ptr %arrayidx5, i64 0, i64 1
+  %1 = load double, ptr %arrayidx6, align 8
+  %2 = load double, ptr %arrayidx5, align 8
   %add = fadd double %1, %2
-  store double %add, double* %arrayidx10, align 8
+  store double %add, ptr %arrayidx5, align 8
   %inc = add nuw nsw i64 %j.023, 1
   %exitcond = icmp eq i64 %inc, 1000
   br i1 %exitcond, label %for.cond.cleanup3, label %for.body4

diff  --git a/polly/test/ScopInfo/multidim_fortran_2d.ll b/polly/test/ScopInfo/multidim_fortran_2d.ll
index 38310f87cc7b1..29279a4e886bb 100644
--- a/polly/test/ScopInfo/multidim_fortran_2d.ll
+++ b/polly/test/ScopInfo/multidim_fortran_2d.ll
@@ -23,16 +23,16 @@
 
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 
-define void @ham(i64* noalias %arg, i64* noalias %arg1, i64* noalias %arg2, i64* noalias %arg3, [0 x double]* noalias %arg4) unnamed_addr {
+define void @ham(ptr noalias %arg, ptr noalias %arg1, ptr noalias %arg2, ptr noalias %arg3, ptr noalias %arg4) unnamed_addr {
 bb:
   br label %bb5
 
 bb5:                                              ; preds = %bb
-  %tmp = load i64, i64* %arg1, align 8
+  %tmp = load i64, ptr %arg1, align 8
   %tmp6 = icmp slt i64 %tmp, 0
   %tmp7 = select i1 %tmp6, i64 0, i64 %tmp
   %tmp8 = xor i64 %tmp7, -1
-  %tmp9 = load i64, i64* %arg, align 8
+  %tmp9 = load i64, ptr %arg, align 8
   %tmp10 = icmp sgt i64 %tmp9, 0
   br i1 %tmp10, label %bb11, label %bb32
 
@@ -41,7 +41,7 @@ bb11:                                             ; preds = %bb5
 
 bb12:                                             ; preds = %bb28, %bb11
   %tmp13 = phi i64 [ %tmp30, %bb28 ], [ 1, %bb11 ]
-  %tmp14 = load i64, i64* %arg1, align 8
+  %tmp14 = load i64, ptr %arg1, align 8
   %tmp15 = icmp sgt i64 %tmp14, 0
   br i1 %tmp15, label %bb16, label %bb28
 
@@ -55,8 +55,8 @@ bb17:                                             ; preds = %bb17, %bb16
   %tmp21 = add i64 %tmp20, %tmp18
   %tmp22 = add i64 %tmp18, %tmp13
   %tmp23 = sitofp i64 %tmp22 to double
-  %tmp24 = getelementptr [0 x double], [0 x double]* %arg4, i64 0, i64 %tmp21
-  store double %tmp23, double* %tmp24, align 8
+  %tmp24 = getelementptr [0 x double], ptr %arg4, i64 0, i64 %tmp21
+  store double %tmp23, ptr %tmp24, align 8
   %tmp25 = icmp eq i64 %tmp18, %tmp14
   %tmp26 = add i64 %tmp18, 1
   br i1 %tmp25, label %bb27, label %bb17

diff  --git a/polly/test/ScopInfo/multidim_fortran_2d_params.ll b/polly/test/ScopInfo/multidim_fortran_2d_params.ll
index 55db42c96bdf7..93145b399ca50 100644
--- a/polly/test/ScopInfo/multidim_fortran_2d_params.ll
+++ b/polly/test/ScopInfo/multidim_fortran_2d_params.ll
@@ -26,16 +26,16 @@ target triple = "x86_64-unknown-linux-gnu"
 module asm "\09.ident\09\22GCC: (GNU) 4.6.4 LLVM: 3.3.1\22"
 
 ; Function Attrs: nounwind uwtable
-define void @blam(i64* noalias %arg, i64* noalias %nj, i64* noalias %arg2, i64* noalias %arg3, [0 x double]* noalias %a) unnamed_addr #0 {
+define void @blam(ptr noalias %arg, ptr noalias %nj, ptr noalias %arg2, ptr noalias %arg3, ptr noalias %a) unnamed_addr #0 {
 bb:
   br label %bb5
 
 bb5:                                              ; preds = %bb
-  %nj_loaded = load i64, i64* %nj, align 8
+  %nj_loaded = load i64, ptr %nj, align 8
   %tmp6 = icmp slt i64 %nj_loaded, 0
   %tmp7 = select i1 %tmp6, i64 0, i64 %nj_loaded
   %tmp8 = xor i64 %tmp7, -1
-  %tmp9 = load i64, i64* %arg, align 8
+  %tmp9 = load i64, ptr %arg, align 8
   %tmp10 = icmp sgt i64 %tmp9, 0
   br i1 %tmp10, label %bb11, label %bb36
 
@@ -44,7 +44,7 @@ bb11:                                             ; preds = %bb5
 
 bb12:                                             ; preds = %bb32, %bb11
   %tmp13 = phi i64 [ %tmp34, %bb32 ], [ 1, %bb11 ]
-  %nj_loaded2 = load i64, i64* %nj, align 8
+  %nj_loaded2 = load i64, ptr %nj, align 8
   %tmp15 = icmp sgt i64 %nj_loaded2, 0
   br i1 %tmp15, label %bb16, label %bb32
 
@@ -53,8 +53,8 @@ bb16:                                             ; preds = %bb12
 
 bb17:                                             ; preds = %bb17, %bb16
   %tmp18 = phi i64 [ %tmp30, %bb17 ], [ 1, %bb16 ]
-  %tmp19 = load i64, i64* %arg2, align 8
-  %tmp20 = load i64, i64* %arg3, align 8
+  %tmp19 = load i64, ptr %arg2, align 8
+  %tmp20 = load i64, ptr %arg3, align 8
   %tmp21 = add i64 %tmp20, %tmp13
   %tmp22 = mul i64 %tmp21, %tmp7
   %tmp23 = add i64 %tmp18, %tmp8
@@ -62,8 +62,8 @@ bb17:                                             ; preds = %bb17, %bb16
   %tmp25 = add i64 %tmp24, %tmp22
   %tmp26 = add i64 %tmp18, %tmp13
   %tmp27 = sitofp i64 %tmp26 to double
-  %tmp28 = getelementptr [0 x double], [0 x double]* %a, i64 0, i64 %tmp25
-  store double %tmp27, double* %tmp28, align 8
+  %tmp28 = getelementptr [0 x double], ptr %a, i64 0, i64 %tmp25
+  store double %tmp27, ptr %tmp28, align 8
   %tmp29 = icmp eq i64 %tmp18, %nj_loaded2
   %tmp30 = add i64 %tmp18, 1
   br i1 %tmp29, label %bb31, label %bb17

diff  --git a/polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll b/polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll
index ce65c3ad7bfd4..dff6a8be85cf0 100644
--- a/polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll
+++ b/polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll
@@ -124,16 +124,16 @@
 
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 
-define void @ham(i64* noalias %arg, i64* noalias %arg1, i64* noalias %arg2, i64* noalias %arg3, [0 x double]* noalias %arg4) unnamed_addr {
+define void @ham(ptr noalias %arg, ptr noalias %arg1, ptr noalias %arg2, ptr noalias %arg3, ptr noalias %arg4) unnamed_addr {
 bb:
   br label %bb5
 
 bb5:                                              ; preds = %bb
-  %tmp = load i64, i64* %arg1, align 8
+  %tmp = load i64, ptr %arg1, align 8
   %tmp6 = icmp slt i64 %tmp, 0
   %tmp7 = select i1 %tmp6, i64 0, i64 %tmp
   %tmp8 = xor i64 %tmp7, -1
-  %tmp9 = load i64, i64* %arg, align 8
+  %tmp9 = load i64, ptr %arg, align 8
   %tmp10 = icmp sgt i64 %tmp9, 0
   br i1 %tmp10, label %bb11, label %bb32
 
@@ -142,7 +142,7 @@ bb11:                                             ; preds = %bb5
 
 bb12:                                             ; preds = %bb28, %bb11
   %tmp13 = phi i64 [ %tmp30, %bb28 ], [ 1, %bb11 ]
-  %tmp14 = load i64, i64* %arg1, align 8
+  %tmp14 = load i64, ptr %arg1, align 8
   %tmp15 = icmp sgt i64 %tmp14, 0
   br i1 %tmp15, label %bb16, label %bb28
 
@@ -156,10 +156,10 @@ bb17:                                             ; preds = %bb17, %bb16
   %tmp21 = add i64 %tmp20, %tmp18
   %tmp22 = add i64 %tmp18, %tmp13
   %tmp23 = sitofp i64 %tmp22 to double
-  %tmp24 = getelementptr [0 x double], [0 x double]* %arg4, i64 0, i64 %tmp21
-  %call = call double @func(double* %tmp24) #2
+  %tmp24 = getelementptr [0 x double], ptr %arg4, i64 0, i64 %tmp21
+  %call = call double @func(ptr %tmp24) #2
   %sum = fadd double %call, %tmp23
-  store double %sum, double* %tmp24, align 8
+  store double %sum, ptr %tmp24, align 8
   %tmp25 = icmp eq i64 %tmp18, %tmp14
   %tmp26 = add i64 %tmp18, 1
   br i1 %tmp25, label %bb27, label %bb17
@@ -179,6 +179,6 @@ bb32:                                             ; preds = %bb31, %bb5
   ret void
 }
 
-declare double @func(double*) #1
+declare double @func(ptr) #1
 
 attributes #1 = { nounwind readonly }

diff  --git a/polly/test/ScopInfo/multidim_fortran_srem.ll b/polly/test/ScopInfo/multidim_fortran_srem.ll
index 144c06fce43a0..8c24c5b8ee71b 100644
--- a/polly/test/ScopInfo/multidim_fortran_srem.ll
+++ b/polly/test/ScopInfo/multidim_fortran_srem.ll
@@ -30,38 +30,37 @@ target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:
 ; CHECK-NEXT:             [tmp180, tmp177, tmp183, tmp162, tmp157, tmp150, tmp146, tmp140, tmp] -> { Stmt_bb203[i0, i1, i2] -> MemRef_arg55[1 + i0, 1 + i1, 1 + i2] };
 ; CHECK-NEXT: }
 
-define void @pluto(i32* noalias %arg, [0 x i32]* noalias %arg2, [0 x i32]* noalias %arg3, [0 x i32]* noalias %arg4, [0 x i32]* noalias %arg5, [0 x i32]* noalias %arg6, [0 x i32]* noalias %arg7, [0 x i32]* noalias %arg8, [0 x i32]* noalias %arg9, double* noalias %arg10, double* noalias %arg11, [0 x double]* noalias %arg12, [0 x double]* noalias %arg13, [0 x i32]* noalias %arg14, i32* noalias %arg15, [0 x i32]* noalias %arg16, i32* noalias %arg17, i32* noalias %arg18, i32* noalias %arg19, i32* noalias %arg20, i32* noalias %arg21, i32* noalias %arg22, i32* noalias %arg23, i32* noalias %arg24, i32* noalias %arg25, i32* noalias %arg26, i32* noalias %arg27, [0 x double]* noalias %arg28, [0 x double]* noalias %arg29, [0 x double]* noalias %arg30, [0 x double]* noalias %arg31, [0 x double]* noalias %arg32, [0 x double]* noalias %arg33, [0 x double]* noalias %arg34, [0 x double]* noalias %arg35, [0 x double]* noalias %arg36, [0 x double]* noalias %arg37, [0 x double]* noalias %arg38, [0 x double]* noalias %arg39, [0 x double]* noalias %arg40, [0 x double]* noalias %arg41, [0 x double]* noalias %arg42, [0 x double]* noalias %arg43, [0 x double]* noalias %arg44, [0 x double]* noalias %arg45, [0 x double]* noalias %arg46, [0 x double]* noalias %arg47, [0 x double]* noalias %arg48, [0 x double]* noalias %arg49, [0 x double]* noalias %arg50, [0 x double]* noalias %arg51, [0 x double]* noalias %arg52, [0 x double]* noalias %arg53, [0 x double]* noalias %arg54, [0 x double]* noalias %arg55, [0 x double]* noalias %arg56, [0 x double]* noalias %arg57, [0 x double]* noalias %arg58, [0 x double]* noalias %arg59, [0 x double]* noalias %arg60, [0 x double]* noalias %arg61, [0 x double]* noalias %arg62, [0 x double]* noalias %arg63, [0 x double]* noalias %arg64, [0 x double]* noalias %arg65, [0 x double]* noalias %arg66, [0 x double]* noalias %arg67, [0 x double]* noalias %arg68, [0 x double]* noalias %arg69, i32* noalias %arg70, i32* noalias %arg71, i32* noalias %arg72, i32* noalias %arg73, i32* noalias %arg74, i32* noalias %arg75, i32* noalias %arg76, i32* noalias %arg77, i32* noalias %arg78, i32* noalias %arg79, i32* noalias %arg80, i32* noalias %arg81, i32* noalias %arg82, i32* noalias %arg83, i32* noalias %arg84, i32* noalias %arg85, i32* noalias %arg86, i32* noalias %arg87, i32* noalias %arg88, i32* noalias %arg89, i32* noalias %arg90, i32* noalias %arg91, i32* noalias %arg92, i32* noalias %arg93, i32* noalias %arg94, i32* noalias %arg95, i32* noalias %arg96, i32* noalias %arg97, [0 x double]* noalias %arg98, [0 x double]* noalias %arg99, [0 x double]* noalias %arg100, [0 x double]* noalias %arg101, double* noalias %arg102, double* noalias %arg103, double* noalias %arg104, i32* noalias %arg105, double* noalias %arg106, double* noalias %arg107, [0 x double]* noalias %arg108, [0 x double]* noalias %arg109, [0 x double]* noalias %arg110, [0 x double]* noalias %arg111, [0 x double]* noalias %arg112, [0 x double]* noalias %arg113, [0 x double]* noalias %arg114, [0 x double]* noalias %arg115, [0 x double]* noalias %arg116, [0 x double]* noalias %arg117, [0 x double]* noalias %arg118, [0 x double]* noalias %arg119, [0 x double]* noalias %arg120, [0 x double]* noalias %arg121, [0 x double]* noalias %arg122, [0 x double]* noalias %arg123, [0 x double]* noalias %arg124, [0 x double]* noalias %arg125, [0 x double]* noalias %arg126, [0 x double]* noalias %arg127, [0 x double]* noalias %arg128, [0 x double]* noalias %arg129, [0 x double]* noalias %arg130, [0 x double]* noalias %arg131, i32* noalias %arg132, [0 x double]* noalias %arg133, [0 x double]* noalias %arg134, [0 x double]* noalias %arg135) {
+define void @pluto(ptr noalias %arg, ptr noalias %arg2, ptr noalias %arg3, ptr noalias %arg4, ptr noalias %arg5, ptr noalias %arg6, ptr noalias %arg7, ptr noalias %arg8, ptr noalias %arg9, ptr noalias %arg10, ptr noalias %arg11, ptr noalias %arg12, ptr noalias %arg13, ptr noalias %arg14, ptr noalias %arg15, ptr noalias %arg16, ptr noalias %arg17, ptr noalias %arg18, ptr noalias %arg19, ptr noalias %arg20, ptr noalias %arg21, ptr noalias %arg22, ptr noalias %arg23, ptr noalias %arg24, ptr noalias %arg25, ptr noalias %arg26, ptr noalias %arg27, ptr noalias %arg28, ptr noalias %arg29, ptr noalias %arg30, ptr noalias %arg31, ptr noalias %arg32, ptr noalias %arg33, ptr noalias %arg34, ptr noalias %arg35, ptr noalias %arg36, ptr noalias %arg37, ptr noalias %arg38, ptr noalias %arg39, ptr noalias %arg40, ptr noalias %arg41, ptr noalias %arg42, ptr noalias %arg43, ptr noalias %arg44, ptr noalias %arg45, ptr noalias %arg46, ptr noalias %arg47, ptr noalias %arg48, ptr noalias %arg49, ptr noalias %arg50, ptr noalias %arg51, ptr noalias %arg52, ptr noalias %arg53, ptr noalias %arg54, ptr noalias %arg55, ptr noalias %arg56, ptr noalias %arg57, ptr noalias %arg58, ptr noalias %arg59, ptr noalias %arg60, ptr noalias %arg61, ptr noalias %arg62, ptr noalias %arg63, ptr noalias %arg64, ptr noalias %arg65, ptr noalias %arg66, ptr noalias %arg67, ptr noalias %arg68, ptr noalias %arg69, ptr noalias %arg70, ptr noalias %arg71, ptr noalias %arg72, ptr noalias %arg73, ptr noalias %arg74, ptr noalias %arg75, ptr noalias %arg76, ptr noalias %arg77, ptr noalias %arg78, ptr noalias %arg79, ptr noalias %arg80, ptr noalias %arg81, ptr noalias %arg82, ptr noalias %arg83, ptr noalias %arg84, ptr noalias %arg85, ptr noalias %arg86, ptr noalias %arg87, ptr noalias %arg88, ptr noalias %arg89, ptr noalias %arg90, ptr noalias %arg91, ptr noalias %arg92, ptr noalias %arg93, ptr noalias %arg94, ptr noalias %arg95, ptr noalias %arg96, ptr noalias %arg97, ptr noalias %arg98, ptr noalias %arg99, ptr noalias %arg100, ptr noalias %arg101, ptr noalias %arg102, ptr noalias %arg103, ptr noalias %arg104, ptr noalias %arg105, ptr noalias %arg106, ptr noalias %arg107, ptr noalias %arg108, ptr noalias %arg109, ptr noalias %arg110, ptr noalias %arg111, ptr noalias %arg112, ptr noalias %arg113, ptr noalias %arg114, ptr noalias %arg115, ptr noalias %arg116, ptr noalias %arg117, ptr noalias %arg118, ptr noalias %arg119, ptr noalias %arg120, ptr noalias %arg121, ptr noalias %arg122, ptr noalias %arg123, ptr noalias %arg124, ptr noalias %arg125, ptr noalias %arg126, ptr noalias %arg127, ptr noalias %arg128, ptr noalias %arg129, ptr noalias %arg130, ptr noalias %arg131, ptr noalias %arg132, ptr noalias %arg133, ptr noalias %arg134, ptr noalias %arg135) {
 bb:
   br label %bb136
 
 bb136:                                            ; preds = %bb
-  %tmp = load i32, i32* %arg19, align 4
+  %tmp = load i32, ptr %arg19, align 4
   %tmp137 = sext i32 %tmp to i64
   %tmp138 = icmp slt i64 %tmp137, 0
   %tmp139 = select i1 %tmp138, i64 0, i64 %tmp137
-  %tmp140 = load i32, i32* %arg20, align 4
+  %tmp140 = load i32, ptr %arg20, align 4
   %tmp141 = sext i32 %tmp140 to i64
   %tmp142 = mul nsw i64 %tmp139, %tmp141
   %tmp143 = icmp slt i64 %tmp142, 0
   %tmp144 = select i1 %tmp143, i64 0, i64 %tmp142
   %tmp145 = xor i64 %tmp139, -1
-  %tmp146 = load i32, i32* %arg19, align 4
+  %tmp146 = load i32, ptr %arg19, align 4
   %tmp147 = sext i32 %tmp146 to i64
   %tmp148 = icmp slt i64 %tmp147, 0
   %tmp149 = select i1 %tmp148, i64 0, i64 %tmp147
-  %tmp150 = load i32, i32* %arg20, align 4
+  %tmp150 = load i32, ptr %arg20, align 4
   %tmp151 = sext i32 %tmp150 to i64
   %tmp152 = mul nsw i64 %tmp149, %tmp151
   %tmp153 = icmp slt i64 %tmp152, 0
   %tmp154 = select i1 %tmp153, i64 0, i64 %tmp152
   %tmp155 = xor i64 %tmp149, -1
-  %tmp156 = getelementptr inbounds [0 x i32], [0 x i32]* %arg3, i64 0, i64 0
-  %tmp157 = load i32, i32* %tmp156, align 4
+  %tmp157 = load i32, ptr %arg3, align 4
   %tmp158 = sext i32 %tmp157 to i64
   %tmp159 = icmp slt i64 %tmp158, 0
   %tmp160 = select i1 %tmp159, i64 0, i64 %tmp158
-  %tmp161 = getelementptr [0 x i32], [0 x i32]* %arg3, i64 0, i64 1
-  %tmp162 = load i32, i32* %tmp161, align 4
+  %tmp161 = getelementptr [0 x i32], ptr %arg3, i64 0, i64 1
+  %tmp162 = load i32, ptr %tmp161, align 4
   %tmp163 = sext i32 %tmp162 to i64
   %tmp164 = mul nsw i64 %tmp160, %tmp163
   %tmp165 = icmp slt i64 %tmp164, 0
@@ -72,17 +71,16 @@ bb136:                                            ; preds = %bb
   %tmp170 = shl i64 %tmp169, 3
   %tmp171 = icmp ne i64 %tmp170, 0
   %tmp172 = select i1 %tmp171, i64 %tmp170, i64 1
-  %tmp173 = tail call noalias i8* @wobble(i64 %tmp172) #1
+  %tmp173 = tail call noalias ptr @wobble(i64 %tmp172) #1
   %tmp174 = xor i64 %tmp160, -1
   %tmp175 = sub i64 %tmp174, %tmp166
-  %tmp176 = getelementptr inbounds [0 x i32], [0 x i32]* %arg3, i64 0, i64 0
-  %tmp177 = load i32, i32* %tmp176, align 4
+  %tmp177 = load i32, ptr %arg3, align 4
   %tmp178 = sext i32 %tmp177 to i64
-  %tmp179 = getelementptr [0 x i32], [0 x i32]* %arg3, i64 0, i64 1
-  %tmp180 = load i32, i32* %tmp179, align 4
+  %tmp179 = getelementptr [0 x i32], ptr %arg3, i64 0, i64 1
+  %tmp180 = load i32, ptr %tmp179, align 4
   %tmp181 = sext i32 %tmp180 to i64
-  %tmp182 = getelementptr [0 x i32], [0 x i32]* %arg3, i64 0, i64 2
-  %tmp183 = load i32, i32* %tmp182, align 4
+  %tmp182 = getelementptr [0 x i32], ptr %arg3, i64 0, i64 2
+  %tmp183 = load i32, ptr %tmp182, align 4
   %tmp184 = sext i32 %tmp183 to i64
   %tmp185 = add nsw i64 %tmp184, -1
   %tmp186 = icmp sgt i64 %tmp185, 1
@@ -121,17 +119,15 @@ bb203:                                            ; preds = %bb202, %bb203
   %tmp207 = add i64 %tmp206, %tmp175
   %tmp208 = add i64 %tmp207, %tmp205
   %tmp209 = add i64 %tmp208, %tmp204
-  %tmp210 = bitcast i8* %tmp173 to double*
-  %tmp211 = getelementptr double, double* %tmp210, i64 %tmp209
-  %tmp212 = load double, double* %tmp211, align 8
+  %tmp211 = getelementptr double, ptr %tmp173, i64 %tmp209
+  %tmp212 = load double, ptr %tmp211, align 8
   %tmp213 = mul i64 %tmp199, %tmp160
   %tmp214 = mul i64 %tmp194, %tmp166
   %tmp215 = add i64 %tmp214, %tmp175
   %tmp216 = add i64 %tmp215, %tmp213
   %tmp217 = add i64 %tmp216, %tmp204
-  %tmp218 = bitcast i8* %tmp173 to double*
-  %tmp219 = getelementptr double, double* %tmp218, i64 %tmp217
-  %tmp220 = load double, double* %tmp219, align 8
+  %tmp219 = getelementptr double, ptr %tmp173, i64 %tmp217
+  %tmp220 = load double, ptr %tmp219, align 8
   %tmp221 = fadd double %tmp212, %tmp220
   %tmp222 = mul i64 %tmp199, %tmp139
   %tmp223 = mul i64 %tmp189, %tmp144
@@ -145,11 +141,11 @@ bb203:                                            ; preds = %bb202, %bb203
   %tmp231 = add i64 %tmp230, %tmp229
   %tmp232 = add i64 %tmp231, %tmp228
   %tmp233 = add i64 %tmp232, %tmp204
-  %tmp234 = getelementptr [0 x double], [0 x double]* %arg56, i64 0, i64 %tmp233
-  %tmp235 = load double, double* %tmp234, align 8
+  %tmp234 = getelementptr [0 x double], ptr %arg56, i64 0, i64 %tmp233
+  %tmp235 = load double, ptr %tmp234, align 8
   %tmp236 = fadd double %tmp235, %tmp221
-  %tmp237 = getelementptr [0 x double], [0 x double]* %arg55, i64 0, i64 %tmp227
-  store double %tmp236, double* %tmp237, align 8
+  %tmp237 = getelementptr [0 x double], ptr %arg55, i64 0, i64 %tmp227
+  store double %tmp236, ptr %tmp237, align 8
   %tmp238 = icmp eq i64 %tmp204, %tmp200
   %tmp239 = add i64 %tmp204, 1
   br i1 %tmp238, label %bb240, label %bb203
@@ -174,11 +170,11 @@ bb248:                                            ; preds = %bb245
   br label %bb249
 
 bb249:                                            ; preds = %bb248, %bb136
-  %tmp250 = icmp eq i8* %tmp173, null
+  %tmp250 = icmp eq ptr %tmp173, null
   br i1 %tmp250, label %bb252, label %bb251
 
 bb251:                                            ; preds = %bb249
-  tail call void @snork(i8* %tmp173) #1
+  tail call void @snork(ptr %tmp173) #1
   br label %bb252
 
 bb252:                                            ; preds = %bb251, %bb249
@@ -186,7 +182,7 @@ bb252:                                            ; preds = %bb251, %bb249
 }
 
 ; Function Attrs: nounwind
-declare noalias i8* @wobble(i64) #1
+declare noalias ptr @wobble(i64) #1
 
 ; Function Attrs: nounwind
-declare void @snork(i8*) #1
+declare void @snork(ptr) #1

diff  --git a/polly/test/ScopInfo/multidim_gep_pointercast.ll b/polly/test/ScopInfo/multidim_gep_pointercast.ll
index 9db31cba516e2..20d59fa91eaf4 100644
--- a/polly/test/ScopInfo/multidim_gep_pointercast.ll
+++ b/polly/test/ScopInfo/multidim_gep_pointercast.ll
@@ -10,10 +10,9 @@
 ;        *((<4 x short> *)&A[7 * i][0]) = *((<4 x short>)&B[7 * i][0]);
 ;    }
 ;
-define void @f([4 x i16]* %A, i32 %N, i32 %P) {
+define void @f(ptr %A, i32 %N, i32 %P) {
 entry:
-  %arrayidx1 = getelementptr inbounds [4 x i16], [4 x i16]* %A, i32 %P, i64 0
-  %tmp = bitcast i16* %arrayidx1 to [4 x i16]*
+  %arrayidx1 = getelementptr inbounds [4 x i16], ptr %A, i32 %P, i64 0
   br label %for.cond
 
 for.cond:
@@ -23,12 +22,10 @@ for.cond:
 
 for.body:
   %mul = mul nsw i32 %indvars.iv, 7
-  %arrayidx4 = getelementptr inbounds [4 x i16], [4 x i16]* %tmp, i32 %mul, i64 0
-  %bc4 = bitcast i16* %arrayidx4 to <4 x i16>*
-  %tmp3 = load <4 x i16>, <4 x i16>* %bc4
-  %arrayidx8 = getelementptr inbounds [4 x i16], [4 x i16]* %A, i32 %mul, i64 0
-  %bc8 = bitcast i16* %arrayidx8 to <4 x i16>*
-  store <4 x i16> %tmp3, <4 x i16>* %bc8
+  %arrayidx4 = getelementptr inbounds [4 x i16], ptr %arrayidx1, i32 %mul, i64 0
+  %tmp3 = load <4 x i16>, ptr %arrayidx4
+  %arrayidx8 = getelementptr inbounds [4 x i16], ptr %A, i32 %mul, i64 0
+  store <4 x i16> %tmp3, ptr %arrayidx8
   br label %for.inc
 
 for.inc:

diff  --git a/polly/test/ScopInfo/multidim_gep_pointercast2.ll b/polly/test/ScopInfo/multidim_gep_pointercast2.ll
index 3251035019411..deed9c7c3f572 100644
--- a/polly/test/ScopInfo/multidim_gep_pointercast2.ll
+++ b/polly/test/ScopInfo/multidim_gep_pointercast2.ll
@@ -10,7 +10,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f([2 x i16]* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -21,9 +21,8 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %tmp = shl nsw i64 %indvars.iv, 2
-  %arrayidx1 = getelementptr inbounds [2 x i16], [2 x i16]* %A, i64 %tmp, i64 0
-  %tmp2 = bitcast i16* %arrayidx1 to i64*
-  store i64 0, i64* %tmp2, align 8
+  %arrayidx1 = getelementptr inbounds [2 x i16], ptr %A, i64 %tmp, i64 0
+  store i64 0, ptr %arrayidx1, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/multidim_invalid_dimension.ll b/polly/test/ScopInfo/multidim_invalid_dimension.ll
index 465f209984bfb..e1ec2e1ce3be0 100644
--- a/polly/test/ScopInfo/multidim_invalid_dimension.ll
+++ b/polly/test/ScopInfo/multidim_invalid_dimension.ll
@@ -5,7 +5,7 @@ target triple = "aarch64-unknown-linux-gnueabi"
 ; Make sure we don't crash trying delinearize the memory access
 ; CHECK: region: 'bb4 => bb14'
 ; CHECK-NEXT: Invalid Scop!
-define void @f(i8* %arg, i32 %arg1, i32 %arg2, i32 %arg3) {
+define void @f(ptr %arg, i32 %arg1, i32 %arg2, i32 %arg3) {
 bb:
   br label %bb4
 
@@ -15,9 +15,8 @@ bb4:
   %tmp6 = select i1 %tmp5, i32 %tmp, i32 0
   %tmp7 = mul nsw i32 %tmp6, %arg3
   %tmp8 = sext i32 %tmp7 to i64
-  %tmp9 = getelementptr inbounds i8, i8* %arg, i64 %tmp8
-  %tmp10 = bitcast i8* %tmp9 to i32*
-  %tmp11 = load i32, i32* %tmp10, align 4
+  %tmp9 = getelementptr inbounds i8, ptr %arg, i64 %tmp8
+  %tmp11 = load i32, ptr %tmp9, align 4
   %tmp12 = add nsw i32 %tmp, 1
   %tmp13 = icmp slt i32 %tmp, %arg1
   br i1 %tmp13, label %bb4, label %bb14

diff  --git a/polly/test/ScopInfo/multidim_ivs_and_integer_offsets_3d.ll b/polly/test/ScopInfo/multidim_ivs_and_integer_offsets_3d.ll
index 3ac1c8050a422..9f7e6bc4a2a29 100644
--- a/polly/test/ScopInfo/multidim_ivs_and_integer_offsets_3d.ll
+++ b/polly/test/ScopInfo/multidim_ivs_and_integer_offsets_3d.ll
@@ -27,7 +27,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK-NEXT:             [o, m, n] -> { Stmt_for_k[i0, i1, i2] -> MemRef_A[3 + i0, i1, 7 + i2] };
 ; CHECK-NEXT: }
 
-define void @foo(i64 %n, i64 %m, i64 %o, double* %A) {
+define void @foo(i64 %n, i64 %m, i64 %o, ptr %A) {
 entry:
   br label %for.i
 
@@ -48,8 +48,8 @@ for.k:
   %subscript2 = mul i64 %subscript1, %o
   %offset2 = add nsw i64 %k, 7
   %subscript = add i64 %subscript2, %offset2
-  %idx = getelementptr inbounds double, double* %A, i64 %subscript
-  store double 1.0, double* %idx
+  %idx = getelementptr inbounds double, ptr %A, i64 %subscript
+  store double 1.0, ptr %idx
   br label %for.k.inc
 
 for.k.inc:

diff  --git a/polly/test/ScopInfo/multidim_ivs_and_parameteric_offsets_3d.ll b/polly/test/ScopInfo/multidim_ivs_and_parameteric_offsets_3d.ll
index 2d59fffe983a5..131bb7b3ebed3 100644
--- a/polly/test/ScopInfo/multidim_ivs_and_parameteric_offsets_3d.ll
+++ b/polly/test/ScopInfo/multidim_ivs_and_parameteric_offsets_3d.ll
@@ -34,7 +34,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK-NEXT:             [o, m, n, p, q, r] -> { Stmt_for_k[i0, i1, i2] -> MemRef_A[-1 + p + i0, -1 + m + q + i1, o + r + i2] : i1 <= -q and i2 < -r; Stmt_for_k[i0, i1, i2] -> MemRef_A[p + i0, -1 + q + i1, o + r + i2] : i1 > -q and i2 < -r; Stmt_for_k[i0, i1, i2] -> MemRef_A[-1 + p + i0, m + q + i1, r + i2] : i1 < -q and i2 >= -r; Stmt_for_k[i0, i1, i2] -> MemRef_A[p + i0, q + i1, r + i2] : i1 >= -q and i2 >= -r };
 ; CHECK-NEXT: }
 
-define void @foo(i64 %n, i64 %m, i64 %o, double* %A, i64 %p, i64 %q, i64 %r) {
+define void @foo(i64 %n, i64 %m, i64 %o, ptr %A, i64 %p, i64 %q, i64 %r) {
 entry:
   br label %for.i
 
@@ -55,8 +55,8 @@ for.k:
   %subscript2 = mul i64 %subscript1, %o
   %offset2 = add nsw i64 %k, %r
   %subscript = add i64 %subscript2, %offset2
-  %idx = getelementptr inbounds double, double* %A, i64 %subscript
-  store double 1.0, double* %idx
+  %idx = getelementptr inbounds double, ptr %A, i64 %subscript
+  store double 1.0, ptr %idx
   br label %for.k.inc
 
 for.k.inc:

diff  --git a/polly/test/ScopInfo/multidim_many_references.ll b/polly/test/ScopInfo/multidim_many_references.ll
index 4fa59e6c092d1..b0483b267260e 100644
--- a/polly/test/ScopInfo/multidim_many_references.ll
+++ b/polly/test/ScopInfo/multidim_many_references.ll
@@ -32,7 +32,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; formulation of the assumption tracking cause LLVM to crash due to excessive
 ; memory usage due to an overly large number of disjuncts being formed.
 
-%struct.Mat = type { float*, i64, i64, i64 }
+%struct.Mat = type { ptr, i64, i64, i64 }
 
 ; CHECK: Assumed Context:
 ; CHECK-DAG: a2_cols >= -1 + a1_cols
@@ -73,165 +73,146 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; CHECK-DAG: a19_cols >= -1 + a1_cols
 
 define void @jacobi(i64 %nn,
-  %struct.Mat* %a1,
-  %struct.Mat* %a2,
-  %struct.Mat* %a3,
-  %struct.Mat* %a4,
-  %struct.Mat* %a5,
-  %struct.Mat* %a6,
-  %struct.Mat* %a7,
-  %struct.Mat* %a8,
-  %struct.Mat* %a9,
-  %struct.Mat* %a10,
-  %struct.Mat* %a11,
-  %struct.Mat* %a12,
-  %struct.Mat* %a13,
-  %struct.Mat* %a14,
-  %struct.Mat* %a15,
-  %struct.Mat* %a16,
-  %struct.Mat* %a17,
-  %struct.Mat* %a18,
-  %struct.Mat* %a19
+  ptr %a1,
+  ptr %a2,
+  ptr %a3,
+  ptr %a4,
+  ptr %a5,
+  ptr %a6,
+  ptr %a7,
+  ptr %a8,
+  ptr %a9,
+  ptr %a10,
+  ptr %a11,
+  ptr %a12,
+  ptr %a13,
+  ptr %a14,
+  ptr %a15,
+  ptr %a16,
+  ptr %a17,
+  ptr %a18,
+  ptr %a19
   )  {
 
 entry:
   br label %entry.split
 
 entry.split:
-  %a1.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a1, i32 0, i32 0
-  %a1.data = load float*, float** %a1.data.ptr, align 8
-  %a1.rows.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a1, i32 0, i32 1
-  %a1.rows = load i64, i64* %a1.rows.ptr, align 8
-  %a1.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a1, i32 0, i32 2
-  %a1.cols = load i64, i64* %a1.cols.ptr, align 8
-  %a1.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a1, i32 0, i32 3
-  %a1.deps = load i64, i64* %a1.deps.ptr, align 8
-
-  %a2.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a2, i32 0, i32 0
-  %a2.data = load float*, float** %a2.data.ptr, align 8
-  %a2.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a2, i32 0, i32 2
-  %a2.cols = load i64, i64* %a2.cols.ptr, align 8
-  %a2.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a2, i32 0, i32 3
-  %a2.deps = load i64, i64* %a2.deps.ptr, align 8
-
-  %a3.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a3, i32 0, i32 0
-  %a3.data = load float*, float** %a3.data.ptr, align 8
-  %a3.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a3, i32 0, i32 2
-  %a3.cols = load i64, i64* %a3.cols.ptr, align 8
-  %a3.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a3, i32 0, i32 3
-  %a3.deps = load i64, i64* %a3.deps.ptr, align 8
-
-  %a4.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a4, i32 0, i32 0
-  %a4.data = load float*, float** %a4.data.ptr, align 8
-  %a4.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a4, i32 0, i32 2
-  %a4.cols = load i64, i64* %a4.cols.ptr, align 8
-  %a4.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a4, i32 0, i32 3
-  %a4.deps = load i64, i64* %a4.deps.ptr, align 8
-
-  %a5.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a5, i32 0, i32 0
-  %a5.data = load float*, float** %a5.data.ptr, align 8
-  %a5.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a5, i32 0, i32 2
-  %a5.cols = load i64, i64* %a5.cols.ptr, align 8
-  %a5.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a5, i32 0, i32 3
-  %a5.deps = load i64, i64* %a5.deps.ptr, align 8
-
-  %a6.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a6, i32 0, i32 0
-  %a6.data = load float*, float** %a6.data.ptr, align 8
-  %a6.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a6, i32 0, i32 2
-  %a6.cols = load i64, i64* %a6.cols.ptr, align 8
-  %a6.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a6, i32 0, i32 3
-  %a6.deps = load i64, i64* %a6.deps.ptr, align 8
-
-  %a7.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a7, i32 0, i32 0
-  %a7.data = load float*, float** %a7.data.ptr, align 8
-  %a7.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a7, i32 0, i32 2
-  %a7.cols = load i64, i64* %a7.cols.ptr, align 8
-  %a7.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a7, i32 0, i32 3
-  %a7.deps = load i64, i64* %a7.deps.ptr, align 8
-
-  %a8.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a8, i32 0, i32 0
-  %a8.data = load float*, float** %a8.data.ptr, align 8
-  %a8.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a8, i32 0, i32 2
-  %a8.cols = load i64, i64* %a8.cols.ptr, align 8
-  %a8.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a8, i32 0, i32 3
-  %a8.deps = load i64, i64* %a8.deps.ptr, align 8
-
-  %a9.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a9, i32 0, i32 0
-  %a9.data = load float*, float** %a9.data.ptr, align 8
-  %a9.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a9, i32 0, i32 2
-  %a9.cols = load i64, i64* %a9.cols.ptr, align 8
-  %a9.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a9, i32 0, i32 3
-  %a9.deps = load i64, i64* %a9.deps.ptr, align 8
-
-  %a10.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a10, i32 0, i32 0
-  %a10.data = load float*, float** %a10.data.ptr, align 8
-  %a10.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a10, i32 0, i32 2
-  %a10.cols = load i64, i64* %a10.cols.ptr, align 8
-  %a10.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a10, i32 0, i32 3
-  %a10.deps = load i64, i64* %a10.deps.ptr, align 8
-
-  %a11.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a11, i32 0, i32 0
-  %a11.data = load float*, float** %a11.data.ptr, align 8
-  %a11.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a11, i32 0, i32 2
-  %a11.cols = load i64, i64* %a11.cols.ptr, align 8
-  %a11.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a11, i32 0, i32 3
-  %a11.deps = load i64, i64* %a11.deps.ptr, align 8
-
-  %a12.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a12, i32 0, i32 0
-  %a12.data = load float*, float** %a12.data.ptr, align 8
-  %a12.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a12, i32 0, i32 2
-  %a12.cols = load i64, i64* %a12.cols.ptr, align 8
-  %a12.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a12, i32 0, i32 3
-  %a12.deps = load i64, i64* %a12.deps.ptr, align 8
-
-  %a13.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a13, i32 0, i32 0
-  %a13.data = load float*, float** %a13.data.ptr, align 8
-  %a13.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a13, i32 0, i32 2
-  %a13.cols = load i64, i64* %a13.cols.ptr, align 8
-  %a13.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a13, i32 0, i32 3
-  %a13.deps = load i64, i64* %a13.deps.ptr, align 8
-
-  %a14.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a14, i32 0, i32 0
-  %a14.data = load float*, float** %a14.data.ptr, align 8
-  %a14.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a14, i32 0, i32 2
-  %a14.cols = load i64, i64* %a14.cols.ptr, align 8
-  %a14.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a14, i32 0, i32 3
-  %a14.deps = load i64, i64* %a14.deps.ptr, align 8
-
-  %a15.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a15, i32 0, i32 0
-  %a15.data = load float*, float** %a15.data.ptr, align 8
-  %a15.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a15, i32 0, i32 2
-  %a15.cols = load i64, i64* %a15.cols.ptr, align 8
-  %a15.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a15, i32 0, i32 3
-  %a15.deps = load i64, i64* %a15.deps.ptr, align 8
-
-  %a16.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a16, i32 0, i32 0
-  %a16.data = load float*, float** %a16.data.ptr, align 8
-  %a16.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a16, i32 0, i32 2
-  %a16.cols = load i64, i64* %a16.cols.ptr, align 8
-  %a16.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a16, i32 0, i32 3
-  %a16.deps = load i64, i64* %a16.deps.ptr, align 8
-
-  %a17.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a17, i32 0, i32 0
-  %a17.data = load float*, float** %a17.data.ptr, align 8
-  %a17.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a17, i32 0, i32 2
-  %a17.cols = load i64, i64* %a17.cols.ptr, align 8
-  %a17.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a17, i32 0, i32 3
-  %a17.deps = load i64, i64* %a17.deps.ptr, align 8
-
-  %a18.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a18, i32 0, i32 0
-  %a18.data = load float*, float** %a18.data.ptr, align 8
-  %a18.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a18, i32 0, i32 2
-  %a18.cols = load i64, i64* %a18.cols.ptr, align 8
-  %a18.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a18, i32 0, i32 3
-  %a18.deps = load i64, i64* %a18.deps.ptr, align 8
-
-  %a19.data.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a19, i32 0, i32 0
-  %a19.data = load float*, float** %a19.data.ptr, align 8
-  %a19.cols.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a19, i32 0, i32 2
-  %a19.cols = load i64, i64* %a19.cols.ptr, align 8
-  %a19.deps.ptr = getelementptr inbounds %struct.Mat, %struct.Mat* %a19, i32 0, i32 3
-  %a19.deps = load i64, i64* %a19.deps.ptr, align 8
+  %a1.data = load ptr, ptr %a1, align 8
+  %a1.rows.ptr = getelementptr inbounds %struct.Mat, ptr %a1, i32 0, i32 1
+  %a1.rows = load i64, ptr %a1.rows.ptr, align 8
+  %a1.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a1, i32 0, i32 2
+  %a1.cols = load i64, ptr %a1.cols.ptr, align 8
+  %a1.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a1, i32 0, i32 3
+  %a1.deps = load i64, ptr %a1.deps.ptr, align 8
+
+  %a2.data = load ptr, ptr %a2, align 8
+  %a2.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a2, i32 0, i32 2
+  %a2.cols = load i64, ptr %a2.cols.ptr, align 8
+  %a2.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a2, i32 0, i32 3
+  %a2.deps = load i64, ptr %a2.deps.ptr, align 8
+
+  %a3.data = load ptr, ptr %a3, align 8
+  %a3.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a3, i32 0, i32 2
+  %a3.cols = load i64, ptr %a3.cols.ptr, align 8
+  %a3.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a3, i32 0, i32 3
+  %a3.deps = load i64, ptr %a3.deps.ptr, align 8
+
+  %a4.data = load ptr, ptr %a4, align 8
+  %a4.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a4, i32 0, i32 2
+  %a4.cols = load i64, ptr %a4.cols.ptr, align 8
+  %a4.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a4, i32 0, i32 3
+  %a4.deps = load i64, ptr %a4.deps.ptr, align 8
+
+  %a5.data = load ptr, ptr %a5, align 8
+  %a5.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a5, i32 0, i32 2
+  %a5.cols = load i64, ptr %a5.cols.ptr, align 8
+  %a5.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a5, i32 0, i32 3
+  %a5.deps = load i64, ptr %a5.deps.ptr, align 8
+
+  %a6.data = load ptr, ptr %a6, align 8
+  %a6.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a6, i32 0, i32 2
+  %a6.cols = load i64, ptr %a6.cols.ptr, align 8
+  %a6.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a6, i32 0, i32 3
+  %a6.deps = load i64, ptr %a6.deps.ptr, align 8
+
+  %a7.data = load ptr, ptr %a7, align 8
+  %a7.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a7, i32 0, i32 2
+  %a7.cols = load i64, ptr %a7.cols.ptr, align 8
+  %a7.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a7, i32 0, i32 3
+  %a7.deps = load i64, ptr %a7.deps.ptr, align 8
+
+  %a8.data = load ptr, ptr %a8, align 8
+  %a8.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a8, i32 0, i32 2
+  %a8.cols = load i64, ptr %a8.cols.ptr, align 8
+  %a8.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a8, i32 0, i32 3
+  %a8.deps = load i64, ptr %a8.deps.ptr, align 8
+
+  %a9.data = load ptr, ptr %a9, align 8
+  %a9.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a9, i32 0, i32 2
+  %a9.cols = load i64, ptr %a9.cols.ptr, align 8
+  %a9.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a9, i32 0, i32 3
+  %a9.deps = load i64, ptr %a9.deps.ptr, align 8
+
+  %a10.data = load ptr, ptr %a10, align 8
+  %a10.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a10, i32 0, i32 2
+  %a10.cols = load i64, ptr %a10.cols.ptr, align 8
+  %a10.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a10, i32 0, i32 3
+  %a10.deps = load i64, ptr %a10.deps.ptr, align 8
+
+  %a11.data = load ptr, ptr %a11, align 8
+  %a11.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a11, i32 0, i32 2
+  %a11.cols = load i64, ptr %a11.cols.ptr, align 8
+  %a11.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a11, i32 0, i32 3
+  %a11.deps = load i64, ptr %a11.deps.ptr, align 8
+
+  %a12.data = load ptr, ptr %a12, align 8
+  %a12.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a12, i32 0, i32 2
+  %a12.cols = load i64, ptr %a12.cols.ptr, align 8
+  %a12.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a12, i32 0, i32 3
+  %a12.deps = load i64, ptr %a12.deps.ptr, align 8
+
+  %a13.data = load ptr, ptr %a13, align 8
+  %a13.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a13, i32 0, i32 2
+  %a13.cols = load i64, ptr %a13.cols.ptr, align 8
+  %a13.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a13, i32 0, i32 3
+  %a13.deps = load i64, ptr %a13.deps.ptr, align 8
+
+  %a14.data = load ptr, ptr %a14, align 8
+  %a14.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a14, i32 0, i32 2
+  %a14.cols = load i64, ptr %a14.cols.ptr, align 8
+  %a14.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a14, i32 0, i32 3
+  %a14.deps = load i64, ptr %a14.deps.ptr, align 8
+
+  %a15.data = load ptr, ptr %a15, align 8
+  %a15.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a15, i32 0, i32 2
+  %a15.cols = load i64, ptr %a15.cols.ptr, align 8
+  %a15.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a15, i32 0, i32 3
+  %a15.deps = load i64, ptr %a15.deps.ptr, align 8
+
+  %a16.data = load ptr, ptr %a16, align 8
+  %a16.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a16, i32 0, i32 2
+  %a16.cols = load i64, ptr %a16.cols.ptr, align 8
+  %a16.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a16, i32 0, i32 3
+  %a16.deps = load i64, ptr %a16.deps.ptr, align 8
+
+  %a17.data = load ptr, ptr %a17, align 8
+  %a17.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a17, i32 0, i32 2
+  %a17.cols = load i64, ptr %a17.cols.ptr, align 8
+  %a17.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a17, i32 0, i32 3
+  %a17.deps = load i64, ptr %a17.deps.ptr, align 8
+
+  %a18.data = load ptr, ptr %a18, align 8
+  %a18.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a18, i32 0, i32 2
+  %a18.cols = load i64, ptr %a18.cols.ptr, align 8
+  %a18.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a18, i32 0, i32 3
+  %a18.deps = load i64, ptr %a18.deps.ptr, align 8
+
+  %a19.data = load ptr, ptr %a19, align 8
+  %a19.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a19, i32 0, i32 2
+  %a19.cols = load i64, ptr %a19.cols.ptr, align 8
+  %a19.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a19, i32 0, i32 3
+  %a19.deps = load i64, ptr %a19.deps.ptr, align 8
   br label %for.n
 
 for.n:
@@ -257,8 +238,8 @@ for.body.k:
   %a1.idx.j = mul i64 %a1.deps, %indvar.j
   %a1.tmp6 = add i64 %a1.tmp5, %a1.idx.j
   %a1.idx.k = add i64 %a1.tmp6, %indvar.k
-  %a1.ptr = getelementptr float, float* %a1.data, i64 %a1.idx.k
-  %sum = load float, float* %a1.ptr, align 4
+  %a1.ptr = getelementptr float, ptr %a1.data, i64 %a1.idx.k
+  %sum = load float, ptr %a1.ptr, align 4
 
   %a2.tmp1 = add i64 %a2.cols, 1
   %a2.tmp2 = mul i64 %a2.deps, %a2.tmp1
@@ -269,8 +250,8 @@ for.body.k:
   %a2.idx.j = mul i64 %a2.deps, %indvar.j
   %a2.tmp6 = add i64 %a2.tmp5, %a2.idx.j
   %a2.idx.k = add i64 %a2.tmp6, %indvar.k
-  %a2.ptr = getelementptr float, float* %a2.data, i64 %a2.idx.k
-  %a2.val = load float, float* %a2.ptr, align 4
+  %a2.ptr = getelementptr float, ptr %a2.data, i64 %a2.idx.k
+  %a2.val = load float, ptr %a2.ptr, align 4
   %sum.a2 = fadd float %sum, %a2.val
 
   %a3.tmp1 = add i64 %a3.cols, 1
@@ -282,8 +263,8 @@ for.body.k:
   %a3.idx.j = mul i64 %a3.deps, %indvar.j
   %a3.tmp6 = add i64 %a3.tmp5, %a3.idx.j
   %a3.idx.k = add i64 %a3.tmp6, %indvar.k
-  %a3.ptr = getelementptr float, float* %a3.data, i64 %a3.idx.k
-  %a3.val = load float, float* %a3.ptr, align 4
+  %a3.ptr = getelementptr float, ptr %a3.data, i64 %a3.idx.k
+  %a3.val = load float, ptr %a3.ptr, align 4
   %sum.a3 = fadd float %sum.a2, %a3.val
 
   %a4.tmp1 = add i64 %a4.cols, 1
@@ -295,8 +276,8 @@ for.body.k:
   %a4.idx.j = mul i64 %a4.deps, %indvar.j
   %a4.tmp6 = add i64 %a4.tmp5, %a4.idx.j
   %a4.idx.k = add i64 %a4.tmp6, %indvar.k
-  %a4.ptr = getelementptr float, float* %a4.data, i64 %a4.idx.k
-  %a4.val = load float, float* %a4.ptr, align 4
+  %a4.ptr = getelementptr float, ptr %a4.data, i64 %a4.idx.k
+  %a4.val = load float, ptr %a4.ptr, align 4
   %sum.a4 = fadd float %sum.a3, %a4.val
 
   %a5.tmp1 = add i64 %a5.cols, 1
@@ -308,8 +289,8 @@ for.body.k:
   %a5.idx.j = mul i64 %a5.deps, %indvar.j
   %a5.tmp6 = add i64 %a5.tmp5, %a5.idx.j
   %a5.idx.k = add i64 %a5.tmp6, %indvar.k
-  %a5.ptr = getelementptr float, float* %a5.data, i64 %a5.idx.k
-  %a5.val = load float, float* %a5.ptr, align 4
+  %a5.ptr = getelementptr float, ptr %a5.data, i64 %a5.idx.k
+  %a5.val = load float, ptr %a5.ptr, align 4
   %sum.a5 = fadd float %sum.a4, %a5.val
 
   %a6.tmp1 = add i64 %a6.cols, 1
@@ -321,8 +302,8 @@ for.body.k:
   %a6.idx.j = mul i64 %a6.deps, %indvar.j
   %a6.tmp6 = add i64 %a6.tmp5, %a6.idx.j
   %a6.idx.k = add i64 %a6.tmp6, %indvar.k
-  %a6.ptr = getelementptr float, float* %a6.data, i64 %a6.idx.k
-  %a6.val = load float, float* %a6.ptr, align 4
+  %a6.ptr = getelementptr float, ptr %a6.data, i64 %a6.idx.k
+  %a6.val = load float, ptr %a6.ptr, align 4
   %sum.a6 = fadd float %sum.a5, %a6.val
 
   %a7.tmp1 = add i64 %a7.cols, 1
@@ -334,8 +315,8 @@ for.body.k:
   %a7.idx.j = mul i64 %a7.deps, %indvar.j
   %a7.tmp6 = add i64 %a7.tmp5, %a7.idx.j
   %a7.idx.k = add i64 %a7.tmp6, %indvar.k
-  %a7.ptr = getelementptr float, float* %a7.data, i64 %a7.idx.k
-  %a7.val = load float, float* %a7.ptr, align 4
+  %a7.ptr = getelementptr float, ptr %a7.data, i64 %a7.idx.k
+  %a7.val = load float, ptr %a7.ptr, align 4
   %sum.a7 = fadd float %sum.a6, %a7.val
 
   %a8.tmp1 = add i64 %a8.cols, 1
@@ -347,8 +328,8 @@ for.body.k:
   %a8.idx.j = mul i64 %a8.deps, %indvar.j
   %a8.tmp6 = add i64 %a8.tmp5, %a8.idx.j
   %a8.idx.k = add i64 %a8.tmp6, %indvar.k
-  %a8.ptr = getelementptr float, float* %a8.data, i64 %a8.idx.k
-  %a8.val = load float, float* %a8.ptr, align 4
+  %a8.ptr = getelementptr float, ptr %a8.data, i64 %a8.idx.k
+  %a8.val = load float, ptr %a8.ptr, align 4
   %sum.a8 = fadd float %sum.a7, %a8.val
 
   %a9.tmp1 = add i64 %a9.cols, 1
@@ -360,8 +341,8 @@ for.body.k:
   %a9.idx.j = mul i64 %a9.deps, %indvar.j
   %a9.tmp6  = add i64 %a9.tmp5, %a9.idx.j
   %a9.idx.k = add i64 %a9.tmp6, %indvar.k
-  %a9.ptr = getelementptr float, float* %a9.data, i64 %a9.idx.k
-  %a9.val = load float, float* %a9.ptr, align 4
+  %a9.ptr = getelementptr float, ptr %a9.data, i64 %a9.idx.k
+  %a9.val = load float, ptr %a9.ptr, align 4
   %sum.a9 = fadd float %sum.a8, %a9.val
 
   %a10.tmp1 = add i64 %a10.cols, 1
@@ -373,8 +354,8 @@ for.body.k:
   %a10.idx.j = mul i64 %a10.deps, %indvar.j
   %a10.tmp6 = add i64 %a10.tmp5, %a10.idx.j
   %a10.idx.k = add i64 %a10.tmp6, %indvar.k
-  %a10.ptr = getelementptr float, float* %a10.data, i64 %a10.idx.k
-  %a10.val = load float, float* %a10.ptr, align 4
+  %a10.ptr = getelementptr float, ptr %a10.data, i64 %a10.idx.k
+  %a10.val = load float, ptr %a10.ptr, align 4
   %sum.a10 = fadd float %sum.a9, %a10.val
 
   %a11.tmp1 = add i64 %a11.cols, 1
@@ -386,8 +367,8 @@ for.body.k:
   %a11.idx.j = mul i64 %a11.deps, %indvar.j
   %a11.tmp6 = add i64 %a11.tmp5, %a11.idx.j
   %a11.idx.k = add i64 %a11.tmp6, %indvar.k
-  %a11.ptr = getelementptr float, float* %a11.data, i64 %a11.idx.k
-  %a11.val = load float, float* %a11.ptr, align 4
+  %a11.ptr = getelementptr float, ptr %a11.data, i64 %a11.idx.k
+  %a11.val = load float, ptr %a11.ptr, align 4
   %sum.a11 = fadd float %sum.a10, %a11.val
 
   %a12.tmp1 = add i64 %a12.cols, 1
@@ -399,8 +380,8 @@ for.body.k:
   %a12.idx.j = mul i64 %a12.deps, %indvar.j
   %a12.tmp6 = add i64 %a12.tmp5, %a12.idx.j
   %a12.idx.k = add i64 %a12.tmp6, %indvar.k
-  %a12.ptr = getelementptr float, float* %a12.data, i64 %a12.idx.k
-  %a12.val = load float, float* %a12.ptr, align 4
+  %a12.ptr = getelementptr float, ptr %a12.data, i64 %a12.idx.k
+  %a12.val = load float, ptr %a12.ptr, align 4
   %sum.a12 = fadd float %sum.a11, %a12.val
 
   %a13.tmp1 = add i64 %a13.cols, 1
@@ -412,8 +393,8 @@ for.body.k:
   %a13.idx.j = mul i64 %a13.deps, %indvar.j
   %a13.tmp6 = add i64 %a13.tmp5, %a13.idx.j
   %a13.idx.k = add i64 %a13.tmp6, %indvar.k
-  %a13.ptr = getelementptr float, float* %a13.data, i64 %a13.idx.k
-  %a13.val = load float, float* %a13.ptr, align 4
+  %a13.ptr = getelementptr float, ptr %a13.data, i64 %a13.idx.k
+  %a13.val = load float, ptr %a13.ptr, align 4
   %sum.a13 = fadd float %sum.a12, %a13.val
 
   %a14.tmp1 = add i64 %a14.cols, 1
@@ -425,8 +406,8 @@ for.body.k:
   %a14.idx.j = mul i64 %a14.deps, %indvar.j
   %a14.tmp6 = add i64 %a14.tmp5, %a14.idx.j
   %a14.idx.k = add i64 %a14.tmp6, %indvar.k
-  %a14.ptr = getelementptr float, float* %a14.data, i64 %a14.idx.k
-  %a14.val = load float, float* %a14.ptr, align 4
+  %a14.ptr = getelementptr float, ptr %a14.data, i64 %a14.idx.k
+  %a14.val = load float, ptr %a14.ptr, align 4
   %sum.a14 = fadd float %sum.a13, %a14.val
 
   %a15.tmp1 = add i64 %a15.cols, 1
@@ -438,8 +419,8 @@ for.body.k:
   %a15.idx.j = mul i64 %a15.deps, %indvar.j
   %a15.tmp6 = add i64 %a15.tmp5, %a15.idx.j
   %a15.idx.k = add i64 %a15.tmp6, %indvar.k
-  %a15.ptr = getelementptr float, float* %a15.data, i64 %a15.idx.k
-  %a15.val = load float, float* %a15.ptr, align 4
+  %a15.ptr = getelementptr float, ptr %a15.data, i64 %a15.idx.k
+  %a15.val = load float, ptr %a15.ptr, align 4
   %sum.a15 = fadd float %sum.a14, %a15.val
 
   %a16.tmp1 = add i64 %a16.cols, 1
@@ -451,8 +432,8 @@ for.body.k:
   %a16.idx.j = mul i64 %a16.deps, %indvar.j
   %a16.tmp6 = add i64 %a16.tmp5, %a16.idx.j
   %a16.idx.k = add i64 %a16.tmp6, %indvar.k
-  %a16.ptr = getelementptr float, float* %a16.data, i64 %a16.idx.k
-  %a16.val = load float, float* %a16.ptr, align 4
+  %a16.ptr = getelementptr float, ptr %a16.data, i64 %a16.idx.k
+  %a16.val = load float, ptr %a16.ptr, align 4
   %sum.a16 = fadd float %sum.a15, %a16.val
 
   %a17.tmp1 = add i64 %a17.cols, 1
@@ -464,8 +445,8 @@ for.body.k:
   %a17.idx.j = mul i64 %a17.deps, %indvar.j
   %a17.tmp6 = add i64 %a17.tmp5, %a17.idx.j
   %a17.idx.k = add i64 %a17.tmp6, %indvar.k
-  %a17.ptr = getelementptr float, float* %a17.data, i64 %a17.idx.k
-  %a17.val = load float, float* %a17.ptr, align 4
+  %a17.ptr = getelementptr float, ptr %a17.data, i64 %a17.idx.k
+  %a17.val = load float, ptr %a17.ptr, align 4
   %sum.a17 = fadd float %sum.a16, %a17.val
 
   %a18.tmp1 = add i64 %a18.cols, 1
@@ -477,8 +458,8 @@ for.body.k:
   %a18.idx.j = mul i64 %a18.deps, %indvar.j
   %a18.tmp6 = add i64 %a18.tmp5, %a18.idx.j
   %a18.idx.k = add i64 %a18.tmp6, %indvar.k
-  %a18.ptr = getelementptr float, float* %a18.data, i64 %a18.idx.k
-  %a18.val = load float, float* %a18.ptr, align 4
+  %a18.ptr = getelementptr float, ptr %a18.data, i64 %a18.idx.k
+  %a18.val = load float, ptr %a18.ptr, align 4
   %sum.a18 = fadd float %sum.a17, %a18.val
 
   %a19.tmp1 = add i64 %a19.cols, 1
@@ -490,8 +471,8 @@ for.body.k:
   %a19.idx.j = mul i64 %a19.deps, %indvar.j
   %a19.tmp6  = add i64 %a19.tmp5, %a19.idx.j
   %a19.idx.k = add i64 %a19.tmp6, %indvar.k
-  %a19.ptr = getelementptr float, float* %a19.data, i64 %a19.idx.k
-  store float %sum.a18, float* %a19.ptr, align 4
+  %a19.ptr = getelementptr float, ptr %a19.data, i64 %a19.idx.k
+  store float %sum.a18, ptr %a19.ptr, align 4
 
   %indvar.k.next = add i64 %indvar.k, 1
   %a1.deps.sub = add i64 %a1.deps, -2

diff  --git a/polly/test/ScopInfo/multidim_nested_start_integer.ll b/polly/test/ScopInfo/multidim_nested_start_integer.ll
index ae59dbdfbf666..741a0ef45c27b 100644
--- a/polly/test/ScopInfo/multidim_nested_start_integer.ll
+++ b/polly/test/ScopInfo/multidim_nested_start_integer.ll
@@ -27,7 +27,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK-NEXT:             [o, m, n] -> { Stmt_for_k[i0, i1, i2] -> MemRef_A[3 + i0, i1, 7 + i2] };
 ; CHECK-NEXT: }
 
-define void @foo(i64 %n, i64 %m, i64 %o, double* %A) {
+define void @foo(i64 %n, i64 %m, i64 %o, ptr %A) {
 entry:
   br label %for.i
 
@@ -48,8 +48,8 @@ for.k:
   %subscript2 = mul i64 %subscript1, %o
   %offset2 = add nsw i64 %k, 7
   %subscript = add i64 %subscript2, %offset2
-  %idx = getelementptr inbounds double, double* %A, i64 %subscript
-  store double 1.0, double* %idx
+  %idx = getelementptr inbounds double, ptr %A, i64 %subscript
+  store double 1.0, ptr %idx
   br label %for.k.inc
 
 for.k.inc:

diff  --git a/polly/test/ScopInfo/multidim_nested_start_share_parameter.ll b/polly/test/ScopInfo/multidim_nested_start_share_parameter.ll
index 27afdd86e9dba..692746bad3d74 100644
--- a/polly/test/ScopInfo/multidim_nested_start_share_parameter.ll
+++ b/polly/test/ScopInfo/multidim_nested_start_share_parameter.ll
@@ -21,7 +21,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK:   [o, m, n] -> { Stmt_for_k[i0, i1, i2] -> MemRef_A[3 + i0, 10 + i1, 7 + i2] };
 ; CHECK:   [o, m, n] -> { Stmt_for_k[i0, i1, i2] -> MemRef_A[13 + i0, i1, 17 + i2] };
 
-define void @foo(i64 %n, i64 %m, i64 %o, double* %A) {
+define void @foo(i64 %n, i64 %m, i64 %o, ptr %A) {
 entry:
   br label %for.i
 
@@ -43,8 +43,8 @@ for.k:
   %subscript2 = mul i64 %subscript1, %o
   %offset2 = add nsw i64 %k, 7
   %subscript3 = add i64 %subscript2, %offset2
-  %idx = getelementptr inbounds double, double* %A, i64 %subscript3
-  store double 1.0, double* %idx
+  %idx = getelementptr inbounds double, ptr %A, i64 %subscript3
+  store double 1.0, ptr %idx
 
   %offset3 = add nsw i64 %i, 13
   %subscript4 = mul i64 %offset3, %m
@@ -53,8 +53,8 @@ for.k:
   %subscript6 = mul i64 %subscript5, %o
   %offset5 = add nsw i64 %k, 17
   %subscript7 = add i64 %subscript6, %offset5
-  %idx1 = getelementptr inbounds double, double* %A, i64 %subscript7
-  store double 11.0, double* %idx1
+  %idx1 = getelementptr inbounds double, ptr %A, i64 %subscript7
+  store double 11.0, ptr %idx1
 
   br label %for.k.inc
 

diff  --git a/polly/test/ScopInfo/multidim_only_ivs_2d.ll b/polly/test/ScopInfo/multidim_only_ivs_2d.ll
index 15a4e7848076a..71245642e751c 100644
--- a/polly/test/ScopInfo/multidim_only_ivs_2d.ll
+++ b/polly/test/ScopInfo/multidim_only_ivs_2d.ll
@@ -26,7 +26,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK-NEXT:             [m, n] -> { Stmt_for_j[i0, i1] -> MemRef_A[i0, i1] };
 ; CHECK-NEXT: }
 
-define void @foo(i64 %n, i64 %m, double* %A) {
+define void @foo(i64 %n, i64 %m, ptr %A) {
 entry:
   br label %for.i
 
@@ -38,8 +38,8 @@ for.i:
 for.j:
   %j = phi i64 [ 0, %for.i ], [ %j.inc, %for.j ]
   %vlaarrayidx.sum = add i64 %j, %tmp
-  %arrayidx = getelementptr inbounds double, double* %A, i64 %vlaarrayidx.sum
-  store double 1.0, double* %arrayidx
+  %arrayidx = getelementptr inbounds double, ptr %A, i64 %vlaarrayidx.sum
+  store double 1.0, ptr %arrayidx
   %j.inc = add nsw i64 %j, 1
   %j.exitcond = icmp eq i64 %j.inc, %m
   br i1 %j.exitcond, label %for.i.inc, label %for.j

diff  --git a/polly/test/ScopInfo/multidim_only_ivs_3d.ll b/polly/test/ScopInfo/multidim_only_ivs_3d.ll
index 575a0dc8f61cb..a019d58b241d5 100644
--- a/polly/test/ScopInfo/multidim_only_ivs_3d.ll
+++ b/polly/test/ScopInfo/multidim_only_ivs_3d.ll
@@ -27,7 +27,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK-NEXT:             [o, m, n] -> { Stmt_for_k[i0, i1, i2] -> MemRef_A[i0, i1, i2] };
 ; CHECK-NEXT: }
 
-define void @foo(i64 %n, i64 %m, i64 %o, double* %A) {
+define void @foo(i64 %n, i64 %m, i64 %o, ptr %A) {
 entry:
   br label %for.i
 
@@ -45,8 +45,8 @@ for.k:
   %subscript1 = add i64 %j, %subscript0
   %subscript2 = mul i64 %subscript1, %o
   %subscript = add i64 %subscript2, %k
-  %idx = getelementptr inbounds double, double* %A, i64 %subscript
-  store double 1.0, double* %idx
+  %idx = getelementptr inbounds double, ptr %A, i64 %subscript
+  store double 1.0, ptr %idx
   br label %for.k.inc
 
 for.k.inc:

diff  --git a/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll b/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll
index f47c01275d862..41577ef1a0be6 100644
--- a/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll
+++ b/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll
@@ -39,7 +39,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"
 
-define void @foo(i32 %n, i32 %m, i32 %o, double* %A) {
+define void @foo(i32 %n, i32 %m, i32 %o, ptr %A) {
 entry:
   %m_zext = zext i32 %m to i64
   %n_zext = zext i32 %o to i64
@@ -62,8 +62,8 @@ for.k:
   %tmp.us.us = add i64 %j, %tmp
   %tmp17.us.us = mul i64 %tmp.us.us, %n_zext
   %subscript = add i64 %tmp17.us.us, %k
-  %idx = getelementptr inbounds double, double* %A, i64 %subscript
-  store double 1.0, double* %idx
+  %idx = getelementptr inbounds double, ptr %A, i64 %subscript
+  store double 1.0, ptr %idx
   br label %for.k.inc
 
 for.k.inc:

diff  --git a/polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll b/polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll
index 9320aaa65a91c..25907f2ee79cc 100644
--- a/polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll
+++ b/polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll
@@ -32,7 +32,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ; CHECK-NEXT:             [m, o, n] -> { Stmt_for_j[i0, i1, i2] -> MemRef_A[i0, i2, i1] };
 ; CHECK-NEXT: }
 
-define void @foo(i64 %n, i64 %m, i64 %o, double* %A) {
+define void @foo(i64 %n, i64 %m, i64 %o, ptr %A) {
 entry:
   br label %for.i
 
@@ -50,8 +50,8 @@ for.j:
   %subscript1 = add i64 %j, %subscript0
   %subscript2 = mul i64 %subscript1, %o
   %subscript = add i64 %subscript2, %k
-  %idx = getelementptr inbounds double, double* %A, i64 %subscript
-  store double 1.0, double* %idx
+  %idx = getelementptr inbounds double, ptr %A, i64 %subscript
+  store double 1.0, ptr %idx
   br label %for.j.inc
 
 for.j.inc:

diff  --git a/polly/test/ScopInfo/multidim_param_in_subscript-2.ll b/polly/test/ScopInfo/multidim_param_in_subscript-2.ll
index 9ca173781cecd..0790664f71295 100644
--- a/polly/test/ScopInfo/multidim_param_in_subscript-2.ll
+++ b/polly/test/ScopInfo/multidim_param_in_subscript-2.ll
@@ -17,7 +17,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n, i64 %m, float* %A) {
+define void @foo(i64 %n, i64 %m, ptr %A) {
 entry:
   br label %for.cond
 
@@ -52,17 +52,17 @@ for.body6:                                        ; preds = %for.cond4
   %tmp2 = mul nsw i64 %sub9, %m
   %arrayidx.sum = add i64 %tmp1, %tmp2
   %arrayidx10.sum = add i64 %arrayidx.sum, %sub7
-  %arrayidx11 = getelementptr inbounds float, float* %A, i64 %arrayidx10.sum
-  %tmp3 = load float, float* %arrayidx11, align 4
+  %arrayidx11 = getelementptr inbounds float, ptr %A, i64 %arrayidx10.sum
+  %tmp3 = load float, ptr %arrayidx11, align 4
   %tmp4 = mul nuw i64 %n, %m
   %tmp5 = mul nsw i64 %i.0, %tmp4
   %tmp6 = mul nsw i64 %j.0, %m
   %arrayidx12.sum = add i64 %tmp5, %tmp6
   %arrayidx13.sum = add i64 %arrayidx12.sum, %k.0
-  %arrayidx14 = getelementptr inbounds float, float* %A, i64 %arrayidx13.sum
-  %tmp7 = load float, float* %arrayidx14, align 4
+  %arrayidx14 = getelementptr inbounds float, ptr %A, i64 %arrayidx13.sum
+  %tmp7 = load float, ptr %arrayidx14, align 4
   %add = fadd float %tmp7, %tmp3
-  store float %add, float* %arrayidx14, align 4
+  store float %add, ptr %arrayidx14, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body6

diff  --git a/polly/test/ScopInfo/multidim_param_in_subscript.ll b/polly/test/ScopInfo/multidim_param_in_subscript.ll
index d7fbc378f5e56..b8ec80b321fe7 100644
--- a/polly/test/ScopInfo/multidim_param_in_subscript.ll
+++ b/polly/test/ScopInfo/multidim_param_in_subscript.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n, float* %A) {
+define void @foo(i64 %n, ptr %A) {
 entry:
   br label %for.cond
 
@@ -40,14 +40,14 @@ for.body3:                                        ; preds = %for.cond1
   %sub4 = add nsw i64 %sub, -1
   %tmp = mul nsw i64 %i.0, %n
   %arrayidx.sum = add i64 %tmp, %sub4
-  %arrayidx5 = getelementptr inbounds float, float* %A, i64 %arrayidx.sum
-  %tmp1 = load float, float* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds float, ptr %A, i64 %arrayidx.sum
+  %tmp1 = load float, ptr %arrayidx5, align 4
   %tmp2 = mul nsw i64 %i.0, %n
   %arrayidx6.sum = add i64 %tmp2, %j.0
-  %arrayidx7 = getelementptr inbounds float, float* %A, i64 %arrayidx6.sum
-  %tmp3 = load float, float* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds float, ptr %A, i64 %arrayidx6.sum
+  %tmp3 = load float, ptr %arrayidx7, align 4
   %add = fadd float %tmp3, %tmp1
-  store float %add, float* %arrayidx7, align 4
+  store float %add, ptr %arrayidx7, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/ScopInfo/multidim_parameter_addrec_product.ll b/polly/test/ScopInfo/multidim_parameter_addrec_product.ll
index a500fd4008054..7db3e9dc3b5f9 100644
--- a/polly/test/ScopInfo/multidim_parameter_addrec_product.ll
+++ b/polly/test/ScopInfo/multidim_parameter_addrec_product.ll
@@ -19,7 +19,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, i64* %p) {
+define void @foo(ptr %A, ptr %p) {
 bb:
   br label %bb2
 
@@ -39,13 +39,13 @@ bb4:                                              ; preds = %bb13, %bb3
 bb5:                                              ; preds = %bb4
   %tmp = add nuw nsw i64 %i.0, %j.0
   %tmp6 = sitofp i64 %tmp to float
-  %pval = load i64, i64* %p, align 8
+  %pval = load i64, ptr %p, align 8
   %tmp8 = mul nsw i64 %i.0, %pval
   %tmp9 = add nsw i64 %tmp8, %j.0
-  %tmp10 = getelementptr inbounds float, float* %A, i64 %tmp9
-  %tmp11 = load float, float* %tmp10, align 4
+  %tmp10 = getelementptr inbounds float, ptr %A, i64 %tmp9
+  %tmp11 = load float, ptr %tmp10, align 4
   %tmp12 = fadd float %tmp11, %tmp6
-  store float %tmp12, float* %tmp10, align 4
+  store float %tmp12, ptr %tmp10, align 4
   br label %bb13
 
 bb13:                                             ; preds = %bb5

diff  --git a/polly/test/ScopInfo/multidim_single_and_multidim_array.ll b/polly/test/ScopInfo/multidim_single_and_multidim_array.ll
index 591db81d78258..1e302dec4861a 100644
--- a/polly/test/ScopInfo/multidim_single_and_multidim_array.ll
+++ b/polly/test/ScopInfo/multidim_single_and_multidim_array.ll
@@ -60,15 +60,15 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; DELIN-NEXT:             [n] -> { Stmt_for_i_2[i0] -> MemRef_X[-1 + n, i0] };
 ; DELIN-NEXT: }
 
-define void @single-and-multi-dimensional-array(i64 %n, float* %X) {
+define void @single-and-multi-dimensional-array(i64 %n, ptr %X) {
 entry:
   br label %for.i.1
 
 for.i.1:
   %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.i.1 ]
   %offset.1 = mul i64 %n, %indvar.1
-  %arrayidx.1 = getelementptr float, float* %X, i64 %offset.1
-  store float 1.000000e+00, float* %arrayidx.1
+  %arrayidx.1 = getelementptr float, ptr %X, i64 %offset.1
+  store float 1.000000e+00, ptr %arrayidx.1
   %indvar.next.1 = add nsw i64 %indvar.1, 1
   %exitcond.1 = icmp ne i64 %indvar.next.1, %n
   br i1 %exitcond.1, label %for.i.1, label %next
@@ -81,8 +81,8 @@ for.i.2:
   %offset.2.a = add i64 %n, -1
   %offset.2.b = mul i64 %n, %offset.2.a
   %offset.2.c = add i64 %offset.2.b, %indvar.2
-  %arrayidx.2 = getelementptr float, float* %X, i64 %offset.2.c
-  store float 1.000000e+00, float* %arrayidx.2
+  %arrayidx.2 = getelementptr float, ptr %X, i64 %offset.2.c
+  store float 1.000000e+00, ptr %arrayidx.2
   %indvar.next.2 = add nsw i64 %indvar.2, 1
   %exitcond.2 = icmp ne i64 %indvar.next.2, %n
   br i1 %exitcond.2, label %for.i.2, label %exit

diff  --git a/polly/test/ScopInfo/multidim_srem.ll b/polly/test/ScopInfo/multidim_srem.ll
index 24aa52577826f..f89843f0a5bc5 100644
--- a/polly/test/ScopInfo/multidim_srem.ll
+++ b/polly/test/ScopInfo/multidim_srem.ll
@@ -23,7 +23,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 
-define void @foo(i64 %n, float* %A) #0 {
+define void @foo(i64 %n, ptr %A) #0 {
 entry:
   br label %entry.split
 
@@ -51,13 +51,13 @@ for.body.8:                                       ; preds = %for.body.8.lr.ph, %
   %rem = srem i64 %i.06, 2
   %0 = mul nuw i64 %n, %n
   %1 = mul nsw i64 %0, %rem
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %1
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %1
   %2 = mul nsw i64 %j.04, %n
-  %arrayidx9 = getelementptr inbounds float, float* %arrayidx, i64 %2
-  %arrayidx10 = getelementptr inbounds float, float* %arrayidx9, i64 %k.02
-  %3 = load float, float* %arrayidx10, align 4, !tbaa !1
+  %arrayidx9 = getelementptr inbounds float, ptr %arrayidx, i64 %2
+  %arrayidx10 = getelementptr inbounds float, ptr %arrayidx9, i64 %k.02
+  %3 = load float, ptr %arrayidx10, align 4, !tbaa !1
   %add = fadd float %3, 1.000000e+01
-  store float %add, float* %arrayidx10, align 4, !tbaa !1
+  store float %add, ptr %arrayidx10, align 4, !tbaa !1
   %inc = add nuw nsw i64 %k.02, 1
   %exitcond = icmp ne i64 %inc, %n
   br i1 %exitcond, label %for.body.8, label %for.cond.5.for.inc.11_crit_edge
@@ -83,10 +83,10 @@ for.end.16:                                       ; preds = %for.inc.14
 }
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start(i64, ptr nocapture) #1
 
 ; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end(i64, ptr nocapture) #1
 
 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"="+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind }

diff  --git a/polly/test/ScopInfo/multidim_with_bitcast.ll b/polly/test/ScopInfo/multidim_with_bitcast.ll
index fa59670b07a8a..b77ff689b9532 100644
--- a/polly/test/ScopInfo/multidim_with_bitcast.ll
+++ b/polly/test/ScopInfo/multidim_with_bitcast.ll
@@ -9,7 +9,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 ; CHECK: Stmt_bb7[i0, i1] -> MemRef_B[i0, i1]
 ; CHECK: Stmt_bb17[i0] -> MemRef_B[i0, 100]
 
-define void @kernel(float* %A, [101 x float]* %B, [101 x float]* %C, float* %D) {
+define void @kernel(ptr %A, ptr %B, ptr %C, ptr %D) {
 bb:
   br label %bb4
 
@@ -27,19 +27,17 @@ bb6:                                              ; preds = %bb16, %bb5
   br i1 %exitcond, label %bb17, label %bb7
 
 bb7:                                              ; preds = %bb6
-  %tmp = getelementptr inbounds float, float* %D, i64 %indvars.iv
-  %tmp8 = load float, float* %tmp, align 4
-  %tmp9 = getelementptr inbounds [101 x float], [101 x float]* %B, i64 %indvars.iv1, i64 %indvars.iv
-  %tmp10 = load float, float* %tmp9, align 4
+  %tmp = getelementptr inbounds float, ptr %D, i64 %indvars.iv
+  %tmp8 = load float, ptr %tmp, align 4
+  %tmp9 = getelementptr inbounds [101 x float], ptr %B, i64 %indvars.iv1, i64 %indvars.iv
+  %tmp10 = load float, ptr %tmp9, align 4
   %tmp11 = fmul float %tmp8, %tmp10
-  %tmp12 = getelementptr inbounds [101 x float], [101 x float]* %C, i64 %indvars.iv1, i64 %indvars.iv
-  store float %tmp11, float* %tmp12, align 4
-  %tmp13 = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %0 = bitcast float* %tmp13 to i32*
-  %tmp141 = load i32, i32* %0, align 4
-  %tmp15 = getelementptr inbounds [101 x float], [101 x float]* %B, i64 %indvars.iv1, i64 %indvars.iv
-  %1 = bitcast float* %tmp15 to i32*
-  store i32 %tmp141, i32* %1, align 4
+  %tmp12 = getelementptr inbounds [101 x float], ptr %C, i64 %indvars.iv1, i64 %indvars.iv
+  store float %tmp11, ptr %tmp12, align 4
+  %tmp13 = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp141 = load i32, ptr %tmp13, align 4
+  %tmp15 = getelementptr inbounds [101 x float], ptr %B, i64 %indvars.iv1, i64 %indvars.iv
+  store i32 %tmp141, ptr %tmp15, align 4
   br label %bb16
 
 bb16:                                             ; preds = %bb7
@@ -49,8 +47,8 @@ bb16:                                             ; preds = %bb7
 bb17:                                             ; preds = %bb6
   %tmp18 = trunc i64 %indvars.iv1 to i32
   %tmp19 = sitofp i32 %tmp18 to float
-  %tmp20 = getelementptr inbounds [101 x float], [101 x float]* %B, i64 %indvars.iv1, i64 100
-  store float %tmp19, float* %tmp20, align 4
+  %tmp20 = getelementptr inbounds [101 x float], ptr %B, i64 %indvars.iv1, i64 100
+  store float %tmp19, ptr %tmp20, align 4
   br label %bb21
 
 bb21:                                             ; preds = %bb17

diff  --git a/polly/test/ScopInfo/multiple-binary-or-conditions.ll b/polly/test/ScopInfo/multiple-binary-or-conditions.ll
index 34cbcc8e451a1..b905a11f577cd 100644
--- a/polly/test/ScopInfo/multiple-binary-or-conditions.ll
+++ b/polly/test/ScopInfo/multiple-binary-or-conditions.ll
@@ -16,7 +16,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @or(float* nocapture %A, i64 %n, i64 %m, i64 %p) #0 {
+define void @or(ptr nocapture %A, i64 %n, i64 %m, i64 %p) #0 {
 entry:
   br label %for.body
 
@@ -31,10 +31,10 @@ for.body:                                         ; preds = %for.inc, %entry
 
 if.then:                                          ; preds = %for.body
   %conv = sitofp i64 %i.03 to float
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.03
-  %0 = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.03
+  %0 = load float, ptr %arrayidx, align 4
   %add = fadd float %conv, %0
-  store float %add, float* %arrayidx, align 4
+  store float %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.then, %for.body

diff  --git a/polly/test/ScopInfo/multiple-types-access-offset-not-dividable-by-element-size.ll b/polly/test/ScopInfo/multiple-types-access-offset-not-dividable-by-element-size.ll
index c2257d97651e5..2d03ad941c05e 100644
--- a/polly/test/ScopInfo/multiple-types-access-offset-not-dividable-by-element-size.ll
+++ b/polly/test/ScopInfo/multiple-types-access-offset-not-dividable-by-element-size.ll
@@ -44,7 +44,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @multiple_types(i8* %Short, i8* %Float, i8* %Double) {
+define void @multiple_types(ptr %Short, ptr %Float, ptr %Double) {
 bb:
   br label %bb1
 
@@ -54,24 +54,21 @@ bb1:                                              ; preds = %bb17, %bb
   br i1 %exitcond, label %bb2, label %bb19
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i8, i8* %Short, i64 %i.0
-  %tmp3 = bitcast i8* %tmp to i16*
-  %tmp4 = load i16, i16* %tmp3, align 1
+  %tmp = getelementptr inbounds i8, ptr %Short, i64 %i.0
+  %tmp4 = load i16, ptr %tmp, align 1
   %tmp5 = trunc i16 %tmp4 to i8
-  %tmp6 = getelementptr inbounds i8, i8* %Short, i64 %i.0
-  store i8 %tmp5, i8* %tmp6, align 1
-  %tmp7 = getelementptr inbounds i8, i8* %Float, i64 %i.0
-  %tmp8 = bitcast i8* %tmp7 to float*
-  %tmp9 = load float, float* %tmp8, align 1
+  %tmp6 = getelementptr inbounds i8, ptr %Short, i64 %i.0
+  store i8 %tmp5, ptr %tmp6, align 1
+  %tmp7 = getelementptr inbounds i8, ptr %Float, i64 %i.0
+  %tmp9 = load float, ptr %tmp7, align 1
   %tmp10 = fptosi float %tmp9 to i8
-  %tmp11 = getelementptr inbounds i8, i8* %Float, i64 %i.0
-  store i8 %tmp10, i8* %tmp11, align 1
-  %tmp12 = getelementptr inbounds i8, i8* %Double, i64 %i.0
-  %tmp13 = bitcast i8* %tmp12 to double*
-  %tmp14 = load double, double* %tmp13, align 1
+  %tmp11 = getelementptr inbounds i8, ptr %Float, i64 %i.0
+  store i8 %tmp10, ptr %tmp11, align 1
+  %tmp12 = getelementptr inbounds i8, ptr %Double, i64 %i.0
+  %tmp14 = load double, ptr %tmp12, align 1
   %tmp15 = fptosi double %tmp14 to i8
-  %tmp16 = getelementptr inbounds i8, i8* %Double, i64 %i.0
-  store i8 %tmp15, i8* %tmp16, align 1
+  %tmp16 = getelementptr inbounds i8, ptr %Double, i64 %i.0
+  store i8 %tmp15, ptr %tmp16, align 1
   br label %bb17
 
 bb17:                                             ; preds = %bb2

diff  --git a/polly/test/ScopInfo/multiple-types-non-affine-2.ll b/polly/test/ScopInfo/multiple-types-non-affine-2.ll
index 6acaa85f47c98..5b0aa5de1e712 100644
--- a/polly/test/ScopInfo/multiple-types-non-affine-2.ll
+++ b/polly/test/ScopInfo/multiple-types-non-affine-2.ll
@@ -39,7 +39,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @multiple_types(i32* noalias %Short, i32* noalias %Char, i32* noalias %Double) {
+define void @multiple_types(ptr noalias %Short, ptr noalias %Char, ptr noalias %Double) {
 bb:
   br label %bb1
 
@@ -50,24 +50,21 @@ bb1:                                              ; preds = %bb20, %bb
 
 bb2:                                              ; preds = %bb1
   %quad = and i64 %i.0, 8
-  %tmp3 = getelementptr inbounds i32, i32* %Short, i64 %quad
-  %tmp4 = bitcast i32* %tmp3 to i16*
-  %tmp5 = load i16, i16* %tmp4, align 2
+  %tmp3 = getelementptr inbounds i32, ptr %Short, i64 %quad
+  %tmp5 = load i16, ptr %tmp3, align 2
   %tmp6 = zext i16 %tmp5 to i32
-  %tmp7 = getelementptr inbounds i32, i32* %Short, i64 %i.0
-  store i32 %tmp6, i32* %tmp7, align 1
-  %tmp9 = getelementptr inbounds i32, i32* %Char, i64 %quad
-  %tmp10 = bitcast i32* %tmp9 to i8*
-  %tmp11 = load i8, i8* %tmp10, align 4
+  %tmp7 = getelementptr inbounds i32, ptr %Short, i64 %i.0
+  store i32 %tmp6, ptr %tmp7, align 1
+  %tmp9 = getelementptr inbounds i32, ptr %Char, i64 %quad
+  %tmp11 = load i8, ptr %tmp9, align 4
   %tmp12 = zext i8 %tmp11 to i32
-  %tmp13 = getelementptr inbounds i32, i32* %Char, i64 %i.0
-  store i32 %tmp12, i32* %tmp13, align 1
-  %tmp15 = getelementptr inbounds i32, i32* %Double, i64 %quad
-  %tmp16 = bitcast i32* %tmp15 to double*
-  %tmp17 = load double, double* %tmp16, align 8
+  %tmp13 = getelementptr inbounds i32, ptr %Char, i64 %i.0
+  store i32 %tmp12, ptr %tmp13, align 1
+  %tmp15 = getelementptr inbounds i32, ptr %Double, i64 %quad
+  %tmp17 = load double, ptr %tmp15, align 8
   %tmp18 = fptosi double %tmp17 to i32
-  %tmp19 = getelementptr inbounds i32, i32* %Double, i64 %i.0
-  store i32 %tmp18, i32* %tmp19, align 1
+  %tmp19 = getelementptr inbounds i32, ptr %Double, i64 %i.0
+  store i32 %tmp18, ptr %tmp19, align 1
   br label %bb20
 
 bb20:                                             ; preds = %bb2

diff  --git a/polly/test/ScopInfo/multiple-types-non-affine.ll b/polly/test/ScopInfo/multiple-types-non-affine.ll
index 91b694abb68df..8e4be4c86d5a2 100644
--- a/polly/test/ScopInfo/multiple-types-non-affine.ll
+++ b/polly/test/ScopInfo/multiple-types-non-affine.ll
@@ -39,7 +39,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @multiple_types(i8* noalias %Short, i16* noalias %Float, i8* noalias %Double) {
+define void @multiple_types(ptr noalias %Short, ptr noalias %Float, ptr noalias %Double) {
 bb:
   br label %bb1
 
@@ -50,24 +50,21 @@ bb1:                                              ; preds = %bb20, %bb
 
 bb2:                                              ; preds = %bb1
   %quad = and i64 %i.0, 8
-  %tmp3 = getelementptr inbounds i8, i8* %Short, i64 %quad
-  %tmp4 = bitcast i8* %tmp3 to i16*
-  %tmp5 = load i16, i16* %tmp4, align 2
+  %tmp3 = getelementptr inbounds i8, ptr %Short, i64 %quad
+  %tmp5 = load i16, ptr %tmp3, align 2
   %tmp6 = trunc i16 %tmp5 to i8
-  %tmp7 = getelementptr inbounds i8, i8* %Short, i64 %i.0
-  store i8 %tmp6, i8* %tmp7, align 1
-  %tmp9 = getelementptr inbounds i16, i16* %Float, i64 %quad
-  %tmp10 = bitcast i16* %tmp9 to float*
-  %tmp11 = load float, float* %tmp10, align 4
+  %tmp7 = getelementptr inbounds i8, ptr %Short, i64 %i.0
+  store i8 %tmp6, ptr %tmp7, align 1
+  %tmp9 = getelementptr inbounds i16, ptr %Float, i64 %quad
+  %tmp11 = load float, ptr %tmp9, align 4
   %tmp12 = fptosi float %tmp11 to i16
-  %tmp13 = getelementptr inbounds i16, i16* %Float, i64 %i.0
-  store i16 %tmp12, i16* %tmp13, align 1
-  %tmp15 = getelementptr inbounds i8, i8* %Double, i64 %quad
-  %tmp16 = bitcast i8* %tmp15 to double*
-  %tmp17 = load double, double* %tmp16, align 8
+  %tmp13 = getelementptr inbounds i16, ptr %Float, i64 %i.0
+  store i16 %tmp12, ptr %tmp13, align 1
+  %tmp15 = getelementptr inbounds i8, ptr %Double, i64 %quad
+  %tmp17 = load double, ptr %tmp15, align 8
   %tmp18 = fptosi double %tmp17 to i8
-  %tmp19 = getelementptr inbounds i8, i8* %Double, i64 %i.0
-  store i8 %tmp18, i8* %tmp19, align 1
+  %tmp19 = getelementptr inbounds i8, ptr %Double, i64 %i.0
+  store i8 %tmp18, ptr %tmp19, align 1
   br label %bb20
 
 bb20:                                             ; preds = %bb2

diff  --git a/polly/test/ScopInfo/multiple-types-non-power-of-two-2.ll b/polly/test/ScopInfo/multiple-types-non-power-of-two-2.ll
index cfdbbe5b6f9e5..01f5923457b4c 100644
--- a/polly/test/ScopInfo/multiple-types-non-power-of-two-2.ll
+++ b/polly/test/ScopInfo/multiple-types-non-power-of-two-2.ll
@@ -32,7 +32,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @multiple_types(i8* %A) {
+define void @multiple_types(ptr %A) {
 bb:
   br label %bb1
 
@@ -43,18 +43,16 @@ bb1:                                              ; preds = %bb20, %bb
 
 bb2:                                              ; preds = %bb1
   %load.i128.offset = mul i64 %i.0, 16
-  %load.i128.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i128.offset
-  %load.i128.ptrcast = bitcast i8* %load.i128.ptr to i128*
-  %load.i128.val = load i128, i128* %load.i128.ptrcast
+  %load.i128.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i128.offset
+  %load.i128.val = load i128, ptr %load.i128.ptr
 
   %load.i192.offset = mul i64 %i.0, 24
-  %load.i192.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i192.offset
-  %load.i192.ptrcast = bitcast i8* %load.i192.ptr to i192*
-  %load.i192.val = load i192, i192* %load.i192.ptrcast
+  %load.i192.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i192.offset
+  %load.i192.val = load i192, ptr %load.i192.ptr
   %load.i192.val.trunc = trunc i192 %load.i192.val to i128
 
   %sum = add i128 %load.i128.val, %load.i192.val.trunc
-  store i128 %sum, i128* %load.i128.ptrcast
+  store i128 %sum, ptr %load.i128.ptr
   br label %bb20
 
 bb20:                                             ; preds = %bb2

diff  --git a/polly/test/ScopInfo/multiple-types-non-power-of-two.ll b/polly/test/ScopInfo/multiple-types-non-power-of-two.ll
index b48c12e2ed7bc..142a5ac395b39 100644
--- a/polly/test/ScopInfo/multiple-types-non-power-of-two.ll
+++ b/polly/test/ScopInfo/multiple-types-non-power-of-two.ll
@@ -61,7 +61,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @multiple_types(i8* %A) {
+define void @multiple_types(ptr %A) {
 bb:
   br label %bb1
 
@@ -72,69 +72,58 @@ bb1:                                              ; preds = %bb20, %bb
 
 bb2:                                              ; preds = %bb1
   %load.i1.offset = mul i64 %i.0, 1
-  %load.i1.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i1.offset
-  %load.i1.ptrcast = bitcast i8* %load.i1.ptr to i1*
-  %load.i1.val = load i1, i1* %load.i1.ptrcast
+  %load.i1.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i1.offset
+  %load.i1.val = load i1, ptr %load.i1.ptr
   %load.i1.val.trunc = zext i1 %load.i1.val to i8
 
   %load.i16.offset = mul i64 %i.0, 2
-  %load.i16.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i16.offset
-  %load.i16.ptrcast = bitcast i8* %load.i16.ptr to i16*
-  %load.i16.val = load i16, i16* %load.i16.ptrcast
+  %load.i16.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i16.offset
+  %load.i16.val = load i16, ptr %load.i16.ptr
   %load.i16.val.trunc = trunc i16 %load.i16.val to i8
 
   %load.i24.offset = mul i64 %i.0, 4
-  %load.i24.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i24.offset
-  %load.i24.ptrcast = bitcast i8* %load.i24.ptr to i24*
-  %load.i24.val = load i24, i24* %load.i24.ptrcast
+  %load.i24.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i24.offset
+  %load.i24.val = load i24, ptr %load.i24.ptr
   %load.i24.val.trunc = trunc i24 %load.i24.val to i8
 
   %load.i32.offset = mul i64 %i.0, 4
-  %load.i32.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i32.offset
-  %load.i32.ptrcast = bitcast i8* %load.i32.ptr to i32*
-  %load.i32.val = load i32, i32* %load.i32.ptrcast
+  %load.i32.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i32.offset
+  %load.i32.val = load i32, ptr %load.i32.ptr
   %load.i32.val.trunc = trunc i32 %load.i32.val to i8
 
   %load.i40.offset = mul i64 %i.0, 8
-  %load.i40.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i40.offset
-  %load.i40.ptrcast = bitcast i8* %load.i40.ptr to i40*
-  %load.i40.val = load i40, i40* %load.i40.ptrcast
+  %load.i40.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i40.offset
+  %load.i40.val = load i40, ptr %load.i40.ptr
   %load.i40.val.trunc = trunc i40 %load.i40.val to i8
 
   %load.i48.offset = mul i64 %i.0, 8
-  %load.i48.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i48.offset
-  %load.i48.ptrcast = bitcast i8* %load.i48.ptr to i48*
-  %load.i48.val = load i48, i48* %load.i48.ptrcast
+  %load.i48.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i48.offset
+  %load.i48.val = load i48, ptr %load.i48.ptr
   %load.i48.val.trunc = trunc i48 %load.i48.val to i8
 
   %load.i56.offset = mul i64 %i.0, 8
-  %load.i56.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i56.offset
-  %load.i56.ptrcast = bitcast i8* %load.i56.ptr to i56*
-  %load.i56.val = load i56, i56* %load.i56.ptrcast
+  %load.i56.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i56.offset
+  %load.i56.val = load i56, ptr %load.i56.ptr
   %load.i56.val.trunc = trunc i56 %load.i56.val to i8
 
   %load.i64.offset = mul i64 %i.0, 8
-  %load.i64.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i64.offset
-  %load.i64.ptrcast = bitcast i8* %load.i64.ptr to i64*
-  %load.i64.val = load i64, i64* %load.i64.ptrcast
+  %load.i64.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i64.offset
+  %load.i64.val = load i64, ptr %load.i64.ptr
   %load.i64.val.trunc = trunc i64 %load.i64.val to i8
 
   %load.i120.offset = mul i64 %i.0, 16
-  %load.i120.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i120.offset
-  %load.i120.ptrcast = bitcast i8* %load.i120.ptr to i120*
-  %load.i120.val = load i120, i120* %load.i120.ptrcast
+  %load.i120.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i120.offset
+  %load.i120.val = load i120, ptr %load.i120.ptr
   %load.i120.val.trunc = trunc i120 %load.i120.val to i8
 
   %load.i192.offset = mul i64 %i.0, 24
-  %load.i192.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i192.offset
-  %load.i192.ptrcast = bitcast i8* %load.i192.ptr to i192*
-  %load.i192.val = load i192, i192* %load.i192.ptrcast
+  %load.i192.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i192.offset
+  %load.i192.val = load i192, ptr %load.i192.ptr
   %load.i192.val.trunc = trunc i192 %load.i192.val to i8
 
   %load.i248.offset = mul i64 %i.0, 32
-  %load.i248.ptr = getelementptr inbounds i8, i8* %A, i64 %load.i248.offset
-  %load.i248.ptrcast = bitcast i8* %load.i248.ptr to i248*
-  %load.i248.val = load i248, i248* %load.i248.ptrcast
+  %load.i248.ptr = getelementptr inbounds i8, ptr %A, i64 %load.i248.offset
+  %load.i248.val = load i248, ptr %load.i248.ptr
   %load.i248.val.trunc = trunc i248 %load.i248.val to i8
 
   %sum = add i8 %load.i1.val.trunc, %load.i16.val.trunc
@@ -147,8 +136,8 @@ bb2:                                              ; preds = %bb1
   %sum6 = add i8 %sum5, %load.i120.val.trunc
   %sum7 = add i8 %sum6, %load.i192.val.trunc
   %sum8 = add i8 %sum7, %load.i248.val.trunc
-  %tmp7 = getelementptr inbounds i8, i8* %A, i64 %i.0
-  store i8 %sum8, i8* %tmp7
+  %tmp7 = getelementptr inbounds i8, ptr %A, i64 %i.0
+  store i8 %sum8, ptr %tmp7
   br label %bb20
 
 bb20:                                             ; preds = %bb2

diff  --git a/polly/test/ScopInfo/multiple-types-two-dimensional-2.ll b/polly/test/ScopInfo/multiple-types-two-dimensional-2.ll
index 11a5663fc2769..1e2e53e85c251 100644
--- a/polly/test/ScopInfo/multiple-types-two-dimensional-2.ll
+++ b/polly/test/ScopInfo/multiple-types-two-dimensional-2.ll
@@ -16,7 +16,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n, i64 %m, i8* %A) {
+define void @foo(i64 %n, i64 %m, ptr %A) {
 bb:
   br label %bb1
 
@@ -36,16 +36,15 @@ bb3:                                              ; preds = %bb17, %bb2
 
 bb6:                                              ; preds = %bb3
   %tmp7 = mul nsw i64 %i.0, %m
-  %tmp8 = getelementptr inbounds i8, i8* %A, i64 %tmp7
-  %tmp9 = getelementptr inbounds i8, i8* %tmp8, i64 %j.0
-  %tmp10 = load i8, i8* %tmp9, align 1
+  %tmp8 = getelementptr inbounds i8, ptr %A, i64 %tmp7
+  %tmp9 = getelementptr inbounds i8, ptr %tmp8, i64 %j.0
+  %tmp10 = load i8, ptr %tmp9, align 1
   %tmp11 = sitofp i8 %tmp10 to float
   %tmp12 = shl nsw i64 %j.0, 2
   %tmp13 = mul nsw i64 %i.0, %m
-  %tmp14 = getelementptr inbounds i8, i8* %A, i64 %tmp13
-  %tmp15 = getelementptr inbounds i8, i8* %tmp14, i64 %tmp12
-  %tmp16 = bitcast i8* %tmp15 to float*
-  store float %tmp11, float* %tmp16, align 4
+  %tmp14 = getelementptr inbounds i8, ptr %A, i64 %tmp13
+  %tmp15 = getelementptr inbounds i8, ptr %tmp14, i64 %tmp12
+  store float %tmp11, ptr %tmp15, align 4
   br label %bb17
 
 bb17:                                             ; preds = %bb6

diff  --git a/polly/test/ScopInfo/multiple-types-two-dimensional.ll b/polly/test/ScopInfo/multiple-types-two-dimensional.ll
index 3e17ba00749c7..21dc96e6f95d1 100644
--- a/polly/test/ScopInfo/multiple-types-two-dimensional.ll
+++ b/polly/test/ScopInfo/multiple-types-two-dimensional.ll
@@ -15,7 +15,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n, i64 %m, i8* %A) {
+define void @foo(i64 %n, i64 %m, ptr %A) {
 bb:
   br label %bb1
 
@@ -36,15 +36,14 @@ bb3:                                              ; preds = %bb17, %bb2
 bb6:                                              ; preds = %bb3
   %tmp7 = shl nsw i64 %j.0, 2
   %tmp8 = mul nsw i64 %i.0, %m
-  %tmp9 = getelementptr inbounds i8, i8* %A, i64 %tmp8
-  %tmp10 = getelementptr inbounds i8, i8* %tmp9, i64 %tmp7
-  %tmp11 = bitcast i8* %tmp10 to float*
-  %tmp12 = load float, float* %tmp11, align 4
+  %tmp9 = getelementptr inbounds i8, ptr %A, i64 %tmp8
+  %tmp10 = getelementptr inbounds i8, ptr %tmp9, i64 %tmp7
+  %tmp12 = load float, ptr %tmp10, align 4
   %tmp13 = fptosi float %tmp12 to i8
   %tmp14 = mul nsw i64 %i.0, %m
-  %tmp15 = getelementptr inbounds i8, i8* %A, i64 %tmp14
-  %tmp16 = getelementptr inbounds i8, i8* %tmp15, i64 %j.0
-  store i8 %tmp13, i8* %tmp16, align 1
+  %tmp15 = getelementptr inbounds i8, ptr %A, i64 %tmp14
+  %tmp16 = getelementptr inbounds i8, ptr %tmp15, i64 %j.0
+  store i8 %tmp13, ptr %tmp16, align 1
   br label %bb17
 
 bb17:                                             ; preds = %bb6

diff  --git a/polly/test/ScopInfo/multiple-types.ll b/polly/test/ScopInfo/multiple-types.ll
index 0df532326af4b..16db191c522f7 100644
--- a/polly/test/ScopInfo/multiple-types.ll
+++ b/polly/test/ScopInfo/multiple-types.ll
@@ -32,7 +32,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @multiple_types(i8* %Short, i8* %Float, i8* %Double) {
+define void @multiple_types(ptr %Short, ptr %Float, ptr %Double) {
 bb:
   br label %bb1
 
@@ -43,26 +43,23 @@ bb1:                                              ; preds = %bb20, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = shl nsw i64 %i.0, 1
-  %tmp3 = getelementptr inbounds i8, i8* %Short, i64 %tmp
-  %tmp4 = bitcast i8* %tmp3 to i16*
-  %tmp5 = load i16, i16* %tmp4, align 2
+  %tmp3 = getelementptr inbounds i8, ptr %Short, i64 %tmp
+  %tmp5 = load i16, ptr %tmp3, align 2
   %tmp6 = trunc i16 %tmp5 to i8
-  %tmp7 = getelementptr inbounds i8, i8* %Short, i64 %i.0
-  store i8 %tmp6, i8* %tmp7, align 1
+  %tmp7 = getelementptr inbounds i8, ptr %Short, i64 %i.0
+  store i8 %tmp6, ptr %tmp7, align 1
   %tmp8 = shl nsw i64 %i.0, 2
-  %tmp9 = getelementptr inbounds i8, i8* %Float, i64 %tmp8
-  %tmp10 = bitcast i8* %tmp9 to float*
-  %tmp11 = load float, float* %tmp10, align 4
+  %tmp9 = getelementptr inbounds i8, ptr %Float, i64 %tmp8
+  %tmp11 = load float, ptr %tmp9, align 4
   %tmp12 = fptosi float %tmp11 to i8
-  %tmp13 = getelementptr inbounds i8, i8* %Float, i64 %i.0
-  store i8 %tmp12, i8* %tmp13, align 1
+  %tmp13 = getelementptr inbounds i8, ptr %Float, i64 %i.0
+  store i8 %tmp12, ptr %tmp13, align 1
   %tmp14 = shl nsw i64 %i.0, 3
-  %tmp15 = getelementptr inbounds i8, i8* %Double, i64 %tmp14
-  %tmp16 = bitcast i8* %tmp15 to double*
-  %tmp17 = load double, double* %tmp16, align 8
+  %tmp15 = getelementptr inbounds i8, ptr %Double, i64 %tmp14
+  %tmp17 = load double, ptr %tmp15, align 8
   %tmp18 = fptosi double %tmp17 to i8
-  %tmp19 = getelementptr inbounds i8, i8* %Double, i64 %i.0
-  store i8 %tmp18, i8* %tmp19, align 1
+  %tmp19 = getelementptr inbounds i8, ptr %Double, i64 %i.0
+  store i8 %tmp18, ptr %tmp19, align 1
   br label %bb20
 
 bb20:                                             ; preds = %bb2

diff  --git a/polly/test/ScopInfo/multiple_exiting_blocks.ll b/polly/test/ScopInfo/multiple_exiting_blocks.ll
index 2551fea8ff771..f8e5d4106a161 100644
--- a/polly/test/ScopInfo/multiple_exiting_blocks.ll
+++ b/polly/test/ScopInfo/multiple_exiting_blocks.ll
@@ -21,7 +21,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N, i32 %P, i32 %Q) {
+define void @f(ptr %A, i32 %N, i32 %P, i32 %Q) {
 entry:
   %tmp = sext i32 %N to i64
   %tmp1 = sext i32 %Q to i64
@@ -41,10 +41,10 @@ if.then:                                          ; preds = %for.body
   br label %for.end
 
 if.end:                                           ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp3, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   %cmp2 = icmp sgt i64 %indvars.iv, %tmp1
   br i1 %cmp2, label %if.then.3, label %if.end.4
 

diff  --git a/polly/test/ScopInfo/multiple_exiting_blocks_two_loop.ll b/polly/test/ScopInfo/multiple_exiting_blocks_two_loop.ll
index f9ee557a50312..c695f3c913db9 100644
--- a/polly/test/ScopInfo/multiple_exiting_blocks_two_loop.ll
+++ b/polly/test/ScopInfo/multiple_exiting_blocks_two_loop.ll
@@ -27,7 +27,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(i64 %n, float* %A) {
+define void @foo(i64 %n, ptr %A) {
 entry:
   br label %for.cond
 
@@ -59,10 +59,10 @@ if.then.6:                                        ; preds = %if.end
 
 if.end.7:                                         ; preds = %if.end
   %conv = sitofp i64 %i.0 to float
-  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp = load float, ptr %arrayidx, align 4
   %add = fadd float %tmp, %conv
-  store float %add, float* %arrayidx, align 4
+  store float %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end.7

diff  --git a/polly/test/ScopInfo/multiple_latch_blocks.ll b/polly/test/ScopInfo/multiple_latch_blocks.ll
index eb9e8640807cf..d3949e7e2c3ce 100644
--- a/polly/test/ScopInfo/multiple_latch_blocks.ll
+++ b/polly/test/ScopInfo/multiple_latch_blocks.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N, i32 %P, i32 %Q) {
+define void @f(ptr %A, i32 %N, i32 %P, i32 %Q) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -33,10 +33,10 @@ if.then:                                          ; preds = %for.body
   br label %for.cond
 
 if.end:                                           ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp2, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end, %if.then

diff  --git a/polly/test/ScopInfo/nested-loops.ll b/polly/test/ScopInfo/nested-loops.ll
index 42032d985c398..ed814f8268292 100644
--- a/polly/test/ScopInfo/nested-loops.ll
+++ b/polly/test/ScopInfo/nested-loops.ll
@@ -2,7 +2,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"
 
-define void @f(i64* nocapture %a) nounwind {
+define void @f(ptr nocapture %a) nounwind {
 entry:
   br label %for.i
 
@@ -19,8 +19,8 @@ for.j:
   br i1 %exitcond.j, label %body, label %for.i
 
 body:
-  %scevgep = getelementptr i64, i64* %a, i64 %j
-  store i64 %j, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %a, i64 %j
+  store i64 %j, ptr %scevgep
   br label %for.j
 
 return:

diff  --git a/polly/test/ScopInfo/no-scalar-deps-in-non-affine-subregion.ll b/polly/test/ScopInfo/no-scalar-deps-in-non-affine-subregion.ll
index e3a138861a764..7c55e242641ce 100644
--- a/polly/test/ScopInfo/no-scalar-deps-in-non-affine-subregion.ll
+++ b/polly/test/ScopInfo/no-scalar-deps-in-non-affine-subregion.ll
@@ -23,7 +23,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb1
 
@@ -33,8 +33,8 @@ bb1:                                              ; preds = %bb12, %bb
   br i1 %exitcond, label %bb2, label %bb13
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32,  i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32,  ptr %tmp, align 4
   %tmp4 = icmp eq i32 %tmp3, 0
   br i1 %tmp4, label %bb11, label %bb5
 
@@ -50,8 +50,8 @@ bb8:                                              ; preds = %bb5
 
 bb9:                                              ; preds = %bb8, %bb7
   %x.0 = phi i32 [ 1, %bb7 ], [ 2, %bb8 ]
-  %tmp10 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %x.0, i32* %tmp10, align 4
+  %tmp10 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %x.0, ptr %tmp10, align 4
   br label %bb11
 
 bb11:                                             ; preds = %bb2, %bb9

diff  --git a/polly/test/ScopInfo/non-affine-region-phi.ll b/polly/test/ScopInfo/non-affine-region-phi.ll
index bc6c0706b61ea..f99782b9a0ff4 100644
--- a/polly/test/ScopInfo/non-affine-region-phi.ll
+++ b/polly/test/ScopInfo/non-affine-region-phi.ll
@@ -30,7 +30,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 bb:
   br label %bb1
 
@@ -40,8 +40,8 @@ bb1:                                              ; preds = %bb14, %bb
   br i1 %exitcond, label %bb2, label %bb15
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32,  i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32,  ptr %tmp, align 4
   %tmp4 = icmp eq i32 %tmp3, 0
   br i1 %tmp4, label %bb13, label %bb5
 
@@ -50,15 +50,15 @@ bb5:                                              ; preds = %bb2
   br i1 %tmp6, label %bb7, label %bb11
 
 bb7:                                              ; preds = %bb5
-  %tmp8 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp9 = load i32,  i32* %tmp8, align 4
+  %tmp8 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp9 = load i32,  ptr %tmp8, align 4
   %tmp10 = add nsw i32 %tmp9, 1
   br label %bb11
 
 bb11:                                             ; preds = %bb7, %bb5
   %x.0 = phi i32 [ %tmp10, %bb7 ], [ 0, %bb5 ]
-  %tmp12 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %x.0, i32* %tmp12, align 4
+  %tmp12 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %x.0, ptr %tmp12, align 4
   br label %bb13
 
 bb13:                                             ; preds = %bb2, %bb11

diff  --git a/polly/test/ScopInfo/non-affine-region-with-loop-2.ll b/polly/test/ScopInfo/non-affine-region-with-loop-2.ll
index 89b5ce256b4ba..b673fda5ec3c3 100644
--- a/polly/test/ScopInfo/non-affine-region-with-loop-2.ll
+++ b/polly/test/ScopInfo/non-affine-region-with-loop-2.ll
@@ -11,7 +11,7 @@
 ; CHECK:            Schedule :=
 ; CHECK:                [indvar] -> { Stmt_loop2__TO__loop[] -> [1, 0] : indvar >= 101 or indvar <= 99 };
 ;
-define void @foo(i64* %A, i64 %p) {
+define void @foo(ptr %A, i64 %p) {
 entry:
   br label %loop
 
@@ -38,7 +38,7 @@ loop2:
   %indvar.2 = phi i64 [0, %loop3], [%indvar.next.2, %loop2], [0, %cond]
   %indvar.next.2 = add i64 %indvar.2, 1
   %prod = mul i64 %indvar.2, %indvar.2
-  store i64 %indvar, i64* %A
+  store i64 %indvar, ptr %A
   %cmp.2 = icmp eq i64 %prod, 100
   br i1 %cmp.2, label %loop2, label %next2
 

diff  --git a/polly/test/ScopInfo/non-affine-region-with-loop.ll b/polly/test/ScopInfo/non-affine-region-with-loop.ll
index 88bcb11207fe2..32dde8b4a6825 100644
--- a/polly/test/ScopInfo/non-affine-region-with-loop.ll
+++ b/polly/test/ScopInfo/non-affine-region-with-loop.ll
@@ -4,7 +4,7 @@
 ; CHECK:      Domain :=
 ; CHECK-NEXT:   { Stmt_loop2__TO__loop[] };
 ;
-define void @foo(i64* %A, i64 %p) {
+define void @foo(ptr %A, i64 %p) {
 entry:
   br label %loop
 
@@ -25,7 +25,7 @@ loop2:
   %indvar.2 = phi i64 [0, %next], [%indvar.next.2, %loop2], [0, %cond]
   %indvar.next.2 = add i64 %indvar.2, 1
   %prod = mul i64 %indvar.2, %indvar.2
-  store i64 %indvar, i64* %A
+  store i64 %indvar, ptr %A
   %cmp.2 = icmp eq i64 %prod, 100
   br i1 %cmp.2, label %loop2, label %next2
 

diff  --git a/polly/test/ScopInfo/non-precise-inv-load-1.ll b/polly/test/ScopInfo/non-precise-inv-load-1.ll
index 415a8442e69bb..5394206dd5474 100644
--- a/polly/test/ScopInfo/non-precise-inv-load-1.ll
+++ b/polly/test/ScopInfo/non-precise-inv-load-1.ll
@@ -24,7 +24,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @GI = common global [256 x i32] zeroinitializer, align 16
 
-define void @f(i32* %A, i8 zeroext %c) {
+define void @f(ptr %A, i8 zeroext %c) {
 entry:
   br label %for.cond
 
@@ -36,12 +36,12 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %add = add i8 %c, 1
   %idxprom = sext i8 %add to i64
-  %arrayidx = getelementptr inbounds i32, i32* getelementptr inbounds ([256 x i32], [256 x i32]* @GI, i64 0, i64 128), i64 %idxprom
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx3, align 4
+  %arrayidx = getelementptr inbounds i32, ptr getelementptr inbounds ([256 x i32], ptr @GI, i64 0, i64 128), i64 %idxprom
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx3, align 4
   %add4 = add nsw i32 %tmp1, %tmp
-  store i32 %add4, i32* %arrayidx3, align 4
+  store i32 %add4, ptr %arrayidx3, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/non-precise-inv-load-2.ll b/polly/test/ScopInfo/non-precise-inv-load-2.ll
index 56ca9d7480465..5c0c56513a082 100644
--- a/polly/test/ScopInfo/non-precise-inv-load-2.ll
+++ b/polly/test/ScopInfo/non-precise-inv-load-2.ll
@@ -20,7 +20,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %I, i8 zeroext %c) {
+define void @f(ptr %A, ptr %I, i8 zeroext %c) {
 entry:
   br label %for.cond
 
@@ -32,12 +32,12 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %sub = add i8 %c, -1
   %conv = zext i8 %sub to i64
-  %arrayidx = getelementptr inbounds i32, i32* %I, i64 %conv
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %I, i64 %conv
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx2, align 4
   %add = add nsw i32 %tmp1, %tmp
-  store i32 %add, i32* %arrayidx2, align 4
+  store i32 %add, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/non-precise-inv-load-3.ll b/polly/test/ScopInfo/non-precise-inv-load-3.ll
index cd437bdefb0e8..09d09319656b9 100644
--- a/polly/test/ScopInfo/non-precise-inv-load-3.ll
+++ b/polly/test/ScopInfo/non-precise-inv-load-3.ll
@@ -14,7 +14,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i8 zeroext %c, i32* %I) {
+define void @f(ptr %A, i8 zeroext %c, ptr %I) {
 entry:
   br label %for.cond
 
@@ -29,11 +29,11 @@ for.body:                                         ; preds = %for.cond
   br i1 %cmp3, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %tmp = load i32, i32* %I, align 4
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx5, align 4
+  %tmp = load i32, ptr %I, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx5, align 4
   %add6 = add nsw i32 %tmp1, %tmp
-  store i32 %add6, i32* %arrayidx5, align 4
+  store i32 %add6, ptr %arrayidx5, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body

diff  --git a/polly/test/ScopInfo/non-precise-inv-load-4.ll b/polly/test/ScopInfo/non-precise-inv-load-4.ll
index 333dd4d6894ac..da5f656576d1e 100644
--- a/polly/test/ScopInfo/non-precise-inv-load-4.ll
+++ b/polly/test/ScopInfo/non-precise-inv-load-4.ll
@@ -20,7 +20,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @I = common global [1 x i32] zeroinitializer, align 4
 
-define void @f(i32* %A, i8 zeroext %c) {
+define void @f(ptr %A, i8 zeroext %c) {
 entry:
   br label %for.cond
 
@@ -35,11 +35,11 @@ for.body:                                         ; preds = %for.cond
   br i1 %cmp3, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %tmp = load i32, i32* getelementptr inbounds ([1 x i32], [1 x i32]* @I, i64 0, i64 0), align 4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %tmp = load i32, ptr @I, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %add5 = add nsw i32 %tmp1, %tmp
-  store i32 %add5, i32* %arrayidx, align 4
+  store i32 %add5, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body

diff  --git a/polly/test/ScopInfo/non-precise-inv-load-5.ll b/polly/test/ScopInfo/non-precise-inv-load-5.ll
index 765e3992763fe..bff5f59a33024 100644
--- a/polly/test/ScopInfo/non-precise-inv-load-5.ll
+++ b/polly/test/ScopInfo/non-precise-inv-load-5.ll
@@ -28,7 +28,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @I = common global [1024 x i32] zeroinitializer, align 16
 
-define void @f(i32* %A, i8 zeroext %c) {
+define void @f(ptr %A, i8 zeroext %c) {
 entry:
   br label %for.cond
 
@@ -40,19 +40,19 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %add = add i8 %c, 1
   %cmp3 = icmp eq i8 %add, 128
-  %arrayidx6 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
+  %arrayidx6 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
   br i1 %cmp3, label %if.then, label %if.else
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* @I, i64 0, i8 %c
-  %tmp = load i32, i32* %arrayidx, align 4
-  %tmp1 = load i32, i32* %arrayidx6, align 4
+  %arrayidx = getelementptr inbounds [1024 x i32], ptr @I, i64 0, i8 %c
+  %tmp = load i32, ptr %arrayidx, align 4
+  %tmp1 = load i32, ptr %arrayidx6, align 4
   %add7 = add nsw i32 %tmp1, %tmp
-  store i32 %add7, i32* %arrayidx6, align 4
+  store i32 %add7, ptr %arrayidx6, align 4
   br label %for.inc
 
 if.else:                                           ; preds = %if.then, %for.body
-  store i32 0, i32* %arrayidx6, align 4
+  store i32 0, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.else, if.then

diff  --git a/polly/test/ScopInfo/non-precise-inv-load-6.ll b/polly/test/ScopInfo/non-precise-inv-load-6.ll
index f3d307306464f..03540a8ead96a 100644
--- a/polly/test/ScopInfo/non-precise-inv-load-6.ll
+++ b/polly/test/ScopInfo/non-precise-inv-load-6.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %I, i32* %A, i64 %c) {
+define void @f(ptr %I, ptr %A, i64 %c) {
 entry:
   br label %for.cond
 
@@ -25,11 +25,11 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp = load i32, i32* %I, align 4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %tmp = load i32, ptr %I, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %add = add i32 %tmp1, %tmp
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/non-pure-function-call.ll b/polly/test/ScopInfo/non-pure-function-call.ll
index 35bd7b19daf28..4ffb8d28865d0 100644
--- a/polly/test/ScopInfo/non-pure-function-call.ll
+++ b/polly/test/ScopInfo/non-pure-function-call.ll
@@ -16,7 +16,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -35,10 +35,10 @@ if.then:                                          ; preds = %for.body
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp1, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end

diff  --git a/polly/test/ScopInfo/non-pure-function-calls-causes-dead-blocks.ll b/polly/test/ScopInfo/non-pure-function-calls-causes-dead-blocks.ll
index 7d69dc18db09f..27998b50b74fb 100644
--- a/polly/test/ScopInfo/non-pure-function-calls-causes-dead-blocks.ll
+++ b/polly/test/ScopInfo/non-pure-function-calls-causes-dead-blocks.ll
@@ -46,7 +46,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @kernel(i32* %A, i32* %B, i32 %timeit, i32 %N) {
+define void @kernel(ptr %A, ptr %B, i32 %timeit, i32 %N) {
 entry:
   br label %entry.split
 
@@ -60,8 +60,7 @@ if.then:                                          ; preds = %entry
 
 ; Dead block if we assume if.then not to be executed because of the call
 if.then.split:                                           ; preds = %if.then
-  %A0 = getelementptr inbounds i32, i32* %A, i64 0
-  store i32 0, i32* %A0, align 4
+  store i32 0, ptr %A, align 4
   br label %for.cond.pre
 
 for.cond.pre:
@@ -74,12 +73,12 @@ for.cond:                                         ; preds = %for.inc, %if.end
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %indvars.iv1
-  %tmp3 = load i32, i32* %arrayidx, align 4
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv1
-  %tmp4 = load i32, i32* %arrayidx2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %indvars.iv1
+  %tmp3 = load i32, ptr %arrayidx, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv1
+  %tmp4 = load i32, ptr %arrayidx2, align 4
   %add = add nsw i32 %tmp4, %tmp3
-  store i32 %add, i32* %arrayidx2, align 4
+  store i32 %add, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -109,12 +108,12 @@ for.cond.7:                                       ; preds = %for.inc.15, %if.end
   br i1 %cmp8, label %for.body.9, label %for.end.17
 
 for.body.9:                                       ; preds = %for.cond.7
-  %arrayidx11 = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  %tmp6 = load i32, i32* %arrayidx11, align 4
-  %arrayidx13 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp7 = load i32, i32* %arrayidx13, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  %tmp6 = load i32, ptr %arrayidx11, align 4
+  %arrayidx13 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp7 = load i32, ptr %arrayidx13, align 4
   %add14 = add nsw i32 %tmp7, %tmp6
-  store i32 %add14, i32* %arrayidx13, align 4
+  store i32 %add14, ptr %arrayidx13, align 4
   br label %for.inc.15
 
 for.inc.15:                                       ; preds = %for.body.9

diff  --git a/polly/test/ScopInfo/non-pure-function-calls.ll b/polly/test/ScopInfo/non-pure-function-calls.ll
index 25a32c276ee28..3ecf758537738 100644
--- a/polly/test/ScopInfo/non-pure-function-calls.ll
+++ b/polly/test/ScopInfo/non-pure-function-calls.ll
@@ -38,7 +38,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @kernel(i32* %A, i32* %B, i32 %timeit, i32 %N) {
+define void @kernel(ptr %A, ptr %B, i32 %timeit, i32 %N) {
 entry:
   %tobool = icmp eq i32 %timeit, 0
   br i1 %tobool, label %if.end, label %if.then
@@ -57,12 +57,12 @@ for.cond:                                         ; preds = %for.inc, %if.end
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %indvars.iv1
-  %tmp3 = load i32, i32* %arrayidx, align 4
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv1
-  %tmp4 = load i32, i32* %arrayidx2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %indvars.iv1
+  %tmp3 = load i32, ptr %arrayidx, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv1
+  %tmp4 = load i32, ptr %arrayidx2, align 4
   %add = add nsw i32 %tmp4, %tmp3
-  store i32 %add, i32* %arrayidx2, align 4
+  store i32 %add, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -88,12 +88,12 @@ for.cond.7:                                       ; preds = %for.inc.15, %if.end
   br i1 %cmp8, label %for.body.9, label %for.end.17
 
 for.body.9:                                       ; preds = %for.cond.7
-  %arrayidx11 = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  %tmp6 = load i32, i32* %arrayidx11, align 4
-  %arrayidx13 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp7 = load i32, i32* %arrayidx13, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  %tmp6 = load i32, ptr %arrayidx11, align 4
+  %arrayidx13 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp7 = load i32, ptr %arrayidx13, align 4
   %add14 = add nsw i32 %tmp7, %tmp6
-  store i32 %add14, i32* %arrayidx13, align 4
+  store i32 %add14, ptr %arrayidx13, align 4
   br label %for.inc.15
 
 for.inc.15:                                       ; preds = %for.body.9

diff  --git a/polly/test/ScopInfo/non_affine_access.ll b/polly/test/ScopInfo/non_affine_access.ll
index fd9393301324f..a83c9484ad52e 100644
--- a/polly/test/ScopInfo/non_affine_access.ll
+++ b/polly/test/ScopInfo/non_affine_access.ll
@@ -7,7 +7,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 ;     A[i * i] = i;
 ;
 
-define void @foo(i64 *%A) nounwind uwtable ssp {
+define void @foo(ptr %A) nounwind uwtable ssp {
 entry:
   br label %entry.split
 
@@ -17,8 +17,8 @@ entry.split:                                      ; preds = %entry
 for.body:                                         ; preds = %entry.split, %for.body
   %indvar = phi i64 [ 0, %entry.split ], [ %indvar.next, %for.body ]
   %mul = mul nsw i64 %indvar, %indvar
-  %arrayidx = getelementptr inbounds i64, i64* %A, i64 %mul
-  store i64 %indvar, i64* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %mul
+  store i64 %indvar, ptr %arrayidx, align 4
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp ne i64 %indvar.next, 1024
   br i1 %exitcond, label %for.body, label %for.end

diff  --git a/polly/test/ScopInfo/non_affine_region_1.ll b/polly/test/ScopInfo/non_affine_region_1.ll
index d3b6c484d2620..7c4312599cf01 100644
--- a/polly/test/ScopInfo/non_affine_region_1.ll
+++ b/polly/test/ScopInfo/non_affine_region_1.ll
@@ -55,7 +55,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %b) {
+define void @f(ptr %A, i32 %b) {
 bb:
   br label %bb1
 
@@ -85,15 +85,15 @@ bb8:                                              ; preds = %bb4
 bb10:                                             ; preds = %bb9, %bb3
   %x.1 = phi i32 [ 0, %bb3 ], [ 3, %bb7 ], [ %b, %bb8 ]
   %tmp11 = sext i32 %x.1 to i64
-  %tmp12 = getelementptr inbounds i32, i32* %A, i64 %tmp11
-  %tmp13 = load i32,  i32* %tmp12, align 4
+  %tmp12 = getelementptr inbounds i32, ptr %A, i64 %tmp11
+  %tmp13 = load i32,  ptr %tmp12, align 4
   %tmp14 = icmp eq i32 %tmp13, 0
   br i1 %tmp14, label %bb18, label %bb15
 
 bb15:                                             ; preds = %bb10
   %tmp16 = sext i32 %x.1 to i64
-  %tmp17 = getelementptr inbounds i32, i32* %A, i64 %tmp16
-  store i32 0, i32* %tmp17, align 4
+  %tmp17 = getelementptr inbounds i32, ptr %A, i64 %tmp16
+  store i32 0, ptr %tmp17, align 4
   br label %bb18
 
 bb18:                                             ; preds = %bb10, %bb15

diff  --git a/polly/test/ScopInfo/non_affine_region_2.ll b/polly/test/ScopInfo/non_affine_region_2.ll
index a138455262278..0bc467c92bcb9 100644
--- a/polly/test/ScopInfo/non_affine_region_2.ll
+++ b/polly/test/ScopInfo/non_affine_region_2.ll
@@ -44,7 +44,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %b) {
+define void @f(ptr %A, i32 %b) {
 bb:
   %tmp = sext i32 %b to i64
   %tmp1 = sext i32 %b to i64
@@ -56,8 +56,8 @@ bb2:                                              ; preds = %bb20, %bb
   br i1 %exitcond, label %bb3, label %bb21
 
 bb3:                                              ; preds = %bb2
-  %tmp4 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp5 = load i32,  i32* %tmp4, align 4
+  %tmp4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp5 = load i32,  ptr %tmp4, align 4
   %tmp6 = icmp eq i32 %tmp5, 0
   br i1 %tmp6, label %bb18, label %bb7
 
@@ -90,8 +90,8 @@ bb17:                                             ; preds = %bb16, %bb9
 
 bb18:                                             ; preds = %bb3, %bb17
   %x.2 = phi i32 [ %x.1, %bb17 ], [ 0, %bb3 ]
-  %tmp19 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %x.2, i32* %tmp19, align 4
+  %tmp19 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %x.2, ptr %tmp19, align 4
   br label %bb20
 
 bb20:                                             ; preds = %bb18

diff  --git a/polly/test/ScopInfo/non_affine_region_3.ll b/polly/test/ScopInfo/non_affine_region_3.ll
index e960028b8afa4..6d5f94df6110d 100644
--- a/polly/test/ScopInfo/non_affine_region_3.ll
+++ b/polly/test/ScopInfo/non_affine_region_3.ll
@@ -45,7 +45,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %b) {
+define void @f(ptr %A, i32 %b) {
 bb:
   %tmp = sext i32 %b to i64
   %tmp1 = sext i32 %b to i64
@@ -57,8 +57,8 @@ bb2:                                              ; preds = %bb20, %bb
   br i1 %exitcond, label %bb3, label %bb21
 
 bb3:                                              ; preds = %bb2
-  %tmp4 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp5 = load i32,  i32* %tmp4, align 4
+  %tmp4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp5 = load i32,  ptr %tmp4, align 4
   %tmp6 = icmp eq i32 %tmp5, 0
   br i1 %tmp6, label %bb18, label %bb7
 
@@ -83,8 +83,8 @@ bb15:                                             ; preds = %bb10
 
 bb18:                                             ; preds = %bb3, %bb13, %bb15, %bb9
   %x.2 = phi i32 [ 0, %bb9 ], [ %tmp14, %bb13 ], [ %b, %bb15 ], [ 0, %bb3 ]
-  %tmp19 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %x.2, i32* %tmp19, align 4
+  %tmp19 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %x.2, ptr %tmp19, align 4
   br label %bb20
 
 bb20:                                             ; preds = %bb18

diff  --git a/polly/test/ScopInfo/non_affine_region_4.ll b/polly/test/ScopInfo/non_affine_region_4.ll
index fa1e5d4945936..f37e0ecb89d10 100644
--- a/polly/test/ScopInfo/non_affine_region_4.ll
+++ b/polly/test/ScopInfo/non_affine_region_4.ll
@@ -53,7 +53,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %b) {
+define void @f(ptr %A, i32 %b) {
 bb:
   br label %bb1
 
@@ -63,8 +63,8 @@ bb1:                                              ; preds = %bb10, %bb
   br i1 %exitcond, label %bb2, label %bb11
 
 bb2:                                              ; preds = %bb1
-  %tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %x = load i32,  i32* %tmp, align 4
+  %tmp = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %x = load i32,  ptr %tmp, align 4
   %tmp4 = add nsw i32 %x, 1
   %tmp5 = icmp eq i32 %tmp4, 0
   br i1 %tmp5, label %bb7, label %bb6
@@ -76,8 +76,8 @@ bb7:                                              ; preds = %bb2, %bb6
   %y = phi i32 [ 1, %bb6 ], [ 0, %bb2 ]
   %tmp4copy = add nsw i32 %x, 1
   %tmp8 = add nsw i32 %tmp4copy, %y
-  %tmp9 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp8, i32* %tmp9, align 4
+  %tmp9 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp8, ptr %tmp9, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb7

diff  --git a/polly/test/ScopInfo/nonaffine-buildMemoryAccess.ll b/polly/test/ScopInfo/nonaffine-buildMemoryAccess.ll
index 323c7883ac425..445dd164898ba 100644
--- a/polly/test/ScopInfo/nonaffine-buildMemoryAccess.ll
+++ b/polly/test/ScopInfo/nonaffine-buildMemoryAccess.ll
@@ -3,7 +3,7 @@
 ; CHECK:      Domain :=
 ; CHECK-NEXT:   { Stmt_while_cond_i__TO__while_end_i[] };
 ;
-define i32 @func(i32 %param0, i32 %param1, i64* %param2) #3 {
+define i32 @func(i32 %param0, i32 %param1, ptr %param2) #3 {
 
 entry:
   %var0 = alloca i32
@@ -24,22 +24,22 @@ if.end.i1.i:                                    ; preds = %while.cond.i
 exit1.i:                          ; preds = %if.end.i1.i
   %var7 = srem i32 %var3, 64
   %var8 = sext i32 %var5 to i64
-  %var9 = getelementptr inbounds i64, i64* %param2, i64 %var8
-  %var10 = load i64, i64* %var9, align 8
+  %var9 = getelementptr inbounds i64, ptr %param2, i64 %var8
+  %var10 = load i64, ptr %var9, align 8
   %var11 = zext i32 %var7 to i64
   %var12 = shl i64 1, %var11
   %var13 = and i64 %var10, %var12
   %var14 = icmp eq i64 %var13, 0
-  store i32 %var2, i32* %var1
-  store i32 %var3, i32* %var0
+  store i32 %var2, ptr %var1
+  store i32 %var3, ptr %var0
   br i1 %var14, label %while.cond.i.backedge, label %while.end.i
 
 while.cond.i.backedge:                            ; preds = %exit1.i, %while.cond.i, %if.end.i1.i
   br label %while.cond.i
 
 while.end.i:
-  %var15 = load i32, i32* %var0
-  %var16 = load i32, i32* %var1
+  %var15 = load i32, ptr %var0
+  %var16 = load i32, ptr %var1
   %var17 = add i32 %var15, %var16
   ret i32 %var17
 }

diff  --git a/polly/test/ScopInfo/not-a-reduction.ll b/polly/test/ScopInfo/not-a-reduction.ll
index da8cacff8ecaa..87909290fd71b 100644
--- a/polly/test/ScopInfo/not-a-reduction.ll
+++ b/polly/test/ScopInfo/not-a-reduction.ll
@@ -26,17 +26,17 @@ bb:
 
 bb3:                                              ; preds = %bb7, %bb
   %indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb ]
-  %scevgep = getelementptr [4 x float], [4 x float]* @A, i64 0, i64 %indvar
-  %scevgep1 = getelementptr [4 x float], [4 x float]* @C, i64 0, i64 %indvar
-  %scevgep2 = getelementptr [4 x float], [4 x float]* @B, i64 0, i64 %indvar
+  %scevgep = getelementptr [4 x float], ptr @A, i64 0, i64 %indvar
+  %scevgep1 = getelementptr [4 x float], ptr @C, i64 0, i64 %indvar
+  %scevgep2 = getelementptr [4 x float], ptr @B, i64 0, i64 %indvar
   %exitcond = icmp ne i64 %indvar, 4
   br i1 %exitcond, label %bb4, label %bb8
 
 bb4:                                              ; preds = %bb3
-  %tmp = load float, float* %scevgep2, align 4
-  %tmp5 = load float, float* %scevgep1, align 4
+  %tmp = load float, ptr %scevgep2, align 4
+  %tmp5 = load float, ptr %scevgep1, align 4
   %tmp6 = fmul float %tmp, %tmp5
-  store float %tmp6, float* %scevgep, align 4
+  store float %tmp6, ptr %scevgep, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb4

diff  --git a/polly/test/ScopInfo/opaque-struct.ll b/polly/test/ScopInfo/opaque-struct.ll
index 3808bba4a6170..19fdd9bf91793 100644
--- a/polly/test/ScopInfo/opaque-struct.ll
+++ b/polly/test/ScopInfo/opaque-struct.ll
@@ -8,13 +8,12 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 %struct.stmt = type opaque
 
 ; Function Attrs: nounwind uwtable
-define void @columnMem(%struct.stmt* %pStmt) #0 {
+define void @columnMem(ptr %pStmt) #0 {
 entry:
   br label %if.else
 
 if.else:                                          ; preds = %entry
-  %db = bitcast %struct.stmt* %pStmt to %struct.s3**
-  %0 = load %struct.s3*, %struct.s3** %db, align 8
+  %0 = load ptr, ptr %pStmt, align 8
   br i1 false, label %if.end9, label %if.then7
 
 if.then7:                                         ; preds = %if.else

diff  --git a/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node.ll b/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node.ll
index edbe4a3cd10b1..e17164e893728 100644
--- a/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node.ll
+++ b/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node.ll
@@ -10,13 +10,13 @@ bb:
   br label %bb2
 
 bb2:                                              ; preds = %bb
-  %tmp = load i64*, i64** undef
+  %tmp = load ptr, ptr undef
   br label %bb3
 
 bb3:                                              ; preds = %bb9, %bb2
-  %tmp4 = phi i64* [ %tmp, %bb2 ], [ %tmp5, %bb9 ]
-  %tmp5 = getelementptr inbounds i64, i64* %tmp4, i64 1
-  %tmp6 = load i64, i64* %tmp5
+  %tmp4 = phi ptr [ %tmp, %bb2 ], [ %tmp5, %bb9 ]
+  %tmp5 = getelementptr inbounds i64, ptr %tmp4, i64 1
+  %tmp6 = load i64, ptr %tmp5
   %tmp7 = and i64 %tmp6, 4160749568
   br i1 false, label %bb8, label %bb9
 

diff  --git a/polly/test/ScopInfo/parameter-constant-division.ll b/polly/test/ScopInfo/parameter-constant-division.ll
index f105f526b6db4..cd6b9e3526aa2 100644
--- a/polly/test/ScopInfo/parameter-constant-division.ll
+++ b/polly/test/ScopInfo/parameter-constant-division.ll
@@ -29,21 +29,21 @@
 ; ModuleID = 'bugpoint-reduced-simplified.bc'
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.frame_store = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.picture*, %struct.picture*, %struct.picture* }
-%struct.picture = type { i32, i32, i32, i32, i32, i32, [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16**, i16*, i16*, i16**, i16**, i16***, i8*, i16***, i64***, i64***, i16****, i8**, i8**, %struct.picture*, %struct.picture*, %struct.picture*, i32, i32, i32, i32, i32, i32, i32 }
+%struct.frame_store = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr }
+%struct.picture = type { i32, i32, i32, i32, i32, i32, [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32 }
 
 ; Function Attrs: nounwind uwtable
-define void @dpb_split_field(%struct.frame_store* %fs) #0 {
+define void @dpb_split_field(ptr %fs) #0 {
 entry:
-  %frame = getelementptr inbounds %struct.frame_store, %struct.frame_store* %fs, i64 0, i32 10
+  %frame = getelementptr inbounds %struct.frame_store, ptr %fs, i64 0, i32 10
   br label %for.cond538.preheader.lr.ph
 
 for.cond538.preheader.lr.ph:                      ; preds = %entry
-  %bottom_field578 = getelementptr inbounds %struct.frame_store, %struct.frame_store* %fs, i64 0, i32 12
+  %bottom_field578 = getelementptr inbounds %struct.frame_store, ptr %fs, i64 0, i32 12
   br label %for.cond538.preheader
 
 for.cond538.preheader:                            ; preds = %for.inc912, %for.cond538.preheader.lr.ph
-  %tmp0 = phi %struct.picture* [ undef, %for.cond538.preheader.lr.ph ], [ %tmp11, %for.inc912 ]
+  %tmp0 = phi ptr [ undef, %for.cond538.preheader.lr.ph ], [ %tmp11, %for.inc912 ]
   br i1 undef, label %land.lhs.true563, label %for.inc912
 
 land.lhs.true563:                                 ; preds = %for.cond538.preheader
@@ -55,38 +55,37 @@ land.lhs.true563:                                 ; preds = %for.cond538.prehead
   %tmp10a = shl i32 %tmp9a, 1
   %add559 = add i32 %tmp10a, %rem558
   %idxprom564 = sext i32 %add559 to i64
-  %mb_field566 = getelementptr inbounds %struct.picture, %struct.picture* %tmp0, i64 0, i32 31
-  %tmp1 = load i8*, i8** %mb_field566, align 8
-  %arrayidx567 = getelementptr inbounds i8, i8* %tmp1, i64 %idxprom564
-  %tmp2 = load i8, i8* %arrayidx567, align 1
-  store i8 0, i8* %arrayidx567
+  %mb_field566 = getelementptr inbounds %struct.picture, ptr %tmp0, i64 0, i32 31
+  %tmp1 = load ptr, ptr %mb_field566, align 8
+  %arrayidx567 = getelementptr inbounds i8, ptr %tmp1, i64 %idxprom564
+  %tmp2 = load i8, ptr %arrayidx567, align 1
+  store i8 0, ptr %arrayidx567
   br i1 false, label %if.end908, label %if.then570
 
 if.then570:                                       ; preds = %land.lhs.true563
-  %tmp3 = load %struct.picture*, %struct.picture** %frame, align 8
-  %mv = getelementptr inbounds %struct.picture, %struct.picture* %tmp3, i64 0, i32 35
-  %tmp4 = load i16****, i16***** %mv, align 8
-  %tmp5 = load %struct.picture*, %struct.picture** %bottom_field578, align 8
-  %mv612 = getelementptr inbounds %struct.picture, %struct.picture* %tmp5, i64 0, i32 35
-  %tmp6 = load i16****, i16***** %mv612, align 8
-  %arrayidx647 = getelementptr inbounds i16***, i16**** %tmp4, i64 1
-  %ref_id726 = getelementptr inbounds %struct.picture, %struct.picture* %tmp3, i64 0, i32 34
-  %tmp7 = load i64***, i64**** %ref_id726, align 8
-  %arrayidx746 = getelementptr inbounds i64**, i64*** %tmp7, i64 5
-  %tmp8 = load %struct.picture*, %struct.picture** %frame, align 8
-  %mv783 = getelementptr inbounds %struct.picture, %struct.picture* %tmp8, i64 0, i32 35
-  %tmp9 = load i16****, i16***** %mv783, align 8
-  %arrayidx804 = getelementptr inbounds i16***, i16**** %tmp9, i64 1
-  %tmp10 = load i16***, i16**** %arrayidx804, align 8
-  %arrayidx805 = getelementptr inbounds i16**, i16*** %tmp10, i64 0
-  store i16*** %tmp10, i16**** %arrayidx804
+  %tmp3 = load ptr, ptr %frame, align 8
+  %mv = getelementptr inbounds %struct.picture, ptr %tmp3, i64 0, i32 35
+  %tmp4 = load ptr, ptr %mv, align 8
+  %tmp5 = load ptr, ptr %bottom_field578, align 8
+  %mv612 = getelementptr inbounds %struct.picture, ptr %tmp5, i64 0, i32 35
+  %tmp6 = load ptr, ptr %mv612, align 8
+  %arrayidx647 = getelementptr inbounds ptr, ptr %tmp4, i64 1
+  %ref_id726 = getelementptr inbounds %struct.picture, ptr %tmp3, i64 0, i32 34
+  %tmp7 = load ptr, ptr %ref_id726, align 8
+  %arrayidx746 = getelementptr inbounds ptr, ptr %tmp7, i64 5
+  %tmp8 = load ptr, ptr %frame, align 8
+  %mv783 = getelementptr inbounds %struct.picture, ptr %tmp8, i64 0, i32 35
+  %tmp9 = load ptr, ptr %mv783, align 8
+  %arrayidx804 = getelementptr inbounds ptr, ptr %tmp9, i64 1
+  %tmp10 = load ptr, ptr %arrayidx804, align 8
+  store ptr %tmp10, ptr %arrayidx804
   br label %if.end908
 
 if.end908:                                        ; preds = %if.then570, %land.lhs.true563
   br label %for.inc912
 
 for.inc912:                                       ; preds = %if.end908, %for.cond538.preheader
-  %tmp11 = phi %struct.picture* [ %tmp0, %for.cond538.preheader ], [ undef, %if.end908 ]
+  %tmp11 = phi ptr [ %tmp0, %for.cond538.preheader ], [ undef, %if.end908 ]
   br i1 undef, label %for.cond538.preheader, label %for.cond1392.preheader
 
 for.cond1392.preheader:                           ; preds = %for.inc912

diff  --git a/polly/test/ScopInfo/parameter_in_dead_statement.ll b/polly/test/ScopInfo/parameter_in_dead_statement.ll
index 5e8a807f1dca4..4b4a87f098d72 100644
--- a/polly/test/ScopInfo/parameter_in_dead_statement.ll
+++ b/polly/test/ScopInfo/parameter_in_dead_statement.ll
@@ -23,7 +23,7 @@ entry.split:                                      ; preds = %entry
 
 if.end:                                           ; preds = %entry.split
   tail call void @_ZN8NWindows16NSynchronization8CSynchro5EnterEv()
-  %0 = load i32, i32* null, align 8
+  %0 = load i32, ptr null, align 8
   %add = add nsw i32 %0, %releaseCount
   %cmp2 = icmp sgt i32 %add, 0
   br i1 %cmp2, label %if.then3, label %if.end5

diff  --git a/polly/test/ScopInfo/parameter_with_constant_factor_in_add.ll b/polly/test/ScopInfo/parameter_with_constant_factor_in_add.ll
index d7eaf59a3cf9a..72d580801573d 100644
--- a/polly/test/ScopInfo/parameter_with_constant_factor_in_add.ll
+++ b/polly/test/ScopInfo/parameter_with_constant_factor_in_add.ll
@@ -11,7 +11,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @BPredPartitionCost(i32* %A) #0 {
+define void @BPredPartitionCost(ptr %A) #0 {
 entry:
   %curr_blk = alloca [16 x [16 x i32]], align 16
   br label %for.cond261.preheader.lr.ph
@@ -33,10 +33,10 @@ for.cond273.preheader:                            ; preds = %for.cond261.prehead
 for.body276:                                      ; preds = %for.body276, %for.cond273.preheader
   %indvars.iv = phi i64 [ 0, %for.cond273.preheader ], [ %indvars.iv.next, %for.body276 ]
   %3 = add nsw i64 0, %indvars.iv189
-  %arrayidx282 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %curr_blk, i64 0, i64 %3, i64 0
-  %4 = load i32, i32* %arrayidx282, align 4
-  %arridx = getelementptr i32, i32* %A, i64 %3
-  store i32 0, i32* %arridx, align 4
+  %arrayidx282 = getelementptr inbounds [16 x [16 x i32]], ptr %curr_blk, i64 0, i64 %3, i64 0
+  %4 = load i32, ptr %arrayidx282, align 4
+  %arridx = getelementptr i32, ptr %A, i64 %3
+  store i32 0, ptr %arridx, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   br i1 false, label %for.body276, label %for.end291
 

diff  --git a/polly/test/ScopInfo/partially_invariant_load_1.ll b/polly/test/ScopInfo/partially_invariant_load_1.ll
index 226cfb9ab8d6f..274a7873c782a 100644
--- a/polly/test/ScopInfo/partially_invariant_load_1.ll
+++ b/polly/test/ScopInfo/partially_invariant_load_1.ll
@@ -23,7 +23,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %I, i32 %N) {
+define void @f(ptr %A, ptr %I, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -34,19 +34,19 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp1 = load i32, i32* %I, align 4
+  %tmp1 = load i32, ptr %I, align 4
   %cmp1 = icmp eq i32 %tmp1, 42
   br i1 %cmp1, label %if.then, label %if.else
 
 if.then:                                          ; preds = %for.body
-  store i32 0, i32* %I, align 4
+  store i32 0, ptr %I, align 4
   br label %if.end
 
 if.else:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp2, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.else, %if.then

diff  --git a/polly/test/ScopInfo/partially_invariant_load_2.ll b/polly/test/ScopInfo/partially_invariant_load_2.ll
index 03ddfa51ab802..ee1092883f722 100644
--- a/polly/test/ScopInfo/partially_invariant_load_2.ll
+++ b/polly/test/ScopInfo/partially_invariant_load_2.ll
@@ -25,7 +25,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %I, i32 %N, i32 %p, i32 %q) {
+define void @f(ptr %A, ptr %I, i32 %N, i32 %p, i32 %q) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -40,26 +40,26 @@ for.body:                                         ; preds = %for.cond
   br i1 %cmp1, label %if.then, label %if.end4
 
 if.then:                                          ; preds = %for.body
-  store i32 0, i32* %I, align 4
-  %tmp1 = load i32, i32* %I, align 4
+  store i32 0, ptr %I, align 4
+  %tmp1 = load i32, ptr %I, align 4
   %cmp2 = icmp eq i32 %tmp1, %q
   br i1 %cmp2, label %if.then3, label %if.end
 
 if.then3:                                         ; preds = %if.then
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %mul = shl nsw i32 %tmp2, 1
-  store i32 %mul, i32* %arrayidx, align 4
+  store i32 %mul, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then3, %if.then
   br label %if.end4
 
 if.end4:                                          ; preds = %if.end, %for.body
-  %arrayidx6 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %arrayidx6, align 4
   %inc = add nsw i32 %tmp3, 1
-  store i32 %inc, i32* %arrayidx6, align 4
+  store i32 %inc, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end4

diff  --git a/polly/test/ScopInfo/phi-in-non-affine-region.ll b/polly/test/ScopInfo/phi-in-non-affine-region.ll
index 7926c2c76ed8e..6ef24e3f1456f 100644
--- a/polly/test/ScopInfo/phi-in-non-affine-region.ll
+++ b/polly/test/ScopInfo/phi-in-non-affine-region.ll
@@ -34,7 +34,7 @@ bb:
   br label %bb1
 
 bb1:                                              ; preds = %bb
-  %tmp = load double, double* getelementptr inbounds (%struct.hoge, %struct.hoge* @global, i64 0, i32 0), align 8
+  %tmp = load double, ptr @global, align 8
   br i1 false, label %bb3, label %bb2
 
 bb2:                                              ; preds = %bb1

diff  --git a/polly/test/ScopInfo/phi_after_error_block.ll b/polly/test/ScopInfo/phi_after_error_block.ll
index af5c919c2d30e..039fb86bec5ba 100644
--- a/polly/test/ScopInfo/phi_after_error_block.ll
+++ b/polly/test/ScopInfo/phi_after_error_block.ll
@@ -2,7 +2,7 @@
 
 declare void @bar()
 
-define void @foo(float* %A, i64 %p) {
+define void @foo(ptr %A, i64 %p) {
 start:
    br label %next
 
@@ -19,13 +19,13 @@ ok:
 
 merge:
    %phi = phi i64 [0, %error], [1, %ok]
-   store float 42.0, float* %A
+   store float 42.0, ptr %A
    %cmp = icmp eq i64 %phi, %p
    br i1 %cmp, label %loop, label %exit
 
 loop:
    %indvar = phi i64 [0, %merge], [%indvar.next, %loop]
-   store float 42.0, float* %A
+   store float 42.0, ptr %A
    %indvar.next = add i64 %indvar, 1
    %cmp2 = icmp sle i64 %indvar, 1024
    br i1 %cmp2, label %loop, label %exit

diff  --git a/polly/test/ScopInfo/phi_condition_modeling_1.ll b/polly/test/ScopInfo/phi_condition_modeling_1.ll
index c89601a2ed341..a879c2005ad89 100644
--- a/polly/test/ScopInfo/phi_condition_modeling_1.ll
+++ b/polly/test/ScopInfo/phi_condition_modeling_1.ll
@@ -34,7 +34,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %c, i32 %N) {
+define void @f(ptr %A, i32 %c, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   %tmp1 = sext i32 %c to i64
@@ -57,8 +57,8 @@ bb7:                                              ; preds = %bb4
 
 bb8:                                              ; preds = %bb7, %bb6
   %tmp.0 = phi i32 [ 3, %bb6 ], [ 5, %bb7 ]
-  %tmp9 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp.0, i32* %tmp9, align 4
+  %tmp9 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp.0, ptr %tmp9, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb8

diff  --git a/polly/test/ScopInfo/phi_condition_modeling_2.ll b/polly/test/ScopInfo/phi_condition_modeling_2.ll
index 3dbf04816bd1a..cedc140f84381 100644
--- a/polly/test/ScopInfo/phi_condition_modeling_2.ll
+++ b/polly/test/ScopInfo/phi_condition_modeling_2.ll
@@ -48,7 +48,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %c, i32 %N) {
+define void @f(ptr %A, i32 %c, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   %tmp1 = sext i32 %c to i64
@@ -74,8 +74,8 @@ bb8:                                              ; preds = %bb7, %bb6
   br label %bb8b
 
 bb8b:
-  %tmp9 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %tmp.0, i32* %tmp9, align 4
+  %tmp9 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %tmp.0, ptr %tmp9, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb8

diff  --git a/polly/test/ScopInfo/phi_conditional_simple_1.ll b/polly/test/ScopInfo/phi_conditional_simple_1.ll
index 731f97ba40574..90213a953767b 100644
--- a/polly/test/ScopInfo/phi_conditional_simple_1.ll
+++ b/polly/test/ScopInfo/phi_conditional_simple_1.ll
@@ -32,7 +32,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32 %c) {
+define void @jd(ptr %A, i32 %c) {
 entry:
   br label %for.cond
 
@@ -53,8 +53,8 @@ if.else:                                          ; preds = %for.body
 
 if.end:                                           ; preds = %if.else, %if.then
   %phi = phi i32 [ 1, %if.then], [ 2, %if.else ]
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %phi, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %phi, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end

diff  --git a/polly/test/ScopInfo/phi_loop_carried_float.ll b/polly/test/ScopInfo/phi_loop_carried_float.ll
index 84b2d070d1edd..d8d2608329bc5 100644
--- a/polly/test/ScopInfo/phi_loop_carried_float.ll
+++ b/polly/test/ScopInfo/phi_loop_carried_float.ll
@@ -31,7 +31,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(float* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 bb:
   %tmp = sext i32 %N to i64
   br label %bb1
@@ -46,8 +46,8 @@ bb3:                                              ; preds = %bb1
   br label %bb4
 
 bb4:                                              ; preds = %bb3
-  %tmp5 = getelementptr inbounds float, float* %A, i64 %indvars.iv
-  %tmp6 = load float, float* %tmp5, align 4
+  %tmp5 = getelementptr inbounds float, ptr %A, i64 %indvars.iv
+  %tmp6 = load float, ptr %tmp5, align 4
   %tmp7 = fadd float %tmp.0, %tmp6
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   br label %bb1

diff  --git a/polly/test/ScopInfo/phi_not_grouped_at_top.ll b/polly/test/ScopInfo/phi_not_grouped_at_top.ll
index b3491c62dfbf0..be082165b6356 100644
--- a/polly/test/ScopInfo/phi_not_grouped_at_top.ll
+++ b/polly/test/ScopInfo/phi_not_grouped_at_top.ll
@@ -3,18 +3,18 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 
 declare i32 @funa() align 2
 
-declare i32 @generic_personality_v0(i32, i64, i8*, i8*)
+declare i32 @generic_personality_v0(i32, i64, ptr, ptr)
 
-define void @funb() personality i32 (i32, i64, i8*, i8*)* @generic_personality_v0 {
+define void @funb() personality ptr @generic_personality_v0 {
 entry:
   br label %bb117
 
 bb117:                                            ; preds = %bb56
   %0 = invoke i32 @funa()
-          to label %bb121 unwind label %invcont118 ; <%struct.btHullTriangle*> [#uses=1]
+          to label %bb121 unwind label %invcont118 ; <ptr> [#uses=1]
 
 invcont118:                                       ; preds = %bb117
-  %d = landingpad { i8*, i32 } cleanup catch i32* null
+  %d = landingpad { ptr, i32 } cleanup catch ptr null
   br label %bb121
 
 bb121:                                            ; preds = %bb120, %invcont118

diff  --git a/polly/test/ScopInfo/phi_scalar_simple_1.ll b/polly/test/ScopInfo/phi_scalar_simple_1.ll
index fb8d573ff4f15..d042613c023fd 100644
--- a/polly/test/ScopInfo/phi_scalar_simple_1.ll
+++ b/polly/test/ScopInfo/phi_scalar_simple_1.ll
@@ -77,7 +77,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @jd(i32* noalias %A, i32 %x, i32 %N) {
+define i32 @jd(ptr noalias %A, i32 %x, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -101,8 +101,8 @@ for.body3:                                        ; preds = %for.cond1
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %x.addr.1, %tmp1
   %inc = add nsw i32 %j.0, 1
   br label %for.cond1

diff  --git a/polly/test/ScopInfo/phi_scalar_simple_2.ll b/polly/test/ScopInfo/phi_scalar_simple_2.ll
index f9bf1412eee20..fb4292e05ca6a 100644
--- a/polly/test/ScopInfo/phi_scalar_simple_2.ll
+++ b/polly/test/ScopInfo/phi_scalar_simple_2.ll
@@ -89,7 +89,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @jd(i32* noalias %A, i32 %x, i32 %N, i32 %c) {
+define i32 @jd(ptr noalias %A, i32 %x, i32 %N, i32 %c) {
 entry:
   %tmp = sext i32 %N to i64
   %tmp1 = sext i32 %c to i64
@@ -98,8 +98,8 @@ entry:
 for.cond:                                         ; preds = %for.inc5, %entry
   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc5 ], [ 0, %entry ]
   %x.addr.0 = phi i32 [ %x, %entry ], [ %x.addr.1, %for.inc5 ]
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  store i32 %x.addr.0, i32* %arrayidx2
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  store i32 %x.addr.0, ptr %arrayidx2
   %cmp = icmp slt i64 %indvars.iv, %tmp
   br i1 %cmp, label %for.body, label %for.end7
 
@@ -117,8 +117,8 @@ for.body3:                                        ; preds = %for.cond1
   br i1 %cmp4, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body3
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %x.addr.1, %tmp2
   br label %if.end
 

diff  --git a/polly/test/ScopInfo/phi_with_invoke_edge.ll b/polly/test/ScopInfo/phi_with_invoke_edge.ll
index 4a9cf595e3f8d..dbcf04c0561a7 100644
--- a/polly/test/ScopInfo/phi_with_invoke_edge.ll
+++ b/polly/test/ScopInfo/phi_with_invoke_edge.ll
@@ -1,26 +1,26 @@
 ; RUN: opt %loadPolly -polly-detect -disable-output < %s
 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"
 
-declare i32 @generic_personality_v0(i32, i64, i8*, i8*)
+declare i32 @generic_personality_v0(i32, i64, ptr, ptr)
 
-define i16 @v() personality i32 (i32, i64, i8*, i8*)* @generic_personality_v0 {
+define i16 @v() personality ptr @generic_personality_v0 {
 entry:
   br i1 undef, label %bb16, label %invcont12
 
 invcont12:                                        ; preds = %invcont11
-  %a = invoke i16 @v() to label %return unwind label %lpad22   ; <i16*> [#uses=1]
+  %a = invoke i16 @v() to label %return unwind label %lpad22   ; <ptr> [#uses=1]
 
 bb16:                                             ; preds = %bb7
   br i1 undef, label %bb9, label %return
 
 return:                                           ; preds = %bb16, %invcont12
-  %b = phi i16 [ %a, %invcont12 ], [ 0, %bb16 ] ; <i16*> [#uses=1]
+  %b = phi i16 [ %a, %invcont12 ], [ 0, %bb16 ] ; <ptr> [#uses=1]
   ret i16 %b
 
 bb9:                                             ; preds = %bb3
   ret i16 0
 
 lpad22:                                           ; preds = %invcont12
-  %d = landingpad { i8*, i32 } cleanup catch i32* null
+  %d = landingpad { ptr, i32 } cleanup catch ptr null
   unreachable
 }

diff  --git a/polly/test/ScopInfo/pointer-comparison-no-nsw.ll b/polly/test/ScopInfo/pointer-comparison-no-nsw.ll
index f1cb82a7b0578..094c5ccab54dc 100644
--- a/polly/test/ScopInfo/pointer-comparison-no-nsw.ll
+++ b/polly/test/ScopInfo/pointer-comparison-no-nsw.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %B) {
+define void @f(ptr %A, ptr %B) {
 entry:
   br label %entry.split
 
@@ -23,15 +23,15 @@ entry.split:
   br i1 true, label %while.cond, label %while.end
 
 while.cond:                                       ; preds = %while.body, %entry
-  %A.addr.0 = phi i32* [ %A, %entry.split ], [ %incdec.ptr, %while.body ]
-  %cmp = icmp eq i32* %A.addr.0, %B
+  %A.addr.0 = phi ptr [ %A, %entry.split ], [ %incdec.ptr, %while.body ]
+  %cmp = icmp eq ptr %A.addr.0, %B
   br i1 %cmp, label %while.end, label %while.body
 
 while.body:                                       ; preds = %while.cond
-  %tmp = load i32, i32* %A.addr.0, align 4
+  %tmp = load i32, ptr %A.addr.0, align 4
   %add = add i32 %tmp, 1
-  store i32 %add, i32* %A.addr.0, align 4
-  %incdec.ptr = getelementptr i32, i32* %A.addr.0, i64 1
+  store i32 %add, ptr %A.addr.0, align 4
+  %incdec.ptr = getelementptr i32, ptr %A.addr.0, i64 1
   br label %while.cond
 
 while.end:                                        ; preds = %while.cond

diff  --git a/polly/test/ScopInfo/pointer-comparison.ll b/polly/test/ScopInfo/pointer-comparison.ll
index 38c043b6ca4d1..15ce0491209a7 100644
--- a/polly/test/ScopInfo/pointer-comparison.ll
+++ b/polly/test/ScopInfo/pointer-comparison.ll
@@ -17,20 +17,20 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %B) {
+define void @f(ptr %A, ptr %B) {
 entry:
   br label %while.cond
 
 while.cond:                                       ; preds = %while.body, %entry
-  %A.addr.0 = phi i32* [ %A, %entry ], [ %incdec.ptr, %while.body ]
-  %cmp = icmp eq i32* %A.addr.0, %B
+  %A.addr.0 = phi ptr [ %A, %entry ], [ %incdec.ptr, %while.body ]
+  %cmp = icmp eq ptr %A.addr.0, %B
   br i1 %cmp, label %while.end, label %while.body
 
 while.body:                                       ; preds = %while.cond
-  %tmp = load i32, i32* %A.addr.0, align 4
+  %tmp = load i32, ptr %A.addr.0, align 4
   %add = add nsw i32 %tmp, 1
-  store i32 %add, i32* %A.addr.0, align 4
-  %incdec.ptr = getelementptr inbounds i32, i32* %A.addr.0, i64 1
+  store i32 %add, ptr %A.addr.0, align 4
+  %incdec.ptr = getelementptr inbounds i32, ptr %A.addr.0, i64 1
   br label %while.cond
 
 while.end:                                        ; preds = %while.cond

diff  --git a/polly/test/ScopInfo/pointer-type-expressions.ll b/polly/test/ScopInfo/pointer-type-expressions.ll
index 01c64982d9eb5..ebbb644340f6f 100644
--- a/polly/test/ScopInfo/pointer-type-expressions.ll
+++ b/polly/test/ScopInfo/pointer-type-expressions.ll
@@ -9,18 +9,18 @@
 
 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"
 
-define void @f(i64* nocapture %a, i64 %N, float * %P) nounwind {
+define void @f(ptr nocapture %a, i64 %N, ptr %P) nounwind {
 entry:
   br label %bb
 
 bb:
   %i = phi i64 [ 0, %entry ], [ %i.inc, %bb.backedge ]
-  %brcond = icmp ne float* %P, null
+  %brcond = icmp ne ptr %P, null
   br i1 %brcond, label %store, label %bb.backedge
 
 store:
-  %scevgep = getelementptr inbounds i64, i64* %a, i64 %i
-  store i64 %i, i64* %scevgep
+  %scevgep = getelementptr inbounds i64, ptr %a, i64 %i
+  store i64 %i, ptr %scevgep
   br label %bb.backedge
 
 bb.backedge:

diff  --git a/polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll b/polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll
index db4c059313ee4..3ac86a3443afe 100644
--- a/polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll
+++ b/polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll
@@ -6,13 +6,13 @@
 
 ; CHECK:      Arrays {
 ; CHECK-NEXT:     float MemRef_A[*]; // Element size 4
-; CHECK-NEXT:     float* MemRef_x__phi; // Element size 8
-; CHECK-NEXT:     float* MemRef_C[*]; // Element size 8
+; CHECK-NEXT:     ptr MemRef_x__phi; // Element size 8
+; CHECK-NEXT:     ptr MemRef_C[*]; // Element size 8
 ; CHECK-NEXT: }
 ; CHECK:      Arrays (Bounds as pw_affs) {
 ; CHECK-NEXT:     float MemRef_A[*]; // Element size 4
-; CHECK-NEXT:     float* MemRef_x__phi; // Element size 8
-; CHECK-NEXT:     float* MemRef_C[*]; // Element size 8
+; CHECK-NEXT:     ptr MemRef_x__phi; // Element size 8
+; CHECK-NEXT:     ptr MemRef_C[*]; // Element size 8
 ; CHECK-NEXT: }
 ; CHECK:      Alias Groups (0):
 ; CHECK-NEXT:     n/a
@@ -48,7 +48,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* noalias %A, float* noalias %B, float ** noalias %C, i32 %p) {
+define void @foo(ptr noalias %A, ptr noalias %B, ptr noalias %C, i32 %p) {
 bb:
   br label %bb1
 
@@ -62,16 +62,16 @@ bb2:
   br i1 %cmp, label %then, label %else
 
 then:
-  store float 3.0, float* %A
+  store float 3.0, ptr %A
   br label %bb8
 
 else:
-  store float 4.0, float* %A
+  store float 4.0, ptr %A
   br label %bb8
 
 bb8:
-  %x = phi float* [%A, %then], [%B, %else]
-  store float* %x, float** %C
+  %x = phi ptr [%A, %then], [%B, %else]
+  store ptr %x, ptr %C
   %tmp9 = add nuw nsw i64 %i.0, 1
   br label %bb1
 

diff  --git a/polly/test/ScopInfo/polly-timeout-parameter-bounds.ll b/polly/test/ScopInfo/polly-timeout-parameter-bounds.ll
index b1949a00450ff..8152010c2c992 100644
--- a/polly/test/ScopInfo/polly-timeout-parameter-bounds.ll
+++ b/polly/test/ScopInfo/polly-timeout-parameter-bounds.ll
@@ -216,9 +216,9 @@
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 target triple = "thumbv7--linux-android"
 
-define i32 @f(i32* nocapture readonly %arg5) {
+define i32 @f(ptr nocapture readonly %arg5) {
 bb:
-  %tmp = load i32, i32* %arg5, align 4
+  %tmp = load i32, ptr %arg5, align 4
   %tmp6 = icmp eq i32 %tmp, 0
   br i1 %tmp6, label %bb9, label %bb7
 

diff  --git a/polly/test/ScopInfo/pr38218.ll b/polly/test/ScopInfo/pr38218.ll
index 301607e1be3bc..74103f9a2ac38 100644
--- a/polly/test/ScopInfo/pr38218.ll
+++ b/polly/test/ScopInfo/pr38218.ll
@@ -7,20 +7,19 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 define dso_local void @pr38219() {
 start:
-  %tmp1.i.i.i = icmp ne i64** null, null
+  %tmp1.i.i.i = icmp ne ptr null, null
   call void @llvm.assume(i1 %tmp1.i.i.i)
-  %tmp1 = extractvalue { [0 x i64*]*, i64 } undef, 0
-  %tmp.i1 = getelementptr inbounds [0 x i64*], [0 x i64*]* %tmp1, i64 0, i64 0
+  %tmp1 = extractvalue { ptr, i64 } undef, 0
   br label %bb10.i
 
 bb10.i:
-  %_10.12.i = phi i64** [ %tmp.i1, %start ], [ undef, %_ZN4core3ptr13drop_in_place17hd1d510ec1955c343E.exit.i ]
-  %tmp1.i.i2.i.i.i.i = load i64*, i64** %_10.12.i, align 8
-  store i64 undef, i64* %tmp1.i.i2.i.i.i.i, align 1
+  %_10.12.i = phi ptr [ %tmp1, %start ], [ undef, %_ZN4core3ptr13drop_in_place17hd1d510ec1955c343E.exit.i ]
+  %tmp1.i.i2.i.i.i.i = load ptr, ptr %_10.12.i, align 8
+  store i64 undef, ptr %tmp1.i.i2.i.i.i.i, align 1
   br label %bb3.i.i.i
 
 bb3.i.i.i:
-  store i64 0, i64* inttoptr (i64 8 to i64*), align 8
+  store i64 0, ptr inttoptr (i64 8 to ptr), align 8
   br label %_ZN4core3ptr13drop_in_place17hd1d510ec1955c343E.exit.i
 
 _ZN4core3ptr13drop_in_place17hd1d510ec1955c343E.exit.i:

diff  --git a/polly/test/ScopInfo/preserve-equiv-class-order-in-basic_block.ll b/polly/test/ScopInfo/preserve-equiv-class-order-in-basic_block.ll
index 77b7b311b5ee9..4a68acd3d5097 100644
--- a/polly/test/ScopInfo/preserve-equiv-class-order-in-basic_block.ll
+++ b/polly/test/ScopInfo/preserve-equiv-class-order-in-basic_block.ll
@@ -18,16 +18,16 @@ entry.split:                                      ; preds = %entry
 
 for.body:                                         ; preds = %for.body, %entry.split
   %indvars.iv = phi i64 [ 0, %entry.split ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds [56 x i32], [56 x i32]* @a, i64 0, i64 %indvars.iv
+  %arrayidx = getelementptr inbounds [56 x i32], ptr @a, i64 0, i64 %indvars.iv
   %0 = trunc i64 %indvars.iv to i32
-  store i32 %0, i32* %arrayidx, align 4, !tbaa !0
+  store i32 %0, ptr %arrayidx, align 4, !tbaa !0
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 56
   br i1 %exitcond, label %for.end, label %for.body
 
 for.end:                                          ; preds = %for.body
-  %1 = load i32, i32* @e, align 4, !tbaa !0
-  store i32 2, i32* @e, align 4, !tbaa !0
+  %1 = load i32, ptr @e, align 4, !tbaa !0
+  store i32 2, ptr @e, align 4, !tbaa !0
   %2 = trunc i32 %1 to i16
   %conv = and i16 %2, 1
   %tobool = icmp eq i16 %conv, 0
@@ -35,14 +35,14 @@ for.end:                                          ; preds = %for.body
 
 for.body3:                                        ; preds = %for.end, %for.inc11
   %storemerge20 = phi i32 [ 2, %for.end ], [ %dec12, %for.inc11 ]
-  %3 = load i8, i8* @d, align 1
+  %3 = load i8, ptr @d, align 1
   %cmp6 = icmp eq i8 %3, 8
   %or.cond = or i1 %tobool, %cmp6
   br i1 %or.cond, label %for.inc11, label %for.inc11.loopexit
 
 for.inc11.loopexit:                               ; preds = %for.body3
-  store i32 0, i32* @b, align 4, !tbaa !0
-  store i8 8, i8* @d, align 1, !tbaa !4
+  store i32 0, ptr @b, align 4, !tbaa !0
+  store i8 8, ptr @d, align 1, !tbaa !4
   br label %for.inc11
 
 for.inc11:                                        ; preds = %for.inc11.loopexit, %for.body3
@@ -51,9 +51,9 @@ for.inc11:                                        ; preds = %for.inc11.loopexit,
   br i1 %cmp2, label %for.body3, label %for.end13
 
 for.end13:                                        ; preds = %for.inc11
-  store i16 %conv, i16* @f, align 2, !tbaa !5
-  store i32 -19, i32* @e, align 4, !tbaa !0
-  %4 = load i32, i32* @b, align 4, !tbaa !0
+  store i16 %conv, ptr @f, align 2, !tbaa !5
+  store i32 -19, ptr @e, align 4, !tbaa !0
+  %4 = load i32, ptr @b, align 4, !tbaa !0
   ret i32 %4
 }
 
@@ -77,7 +77,7 @@ for.end13:                                        ; preds = %for.inc11
 ; CHECK-NEXT:            MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:                { Stmt_for_end_a[] -> MemRef_conv[] };
 ; CHECK-NEXT:            Instructions {
-; CHECK-NEXT:                  %1 = load i32, i32* @e, align 4, !tbaa !0
+; CHECK-NEXT:                  %1 = load i32, ptr @e, align 4, !tbaa !0
 ; CHECK-NEXT:                  %2 = trunc i32 %1 to i16
 ; CHECK-NEXT:                  %conv = and i16 %2, 1
 ; CHECK-NEXT:                  %tobool = icmp eq i16 %conv, 0
@@ -90,5 +90,5 @@ for.end13:                                        ; preds = %for.inc11
 ; CHECK-NEXT:            MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:                { Stmt_for_end[] -> MemRef_e[0] };
 ; CHECK-NEXT:            Instructions {
-; CHECK-NEXT:                  store i32 2, i32* @e, align 4, !tbaa !0
+; CHECK-NEXT:                  store i32 2, ptr @e, align 4, !tbaa !0
 ; CHECK-NEXT:            }

diff  --git a/polly/test/ScopInfo/process_added_dimensions.ll b/polly/test/ScopInfo/process_added_dimensions.ll
index 4edc8e3db1b94..6cb270a071f46 100644
--- a/polly/test/ScopInfo/process_added_dimensions.ll
+++ b/polly/test/ScopInfo/process_added_dimensions.ll
@@ -28,14 +28,12 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-declare noalias i8* @malloc()
+declare noalias ptr @malloc()
 
 define i32 @main() {
 entry:
-  %call = tail call noalias i8* @malloc()
-  %0 = bitcast i8* %call to [6 x [6 x [64 x i32]]]*
-  %arrayidx51.5.phi.trans.insert = getelementptr inbounds i8, i8* %call, i64 8960
-  %1 = bitcast i8* %arrayidx51.5.phi.trans.insert to i32*
+  %call = tail call noalias ptr @malloc()
+  %arrayidx51.5.phi.trans.insert = getelementptr inbounds i8, ptr %call, i64 8960
   br label %for.cond40.preheader.4
 
 for.end76:                                        ; preds = %for.inc71.5
@@ -44,10 +42,10 @@ for.end76:                                        ; preds = %for.inc71.5
 for.cond40.preheader.4:                           ; preds = %for.inc71.5, %entry
   %t.0131 = phi i32 [ 0, %entry ], [ %inc75, %for.inc71.5 ]
   %indvars.iv.next135 = add nuw nsw i64 0, 1
-  %2 = trunc i64 %indvars.iv.next135 to i32
+  %0 = trunc i64 %indvars.iv.next135 to i32
   %indvars.iv.next = add nuw nsw i64 0, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 64
-  %exitcond137 = icmp eq i32 %2, 6
+  %exitcond137 = icmp eq i32 %0, 6
   %indvars.iv.next135.1 = add nuw nsw i64 1, 1
   %indvars.iv.next.1 = add nuw nsw i64 0, 1
   %exitcond.1 = icmp eq i64 %indvars.iv.next.1, 64
@@ -68,8 +66,8 @@ for.cond40.preheader.4:                           ; preds = %for.inc71.5, %entry
   %exitcond.4 = icmp eq i64 %indvars.iv.next.4, 64
   %lftr.wideiv.4 = trunc i64 %indvars.iv.next135.4 to i32
   %exitcond137.4 = icmp eq i32 %lftr.wideiv.4, 6
-  %arrayidx23.5 = getelementptr inbounds [6 x [6 x [64 x i32]]], [6 x [6 x [64 x i32]]]* %0, i64 0, i64 5, i64 5, i64 0
-  store i32 36, i32* %arrayidx23.5, align 4
+  %arrayidx23.5 = getelementptr inbounds [6 x [6 x [64 x i32]]], ptr %call, i64 0, i64 5, i64 5, i64 0
+  store i32 36, ptr %arrayidx23.5, align 4
   %indvars.iv.next.5 = add nuw nsw i64 0, 1
   %exitcond.5 = icmp eq i64 %indvars.iv.next.5, 64
   %indvars.iv.next143 = add nuw nsw i64 1, 1
@@ -104,7 +102,7 @@ for.cond40.preheader.5:                           ; preds = %for.body44.4
   %indvars.iv.next149.4 = add nuw nsw i64 4, 1
   %lftr.wideiv150.4 = trunc i64 %indvars.iv.next149.4 to i32
   %exitcond151.4 = icmp eq i32 %lftr.wideiv150.4, 6
-  %.pre160 = load i32, i32* %1, align 4
+  %.pre160 = load i32, ptr %arrayidx51.5.phi.trans.insert, align 4
   br label %for.body44.5
 
 for.body44.5:                                     ; preds = %for.body44.5, %for.cond40.preheader.5

diff  --git a/polly/test/ScopInfo/ranged_parameter.ll b/polly/test/ScopInfo/ranged_parameter.ll
index 4dcfe3e6a57ba..4b04960ee845c 100644
--- a/polly/test/ScopInfo/ranged_parameter.ll
+++ b/polly/test/ScopInfo/ranged_parameter.ll
@@ -13,9 +13,9 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %p) {
+define void @jd(ptr %A, ptr %p) {
 entry:
-  %tmp = load i32, i32* %p, align 4, !range !0
+  %tmp = load i32, ptr %p, align 4, !range !0
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
@@ -26,8 +26,8 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %add = add i32 %i.0, %tmp
   %idxprom = sext i32 %add to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/ranged_parameter_2.ll b/polly/test/ScopInfo/ranged_parameter_2.ll
index 7f620a1db9b9e..cd7d2bfb84d0d 100644
--- a/polly/test/ScopInfo/ranged_parameter_2.ll
+++ b/polly/test/ScopInfo/ranged_parameter_2.ll
@@ -12,24 +12,21 @@
 
 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
 
-define void @zot(double* noalias %arg, double** %D, i32 %n) {
+define void @zot(ptr noalias %arg, ptr %D, i32 %n) {
 bb:
   br label %bb1
 
 bb1:
-  %tmp4 = load double*, double** %D
+  %tmp4 = load ptr, ptr %D
   %tmp5 = add i64 undef, 3
   %tmp6 = add i64 %tmp5, undef
   %tmp7 = add i64 %tmp6, undef
-  %tmp8 = getelementptr double, double* %tmp4, i64 %tmp7
-  %tmp9 = bitcast double* %tmp8 to i64*
-  store i64 42, i64* %tmp9
+  %tmp8 = getelementptr double, ptr %tmp4, i64 %tmp7
+  store i64 42, ptr %tmp8
   br label %bb11
 
 bb11:
-  %tmp12 = getelementptr double, double* %arg, i64 0
-  %tmp13 = bitcast double* %tmp12 to i64*
-  store i64 43, i64* %tmp13
+  store i64 43, ptr %arg
   br label %bb14
 
 bb14:

diff  --git a/polly/test/ScopInfo/ranged_parameter_wrap.ll b/polly/test/ScopInfo/ranged_parameter_wrap.ll
index c15f2374b9937..173746352cf0b 100644
--- a/polly/test/ScopInfo/ranged_parameter_wrap.ll
+++ b/polly/test/ScopInfo/ranged_parameter_wrap.ll
@@ -13,9 +13,9 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A, i32* %p) {
+define void @jd(ptr %A, ptr %p) {
 entry:
-  %tmp = load i32, i32* %p, align 4, !range !0
+  %tmp = load i32, ptr %p, align 4, !range !0
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
@@ -26,8 +26,8 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %add = add i32 %i.0, %tmp
   %idxprom = sext i32 %add to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/ranged_parameter_wrap_2.ll b/polly/test/ScopInfo/ranged_parameter_wrap_2.ll
index 8f830fcb42b8c..33f57f37a1e88 100644
--- a/polly/test/ScopInfo/ranged_parameter_wrap_2.ll
+++ b/polly/test/ScopInfo/ranged_parameter_wrap_2.ll
@@ -39,41 +39,41 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @jd(i32* %A,
-  i32* %p_0,
-  i32* %p_1,
-  i32* %p_2,
-  i32* %p_3,
-  i32* %p_4,
-  i32* %p_5,
-  i32* %p_6,
-  i32* %p_7,
-  i32* %p_8,
-  i32* %p_9,
-  i32* %p_10,
-  i32* %p_11,
-  i32* %p_12,
-  i32* %p_13,
-  i32* %p_14,
-  i32* %p_15
+define void @jd(ptr %A,
+  ptr %p_0,
+  ptr %p_1,
+  ptr %p_2,
+  ptr %p_3,
+  ptr %p_4,
+  ptr %p_5,
+  ptr %p_6,
+  ptr %p_7,
+  ptr %p_8,
+  ptr %p_9,
+  ptr %p_10,
+  ptr %p_11,
+  ptr %p_12,
+  ptr %p_13,
+  ptr %p_14,
+  ptr %p_15
   ) {
 entry:
-  %tmp_0 = load i32, i32* %p_0, !range !0
-  %tmp_1 = load i32, i32* %p_1, !range !0
-  %tmp_2 = load i32, i32* %p_2, !range !0
-  %tmp_3 = load i32, i32* %p_3, !range !0
-  %tmp_4 = load i32, i32* %p_4, !range !0
-  %tmp_5 = load i32, i32* %p_5, !range !0
-  %tmp_6 = load i32, i32* %p_6, !range !0
-  %tmp_7 = load i32, i32* %p_7, !range !0
-  %tmp_8 = load i32, i32* %p_8, !range !0
-  %tmp_9 = load i32, i32* %p_9, !range !0
-  %tmp_10 = load i32, i32* %p_10, !range !0
-  %tmp_11 = load i32, i32* %p_11, !range !0
-  %tmp_12 = load i32, i32* %p_12, !range !0
-  %tmp_13 = load i32, i32* %p_13, !range !0
-  %tmp_14 = load i32, i32* %p_14, !range !0
-  %tmp_15 = load i32, i32* %p_15, !range !0
+  %tmp_0 = load i32, ptr %p_0, !range !0
+  %tmp_1 = load i32, ptr %p_1, !range !0
+  %tmp_2 = load i32, ptr %p_2, !range !0
+  %tmp_3 = load i32, ptr %p_3, !range !0
+  %tmp_4 = load i32, ptr %p_4, !range !0
+  %tmp_5 = load i32, ptr %p_5, !range !0
+  %tmp_6 = load i32, ptr %p_6, !range !0
+  %tmp_7 = load i32, ptr %p_7, !range !0
+  %tmp_8 = load i32, ptr %p_8, !range !0
+  %tmp_9 = load i32, ptr %p_9, !range !0
+  %tmp_10 = load i32, ptr %p_10, !range !0
+  %tmp_11 = load i32, ptr %p_11, !range !0
+  %tmp_12 = load i32, ptr %p_12, !range !0
+  %tmp_13 = load i32, ptr %p_13, !range !0
+  %tmp_14 = load i32, ptr %p_14, !range !0
+  %tmp_15 = load i32, ptr %p_15, !range !0
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
@@ -84,113 +84,113 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body_0:
   %add_0 = add i32 %i.0, %tmp_0
   %idxprom_0 = sext i32 %add_0 to i64
-  %arrayidx_0 = getelementptr inbounds i32, i32* %A, i64 %idxprom_0
-  store i32 %i.0, i32* %arrayidx_0, align 4
+  %arrayidx_0 = getelementptr inbounds i32, ptr %A, i64 %idxprom_0
+  store i32 %i.0, ptr %arrayidx_0, align 4
   br label %for.body_1
 
 for.body_1:
   %add_1 = add i32 %i.0, %tmp_1
   %idxprom_1 = sext i32 %add_1 to i64
-  %arrayidx_1 = getelementptr inbounds i32, i32* %A, i64 %idxprom_1
-  store i32 %i.0, i32* %arrayidx_1, align 4
+  %arrayidx_1 = getelementptr inbounds i32, ptr %A, i64 %idxprom_1
+  store i32 %i.0, ptr %arrayidx_1, align 4
   br label %for.body_2
 
 for.body_2:
   %add_2 = add i32 %i.0, %tmp_2
   %idxprom_2 = sext i32 %add_2 to i64
-  %arrayidx_2 = getelementptr inbounds i32, i32* %A, i64 %idxprom_2
-  store i32 %i.0, i32* %arrayidx_2, align 4
+  %arrayidx_2 = getelementptr inbounds i32, ptr %A, i64 %idxprom_2
+  store i32 %i.0, ptr %arrayidx_2, align 4
   br label %for.body_3
 
 for.body_3:
   %add_3 = add i32 %i.0, %tmp_3
   %idxprom_3 = sext i32 %add_3 to i64
-  %arrayidx_3 = getelementptr inbounds i32, i32* %A, i64 %idxprom_3
-  store i32 %i.0, i32* %arrayidx_3, align 4
+  %arrayidx_3 = getelementptr inbounds i32, ptr %A, i64 %idxprom_3
+  store i32 %i.0, ptr %arrayidx_3, align 4
   br label %for.body_4
 
 for.body_4:
   %add_4 = add i32 %i.0, %tmp_4
   %idxprom_4 = sext i32 %add_4 to i64
-  %arrayidx_4 = getelementptr inbounds i32, i32* %A, i64 %idxprom_4
-  store i32 %i.0, i32* %arrayidx_4, align 4
+  %arrayidx_4 = getelementptr inbounds i32, ptr %A, i64 %idxprom_4
+  store i32 %i.0, ptr %arrayidx_4, align 4
   br label %for.body_5
 
 for.body_5:
   %add_5 = add i32 %i.0, %tmp_5
   %idxprom_5 = sext i32 %add_5 to i64
-  %arrayidx_5 = getelementptr inbounds i32, i32* %A, i64 %idxprom_5
-  store i32 %i.0, i32* %arrayidx_5, align 4
+  %arrayidx_5 = getelementptr inbounds i32, ptr %A, i64 %idxprom_5
+  store i32 %i.0, ptr %arrayidx_5, align 4
   br label %for.body_6
 
 for.body_6:
   %add_6 = add i32 %i.0, %tmp_6
   %idxprom_6 = sext i32 %add_6 to i64
-  %arrayidx_6 = getelementptr inbounds i32, i32* %A, i64 %idxprom_6
-  store i32 %i.0, i32* %arrayidx_6, align 4
+  %arrayidx_6 = getelementptr inbounds i32, ptr %A, i64 %idxprom_6
+  store i32 %i.0, ptr %arrayidx_6, align 4
   br label %for.body_7
 
 for.body_7:
   %add_7 = add i32 %i.0, %tmp_7
   %idxprom_7 = sext i32 %add_7 to i64
-  %arrayidx_7 = getelementptr inbounds i32, i32* %A, i64 %idxprom_7
-  store i32 %i.0, i32* %arrayidx_7, align 4
+  %arrayidx_7 = getelementptr inbounds i32, ptr %A, i64 %idxprom_7
+  store i32 %i.0, ptr %arrayidx_7, align 4
   br label %for.body_8
 
 for.body_8:
   %add_8 = add i32 %i.0, %tmp_8
   %idxprom_8 = sext i32 %add_8 to i64
-  %arrayidx_8 = getelementptr inbounds i32, i32* %A, i64 %idxprom_8
-  store i32 %i.0, i32* %arrayidx_8, align 4
+  %arrayidx_8 = getelementptr inbounds i32, ptr %A, i64 %idxprom_8
+  store i32 %i.0, ptr %arrayidx_8, align 4
   br label %for.body_9
 
 for.body_9:
   %add_9 = add i32 %i.0, %tmp_9
   %idxprom_9 = sext i32 %add_9 to i64
-  %arrayidx_9 = getelementptr inbounds i32, i32* %A, i64 %idxprom_9
-  store i32 %i.0, i32* %arrayidx_9, align 4
+  %arrayidx_9 = getelementptr inbounds i32, ptr %A, i64 %idxprom_9
+  store i32 %i.0, ptr %arrayidx_9, align 4
   br label %for.body_10
 
 for.body_10:
   %add_10 = add i32 %i.0, %tmp_10
   %idxprom_10 = sext i32 %add_10 to i64
-  %arrayidx_10 = getelementptr inbounds i32, i32* %A, i64 %idxprom_10
-  store i32 %i.0, i32* %arrayidx_10, align 4
+  %arrayidx_10 = getelementptr inbounds i32, ptr %A, i64 %idxprom_10
+  store i32 %i.0, ptr %arrayidx_10, align 4
   br label %for.body_11
 
 for.body_11:
   %add_11 = add i32 %i.0, %tmp_11
   %idxprom_11 = sext i32 %add_11 to i64
-  %arrayidx_11 = getelementptr inbounds i32, i32* %A, i64 %idxprom_11
-  store i32 %i.0, i32* %arrayidx_11, align 4
+  %arrayidx_11 = getelementptr inbounds i32, ptr %A, i64 %idxprom_11
+  store i32 %i.0, ptr %arrayidx_11, align 4
   br label %for.body_12
 
 for.body_12:
   %add_12 = add i32 %i.0, %tmp_12
   %idxprom_12 = sext i32 %add_12 to i64
-  %arrayidx_12 = getelementptr inbounds i32, i32* %A, i64 %idxprom_12
-  store i32 %i.0, i32* %arrayidx_12, align 4
+  %arrayidx_12 = getelementptr inbounds i32, ptr %A, i64 %idxprom_12
+  store i32 %i.0, ptr %arrayidx_12, align 4
   br label %for.body_13
 
 for.body_13:
   %add_13 = add i32 %i.0, %tmp_13
   %idxprom_13 = sext i32 %add_13 to i64
-  %arrayidx_13 = getelementptr inbounds i32, i32* %A, i64 %idxprom_13
-  store i32 %i.0, i32* %arrayidx_13, align 4
+  %arrayidx_13 = getelementptr inbounds i32, ptr %A, i64 %idxprom_13
+  store i32 %i.0, ptr %arrayidx_13, align 4
   br label %for.body_14
 
 for.body_14:
   %add_14 = add i32 %i.0, %tmp_14
   %idxprom_14 = sext i32 %add_14 to i64
-  %arrayidx_14 = getelementptr inbounds i32, i32* %A, i64 %idxprom_14
-  store i32 %i.0, i32* %arrayidx_14, align 4
+  %arrayidx_14 = getelementptr inbounds i32, ptr %A, i64 %idxprom_14
+  store i32 %i.0, ptr %arrayidx_14, align 4
   br label %for.body_15
 
 for.body_15:
   %add_15 = add i32 %i.0, %tmp_15
   %idxprom_15 = sext i32 %add_15 to i64
-  %arrayidx_15 = getelementptr inbounds i32, i32* %A, i64 %idxprom_15
-  store i32 %i.0, i32* %arrayidx_15, align 4
+  %arrayidx_15 = getelementptr inbounds i32, ptr %A, i64 %idxprom_15
+  store i32 %i.0, ptr %arrayidx_15, align 4
   br label %for.body_end
 
 for.body_end:

diff  --git a/polly/test/ScopInfo/read-only-scalar-used-in-phi-2.ll b/polly/test/ScopInfo/read-only-scalar-used-in-phi-2.ll
index 605a03da3139b..23c7aa261ac04 100644
--- a/polly/test/ScopInfo/read-only-scalar-used-in-phi-2.ll
+++ b/polly/test/ScopInfo/read-only-scalar-used-in-phi-2.ll
@@ -17,15 +17,15 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define float @foo(float %sum, float* %A) {
+define float @foo(float %sum, ptr %A) {
 bb:
   br label %bb1
 
 bb1:
   %i = phi i64 [ 0, %bb ], [ %i.next, %bb1 ]
   %phisum = phi float [ %sum, %bb ], [ %tmp5, %bb1 ]
-  %tmp = getelementptr inbounds float, float* %A, i64 %i
-  %tmp4 = load float, float* %tmp, align 4
+  %tmp = getelementptr inbounds float, ptr %A, i64 %i
+  %tmp4 = load float, ptr %tmp, align 4
   %tmp5 = fadd float %phisum, %tmp4
   %i.next = add nuw nsw i64 %i, 1
   %exitcond = icmp ne i64 %i, 100

diff  --git a/polly/test/ScopInfo/read-only-scalar-used-in-phi.ll b/polly/test/ScopInfo/read-only-scalar-used-in-phi.ll
index d1095a18e4d8a..20f44c94251c0 100644
--- a/polly/test/ScopInfo/read-only-scalar-used-in-phi.ll
+++ b/polly/test/ScopInfo/read-only-scalar-used-in-phi.ll
@@ -37,7 +37,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define float @foo(float %sum, float* %A) {
+define float @foo(float %sum, ptr %A) {
 bb:
   br label %next
 
@@ -47,8 +47,8 @@ next:
 bb1:
   %i = phi i64 [ 0, %next ], [ %i.next, %bb1 ]
   %phisum = phi float [ %sum, %next ], [ %tmp5, %bb1 ]
-  %tmp = getelementptr inbounds float, float* %A, i64 %i
-  %tmp4 = load float, float* %tmp, align 4
+  %tmp = getelementptr inbounds float, ptr %A, i64 %i
+  %tmp4 = load float, ptr %tmp, align 4
   %tmp5 = fadd float %phisum, %tmp4
   %i.next = add nuw nsw i64 %i, 1
   %exitcond = icmp ne i64 %i, 100

diff  --git a/polly/test/ScopInfo/read-only-scalars.ll b/polly/test/ScopInfo/read-only-scalars.ll
index bddaac5a25b13..71c2d21e357a3 100644
--- a/polly/test/ScopInfo/read-only-scalars.ll
+++ b/polly/test/ScopInfo/read-only-scalars.ll
@@ -11,7 +11,7 @@
 ; SCALARS:     { Stmt_stmt1[i0] -> MemRef_scalar2[] };
 
 
-define void @foo(float* noalias %A, float* %B, float %scalar, float %scalar2) {
+define void @foo(ptr noalias %A, ptr %B, float %scalar, float %scalar2) {
 entry:
   br label %loop
 
@@ -20,10 +20,10 @@ loop:
   br label %stmt1
 
 stmt1:
-  %val = load float, float* %A
+  %val = load float, ptr %A
   %sum = fadd float %val, %scalar
-  store float %sum, float* %A
-  store float %scalar2, float* %B
+  store float %sum, ptr %A
+  store float %scalar2, ptr %B
   br label %loop.backedge
 
 loop.backedge:

diff  --git a/polly/test/ScopInfo/read-only-statements.ll b/polly/test/ScopInfo/read-only-statements.ll
index 37acd9ce9c5b2..a93063ea3ad68 100644
--- a/polly/test/ScopInfo/read-only-statements.ll
+++ b/polly/test/ScopInfo/read-only-statements.ll
@@ -31,7 +31,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -41,30 +41,30 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4
   br label %for.body.1
 
 for.body.1:
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx2, align 4
   br label %for.body.2
 
 for.body.2:
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx5, align 4
   %add = add nsw i32 %tmp2, 1
-  store i32 %add, i32* %arrayidx5, align 4
+  store i32 %add, ptr %arrayidx5, align 4
   br label %for.body.3
 
 for.body.3:
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %arrayidx7, align 4
   br label %for.body.4
 
 for.body.4:
-  %arrayidx10 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp4 = load i32, i32* %arrayidx10, align 4
+  %arrayidx10 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp4 = load i32, ptr %arrayidx10, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/reduction_alternating_base.ll b/polly/test/ScopInfo/reduction_alternating_base.ll
index af4a14d45bd3b..854e28023a3ee 100644
--- a/polly/test/ScopInfo/reduction_alternating_base.ll
+++ b/polly/test/ScopInfo/reduction_alternating_base.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -24,10 +24,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %rem = srem i32 %i.0, 2
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %rem
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %rem
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/reduction_chain_partially_outside_the_scop.ll b/polly/test/ScopInfo/reduction_chain_partially_outside_the_scop.ll
index 8f978cd8bea77..fb0274972082d 100644
--- a/polly/test/ScopInfo/reduction_chain_partially_outside_the_scop.ll
+++ b/polly/test/ScopInfo/reduction_chain_partially_outside_the_scop.ll
@@ -13,10 +13,10 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 @c = common global i32 0, align 4
 @d = common global i32 0, align 4
 
-define void @loads_outside_scop(i32* %sum) {
+define void @loads_outside_scop(ptr %sum) {
 entry:
-  %tmp = load i32, i32* @c, align 4
-  %tmp1 = load i32, i32* @d, align 4
+  %tmp = load i32, ptr @c, align 4
+  %tmp1 = load i32, ptr @d, align 4
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
@@ -26,7 +26,7 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %add = add nsw i32 %tmp, %tmp1
-  store i32 %add, i32* %sum, align 4
+  store i32 %add, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -38,10 +38,10 @@ for.end:                                          ; preds = %for.cond
 }
 
 
-define void @binop_outside_scop(i32* %sum) {
+define void @binop_outside_scop(ptr %sum) {
 entry:
-  %tmp = load i32, i32* @c, align 4
-  %tmp1 = load i32, i32* @d, align 4
+  %tmp = load i32, ptr @c, align 4
+  %tmp1 = load i32, ptr @d, align 4
   %add = add nsw i32 %tmp, %tmp1
   br label %for.cond
 
@@ -51,7 +51,7 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 %add, i32* %sum, align 4
+  store i32 %add, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/reduction_disabled_multiplicative.ll b/polly/test/ScopInfo/reduction_disabled_multiplicative.ll
index ef51a0fd3ec13..7120740fbf345 100644
--- a/polly/test/ScopInfo/reduction_disabled_multiplicative.ll
+++ b/polly/test/ScopInfo/reduction_disabled_multiplicative.ll
@@ -34,13 +34,13 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %mul = mul nsw i32 %i1.0, 3
-  %tmp = load i32, i32* @sum, align 4
+  %tmp = load i32, ptr @sum, align 4
   %add = add nsw i32 %tmp, %mul
-  store i32 %add, i32* @sum, align 4
+  store i32 %add, ptr @sum, align 4
   %add2 = add nsw i32 %i1.0, 3
-  %tmp1 = load i32, i32* @prod, align 4
+  %tmp1 = load i32, ptr @prod, align 4
   %mul3 = mul nsw i32 %tmp1, %add2
-  store i32 %mul3, i32* @prod, align 4
+  store i32 %mul3, ptr @prod, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/reduction_escaping_intermediate.ll b/polly/test/ScopInfo/reduction_escaping_intermediate.ll
index 9d450b98afbe5..dde09108ecc4f 100644
--- a/polly/test/ScopInfo/reduction_escaping_intermediate.ll
+++ b/polly/test/ScopInfo/reduction_escaping_intermediate.ll
@@ -18,7 +18,7 @@
 ; CHECK: escape
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32 %N, i32* noalias %sums, i32* noalias %escape) {
+define void @f(i32 %N, ptr noalias %sums, ptr noalias %escape) {
 entry:
   br label %for.cond
 
@@ -36,14 +36,14 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %sums, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sums, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 5
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   %sub = sub nsw i32 %N, %i.0
   %add5 = add nsw i32 %sub, %j.0
-  %arrayidx6 = getelementptr inbounds i32, i32* %escape, i32 %add5
-  store i32 %add, i32* %arrayidx6, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %escape, i32 %add5
+  store i32 %add, ptr %arrayidx6, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/ScopInfo/reduction_escaping_intermediate_2.ll b/polly/test/ScopInfo/reduction_escaping_intermediate_2.ll
index 4c616e08c3024..702fc56025d93 100644
--- a/polly/test/ScopInfo/reduction_escaping_intermediate_2.ll
+++ b/polly/test/ScopInfo/reduction_escaping_intermediate_2.ll
@@ -22,7 +22,7 @@
 ; CHECK: escape
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32 %N, i32* noalias %sums, i32* noalias %escape) {
+define void @f(i32 %N, ptr noalias %sums, ptr noalias %escape) {
 entry:
   br label %for.cond
 
@@ -40,20 +40,20 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %sums, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sums, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 5
-  store i32 %add, i32* %arrayidx, align 4
-  %arrayidx4 = getelementptr inbounds i32, i32* %escape, i32 %i.0
-  %tmp2 = load i32, i32* %arrayidx4, align 4
+  store i32 %add, ptr %arrayidx, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %escape, i32 %i.0
+  %tmp2 = load i32, ptr %arrayidx4, align 4
   %sub = add nsw i32 %i.0, -1
-  %arrayidx5 = getelementptr inbounds i32, i32* %sums, i32 %sub
-  %tmp3 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %sums, i32 %sub
+  %tmp3 = load i32, ptr %arrayidx5, align 4
   %add6 = add nsw i32 %tmp2, %tmp3
   %sub7 = sub nsw i32 %N, %i.0
   %add8 = add nsw i32 %sub7, %j.0
-  %arrayidx9 = getelementptr inbounds i32, i32* %escape, i32 %add8
-  store i32 %add6, i32* %arrayidx9, align 4
+  %arrayidx9 = getelementptr inbounds i32, ptr %escape, i32 %add8
+  store i32 %add6, ptr %arrayidx9, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/ScopInfo/reduction_invalid_
diff erent_operators.ll b/polly/test/ScopInfo/reduction_invalid_
diff erent_operators.ll
index 2f69ebf8895b0..f47919dcad99a 100644
--- a/polly/test/ScopInfo/reduction_invalid_
diff erent_operators.ll
+++ b/polly/test/ScopInfo/reduction_invalid_
diff erent_operators.ll
@@ -21,30 +21,30 @@ entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  store i32 0, i32* %sum.0
-  store i32 0, i32* %sth.0
+  store i32 0, ptr %sum.0
+  store i32 0, ptr %sth.0
   br label %for.cond
 
 for.cond:                                         ; preds = %for.cond, %entry.split
   %i.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
-  %sth.0.reload = load i32, i32* %sth.0
-  %sum.0.reload = load i32, i32* %sum.0
+  %sth.0.reload = load i32, ptr %sth.0
+  %sum.0.reload = load i32, ptr %sum.0
   %exitcond = icmp ne i32 %i.0, 1024
   %mul = mul nsw i32 %sth.0.reload, %sth.0.reload
   %add1 = add nsw i32 %sth.0.reload, %mul
   %tmp = mul i32 %sum.0.reload, 5
-  store i32 %tmp, i32* %sum.0
-  %sum.1.reload = load i32, i32* %sum.0
+  store i32 %tmp, ptr %sum.0
+  %sum.1.reload = load i32, ptr %sum.0
   %mul3 = add i32 %sum.1.reload, 25
   %add2 = add nsw i32 %add1, %sth.0.reload
   %inc = add nsw i32 %i.0, 1
-  store i32 %mul3, i32* %sum.0
-  store i32 %add2, i32* %sth.0
+  store i32 %mul3, ptr %sum.0
+  store i32 %add2, ptr %sth.0
   br i1 %exitcond, label %for.cond, label %for.end
 
 for.end:                                          ; preds = %for.cond
-  %sum.0.reload.2 = load i32, i32* %sum.0
-  %sth.0.reload.2 = load i32, i32* %sth.0
+  %sum.0.reload.2 = load i32, ptr %sum.0
+  %sth.0.reload.2 = load i32, ptr %sth.0
   %add4 = add nsw i32 %sum.0.reload.2, %sth.0.reload.2
   ret i32 %add4
 }

diff  --git a/polly/test/ScopInfo/reduction_invalid_overlapping_accesses.ll b/polly/test/ScopInfo/reduction_invalid_overlapping_accesses.ll
index 1b76be3899c05..be1d7b5bbbd9f 100644
--- a/polly/test/ScopInfo/reduction_invalid_overlapping_accesses.ll
+++ b/polly/test/ScopInfo/reduction_invalid_overlapping_accesses.ll
@@ -14,7 +14,7 @@
 ; CHECK-NOT: Reduction Type: *
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sums) {
+define void @f(ptr %sums) {
 entry:
   br label %for.cond
 
@@ -32,15 +32,15 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %sums, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sums, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 5
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   %add4 = add nsw i32 %i.0, 10
-  %arrayidx5 = getelementptr inbounds i32, i32* %sums, i32 %add4
-  %tmp2 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %sums, i32 %add4
+  %tmp2 = load i32, ptr %arrayidx5, align 4
   %mul = mul nsw i32 %tmp2, 5
-  store i32 %mul, i32* %arrayidx5, align 4
+  store i32 %mul, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/ScopInfo/reduction_multiple_loops_array_sum.ll b/polly/test/ScopInfo/reduction_multiple_loops_array_sum.ll
index b03a091b6e1b0..8d20fa13ffe5c 100644
--- a/polly/test/ScopInfo/reduction_multiple_loops_array_sum.ll
+++ b/polly/test/ScopInfo/reduction_multiple_loops_array_sum.ll
@@ -30,7 +30,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* noalias %A, i32* noalias %sum) {
+define void @f(ptr noalias %A, ptr noalias %sum) {
 entry:
   br label %for.cond
 
@@ -40,9 +40,9 @@ for.cond:                                         ; preds = %for.inc6, %entry
   br i1 %exitcond1, label %for.body, label %for.end8
 
 for.body:                                         ; preds = %for.cond
-  %tmp = load i32, i32* %sum, align 4
+  %tmp = load i32, ptr %sum, align 4
   %mul = mul nsw i32 %tmp, 7
-  store i32 %mul, i32* %sum, align 4
+  store i32 %mul, ptr %sum, align 4
   br label %for.cond1
 
 for.cond1:                                        ; preds = %for.inc, %for.body
@@ -52,11 +52,11 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 
 for.body3:                                        ; preds = %for.cond1
   %add = add nsw i32 %i.0, %j.0
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %add
-  %tmp2 = load i32, i32* %arrayidx, align 4
-  %tmp3 = load i32, i32* %sum, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %add
+  %tmp2 = load i32, ptr %arrayidx, align 4
+  %tmp3 = load i32, ptr %sum, align 4
   %add4 = add nsw i32 %tmp3, %tmp2
-  store i32 %add4, i32* %sum, align 4
+  store i32 %add4, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3
@@ -64,9 +64,9 @@ for.inc:                                          ; preds = %for.body3
   br label %for.cond1
 
 for.end:                                          ; preds = %for.cond1
-  %tmp4 = load i32, i32* %sum, align 4
+  %tmp4 = load i32, ptr %sum, align 4
   %mul5 = mul nsw i32 %tmp4, 5
-  store i32 %mul5, i32* %sum, align 4
+  store i32 %mul5, ptr %sum, align 4
   br label %for.inc6
 
 for.inc6:                                         ; preds = %for.end

diff  --git a/polly/test/ScopInfo/reduction_multiple_loops_array_sum_1.ll b/polly/test/ScopInfo/reduction_multiple_loops_array_sum_1.ll
index c2384887edefe..782332b56aada 100644
--- a/polly/test/ScopInfo/reduction_multiple_loops_array_sum_1.ll
+++ b/polly/test/ScopInfo/reduction_multiple_loops_array_sum_1.ll
@@ -30,43 +30,43 @@
 ; }
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @f(i32* noalias %A) {
+define i32 @f(ptr noalias %A) {
 entry:
   %sum.04.reg2mem = alloca i32
   %sum.12.reg2mem = alloca i32
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  store i32 0, i32* %sum.04.reg2mem
+  store i32 0, ptr %sum.04.reg2mem
   br label %for.body
 
 for.body:                                         ; preds = %for.inc5, %entry.split
   %indvars.iv23 = phi i64 [ 0, %entry.split ], [ %3, %for.inc5 ]
-  %sum.04.reload = load i32, i32* %sum.04.reg2mem
+  %sum.04.reload = load i32, ptr %sum.04.reg2mem
   %mul = mul nsw i32 %sum.04.reload, 7
-  store i32 %mul, i32* %sum.12.reg2mem
+  store i32 %mul, ptr %sum.12.reg2mem
   br label %for.inc
 
 for.inc:                                          ; preds = %for.inc, %for.body
   %indvars.iv1 = phi i64 [ 0, %for.body ], [ %1, %for.inc ]
-  %sum.12.reload = load i32, i32* %sum.12.reg2mem
+  %sum.12.reload = load i32, ptr %sum.12.reg2mem
   %0 = add i64 %indvars.iv23, %indvars.iv1
-  %arrayidx = getelementptr i32, i32* %A, i64 %0
-  %tmp5 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr i32, ptr %A, i64 %0
+  %tmp5 = load i32, ptr %arrayidx, align 4
   %add4 = add nsw i32 %tmp5, %sum.12.reload
   %1 = add nuw nsw i64 %indvars.iv1, 1
   %exitcond1 = icmp eq i64 %1, 100
-  store i32 %add4, i32* %sum.12.reg2mem
+  store i32 %add4, ptr %sum.12.reg2mem
   br i1 %exitcond1, label %for.inc5, label %for.inc
 
 for.inc5:                                         ; preds = %for.inc
-  %2 = load i32, i32* %sum.12.reg2mem
+  %2 = load i32, ptr %sum.12.reg2mem
   %3 = add nuw nsw i64 %indvars.iv23, 1
   %exitcond2 = icmp eq i64 %3, 100
-  store i32 %2, i32* %sum.04.reg2mem
+  store i32 %2, ptr %sum.04.reg2mem
   br i1 %exitcond2, label %for.end7, label %for.body
 
 for.end7:                                         ; preds = %for.inc5
-  %4 = load i32, i32* %sum.04.reg2mem
+  %4 = load i32, ptr %sum.04.reg2mem
   ret i32 %4
 }

diff  --git a/polly/test/ScopInfo/reduction_multiple_simple_binary.ll b/polly/test/ScopInfo/reduction_multiple_simple_binary.ll
index 16393a4c480ff..0f1a3ad90dac3 100644
--- a/polly/test/ScopInfo/reduction_multiple_simple_binary.ll
+++ b/polly/test/ScopInfo/reduction_multiple_simple_binary.ll
@@ -47,7 +47,7 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 @prod = common global i32 0, align 4
 @last = common global i32 0, align 4
 
-define void @f(i32* noalias %A) {
+define void @f(ptr noalias %A) {
 entry:
   br label %for.cond
 
@@ -58,35 +58,35 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %add = add nsw i32 %i1.0, 1
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %add
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i32 %i1.0
-  %tmp1 = load i32, i32* %arrayidx2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %add
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i32 %i1.0
+  %tmp1 = load i32, ptr %arrayidx2, align 4
   %add3 = add nsw i32 %tmp, %tmp1
-  store i32 %add3, i32* @first, align 4
+  store i32 %add3, ptr @first, align 4
   %mul = mul nsw i32 %i1.0, 3
-  %tmp2 = load i32, i32* @sum, align 4
+  %tmp2 = load i32, ptr @sum, align 4
   %add4 = add nsw i32 %tmp2, %mul
-  store i32 %add4, i32* @sum, align 4
+  store i32 %add4, ptr @sum, align 4
   %sub = add nsw i32 %i1.0, -1
-  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %sub
-  %tmp3 = load i32, i32* %arrayidx5, align 4
-  %arrayidx6 = getelementptr inbounds i32, i32* %A, i32 %i1.0
-  %tmp4 = load i32, i32* %arrayidx6, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i32 %sub
+  %tmp3 = load i32, ptr %arrayidx5, align 4
+  %arrayidx6 = getelementptr inbounds i32, ptr %A, i32 %i1.0
+  %tmp4 = load i32, ptr %arrayidx6, align 4
   %add7 = add nsw i32 %tmp3, %tmp4
-  store i32 %add7, i32* @middle, align 4
+  store i32 %add7, ptr @middle, align 4
   %add8 = add nsw i32 %i1.0, 3
-  %tmp5 = load i32, i32* @prod, align 4
+  %tmp5 = load i32, ptr @prod, align 4
   %mul9 = mul nsw i32 %tmp5, %add8
-  store i32 %mul9, i32* @prod, align 4
+  store i32 %mul9, ptr @prod, align 4
   %sub10 = add nsw i32 %i1.0, -1
-  %arrayidx11 = getelementptr inbounds i32, i32* %A, i32 %sub10
-  %tmp6 = load i32, i32* %arrayidx11, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %A, i32 %sub10
+  %tmp6 = load i32, ptr %arrayidx11, align 4
   %add12 = add nsw i32 %i1.0, 1
-  %arrayidx13 = getelementptr inbounds i32, i32* %A, i32 %add12
-  %tmp7 = load i32, i32* %arrayidx13, align 4
+  %arrayidx13 = getelementptr inbounds i32, ptr %A, i32 %add12
+  %tmp7 = load i32, ptr %arrayidx13, align 4
   %add14 = add nsw i32 %tmp6, %tmp7
-  store i32 %add14, i32* @last, align 4
+  store i32 %add14, ptr @last, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/reduction_non_overlapping_chains.ll b/polly/test/ScopInfo/reduction_non_overlapping_chains.ll
index 350014e57150e..4e3f841cd8e1a 100644
--- a/polly/test/ScopInfo/reduction_non_overlapping_chains.ll
+++ b/polly/test/ScopInfo/reduction_non_overlapping_chains.ll
@@ -15,7 +15,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sums) {
+define void @f(ptr %sums) {
 entry:
   br label %for.cond
 
@@ -33,15 +33,15 @@ for.cond1:                                        ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body3, label %for.end
 
 for.body3:                                        ; preds = %for.cond1
-  %arrayidx = getelementptr inbounds i32, i32* %sums, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sums, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, 5
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   %add4 = add nsw i32 %i.0, 1024
-  %arrayidx5 = getelementptr inbounds i32, i32* %sums, i32 %add4
-  %tmp2 = load i32, i32* %arrayidx5, align 4
+  %arrayidx5 = getelementptr inbounds i32, ptr %sums, i32 %add4
+  %tmp2 = load i32, ptr %arrayidx5, align 4
   %mul = mul nsw i32 %tmp2, 5
-  store i32 %mul, i32* %arrayidx5, align 4
+  store i32 %mul, ptr %arrayidx5, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body3

diff  --git a/polly/test/ScopInfo/reduction_only_reduction_like_access.ll b/polly/test/ScopInfo/reduction_only_reduction_like_access.ll
index 3b6ffa218d306..0c61d63a2d45b 100644
--- a/polly/test/ScopInfo/reduction_only_reduction_like_access.ll
+++ b/polly/test/ScopInfo/reduction_only_reduction_like_access.ll
@@ -8,7 +8,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum) {
+define void @f(ptr %sum) {
 entry:
   br label %for.cond
 
@@ -19,11 +19,11 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %sub = sub nsw i32 99, %i.0
-  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %sub
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %sub
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %i.0
-  %arrayidx1 = getelementptr inbounds i32, i32* %sum, i32 %i.0
-  store i32 %add, i32* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds i32, ptr %sum, i32 %i.0
+  store i32 %add, ptr %arrayidx1, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/reduction_simple_fp.ll b/polly/test/ScopInfo/reduction_simple_fp.ll
index 5956359cba1be..ba0a034a17e38 100644
--- a/polly/test/ScopInfo/reduction_simple_fp.ll
+++ b/polly/test/ScopInfo/reduction_simple_fp.ll
@@ -11,7 +11,7 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f_no_fast_math(float* %sum) {
+define void @f_no_fast_math(ptr %sum) {
 entry:
   br label %for.cond
 
@@ -24,9 +24,9 @@ for.body:                                         ; preds = %for.cond
   %conv = sitofp i32 %i.0 to float
   %pi = fptrunc double 3.41 to float
   %mul = fmul float %conv, %pi
-  %tmp = load float, float* %sum, align 4
+  %tmp = load float, ptr %sum, align 4
   %add = fadd float %tmp, %mul
-  store float %add, float* %sum, align 4
+  store float %add, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -37,7 +37,7 @@ for.end:                                          ; preds = %for.cond
   ret void
 }
 
-define void @f_fast_math(float* %sum) {
+define void @f_fast_math(ptr %sum) {
 entry:
   br label %for.cond
 
@@ -50,9 +50,9 @@ for.body:                                         ; preds = %for.cond
   %conv = sitofp i32 %i.0 to float
   %pi = fptrunc double 3.41 to float
   %mul = fmul fast float %conv, %pi
-  %tmp = load float, float* %sum, align 4
+  %tmp = load float, ptr %sum, align 4
   %add = fadd fast float %tmp, %mul
-  store float %add, float* %sum, align 4
+  store float %add, ptr %sum, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/reduction_simple_w_constant.ll b/polly/test/ScopInfo/reduction_simple_w_constant.ll
index 6ffa5a6380205..dc1f8550602db 100644
--- a/polly/test/ScopInfo/reduction_simple_w_constant.ll
+++ b/polly/test/ScopInfo/reduction_simple_w_constant.ll
@@ -8,16 +8,16 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum) {
+define void @f(ptr %sum) {
 entry:
   br label %for.cond
 
 for.cond:                                         ; preds = %for.cond, %entry
   %i1.0 = phi i32 [ 0, %entry ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %add = add nsw i32 %sum.reload, 3
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 

diff  --git a/polly/test/ScopInfo/reduction_simple_w_iv.ll b/polly/test/ScopInfo/reduction_simple_w_iv.ll
index f322d956868e4..b6c3229d08d5c 100644
--- a/polly/test/ScopInfo/reduction_simple_w_iv.ll
+++ b/polly/test/ScopInfo/reduction_simple_w_iv.ll
@@ -8,17 +8,17 @@
 ; }
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f(i32* %sum) {
+define void @f(ptr %sum) {
 entry:
   br label %for.cond
 
 for.cond:                                         ; preds = %for.cond, %entr
   %i1.0 = phi i32 [ 0, %entry ], [ %inc, %for.cond ]
-  %sum.reload = load i32, i32* %sum
+  %sum.reload = load i32, ptr %sum
   %mul = mul nsw i32 %i1.0, 3
   %add = add nsw i32 %sum.reload, %mul
   %inc = add nsw i32 %i1.0, 1
-  store i32 %add, i32* %sum
+  store i32 %add, ptr %sum
   %cmp = icmp slt i32 %i1.0, 100
   br i1 %cmp, label %for.cond, label %for.end
 

diff  --git a/polly/test/ScopInfo/reduction_two_identical_reads.ll b/polly/test/ScopInfo/reduction_two_identical_reads.ll
index a74b7556786be..19d45a5f4ea97 100644
--- a/polly/test/ScopInfo/reduction_two_identical_reads.ll
+++ b/polly/test/ScopInfo/reduction_two_identical_reads.ll
@@ -14,7 +14,7 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
 
-define void @f_one_load_case(i32* %A) {
+define void @f_one_load_case(ptr %A) {
 entry:
   br label %for.cond
 
@@ -24,11 +24,11 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp, %tmp
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i32 %i.0
-  store i32 %add, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i32 %i.0
+  store i32 %add, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -39,7 +39,7 @@ for.end:                                          ; preds = %for.cond
   ret void
 }
 
-define void @f_two_loads_case(i32* %A) {
+define void @f_two_loads_case(ptr %A) {
 entry:
   br label %for.cond
 
@@ -49,13 +49,13 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmp = load i32, i32* %arrayidx, align 4
-  %arrayidxCopy = getelementptr inbounds i32, i32* %A, i32 %i.0
-  %tmpCopy = load i32, i32* %arrayidxCopy, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmp = load i32, ptr %arrayidx, align 4
+  %arrayidxCopy = getelementptr inbounds i32, ptr %A, i32 %i.0
+  %tmpCopy = load i32, ptr %arrayidxCopy, align 4
   %add = add nsw i32 %tmp, %tmpCopy
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i32 %i.0
-  store i32 %add, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i32 %i.0
+  store i32 %add, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/redundant_parameter_constraint.ll b/polly/test/ScopInfo/redundant_parameter_constraint.ll
index 015b84fae9ed0..c9d912191eed7 100644
--- a/polly/test/ScopInfo/redundant_parameter_constraint.ll
+++ b/polly/test/ScopInfo/redundant_parameter_constraint.ll
@@ -12,7 +12,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @wraps(i32* %A, i32 %p, i16 signext %q, i8 signext %r1, i8 signext %r2) {
+define void @wraps(ptr %A, i32 %p, i16 signext %q, i8 signext %r1, i8 signext %r2) {
 entry:
   br label %for.cond
 
@@ -25,13 +25,13 @@ for.body:                                         ; preds = %for.cond
   %conv3 = sext i8 %r1 to i64
   %conv4 = sext i8 %r2 to i64
   %add = add nsw i64 %conv3, %conv4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add
+  %tmp = load i32, ptr %arrayidx, align 4
   %conv5 = sext i16 %q to i32
   %add6 = add nsw i32 %conv5, %p
   %idxprom7 = sext i32 %add6 to i64
-  %arrayidx8 = getelementptr inbounds i32, i32* %A, i64 %idxprom7
-  store i32 %tmp, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %A, i64 %idxprom7
+  store i32 %tmp, ptr %arrayidx8, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/region-with-instructions.ll b/polly/test/ScopInfo/region-with-instructions.ll
index 111a2e3c4270f..39d4a72a7814b 100644
--- a/polly/test/ScopInfo/region-with-instructions.ll
+++ b/polly/test/ScopInfo/region-with-instructions.ll
@@ -25,16 +25,16 @@
 ; CHECK:         MayWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK:             [tmp44, tmp9] -> { Stmt_bb48__TO__bb56[i0] -> MemRef_A[i0] };
 ; CHECK:         Instructions {
-; CHECK:               %tmp51 = load i64, i64* %tmp50, align 8
+; CHECK:               %tmp51 = load i64, ptr %tmp50, align 8
 ; CHECK:               %tmp52 = and i64 %tmp51, %tmp26
 ; CHECK:               %tmp53 = icmp eq i64 %tmp52, %tmp26
-; CHECK:               store i64 42, i64* %tmp50, align 8
+; CHECK:               store i64 42, ptr %tmp50, align 8
 ; CHECK:         }
 ; CHECK: }
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @quux(i32 %arg, i32 %arg1, i64* %A, i64 %tmp9, i64 %tmp24, i64 %tmp14, i64 %tmp22, i64 %tmp44) {
+define void @quux(i32 %arg, i32 %arg1, ptr %A, i64 %tmp9, i64 %tmp24, i64 %tmp14, i64 %tmp22, i64 %tmp44) {
 bb:
   %tmp26 = or i64 %tmp22, %tmp24
   br label %bb39
@@ -49,16 +49,16 @@ bb46:                                             ; preds = %bb39
 
 bb48:                                             ; preds = %bb56, %bb46
   %tmp49 = phi i64 [ 0, %bb46 ], [ %tmp57, %bb56 ]
-  %tmp50 = getelementptr inbounds i64, i64* %A, i64 %tmp49
-  %tmp51 = load i64, i64* %tmp50, align 8
+  %tmp50 = getelementptr inbounds i64, ptr %A, i64 %tmp49
+  %tmp51 = load i64, ptr %tmp50, align 8
   %tmp52 = and i64 %tmp51, %tmp26
   %tmp53 = icmp eq i64 %tmp52, %tmp26
-  store i64 42, i64* %tmp50, align 8
+  store i64 42, ptr %tmp50, align 8
   br i1 %tmp53, label %bb54, label %bb56
 
 bb54:                                             ; preds = %bb48
   %tmp55 = xor i64 %tmp51, %tmp47
-  store i64 %tmp55, i64* %tmp50, align 8
+  store i64 %tmp55, ptr %tmp50, align 8
   br label %bb56
 
 bb56:                                             ; preds = %bb54, %bb48

diff  --git a/polly/test/ScopInfo/remarks.ll b/polly/test/ScopInfo/remarks.ll
index 3f989c5cfe4a5..dcdeb58c7694f 100644
--- a/polly/test/ScopInfo/remarks.ll
+++ b/polly/test/ScopInfo/remarks.ll
@@ -41,13 +41,13 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @.str = private unnamed_addr constant [8 x i8] c"Printf!\00", align 1
 
-define void @valid(i32* %A, i32* %B, i32 %N, i32 %M, [100 x i32]* %C, i32 %Debug) #0 !dbg !4 {
+define void @valid(ptr %A, ptr %B, i32 %N, i32 %M, ptr %C, i32 %Debug) #0 !dbg !4 {
 entry:
-  call void @llvm.dbg.value(metadata i32* %A, i64 0, metadata !23, metadata !24), !dbg !25
-  call void @llvm.dbg.value(metadata i32* %B, i64 0, metadata !26, metadata !24), !dbg !27
+  call void @llvm.dbg.value(metadata ptr %A, i64 0, metadata !23, metadata !24), !dbg !25
+  call void @llvm.dbg.value(metadata ptr %B, i64 0, metadata !26, metadata !24), !dbg !27
   call void @llvm.dbg.value(metadata i32 %N, i64 0, metadata !28, metadata !24), !dbg !29
   call void @llvm.dbg.value(metadata i32 %M, i64 0, metadata !30, metadata !24), !dbg !31
-  call void @llvm.dbg.value(metadata [100 x i32]* %C, i64 0, metadata !32, metadata !24), !dbg !33
+  call void @llvm.dbg.value(metadata ptr %C, i64 0, metadata !32, metadata !24), !dbg !33
   call void @llvm.dbg.value(metadata i32 %Debug, i64 0, metadata !34, metadata !24), !dbg !35
   br label %entry.split
 
@@ -57,8 +57,7 @@ entry.split:
   br i1 %cmp, label %if.then, label %if.end, !dbg !39
 
 if.then:                                          ; preds = %entry
-  %arrayidx1 = getelementptr inbounds [100 x i32], [100 x i32]* %C, i64 0, i64 0, !dbg !40
-  store i32 0, i32* %arrayidx1, align 4, !dbg !41
+  store i32 0, ptr %C, align 4, !dbg !41
   br label %if.end, !dbg !40
 
 if.end:                                           ; preds = %if.then, %entry
@@ -84,16 +83,16 @@ for.cond.3:                                       ; preds = %for.inc, %for.body
 for.body.5:                                       ; preds = %for.cond.3
   %tmp8 = mul i64 %indvars.iv3, %M64, !dbg !59
   %tmp9 = add i64 %tmp8, %indvars.iv, !dbg !61
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i64 %tmp9, !dbg !62
-  %tmp10 = load i32, i32* %arrayidx7, align 4, !dbg !62
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i64 %tmp9, !dbg !62
+  %tmp10 = load i32, ptr %arrayidx7, align 4, !dbg !62
   %tmp11 = add i64 %indvars.iv3, %indvars.iv, !dbg !63
-  %arrayidx10 = getelementptr inbounds i32, i32* %B, i64 %tmp11, !dbg !64
-  %tmp12 = load i32, i32* %arrayidx10, align 4, !dbg !64
+  %arrayidx10 = getelementptr inbounds i32, ptr %B, i64 %tmp11, !dbg !64
+  %tmp12 = load i32, ptr %arrayidx10, align 4, !dbg !64
   %add11 = add i32 %tmp10, %tmp12, !dbg !65
-  %arrayidx15 = getelementptr inbounds [100 x i32], [100 x i32]* %C, i64 %indvars.iv3, i64 %indvars.iv, !dbg !66
-  %tmp13 = load i32, i32* %arrayidx15, align 4, !dbg !67
+  %arrayidx15 = getelementptr inbounds [100 x i32], ptr %C, i64 %indvars.iv3, i64 %indvars.iv, !dbg !66
+  %tmp13 = load i32, ptr %arrayidx15, align 4, !dbg !67
   %add16 = add i32 %tmp13, %add11, !dbg !67
-  store i32 %add16, i32* %arrayidx15, align 4, !dbg !67
+  store i32 %add16, ptr %arrayidx15, align 4, !dbg !67
   br label %for.inc, !dbg !68
 
 for.inc:                                          ; preds = %for.body.5
@@ -106,7 +105,7 @@ for.end:                                          ; preds = %for.cond.3
   br i1 %tobool, label %if.end.18, label %if.then.17, !dbg !72
 
 if.then.17:                                       ; preds = %for.end
-  %call = call i32 (i8*, ...) @printf(i8* nonnull getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0)) #3, !dbg !73
+  %call = call i32 (ptr, ...) @printf(ptr nonnull @.str) #3, !dbg !73
   br label %if.end.18, !dbg !73
 
 if.end.18:                                        ; preds = %for.end, %if.then.17
@@ -123,11 +122,11 @@ for.end.21:                                       ; preds = %for.cond
 
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-declare i32 @printf(i8*, ...) #2
+declare i32 @printf(ptr, ...) #2
 
-define void @invalid0(i32* %A) #0 !dbg !13 {
+define void @invalid0(ptr %A) #0 !dbg !13 {
 entry:
-  call void @llvm.dbg.value(metadata i32* %A, i64 0, metadata !77, metadata !24), !dbg !78
+  call void @llvm.dbg.value(metadata ptr %A, i64 0, metadata !77, metadata !24), !dbg !78
   call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !79, metadata !24), !dbg !81
   br label %for.cond, !dbg !82
 
@@ -146,12 +145,12 @@ for.cond.1:                                       ; preds = %for.inc, %for.body
   br i1 %exitcond, label %for.body.3, label %for.end, !dbg !90
 
 for.body.3:                                       ; preds = %for.cond.1
-  %tmp = load i32, i32* %A, align 4, !dbg !93
+  %tmp = load i32, ptr %A, align 4, !dbg !93
   %tobool = icmp eq i32 %tmp, 0, !dbg !93
   br i1 %tobool, label %if.end, label %if.then, !dbg !95
 
 if.then:                                          ; preds = %for.body.3
-  store i32 0, i32* %A, align 4, !dbg !96
+  store i32 0, ptr %A, align 4, !dbg !96
   br label %if.end, !dbg !97
 
 if.end:                                           ; preds = %for.body.3, %if.then

diff  --git a/polly/test/ScopInfo/required-invariant-loop-bounds.ll b/polly/test/ScopInfo/required-invariant-loop-bounds.ll
index cc6c5ac7eafa1..248acbea6e68f 100644
--- a/polly/test/ScopInfo/required-invariant-loop-bounds.ll
+++ b/polly/test/ScopInfo/required-invariant-loop-bounds.ll
@@ -31,7 +31,7 @@ entry:
 
 for.cond:                                         ; preds = %for.inc.6, %entry
   %i.0 = phi i64 [ 0, %entry ], [ %inc7, %for.inc.6 ]
-  %bounds0 = load i64, i64* getelementptr inbounds ([2 x i64], [2 x i64]* @bounds, i64 0, i64 0), align 16
+  %bounds0 = load i64, ptr @bounds, align 16
   %cmp = icmp sgt i64 %i.0, %bounds0
   br i1 %cmp, label %for.end.8, label %for.body
 
@@ -40,17 +40,17 @@ for.body:                                         ; preds = %for.cond
 
 for.cond.1:                                       ; preds = %for.inc, %for.body
   %j.0 = phi i64 [ 0, %for.body ], [ %inc, %for.inc ]
-  %bounds1 = load i64, i64* getelementptr inbounds ([2 x i64], [2 x i64]* @bounds, i64 0, i64 1), align 8
+  %bounds1 = load i64, ptr getelementptr inbounds ([2 x i64], ptr @bounds, i64 0, i64 1), align 8
   %cmp2 = icmp sgt i64 %j.0, %bounds1
   br i1 %cmp2, label %for.end, label %for.body.3
 
 for.body.3:                                       ; preds = %for.cond.1
   %add = add nsw i64 %i.0, %j.0
   %conv = sitofp i64 %add to double
-  %arrayidx4 = getelementptr inbounds [1000 x [1000 x double]], [1000 x [1000 x double]]* @A, i64 0, i64 %i.0, i64 %j.0
-  %tmp2 = load double, double* %arrayidx4, align 8
+  %arrayidx4 = getelementptr inbounds [1000 x [1000 x double]], ptr @A, i64 0, i64 %i.0, i64 %j.0
+  %tmp2 = load double, ptr %arrayidx4, align 8
   %add5 = fadd double %tmp2, %conv
-  store double %add5, double* %arrayidx4, align 8
+  store double %add5, ptr %arrayidx4, align 8
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.3

diff  --git a/polly/test/ScopInfo/restriction_in_dead_block.ll b/polly/test/ScopInfo/restriction_in_dead_block.ll
index df8c9cb84835c..81d9b96be4191 100644
--- a/polly/test/ScopInfo/restriction_in_dead_block.ll
+++ b/polly/test/ScopInfo/restriction_in_dead_block.ll
@@ -17,7 +17,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i8* %A, i8 signext %N) {
+define void @f(ptr %A, i8 signext %N) {
 entry:
   br label %for.cond
 
@@ -37,13 +37,13 @@ if.then:                                           ; preds = %for.body
   br i1 %cmp7, label %if.then9, label %if.end10
 
 if.then9:                                         ; preds = %if.end
-  %arrayidx = getelementptr inbounds i8, i8* %A, i8 %indvars.iv
-  store i8 1, i8* %arrayidx, align 1
+  %arrayidx = getelementptr inbounds i8, ptr %A, i8 %indvars.iv
+  store i8 1, ptr %arrayidx, align 1
   br label %if.end10
 
 if.end10:                                         ; preds = %if.then9, %if.end
-  %arrayidx12 = getelementptr inbounds i8, i8* %A, i8 %indvars.iv
-  store i8 0, i8* %arrayidx12, align 1
+  %arrayidx12 = getelementptr inbounds i8, ptr %A, i8 %indvars.iv
+  store i8 0, ptr %arrayidx12, align 1
   br label %for.inc
 
 for.inc:                                          ; preds = %if.end10, %if.then

diff  --git a/polly/test/ScopInfo/run-time-check-many-array-disjuncts.ll b/polly/test/ScopInfo/run-time-check-many-array-disjuncts.ll
index 857853d4a094b..d36da2b2becfa 100644
--- a/polly/test/ScopInfo/run-time-check-many-array-disjuncts.ll
+++ b/polly/test/ScopInfo/run-time-check-many-array-disjuncts.ll
@@ -12,47 +12,45 @@
 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
 target triple = "aarch64--linux-android"
 
-%0 = type { i8*, i64, i64, i64, i64, i64, i64 }
+%0 = type { ptr, i64, i64, i64, i64, i64, i64 }
 
-define void @_Z1fR1SS0_Ph(%0* nocapture readonly dereferenceable(56) %arg, %0* nocapture readonly dereferenceable(56) %arg1, i8* nocapture readonly %arg2) {
+define void @_Z1fR1SS0_Ph(ptr nocapture readonly dereferenceable(56) %arg, ptr nocapture readonly dereferenceable(56) %arg1, ptr nocapture readonly %arg2) {
 bb:
-  %tmp = getelementptr inbounds %0, %0* %arg1, i64 0, i32 1
-  %tmp3 = getelementptr inbounds %0, %0* %arg, i64 0, i32 0
-  %tmp4 = load i8*, i8** %tmp3, align 8
-  %tmp5 = getelementptr inbounds %0, %0* %arg, i64 0, i32 4
-  %tmp6 = load i64, i64* %tmp5, align 8
-  %tmp7 = getelementptr inbounds %0, %0* %arg, i64 0, i32 1
-  %tmp8 = load i64, i64* %tmp7, align 8
+  %tmp = getelementptr inbounds %0, ptr %arg1, i64 0, i32 1
+  %tmp4 = load ptr, ptr %arg, align 8
+  %tmp5 = getelementptr inbounds %0, ptr %arg, i64 0, i32 4
+  %tmp6 = load i64, ptr %tmp5, align 8
+  %tmp7 = getelementptr inbounds %0, ptr %arg, i64 0, i32 1
+  %tmp8 = load i64, ptr %tmp7, align 8
   %tmp9 = mul i64 %tmp8, %tmp6
-  %tmp10 = getelementptr inbounds i8, i8* %tmp4, i64 %tmp9
-  %tmp11 = getelementptr inbounds %0, %0* %arg, i64 0, i32 3
-  %tmp12 = load i64, i64* %tmp11, align 8
-  %tmp13 = getelementptr inbounds i8, i8* %tmp10, i64 %tmp12
-  %tmp14 = getelementptr inbounds %0, %0* %arg, i64 0, i32 6
-  %tmp15 = load i64, i64* %tmp14, align 8
+  %tmp10 = getelementptr inbounds i8, ptr %tmp4, i64 %tmp9
+  %tmp11 = getelementptr inbounds %0, ptr %arg, i64 0, i32 3
+  %tmp12 = load i64, ptr %tmp11, align 8
+  %tmp13 = getelementptr inbounds i8, ptr %tmp10, i64 %tmp12
+  %tmp14 = getelementptr inbounds %0, ptr %arg, i64 0, i32 6
+  %tmp15 = load i64, ptr %tmp14, align 8
   %tmp16 = add i64 %tmp15, 1
   %tmp17 = icmp eq i64 %tmp16, %tmp6
   br i1 %tmp17, label %bb51, label %bb18
 
 bb18:                                             ; preds = %bb
-  %tmp19 = getelementptr inbounds %0, %0* %arg, i64 0, i32 2
-  %tmp20 = load i64, i64* %tmp19, align 8
+  %tmp19 = getelementptr inbounds %0, ptr %arg, i64 0, i32 2
+  %tmp20 = load i64, ptr %tmp19, align 8
   %tmp21 = mul i64 %tmp20, %tmp8
-  %tmp22 = getelementptr inbounds i8, i8* %tmp13, i64 %tmp21
-  %tmp23 = getelementptr inbounds i8, i8* %tmp22, i64 %tmp9
-  %tmp24 = getelementptr inbounds i8, i8* %tmp23, i64 %tmp12
-  %tmp25 = bitcast %0* %arg1 to i16**
-  %tmp26 = load i16*, i16** %tmp25, align 8
-  %tmp27 = load i64, i64* %tmp, align 8
-  %tmp28 = getelementptr inbounds %0, %0* %arg1, i64 0, i32 4
-  %tmp29 = load i64, i64* %tmp28, align 8
+  %tmp22 = getelementptr inbounds i8, ptr %tmp13, i64 %tmp21
+  %tmp23 = getelementptr inbounds i8, ptr %tmp22, i64 %tmp9
+  %tmp24 = getelementptr inbounds i8, ptr %tmp23, i64 %tmp12
+  %tmp26 = load ptr, ptr %arg1, align 8
+  %tmp27 = load i64, ptr %tmp, align 8
+  %tmp28 = getelementptr inbounds %0, ptr %arg1, i64 0, i32 4
+  %tmp29 = load i64, ptr %tmp28, align 8
   %tmp30 = mul i64 %tmp27, %tmp29
-  %tmp31 = getelementptr inbounds i16, i16* %tmp26, i64 %tmp30
-  %tmp32 = getelementptr inbounds %0, %0* %arg1, i64 0, i32 3
-  %tmp33 = load i64, i64* %tmp32, align 8
-  %tmp34 = getelementptr inbounds i16, i16* %tmp31, i64 %tmp33
-  %tmp35 = getelementptr inbounds %0, %0* %arg, i64 0, i32 5
-  %tmp36 = load i64, i64* %tmp35, align 8
+  %tmp31 = getelementptr inbounds i16, ptr %tmp26, i64 %tmp30
+  %tmp32 = getelementptr inbounds %0, ptr %arg1, i64 0, i32 3
+  %tmp33 = load i64, ptr %tmp32, align 8
+  %tmp34 = getelementptr inbounds i16, ptr %tmp31, i64 %tmp33
+  %tmp35 = getelementptr inbounds %0, ptr %arg, i64 0, i32 5
+  %tmp36 = load i64, ptr %tmp35, align 8
   br label %bb37
 
 bb37:                                             ; preds = %bb57, %bb18
@@ -62,9 +60,9 @@ bb37:                                             ; preds = %bb57, %bb18
   %tmp41 = phi i64 [ %tmp8, %bb18 ], [ %tmp61, %bb57 ]
   %tmp42 = phi i64 [ %tmp12, %bb18 ], [ %tmp62, %bb57 ]
   %tmp43 = phi i64 [ %tmp36, %bb18 ], [ %tmp63, %bb57 ]
-  %tmp44 = phi i16* [ %tmp34, %bb18 ], [ %tmp69, %bb57 ]
-  %tmp45 = phi i8* [ %tmp13, %bb18 ], [ %tmp64, %bb57 ]
-  %tmp46 = phi i8* [ %tmp24, %bb18 ], [ %tmp68, %bb57 ]
+  %tmp44 = phi ptr [ %tmp34, %bb18 ], [ %tmp69, %bb57 ]
+  %tmp45 = phi ptr [ %tmp13, %bb18 ], [ %tmp64, %bb57 ]
+  %tmp46 = phi ptr [ %tmp24, %bb18 ], [ %tmp68, %bb57 ]
   %tmp47 = phi i64 [ 0, %bb18 ], [ %tmp70, %bb57 ]
   %tmp48 = add i64 %tmp43, 1
   %tmp49 = sub i64 %tmp48, %tmp42
@@ -75,10 +73,10 @@ bb51:                                             ; preds = %bb57, %bb
   ret void
 
 bb52:                                             ; preds = %bb176
-  %tmp53 = load i64, i64* %tmp7, align 8
-  %tmp54 = load i64, i64* %tmp, align 8
-  %tmp55 = load i64, i64* %tmp14, align 8
-  %tmp56 = load i64, i64* %tmp5, align 8
+  %tmp53 = load i64, ptr %tmp7, align 8
+  %tmp54 = load i64, ptr %tmp, align 8
+  %tmp55 = load i64, ptr %tmp14, align 8
+  %tmp56 = load i64, ptr %tmp5, align 8
   br label %bb57
 
 bb57:                                             ; preds = %bb52, %bb37
@@ -88,12 +86,12 @@ bb57:                                             ; preds = %bb52, %bb37
   %tmp61 = phi i64 [ %tmp53, %bb52 ], [ %tmp41, %bb37 ]
   %tmp62 = phi i64 [ %tmp179, %bb52 ], [ %tmp42, %bb37 ]
   %tmp63 = phi i64 [ %tmp178, %bb52 ], [ %tmp43, %bb37 ]
-  %tmp64 = getelementptr inbounds i8, i8* %tmp45, i64 %tmp61
+  %tmp64 = getelementptr inbounds i8, ptr %tmp45, i64 %tmp61
   %tmp65 = and i64 %tmp47, 1
   %tmp66 = icmp eq i64 %tmp65, 0
-  %tmp67 = getelementptr inbounds i8, i8* %tmp46, i64 %tmp61
-  %tmp68 = select i1 %tmp66, i8* %tmp46, i8* %tmp67
-  %tmp69 = getelementptr inbounds i16, i16* %tmp44, i64 %tmp60
+  %tmp67 = getelementptr inbounds i8, ptr %tmp46, i64 %tmp61
+  %tmp68 = select i1 %tmp66, ptr %tmp46, ptr %tmp67
+  %tmp69 = getelementptr inbounds i16, ptr %tmp44, i64 %tmp60
   %tmp70 = add i64 %tmp47, 1
   %tmp71 = add i64 %tmp59, 1
   %tmp72 = sub i64 %tmp71, %tmp58
@@ -103,18 +101,18 @@ bb57:                                             ; preds = %bb52, %bb37
 bb74:                                             ; preds = %bb176, %bb37
   %tmp75 = phi i64 [ %tmp181, %bb176 ], [ %tmp49, %bb37 ]
   %tmp76 = phi i64 [ %tmp177, %bb176 ], [ 0, %bb37 ]
-  %tmp77 = getelementptr inbounds i8, i8* %tmp45, i64 %tmp76
-  %tmp78 = load i8, i8* %tmp77, align 1
+  %tmp77 = getelementptr inbounds i8, ptr %tmp45, i64 %tmp76
+  %tmp78 = load i8, ptr %tmp77, align 1
   %tmp79 = zext i8 %tmp78 to i32
   %tmp80 = or i64 %tmp76, 1
-  %tmp81 = getelementptr inbounds i8, i8* %tmp45, i64 %tmp80
-  %tmp82 = load i8, i8* %tmp81, align 1
+  %tmp81 = getelementptr inbounds i8, ptr %tmp45, i64 %tmp80
+  %tmp82 = load i8, ptr %tmp81, align 1
   %tmp83 = zext i8 %tmp82 to i32
-  %tmp84 = getelementptr inbounds i8, i8* %tmp46, i64 %tmp76
-  %tmp85 = load i8, i8* %tmp84, align 1
+  %tmp84 = getelementptr inbounds i8, ptr %tmp46, i64 %tmp76
+  %tmp85 = load i8, ptr %tmp84, align 1
   %tmp86 = zext i8 %tmp85 to i32
-  %tmp87 = getelementptr inbounds i8, i8* %tmp46, i64 %tmp80
-  %tmp88 = load i8, i8* %tmp87, align 1
+  %tmp87 = getelementptr inbounds i8, ptr %tmp46, i64 %tmp80
+  %tmp88 = load i8, ptr %tmp87, align 1
   %tmp89 = zext i8 %tmp88 to i32
   %tmp90 = mul nuw nsw i32 %tmp86, 517
   %tmp91 = add nsw i32 %tmp90, -66176
@@ -163,21 +161,21 @@ bb120:                                            ; preds = %bb109
 
 bb124:                                            ; preds = %bb120
   %tmp125 = sext i32 %tmp101 to i64
-  %tmp126 = getelementptr inbounds i8, i8* %arg2, i64 %tmp125
-  %tmp127 = load i8, i8* %tmp126, align 1
+  %tmp126 = getelementptr inbounds i8, ptr %arg2, i64 %tmp125
+  %tmp127 = load i8, ptr %tmp126, align 1
   %tmp128 = zext i8 %tmp127 to i32
   %tmp129 = lshr i32 %tmp128, 3
   %tmp130 = shl nuw nsw i32 %tmp129, 11
   %tmp131 = sext i32 %tmp111 to i64
-  %tmp132 = getelementptr inbounds i8, i8* %arg2, i64 %tmp131
-  %tmp133 = load i8, i8* %tmp132, align 1
+  %tmp132 = getelementptr inbounds i8, ptr %arg2, i64 %tmp131
+  %tmp133 = load i8, ptr %tmp132, align 1
   %tmp134 = zext i8 %tmp133 to i32
   %tmp135 = lshr i32 %tmp134, 2
   %tmp136 = shl nuw nsw i32 %tmp135, 5
   %tmp137 = or i32 %tmp136, %tmp130
   %tmp138 = sext i32 %tmp113 to i64
-  %tmp139 = getelementptr inbounds i8, i8* %arg2, i64 %tmp138
-  %tmp140 = load i8, i8* %tmp139, align 1
+  %tmp139 = getelementptr inbounds i8, ptr %arg2, i64 %tmp138
+  %tmp140 = load i8, ptr %tmp139, align 1
   %tmp141 = zext i8 %tmp140 to i32
   %tmp142 = lshr i32 %tmp141, 3
   %tmp143 = or i32 %tmp137, %tmp142
@@ -188,16 +186,16 @@ bb145:                                            ; preds = %bb124
   %tmp146 = add nsw i32 %tmp97, %tmp115
   %tmp147 = sdiv i32 %tmp146, 256
   %tmp148 = sext i32 %tmp147 to i64
-  %tmp149 = getelementptr inbounds i8, i8* %arg2, i64 %tmp148
-  %tmp150 = load i8, i8* %tmp149, align 1
+  %tmp149 = getelementptr inbounds i8, ptr %arg2, i64 %tmp148
+  %tmp150 = load i8, ptr %tmp149, align 1
   %tmp151 = extractvalue { i32, i1 } %tmp122, 0
   %tmp152 = sdiv i32 %tmp151, 256
   %tmp153 = sext i32 %tmp152 to i64
-  %tmp154 = getelementptr inbounds i8, i8* %arg2, i64 %tmp153
-  %tmp155 = load i8, i8* %tmp154, align 1
+  %tmp154 = getelementptr inbounds i8, ptr %arg2, i64 %tmp153
+  %tmp155 = load i8, ptr %tmp154, align 1
   %tmp156 = sext i32 %tmp117 to i64
-  %tmp157 = getelementptr inbounds i8, i8* %arg2, i64 %tmp156
-  %tmp158 = load i8, i8* %tmp157, align 1
+  %tmp157 = getelementptr inbounds i8, ptr %arg2, i64 %tmp156
+  %tmp158 = load i8, ptr %tmp157, align 1
   %tmp159 = zext i8 %tmp158 to i32
   %tmp160 = lshr i32 %tmp159, 3
   %tmp161 = shl nuw nsw i32 %tmp160, 11
@@ -210,21 +208,20 @@ bb145:                                            ; preds = %bb124
   %tmp168 = or i32 %tmp167, %tmp161
   %tmp169 = shl nuw i32 %tmp168, 16
   %tmp170 = or i32 %tmp169, %tmp143
-  %tmp171 = getelementptr inbounds i16, i16* %tmp44, i64 %tmp76
-  %tmp172 = bitcast i16* %tmp171 to i32*
-  store i32 %tmp170, i32* %tmp172, align 4
+  %tmp171 = getelementptr inbounds i16, ptr %tmp44, i64 %tmp76
+  store i32 %tmp170, ptr %tmp171, align 4
   br label %bb176
 
 bb173:                                            ; preds = %bb124
   %tmp174 = trunc i32 %tmp143 to i16
-  %tmp175 = getelementptr inbounds i16, i16* %tmp44, i64 %tmp76
-  store i16 %tmp174, i16* %tmp175, align 2
+  %tmp175 = getelementptr inbounds i16, ptr %tmp44, i64 %tmp76
+  store i16 %tmp174, ptr %tmp175, align 2
   br label %bb176
 
 bb176:                                            ; preds = %bb173, %bb145
   %tmp177 = add i64 %tmp76, 2
-  %tmp178 = load i64, i64* %tmp35, align 8
-  %tmp179 = load i64, i64* %tmp11, align 8
+  %tmp178 = load i64, ptr %tmp35, align 8
+  %tmp179 = load i64, ptr %tmp11, align 8
   %tmp180 = add i64 %tmp178, 1
   %tmp181 = sub i64 %tmp180, %tmp179
   %tmp182 = icmp ult i64 %tmp177, %tmp181

diff  --git a/polly/test/ScopInfo/run-time-check-many-parameters.ll b/polly/test/ScopInfo/run-time-check-many-parameters.ll
index 55f5ea5499954..30f8d5fff34cc 100644
--- a/polly/test/ScopInfo/run-time-check-many-parameters.ll
+++ b/polly/test/ScopInfo/run-time-check-many-parameters.ll
@@ -62,7 +62,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @foo(float* %A, float* %B, i64 %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7, i64 %p8, i64 %p9, i64 %p10, i64 %p11, i64 %p12) #0 {
+define void @foo(ptr %A, ptr %B, i64 %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7, i64 %p8, i64 %p9, i64 %p10, i64 %p11, i64 %p12) #0 {
 entry:
   br label %entry.split
 
@@ -72,54 +72,54 @@ entry.split:                                      ; preds = %entry
 for.body:                                         ; preds = %entry.split, %for.body
   %i.01 = phi i64 [ 0, %entry.split ], [ %tmp25, %for.body ]
   %tmp = add i64 %p1, %i.01
-  %arrayidx = getelementptr float, float* %B, i64 %tmp
+  %arrayidx = getelementptr float, ptr %B, i64 %tmp
   %tmp2 = add i64 %p2, %i.01
-  %arrayidx2 = getelementptr float, float* %B, i64 %tmp2
+  %arrayidx2 = getelementptr float, ptr %B, i64 %tmp2
   %tmp3 = add i64 %p3, %i.01
-  %arrayidx5 = getelementptr float, float* %B, i64 %tmp3
+  %arrayidx5 = getelementptr float, ptr %B, i64 %tmp3
   %tmp4 = add i64 %p4, %i.01
-  %arrayidx8 = getelementptr float, float* %B, i64 %tmp4
+  %arrayidx8 = getelementptr float, ptr %B, i64 %tmp4
   %tmp5 = add i64 %p5, %i.01
-  %arrayidx11 = getelementptr float, float* %B, i64 %tmp5
+  %arrayidx11 = getelementptr float, ptr %B, i64 %tmp5
   %tmp6 = add i64 %p6, %i.01
-  %arrayidx14 = getelementptr float, float* %B, i64 %tmp6
+  %arrayidx14 = getelementptr float, ptr %B, i64 %tmp6
   %tmp7 = add i64 %p7, %i.01
-  %arrayidx17 = getelementptr float, float* %B, i64 %tmp7
+  %arrayidx17 = getelementptr float, ptr %B, i64 %tmp7
   %tmp8 = add i64 %p8, %i.01
-  %arrayidx20 = getelementptr float, float* %B, i64 %tmp8
+  %arrayidx20 = getelementptr float, ptr %B, i64 %tmp8
   %tmp9 = add i64 %p9, %i.01
-  %arrayidx23 = getelementptr float, float* %B, i64 %tmp9
+  %arrayidx23 = getelementptr float, ptr %B, i64 %tmp9
   %tmp10 = add i64 %p10, %i.01
-  %arrayidx26 = getelementptr float, float* %B, i64 %tmp10
+  %arrayidx26 = getelementptr float, ptr %B, i64 %tmp10
   %tmp11 = add i64 %p11, %i.01
-  %arrayidx29 = getelementptr float, float* %B, i64 %tmp11
+  %arrayidx29 = getelementptr float, ptr %B, i64 %tmp11
   %tmp12 = add i64 %p12, %i.01
-  %arrayidx32 = getelementptr float, float* %B, i64 %tmp12
-  %arrayidx34 = getelementptr float, float* %A, i64 %i.01
-  %tmp13 = load float, float* %arrayidx, align 4
-  %tmp14 = load float, float* %arrayidx2, align 4
+  %arrayidx32 = getelementptr float, ptr %B, i64 %tmp12
+  %arrayidx34 = getelementptr float, ptr %A, i64 %i.01
+  %tmp13 = load float, ptr %arrayidx, align 4
+  %tmp14 = load float, ptr %arrayidx2, align 4
   %add3 = fadd float %tmp13, %tmp14
-  %tmp15 = load float, float* %arrayidx5, align 4
+  %tmp15 = load float, ptr %arrayidx5, align 4
   %add6 = fadd float %add3, %tmp15
-  %tmp16 = load float, float* %arrayidx8, align 4
+  %tmp16 = load float, ptr %arrayidx8, align 4
   %add9 = fadd float %add6, %tmp16
-  %tmp17 = load float, float* %arrayidx11, align 4
+  %tmp17 = load float, ptr %arrayidx11, align 4
   %add12 = fadd float %add9, %tmp17
-  %tmp18 = load float, float* %arrayidx14, align 4
+  %tmp18 = load float, ptr %arrayidx14, align 4
   %add15 = fadd float %add12, %tmp18
-  %tmp19 = load float, float* %arrayidx17, align 4
+  %tmp19 = load float, ptr %arrayidx17, align 4
   %add18 = fadd float %add15, %tmp19
-  %tmp20 = load float, float* %arrayidx20, align 4
+  %tmp20 = load float, ptr %arrayidx20, align 4
   %add21 = fadd float %add18, %tmp20
-  %tmp21 = load float, float* %arrayidx23, align 4
+  %tmp21 = load float, ptr %arrayidx23, align 4
   %add24 = fadd float %add21, %tmp21
-  %tmp22 = load float, float* %arrayidx26, align 4
+  %tmp22 = load float, ptr %arrayidx26, align 4
   %add27 = fadd float %add24, %tmp22
-  %tmp23 = load float, float* %arrayidx29, align 4
+  %tmp23 = load float, ptr %arrayidx29, align 4
   %add30 = fadd float %add27, %tmp23
-  %tmp24 = load float, float* %arrayidx32, align 4
+  %tmp24 = load float, ptr %arrayidx32, align 4
   %add33 = fadd float %add30, %tmp24
-  store float %add33, float* %arrayidx34, align 4
+  store float %add33, ptr %arrayidx34, align 4
   %tmp25 = add nsw i64 %i.01, 1
   %exitcond = icmp ne i64 %tmp25, 100
   br i1 %exitcond, label %for.body, label %for.end

diff  --git a/polly/test/ScopInfo/run-time-check-many-piecewise-aliasing.ll b/polly/test/ScopInfo/run-time-check-many-piecewise-aliasing.ll
index 81c196e3917e9..487c803bba98f 100644
--- a/polly/test/ScopInfo/run-time-check-many-piecewise-aliasing.ll
+++ b/polly/test/ScopInfo/run-time-check-many-piecewise-aliasing.ll
@@ -10,7 +10,7 @@
 ; CHECK: Function: func
 ; CHECK-NEXT: Region: %for---%return
 
-define void @func(i64 %n, double* nonnull %A, double * nonnull %B, i64 %d) {
+define void @func(i64 %n, ptr nonnull %A, ptr nonnull %B, i64 %d) {
 entry:
 	  br label %for
 for:
@@ -91,10 +91,10 @@ body:
       %add5.i32.i = add nsw i64 %mul.i23.i, %mul4.i31.i
       %idxprom = add nsw i64 %add7.i, %add5.i32.i
 
-      %A_idx = getelementptr inbounds double, double* %A, i64 %idxprom
-      %val = load double, double* %A_idx
-      %B_idx = getelementptr inbounds double, double* %B, i64 %j
-      store double %val, double* %B_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i64 %idxprom
+      %val = load double, ptr %A_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i64 %j
+      store double %val, ptr %B_idx
       br label %inc
 
 inc:

diff  --git a/polly/test/ScopInfo/run-time-check-read-only-arrays.ll b/polly/test/ScopInfo/run-time-check-read-only-arrays.ll
index d2a2c6312da71..d590aaf00ddbd 100644
--- a/polly/test/ScopInfo/run-time-check-read-only-arrays.ll
+++ b/polly/test/ScopInfo/run-time-check-read-only-arrays.ll
@@ -11,19 +11,19 @@
 ; read-only arrays.
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo(float* %A, float* %B, float* %C, i64 %N) {
+define void @foo(ptr %A, ptr %B, ptr %C, i64 %N) {
 entry:
   br label %for.body
 
 for.body:
   %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %for.body ]
-  %arrayidx.A = getelementptr float, float* %A, i64 %indvar
-  %arrayidx.B = getelementptr float, float* %B, i64 %indvar
-  %arrayidx.C = getelementptr float, float* %C, i64 %indvar
-  %val.A = load float, float* %arrayidx.A
-  %val.B = load float, float* %arrayidx.B
+  %arrayidx.A = getelementptr float, ptr %A, i64 %indvar
+  %arrayidx.B = getelementptr float, ptr %B, i64 %indvar
+  %arrayidx.C = getelementptr float, ptr %C, i64 %indvar
+  %val.A = load float, ptr %arrayidx.A
+  %val.B = load float, ptr %arrayidx.B
   %add = fadd float %val.A, %val.B
-  store float %add, float* %arrayidx.C
+  store float %add, ptr %arrayidx.C
   %indvar.next = add nsw i64 %indvar, 1
   %exitcond = icmp ne i64 %indvar.next, %N
   br i1 %exitcond, label %for.body, label %for.end

diff  --git a/polly/test/ScopInfo/same-base-address-scalar-and-array.ll b/polly/test/ScopInfo/same-base-address-scalar-and-array.ll
index 7902133c3448e..a5f353e7ad2ad 100644
--- a/polly/test/ScopInfo/same-base-address-scalar-and-array.ll
+++ b/polly/test/ScopInfo/same-base-address-scalar-and-array.ll
@@ -4,14 +4,14 @@
 ; as it is used as a memory base pointer (%0) but also as a scalar (%out.addr.0.lcssa).
 ;
 ; CHECK:         Arrays {
-; CHECK-NEXT:        float* MemRef_out_addr_0_lcssa; // Element size 8
+; CHECK-NEXT:        ptr MemRef_out_addr_0_lcssa; // Element size 8
 ; CHECK-NEXT:        float MemRef_out[*]; // Element size 4
 ; CHECK-NEXT:    }
 ;
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind ssp uwtable
-define void @ff_celp_lp_synthesis_filterf(float* %out) #0 {
+define void @ff_celp_lp_synthesis_filterf(ptr %out) #0 {
 entry:
   br label %entry.split
 
@@ -19,11 +19,11 @@ entry.split:                                      ; preds = %entry
   br i1 false, label %for.end.97, label %for.body.lr.ph
 
 for.body.lr.ph:                                   ; preds = %entry.split
-  %arrayidx13 = getelementptr inbounds float, float* %out, i64 -3
-  %0 = load float, float* %arrayidx13, align 4
+  %arrayidx13 = getelementptr inbounds float, ptr %out, i64 -3
+  %0 = load float, ptr %arrayidx13, align 4
   br label %for.end.97
 
 for.end.97:                                       ; preds = %for.cond.for.end.97_crit_edge, %entry.split
-  %out.addr.0.lcssa = phi float* [ undef, %for.body.lr.ph ], [ %out, %entry.split ]
+  %out.addr.0.lcssa = phi ptr [ undef, %for.body.lr.ph ], [ %out, %entry.split ]
   ret void
 }

diff  --git a/polly/test/ScopInfo/scalar.ll b/polly/test/ScopInfo/scalar.ll
index 2b2c227b6584d..c38eaa853b9bf 100644
--- a/polly/test/ScopInfo/scalar.ll
+++ b/polly/test/ScopInfo/scalar.ll
@@ -2,7 +2,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"
 
-define void @f(i64* %a, i64 %N) {
+define void @f(ptr %a, i64 %N) {
 entry:
   br label %for
 
@@ -11,13 +11,13 @@ for:
   br label %S1
 
 S1:
-  %scevgep1 = getelementptr i64, i64* %a, i64 %indvar
-  %val = load i64, i64* %scevgep1, align 8
+  %scevgep1 = getelementptr i64, ptr %a, i64 %indvar
+  %val = load i64, ptr %scevgep1, align 8
   br label %S2
 
 S2:
-  %scevgep2 = getelementptr i64, i64* %a, i64 %indvar
-  store i64 %val, i64* %scevgep2, align 8
+  %scevgep2 = getelementptr i64, ptr %a, i64 %indvar
+  store i64 %val, ptr %scevgep2, align 8
   br label %for.backedge
 
 for.backedge:

diff  --git a/polly/test/ScopInfo/scalar_dependence_cond_br.ll b/polly/test/ScopInfo/scalar_dependence_cond_br.ll
index 913174425185b..3303bfb7c6c5d 100644
--- a/polly/test/ScopInfo/scalar_dependence_cond_br.ll
+++ b/polly/test/ScopInfo/scalar_dependence_cond_br.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i64 %c) {
+define void @f(ptr %A, i64 %c) {
 entry:
   br label %for.cond
 
@@ -29,10 +29,10 @@ for.body:                                         ; preds = %for.cond
   br i1 %cmp1, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body

diff  --git a/polly/test/ScopInfo/scalar_to_array.ll b/polly/test/ScopInfo/scalar_to_array.ll
index cb2b7e9f38c37..5c275108602a3 100644
--- a/polly/test/ScopInfo/scalar_to_array.ll
+++ b/polly/test/ScopInfo/scalar_to_array.ll
@@ -45,9 +45,9 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %return
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
+  %arrayidx = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
   %float = uitofp i64 %indvar to float
-  store float %float, float* %arrayidx
+  store float %float, ptr %arrayidx
   br label %for.inc
 ; CHECK:     Stmt_for_body
 ; CHECK-NOT:     ReadAccess
@@ -76,8 +76,8 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body.a, label %return
 
 for.body.a:                                       ; preds = %for.cond
-  %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
-  %scalar = load float, float* %arrayidx
+  %arrayidx = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
+  %scalar = load float, ptr %arrayidx
   br label %for.body.b
 ; CHECK:      Stmt_for_body_a
 ; CHECK:          ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
@@ -86,10 +86,10 @@ for.body.a:                                       ; preds = %for.cond
 ; CHECK-NEXT:         { Stmt_for_body_a[i0] -> MemRef_scalar[] };
 
 for.body.b:                                       ; preds = %for.body.a
-  %arrayidx2 = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
+  %arrayidx2 = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
   %float = uitofp i64 %indvar to float
   %sum = fadd float %scalar, %float
-  store float %sum, float* %arrayidx2
+  store float %sum, ptr %arrayidx2
   br label %for.inc
 ; CHECK:      Stmt_for_body_b
 ; CHECK:          ReadAccess :=       [Reduction Type: NONE] [Scalar: 1]
@@ -125,9 +125,9 @@ for.head:                                         ; preds = %for.inc, %entry
   br label %for.body
 
 for.body:                                         ; preds = %for.head
-  %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
-  %scalar = load float, float* %arrayidx
-  store float %scalar, float* %scalar.s2a
+  %arrayidx = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
+  %scalar = load float, ptr %arrayidx
+  store float %scalar, ptr %scalar.s2a
 ; Escaped uses are still required to be rewritten to stack variable.
 ; CHECK:      Stmt_for_body
 ; CHECK:          ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
@@ -142,7 +142,7 @@ for.inc:                                          ; preds = %for.body
   br i1 %exitcond, label %for.head, label %for.after
 
 for.after:                                        ; preds = %for.inc
-  %scalar.loadoutside = load float, float* %scalar.s2a
+  %scalar.loadoutside = load float, ptr %scalar.s2a
   fence seq_cst
   %return_value = fptosi float %scalar.loadoutside to i32
   br label %return
@@ -176,8 +176,8 @@ for.cond:                                         ; preds = %for.inc, %preheader
   br i1 %exitcond, label %for.body, label %return
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
-  store float %scalar, float* %arrayidx
+  %arrayidx = getelementptr [1024 x float], ptr @A, i64 0, i64 %indvar
+  store float %scalar, ptr %arrayidx
   br label %for.inc
 ; CHECK:      Stmt_for_body
 ; CHECK:          MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]

diff  --git a/polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll b/polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll
index f17c40ee04150..fc7a1bfc3d5e5 100644
--- a/polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll
+++ b/polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll
@@ -9,7 +9,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 ; Function Attrs: nounwind uwtable
-define void @cfft2(i32 %n, double* %A) local_unnamed_addr #0 {
+define void @cfft2(i32 %n, ptr %A) local_unnamed_addr #0 {
 entry:
   br i1 true, label %for.body.lr.ph, label %for.end
 
@@ -38,7 +38,7 @@ for.body.i58.us:                                  ; preds = %for.body.i58.us, %f
   br i1 false, label %for.inc, label %for.body.i58.us
 
 for.body.i58:                                     ; preds = %for.body.i58, %for.body.i58.preheader
-  store double 0.0, double* %A
+  store double 0.0, ptr %A
   %exitcond42 = icmp eq i32 0, %div.i45
   br i1 %exitcond42, label %for.inc, label %for.body.i58
 

diff  --git a/polly/test/ScopInfo/scev-invalidated.ll b/polly/test/ScopInfo/scev-invalidated.ll
index f6b5b41f01d0a..97fc5ec3d4caa 100644
--- a/polly/test/ScopInfo/scev-invalidated.ll
+++ b/polly/test/ScopInfo/scev-invalidated.ll
@@ -16,7 +16,7 @@ if.then6:
 if.else:
   %add16 = add nsw i64 %rem7, 1474560
   %rem7.add16 = select i1 undef, i64 %rem7, i64 %add16
-  store i64 %rem7.add16, i64* %ang2.2.reg2mem
+  store i64 %rem7.add16, ptr %ang2.2.reg2mem
   br label %return
 
 return:

diff  --git a/polly/test/ScopInfo/schedule-const-post-dominator-walk-2.ll b/polly/test/ScopInfo/schedule-const-post-dominator-walk-2.ll
index 0ad28af80c436..2fdf7d66c3ad4 100644
--- a/polly/test/ScopInfo/schedule-const-post-dominator-walk-2.ll
+++ b/polly/test/ScopInfo/schedule-const-post-dominator-walk-2.ll
@@ -14,33 +14,33 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @hoge(i64 %p0, i64 %p1, i64 %p2, i64 %p3, float* %A) {
+define void @hoge(i64 %p0, i64 %p1, i64 %p2, i64 %p3, ptr %A) {
 entry:
   br label %loopA
 
 loopA:
   %tmp4 = phi i64 [ 0, %entry ], [ 0, %loopB]
-  store float 42.0, float* %A
+  store float 42.0, ptr %A
   %cmp0 = icmp sle i64 %p0, 100
   br i1 %cmp0, label %loopB, label %bbB
 
 loopB:
-  store float 42.0, float* %A
+  store float 42.0, ptr %A
   %cmp1 = icmp sle i64 %p1, 100
   br i1 %cmp1, label %loopA, label %bbA
 
 bbA:
-  store float 42.0, float* %A
+  store float 42.0, ptr %A
   %cmpbbA = icmp sle i64 %p2, 50
   br i1 %cmpbbA, label %bbMerge, label %exit
 
 bbB:
-  store float 42.0, float* %A
+  store float 42.0, ptr %A
   %cmpbbB= icmp sle i64 %p3, 200
   br i1 %cmpbbB, label %exit, label %bbMerge
 
 bbMerge:
-  store float 42.0, float* %A
+  store float 42.0, ptr %A
   br label %exit
 
 exit:

diff  --git a/polly/test/ScopInfo/schedule-constuction-endless-loop1.ll b/polly/test/ScopInfo/schedule-constuction-endless-loop1.ll
index ad66c77cd6048..413d1d8ec5563 100644
--- a/polly/test/ScopInfo/schedule-constuction-endless-loop1.ll
+++ b/polly/test/ScopInfo/schedule-constuction-endless-loop1.ll
@@ -7,9 +7,9 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @int_upsample(i32* %A) {
+define void @int_upsample(ptr %A) {
 entry:
-  %0 = load i8, i8* undef, align 1
+  %0 = load i8, ptr undef, align 1
   %conv7 = zext i8 %0 to i32
   br label %while.body.preheader
 
@@ -24,7 +24,7 @@ while.body16:                                     ; preds = %while.body16, %whil
   br label %while.body16
 
 if.end:                                           ; preds = %while.body
-  store i32 0, i32* %A
+  store i32 0, ptr %A
   %add23 = add nuw nsw i32 %outrow.036, 1
   %cmp = icmp slt i32 %add23, 0
   br i1 %cmp, label %while.body, label %while.end24

diff  --git a/polly/test/ScopInfo/schedule-constuction-endless-loop2.ll b/polly/test/ScopInfo/schedule-constuction-endless-loop2.ll
index 43a108d0d44ff..be254477286f1 100644
--- a/polly/test/ScopInfo/schedule-constuction-endless-loop2.ll
+++ b/polly/test/ScopInfo/schedule-constuction-endless-loop2.ll
@@ -7,9 +7,9 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @int_upsample(i32* %A) {
+define void @int_upsample(ptr %A) {
 entry:
-  %0 = load i8, i8* undef, align 1
+  %0 = load i8, ptr undef, align 1
   %conv7 = zext i8 %0 to i32
   br label %while.body.preheader
 
@@ -27,7 +27,7 @@ while.body16.split:
   br label %while.body16
 
 if.end:                                           ; preds = %while.body
-  store i32 0, i32* %A
+  store i32 0, ptr %A
   %add23 = add nuw nsw i32 %outrow.036, 1
   %cmp = icmp slt i32 %add23, 0
   br i1 %cmp, label %while.body, label %while.end24

diff  --git a/polly/test/ScopInfo/schedule-incorrectly-contructed-in-case-of-infinite-loop.ll b/polly/test/ScopInfo/schedule-incorrectly-contructed-in-case-of-infinite-loop.ll
index f86f3e455cd72..ff339e03fb5a9 100644
--- a/polly/test/ScopInfo/schedule-incorrectly-contructed-in-case-of-infinite-loop.ll
+++ b/polly/test/ScopInfo/schedule-incorrectly-contructed-in-case-of-infinite-loop.ll
@@ -17,25 +17,24 @@ bb7:                                              ; preds = %bb23
   unreachable
 
 bb8:                                              ; preds = %bb23, %bb6
-  %tmp9 = getelementptr inbounds [11 x [101 x i32]], [11 x [101 x i32]]* %tmp5, i64 0, i64 0, i64 0
   br label %bb10
 
 bb10:                                             ; preds = %bb8
-  %tmp = load i32, i32* %tmp9, align 4
+  %tmp = load i32, ptr %tmp5, align 4
   br i1 false, label %bb23, label %bb11
 
 bb11:                                             ; preds = %bb10
-  %tmp12 = load i32, i32* %tmp9, align 4
+  %tmp12 = load i32, ptr %tmp5, align 4
   br label %bb13
 
 bb13:                                             ; preds = %bb13, %bb11
   %tmp14 = phi i32 [ %tmp12, %bb11 ], [ %tmp19, %bb13 ]
   %tmp15 = add nsw i32 %tmp14, 1
   %tmp16 = sext i32 %tmp15 to i64
-  %tmp17 = getelementptr inbounds [11 x [101 x i32]], [11 x [101 x i32]]* %tmp5, i64 0, i64 0, i64 %tmp16
-  %tmp18 = load i32, i32* %tmp17, align 4
+  %tmp17 = getelementptr inbounds [11 x [101 x i32]], ptr %tmp5, i64 0, i64 0, i64 %tmp16
+  %tmp18 = load i32, ptr %tmp17, align 4
   %tmp19 = add nsw i32 %tmp14, -1
-  %tmp20 = load i32, i32* %tmp9, align 4
+  %tmp20 = load i32, ptr %tmp5, align 4
   %tmp21 = sext i32 %tmp20 to i64
   %tmp22 = icmp slt i64 0, %tmp21
   br label %bb13
@@ -59,28 +58,27 @@ bb7:                                              ; preds = %bb23
   unreachable
 
 bb8:                                              ; preds = %bb23, %bb6
-  %tmp9 = getelementptr inbounds [11 x [101 x i32]], [11 x [101 x i32]]* %tmp5, i64 0, i64 0, i64 0
   br label %bb10
 
 bb10:                                             ; preds = %bb8
-  %tmp = load i32, i32* %tmp9, align 4
+  %tmp = load i32, ptr %tmp5, align 4
   br i1 false, label %bb23, label %bb11
 
 bb11:                                             ; preds = %bb10
-  %tmp12 = load i32, i32* %tmp9, align 4
+  %tmp12 = load i32, ptr %tmp5, align 4
   br label %bb13
 
 bb13:                                             ; preds = %bb13, %bb11
   %tmp14 = phi i32 [ %tmp12, %bb11 ], [ %tmp19, %bb13.split ]
   %tmp15 = add nsw i32 %tmp14, 1
   %tmp16 = sext i32 %tmp15 to i64
-  %tmp17 = getelementptr inbounds [11 x [101 x i32]], [11 x [101 x i32]]* %tmp5, i64 0, i64 0, i64 %tmp16
-  %tmp18 = load i32, i32* %tmp17, align 4
+  %tmp17 = getelementptr inbounds [11 x [101 x i32]], ptr %tmp5, i64 0, i64 0, i64 %tmp16
+  %tmp18 = load i32, ptr %tmp17, align 4
   br label %bb13.split
 
 bb13.split:
   %tmp19 = add nsw i32 %tmp14, -1
-  %tmp20 = load i32, i32* %tmp9, align 4
+  %tmp20 = load i32, ptr %tmp5, align 4
   %tmp21 = sext i32 %tmp20 to i64
   %tmp22 = icmp slt i64 0, %tmp21
   br label %bb13

diff  --git a/polly/test/ScopInfo/scop-affine-parameter-ordering.ll b/polly/test/ScopInfo/scop-affine-parameter-ordering.ll
index 2f5360de59033..24c028a6764a8 100644
--- a/polly/test/ScopInfo/scop-affine-parameter-ordering.ll
+++ b/polly/test/ScopInfo/scop-affine-parameter-ordering.ll
@@ -14,10 +14,10 @@ target triple = "aarch64--linux-android"
 
 define void @test1() unnamed_addr align 2 {
 entry:
-  %xFactor.0.reload = load i32, i32* undef
-  %0 = load i8*, i8** undef, align 8
+  %xFactor.0.reload = load i32, ptr undef
+  %0 = load ptr, ptr undef, align 8
   %div = udiv i32 0, %xFactor.0.reload
-  %1 = load i32, i32* undef, align 4
+  %1 = load i32, ptr undef, align 4
   %mul = mul i32 %1, %xFactor.0.reload
   %col.023.us.us85.i = add i32 %div, -1
   %mul11.us.us93.i = mul i32 %col.023.us.us85.i, %mul
@@ -27,8 +27,8 @@ for.body8.us.us95.i:
   %niter.i = phi i32 [ %niter.i.next, %for.body8.us.us95.i ], [ 0, %entry ]
   %add12.us.us100.1.i = add i32 1, %mul11.us.us93.i
   %idxprom13.us.us101.1.i = zext i32 %add12.us.us100.1.i to i64
-  %arrayidx14.us.us102.1.i = getelementptr inbounds i8, i8* %0, i64 %idxprom13.us.us101.1.i
-  store i8 0, i8* %arrayidx14.us.us102.1.i, align 1
+  %arrayidx14.us.us102.1.i = getelementptr inbounds i8, ptr %0, i64 %idxprom13.us.us101.1.i
+  store i8 0, ptr %arrayidx14.us.us102.1.i, align 1
   %niter.ncmp.3.i = icmp eq i32 %niter.i, 4
   %niter.i.next = add i32 %niter.i, 1
   br i1 %niter.ncmp.3.i, label %for.body8.us.us95.epil.i.preheader, label %for.body8.us.us95.i

diff  --git a/polly/test/ScopInfo/sign_wrapped_set.ll b/polly/test/ScopInfo/sign_wrapped_set.ll
index 3556ebcdc559e..23c9c8a3b84d0 100644
--- a/polly/test/ScopInfo/sign_wrapped_set.ll
+++ b/polly/test/ScopInfo/sign_wrapped_set.ll
@@ -11,20 +11,20 @@
 
 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
 
-define void @test_case(i8* noalias nocapture readonly %src, i32 %srcHeight, i32 %srcStride) local_unnamed_addr {
+define void @test_case(ptr noalias nocapture readonly %src, i32 %srcHeight, i32 %srcStride) local_unnamed_addr {
 entry:
   %extended = zext i32 %srcStride to i64
   %sub = add i32 %srcHeight, -1
   br label %for.cond6.preheader.us
 
 for.cond6.preheader.us:                           ; preds = %for.cond6.preheader.us, %entry
-  %srcPtr.075.us.pn = phi i8* [ %srcPtr.075.us, %for.cond6.preheader.us ], [ %src, %entry ]
+  %srcPtr.075.us.pn = phi ptr [ %srcPtr.075.us, %for.cond6.preheader.us ], [ %src, %entry ]
   %y.072.us = phi i32 [ %inc37.us, %for.cond6.preheader.us ], [ 1, %entry ]
-  %srcPtr.075.us = getelementptr inbounds i8, i8* %srcPtr.075.us.pn, i64 %extended
+  %srcPtr.075.us = getelementptr inbounds i8, ptr %srcPtr.075.us.pn, i64 %extended
 
-  %0 = load i8, i8* %srcPtr.075.us, align 1, !tbaa !0
+  %0 = load i8, ptr %srcPtr.075.us, align 1, !tbaa !0
   %1 = add i8 %0, 1
-  store i8 %1, i8* %srcPtr.075.us, align 1, !tbaa !0
+  store i8 %1, ptr %srcPtr.075.us, align 1, !tbaa !0
 
   %inc37.us = add nuw i32 %y.072.us, 1
   %exitcond78 = icmp eq i32 %inc37.us, %sub

diff  --git a/polly/test/ScopInfo/simple_loop_1.ll b/polly/test/ScopInfo/simple_loop_1.ll
index 9b5d0f59871f5..2c3481facc02b 100644
--- a/polly/test/ScopInfo/simple_loop_1.ll
+++ b/polly/test/ScopInfo/simple_loop_1.ll
@@ -8,14 +8,14 @@
 
 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"
 
-define void @f(i64* nocapture %a, i64 %N) nounwind {
+define void @f(ptr nocapture %a, i64 %N) nounwind {
 entry:
   br label %bb
 
 bb:                                               ; preds = %bb, %entry
   %i = phi i64 [ 0, %entry ], [ %i.inc, %bb ]
-  %scevgep = getelementptr inbounds i64, i64* %a, i64 %i
-  store i64 %i, i64* %scevgep
+  %scevgep = getelementptr inbounds i64, ptr %a, i64 %i
+  store i64 %i, ptr %scevgep
   %i.inc = add nsw i64 %i, 1
   %exitcond = icmp eq i64 %i.inc, %N
   br i1 %exitcond, label %return, label %bb

diff  --git a/polly/test/ScopInfo/simple_loop_2.ll b/polly/test/ScopInfo/simple_loop_2.ll
index d2d35aa9d0e6f..2f580094a1473 100644
--- a/polly/test/ScopInfo/simple_loop_2.ll
+++ b/polly/test/ScopInfo/simple_loop_2.ll
@@ -25,14 +25,14 @@
 
 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"
 
-define void @f(i32* nocapture %a, i64 %N) nounwind {
+define void @f(ptr nocapture %a, i64 %N) nounwind {
 entry:
   br label %bb
 
 bb:                                               ; preds = %bb, %entry
   %i = phi i32 [ 0, %entry ], [ %i.inc, %bb ]
-  %scevgep = getelementptr inbounds i32, i32* %a, i32 %i
-  store i32 %i, i32* %scevgep
+  %scevgep = getelementptr inbounds i32, ptr %a, i32 %i
+  store i32 %i, ptr %scevgep
   %i.inc = add nsw i32 %i, 1
   %i.ext = zext i32 %i.inc to i64
   %exitcond = icmp eq i64 %i.ext, %N

diff  --git a/polly/test/ScopInfo/simple_loop_unsigned.ll b/polly/test/ScopInfo/simple_loop_unsigned.ll
index 245c9f1e2c782..12903d9c1580c 100644
--- a/polly/test/ScopInfo/simple_loop_unsigned.ll
+++ b/polly/test/ScopInfo/simple_loop_unsigned.ll
@@ -17,14 +17,14 @@
 
 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"
 
-define void @f(i64* nocapture %a, i64 %N) nounwind {
+define void @f(ptr nocapture %a, i64 %N) nounwind {
 entry:
   br label %bb
 
 bb:                                               ; preds = %bb, %entry
   %i = phi i64 [ 0, %entry ], [ %i.inc, %bb ]
-  %scevgep = getelementptr inbounds i64, i64* %a, i64 %i
-  store i64 %i, i64* %scevgep
+  %scevgep = getelementptr inbounds i64, ptr %a, i64 %i
+  store i64 %i, ptr %scevgep
   %i.inc = add nsw i64 %i, 1
   %exitcond = icmp uge i64 %i.inc, %N
   br i1 %exitcond, label %return, label %bb

diff  --git a/polly/test/ScopInfo/simple_loop_unsigned_2.ll b/polly/test/ScopInfo/simple_loop_unsigned_2.ll
index 9cd43ad97299d..1379180a6dd96 100644
--- a/polly/test/ScopInfo/simple_loop_unsigned_2.ll
+++ b/polly/test/ScopInfo/simple_loop_unsigned_2.ll
@@ -10,14 +10,14 @@
 ;
 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"
 
-define void @f(i64* nocapture %a, i64 %N) nounwind {
+define void @f(ptr nocapture %a, i64 %N) nounwind {
 entry:
   br label %bb
 
 bb:                                               ; preds = %bb, %entry
   %i = phi i64 [ %N, %entry ], [ %i.dec, %bb ]
-  %scevgep = getelementptr inbounds i64, i64* %a, i64 %i
-  store i64 %i, i64* %scevgep
+  %scevgep = getelementptr inbounds i64, ptr %a, i64 %i
+  store i64 %i, ptr %scevgep
   %i.dec = add nsw i64 %i, -1
   %exitcond = icmp ugt i64 %i.dec, 0
   br i1 %exitcond, label %bb, label %return

diff  --git a/polly/test/ScopInfo/simple_loop_unsigned_3.ll b/polly/test/ScopInfo/simple_loop_unsigned_3.ll
index c4df5668dab9d..7783c4681e1f6 100644
--- a/polly/test/ScopInfo/simple_loop_unsigned_3.ll
+++ b/polly/test/ScopInfo/simple_loop_unsigned_3.ll
@@ -8,14 +8,14 @@
 
 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"
 
-define void @f(i64* nocapture %a, i64 %N) nounwind {
+define void @f(ptr nocapture %a, i64 %N) nounwind {
 entry:
   br label %bb
 
 bb:                                               ; preds = %bb, %entry
   %i = phi i64 [ 1000, %entry ], [ %i.dec, %bb ]
-  %scevgep = getelementptr inbounds i64, i64* %a, i64 %i
-  store i64 %i, i64* %scevgep
+  %scevgep = getelementptr inbounds i64, ptr %a, i64 %i
+  store i64 %i, ptr %scevgep
   %i.dec = add nsw i64 %i, -1
   %sub = sub nsw i64 %N, %i
   %exitcond = icmp ult i64 %sub, 0

diff  --git a/polly/test/ScopInfo/simple_nonaffine_loop_not.ll b/polly/test/ScopInfo/simple_nonaffine_loop_not.ll
index a4de84d414e75..42eff85d8c9b0 100644
--- a/polly/test/ScopInfo/simple_nonaffine_loop_not.ll
+++ b/polly/test/ScopInfo/simple_nonaffine_loop_not.ll
@@ -16,8 +16,8 @@ for.body:                                         ; preds = %entry.split, %for.b
   %mul = mul i32 %0, 2
   %mul1 = mul nsw i32 %0, %0
   %idxprom1 = zext i32 %mul1 to i64
-  %arrayidx = getelementptr inbounds [1048576 x i32], [1048576 x i32]* %A, i64 0, i64 %idxprom1
-  store i32 %mul, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds [1048576 x i32], ptr %A, i64 0, i64 %idxprom1
+  store i32 %mul, ptr %arrayidx, align 4
   %1 = add nsw i32 %0, 1
   %exitcond = icmp ne i32 %1, 1024
   br i1 %exitcond, label %for.body, label %for.end
@@ -27,13 +27,13 @@ for.end:                                          ; preds = %for.body
   %rem = srem i32 %call, 1024
   %mul2 = shl nsw i32 %rem, 10
   %idxprom3 = sext i32 %mul2 to i64
-  %arrayidx4 = getelementptr inbounds [1048576 x i32], [1048576 x i32]* %A, i64 0, i64 %idxprom3
-  %2 = load i32, i32* %arrayidx4, align 16
-  %call5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), i32 %2) nounwind
+  %arrayidx4 = getelementptr inbounds [1048576 x i32], ptr %A, i64 0, i64 %idxprom3
+  %2 = load i32, ptr %arrayidx4, align 16
+  %call5 = call i32 (ptr, ...) @printf(ptr @.str, i32 %2) nounwind
   ret i32 0
 }
 
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
 
 declare i32 @rand()
 ; CHECK:                { Stmt_for_body[i0] -> MemRef_A[o0] };

diff  --git a/polly/test/ScopInfo/smax.ll b/polly/test/ScopInfo/smax.ll
index 230a054cc0e4d..b938e4e412da5 100644
--- a/polly/test/ScopInfo/smax.ll
+++ b/polly/test/ScopInfo/smax.ll
@@ -1,7 +1,7 @@
 ; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s
 target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:32-n32-S64"
 
-define void @foo(i32 * noalias %data, i32 * noalias %ptr, i32 %x_pos, i32 %w) {
+define void @foo(ptr noalias %data, ptr noalias %ptr, i32 %x_pos, i32 %w) {
 entry:
   br label %for.body
 
@@ -10,8 +10,8 @@ for.body:
   %add = add nsw i32 %x, %x_pos
   %cmp1 = icmp sgt i32 %add, %w
   %cond = select i1 %cmp1, i32 %w, i32 %add
-  %arrayidx = getelementptr inbounds i32, i32* %ptr, i32 %cond
-  store i32 1, i32* %arrayidx
+  %arrayidx = getelementptr inbounds i32, ptr %ptr, i32 %cond
+  store i32 1, ptr %arrayidx
   %x.inc = add nsw i32 %x, 1
   %cmp = icmp slt i32 %x.inc, 2
   br i1 %cmp, label %for.body, label %for.end

diff  --git a/polly/test/ScopInfo/statistics.ll b/polly/test/ScopInfo/statistics.ll
index 4c621932a7c7a..3797b7d71df94 100644
--- a/polly/test/ScopInfo/statistics.ll
+++ b/polly/test/ScopInfo/statistics.ll
@@ -38,7 +38,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @foo_1d(float* %A) {
+define void @foo_1d(ptr %A) {
 bb:
   br label %bb1
 
@@ -49,10 +49,10 @@ bb1:                                              ; preds = %bb6, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = sitofp i64 %i.0 to float
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, %tmp
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2
@@ -63,7 +63,7 @@ bb8:                                              ; preds = %bb1
   ret void
 }
 
-define void @foo_2d(float* %A) {
+define void @foo_2d(ptr %A) {
 bb:
   br label %bb2
 
@@ -84,10 +84,10 @@ bb5:                                              ; preds = %bb4
   %tmp = add nuw nsw i64 %i.0, %j.0
   %tmp6 = sitofp i64 %tmp to float
   %tmp7 = add nuw nsw i64 %i.0, %j.0
-  %tmp8 = getelementptr inbounds float, float* %A, i64 %tmp7
-  %tmp9 = load float, float* %tmp8, align 4
+  %tmp8 = getelementptr inbounds float, ptr %A, i64 %tmp7
+  %tmp9 = load float, ptr %tmp8, align 4
   %tmp10 = fadd float %tmp9, %tmp6
-  store float %tmp10, float* %tmp8, align 4
+  store float %tmp10, ptr %tmp8, align 4
   br label %bb11
 
 bb11:                                             ; preds = %bb5
@@ -105,7 +105,7 @@ bb16:                                             ; preds = %bb2
   ret void
 }
 
-define void @foo_3d(float* %A) {
+define void @foo_3d(ptr %A) {
 bb:
   br label %bb3
 
@@ -136,10 +136,10 @@ bb8:                                              ; preds = %bb7
   %tmp10 = sitofp i64 %tmp9 to float
   %tmp11 = add nuw nsw i64 %i.0, %j.0
   %tmp12 = add nuw nsw i64 %tmp11, %k.0
-  %tmp13 = getelementptr inbounds float, float* %A, i64 %tmp12
-  %tmp14 = load float, float* %tmp13, align 4
+  %tmp13 = getelementptr inbounds float, ptr %A, i64 %tmp12
+  %tmp14 = load float, ptr %tmp13, align 4
   %tmp15 = fadd float %tmp14, %tmp10
-  store float %tmp15, float* %tmp13, align 4
+  store float %tmp15, ptr %tmp13, align 4
   br label %bb16
 
 bb16:                                             ; preds = %bb8
@@ -164,7 +164,7 @@ bb24:                                             ; preds = %bb3
   ret void
 }
 
-define void @foo_4d(float* %A) {
+define void @foo_4d(ptr %A) {
 bb:
   br label %bb4
 
@@ -205,10 +205,10 @@ bb11:                                             ; preds = %bb10
   %tmp15 = add nuw nsw i64 %i.0, %j.0
   %tmp16 = add nuw nsw i64 %tmp15, %k.0
   %tmp17 = add nuw nsw i64 %tmp16, %l.0
-  %tmp18 = getelementptr inbounds float, float* %A, i64 %tmp17
-  %tmp19 = load float, float* %tmp18, align 4
+  %tmp18 = getelementptr inbounds float, ptr %A, i64 %tmp17
+  %tmp19 = load float, ptr %tmp18, align 4
   %tmp20 = fadd float %tmp19, %tmp14
-  store float %tmp20, float* %tmp18, align 4
+  store float %tmp20, ptr %tmp18, align 4
   br label %bb21
 
 bb21:                                             ; preds = %bb11

diff  --git a/polly/test/ScopInfo/stmt_split_exit_of_region_stmt.ll b/polly/test/ScopInfo/stmt_split_exit_of_region_stmt.ll
index 29ea7a757d705..d86d2418cf9b2 100644
--- a/polly/test/ScopInfo/stmt_split_exit_of_region_stmt.ll
+++ b/polly/test/ScopInfo/stmt_split_exit_of_region_stmt.ll
@@ -19,7 +19,7 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   Stmt_Stmt_b
 ; CHECK-NEXT:       Domain :=
@@ -29,12 +29,12 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt_b[i0] -> MemRef_B[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx2, align 4
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx2, align 4
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   }
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @func(i32* %A, i32* %B, double* %C) {
+define void @func(ptr %A, ptr %B, ptr %C) {
 entry:
   br label %for.cond
 
@@ -51,16 +51,16 @@ Region:                                           ; preds = %for.body
   br i1 %cond, label %Region_true, label %Stmt
 
 Region_true:                                      ; preds = %Region
-  store double 0.000000e+00, double* %C
+  store double 0.000000e+00, ptr %C
   br label %Stmt
 
 Stmt:                                             ; preds = %Region_true, %Region
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
   %idxprom1 = sext i32 %i.0 to i64
-  %arrayidx2 = getelementptr inbounds i32, i32* %B, i64 %idxprom1
-  store i32 %i.0, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %B, i64 %idxprom1
+  store i32 %i.0, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %Stmt

diff  --git a/polly/test/ScopInfo/stmt_split_no_after_split.ll b/polly/test/ScopInfo/stmt_split_no_after_split.ll
index c286ef2d25b75..f8339bd8ae946 100644
--- a/polly/test/ScopInfo/stmt_split_no_after_split.ll
+++ b/polly/test/ScopInfo/stmt_split_no_after_split.ll
@@ -9,12 +9,12 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   }
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @func(i32* %A) #0 {
+define void @func(ptr %A) #0 {
 entry:
   br label %for.cond
 
@@ -28,8 +28,8 @@ for.body:                                         ; preds = %for.cond
 
 Stmt:
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
   br label %for.inc
 
 for.inc:                                          ; preds = %Stmt

diff  --git a/polly/test/ScopInfo/stmt_split_no_dependence.ll b/polly/test/ScopInfo/stmt_split_no_dependence.ll
index a2289dc4221be..7ad48f4997921 100644
--- a/polly/test/ScopInfo/stmt_split_no_dependence.ll
+++ b/polly/test/ScopInfo/stmt_split_no_dependence.ll
@@ -17,7 +17,7 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:  	Stmt_Stmt_b
 ; CHECK-NEXT:       Domain :=
@@ -27,12 +27,12 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt_b[i0] -> MemRef_B[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx2, align 4
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx2, align 4
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:    }
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @func(i32* %A, i32* %B) #0 {
+define void @func(ptr %A, ptr %B) #0 {
 entry:
   br label %for.cond
 
@@ -46,11 +46,11 @@ for.body:                                         ; preds = %for.cond
 
 Stmt:                                             ; preds = %for.body
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
   %idxprom1 = sext i32 %i.0 to i64
-  %arrayidx2 = getelementptr inbounds i32, i32* %B, i64 %idxprom1
-  store i32 %i.0, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %B, i64 %idxprom1
+  store i32 %i.0, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %Stmt

diff  --git a/polly/test/ScopInfo/stmt_split_on_store.ll b/polly/test/ScopInfo/stmt_split_on_store.ll
index 57a8bd6e730b4..6af3dc8633ddc 100644
--- a/polly/test/ScopInfo/stmt_split_on_store.ll
+++ b/polly/test/ScopInfo/stmt_split_on_store.ll
@@ -17,7 +17,7 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx, align 4
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx, align 4
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:  	Stmt_Stmt_b
 ; CHECK-NEXT:       Domain :=
@@ -27,12 +27,12 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt_b[i0] -> MemRef_B[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx2, align 4
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx2, align 4
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:    }
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @func(i32* %A, i32* %B) #0 {
+define void @func(ptr %A, ptr %B) #0 {
 entry:
   br label %for.cond
 
@@ -46,11 +46,11 @@ for.body:                                         ; preds = %for.cond
 
 Stmt:                                             ; preds = %for.body
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4
   %idxprom1 = sext i32 %i.0 to i64
-  %arrayidx2 = getelementptr inbounds i32, i32* %B, i64 %idxprom1
-  store i32 %i.0, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %B, i64 %idxprom1
+  store i32 %i.0, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %Stmt

diff  --git a/polly/test/ScopInfo/stmt_split_on_synthesizable.ll b/polly/test/ScopInfo/stmt_split_on_synthesizable.ll
index 46b15db59703e..92855cfd0124b 100644
--- a/polly/test/ScopInfo/stmt_split_on_synthesizable.ll
+++ b/polly/test/ScopInfo/stmt_split_on_synthesizable.ll
@@ -9,7 +9,7 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx, align 4
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx, align 4
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   Stmt_Stmt_b
 ; CHECK-NEXT:       Domain :=
@@ -19,12 +19,12 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt_b[i0] -> MemRef_B[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx2, align 4
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx2, align 4
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   }
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @func(i32* %A, i32* %B, double* %C) #0 {
+define void @func(ptr %A, ptr %B, ptr %C) #0 {
 entry:
   br label %for.cond
 
@@ -38,11 +38,11 @@ for.body:                                         ; preds = %for.cond
 
 Stmt:
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4
   %idxprom1 = sext i32 %i.0 to i64, !polly_split_after !0
-  %arrayidx2 = getelementptr inbounds i32, i32* %B, i64 %idxprom1
-  store i32 %i.0, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %B, i64 %idxprom1
+  store i32 %i.0, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %Stmt

diff  --git a/polly/test/ScopInfo/stmt_split_phi_in_beginning_bb.ll b/polly/test/ScopInfo/stmt_split_phi_in_beginning_bb.ll
index 8c62b0c8800ab..ee6afa4638d27 100644
--- a/polly/test/ScopInfo/stmt_split_phi_in_beginning_bb.ll
+++ b/polly/test/ScopInfo/stmt_split_phi_in_beginning_bb.ll
@@ -9,7 +9,7 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %phi, i32* %arrayidx, align 4, !polly_split_after !0
+; CHECK-NEXT:             store i32 %phi, ptr %arrayidx, align 4, !polly_split_after !0
 ; CHECK-NEXT:       }
 ; CHECK-NEXT: 	Stmt_Stmt_b
 ; CHECK-NEXT:       Domain :=
@@ -19,12 +19,12 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt_b[i0] -> MemRef_B[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx2, align 4
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx2, align 4
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   }
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @func(i32* %A, i32* %B) #0 {
+define void @func(ptr %A, ptr %B) #0 {
 entry:
   br label %for.cond
 
@@ -39,11 +39,11 @@ for.body:                                         ; preds = %for.cond
 Stmt:
   %phi = phi i32 [0, %for.body]
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %phi, i32* %arrayidx, align 4, !polly_split_after !0
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %phi, ptr %arrayidx, align 4, !polly_split_after !0
   %idxprom1 = sext i32 %i.0 to i64
-  %arrayidx2 = getelementptr inbounds i32, i32* %B, i64 %idxprom1
-  store i32 %i.0, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %B, i64 %idxprom1
+  store i32 %i.0, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %Stmt

diff  --git a/polly/test/ScopInfo/stmt_split_phi_in_stmt.ll b/polly/test/ScopInfo/stmt_split_phi_in_stmt.ll
index e1179eaf76d87..0a5f41d637e79 100644
--- a/polly/test/ScopInfo/stmt_split_phi_in_stmt.ll
+++ b/polly/test/ScopInfo/stmt_split_phi_in_stmt.ll
@@ -9,7 +9,7 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt[i0] -> MemRef_A[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:  	Stmt_Stmt_b
 ; CHECK-NEXT:       Domain :=
@@ -22,7 +22,7 @@
 ; CHECK-NEXT:           { Stmt_Stmt_b[i0] -> MemRef_phi__phi[] };
 ; CHECK-NEXT:       Instructions {
 ; CHECK-NEXT:             %d = fadd double 2.100000e+01, 2.100000e+01
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx2, align 4
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx2, align 4
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   Stmt_for_inc
 ; CHECK-NEXT:       Domain :=
@@ -35,12 +35,12 @@
 ; CHECK-NEXT:           { Stmt_for_inc[i0] -> MemRef_C[0] };
 ; CHECK-NEXT:       Instructions {
 ; CHECK-NEXT:             %phi = phi double [ %d, %Stmt ]
-; CHECK-NEXT:             store double %phi, double* %C
+; CHECK-NEXT:             store double %phi, ptr %C
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   }
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @func(i32* %A, i32* %B, double* %C) #0 {
+define void @func(ptr %A, ptr %B, ptr %C) #0 {
 entry:
   br label %for.cond
 
@@ -54,17 +54,17 @@ for.body:                                         ; preds = %for.cond
 
 Stmt:
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
   %idxprom1 = sext i32 %i.0 to i64
   %d = fadd double 21.0, 21.0
-  %arrayidx2 = getelementptr inbounds i32, i32* %B, i64 %idxprom1
-  store i32 %i.0, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %B, i64 %idxprom1
+  store i32 %i.0, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %Stmt
   %phi = phi double [%d, %Stmt]
-  store double %phi, double* %C
+  store double %phi, ptr %C
   %add = add nsw i32 %i.0, 1
   br label %for.cond
 

diff  --git a/polly/test/ScopInfo/stmt_split_scalar_dependence.ll b/polly/test/ScopInfo/stmt_split_scalar_dependence.ll
index 143c4ec1648aa..5b02d1b5d08a1 100644
--- a/polly/test/ScopInfo/stmt_split_scalar_dependence.ll
+++ b/polly/test/ScopInfo/stmt_split_scalar_dependence.ll
@@ -12,7 +12,7 @@
 ; CHECK-NEXT:           { Stmt_Stmt[i0] -> MemRef_a[] };
 ; CHECK-NEXT:       Instructions {
 ; CHECK-NEXT:             %a = fadd double 2.100000e+01, 2.100000e+01
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   Stmt_Stmt_b
 ; CHECK-NEXT:       Domain :=
@@ -24,12 +24,12 @@
 ; CHECK-NEXT:       ReadAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:           { Stmt_Stmt_b[i0] -> MemRef_a[] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store double %a, double* %B
+; CHECK-NEXT:             store double %a, ptr %B
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   }
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @func(i32* %A, double* %B) #0 {
+define void @func(ptr %A, ptr %B) #0 {
 entry:
   br label %for.cond
 
@@ -44,9 +44,9 @@ for.body:                                         ; preds = %for.cond
 Stmt:
   %a = fadd double 21.0, 21.0
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
-  store double %a, double* %B
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
+  store double %a, ptr %B
   br label %for.inc
 
 for.inc:                                          ; preds = %Stmt

diff  --git a/polly/test/ScopInfo/stmt_split_within_loop.ll b/polly/test/ScopInfo/stmt_split_within_loop.ll
index 44ff3d403c16e..3ed9bbbeaccb1 100644
--- a/polly/test/ScopInfo/stmt_split_within_loop.ll
+++ b/polly/test/ScopInfo/stmt_split_within_loop.ll
@@ -9,7 +9,7 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt[i0, i1] -> MemRef_A[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:  	Stmt_Stmt_b
 ; CHECK-NEXT:       Domain :=
@@ -19,13 +19,13 @@
 ; CHECK-NEXT:       MustWriteAccess :=	[Reduction Type: NONE] [Scalar: 0]
 ; CHECK-NEXT:           { Stmt_Stmt_b[i0, i1] -> MemRef_B[i0] };
 ; CHECK-NEXT:       Instructions {
-; CHECK-NEXT:             store i32 %i.0, i32* %arrayidx2, align 4
+; CHECK-NEXT:             store i32 %i.0, ptr %arrayidx2, align 4
 ; CHECK-NEXT:             %cond = icmp slt i32 %j, 512
 ; CHECK-NEXT:       }
 ; CHECK-NEXT:   }
 ;
 ; Function Attrs: noinline nounwind uwtable
-define void @func(i32* %A, i32* %B, double* %C) #0 {
+define void @func(ptr %A, ptr %B, ptr %C) #0 {
 entry:
   br label %for.cond
 
@@ -40,11 +40,11 @@ for.body:                                         ; preds = %for.cond
 Stmt:
   %j = phi i32 [ 0, %for.body ], [ %inc, %Stmt ]
   %idxprom = sext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  store i32 %i.0, i32* %arrayidx, align 4, !polly_split_after !0
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  store i32 %i.0, ptr %arrayidx, align 4, !polly_split_after !0
   %idxprom1 = sext i32 %i.0 to i64
-  %arrayidx2 = getelementptr inbounds i32, i32* %B, i64 %idxprom1
-  store i32 %i.0, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %B, i64 %idxprom1
+  store i32 %i.0, ptr %arrayidx2, align 4
   %inc = add nsw i32 %j, 1
   %cond = icmp slt i32 %j, 512
   br i1 %cond, label %Stmt, label %for.inc

diff  --git a/polly/test/ScopInfo/stmt_with_read_but_without_sideffect.ll b/polly/test/ScopInfo/stmt_with_read_but_without_sideffect.ll
index 3e3f2df3b33af..73fc543a66e89 100644
--- a/polly/test/ScopInfo/stmt_with_read_but_without_sideffect.ll
+++ b/polly/test/ScopInfo/stmt_with_read_but_without_sideffect.ll
@@ -31,8 +31,8 @@ for.cond33.preheader:                             ; preds = %for.inc.1
 for.cond7.preheader:                              ; preds = %for.inc.1, %for.body
   %indvars.iv958 = phi i64 [ 0, %for.body ], [ %indvars.iv.next959, %for.inc.1 ]
   %tmp20 = add nuw nsw i64 %indvars.iv958, %tmp5
-  %arrayidx = getelementptr inbounds [88 x float], [88 x float]* @ATH, i64 0, i64 %tmp20
-  %tmp21 = load float, float* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds [88 x float], ptr @ATH, i64 0, i64 %tmp20
+  %tmp21 = load float, ptr %arrayidx, align 4
   %tmp22 = add nuw nsw i64 %tmp20, 1
   %cmp12.1 = icmp ult i64 %tmp22, 88
   br i1 %cmp12.1, label %if.then.1, label %if.else.1
@@ -46,21 +46,19 @@ if.else.1:                                        ; preds = %for.cond7.preheader
   br label %for.inc.1
 
 if.then.1:                                        ; preds = %for.cond7.preheader
-  %arrayidx.1 = getelementptr inbounds [88 x float], [88 x float]* @ATH, i64 0, i64 %tmp22
-  %tmp155 = load float, float* %arrayidx.1, align 4
+  %arrayidx.1 = getelementptr inbounds [88 x float], ptr @ATH, i64 0, i64 %tmp22
+  %tmp155 = load float, ptr %arrayidx.1, align 4
   %cmp16.1 = fcmp ogt float %tmp21, %tmp155
   br label %for.inc.1
 
 for.inc.1:                                        ; preds = %if.then.1, %if.else.1
   %min.1.1 = phi float [ %tmp155, %if.then.1 ], [ -3.000000e+01, %if.else.1 ]
-  %arrayidx.2 = getelementptr inbounds [88 x float], [88 x float]* @ATH, i64 0, i64 0
-  %tmp157 = load float, float* %arrayidx.2, align 4
+  %tmp157 = load float, ptr @ATH, align 4
   %cmp16.2 = fcmp ogt float %min.1.1, %tmp157
-  %arrayidx.3 = getelementptr inbounds [88 x float], [88 x float]* @ATH, i64 0, i64 0
-  %tmp159 = load float, float* %arrayidx.3, align 4
+  %tmp159 = load float, ptr @ATH, align 4
   %cmp16.3 = fcmp ogt float %tmp157, %tmp159
-  %arrayidx29 = getelementptr inbounds [56 x float], [56 x float]* %ath, i64 0, i64 %indvars.iv958
-  store float %tmp159, float* %arrayidx29, align 4
+  %arrayidx29 = getelementptr inbounds [56 x float], ptr %ath, i64 0, i64 %indvars.iv958
+  store float %tmp159, ptr %arrayidx29, align 4
   %indvars.iv.next959 = add nuw nsw i64 %indvars.iv958, 1
   %exitcond961 = icmp eq i64 %indvars.iv.next959, 56
   br i1 %exitcond961, label %for.cond33.preheader, label %for.cond7.preheader

diff  --git a/polly/test/ScopInfo/switch-1.ll b/polly/test/ScopInfo/switch-1.ll
index 6eafe6cbb3708..0ea40a7ed2510 100644
--- a/polly/test/ScopInfo/switch-1.ll
+++ b/polly/test/ScopInfo/switch-1.ll
@@ -64,7 +64,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -88,24 +88,24 @@ sw.bb:                                            ; preds = %for.body
   br label %sw.epilog
 
 sw.bb.1:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp2, 1
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %sw.epilog
 
 sw.bb.2:                                          ; preds = %for.body
-  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %arrayidx4, align 4
   %add5 = add nsw i32 %tmp3, 2
-  store i32 %add5, i32* %arrayidx4, align 4
+  store i32 %add5, ptr %arrayidx4, align 4
   br label %sw.epilog
 
 sw.bb.6:                                          ; preds = %for.body
-  %arrayidx8 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp4 = load i32, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp4 = load i32, ptr %arrayidx8, align 4
   %add9 = add nsw i32 %tmp4, 3
-  store i32 %add9, i32* %arrayidx8, align 4
+  store i32 %add9, ptr %arrayidx8, align 4
   br label %sw.epilog
 
 sw.epilog:                                        ; preds = %sw.bb.6, %sw.bb.2, %sw.bb.1, %sw.bb, %for.body

diff  --git a/polly/test/ScopInfo/switch-2.ll b/polly/test/ScopInfo/switch-2.ll
index 93b5f0380d02d..7956058c9de6f 100644
--- a/polly/test/ScopInfo/switch-2.ll
+++ b/polly/test/ScopInfo/switch-2.ll
@@ -51,7 +51,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -72,20 +72,20 @@ for.body:                                         ; preds = %for.cond
   ]
 
 sw.bb:                                            ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp2, 1
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %sw.epilog
 
 sw.bb.1:                                          ; preds = %for.body
   br label %sw.epilog
 
 sw.bb.2:                                          ; preds = %for.body
-  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %arrayidx4, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %arrayidx4, align 4
   %add5 = add nsw i32 %tmp3, 2
-  store i32 %add5, i32* %arrayidx4, align 4
+  store i32 %add5, ptr %arrayidx4, align 4
   br label %sw.epilog
 
 sw.bb.6:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/switch-3.ll b/polly/test/ScopInfo/switch-3.ll
index a03e974abae3c..aa7ada4edbb8d 100644
--- a/polly/test/ScopInfo/switch-3.ll
+++ b/polly/test/ScopInfo/switch-3.ll
@@ -75,7 +75,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -96,31 +96,31 @@ for.body:                                         ; preds = %for.cond
   ]
 
 sw.bb:                                            ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp2, 1
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %sw.bb.1
 
 sw.bb.1:                                          ; preds = %sw.bb, %for.body
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %arrayidx3, align 4
   %add4 = add nsw i32 %tmp3, 2
-  store i32 %add4, i32* %arrayidx3, align 4
+  store i32 %add4, ptr %arrayidx3, align 4
   br label %sw.epilog
 
 sw.bb.5:                                          ; preds = %for.body
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp4 = load i32, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp4 = load i32, ptr %arrayidx7, align 4
   %add8 = add nsw i32 %tmp4, 3
-  store i32 %add8, i32* %arrayidx7, align 4
+  store i32 %add8, ptr %arrayidx7, align 4
   br label %sw.bb.9
 
 sw.bb.9:                                          ; preds = %sw.bb.5, %for.body
-  %arrayidx11 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp5 = load i32, i32* %arrayidx11, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp5 = load i32, ptr %arrayidx11, align 4
   %add12 = add nsw i32 %tmp5, 4
-  store i32 %add12, i32* %arrayidx11, align 4
+  store i32 %add12, ptr %arrayidx11, align 4
   br label %sw.epilog
 
 sw.epilog:                                        ; preds = %sw.bb.9, %sw.bb.1, %for.body

diff  --git a/polly/test/ScopInfo/switch-4.ll b/polly/test/ScopInfo/switch-4.ll
index 62157e35b67cd..6aeb7197e382b 100644
--- a/polly/test/ScopInfo/switch-4.ll
+++ b/polly/test/ScopInfo/switch-4.ll
@@ -79,7 +79,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -100,42 +100,42 @@ for.body:                                         ; preds = %for.cond
   ]
 
 sw.bb:                                            ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp4 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp4 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp4, 1
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %sw.epilog
 
 sw.bb.1:                                          ; preds = %for.body
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp5 = load i32, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp5 = load i32, ptr %arrayidx3, align 4
   %add4 = add nsw i32 %tmp5, 2
-  store i32 %add4, i32* %arrayidx3, align 4
+  store i32 %add4, ptr %arrayidx3, align 4
   br label %sw.epilog
 
 sw.bb.5:                                          ; preds = %for.body
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp6 = load i32, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp6 = load i32, ptr %arrayidx7, align 4
   %add8 = add nsw i32 %tmp6, 3
-  store i32 %add8, i32* %arrayidx7, align 4
+  store i32 %add8, ptr %arrayidx7, align 4
   br label %sw.epilog
 
 sw.bb.9:                                          ; preds = %for.body
-  %arrayidx11 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp7 = load i32, i32* %arrayidx11, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp7 = load i32, ptr %arrayidx11, align 4
   %add12 = add nsw i32 %tmp7, 4
-  store i32 %add12, i32* %arrayidx11, align 4
+  store i32 %add12, ptr %arrayidx11, align 4
   br label %sw.epilog
 
 sw.default:                                       ; preds = %for.body
   %tmp8 = add nuw nsw i64 %indvars.iv, 1
-  %arrayidx15 = getelementptr inbounds i32, i32* %A, i64 %tmp8
-  %tmp9 = load i32, i32* %arrayidx15, align 4
+  %arrayidx15 = getelementptr inbounds i32, ptr %A, i64 %tmp8
+  %tmp9 = load i32, ptr %arrayidx15, align 4
   %tmp10 = add nsw i64 %indvars.iv, -1
-  %arrayidx17 = getelementptr inbounds i32, i32* %A, i64 %tmp10
-  %tmp11 = load i32, i32* %arrayidx17, align 4
+  %arrayidx17 = getelementptr inbounds i32, ptr %A, i64 %tmp10
+  %tmp11 = load i32, ptr %arrayidx17, align 4
   %add18 = add nsw i32 %tmp11, %tmp9
-  store i32 %add18, i32* %arrayidx17, align 4
+  store i32 %add18, ptr %arrayidx17, align 4
   br label %sw.epilog
 
 sw.epilog:                                        ; preds = %sw.default, %sw.bb.9, %sw.bb.5, %sw.bb.1, %sw.bb

diff  --git a/polly/test/ScopInfo/switch-5.ll b/polly/test/ScopInfo/switch-5.ll
index 09b1829f2bb53..24cc92a0933de 100644
--- a/polly/test/ScopInfo/switch-5.ll
+++ b/polly/test/ScopInfo/switch-5.ll
@@ -42,7 +42,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32* %B, i32 %N) {
+define void @f(ptr %A, ptr %B, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -53,19 +53,19 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp, label %for.body, label %for.end.loopexit
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp1, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   switch i32 %N, label %sw.default [
     i32 0, label %sw.bb
   ]
 
 sw.bb:                                            ; preds = %for.body
-  %arrayidx2 = getelementptr inbounds i32, i32* %B, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx2, align 4
   %inc3 = add nsw i32 %tmp2, 1
-  store i32 %inc3, i32* %arrayidx2, align 4
+  store i32 %inc3, ptr %arrayidx2, align 4
   br label %sw.epilog
 
 sw.default:                                       ; preds = %for.body

diff  --git a/polly/test/ScopInfo/switch-6.ll b/polly/test/ScopInfo/switch-6.ll
index 7b5c78296f963..efb3df504d239 100644
--- a/polly/test/ScopInfo/switch-6.ll
+++ b/polly/test/ScopInfo/switch-6.ll
@@ -79,7 +79,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = sext i32 %N to i64
   br label %for.cond
@@ -99,31 +99,31 @@ for.body:                                         ; preds = %for.cond
   ]
 
 sw.bb:                                            ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %add = add nsw i32 %tmp2, 1
-  store i32 %add, i32* %arrayidx, align 4
+  store i32 %add, ptr %arrayidx, align 4
   br label %sw.epilog
 
 sw.bb.1:                                          ; preds = %for.body
-  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp3 = load i32, i32* %arrayidx3, align 4
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp3 = load i32, ptr %arrayidx3, align 4
   %add4 = add nsw i32 %tmp3, 2
-  store i32 %add4, i32* %arrayidx3, align 4
+  store i32 %add4, ptr %arrayidx3, align 4
   br label %sw.epilog
 
 sw.bb.5:                                          ; preds = %for.body
-  %arrayidx7 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp4 = load i32, i32* %arrayidx7, align 4
+  %arrayidx7 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp4 = load i32, ptr %arrayidx7, align 4
   %add8 = add nsw i32 %tmp4, 3
-  store i32 %add8, i32* %arrayidx7, align 4
+  store i32 %add8, ptr %arrayidx7, align 4
   br label %sw.epilog
 
 sw.bb.9:                                          ; preds = %for.body
-  %arrayidx11 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp5 = load i32, i32* %arrayidx11, align 4
+  %arrayidx11 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp5 = load i32, ptr %arrayidx11, align 4
   %add12 = add nsw i32 %tmp5, 4
-  store i32 %add12, i32* %arrayidx11, align 4
+  store i32 %add12, ptr %arrayidx11, align 4
   br label %sw.epilog
 
 sw.default:                                       ; preds = %for.body

diff  --git a/polly/test/ScopInfo/switch-7.ll b/polly/test/ScopInfo/switch-7.ll
index 1f102bde6efd2..2f0d034e84fe0 100644
--- a/polly/test/ScopInfo/switch-7.ll
+++ b/polly/test/ScopInfo/switch-7.ll
@@ -56,7 +56,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %c, i32 %N) {
+define void @f(ptr %A, i32 %c, i32 %N) {
 entry:
   br label %entry.split
 
@@ -79,12 +79,12 @@ for.cond:                                         ; preds = %for.inc, %sw.bb
 for.body:                                         ; preds = %for.cond
   %sub = add nsw i32 %j.0, -1
   %idxprom = sext i32 %sub to i64
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
-  %tmp6 = load i32, i32* %arrayidx, align 4
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp7 = load i32, i32* %arrayidx2, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %idxprom
+  %tmp6 = load i32, ptr %arrayidx, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp7 = load i32, ptr %arrayidx2, align 4
   %add = add nsw i32 %tmp7, %tmp6
-  store i32 %add, i32* %arrayidx2, align 4
+  store i32 %add, ptr %arrayidx2, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -106,12 +106,12 @@ for.cond.5:                                       ; preds = %for.inc.14, %sw.bb.
 
 for.body.7:                                       ; preds = %for.cond.5
   %tmp9 = add nsw i64 %indvars.iv3, -1
-  %arrayidx10 = getelementptr inbounds i32, i32* %A, i64 %tmp9
-  %tmp10 = load i32, i32* %arrayidx10, align 4
-  %arrayidx12 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv3
-  %tmp11 = load i32, i32* %arrayidx12, align 4
+  %arrayidx10 = getelementptr inbounds i32, ptr %A, i64 %tmp9
+  %tmp10 = load i32, ptr %arrayidx10, align 4
+  %arrayidx12 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv3
+  %tmp11 = load i32, ptr %arrayidx12, align 4
   %add13 = add nsw i32 %tmp11, %tmp10
-  store i32 %add13, i32* %arrayidx12, align 4
+  store i32 %add13, ptr %arrayidx12, align 4
   br label %for.inc.14
 
 for.inc.14:                                       ; preds = %for.body.7

diff  --git a/polly/test/ScopInfo/tempscop-printing.ll b/polly/test/ScopInfo/tempscop-printing.ll
index ea852e50b2b94..80c675d4c3d38 100644
--- a/polly/test/ScopInfo/tempscop-printing.ll
+++ b/polly/test/ScopInfo/tempscop-printing.ll
@@ -42,7 +42,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"
 
 
-define void @f(i64* noalias %A, i64 %N, i64* noalias %init_ptr) nounwind {
+define void @f(ptr noalias %A, i64 %N, ptr noalias %init_ptr) nounwind {
 entry:
   br label %for.i
 
@@ -52,14 +52,14 @@ for.i:
   br label %entry.next
 
 entry.next:
-  %init = load i64, i64* %init_ptr
+  %init = load i64, ptr %init_ptr
   br label %for.j
 
 for.j:
   %indvar.j = phi i64 [ 0, %entry.next ], [ %indvar.j.next, %for.j ]
   %init_plus_two = add i64 %init, 2
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
-  store i64 %init_plus_two, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar.j
+  store i64 %init_plus_two, ptr %scevgep
   %indvar.j.next = add nsw i64 %indvar.j, 1
   %exitcond.j = icmp eq i64 %indvar.j.next, %N
   br i1 %exitcond.j, label %for.i.end, label %for.j
@@ -72,7 +72,7 @@ return:
   ret void
 }
 
-define void @g(i64* noalias %A, i64 %N, i64* noalias %init_ptr) nounwind {
+define void @g(ptr noalias %A, i64 %N, ptr noalias %init_ptr) nounwind {
 entry:
   br label %for.i
 
@@ -82,13 +82,13 @@ for.i:
   br label %entry.next
 
 entry.next:
-  %init = load i64, i64* %init_ptr
+  %init = load i64, ptr %init_ptr
   br label %for.j
 
 for.j:
   %indvar.j = phi i64 [ 0, %entry.next ], [ %indvar.j.next, %for.j ]
-  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
-  store i64 %init, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %A, i64 %indvar.j
+  store i64 %init, ptr %scevgep
   %indvar.j.next = add nsw i64 %indvar.j, 1
   %exitcond.j = icmp eq i64 %indvar.j.next, %N
   br i1 %exitcond.j, label %for.i.end, label %for.j

diff  --git a/polly/test/ScopInfo/test-wrapping-in-condition.ll b/polly/test/ScopInfo/test-wrapping-in-condition.ll
index 5b4da78bb587a..3ff978f7265ed 100644
--- a/polly/test/ScopInfo/test-wrapping-in-condition.ll
+++ b/polly/test/ScopInfo/test-wrapping-in-condition.ll
@@ -12,7 +12,7 @@
 ;        if ((signed char)i < 100)
 ;          A[i] += i;
 ;    }
-define void @foo(float* %A, i64 %N) {
+define void @foo(ptr %A, i64 %N) {
 bb:
   br label %bb1
 
@@ -28,10 +28,10 @@ bb2:                                              ; preds = %bb1
 
 bb5:                                              ; preds = %bb2
   %tmp6 = sitofp i64 %i.0 to float
-  %tmp7 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp8 = load float, float* %tmp7, align 4
+  %tmp7 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp8 = load float, ptr %tmp7, align 4
   %tmp9 = fadd float %tmp8, %tmp6
-  store float %tmp9, float* %tmp7, align 4
+  store float %tmp9, ptr %tmp7, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb5, %bb2

diff  --git a/polly/test/ScopInfo/truncate-1.ll b/polly/test/ScopInfo/truncate-1.ll
index de985b8dc8c43..5c5fac150b4b5 100644
--- a/polly/test/ScopInfo/truncate-1.ll
+++ b/polly/test/ScopInfo/truncate-1.ll
@@ -16,7 +16,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i8* %A, i16 signext %N) {
+define void @f(ptr %A, i16 signext %N) {
 entry:
   br label %for.cond
 
@@ -31,10 +31,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %idxprom = sext i8 %i.0 to i64
-  %arrayidx = getelementptr inbounds i8, i8* %A, i64 %idxprom
-  %tmp = load i8, i8* %arrayidx, align 1
+  %arrayidx = getelementptr inbounds i8, ptr %A, i64 %idxprom
+  %tmp = load i8, ptr %arrayidx, align 1
   %inc = add i8 %tmp, 1
-  store i8 %inc, i8* %arrayidx, align 1
+  store i8 %inc, ptr %arrayidx, align 1
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/truncate-2.ll b/polly/test/ScopInfo/truncate-2.ll
index 675af1a79d6ee..e6c5f2cb32d09 100644
--- a/polly/test/ScopInfo/truncate-2.ll
+++ b/polly/test/ScopInfo/truncate-2.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i8* %A, i16 signext %N) {
+define void @f(ptr %A, i16 signext %N) {
 entry:
   br label %for.cond
 
@@ -29,10 +29,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 
 for.body:                                         ; preds = %for.cond
   %idxprom = trunc i16 %N to i8
-  %arrayidx = getelementptr inbounds i8, i8* %A, i8 %idxprom
-  %tmp1 = load i8, i8* %arrayidx, align 1
+  %arrayidx = getelementptr inbounds i8, ptr %A, i8 %idxprom
+  %tmp1 = load i8, ptr %arrayidx, align 1
   %inc = add i8 %tmp1, 1
-  store i8 %inc, i8* %arrayidx, align 1
+  store i8 %inc, ptr %arrayidx, align 1
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/truncate-3.ll b/polly/test/ScopInfo/truncate-3.ll
index f6a1f3920eb1a..dd0fe489e9906 100644
--- a/polly/test/ScopInfo/truncate-3.ll
+++ b/polly/test/ScopInfo/truncate-3.ll
@@ -10,15 +10,15 @@
 
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 
-define void @wobble(i16* %A, i32 %p) {
+define void @wobble(ptr %A, i32 %p) {
 bb:
   %tmp1 = and i32 %p, 255
   br label %bb4
 
 bb4:                                              ; preds = %bb4, %bb
-  %indvar = phi i16* [ %A, %bb ], [ %indvar.next, %bb4 ]
-  %val = load i16, i16* %indvar
-  %indvar.next = getelementptr inbounds i16, i16* %indvar, i32 %tmp1
+  %indvar = phi ptr [ %A, %bb ], [ %indvar.next, %bb4 ]
+  %val = load i16, ptr %indvar
+  %indvar.next = getelementptr inbounds i16, ptr %indvar, i32 %tmp1
   br i1 false, label %bb4, label %bb9
 
 bb9:                                              ; preds = %bb4

diff  --git a/polly/test/ScopInfo/two-loops-one-infinite.ll b/polly/test/ScopInfo/two-loops-one-infinite.ll
index ae7c718876040..71f72383b0480 100644
--- a/polly/test/ScopInfo/two-loops-one-infinite.ll
+++ b/polly/test/ScopInfo/two-loops-one-infinite.ll
@@ -6,15 +6,15 @@
 ;
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"
 
-define void @foo(i32* noalias nocapture readonly %xxx, i32* noalias nocapture readonly %yyy, i8*** nocapture readonly %zzz, i32 %conv6) {
+define void @foo(ptr noalias nocapture readonly %xxx, ptr noalias nocapture readonly %yyy, ptr nocapture readonly %zzz, i32 %conv6) {
 while.body.us.preheader:
- %a2 = load i8**, i8*** %zzz, align 4
+ %a2 = load ptr, ptr %zzz, align 4
  %sub = add nsw i32 %conv6, -1
   br label %while.body.us
 
 while.body.us:                                    ; preds = %while.body.us.preheader, %if.then.us
   %uuu = phi i32 [ %www, %if.then.us ], [ 0, %while.body.us.preheader ]
-  %a13 = load i32, i32* %yyy, align 8
+  %a13 = load i32, ptr %yyy, align 8
   %vvv = icmp sgt i32 %a13, 0
   br i1 %vvv, label %while.body.13.us58.preheader, label %if.then.us
 
@@ -23,9 +23,9 @@ while.body.13.us58.preheader:                     ; preds = %while.body.us
 
 if.then.us:                                       ; preds = %while.body.us
   %add.us = add nuw nsw i32 %uuu, 1
-  tail call void @goo(i8** %a2, i32 %uuu, i8** %a2, i32 %add.us, i32 %sub, i32 %a13) #3
+  tail call void @goo(ptr %a2, i32 %uuu, ptr %a2, i32 %add.us, i32 %sub, i32 %a13) #3
   %www = add nuw nsw i32 %uuu, %conv6
-  %a14 = load i32, i32* %xxx, align 4
+  %a14 = load i32, ptr %xxx, align 4
   %cmp.us = icmp slt i32 %www, %a14
   br i1 %cmp.us, label %while.body.us, label %while.end.21.loopexit145
 
@@ -36,5 +36,5 @@ while.end.21.loopexit145:
   ret void
 }
 
-declare void @goo(i8**, i32, i8**, i32, i32, i32) #1
+declare void @goo(ptr, i32, ptr, i32, i32, i32) #1
 

diff  --git a/polly/test/ScopInfo/two-loops-right-after-each-other.ll b/polly/test/ScopInfo/two-loops-right-after-each-other.ll
index a164513f1688e..dd457c31afddf 100644
--- a/polly/test/ScopInfo/two-loops-right-after-each-other.ll
+++ b/polly/test/ScopInfo/two-loops-right-after-each-other.ll
@@ -21,7 +21,7 @@
 ; CHECK-NEXT:             [N] -> { Stmt_loop_2[i0] -> MemRef_A[0] };
 ; CHECK-NEXT: }
 
-define void @foo(float* %A, i64 %N) {
+define void @foo(ptr %A, i64 %N) {
 entry:
   br label %branch
 
@@ -32,18 +32,18 @@ branch:
 loop.1:
   %indvar.1 = phi i64 [0, %branch], [%indvar.next.1, %loop.1]
   %indvar.next.1 = add i64 %indvar.1, 1
-  %val.1 = load float, float* %A
+  %val.1 = load float, ptr %A
   %sum.1 = fadd float %val.1, 1.0
-  store float %sum.1, float* %A
+  store float %sum.1, ptr %A
   %cond.1 = icmp sle i64 %indvar.1, 100
   br i1 %cond.1, label %loop.1, label %loop.2
 
 loop.2:
   %indvar.2 = phi i64 [0, %loop.1], [%indvar.next.2, %loop.2]
   %indvar.next.2 = add i64 %indvar.2, 1
-  %val.2 = load float, float* %A
+  %val.2 = load float, ptr %A
   %sum.2 = fadd float %val.2, 1.0
-  store float %sum.2, float* %A
+  store float %sum.2, ptr %A
   %cond.2 = icmp sle i64 %indvar.2, 300
   br i1 %cond.2, label %loop.2, label %merge
 

diff  --git a/polly/test/ScopInfo/unnamed_nonaffine.ll b/polly/test/ScopInfo/unnamed_nonaffine.ll
index 61516e2fbca34..bf32cc7806f44 100644
--- a/polly/test/ScopInfo/unnamed_nonaffine.ll
+++ b/polly/test/ScopInfo/unnamed_nonaffine.ll
@@ -94,7 +94,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %b) {
+define void @f(ptr %A, i32 %b) {
 bb:
   br label %bb1
 
@@ -124,15 +124,15 @@ bb8:                                              ; preds = %bb4
 bb10:                                             ; preds = %bb9, %bb3
   %x.1 = phi i32 [ 0, %bb3 ], [ 3, %bb7 ], [ %b, %bb8 ]
   %tmp11 = sext i32 %x.1 to i64
-  %tmp12 = getelementptr inbounds i32, i32* %A, i64 %tmp11
-  %tmp13 = load i32,  i32* %tmp12, align 4
+  %tmp12 = getelementptr inbounds i32, ptr %A, i64 %tmp11
+  %tmp13 = load i32,  ptr %tmp12, align 4
   %tmp14 = icmp eq i32 %tmp13, 0
   br i1 %tmp14, label %bb18, label %bb15
 
 bb15:                                             ; preds = %bb10
   %tmp16 = sext i32 %x.1 to i64
-  %tmp17 = getelementptr inbounds i32, i32* %A, i64 %tmp16
-  store i32 0, i32* %tmp17, align 4
+  %tmp17 = getelementptr inbounds i32, ptr %A, i64 %tmp16
+  store i32 0, ptr %tmp17, align 4
   br label %bb18
 
 bb18:                                             ; preds = %bb10, %bb15

diff  --git a/polly/test/ScopInfo/unnamed_stmts.ll b/polly/test/ScopInfo/unnamed_stmts.ll
index 4cf4f55517831..686c0f87d9cf0 100644
--- a/polly/test/ScopInfo/unnamed_stmts.ll
+++ b/polly/test/ScopInfo/unnamed_stmts.ll
@@ -48,7 +48,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @vec3(i64 %n, float*, float*) #0 {
+define void @vec3(i64 %n, ptr, ptr) #0 {
   br label %.split
 
 .split:                                           ; preds = %0
@@ -77,15 +77,15 @@ define void @vec3(i64 %n, float*, float*) #0 {
 ; <label>:4:                                      ; preds = %.lr.ph8, %4
   %j.07 = phi i64 [ 0, %.lr.ph8 ], [ %14, %4 ]
   %5 = mul nsw i64 %i.010, %n
-  %6 = getelementptr inbounds float, float* %1, i64 %5
-  %7 = getelementptr inbounds float, float* %6, i64 %j.07
-  %8 = load float, float* %7, align 4
+  %6 = getelementptr inbounds float, ptr %1, i64 %5
+  %7 = getelementptr inbounds float, ptr %6, i64 %j.07
+  %8 = load float, ptr %7, align 4
   %9 = mul nsw i64 %i.010, %n
-  %10 = getelementptr inbounds float, float* %0, i64 %9
-  %11 = getelementptr inbounds float, float* %10, i64 %j.07
-  %12 = load float, float* %11, align 4
+  %10 = getelementptr inbounds float, ptr %0, i64 %9
+  %11 = getelementptr inbounds float, ptr %10, i64 %j.07
+  %12 = load float, ptr %11, align 4
   %13 = fadd float %8, %12
-  store float %13, float* %11, align 4
+  store float %13, ptr %11, align 4
   %14 = add nuw nsw i64 %j.07, 1
   %exitcond13 = icmp ne i64 %14, %n
   br i1 %exitcond13, label %4, label %._crit_edge9
@@ -109,19 +109,19 @@ define void @vec3(i64 %n, float*, float*) #0 {
 ; <label>:18:                                     ; preds = %.lr.ph, %18
   %j2.03 = phi i64 [ 0, %.lr.ph ], [ %28, %"2" ]
   %19 = mul nsw i64 %i1.04, %n
-  %20 = getelementptr inbounds float, float* %0, i64 %19
-  %21 = getelementptr inbounds float, float* %20, i64 %j2.03
-  %22 = load float, float* %21, align 4
+  %20 = getelementptr inbounds float, ptr %0, i64 %19
+  %21 = getelementptr inbounds float, ptr %20, i64 %j2.03
+  %22 = load float, ptr %21, align 4
   %23 = mul nsw i64 %i1.04, %n
-  %24 = getelementptr inbounds float, float* %1, i64 %23
-  %25 = getelementptr inbounds float, float* %24, i64 %j2.03
-  %26 = load float, float* %25, align 4
+  %24 = getelementptr inbounds float, ptr %1, i64 %23
+  %25 = getelementptr inbounds float, ptr %24, i64 %j2.03
+  %26 = load float, ptr %25, align 4
   %27 = fadd float %22, %26
-  store float %27, float* %25, align 4
+  store float %27, ptr %25, align 4
   br label %"2"
 
 "2":
-  store float 42.0, float* %25
+  store float 42.0, ptr %25
   %28 = add nuw nsw i64 %j2.03, 1
   %exitcond = icmp ne i64 %28, %n
   br i1 %exitcond, label %18, label %._crit_edge

diff  --git a/polly/test/ScopInfo/unprofitable_scalar-accs.ll b/polly/test/ScopInfo/unprofitable_scalar-accs.ll
index b4d6fc61860fd..9703587091a71 100644
--- a/polly/test/ScopInfo/unprofitable_scalar-accs.ll
+++ b/polly/test/ScopInfo/unprofitable_scalar-accs.ll
@@ -5,7 +5,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @func(i32 %n, i32 %m, double* noalias nonnull %A) {
+define void @func(i32 %n, i32 %m, ptr noalias nonnull %A) {
 entry:
   br label %outer.for
 
@@ -21,9 +21,9 @@ outer.for:
     br i1 %i.cmp, label %body1, label %inner.exit
 
     body1:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %i
-      %a = load double, double* %A_idx
-      store double %a, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %i
+      %a = load double, ptr %A_idx
+      store double %a, ptr %A_idx
       br label %inner.inc
 
   inner.inc:
@@ -34,7 +34,7 @@ outer.for:
     br label %outer.inc
 
 outer.inc:
-  store double %b, double* %A
+  store double %b, ptr %A
   %j.inc = add nuw nsw i32 %j, 1
   br label %outer.for
 

diff  --git a/polly/test/ScopInfo/unsigned-condition.ll b/polly/test/ScopInfo/unsigned-condition.ll
index ecf5f55961e4a..35673d1b6a368 100644
--- a/polly/test/ScopInfo/unsigned-condition.ll
+++ b/polly/test/ScopInfo/unsigned-condition.ll
@@ -20,7 +20,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"
 
-define void @f(i64* nocapture %a, i64 %N, i64 %P) nounwind {
+define void @f(ptr nocapture %a, i64 %N, i64 %P) nounwind {
 entry:
   br label %bb
 
@@ -30,8 +30,8 @@ bb:
   br i1 %brcond, label %store, label %bb.backedge
 
 store:
-  %scevgep = getelementptr inbounds i64, i64* %a, i64 %i
-  store i64 %i, i64* %scevgep
+  %scevgep = getelementptr inbounds i64, ptr %a, i64 %i
+  store i64 %i, ptr %scevgep
   br label %bb.backedge
 
 bb.backedge:

diff  --git a/polly/test/ScopInfo/unsigned-division-1.ll b/polly/test/ScopInfo/unsigned-division-1.ll
index 6570745ee71fa..8c65062bd9412 100644
--- a/polly/test/ScopInfo/unsigned-division-1.ll
+++ b/polly/test/ScopInfo/unsigned-division-1.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = lshr i32 %N, 1
   br label %for.cond
@@ -27,10 +27,10 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp1, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/unsigned-division-2.ll b/polly/test/ScopInfo/unsigned-division-2.ll
index a150b2483b2f3..bf4ebce9099aa 100644
--- a/polly/test/ScopInfo/unsigned-division-2.ll
+++ b/polly/test/ScopInfo/unsigned-division-2.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i32 %N) {
+define void @f(ptr %A, i32 %N) {
 entry:
   %tmp = lshr i32 %N, 1
   %tmp1 = add i32 %tmp, 3
@@ -28,10 +28,10 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp2, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/unsigned-division-3.ll b/polly/test/ScopInfo/unsigned-division-3.ll
index a4ea628ff9877..47ba1f2ef09df 100644
--- a/polly/test/ScopInfo/unsigned-division-3.ll
+++ b/polly/test/ScopInfo/unsigned-division-3.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i8 %N) {
+define void @f(ptr %A, i8 %N) {
 entry:
   %tmp = udiv i8 %N, -128
   br label %for.cond
@@ -27,10 +27,10 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp2, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/unsigned-division-4.ll b/polly/test/ScopInfo/unsigned-division-4.ll
index 3a68615633cf9..edcd8a18a8549 100644
--- a/polly/test/ScopInfo/unsigned-division-4.ll
+++ b/polly/test/ScopInfo/unsigned-division-4.ll
@@ -15,7 +15,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i8 %N) {
+define void @f(ptr %A, i8 %N) {
 entry:
   %tmp1 = udiv i8 %N, -128
   %tmp = add i8 %tmp1, 3
@@ -28,10 +28,10 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp2, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/unsigned-division-5.ll b/polly/test/ScopInfo/unsigned-division-5.ll
index b3be6de1a318c..f9a3d39288a96 100644
--- a/polly/test/ScopInfo/unsigned-division-5.ll
+++ b/polly/test/ScopInfo/unsigned-division-5.ll
@@ -21,7 +21,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A, i64 %N) {
+define void @f(ptr %A, i64 %N) {
 entry:
   br label %for.cond
 
@@ -33,11 +33,11 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %mul = mul nsw i64 %N, 5
   %div2 = udiv i64 %mul, 3
-  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %div2
-  %load = load i32, i32* %arrayidx2, align 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %div2
+  %load = load i32, ptr %arrayidx2, align 4
   %div = udiv i64 %indvars.iv, 3
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %div
-  store i32 %load, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %div
+  store i32 %load, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/unsigned_wrap_uge.ll b/polly/test/ScopInfo/unsigned_wrap_uge.ll
index 8e15119da1528..89c50ee3764b8 100644
--- a/polly/test/ScopInfo/unsigned_wrap_uge.ll
+++ b/polly/test/ScopInfo/unsigned_wrap_uge.ll
@@ -7,7 +7,7 @@
 ;     A[i] = 42;
 
 
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -21,8 +21,8 @@ entry:
   br i1 %inbounds, label %ifinbounds, label %ifoutbounds
 
   ifinbounds:
-  %A_idx = getelementptr inbounds double, double* %A, i32 %j
-  store double 42.0, double* %A_idx
+  %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+  store double 42.0, ptr %A_idx
   br label %inc
 
   ifoutbounds:

diff  --git a/polly/test/ScopInfo/unsigned_wrap_ugt.ll b/polly/test/ScopInfo/unsigned_wrap_ugt.ll
index 50db5fd1fb61e..3249123c9918b 100644
--- a/polly/test/ScopInfo/unsigned_wrap_ugt.ll
+++ b/polly/test/ScopInfo/unsigned_wrap_ugt.ll
@@ -7,7 +7,7 @@
 ;     A[i] = 42;
 
 
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -21,8 +21,8 @@ entry:
   br i1 %inbounds, label %ifinbounds, label %ifoutbounds
 
   ifinbounds:
-  %A_idx = getelementptr inbounds double, double* %A, i32 %j
-  store double 42.0, double* %A_idx
+  %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+  store double 42.0, ptr %A_idx
   br label %inc
 
   ifoutbounds:

diff  --git a/polly/test/ScopInfo/unsigned_wrap_ule.ll b/polly/test/ScopInfo/unsigned_wrap_ule.ll
index 1b9c02f2bc36d..3c6ea18b439c9 100644
--- a/polly/test/ScopInfo/unsigned_wrap_ule.ll
+++ b/polly/test/ScopInfo/unsigned_wrap_ule.ll
@@ -7,7 +7,7 @@
 ;     A[i] = 42;
 
 
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -21,8 +21,8 @@ entry:
   br i1 %inbounds, label %ifinbounds, label %ifoutbounds
 
   ifinbounds:
-  %A_idx = getelementptr inbounds double, double* %A, i32 %j
-  store double 42.0, double* %A_idx
+  %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+  store double 42.0, ptr %A_idx
   br label %inc
 
   ifoutbounds:

diff  --git a/polly/test/ScopInfo/unsigned_wrap_ult.ll b/polly/test/ScopInfo/unsigned_wrap_ult.ll
index 815f67f42f1da..5d859f85d52b6 100644
--- a/polly/test/ScopInfo/unsigned_wrap_ult.ll
+++ b/polly/test/ScopInfo/unsigned_wrap_ult.ll
@@ -7,7 +7,7 @@
 ;     A[i] = 42;
 
 
-define void @func(double* noalias nonnull %A) {
+define void @func(ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -21,8 +21,8 @@ entry:
   br i1 %inbounds, label %ifinbounds, label %ifoutbounds
 
   ifinbounds:
-  %A_idx = getelementptr inbounds double, double* %A, i32 %j
-  store double 42.0, double* %A_idx
+  %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+  store double 42.0, ptr %A_idx
   br label %inc
 
   ifoutbounds:

diff  --git a/polly/test/ScopInfo/user_context.ll b/polly/test/ScopInfo/user_context.ll
index 8b754ddbc6393..46232cd59c03f 100644
--- a/polly/test/ScopInfo/user_context.ll
+++ b/polly/test/ScopInfo/user_context.ll
@@ -17,14 +17,14 @@
 
 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"
 
-define void @f(i64* nocapture %a, i64 %N) nounwind {
+define void @f(ptr nocapture %a, i64 %N) nounwind {
 entry:
   br label %bb
 
 bb:                                               ; preds = %bb, %entry
   %i = phi i64 [ 0, %entry ], [ %i.inc, %bb ]
-  %scevgep = getelementptr i64, i64* %a, i64 %i
-  store i64 %i, i64* %scevgep
+  %scevgep = getelementptr i64, ptr %a, i64 %i
+  store i64 %i, ptr %scevgep
   %i.inc = add nsw i64 %i, 1
   %exitcond = icmp eq i64 %i.inc, %N
   br i1 %exitcond, label %return, label %bb

diff  --git a/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed-conditional.ll b/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed-conditional.ll
index 0953bfb915ee4..4bd02c96a3d27 100644
--- a/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed-conditional.ll
+++ b/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed-conditional.ll
@@ -23,7 +23,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @0 = private unnamed_addr constant { i16, i16, [14 x i8] } { i16 -1, i16 0, [14 x i8] c"'float [100]'\00" }
 @1 = private unnamed_addr constant { i16, i16, [7 x i8] } { i16 0, i16 13, [7 x i8] c"'long'\00" }
 
-define void @foo([100 x float]* %A, i64 %b, i64 %n) {
+define void @foo(ptr %A, i64 %b, i64 %n) {
 entry:
   br label %for.cond
 
@@ -39,8 +39,8 @@ if.cond:
 for.body:                                         ; preds = %for.cond
   %tmp = icmp slt i64 %i.0, 100
   call void @llvm.assume(i1 %tmp)
-  %arrayidx1 = getelementptr inbounds [100 x float], [100 x float]* %A, i64 42, i64 %i.0
-  store float 4.200000e+01, float* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds [100 x float], ptr %A, i64 42, i64 %i.0
+  store float 4.200000e+01, ptr %arrayidx1, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed.ll b/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed.ll
index f1c58d8c338e8..262bd1349a697 100644
--- a/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed.ll
+++ b/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed.ll
@@ -14,7 +14,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @0 = private unnamed_addr constant { i16, i16, [14 x i8] } { i16 -1, i16 0, [14 x i8] c"'float [100]'\00" }
 @1 = private unnamed_addr constant { i16, i16, [7 x i8] } { i16 0, i16 13, [7 x i8] c"'long'\00" }
 
-define void @foo([100 x float]* %A, i64 %n) {
+define void @foo(ptr %A, i64 %n) {
 entry:
   br label %for.cond
 
@@ -26,8 +26,8 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %tmp = icmp slt i64 %i.0, 100
   call void @llvm.assume(i1 %tmp)
-  %arrayidx1 = getelementptr inbounds [100 x float], [100 x float]* %A, i64 42, i64 %i.0
-  store float 4.200000e+01, float* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds [100 x float], ptr %A, i64 42, i64 %i.0
+  store float 4.200000e+01, ptr %arrayidx1, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/user_provided_assumptions-in-bb-unsigned.ll b/polly/test/ScopInfo/user_provided_assumptions-in-bb-unsigned.ll
index bb4e363d91f15..4a10fcff929a3 100644
--- a/polly/test/ScopInfo/user_provided_assumptions-in-bb-unsigned.ll
+++ b/polly/test/ScopInfo/user_provided_assumptions-in-bb-unsigned.ll
@@ -20,7 +20,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @0 = private unnamed_addr constant { i16, i16, [14 x i8] } { i16 -1, i16 0, [14 x i8] c"'float [100]'\00" }
 @1 = private unnamed_addr constant { i16, i16, [7 x i8] } { i16 0, i16 13, [7 x i8] c"'long'\00" }
 
-define void @foo([100 x float]* %A, i64 %n) {
+define void @foo(ptr %A, i64 %n) {
 entry:
   br label %for.cond
 
@@ -32,8 +32,8 @@ for.cond:                                         ; preds = %for.inc, %entry
 for.body:                                         ; preds = %for.cond
   %tmp = icmp slt i64 %i.0, 100
   call void @llvm.assume(i1 %tmp)
-  %arrayidx1 = getelementptr inbounds [100 x float], [100 x float]* %A, i64 42, i64 %i.0
-  store float 4.200000e+01, float* %arrayidx1, align 4
+  %arrayidx1 = getelementptr inbounds [100 x float], ptr %A, i64 42, i64 %i.0
+  store float 4.200000e+01, ptr %arrayidx1, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/user_provided_assumptions.ll b/polly/test/ScopInfo/user_provided_assumptions.ll
index aa3ab9652b538..6640e4a65e368 100644
--- a/polly/test/ScopInfo/user_provided_assumptions.ll
+++ b/polly/test/ScopInfo/user_provided_assumptions.ll
@@ -38,7 +38,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 @.str = private unnamed_addr constant [8 x i8] c"Printf!\00", align 1
 
-define void @valid(i32* noalias %A, i32* noalias %B, i32 %N, i32 %M, [100 x i32]* %C, i32 %Debug) {
+define void @valid(ptr noalias %A, ptr noalias %B, i32 %N, i32 %M, ptr %C, i32 %Debug) {
 entry:
   %sub = sub nsw i32 2147483647, %N
   %cmp = icmp sge i32 %sub, %M
@@ -64,8 +64,7 @@ entry.split:
   br i1 %cmp14, label %if.then, label %if.end
 
 if.then:                                          ; preds = %entry
-  %arrayidx16 = getelementptr inbounds [100 x i32], [100 x i32]* %C, i64 0, i64 0
-  store i32 0, i32* %arrayidx16, align 4
+  store i32 0, ptr %C, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %entry
@@ -86,16 +85,16 @@ for.cond.19:                                      ; preds = %for.cond, %for.body
 for.body.22:                                      ; preds = %for.cond.19
   %tmp9 = mul nsw i64 %indvars.iv3, %M64
   %tmp10 = add nsw i64 %tmp9, %indvars.iv
-  %arrayidx24 = getelementptr inbounds i32, i32* %A, i64 %tmp10
-  %tmp11 = load i32, i32* %arrayidx24, align 4
+  %arrayidx24 = getelementptr inbounds i32, ptr %A, i64 %tmp10
+  %tmp11 = load i32, ptr %arrayidx24, align 4
   %tmp12 = add nuw nsw i64 %indvars.iv3, %indvars.iv
-  %arrayidx27 = getelementptr inbounds i32, i32* %B, i64 %tmp12
-  %tmp13 = load i32, i32* %arrayidx27, align 4
+  %arrayidx27 = getelementptr inbounds i32, ptr %B, i64 %tmp12
+  %tmp13 = load i32, ptr %arrayidx27, align 4
   %add28 = add nsw i32 %tmp11, %tmp13
-  %arrayidx32 = getelementptr inbounds [100 x i32], [100 x i32]* %C, i64 %indvars.iv3, i64 %indvars.iv
-  %tmp14 = load i32, i32* %arrayidx32, align 4
+  %arrayidx32 = getelementptr inbounds [100 x i32], ptr %C, i64 %indvars.iv3, i64 %indvars.iv
+  %tmp14 = load i32, ptr %arrayidx32, align 4
   %add33 = add nsw i32 %tmp14, %add28
-  store i32 %add33, i32* %arrayidx32, align 4
+  store i32 %add33, ptr %arrayidx32, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   br label %for.cond.19
 
@@ -104,7 +103,7 @@ for.end:                                          ; preds = %for.cond.19
   br i1 %tobool, label %for.inc.36, label %if.then.34
 
 if.then.34:                                       ; preds = %for.end
-  %call = call i32 (i8*, ...) @printf(i8* nonnull getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0))
+  %call = call i32 (ptr, ...) @printf(ptr nonnull @.str)
   br label %for.inc.36
 
 for.inc.36:                                       ; preds = %for.end, %if.then.34
@@ -118,6 +117,6 @@ for.end.38:                                       ; preds = %for.cond
 ; Function Attrs: nounwind
 declare void @llvm.assume(i1) #0
 
-declare i32 @printf(i8*, ...)
+declare i32 @printf(ptr, ...)
 
 attributes #0 = { nounwind }

diff  --git a/polly/test/ScopInfo/user_provided_assumptions_2.ll b/polly/test/ScopInfo/user_provided_assumptions_2.ll
index 8ea726a85e99c..994cd6f151038 100644
--- a/polly/test/ScopInfo/user_provided_assumptions_2.ll
+++ b/polly/test/ScopInfo/user_provided_assumptions_2.ll
@@ -27,7 +27,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @f(i32* %A, i32 %N, i32 %M) {
+define i32 @f(ptr %A, i32 %N, i32 %M) {
 entry:
   %cmp = icmp sgt i32 %M, 0
   call void @llvm.assume(i1 %cmp)
@@ -40,10 +40,10 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %cmp1, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp1, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/user_provided_assumptions_3.ll b/polly/test/ScopInfo/user_provided_assumptions_3.ll
index 572ee984d319a..2fcde8bd18264 100644
--- a/polly/test/ScopInfo/user_provided_assumptions_3.ll
+++ b/polly/test/ScopInfo/user_provided_assumptions_3.ll
@@ -21,7 +21,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define i32 @f(i32* %A, i32 %N, i32 %M) {
+define i32 @f(ptr %A, i32 %N, i32 %M) {
 entry:
   %cmp = icmp sgt i32 %M, 0
   %cmp1 = icmp sgt i32 %N, %M
@@ -36,10 +36,10 @@ for.cond:                                         ; preds = %for.inc, %land.end
   br i1 %cmp2, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp2, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/user_provided_non_dominating_assumptions.ll b/polly/test/ScopInfo/user_provided_non_dominating_assumptions.ll
index 4ca96ff574229..1eb3c15810e4b 100644
--- a/polly/test/ScopInfo/user_provided_non_dominating_assumptions.ll
+++ b/polly/test/ScopInfo/user_provided_non_dominating_assumptions.ll
@@ -53,7 +53,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* noalias %A, i32* noalias %B, i32 %i, i32 %N, i32 %M, [100 x i32]* %C) {
+define void @f(ptr noalias %A, ptr noalias %B, i32 %i, i32 %N, i32 %M, ptr %C) {
 entry:
   %tmp = zext i32 %M to i64
   %tmp6 = sext i32 %i to i64
@@ -79,16 +79,16 @@ for.cond.2:                                       ; preds = %for.inc, %for.body
 for.body.4:                                       ; preds = %for.cond.2
   %tmp9 = mul nsw i64 %indvars.iv3, %tmp8
   %tmp10 = add nsw i64 %tmp9, %indvars.iv
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %tmp10
-  %tmp11 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %tmp10
+  %tmp11 = load i32, ptr %arrayidx, align 4
   %tmp12 = add nsw i64 %indvars.iv3, %indvars.iv
-  %arrayidx8 = getelementptr inbounds i32, i32* %B, i64 %tmp12
-  %tmp13 = load i32, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %B, i64 %tmp12
+  %tmp13 = load i32, ptr %arrayidx8, align 4
   %add9 = add nsw i32 %tmp11, %tmp13
-  %arrayidx13 = getelementptr inbounds [100 x i32], [100 x i32]* %C, i64 %indvars.iv3, i64 %indvars.iv
-  %tmp14 = load i32, i32* %arrayidx13, align 4
+  %arrayidx13 = getelementptr inbounds [100 x i32], ptr %C, i64 %indvars.iv3, i64 %indvars.iv
+  %tmp14 = load i32, ptr %arrayidx13, align 4
   %add14 = add nsw i32 %tmp14, %add9
-  store i32 %add14, i32* %arrayidx13, align 4
+  store i32 %add14, ptr %arrayidx13, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body.4

diff  --git a/polly/test/ScopInfo/variant_base_pointer.ll b/polly/test/ScopInfo/variant_base_pointer.ll
index 70785d221bc54..321657c87e795 100644
--- a/polly/test/ScopInfo/variant_base_pointer.ll
+++ b/polly/test/ScopInfo/variant_base_pointer.ll
@@ -15,11 +15,10 @@ entry:
   br label %if.end
 
 if.end:                                           ; preds = %entry
-  %call = call i16** @__ctype_b_loc() #0
-  %tmp = load i16*, i16** %call, align 8
-  %arrayidx = getelementptr inbounds i16, i16* %tmp, i64 0
-  %tmp1 = load i16, i16* %arrayidx, align 2
-  store i16 3, i16 *%arrayidx, align 2
+  %call = call ptr @__ctype_b_loc() #0
+  %tmp = load ptr, ptr %call, align 8
+  %tmp1 = load i16, ptr %tmp, align 2
+  store i16 3, ptr %tmp, align 2
   br i1 false, label %if.then.2, label %if.end.3
 
 if.then.2:                                        ; preds = %if.end
@@ -33,6 +32,6 @@ cleanup:                                          ; preds = %if.end.3, %if.then.
 }
 
 ; Function Attrs: nounwind readnone
-declare i16** @__ctype_b_loc() #0
+declare ptr @__ctype_b_loc() #0
 
 attributes #0 = { nounwind readnone }

diff  --git a/polly/test/ScopInfo/variant_load_empty_domain.ll b/polly/test/ScopInfo/variant_load_empty_domain.ll
index be4a3a55a8a99..0e685c3c7e733 100644
--- a/polly/test/ScopInfo/variant_load_empty_domain.ll
+++ b/polly/test/ScopInfo/variant_load_empty_domain.ll
@@ -16,7 +16,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* %A) {
+define void @f(ptr %A) {
 entry:
   br label %for.cond
 
@@ -26,18 +26,18 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp = load i32, ptr %arrayidx, align 4
   %inc = add nsw i32 %tmp, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br i1 false, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %tmp1 = load i32, i32* %A, align 4
-  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx4, align 4
+  %tmp1 = load i32, ptr %A, align 4
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx4, align 4
   %add = add nsw i32 %tmp2, %tmp1
-  store i32 %add, i32* %arrayidx4, align 4
+  store i32 %add, ptr %arrayidx4, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_0.ll b/polly/test/ScopInfo/wraping_signed_expr_0.ll
index 81fb48afc6a07..d40c7009c95a5 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_0.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_0.ll
@@ -24,7 +24,7 @@
 ;
 target datalayout = "e-m:e-i8:64-f80:128-n8:16:32:64-S128"
 
-define void @wrap(i32* %A, i8 %N, i8 %p) {
+define void @wrap(ptr %A, i8 %N, i8 %p) {
 bb:
   br label %bb2
 
@@ -35,8 +35,8 @@ bb2:                                              ; preds = %bb7, %bb
 
 bb4:                                              ; preds = %bb2
   %tmp5 = add i8 %indvars.iv, 3
-  %tmp6 = getelementptr i32, i32* %A, i8 %tmp5
-  store i32 0, i32* %tmp6, align 4
+  %tmp6 = getelementptr i32, ptr %A, i8 %tmp5
+  store i32 0, ptr %tmp6, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb4
@@ -47,7 +47,7 @@ bb8:                                              ; preds = %bb2
   ret void
 }
 
-define void @nowrap(i32* %A, i8 %N, i8 %p) {
+define void @nowrap(ptr %A, i8 %N, i8 %p) {
 bb:
   br label %bb2
 
@@ -58,8 +58,8 @@ bb2:                                              ; preds = %bb7, %bb
 
 bb4:                                              ; preds = %bb2
   %tmp5 = add nsw nuw i8 %indvars.iv, 3
-  %tmp6 = getelementptr inbounds i32, i32* %A, i8 %tmp5
-  store i32 0, i32* %tmp6, align 4
+  %tmp6 = getelementptr inbounds i32, ptr %A, i8 %tmp5
+  store i32 0, ptr %tmp6, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb4

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_1.ll b/polly/test/ScopInfo/wraping_signed_expr_1.ll
index 8b859c4e9d868..0a62b9cf542c5 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_1.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_1.ll
@@ -25,7 +25,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @wrap(i64* %A, i64 %N, i64 %p) {
+define void @wrap(ptr %A, i64 %N, i64 %p) {
 bb:
   %tmp31 = icmp slt i64 0, %N
   br i1 %tmp31, label %bb4.lr.ph, label %bb8
@@ -36,8 +36,8 @@ bb4.lr.ph:                                        ; preds = %bb
 bb4:                                              ; preds = %bb4.lr.ph, %bb7
   %indvars.iv2 = phi i64 [ 0, %bb4.lr.ph ], [ %indvars.iv.next, %bb7 ]
   %tmp5 = add nuw nsw i64 %indvars.iv2, 1
-  %tmp6 = getelementptr i64, i64* %A, i64 %tmp5
-  store i64 0, i64* %tmp6, align 4
+  %tmp6 = getelementptr i64, ptr %A, i64 %tmp5
+  store i64 0, ptr %tmp6, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb4
@@ -52,7 +52,7 @@ bb8:                                              ; preds = %bb2.bb8_crit_edge,
   ret void
 }
 
-define void @nowrap(i64* %A, i64 %N, i64 %p) {
+define void @nowrap(ptr %A, i64 %N, i64 %p) {
 bb:
   %tmp31 = icmp slt i64 0, %N
   br i1 %tmp31, label %bb4.lr.ph, label %bb8
@@ -63,8 +63,8 @@ bb4.lr.ph:                                        ; preds = %bb
 bb4:                                              ; preds = %bb4.lr.ph, %bb7
   %indvars.iv2 = phi i64 [ 0, %bb4.lr.ph ], [ %indvars.iv.next, %bb7 ]
   %tmp5 = add nuw nsw i64 %indvars.iv2, 1
-  %tmp6 = getelementptr inbounds i64, i64* %A, i64 %tmp5
-  store i64 0, i64* %tmp6, align 4
+  %tmp6 = getelementptr inbounds i64, ptr %A, i64 %tmp5
+  store i64 0, ptr %tmp6, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb4

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_2.ll b/polly/test/ScopInfo/wraping_signed_expr_2.ll
index f9d63a784e587..f3b4665f7f373 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_2.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_2.ll
@@ -20,7 +20,7 @@
 
 target datalayout = "e-m:e-i32:64-f80:128-n8:16:32:64-S128"
 
-define void @wrap(i32* %A, i32 %N, i32 %p) {
+define void @wrap(ptr %A, i32 %N, i32 %p) {
 bb:
   br label %bb2
 
@@ -31,8 +31,8 @@ bb2:                                              ; preds = %bb7, %bb
 
 bb4:                                              ; preds = %bb2
   %tmp5 = add i32 %indvars.iv, 30
-  %tmp6 = getelementptr i32, i32* %A, i32 %tmp5
-  store i32 0, i32* %tmp6, align 4
+  %tmp6 = getelementptr i32, ptr %A, i32 %tmp5
+  store i32 0, ptr %tmp6, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb4

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_3.ll b/polly/test/ScopInfo/wraping_signed_expr_3.ll
index aef2cc9549adf..7a5cbba9436b9 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_3.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_3.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i32:64-f80:128-n8:16:32:64-S128"
 
-define void @wrap(i32* %A, i32 %N, i32 %p) {
+define void @wrap(ptr %A, i32 %N, i32 %p) {
 bb:
   br label %bb2
 
@@ -24,8 +24,8 @@ bb2:                                              ; preds = %bb7, %bb
 
 bb4:                                              ; preds = %bb2
   %tmp5 = add i32 %indvars.iv, %p
-  %tmp6 = getelementptr inbounds i32, i32* %A, i32 %tmp5
-  store i32 0, i32* %tmp6, align 4
+  %tmp6 = getelementptr inbounds i32, ptr %A, i32 %tmp5
+  store i32 0, ptr %tmp6, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb4

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_4.ll b/polly/test/ScopInfo/wraping_signed_expr_4.ll
index de805db18bda4..b65437633fe5a 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_4.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_4.ll
@@ -15,7 +15,7 @@
 
 target datalayout = "e-m:e-i8:64-f80:128-n8:16:32:64-S128"
 
-define void @wrap(i8* %A, i8 %N, i8 %p) {
+define void @wrap(ptr %A, i8 %N, i8 %p) {
 bb:
   br label %bb2
 
@@ -26,8 +26,8 @@ bb2:                                              ; preds = %bb7, %bb
 
 bb4:                                              ; preds = %bb2
   %tmp5 = add i8 %p, -1
-  %tmp6 = getelementptr i8, i8* %A, i8 %tmp5
-  store i8 0, i8* %tmp6, align 4
+  %tmp6 = getelementptr i8, ptr %A, i8 %tmp5
+  store i8 0, ptr %tmp6, align 4
   br label %bb7
 
 bb7:                                              ; preds = %bb4

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_5.ll b/polly/test/ScopInfo/wraping_signed_expr_5.ll
index f7a9c9f318ba3..5f3b09ba33c10 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_5.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_5.ll
@@ -13,7 +13,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @wraps(i32* %A, i32 %p, i16 signext %q, i8 signext %r1, i8 signext %r2) {
+define void @wraps(ptr %A, i32 %p, i16 signext %q, i8 signext %r1, i8 signext %r2) {
 entry:
   br label %for.cond
 
@@ -26,13 +26,13 @@ for.body:                                         ; preds = %for.cond
   %conv3 = sext i8 %r1 to i64
   %conv4 = sext i8 %r2 to i64
   %add = add nsw i64 %conv3, %conv4
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add
+  %tmp = load i32, ptr %arrayidx, align 4
   %conv5 = sext i16 %q to i32
   %add6 = add nsw i32 %conv5, %p
   %idxprom7 = sext i32 %add6 to i64
-  %arrayidx8 = getelementptr inbounds i32, i32* %A, i64 %idxprom7
-  store i32 %tmp, i32* %arrayidx8, align 4
+  %arrayidx8 = getelementptr inbounds i32, ptr %A, i64 %idxprom7
+  store i32 %tmp, ptr %arrayidx8, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_6.ll b/polly/test/ScopInfo/wraping_signed_expr_6.ll
index 9eaa3d6f83f5e..23258bb513bf9 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_6.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_6.ll
@@ -8,7 +8,7 @@
 ;        if ((signed char)i < 100)
 ;          A[i] += i;
 ;    }
-define void @foo(float* %A, i64 %N) {
+define void @foo(ptr %A, i64 %N) {
 bb:
   br label %bb1
 
@@ -24,10 +24,10 @@ bb2:                                              ; preds = %bb1
 
 bb5:                                              ; preds = %bb2
   %tmp6 = sitofp i64 %i.0 to float
-  %tmp7 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp8 = load float, float* %tmp7, align 4
+  %tmp7 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp8 = load float, ptr %tmp7, align 4
   %tmp9 = fadd float %tmp8, %tmp6
-  store float %tmp9, float* %tmp7, align 4
+  store float %tmp9, ptr %tmp7, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb5, %bb2

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_7.ll b/polly/test/ScopInfo/wraping_signed_expr_7.ll
index 96f285bff9a12..0663d4e0bc103 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_7.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_7.ll
@@ -8,7 +8,7 @@
 ;        if ((signed char)i++ < 100)
 ;          A[i] += i;
 ;    }
-define void @foo(float* %A, i64 %N) {
+define void @foo(ptr %A, i64 %N) {
 bb:
   br label %bb1
 
@@ -25,10 +25,10 @@ bb2:                                              ; preds = %bb1
 
 bb5:                                              ; preds = %bb2
   %tmp6 = sitofp i64 %i.0 to float
-  %tmp7 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp8 = load float, float* %tmp7, align 4
+  %tmp7 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp8 = load float, ptr %tmp7, align 4
   %tmp9 = fadd float %tmp8, %tmp6
-  store float %tmp9, float* %tmp7, align 4
+  store float %tmp9, ptr %tmp7, align 4
   br label %bb10
 
 bb10:                                             ; preds = %bb5, %bb2

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_slow_1.ll b/polly/test/ScopInfo/wraping_signed_expr_slow_1.ll
index db2ca22ac3829..ec36d2c5fcde2 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_slow_1.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_slow_1.ll
@@ -22,7 +22,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @fast(i8* %A, i8 %N, i8 %M) {
+define void @fast(ptr %A, i8 %N, i8 %M) {
 entry:
   br label %for.cond
 
@@ -37,10 +37,10 @@ for.body:                                         ; preds = %for.cond
   ;%mul = mul nsw i16 %tmp3ext, 16
   %Mext = sext i8 %M to i16
   %add2 = add nsw i16 %tmp3ext, %Mext
-  %arrayidx = getelementptr inbounds i8, i8* %A, i16 %add2
-  %tmp4 = load i8, i8* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i8, ptr %A, i16 %add2
+  %tmp4 = load i8, ptr %arrayidx, align 4
   %inc = add nsw i8 %tmp4, 1
-  store i8 %inc, i8* %arrayidx, align 4
+  store i8 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -51,7 +51,7 @@ for.end:                                          ; preds = %for.cond
   ret void
 }
 
-define void @slow(i8* %A, i8 %N, i8 %M) {
+define void @slow(ptr %A, i8 %N, i8 %M) {
 entry:
   br label %for.cond
 
@@ -66,10 +66,10 @@ for.body:                                         ; preds = %for.cond
   %mul = mul nsw i16 %tmp3ext, 16
   %Mext = sext i8 %M to i16
   %add2 = add nsw i16 %mul, %Mext
-  %arrayidx = getelementptr inbounds i8, i8* %A, i16 %add2
-  %tmp4 = load i8, i8* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i8, ptr %A, i16 %add2
+  %tmp4 = load i8, ptr %arrayidx, align 4
   %inc = add nsw i8 %tmp4, 1
-  store i8 %inc, i8* %arrayidx, align 4
+  store i8 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/wraping_signed_expr_slow_2.ll b/polly/test/ScopInfo/wraping_signed_expr_slow_2.ll
index 950fe7638873d..6db33ab166d5a 100644
--- a/polly/test/ScopInfo/wraping_signed_expr_slow_2.ll
+++ b/polly/test/ScopInfo/wraping_signed_expr_slow_2.ll
@@ -28,7 +28,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @fast(i8* %A, i8 %N, i8 %M) {
+define void @fast(ptr %A, i8 %N, i8 %M) {
 entry:
   br label %for.cond
 
@@ -42,10 +42,10 @@ for.body:                                         ; preds = %for.cond
   %mul = mul nsw i8 %tmp3, 16
   %add2 = add nsw i8 %mul, %M
   %add2ext = sext i8 %add2 to i16
-  %arrayidx = getelementptr inbounds i8, i8* %A, i16 %add2ext
-  %tmp4 = load i8, i8* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i8, ptr %A, i16 %add2ext
+  %tmp4 = load i8, ptr %arrayidx, align 4
   %inc = add nsw i8 %tmp4, 1
-  store i8 %inc, i8* %arrayidx, align 4
+  store i8 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body
@@ -56,7 +56,7 @@ for.end:                                          ; preds = %for.cond
   ret void
 }
 
-define void @slow(i8* %A, i8 %N, i8 %M) {
+define void @slow(ptr %A, i8 %N, i8 %M) {
 entry:
   br label %for.cond
 
@@ -71,10 +71,10 @@ for.body:                                         ; preds = %for.cond
   %mulext = sext i8 %mul to i16
   %Mext = sext i8 %M to i16
   %add2 = add nsw i16 %mulext, %Mext
-  %arrayidx = getelementptr inbounds i8, i8* %A, i16 %add2
-  %tmp4 = load i8, i8* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i8, ptr %A, i16 %add2
+  %tmp4 = load i8, ptr %arrayidx, align 4
   %inc = add nsw i8 %tmp4, 1
-  store i8 %inc, i8* %arrayidx, align 4
+  store i8 %inc, ptr %arrayidx, align 4
   br label %for.inc
 
 for.inc:                                          ; preds = %for.body

diff  --git a/polly/test/ScopInfo/zero_ext_of_truncate.ll b/polly/test/ScopInfo/zero_ext_of_truncate.ll
index 27e58edafec89..fc55df5e053c4 100644
--- a/polly/test/ScopInfo/zero_ext_of_truncate.ll
+++ b/polly/test/ScopInfo/zero_ext_of_truncate.ll
@@ -19,7 +19,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i32* noalias %I, i32* noalias %A, i32 %N, i32 %M) {
+define void @f(ptr noalias %I, ptr noalias %A, i32 %N, i32 %M) {
 entry:
   br label %for.cond
 
@@ -30,16 +30,16 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp = load i32, i32* %I, align 4
+  %tmp = load i32, ptr %I, align 4
   %conv1 = and i32 %tmp, 255
   %cmp2 = icmp ult i32 %conv1, %M
   br i1 %cmp2, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp1 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp1 = load i32, ptr %arrayidx, align 4
   %inc = add i32 %tmp1, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body

diff  --git a/polly/test/ScopInfo/zero_ext_of_truncate_2.ll b/polly/test/ScopInfo/zero_ext_of_truncate_2.ll
index a9652ad8f7fa7..13e9c03ecd2d6 100644
--- a/polly/test/ScopInfo/zero_ext_of_truncate_2.ll
+++ b/polly/test/ScopInfo/zero_ext_of_truncate_2.ll
@@ -18,7 +18,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define void @f(i64* noalias %I, i32* noalias %A, i32 %N, i32 %M) {
+define void @f(ptr noalias %I, ptr noalias %A, i32 %N, i32 %M) {
 entry:
   br label %for.cond
 
@@ -29,17 +29,17 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %exitcond, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %tmp = load i64, i64* %I, align 8
+  %tmp = load i64, ptr %I, align 8
   %conv = trunc i64 %tmp to i32
   %tmp1 = zext i32 %conv to i64
   %cmp1 = icmp ult i64 %tmp1, %indvars.iv
   br i1 %cmp1, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.body
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
-  %tmp2 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
+  %tmp2 = load i32, ptr %arrayidx, align 4
   %inc = add i32 %tmp2, 1
-  store i32 %inc, i32* %arrayidx, align 4
+  store i32 %inc, ptr %arrayidx, align 4
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %for.body

diff  --git a/polly/test/ScopInfo/zero_ext_space_mismatch.ll b/polly/test/ScopInfo/zero_ext_space_mismatch.ll
index db41875b6f442..835a8664b75e8 100644
--- a/polly/test/ScopInfo/zero_ext_space_mismatch.ll
+++ b/polly/test/ScopInfo/zero_ext_space_mismatch.ll
@@ -8,21 +8,19 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Function Attrs: nounwind uwtable
-define void @horner_bezier_curve(float* %cp, i32 %dim) #0 {
+define void @horner_bezier_curve(ptr %cp, i32 %dim) #0 {
 entry:
   br label %for.body18.lr.ph
 
 for.body18.lr.ph:                                 ; preds = %entry
-  %add.ptr = getelementptr inbounds float, float* %cp, i64 0
   br label %for.body18
 
 for.body18:                                       ; preds = %for.body18, %for.body18.lr.ph
-  %cp.addr.052 = phi float* [ %add.ptr, %for.body18.lr.ph ], [ %add.ptr43, %for.body18 ]
-  %arrayidx31 = getelementptr inbounds float, float* %cp.addr.052, i64 0
-  %0 = load float, float* %arrayidx31, align 4
-  store float %0, float* %arrayidx31, align 4
+  %cp.addr.052 = phi ptr [ %cp, %for.body18.lr.ph ], [ %add.ptr43, %for.body18 ]
+  %0 = load float, ptr %cp.addr.052, align 4
+  store float %0, ptr %cp.addr.052, align 4
   %idx.ext42 = zext i32 %dim to i64
-  %add.ptr43 = getelementptr inbounds float, float* %cp.addr.052, i64 %idx.ext42
+  %add.ptr43 = getelementptr inbounds float, ptr %cp.addr.052, i64 %idx.ext42
   br i1 false, label %for.body18, label %if.end
 
 if.end:                                           ; preds = %for.body18

diff  --git a/polly/test/ScopInliner/invariant-load-func.ll b/polly/test/ScopInliner/invariant-load-func.ll
index c842ebbca4879..38e4a15aab941 100644
--- a/polly/test/ScopInliner/invariant-load-func.ll
+++ b/polly/test/ScopInliner/invariant-load-func.ll
@@ -24,13 +24,13 @@
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.12.0"
 
-define void @to_be_inlined(i32* %A, i32* %begin, i32* %end) {
+define void @to_be_inlined(ptr %A, ptr %begin, ptr %end) {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %tmp = load i32, i32* %begin, align 4
-  %tmp21 = load i32, i32* %end, align 4
+  %tmp = load i32, ptr %begin, align 4
+  %tmp21 = load i32, ptr %end, align 4
   %cmp3 = icmp slt i32 %tmp, %tmp21
   br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
@@ -40,10 +40,10 @@ for.body.lr.ph:                                   ; preds = %entry.split
 
 for.body:                                         ; preds = %for.body.lr.ph, %for.body
   %indvars.iv4 = phi i64 [ %tmp1, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv4
-  store i32 10, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv4
+  store i32 10, ptr %arrayidx, align 4
   %indvars.iv.next = add i64 %indvars.iv4, 1
-  %tmp2 = load i32, i32* %end, align 4
+  %tmp2 = load i32, ptr %end, align 4
   %tmp3 = sext i32 %tmp2 to i64
   %cmp = icmp slt i64 %indvars.iv.next, %tmp3
   br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge
@@ -56,7 +56,7 @@ for.end:                                          ; preds = %for.cond.for.end_cr
 }
 
 
-define void @inline_site(i32* %A, i32* %begin, i32 *%end) {
+define void @inline_site(ptr %A, ptr %begin, ptr %end) {
 entry:
   br label %entry.split
 
@@ -65,7 +65,7 @@ entry.split:                                      ; preds = %entry
 
 for.body:                                         ; preds = %entry.split, %for.body
   %i.01 = phi i32 [ 0, %entry.split ], [ %inc, %for.body ]
-  tail call void @to_be_inlined(i32* %A, i32* %begin, i32* %end)
+  tail call void @to_be_inlined(ptr %A, ptr %begin, ptr %end)
   %inc = add nuw nsw i32 %i.01, 1
   %exitcond = icmp eq i32 %inc, 1000
   br i1 %exitcond, label %for.end, label %for.body

diff  --git a/polly/test/ScopInliner/simple-inline-loop.ll b/polly/test/ScopInliner/simple-inline-loop.ll
index 2a6dc4af1d328..a5e3483edad05 100644
--- a/polly/test/ScopInliner/simple-inline-loop.ll
+++ b/polly/test/ScopInliner/simple-inline-loop.ll
@@ -21,7 +21,7 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.12.0"
 
 
-define void @to_be_inlined(i32* %A) {
+define void @to_be_inlined(ptr %A) {
 entry:
   br label %entry.split
 
@@ -30,10 +30,10 @@ entry.split:                                      ; preds = %entry
 
 for.body:                                         ; preds = %entry.split, %for.body
   %indvars.iv1 = phi i64 [ 0, %entry.split ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv1
-  %tmp = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv1
+  %tmp = load i32, ptr %arrayidx, align 4
   %mul = mul nsw i32 %tmp, 10
-  store i32 %mul, i32* %arrayidx, align 4
+  store i32 %mul, ptr %arrayidx, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv1, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 1000
   br i1 %exitcond, label %for.end, label %for.body
@@ -42,7 +42,7 @@ for.end:                                          ; preds = %for.body
   ret void
 }
 
-define void @inline_site(i32* %A) {
+define void @inline_site(ptr %A) {
 entry:
   br label %entry.split
 
@@ -51,7 +51,7 @@ entry.split:                                      ; preds = %entry
 
 for.body:                                         ; preds = %entry.split, %for.body
   %i.01 = phi i32 [ 0, %entry.split ], [ %inc, %for.body ]
-  tail call void @to_be_inlined(i32* %A)
+  tail call void @to_be_inlined(ptr %A)
   %inc = add nuw nsw i32 %i.01, 1
   %exitcond = icmp eq i32 %inc, 1000
   br i1 %exitcond, label %for.end, label %for.body

diff  --git a/polly/test/Simplify/coalesce_3partials.ll b/polly/test/Simplify/coalesce_3partials.ll
index 8aed8feb66246..0c1556ff263a5 100644
--- a/polly/test/Simplify/coalesce_3partials.ll
+++ b/polly/test/Simplify/coalesce_3partials.ll
@@ -8,7 +8,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @coalesce_3partials(i32 %n, double* noalias nonnull %A) {
+define void @coalesce_3partials(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -18,9 +18,9 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
-      store double 42.0, double* %A
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
+      store double 42.0, ptr %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/coalesce_disjointelements.ll b/polly/test/Simplify/coalesce_disjointelements.ll
index a3f4a1ebf2c2f..2f4cf4e3f9206 100644
--- a/polly/test/Simplify/coalesce_disjointelements.ll
+++ b/polly/test/Simplify/coalesce_disjointelements.ll
@@ -10,7 +10,7 @@
 ;   A[1] = 42.0;
 ; }
 ;
-define void @coalesce_disjointelements(i32 %n, double* noalias nonnull %A) {
+define void @coalesce_disjointelements(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -20,12 +20,11 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %A_0 = getelementptr inbounds double, double* %A, i32 0
-      %A_1 = getelementptr inbounds double, double* %A, i32 1
-      store double 21.0, double* %A_0
-      store double 42.0, double* %A_1
-      store double 21.0, double* %A_0
-      store double 42.0, double* %A_1
+      %A_1 = getelementptr inbounds double, ptr %A, i32 1
+      store double 21.0, ptr %A
+      store double 42.0, ptr %A_1
+      store double 21.0, ptr %A
+      store double 42.0, ptr %A_1
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/coalesce_overlapping.ll b/polly/test/Simplify/coalesce_overlapping.ll
index b607dcbefc7b2..78ed21e9855b0 100644
--- a/polly/test/Simplify/coalesce_overlapping.ll
+++ b/polly/test/Simplify/coalesce_overlapping.ll
@@ -7,7 +7,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @coalesce_overlapping(i32 %n, double* noalias nonnull %A) {
+define void @coalesce_overlapping(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -17,8 +17,8 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/coalesce_partial.ll b/polly/test/Simplify/coalesce_partial.ll
index 3ae31e9842c6f..c42aaa113035e 100644
--- a/polly/test/Simplify/coalesce_partial.ll
+++ b/polly/test/Simplify/coalesce_partial.ll
@@ -7,7 +7,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @coalesce_partial(i32 %n, double* noalias nonnull %A) {
+define void @coalesce_partial(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -17,8 +17,8 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/dead_access_load.ll b/polly/test/Simplify/dead_access_load.ll
index 15f9ac1589459..1804613c0a791 100644
--- a/polly/test/Simplify/dead_access_load.ll
+++ b/polly/test/Simplify/dead_access_load.ll
@@ -9,7 +9,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -19,8 +19,8 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %val = load double, double* %A
-      store double 42.0, double* %A
+      %val = load double, ptr %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/dead_access_phi.ll b/polly/test/Simplify/dead_access_phi.ll
index 168d93f03f2be..d263b89aff58b 100644
--- a/polly/test/Simplify/dead_access_phi.ll
+++ b/polly/test/Simplify/dead_access_phi.ll
@@ -12,7 +12,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -26,7 +26,7 @@ for:
 
     body_succ:
       %phi = phi double [42.0, %body]
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/dead_access_value.ll b/polly/test/Simplify/dead_access_value.ll
index 2917ed9cccb85..6e3c211577f6b 100644
--- a/polly/test/Simplify/dead_access_value.ll
+++ b/polly/test/Simplify/dead_access_value.ll
@@ -13,7 +13,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -28,7 +28,7 @@ for:
 
     body_succ:
       %unused = fadd double %val, 21.0
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/dead_instruction.ll b/polly/test/Simplify/dead_instruction.ll
index 5507fb689a971..4e693b0ccb44b 100644
--- a/polly/test/Simplify/dead_instruction.ll
+++ b/polly/test/Simplify/dead_instruction.ll
@@ -9,7 +9,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -20,7 +20,7 @@ for:
 
     body:
       %val = fadd double 21.0, 21.0
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/emptyaccessdomain.ll b/polly/test/Simplify/emptyaccessdomain.ll
index 7c025c07ee457..54ac14ab398c6 100644
--- a/polly/test/Simplify/emptyaccessdomain.ll
+++ b/polly/test/Simplify/emptyaccessdomain.ll
@@ -4,7 +4,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @emptyaccessdomain(i32 %n, double* noalias nonnull %A) {
+define void @emptyaccessdomain(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -14,7 +14,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/exit_phi_accesses-2.ll b/polly/test/Simplify/exit_phi_accesses-2.ll
index b9874eb13e3a1..01748aa59bd3a 100644
--- a/polly/test/Simplify/exit_phi_accesses-2.ll
+++ b/polly/test/Simplify/exit_phi_accesses-2.ll
@@ -5,7 +5,7 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define float @foo(float* %A) {
+define float @foo(ptr %A) {
 entry:
   br label %header
 
@@ -16,9 +16,9 @@ header:
 body:
   %i = phi i64 [ 0, %header ], [ %next, %body ]
   %sum = phi float [ 0.0, %header ], [ %sum.next, %body ]
-  %arrayidx = getelementptr float, float* %A, i64 %i
+  %arrayidx = getelementptr float, ptr %A, i64 %i
   %next = add nuw nsw i64 %i, 1
-  %val = load float, float* %arrayidx
+  %val = load float, ptr %arrayidx
   %sum.next = fadd float %sum, %val
   %cond = icmp ne i64 %i, 100
   br i1 %cond, label %body, label %after

diff  --git a/polly/test/Simplify/func-b320a7.ll b/polly/test/Simplify/func-b320a7.ll
index d3e7c81739592..c8a823a468d7d 100644
--- a/polly/test/Simplify/func-b320a7.ll
+++ b/polly/test/Simplify/func-b320a7.ll
@@ -12,7 +12,7 @@ target triple = "x86_64-pc-windows-msvc19.26.28806"
 @"?var_28@@3HA" = external dso_local local_unnamed_addr global i32, align 4
 
 ; Function Attrs: nofree norecurse nounwind uwtable
-define dso_local void @"?test@@YAXHEQEAY3M at 1BI@BJ at H@Z"(i32 %a, i8 %b, [12 x [2 x [24 x [25 x i32]]]]* nocapture readonly %c) local_unnamed_addr {
+define dso_local void @"?test@@YAXHEQEAY3M at 1BI@BJ at H@Z"(i32 %a, i8 %b, ptr nocapture readonly %c) local_unnamed_addr {
 entry:
   br label %entry.split
 
@@ -36,9 +36,9 @@ for.cond8.preheader.us:                           ; preds = %for.cond8.preheader
 
 for.body14.us:                                    ; preds = %for.cond8.preheader.us, %for.body14.us
   %indvars.iv = phi i64 [ 0, %for.cond8.preheader.us ], [ %indvars.iv.next, %for.body14.us ]
-  %arrayidx19.us = getelementptr inbounds [12 x [2 x [24 x [25 x i32]]]], [12 x [2 x [24 x [25 x i32]]]]* %c, i64 6, i64 2, i64 1, i64 %idxprom.us, i64 %indvars.iv
-  %0 = load i32, i32* %arrayidx19.us, align 4, !tbaa !3
-  store i32 0, i32* @"?var_28@@3HA", align 4, !tbaa !3
+  %arrayidx19.us = getelementptr inbounds [12 x [2 x [24 x [25 x i32]]]], ptr %c, i64 6, i64 2, i64 1, i64 %idxprom.us, i64 %indvars.iv
+  %0 = load i32, ptr %arrayidx19.us, align 4, !tbaa !3
+  store i32 0, ptr @"?var_28@@3HA", align 4, !tbaa !3
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond.not = icmp eq i64 %indvars.iv.next, %sub11
   br i1 %exitcond.not, label %for.cond8.for.cond.cleanup13_crit_edge.us, label %for.body14.us
@@ -50,7 +50,7 @@ for.cond8.for.cond.cleanup13_crit_edge.us:        ; preds = %for.body14.us
   br i1 %cmp5.us, label %for.cond8.preheader.us, label %for.cond.cleanup.critedge.loopexit38
 
 for.cond.cleanup.critedge.loopexit38:             ; preds = %for.cond8.for.cond.cleanup13_crit_edge.us
-  store i32 %0, i32* @"?var_27@@3JA", align 4, !tbaa !7
+  store i32 %0, ptr @"?var_27@@3JA", align 4, !tbaa !7
   br label %for.cond.cleanup.critedge
 
 for.cond.cleanup.critedge:                        ; preds = %for.cond8.preheader, %for.cond.cleanup.critedge.loopexit38, %entry.split

diff  --git a/polly/test/Simplify/gemm.ll b/polly/test/Simplify/gemm.ll
index 6440df01bbab5..23f8de5573cdb 100644
--- a/polly/test/Simplify/gemm.ll
+++ b/polly/test/Simplify/gemm.ll
@@ -27,7 +27,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-linux-gnu"
 
-define void @gemm([1024 x float]* %A, [1024 x float]* %B, [1024 x float]* %C) {
+define void @gemm(ptr %A, ptr %B, ptr %C) {
 bb:
   br label %bb3
 
@@ -51,8 +51,8 @@ bb7:                                              ; preds = %bb6
   br label %bb25
 
 bb8:                                              ; preds = %bb6
-  %tmp = getelementptr inbounds [1024 x float], [1024 x float]* %C, i64 %i.0, i64 %j.0
-  %tmp9 = load float, float* %tmp, align 4, !tbaa !1
+  %tmp = getelementptr inbounds [1024 x float], ptr %C, i64 %i.0, i64 %j.0
+  %tmp9 = load float, ptr %tmp, align 4, !tbaa !1
   br label %bb10
 
 bb10:                                             ; preds = %bb13, %bb8
@@ -69,18 +69,18 @@ bb12:                                             ; preds = %bb10
   br label %bb13
 
 bb13:                                             ; preds = %bb12
-  %tmp14 = getelementptr inbounds [1024 x float], [1024 x float]* %A, i64 %i.0, i64 %k.0
-  %tmp15 = load float, float* %tmp14, align 4, !tbaa !1
-  %tmp16 = getelementptr inbounds [1024 x float], [1024 x float]* %B, i64 %k.0, i64 %j.0
-  %tmp17 = load float, float* %tmp16, align 4, !tbaa !1
+  %tmp14 = getelementptr inbounds [1024 x float], ptr %A, i64 %i.0, i64 %k.0
+  %tmp15 = load float, ptr %tmp14, align 4, !tbaa !1
+  %tmp16 = getelementptr inbounds [1024 x float], ptr %B, i64 %k.0, i64 %j.0
+  %tmp17 = load float, ptr %tmp16, align 4, !tbaa !1
   %tmp18 = fmul float %tmp15, %tmp17
   %tmp19 = fadd float %tmp.0, %tmp18
   %tmp20 = add nuw nsw i64 %k.0, 1
   br label %bb10
 
 bb21:                                             ; preds = %bb11
-  %tmp22 = getelementptr inbounds [1024 x float], [1024 x float]* %C, i64 %i.0, i64 %j.0
-  store float %tmp.0.lcssa, float* %tmp22, align 4, !tbaa !1
+  %tmp22 = getelementptr inbounds [1024 x float], ptr %C, i64 %i.0, i64 %j.0
+  store float %tmp.0.lcssa, ptr %tmp22, align 4, !tbaa !1
   br label %bb23
 
 bb23:                                             ; preds = %bb21
@@ -98,9 +98,9 @@ bb28:                                             ; preds = %bb4
   ret void
 }
 
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start(i64, ptr nocapture)
 
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end(i64, ptr nocapture)
 
 
 !llvm.ident = !{!0}

diff  --git a/polly/test/Simplify/nocoalesce_
diff erentvalues.ll b/polly/test/Simplify/nocoalesce_
diff erentvalues.ll
index b8192f6f627ed..68991d2eecf55 100644
--- a/polly/test/Simplify/nocoalesce_
diff erentvalues.ll
+++ b/polly/test/Simplify/nocoalesce_
diff erentvalues.ll
@@ -7,7 +7,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @nocoalesce_
diff erentvalues(i32 %n, double* noalias nonnull %A) {
+define void @nocoalesce_
diff erentvalues(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -17,8 +17,8 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 21.0, double* %A
-      store double 42.0, double* %A
+      store double 21.0, ptr %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/nocoalesce_elementmismatch.ll b/polly/test/Simplify/nocoalesce_elementmismatch.ll
index 18deef34f1e1f..2bab360e6858b 100644
--- a/polly/test/Simplify/nocoalesce_elementmismatch.ll
+++ b/polly/test/Simplify/nocoalesce_elementmismatch.ll
@@ -8,7 +8,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @nocoalesce_elementmismatch(i32 %n, double* noalias nonnull %A) {
+define void @nocoalesce_elementmismatch(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -18,10 +18,9 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %A_0 = getelementptr inbounds double, double* %A, i32 0
-      %A_1 = getelementptr inbounds double, double* %A, i32 1
-      store double 42.0, double* %A_0
-      store double 42.0, double* %A_1
+      %A_1 = getelementptr inbounds double, ptr %A, i32 1
+      store double 42.0, ptr %A
+      store double 42.0, ptr %A_1
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/nocoalesce_readbetween.ll b/polly/test/Simplify/nocoalesce_readbetween.ll
index f0c4f12e724bf..ada79dc18b878 100644
--- a/polly/test/Simplify/nocoalesce_readbetween.ll
+++ b/polly/test/Simplify/nocoalesce_readbetween.ll
@@ -10,7 +10,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @nocoalesce_readbetween(i32 %n, double* noalias nonnull %A) {
+define void @nocoalesce_readbetween(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -20,9 +20,9 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
-      %tmp = load double, double* %A
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
+      %tmp = load double, ptr %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/nocoalesce_writebetween.ll b/polly/test/Simplify/nocoalesce_writebetween.ll
index cd49d9d383e21..48e785ec2c262 100644
--- a/polly/test/Simplify/nocoalesce_writebetween.ll
+++ b/polly/test/Simplify/nocoalesce_writebetween.ll
@@ -8,7 +8,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @nocoalesce_writebetween(i32 %n, double* noalias nonnull %A) {
+define void @nocoalesce_writebetween(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -18,9 +18,9 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
-      store double 21.0, double* %A
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
+      store double 21.0, ptr %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/notdead_region_exitphi.ll b/polly/test/Simplify/notdead_region_exitphi.ll
index 2ab9c444b290e..bd29fd578b971 100644
--- a/polly/test/Simplify/notdead_region_exitphi.ll
+++ b/polly/test/Simplify/notdead_region_exitphi.ll
@@ -3,7 +3,7 @@
 ;
 ; Do not remove dependencies of a phi node in a region's exit block.
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double %alpha) {
+define void @func(i32 %n, ptr noalias nonnull %A, double %alpha) {
 entry:
   br label %for
 
@@ -26,7 +26,7 @@ for:
 
     region_exit:
       %phi = phi double [%val, %region_true], [0.0, %region_entry]
-      store double %phi, double* %A
+      store double %phi, ptr %A
       br label %inc
 
 

diff  --git a/polly/test/Simplify/notdead_region_innerphi.ll b/polly/test/Simplify/notdead_region_innerphi.ll
index eac71ad83ef00..a176a28af233b 100644
--- a/polly/test/Simplify/notdead_region_innerphi.ll
+++ b/polly/test/Simplify/notdead_region_innerphi.ll
@@ -3,7 +3,7 @@
 ;
 ; Do not remove dependencies of a phi node within a region statement (%phi).
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double %alpha) {
+define void @func(i32 %n, ptr noalias nonnull %A, double %alpha) {
 entry:
   br label %for
 
@@ -29,7 +29,7 @@ for:
 
     region_mostlytrue:
       %phi = phi double [%val, %region_true], [0.0, %region_verytrue]
-      store double %phi, double* %A
+      store double %phi, ptr %A
       br label %region_exit
 
     region_exit:

diff  --git a/polly/test/Simplify/notredundant_region_loop.ll b/polly/test/Simplify/notredundant_region_loop.ll
index 7b4f5e98e4bcf..0ea9be7e9d2d2 100644
--- a/polly/test/Simplify/notredundant_region_loop.ll
+++ b/polly/test/Simplify/notredundant_region_loop.ll
@@ -3,7 +3,7 @@
 ; Do not remove the store in region_entry. It can be executed multiple times
 ; due to being part of a non-affine loop.
 ;
-define void @notredundant_region_loop(i32 %n, double* noalias nonnull %A) {
+define void @notredundant_region_loop(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -18,13 +18,13 @@ for:
       br label %region_entry
 
     region_entry:
-      store double %val, double* %A
+      store double %val, ptr %A
       %sqr = mul i32 %j, %j
       %cmp = icmp eq i32 %sqr, 42
       br i1 %cmp, label %region_true, label %region_exit
 
     region_true:
-      store double 0.0, double* %A
+      store double 0.0, ptr %A
       br label %region_entry
 
     region_exit:

diff  --git a/polly/test/Simplify/notredundant_region_middle.ll b/polly/test/Simplify/notredundant_region_middle.ll
index 5258cb4801a74..84598746e0bbf 100644
--- a/polly/test/Simplify/notredundant_region_middle.ll
+++ b/polly/test/Simplify/notredundant_region_middle.ll
@@ -13,7 +13,7 @@
 ;     A[0] = 0.0;
 ; }
 ;
-define void @notredundant_region(i32 %n, double* noalias nonnull %A) {
+define void @notredundant_region(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -24,16 +24,16 @@ for:
 
 
     region_entry:
-      %val = load double, double* %A
+      %val = load double, ptr %A
       %cmp = fcmp oeq double %val, 0.0
       br i1 %cmp, label %region_true, label %region_false
 
     region_true:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %region_exit
 
     region_false:
-      store double 0.0, double* %A
+      store double 0.0, ptr %A
       br label %region_exit
 
     region_exit:

diff  --git a/polly/test/Simplify/notredundant_synthesizable_unknownit.ll b/polly/test/Simplify/notredundant_synthesizable_unknownit.ll
index ce5b306e201e7..2affdbb2f1de3 100644
--- a/polly/test/Simplify/notredundant_synthesizable_unknownit.ll
+++ b/polly/test/Simplify/notredundant_synthesizable_unknownit.ll
@@ -9,7 +9,7 @@
 ; Note that -polly-simplify rightfully removes %inner.cond. It should
 ; not have been added to the instruction list in the first place.
 ;
-define void @func(i32 %n, i32* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -38,7 +38,7 @@ for:
       br i1 %inner.cond, label %body, label %inner.for
 
     body:
-      store i32 %i.trunc, i32* %A
+      store i32 %i.trunc, ptr %A
       br label %inc
 
 

diff  --git a/polly/test/Simplify/out-of-scop-use-in-region-entry-phi-node.ll b/polly/test/Simplify/out-of-scop-use-in-region-entry-phi-node.ll
index a284e750b8da9..511f35a9388e1 100644
--- a/polly/test/Simplify/out-of-scop-use-in-region-entry-phi-node.ll
+++ b/polly/test/Simplify/out-of-scop-use-in-region-entry-phi-node.ll
@@ -13,13 +13,13 @@ bb:
   br label %bb2
 
 bb2:                                              ; preds = %bb
-  %tmp = load i64*, i64** undef
+  %tmp = load ptr, ptr undef
   br label %bb3
 
 bb3:                                              ; preds = %bb9, %bb2
-  %tmp4 = phi i64* [ %tmp, %bb2 ], [ %tmp5, %bb9 ]
-  %tmp5 = getelementptr inbounds i64, i64* %tmp4, i64 1
-  %tmp6 = load i64, i64* %tmp5
+  %tmp4 = phi ptr [ %tmp, %bb2 ], [ %tmp5, %bb9 ]
+  %tmp5 = getelementptr inbounds i64, ptr %tmp4, i64 1
+  %tmp6 = load i64, ptr %tmp5
   %tmp7 = and i64 %tmp6, 4160749568
   br i1 false, label %bb8, label %bb9
 

diff  --git a/polly/test/Simplify/overwritten.ll b/polly/test/Simplify/overwritten.ll
index 1f288cb26508c..a32d6a8daeb05 100644
--- a/polly/test/Simplify/overwritten.ll
+++ b/polly/test/Simplify/overwritten.ll
@@ -8,7 +8,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @overwritten(i32 %n, double* noalias nonnull %A) {
+define void @overwritten(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -18,8 +18,8 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 21.0, double* %A
-      store double 42.0, double* %A
+      store double 21.0, ptr %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/overwritten_3phi.ll b/polly/test/Simplify/overwritten_3phi.ll
index 305ae856af433..24758b9b7cf91 100644
--- a/polly/test/Simplify/overwritten_3phi.ll
+++ b/polly/test/Simplify/overwritten_3phi.ll
@@ -15,7 +15,7 @@
 ;   A[0] = A[1];
 ; }
 ;
-define void @overwritten_3phi(i32 %n, double* noalias nonnull %A) {
+define void @overwritten_3phi(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -34,7 +34,7 @@ for:
       %phi3 = phi double [%val, %body]
       %add1 = fadd double %phi1, %phi2
       %add2 = fadd double %add1, %phi3
-      store double %add2, double* %A
+      store double %add2, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/overwritten_3store.ll b/polly/test/Simplify/overwritten_3store.ll
index 76c54c3f6a549..63eb5b54f9318 100644
--- a/polly/test/Simplify/overwritten_3store.ll
+++ b/polly/test/Simplify/overwritten_3store.ll
@@ -10,7 +10,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @overwritten_3store(i32 %n, double* noalias nonnull %A) {
+define void @overwritten_3store(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -20,9 +20,9 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 10.5, double* %A
-      store double 21.0, double* %A
-      store double 42.0, double* %A
+      store double 10.5, ptr %A
+      store double 21.0, ptr %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/overwritten_implicit_and_explicit.ll b/polly/test/Simplify/overwritten_implicit_and_explicit.ll
index d6e768cf76deb..56c63b48f761a 100644
--- a/polly/test/Simplify/overwritten_implicit_and_explicit.ll
+++ b/polly/test/Simplify/overwritten_implicit_and_explicit.ll
@@ -12,7 +12,7 @@
 ;   A[0] = val;
 ; }
 ;
-define void @overwritten_implicit_and_explicit(i32 %n, double* noalias nonnull %A, double* noalias nonnull %C) {
+define void @overwritten_implicit_and_explicit(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %C) {
 entry:
   br label %for
 
@@ -23,11 +23,11 @@ for:
 
     body:
       %val = fadd double 21.0, 21.0
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %user
 
     user:
-      store double %val, double* %C
+      store double %val, ptr %C
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/overwritten_loadbetween.ll b/polly/test/Simplify/overwritten_loadbetween.ll
index 914e2a64a1d0d..b31f45d5db621 100644
--- a/polly/test/Simplify/overwritten_loadbetween.ll
+++ b/polly/test/Simplify/overwritten_loadbetween.ll
@@ -13,7 +13,7 @@
 ;   B[0] = val;
 ; }
 ;
-define void @overwritten(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @overwritten(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -23,13 +23,13 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 21.0, double* %A
-      %val = load double, double* %A
-      store double 42.0, double* %A
+      store double 21.0, ptr %A
+      %val = load double, ptr %A
+      store double 42.0, ptr %A
       br label %user
 
     user:
-      store double %val, double* %B
+      store double %val, ptr %B
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/overwritten_scalar.ll b/polly/test/Simplify/overwritten_scalar.ll
index 1d86eb785d033..d55ea7712c365 100644
--- a/polly/test/Simplify/overwritten_scalar.ll
+++ b/polly/test/Simplify/overwritten_scalar.ll
@@ -14,7 +14,7 @@
 ;   A[0] = A[1];
 ; }
 ;
-define void @overwritten_scalar(i32 %n, double* noalias nonnull %A) {
+define void @overwritten_scalar(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -30,7 +30,7 @@ for:
     user:
       %phi = phi double [%val, %body]
       %add = fadd double %val, %phi
-      store double %add, double* %A
+      store double %add, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/pass_existence.ll b/polly/test/Simplify/pass_existence.ll
index 97033ebd380ec..fc5287ed2ee2a 100644
--- a/polly/test/Simplify/pass_existence.ll
+++ b/polly/test/Simplify/pass_existence.ll
@@ -6,7 +6,7 @@
 ; for (int j = 0; j < n; j += 1)
 ;   A[0] = 0.0;
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -16,7 +16,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 0.0, double* %A
+      store double 0.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/phi_in_regionstmt.ll b/polly/test/Simplify/phi_in_regionstmt.ll
index c193cc40e4732..32bb75427589a 100644
--- a/polly/test/Simplify/phi_in_regionstmt.ll
+++ b/polly/test/Simplify/phi_in_regionstmt.ll
@@ -8,25 +8,25 @@
 ;
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-%struct.pic_parameter_set_rbsp_t.3.45.87.129.192.255.465.927.969.990.1029 = type { i32, i32, i32, i32, i32, i32, [8 x i32], [6 x [16 x i32]], [2 x [64 x i32]], [6 x i32], [2 x i32], i32, i32, i32, [8 x i32], [8 x i32], [8 x i32], i32, i32, i32, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
+%struct.pic_parameter_set_rbsp_t.3.45.87.129.192.255.465.927.969.990.1029 = type { i32, i32, i32, i32, i32, i32, [8 x i32], [6 x [16 x i32]], [2 x [64 x i32]], [6 x i32], [2 x i32], i32, i32, i32, [8 x i32], [8 x i32], [8 x i32], i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
 
 @quant8_intra_default = external global [64 x i32], align 16
 @quant_org = external global [16 x i32], align 16
- at qmatrix = external local_unnamed_addr global [8 x i32*], align 16
+ at qmatrix = external local_unnamed_addr global [8 x ptr], align 16
 
 ; Function Attrs: nounwind uwtable
-define void @AssignQuantParam(%struct.pic_parameter_set_rbsp_t.3.45.87.129.192.255.465.927.969.990.1029* %pps) local_unnamed_addr #0 {
+define void @AssignQuantParam(ptr %pps) local_unnamed_addr #0 {
 entry:
   br label %entry.split
 
 entry.split:                                      ; preds = %entry
-  %pic_scaling_matrix_present_flag = getelementptr inbounds %struct.pic_parameter_set_rbsp_t.3.45.87.129.192.255.465.927.969.990.1029, %struct.pic_parameter_set_rbsp_t.3.45.87.129.192.255.465.927.969.990.1029* %pps, i64 0, i32 5
-  %0 = load i32, i32* %pic_scaling_matrix_present_flag, align 4, !tbaa !1
+  %pic_scaling_matrix_present_flag = getelementptr inbounds %struct.pic_parameter_set_rbsp_t.3.45.87.129.192.255.465.927.969.990.1029, ptr %pps, i64 0, i32 5
+  %0 = load i32, ptr %pic_scaling_matrix_present_flag, align 4, !tbaa !1
   %tobool = icmp eq i32 %0, 0
   br i1 %tobool, label %land.lhs.true, label %if.else
 
 land.lhs.true:                                    ; preds = %entry.split
-  store i32* getelementptr inbounds ([16 x i32], [16 x i32]* @quant_org, i64 0, i64 0), i32** getelementptr inbounds ([8 x i32*], [8 x i32*]* @qmatrix, i64 0, i64 4), align 16, !tbaa !7
+  store ptr @quant_org, ptr getelementptr inbounds ([8 x ptr], ptr @qmatrix, i64 0, i64 4), align 16, !tbaa !7
   br label %if.end161
 
 if.else:                                          ; preds = %entry.split
@@ -36,14 +36,14 @@ if.end161:                                        ; preds = %if.else121.us.7, %l
   ret void
 
 if.else121.us.6:                                  ; preds = %if.else
-  %arrayidx80.us.6 = getelementptr inbounds %struct.pic_parameter_set_rbsp_t.3.45.87.129.192.255.465.927.969.990.1029, %struct.pic_parameter_set_rbsp_t.3.45.87.129.192.255.465.927.969.990.1029* %pps, i64 0, i32 6, i64 6
+  %arrayidx80.us.6 = getelementptr inbounds %struct.pic_parameter_set_rbsp_t.3.45.87.129.192.255.465.927.969.990.1029, ptr %pps, i64 0, i32 6, i64 6
   br i1 false, label %if.else121.us.7, label %if.else135.us.6
 
 if.else135.us.6:                                  ; preds = %if.else121.us.6
   br label %if.else121.us.7
 
 if.else121.us.7:                                  ; preds = %if.else135.us.6, %if.else121.us.6
-  %cond91.sink.sink.us.sink.6 = phi i32* [ undef, %if.else135.us.6 ], [ getelementptr inbounds ([64 x i32], [64 x i32]* @quant8_intra_default, i64 0, i64 0), %if.else121.us.6 ]
+  %cond91.sink.sink.us.sink.6 = phi ptr [ undef, %if.else135.us.6 ], [ @quant8_intra_default, %if.else121.us.6 ]
   br label %if.end161
 }
 

diff  --git a/polly/test/Simplify/pr33323.ll b/polly/test/Simplify/pr33323.ll
index eb965c95bc2f3..751f0bff59614 100644
--- a/polly/test/Simplify/pr33323.ll
+++ b/polly/test/Simplify/pr33323.ll
@@ -7,7 +7,7 @@
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
-define fastcc void @pr33323([1000 x double]* nocapture %data, [1000 x double]* nocapture %symmat) {
+define fastcc void @pr33323(ptr nocapture %data, ptr nocapture %symmat) {
 entry:
   br label %for.body98
 
@@ -20,15 +20,15 @@ for.body98:
 
 for.body105:
   %indvars.iv = phi i64 [ 0, %for.body98 ], [ %indvars.iv.next, %for.body105 ]
-  %arrayidx109 = getelementptr inbounds [1000 x double], [1000 x double]* %data, i64 %indvars.iv, i64 0
+  %arrayidx109 = getelementptr inbounds [1000 x double], ptr %data, i64 %indvars.iv, i64 0
   %add119 = fadd double undef, undef
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 1000
   br i1 %exitcond, label %for.end122, label %for.body105
 
 for.end122:
-  %arrayidx130 = getelementptr inbounds [1000 x double], [1000 x double]* %symmat, i64 %indvars.iv13, i64 0
-  store double %add119, double* %arrayidx130
+  %arrayidx130 = getelementptr inbounds [1000 x double], ptr %symmat, i64 %indvars.iv13, i64 0
+  store double %add119, ptr %arrayidx130
   %indvars.iv.next14 = add nuw nsw i64 %indvars.iv13, 1
   %exitcond15 = icmp eq i64 %indvars.iv.next14, 1000
   br i1 %exitcond15, label %for.cond87.loopexit, label %for.body98

diff  --git a/polly/test/Simplify/redundant.ll b/polly/test/Simplify/redundant.ll
index a79a1e7b29b76..e85352bc889fc 100644
--- a/polly/test/Simplify/redundant.ll
+++ b/polly/test/Simplify/redundant.ll
@@ -7,7 +7,7 @@
 ; for (int j = 0; j < n; j += 1)
 ;   A[0] = A[0];
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -17,8 +17,8 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %val = load double, double* %A
-      store double %val, double* %A
+      %val = load double, ptr %A
+      store double %val, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/redundant_
diff erentindex.ll b/polly/test/Simplify/redundant_
diff erentindex.ll
index c63d1fde7ffb1..23531c24344f3 100644
--- a/polly/test/Simplify/redundant_
diff erentindex.ll
+++ b/polly/test/Simplify/redundant_
diff erentindex.ll
@@ -7,7 +7,7 @@
 ; for (int j = 0; j < n; j += 1)
 ;   A[0] = A[0];
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -17,9 +17,9 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %val = load double, double* %A
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %val = load double, ptr %A
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/redundant_partialwrite.ll b/polly/test/Simplify/redundant_partialwrite.ll
index 7ead246a0afbc..ac5ca907fff6f 100644
--- a/polly/test/Simplify/redundant_partialwrite.ll
+++ b/polly/test/Simplify/redundant_partialwrite.ll
@@ -3,7 +3,7 @@
 ; Remove a redundant store, if its partial domain is a subset of the
 ; read's domain.
 ;
-define void @redundant_partialwrite(i32 %n, double* noalias nonnull %A) {
+define void @redundant_partialwrite(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -13,8 +13,8 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %val = load double, double* %A
-      store double %val, double* %A
+      %val = load double, ptr %A
+      store double %val, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/redundant_region.ll b/polly/test/Simplify/redundant_region.ll
index 8c4234b40e292..dbcb420ac2f38 100644
--- a/polly/test/Simplify/redundant_region.ll
+++ b/polly/test/Simplify/redundant_region.ll
@@ -3,7 +3,7 @@
 ; Remove redundant store (a store that writes the same value already
 ; at the destination) in a region.
 ;
-define void @redundant_region(i32 %n, double* noalias nonnull %A) {
+define void @redundant_region(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -14,7 +14,7 @@ for:
 
 
     region_entry:
-      %val = load double, double* %A
+      %val = load double, ptr %A
       %cmp = fcmp oeq double %val, 0.0
       br i1 %cmp, label %region_true, label %region_exit
 
@@ -25,7 +25,7 @@ for:
       br label %body
 
     body:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 

diff  --git a/polly/test/Simplify/redundant_region_scalar.ll b/polly/test/Simplify/redundant_region_scalar.ll
index d1b4528015fcf..95a581ad6f577 100644
--- a/polly/test/Simplify/redundant_region_scalar.ll
+++ b/polly/test/Simplify/redundant_region_scalar.ll
@@ -3,7 +3,7 @@
 ; Remove redundant store (a store that writes the same value already
 ; at the destination) in a region.
 ;
-define void @redundant_region_scalar(i32 %n, double* noalias nonnull %A) {
+define void @redundant_region_scalar(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -14,11 +14,11 @@ for:
 
 
     bodyA:
-      %val1 = load double, double* %A
+      %val1 = load double, ptr %A
       br label %region_entry
 
     region_entry:
-      %val2 = load double, double* %A
+      %val2 = load double, ptr %A
       %cmp = fcmp oeq double %val1, 0.0
       br i1 %cmp, label %region_true, label %region_exit
 
@@ -29,7 +29,7 @@ for:
       br label %bodyB
 
     bodyB:
-      store double %val2, double* %A
+      store double %val2, ptr %A
       br label %inc
 
 

diff  --git a/polly/test/Simplify/redundant_scalarwrite.ll b/polly/test/Simplify/redundant_scalarwrite.ll
index a2082833fd80f..e2f7bbedc023c 100644
--- a/polly/test/Simplify/redundant_scalarwrite.ll
+++ b/polly/test/Simplify/redundant_scalarwrite.ll
@@ -10,7 +10,7 @@
 ;   A[0] = val;
 ; }
 ;
-define void @redundant_scalarwrite(i32 %n, double* noalias nonnull %A) {
+define void @redundant_scalarwrite(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -21,11 +21,11 @@ for:
 
 
     bodyA:
-      %val = load double, double* %A
+      %val = load double, ptr %A
       br label %bodyB
 
     bodyB:
-      store double %val, double* %A
+      store double %val, ptr %A
       br label %inc
 
 

diff  --git a/polly/test/Simplify/redundant_storebetween.ll b/polly/test/Simplify/redundant_storebetween.ll
index 881a1896c5a0b..f624b6e5b995f 100644
--- a/polly/test/Simplify/redundant_storebetween.ll
+++ b/polly/test/Simplify/redundant_storebetween.ll
@@ -7,7 +7,7 @@
 ; for (int j = 0; j < n; j += 1)
 ;   A[0] = A[0];
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -17,10 +17,10 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      %val = load double, double* %A_idx
-      store double 0.0, double* %A
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      %val = load double, ptr %A_idx
+      store double 0.0, ptr %A
+      store double %val, ptr %A_idx
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/scalability1.ll b/polly/test/Simplify/scalability1.ll
index 136c9c352a4e4..0ef99ce1ad8e3 100644
--- a/polly/test/Simplify/scalability1.ll
+++ b/polly/test/Simplify/scalability1.ll
@@ -2,7 +2,7 @@
 ;
 ; Test scalability.
 ;
-define void @func(i32 %n, double* noalias nonnull %A,
+define void @func(i32 %n, ptr noalias nonnull %A,
 i32 %p0, i32 %p1, i32 %p2, i32 %p3, i32 %p4, i32 %p5, i32 %p6, i32 %p7, i32 %p8, i32 %p9,
 i32 %p10, i32 %p11, i32 %p12, i32 %p13, i32 %p14, i32 %p15, i32 %p16, i32 %p17, i32 %p18, i32 %p19,
 i32 %p20, i32 %p21, i32 %p22, i32 %p23, i32 %p24, i32 %p25, i32 %p26, i32 %p27, i32 %p28, i32 %p29,
@@ -17,74 +17,74 @@ for:
 
 
     body:
-      %A0 = getelementptr inbounds double, double* %A, i32 %p0
-      %A1 = getelementptr inbounds double, double* %A, i32 %p1
-      %A2 = getelementptr inbounds double, double* %A, i32 %p2
-      %A3 = getelementptr inbounds double, double* %A, i32 %p3
-      %A4 = getelementptr inbounds double, double* %A, i32 %p4
-      %A5 = getelementptr inbounds double, double* %A, i32 %p5
-      %A6 = getelementptr inbounds double, double* %A, i32 %p6
-      %A7 = getelementptr inbounds double, double* %A, i32 %p7
-      %A8 = getelementptr inbounds double, double* %A, i32 %p8
-      %A9 = getelementptr inbounds double, double* %A, i32 %p9
-      %A10 = getelementptr inbounds double, double* %A, i32 %p10
-      %A11 = getelementptr inbounds double, double* %A, i32 %p11
-      %A12 = getelementptr inbounds double, double* %A, i32 %p12
-      %A13 = getelementptr inbounds double, double* %A, i32 %p13
-      %A14 = getelementptr inbounds double, double* %A, i32 %p14
-      %A15 = getelementptr inbounds double, double* %A, i32 %p15
-      %A16 = getelementptr inbounds double, double* %A, i32 %p16
-      %A17 = getelementptr inbounds double, double* %A, i32 %p17
-      %A18 = getelementptr inbounds double, double* %A, i32 %p18
-      %A19 = getelementptr inbounds double, double* %A, i32 %p19
-      %A20 = getelementptr inbounds double, double* %A, i32 %p20
-      %A21 = getelementptr inbounds double, double* %A, i32 %p21
-      %A22 = getelementptr inbounds double, double* %A, i32 %p22
-      %A23 = getelementptr inbounds double, double* %A, i32 %p23
-      %A24 = getelementptr inbounds double, double* %A, i32 %p24
-      %A25 = getelementptr inbounds double, double* %A, i32 %p25
-      %A26 = getelementptr inbounds double, double* %A, i32 %p26
-      %A27 = getelementptr inbounds double, double* %A, i32 %p27
-      %A28 = getelementptr inbounds double, double* %A, i32 %p28
-      %A29 = getelementptr inbounds double, double* %A, i32 %p29
-      %A30 = getelementptr inbounds double, double* %A, i32 %p30
-      %A31 = getelementptr inbounds double, double* %A, i32 %p31
-      %A32 = getelementptr inbounds double, double* %A, i32 %p32
+      %A0 = getelementptr inbounds double, ptr %A, i32 %p0
+      %A1 = getelementptr inbounds double, ptr %A, i32 %p1
+      %A2 = getelementptr inbounds double, ptr %A, i32 %p2
+      %A3 = getelementptr inbounds double, ptr %A, i32 %p3
+      %A4 = getelementptr inbounds double, ptr %A, i32 %p4
+      %A5 = getelementptr inbounds double, ptr %A, i32 %p5
+      %A6 = getelementptr inbounds double, ptr %A, i32 %p6
+      %A7 = getelementptr inbounds double, ptr %A, i32 %p7
+      %A8 = getelementptr inbounds double, ptr %A, i32 %p8
+      %A9 = getelementptr inbounds double, ptr %A, i32 %p9
+      %A10 = getelementptr inbounds double, ptr %A, i32 %p10
+      %A11 = getelementptr inbounds double, ptr %A, i32 %p11
+      %A12 = getelementptr inbounds double, ptr %A, i32 %p12
+      %A13 = getelementptr inbounds double, ptr %A, i32 %p13
+      %A14 = getelementptr inbounds double, ptr %A, i32 %p14
+      %A15 = getelementptr inbounds double, ptr %A, i32 %p15
+      %A16 = getelementptr inbounds double, ptr %A, i32 %p16
+      %A17 = getelementptr inbounds double, ptr %A, i32 %p17
+      %A18 = getelementptr inbounds double, ptr %A, i32 %p18
+      %A19 = getelementptr inbounds double, ptr %A, i32 %p19
+      %A20 = getelementptr inbounds double, ptr %A, i32 %p20
+      %A21 = getelementptr inbounds double, ptr %A, i32 %p21
+      %A22 = getelementptr inbounds double, ptr %A, i32 %p22
+      %A23 = getelementptr inbounds double, ptr %A, i32 %p23
+      %A24 = getelementptr inbounds double, ptr %A, i32 %p24
+      %A25 = getelementptr inbounds double, ptr %A, i32 %p25
+      %A26 = getelementptr inbounds double, ptr %A, i32 %p26
+      %A27 = getelementptr inbounds double, ptr %A, i32 %p27
+      %A28 = getelementptr inbounds double, ptr %A, i32 %p28
+      %A29 = getelementptr inbounds double, ptr %A, i32 %p29
+      %A30 = getelementptr inbounds double, ptr %A, i32 %p30
+      %A31 = getelementptr inbounds double, ptr %A, i32 %p31
+      %A32 = getelementptr inbounds double, ptr %A, i32 %p32
 
-      %val = load double, double* %A0
+      %val = load double, ptr %A0
 
-      store double %val, double* %A1
-      store double %val, double* %A2
-      store double %val, double* %A3
-      store double %val, double* %A4
-      store double %val, double* %A5
-      store double %val, double* %A6
-      store double %val, double* %A7
-      store double %val, double* %A8
-      store double %val, double* %A9
-      store double %val, double* %A10
-      store double %val, double* %A11
-      store double %val, double* %A12
-      store double %val, double* %A13
-      store double %val, double* %A14
-      store double %val, double* %A15
-      store double %val, double* %A16
-      store double %val, double* %A17
-      store double %val, double* %A18
-      store double %val, double* %A19
-      store double %val, double* %A20
-      store double %val, double* %A21
-      store double %val, double* %A22
-      store double %val, double* %A23
-      store double %val, double* %A24
-      store double %val, double* %A25
-      store double %val, double* %A26
-      store double %val, double* %A27
-      store double %val, double* %A28
-      store double %val, double* %A29
-      store double %val, double* %A30
-      store double %val, double* %A31
-      store double %val, double* %A32
+      store double %val, ptr %A1
+      store double %val, ptr %A2
+      store double %val, ptr %A3
+      store double %val, ptr %A4
+      store double %val, ptr %A5
+      store double %val, ptr %A6
+      store double %val, ptr %A7
+      store double %val, ptr %A8
+      store double %val, ptr %A9
+      store double %val, ptr %A10
+      store double %val, ptr %A11
+      store double %val, ptr %A12
+      store double %val, ptr %A13
+      store double %val, ptr %A14
+      store double %val, ptr %A15
+      store double %val, ptr %A16
+      store double %val, ptr %A17
+      store double %val, ptr %A18
+      store double %val, ptr %A19
+      store double %val, ptr %A20
+      store double %val, ptr %A21
+      store double %val, ptr %A22
+      store double %val, ptr %A23
+      store double %val, ptr %A24
+      store double %val, ptr %A25
+      store double %val, ptr %A26
+      store double %val, ptr %A27
+      store double %val, ptr %A28
+      store double %val, ptr %A29
+      store double %val, ptr %A30
+      store double %val, ptr %A31
+      store double %val, ptr %A32
 
       br label %inc
 

diff  --git a/polly/test/Simplify/scalability2.ll b/polly/test/Simplify/scalability2.ll
index c3a502d4662b8..bac0810b0afad 100644
--- a/polly/test/Simplify/scalability2.ll
+++ b/polly/test/Simplify/scalability2.ll
@@ -2,7 +2,7 @@
 ;
 ; Test scalability.
 ;
-define void @func(i32 %n, double* noalias nonnull %A,
+define void @func(i32 %n, ptr noalias nonnull %A,
 i32 %p0, i32 %p1, i32 %p2, i32 %p3, i32 %p4, i32 %p5, i32 %p6, i32 %p7, i32 %p8, i32 %p9,
 i32 %p10, i32 %p11, i32 %p12, i32 %p13, i32 %p14, i32 %p15, i32 %p16, i32 %p17, i32 %p18, i32 %p19,
 i32 %p20, i32 %p21, i32 %p22, i32 %p23, i32 %p24, i32 %p25, i32 %p26, i32 %p27, i32 %p28, i32 %p29,
@@ -19,156 +19,156 @@ for:
 
 
     body:
-      %A0 = getelementptr inbounds double, double* %A, i32 %p0
-      %A1 = getelementptr inbounds double, double* %A, i32 %p1
-      %A2 = getelementptr inbounds double, double* %A, i32 %p2
-      %A3 = getelementptr inbounds double, double* %A, i32 %p3
-      %A4 = getelementptr inbounds double, double* %A, i32 %p4
-      %A5 = getelementptr inbounds double, double* %A, i32 %p5
-      %A6 = getelementptr inbounds double, double* %A, i32 %p6
-      %A7 = getelementptr inbounds double, double* %A, i32 %p7
-      %A8 = getelementptr inbounds double, double* %A, i32 %p8
-      %A9 = getelementptr inbounds double, double* %A, i32 %p9
-      %A10 = getelementptr inbounds double, double* %A, i32 %p10
-      %A11 = getelementptr inbounds double, double* %A, i32 %p11
-      %A12 = getelementptr inbounds double, double* %A, i32 %p12
-      %A13 = getelementptr inbounds double, double* %A, i32 %p13
-      %A14 = getelementptr inbounds double, double* %A, i32 %p14
-      %A15 = getelementptr inbounds double, double* %A, i32 %p15
-      %A16 = getelementptr inbounds double, double* %A, i32 %p16
-      %A17 = getelementptr inbounds double, double* %A, i32 %p17
-      %A18 = getelementptr inbounds double, double* %A, i32 %p18
-      %A19 = getelementptr inbounds double, double* %A, i32 %p19
-      %A20 = getelementptr inbounds double, double* %A, i32 %p20
-      %A21 = getelementptr inbounds double, double* %A, i32 %p21
-      %A22 = getelementptr inbounds double, double* %A, i32 %p22
-      %A23 = getelementptr inbounds double, double* %A, i32 %p23
-      %A24 = getelementptr inbounds double, double* %A, i32 %p24
-      %A25 = getelementptr inbounds double, double* %A, i32 %p25
-      %A26 = getelementptr inbounds double, double* %A, i32 %p26
-      %A27 = getelementptr inbounds double, double* %A, i32 %p27
-      %A28 = getelementptr inbounds double, double* %A, i32 %p28
-      %A29 = getelementptr inbounds double, double* %A, i32 %p29
-      %A30 = getelementptr inbounds double, double* %A, i32 %p30
-      %A31 = getelementptr inbounds double, double* %A, i32 %p31
-      %A32 = getelementptr inbounds double, double* %A, i32 %p32
-      %A33 = getelementptr inbounds double, double* %A, i32 %p33
-      %A34 = getelementptr inbounds double, double* %A, i32 %p34
-      %A35 = getelementptr inbounds double, double* %A, i32 %p35
-      %A36 = getelementptr inbounds double, double* %A, i32 %p36
-      %A37 = getelementptr inbounds double, double* %A, i32 %p37
-      %A38 = getelementptr inbounds double, double* %A, i32 %p38
-      %A39 = getelementptr inbounds double, double* %A, i32 %p39
-      %A40 = getelementptr inbounds double, double* %A, i32 %p40
-      %A41 = getelementptr inbounds double, double* %A, i32 %p41
-      %A42 = getelementptr inbounds double, double* %A, i32 %p42
-      %A43 = getelementptr inbounds double, double* %A, i32 %p43
-      %A44 = getelementptr inbounds double, double* %A, i32 %p44
-      %A45 = getelementptr inbounds double, double* %A, i32 %p45
-      %A46 = getelementptr inbounds double, double* %A, i32 %p46
-      %A47 = getelementptr inbounds double, double* %A, i32 %p47
-      %A48 = getelementptr inbounds double, double* %A, i32 %p48
-      %A49 = getelementptr inbounds double, double* %A, i32 %p49
-      %A50 = getelementptr inbounds double, double* %A, i32 %p50
-      %A51 = getelementptr inbounds double, double* %A, i32 %p51
-      %A52 = getelementptr inbounds double, double* %A, i32 %p52
-      %A53 = getelementptr inbounds double, double* %A, i32 %p53
-      %A54 = getelementptr inbounds double, double* %A, i32 %p54
-      %A55 = getelementptr inbounds double, double* %A, i32 %p55
-      %A56 = getelementptr inbounds double, double* %A, i32 %p56
-      %A57 = getelementptr inbounds double, double* %A, i32 %p57
-      %A58 = getelementptr inbounds double, double* %A, i32 %p58
-      %A59 = getelementptr inbounds double, double* %A, i32 %p59
-
-      %val0 = load double, double* %A0
-      store double %val0, double* %A1
-
-      %val2 = load double, double* %A2
-      store double %val2, double* %A3
-
-      %val4 = load double, double* %A4
-      store double %val4, double* %A5
-
-      %val6 = load double, double* %A6
-      store double %val6, double* %A7
-
-      %val8 = load double, double* %A8
-      store double %val8, double* %A9
-
-      %val10 = load double, double* %A10
-      store double %val10, double* %A11
-
-      %val12 = load double, double* %A12
-      store double %val12, double* %A13
-
-      %val13 = load double, double* %A13
-      store double %val13, double* %A15
-
-      %val16 = load double, double* %A16
-      store double %val16, double* %A17
-
-      %val18 = load double, double* %A18
-      store double %val18, double* %A19
-
-      %val20 = load double, double* %A20
-      store double %val20, double* %A21
-
-      %val22 = load double, double* %A22
-      store double %val22, double* %A23
-
-      %val24 = load double, double* %A24
-      store double %val24, double* %A25
-
-      %val26 = load double, double* %A26
-      store double %val26, double* %A27
-
-      %val28 = load double, double* %A28
-      store double %val28, double* %A29
-
-      %val30 = load double, double* %A30
-      store double %val30, double* %A31
-
-      %val32 = load double, double* %A32
-      store double %val32, double* %A33
-
-      %val34 = load double, double* %A34
-      store double %val34, double* %A35
-
-      %val36 = load double, double* %A36
-      store double %val36, double* %A37
-
-      %val38 = load double, double* %A38
-      store double %val38, double* %A39
-
-      %val40 = load double, double* %A40
-      store double %val40, double* %A41
-
-      %val42 = load double, double* %A42
-      store double %val42, double* %A43
-
-      %val44 = load double, double* %A44
-      store double %val44, double* %A45
+      %A0 = getelementptr inbounds double, ptr %A, i32 %p0
+      %A1 = getelementptr inbounds double, ptr %A, i32 %p1
+      %A2 = getelementptr inbounds double, ptr %A, i32 %p2
+      %A3 = getelementptr inbounds double, ptr %A, i32 %p3
+      %A4 = getelementptr inbounds double, ptr %A, i32 %p4
+      %A5 = getelementptr inbounds double, ptr %A, i32 %p5
+      %A6 = getelementptr inbounds double, ptr %A, i32 %p6
+      %A7 = getelementptr inbounds double, ptr %A, i32 %p7
+      %A8 = getelementptr inbounds double, ptr %A, i32 %p8
+      %A9 = getelementptr inbounds double, ptr %A, i32 %p9
+      %A10 = getelementptr inbounds double, ptr %A, i32 %p10
+      %A11 = getelementptr inbounds double, ptr %A, i32 %p11
+      %A12 = getelementptr inbounds double, ptr %A, i32 %p12
+      %A13 = getelementptr inbounds double, ptr %A, i32 %p13
+      %A14 = getelementptr inbounds double, ptr %A, i32 %p14
+      %A15 = getelementptr inbounds double, ptr %A, i32 %p15
+      %A16 = getelementptr inbounds double, ptr %A, i32 %p16
+      %A17 = getelementptr inbounds double, ptr %A, i32 %p17
+      %A18 = getelementptr inbounds double, ptr %A, i32 %p18
+      %A19 = getelementptr inbounds double, ptr %A, i32 %p19
+      %A20 = getelementptr inbounds double, ptr %A, i32 %p20
+      %A21 = getelementptr inbounds double, ptr %A, i32 %p21
+      %A22 = getelementptr inbounds double, ptr %A, i32 %p22
+      %A23 = getelementptr inbounds double, ptr %A, i32 %p23
+      %A24 = getelementptr inbounds double, ptr %A, i32 %p24
+      %A25 = getelementptr inbounds double, ptr %A, i32 %p25
+      %A26 = getelementptr inbounds double, ptr %A, i32 %p26
+      %A27 = getelementptr inbounds double, ptr %A, i32 %p27
+      %A28 = getelementptr inbounds double, ptr %A, i32 %p28
+      %A29 = getelementptr inbounds double, ptr %A, i32 %p29
+      %A30 = getelementptr inbounds double, ptr %A, i32 %p30
+      %A31 = getelementptr inbounds double, ptr %A, i32 %p31
+      %A32 = getelementptr inbounds double, ptr %A, i32 %p32
+      %A33 = getelementptr inbounds double, ptr %A, i32 %p33
+      %A34 = getelementptr inbounds double, ptr %A, i32 %p34
+      %A35 = getelementptr inbounds double, ptr %A, i32 %p35
+      %A36 = getelementptr inbounds double, ptr %A, i32 %p36
+      %A37 = getelementptr inbounds double, ptr %A, i32 %p37
+      %A38 = getelementptr inbounds double, ptr %A, i32 %p38
+      %A39 = getelementptr inbounds double, ptr %A, i32 %p39
+      %A40 = getelementptr inbounds double, ptr %A, i32 %p40
+      %A41 = getelementptr inbounds double, ptr %A, i32 %p41
+      %A42 = getelementptr inbounds double, ptr %A, i32 %p42
+      %A43 = getelementptr inbounds double, ptr %A, i32 %p43
+      %A44 = getelementptr inbounds double, ptr %A, i32 %p44
+      %A45 = getelementptr inbounds double, ptr %A, i32 %p45
+      %A46 = getelementptr inbounds double, ptr %A, i32 %p46
+      %A47 = getelementptr inbounds double, ptr %A, i32 %p47
+      %A48 = getelementptr inbounds double, ptr %A, i32 %p48
+      %A49 = getelementptr inbounds double, ptr %A, i32 %p49
+      %A50 = getelementptr inbounds double, ptr %A, i32 %p50
+      %A51 = getelementptr inbounds double, ptr %A, i32 %p51
+      %A52 = getelementptr inbounds double, ptr %A, i32 %p52
+      %A53 = getelementptr inbounds double, ptr %A, i32 %p53
+      %A54 = getelementptr inbounds double, ptr %A, i32 %p54
+      %A55 = getelementptr inbounds double, ptr %A, i32 %p55
+      %A56 = getelementptr inbounds double, ptr %A, i32 %p56
+      %A57 = getelementptr inbounds double, ptr %A, i32 %p57
+      %A58 = getelementptr inbounds double, ptr %A, i32 %p58
+      %A59 = getelementptr inbounds double, ptr %A, i32 %p59
+
+      %val0 = load double, ptr %A0
+      store double %val0, ptr %A1
+
+      %val2 = load double, ptr %A2
+      store double %val2, ptr %A3
+
+      %val4 = load double, ptr %A4
+      store double %val4, ptr %A5
+
+      %val6 = load double, ptr %A6
+      store double %val6, ptr %A7
+
+      %val8 = load double, ptr %A8
+      store double %val8, ptr %A9
+
+      %val10 = load double, ptr %A10
+      store double %val10, ptr %A11
+
+      %val12 = load double, ptr %A12
+      store double %val12, ptr %A13
+
+      %val13 = load double, ptr %A13
+      store double %val13, ptr %A15
+
+      %val16 = load double, ptr %A16
+      store double %val16, ptr %A17
+
+      %val18 = load double, ptr %A18
+      store double %val18, ptr %A19
+
+      %val20 = load double, ptr %A20
+      store double %val20, ptr %A21
+
+      %val22 = load double, ptr %A22
+      store double %val22, ptr %A23
+
+      %val24 = load double, ptr %A24
+      store double %val24, ptr %A25
+
+      %val26 = load double, ptr %A26
+      store double %val26, ptr %A27
+
+      %val28 = load double, ptr %A28
+      store double %val28, ptr %A29
+
+      %val30 = load double, ptr %A30
+      store double %val30, ptr %A31
+
+      %val32 = load double, ptr %A32
+      store double %val32, ptr %A33
+
+      %val34 = load double, ptr %A34
+      store double %val34, ptr %A35
+
+      %val36 = load double, ptr %A36
+      store double %val36, ptr %A37
+
+      %val38 = load double, ptr %A38
+      store double %val38, ptr %A39
+
+      %val40 = load double, ptr %A40
+      store double %val40, ptr %A41
+
+      %val42 = load double, ptr %A42
+      store double %val42, ptr %A43
+
+      %val44 = load double, ptr %A44
+      store double %val44, ptr %A45
 
-      %val46 = load double, double* %A46
-      store double %val46, double* %A47
+      %val46 = load double, ptr %A46
+      store double %val46, ptr %A47
 
-      %val48 = load double, double* %A48
-      store double %val48, double* %A49
+      %val48 = load double, ptr %A48
+      store double %val48, ptr %A49
 
-      %val50 = load double, double* %A50
-      store double %val50, double* %A51
+      %val50 = load double, ptr %A50
+      store double %val50, ptr %A51
 
-      %val52 = load double, double* %A52
-      store double %val52, double* %A53
+      %val52 = load double, ptr %A52
+      store double %val52, ptr %A53
 
-      %val54 = load double, double* %A54
-      store double %val54, double* %A55
+      %val54 = load double, ptr %A54
+      store double %val54, ptr %A55
 
-      %val56 = load double, double* %A56
-      store double %val56, double* %A57
+      %val56 = load double, ptr %A56
+      store double %val56, ptr %A57
 
-      %val58 = load double, double* %A58
-      store double %val58, double* %A59
+      %val58 = load double, ptr %A58
+      store double %val58, ptr %A59
 
       br label %inc
 

diff  --git a/polly/test/Simplify/sweep_mapped_phi.ll b/polly/test/Simplify/sweep_mapped_phi.ll
index cb54bba54b96d..add1681cdf36b 100644
--- a/polly/test/Simplify/sweep_mapped_phi.ll
+++ b/polly/test/Simplify/sweep_mapped_phi.ll
@@ -12,7 +12,7 @@
 ; }
 ;
 
-define void @sweep_mapped_phi(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @sweep_mapped_phi(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -23,14 +23,14 @@ for:
 
     bodyA:
       %val = fadd double 21.0, 21.0
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %bodyB
 
     bodyB:
       %phi = phi double [%val, %bodyA]
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      store double %phi, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      store double %phi, ptr %B_idx
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/sweep_mapped_value.ll b/polly/test/Simplify/sweep_mapped_value.ll
index 5964832fdbd5d..2e2f9c37febe1 100644
--- a/polly/test/Simplify/sweep_mapped_value.ll
+++ b/polly/test/Simplify/sweep_mapped_value.ll
@@ -12,7 +12,7 @@
 ; }
 ;
 
-define void @sweep_mapped_value(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @sweep_mapped_value(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -23,13 +23,13 @@ for:
 
     bodyA:
       %val = fadd double 21.0, 21.0
-      %A_idx = getelementptr inbounds double, double* %A, i32 %j
-      store double %val, double* %A_idx
+      %A_idx = getelementptr inbounds double, ptr %A, i32 %j
+      store double %val, ptr %A_idx
       br label %bodyB
 
     bodyB:
-      %B_idx = getelementptr inbounds double, double* %B, i32 %j
-      store double %val, double* %B_idx
+      %B_idx = getelementptr inbounds double, ptr %B, i32 %j
+      store double %val, ptr %B_idx
       br label %inc
 
 inc:

diff  --git a/polly/test/Simplify/ununsed_read_in_region_entry.ll b/polly/test/Simplify/ununsed_read_in_region_entry.ll
index 66d67f43e0e63..9b2d4521e2d62 100644
--- a/polly/test/Simplify/ununsed_read_in_region_entry.ll
+++ b/polly/test/Simplify/ununsed_read_in_region_entry.ll
@@ -7,7 +7,7 @@
 ;      B[0] = 42.0;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A, double* noalias nonnull %B) {
+define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) {
 entry:
   br label %for
 
@@ -18,12 +18,12 @@ for:
 
 
     region_entry:
-      %val = load double, double* %A
+      %val = load double, ptr %A
       %cmp = fcmp oeq double 21.0, 0.0
       br i1 %cmp, label %region_true, label %region_exit
 
     region_true:
-      store double 42.0, double* %B
+      store double 42.0, ptr %B
       br label %region_exit
 
     region_exit:

diff  --git a/polly/test/Support/defaultpipelines.ll b/polly/test/Support/defaultpipelines.ll
index d4a4b0a930753..ab0329a70327e 100644
--- a/polly/test/Support/defaultpipelines.ll
+++ b/polly/test/Support/defaultpipelines.ll
@@ -15,7 +15,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @func(i32 %n, double* noalias nonnull %A) {
+define void @func(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -25,7 +25,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:
@@ -42,5 +42,5 @@ return:
 
 ; CHECK-LABEL: define void @func(
 ; ON:       polly.stmt.body.lr.ph:
-; ON-NEXT:    store double 4.200000e+01, double* %A, align 8
+; ON-NEXT:    store double 4.200000e+01, ptr %A, align 8
 ; OFF-NOT:  polly

diff  --git a/polly/test/Support/dumpfunction.ll b/polly/test/Support/dumpfunction.ll
index 2de71d86bb024..8d578029593d2 100644
--- a/polly/test/Support/dumpfunction.ll
+++ b/polly/test/Support/dumpfunction.ll
@@ -20,9 +20,9 @@
 
 %unrelated_type = type { i32 }
 
- at callee_alias = dso_local unnamed_addr alias void(i32, double*, i32), void(i32, double*, i32 )* @callee
+ at callee_alias = dso_local unnamed_addr alias void(i32, ptr, i32), ptr @callee
 
-define internal void @callee(i32 %n, double* noalias nonnull %A, i32 %i) #0 {
+define internal void @callee(i32 %n, ptr noalias nonnull %A, i32 %i) #0 {
 entry:
   br label %for
 
@@ -33,8 +33,8 @@ for:
 
     body:
       %idx = add i32 %i, %j
-      %arrayidx = getelementptr inbounds double, double* %A, i32 %idx
-      store double 42.0, double* %arrayidx
+      %arrayidx = getelementptr inbounds double, ptr %A, i32 %idx
+      store double 42.0, ptr %arrayidx
       br label %inc
 
 inc:
@@ -49,7 +49,7 @@ return:
 }
 
 
-define void @caller(i32 %n, double* noalias nonnull %A) #0 {
+define void @caller(i32 %n, ptr noalias nonnull %A) #0 {
 entry:
   br label %for
 
@@ -59,7 +59,7 @@ for:
   br i1 %i.cmp, label %body, label %exit
 
     body:
-      call void @callee(i32 %n, double* %A, i32 %i)
+      call void @callee(i32 %n, ptr %A, i32 %i)
       br label %inc
 
 inc:

diff  --git a/polly/test/Support/dumpmodule.ll b/polly/test/Support/dumpmodule.ll
index 025422742878c..693fe4bc6cde3 100644
--- a/polly/test/Support/dumpmodule.ll
+++ b/polly/test/Support/dumpmodule.ll
@@ -15,7 +15,7 @@
 ; }
 
 
-define internal void @callee(i32 %n, double* noalias nonnull %A, i32 %i) {
+define internal void @callee(i32 %n, ptr noalias nonnull %A, i32 %i) {
 entry:
   br label %for
 
@@ -26,8 +26,8 @@ for:
 
     body:
       %idx = add i32 %i, %j
-      %arrayidx = getelementptr inbounds double, double* %A, i32 %idx
-      store double 42.0, double* %arrayidx
+      %arrayidx = getelementptr inbounds double, ptr %A, i32 %idx
+      store double 42.0, ptr %arrayidx
       br label %inc
 
 inc:
@@ -42,7 +42,7 @@ return:
 }
 
 
-define void @caller(i32 %n, double* noalias nonnull %A) {
+define void @caller(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -52,7 +52,7 @@ for:
   br i1 %i.cmp, label %body, label %exit
 
     body:
-      call void @callee(i32 %n, double* %A, i32 %i)
+      call void @callee(i32 %n, ptr %A, i32 %i)
       br label %inc
 
 inc:
@@ -69,10 +69,10 @@ return:
 
 ; EARLY-LABEL: @callee(
 ; AFTEREARLY:  polly.split_new_and_old:
-; EARLY:         store double 4.200000e+01, double* %arrayidx
+; EARLY:         store double 4.200000e+01, ptr %arrayidx
 ; EARLY-LABEL: @caller(
 ; EARLY:         call void @callee(
 
 ; LATE-LABEL: @caller(
 ; AFTERLATE:  polly.split_new_and_old:
-; LATE:          store double 4.200000e+01, double* %arrayidx
+; LATE:          store double 4.200000e+01, ptr %arrayidx

diff  --git a/polly/test/Support/exportjson.ll b/polly/test/Support/exportjson.ll
index dc20999573c5f..9974f676a5312 100644
--- a/polly/test/Support/exportjson.ll
+++ b/polly/test/Support/exportjson.ll
@@ -7,7 +7,7 @@
 ;   A[0] = 42.0;
 ; }
 ;
-define void @exportjson(i32 %n, double* noalias nonnull %A) {
+define void @exportjson(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -17,7 +17,7 @@ for:
   br i1 %j.cmp, label %body, label %exit
 
     body:
-      store double 42.0, double* %A
+      store double 42.0, ptr %A
       br label %inc
 
 inc:

diff  --git a/polly/test/Support/isl-args.ll b/polly/test/Support/isl-args.ll
index 84207983f3a0d..efa94194bc3f9 100644
--- a/polly/test/Support/isl-args.ll
+++ b/polly/test/Support/isl-args.ll
@@ -10,7 +10,7 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 ; Any valid SCoP causing the creation of a ScopInfo object.
-define void @foo_1d(float* %A) {
+define void @foo_1d(ptr %A) {
 bb:
   br label %bb1
 
@@ -21,10 +21,10 @@ bb1:                                              ; preds = %bb6, %bb
 
 bb2:                                              ; preds = %bb1
   %tmp = sitofp i64 %i.0 to float
-  %tmp3 = getelementptr inbounds float, float* %A, i64 %i.0
-  %tmp4 = load float, float* %tmp3, align 4
+  %tmp3 = getelementptr inbounds float, ptr %A, i64 %i.0
+  %tmp4 = load float, ptr %tmp3, align 4
   %tmp5 = fadd float %tmp4, %tmp
-  store float %tmp5, float* %tmp3, align 4
+  store float %tmp5, ptr %tmp3, align 4
   br label %bb6
 
 bb6:                                              ; preds = %bb2

diff  --git a/polly/test/Support/pipelineposition.ll b/polly/test/Support/pipelineposition.ll
index 9e220e3a2a1e5..a4506ba1d64ed 100644
--- a/polly/test/Support/pipelineposition.ll
+++ b/polly/test/Support/pipelineposition.ll
@@ -15,7 +15,7 @@
 ; }
 
 
-define internal void @callee(i32 %n, double* noalias nonnull %A, i32 %i) {
+define internal void @callee(i32 %n, ptr noalias nonnull %A, i32 %i) {
 entry:
   br label %for
 
@@ -26,8 +26,8 @@ for:
 
     body:
       %idx = add i32 %i, %j
-      %arrayidx = getelementptr inbounds double, double* %A, i32 %idx
-      store double 42.0, double* %arrayidx
+      %arrayidx = getelementptr inbounds double, ptr %A, i32 %idx
+      store double 42.0, ptr %arrayidx
       br label %inc
 
 inc:
@@ -42,7 +42,7 @@ return:
 }
 
 
-define void @caller(i32 %n, double* noalias nonnull %A) {
+define void @caller(i32 %n, ptr noalias nonnull %A) {
 entry:
   br label %for
 
@@ -52,7 +52,7 @@ for:
   br i1 %i.cmp, label %body, label %exit
 
     body:
-      call void @callee(i32 %n, double* %A, i32 %i)
+      call void @callee(i32 %n, ptr %A, i32 %i)
       br label %inc
 
 inc:


        


More information about the llvm-commits mailing list