[all-commits] [llvm/llvm-project] 7ea46a: Revert "[AssumeBundles] Use operand bundles to enc...

Roman Lebedev via All-commits all-commits at lists.llvm.org
Sat Jul 4 13:50:56 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 7ea46aee3670981827c04df89b2c3a1cbdc7561b
      https://github.com/llvm/llvm-project/commit/7ea46aee3670981827c04df89b2c3a1cbdc7561b
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2020-07-04 (Sat, 04 Jul 2020)

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

  Log Message:
  -----------
  Revert "[AssumeBundles] Use operand bundles to encode alignment assumptions"

Assume bundle can have more than one entry with the same name,
but at least AlignmentFromAssumptionsPass::extractAlignmentInfo() uses
getOperandBundle("align"), which internally assumes that it isn't the
case, and happily crashes otherwise.

Minimal reduced reproducer: run `opt -alignment-from-assumptions` on

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"

%0 = type { i64, %1*, i8*, i64, %2, i32, %3*, i8* }
%1 = type opaque
%2 = type { i8, i8, i16 }
%3 = type { i32, i32, i32, i32 }

; Function Attrs: nounwind
define i32 @f(%0* noalias nocapture readonly %arg, %0* noalias %arg1) local_unnamed_addr #0 {
bb:
  call void @llvm.assume(i1 true) [ "align"(%0* %arg, i64 8), "align"(%0* %arg1, i64 8) ]
  ret i32 0
}

; Function Attrs: nounwind willreturn
declare void @llvm.assume(i1) #1

attributes #0 = { nounwind "reciprocal-estimates"="none" }
attributes #1 = { nounwind willreturn }


This is what we'd have with -mllvm -enable-knowledge-retention

This reverts commit c95ffadb2474a4d8c4f598d94d35a9f31d9606cb.




More information about the All-commits mailing list