[AssumeBundles] Use operand bundles to encode alignment assumptions
authorTyker <tyker1@outlook.com>
Wed, 24 Jun 2020 11:18:21 +0000 (13:18 +0200)
committerTyker <tyker1@outlook.com>
Thu, 25 Jun 2020 10:59:44 +0000 (12:59 +0200)
commitc95ffadb2474a4d8c4f598d94d35a9f31d9606cb
tree9c1feba9f75a5e184d3593ae0d9e73955d0b9cd1
parent8938a6c9ede29a2d738357c44d66a017d74fcc7e
[AssumeBundles] Use operand bundles to encode alignment assumptions

Summary:
NOTE: There is a mailing list discussion on this: http://lists.llvm.org/pipermail/llvm-dev/2019-December/137632.html

Complemantary to the assumption outliner prototype in D71692, this patch
shows how we could simplify the code emitted for an alignemnt
assumption. The generated code is smaller, less fragile, and it makes it
easier to recognize the additional use as a "assumption use".

As mentioned in D71692 and on the mailing list, we could adopt this
scheme, and similar schemes for other patterns, without adopting the
assumption outlining.

Reviewers: hfinkel, xbolva00, lebedev.ri, nikic, rjmccall, spatel, jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: yamauchi, kuter, fhahn, merge_guards_bot, hiraditya, bollu, rkruppe, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D71739
34 files changed:
clang/lib/CodeGen/CodeGenFunction.cpp
clang/test/CodeGen/align_value.cpp
clang/test/CodeGen/alloc-align-attr.c
clang/test/CodeGen/assume-aligned-and-alloc-align-attributes.c
clang/test/CodeGen/builtin-align-array.c
clang/test/CodeGen/builtin-align.c
clang/test/CodeGen/builtin-assume-aligned.c
clang/test/CodeGen/catch-alignment-assumption-attribute-align_value-on-lvalue.cpp
clang/test/CodeGen/catch-alignment-assumption-attribute-align_value-on-paramvar.cpp
clang/test/CodeGen/catch-alignment-assumption-attribute-alloc_align-on-function-variable.cpp
clang/test/CodeGen/catch-alignment-assumption-attribute-alloc_align-on-function.cpp
clang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function-two-params.cpp
clang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function.cpp
clang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-three-params-variable.cpp
clang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-three-params.cpp
clang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-two-params.cpp
clang/test/CodeGen/catch-alignment-assumption-openmp.cpp
clang/test/CodeGen/non-power-of-2-alignment-assumptions.c
clang/test/OpenMP/simd_codegen.cpp
clang/test/OpenMP/simd_metadata.c
clang/test/OpenMP/target_teams_distribute_parallel_for_simd_codegen.cpp
llvm/include/llvm/IR/IRBuilder.h
llvm/lib/Analysis/AssumeBundleQueries.cpp
llvm/lib/IR/IRBuilder.cpp
llvm/lib/IR/Verifier.cpp
llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp
llvm/test/Transforms/AlignmentFromAssumptions/simple.ll
llvm/test/Transforms/AlignmentFromAssumptions/simple32.ll
llvm/test/Transforms/Inline/align.ll
llvm/test/Transforms/InstCombine/assume.ll
llvm/test/Transforms/PhaseOrdering/inlining-alignment-assumptions.ll
llvm/test/Verifier/assume-bundles.ll
llvm/unittests/Analysis/AssumeBundleQueriesTest.cpp