[PATCH] D153311: [Attributor] Unify AAMemoryLocation and AAMemoryBehavior

Johannes Doerfert via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 19 16:12:58 PDT 2023


jdoerfert created this revision.
jdoerfert added reviewers: nikic, fhahn, arsenm, tianshilei1992, jhuber6.
Herald added subscribers: hoy, ormris, StephenFan, okura, kuter, steven_wu, bollu, hiraditya.
Herald added a reviewer: homerdin.
Herald added a project: All.
jdoerfert requested review of this revision.
Herald added subscribers: llvm-commits, jplehr, sstefan1, wdng.
Herald added a reviewer: sstefan1.
Herald added a project: LLVM.

NOTE: I still need to double check all test changes.

Since we added the `memory` attribute it was clear that AAMemoryLocation
and AAMemoryBehavior should be merged. We do this now and replace all
the custom bit-fiddling with the existing logic in `llvm::MemoryEffects`.
Since we want to track more locations, we made that class extensible in
https://reviews.llvm.org/D153305.

The new AA is a combination of the former two, though we tried to reduce
the compile time during the rewrite. We do not track accesses
transitively anymore (so a call site needs to be checked by the user of
`checkForAllAccessesToMemoryKind`). We also use a single
`AAMemoryLocation` for a call site or function to model the call
site/function as well as the arguments.


https://reviews.llvm.org/D153311

Files:
  llvm/include/llvm/Transforms/IPO/Attributor.h
  llvm/lib/Transforms/IPO/Attributor.cpp
  llvm/lib/Transforms/IPO/AttributorAttributes.cpp
  llvm/lib/Transforms/IPO/OpenMPOpt.cpp
  llvm/test/Transforms/Attributor/ArgumentPromotion/X86/attributes.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/X86/min-legal-vector-width.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/X86/thiscall.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/alignment.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/alloca-as.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/array.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/attrs.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/basictest.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/byval-2.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/dbg.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/fp80.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/inalloca.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/live_called_from_dead_2.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/musttail.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/nonzero-address-spaces.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/pr27568.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/pr32917.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/profile.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/reserve-tbaa.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/sret.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/tail.ll
  llvm/test/Transforms/Attributor/ArgumentPromotion/variadic.ll
  llvm/test/Transforms/Attributor/IPConstantProp/PR26044.ll
  llvm/test/Transforms/Attributor/IPConstantProp/openmp_parallel_for.ll
  llvm/test/Transforms/Attributor/IPConstantProp/pthreads.ll
  llvm/test/Transforms/Attributor/IPConstantProp/return-argument.ll
  llvm/test/Transforms/Attributor/IPConstantProp/thread_local_acs.ll
  llvm/test/Transforms/Attributor/align.ll
  llvm/test/Transforms/Attributor/call-simplify-pointer-info.ll
  llvm/test/Transforms/Attributor/callbacks.ll
  llvm/test/Transforms/Attributor/callgraph.ll
  llvm/test/Transforms/Attributor/convergent.ll
  llvm/test/Transforms/Attributor/depgraph.ll
  llvm/test/Transforms/Attributor/dereferenceable-1.ll
  llvm/test/Transforms/Attributor/dereferenceable-2-inseltpoison.ll
  llvm/test/Transforms/Attributor/dereferenceable-2.ll
  llvm/test/Transforms/Attributor/heap_to_stack.ll
  llvm/test/Transforms/Attributor/heap_to_stack_gpu.ll
  llvm/test/Transforms/Attributor/internal-noalias.ll
  llvm/test/Transforms/Attributor/liveness.ll
  llvm/test/Transforms/Attributor/memory_locations.ll
  llvm/test/Transforms/Attributor/misc.ll
  llvm/test/Transforms/Attributor/misc_crash.ll
  llvm/test/Transforms/Attributor/multiple-offsets-pointer-info.ll
  llvm/test/Transforms/Attributor/noalias.ll
  llvm/test/Transforms/Attributor/nocapture-1.ll
  llvm/test/Transforms/Attributor/nocapture-2.ll
  llvm/test/Transforms/Attributor/nofree.ll
  llvm/test/Transforms/Attributor/nonnull.ll
  llvm/test/Transforms/Attributor/norecurse.ll
  llvm/test/Transforms/Attributor/nosync.ll
  llvm/test/Transforms/Attributor/noundef.ll
  llvm/test/Transforms/Attributor/openmp_parallel.ll
  llvm/test/Transforms/Attributor/pointer-info.ll
  llvm/test/Transforms/Attributor/range.ll
  llvm/test/Transforms/Attributor/read_write_returned_arguments_scc.ll
  llvm/test/Transforms/Attributor/readattrs.ll
  llvm/test/Transforms/Attributor/reduced/aa_execution_domain_wrong_fn.ll
  llvm/test/Transforms/Attributor/reduced/missed_cached_entry_for_intra_reachability.ll
  llvm/test/Transforms/Attributor/reduced/openmp_opt_global_synced.ll
  llvm/test/Transforms/Attributor/returned.ll
  llvm/test/Transforms/Attributor/undefined_behavior.ll
  llvm/test/Transforms/Attributor/value-simplify-assume.ll
  llvm/test/Transforms/Attributor/value-simplify-dbg.ll
  llvm/test/Transforms/Attributor/value-simplify-dominance.ll
  llvm/test/Transforms/Attributor/value-simplify-gpu.ll
  llvm/test/Transforms/Attributor/value-simplify-instances.ll
  llvm/test/Transforms/Attributor/value-simplify-local-remote.ll
  llvm/test/Transforms/Attributor/value-simplify-pointer-info.ll
  llvm/test/Transforms/Attributor/value-simplify-reachability.ll
  llvm/test/Transforms/Attributor/value-simplify.ll
  llvm/test/Transforms/Attributor/willreturn.ll
  llvm/test/Transforms/OpenMP/barrier_removal.ll
  llvm/test/Transforms/OpenMP/custom_state_machines.ll
  llvm/test/Transforms/OpenMP/custom_state_machines_pre_lto.ll
  llvm/test/Transforms/OpenMP/heap-to-shared-missing-declarations.ll
  llvm/test/Transforms/OpenMP/parallel_deletion.ll
  llvm/test/Transforms/OpenMP/parallel_region_merging.ll
  llvm/test/Transforms/OpenMP/reduced_pointer_info_assertion.ll
  llvm/test/Transforms/OpenMP/remove_globalization.ll
  llvm/test/Transforms/OpenMP/replace_globalization.ll
  llvm/test/Transforms/OpenMP/spmdization.ll
  llvm/test/Transforms/OpenMP/spmdization_constant_prop.ll
  llvm/test/Transforms/OpenMP/spmdization_guarding_two_reaching_kernels.ll
  llvm/test/Transforms/OpenMP/spmdization_no_guarding_two_reaching_kernels.ll



More information about the llvm-commits mailing list