diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2020-07-04 22:45:41 +0300 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2020-07-04 23:49:23 +0300 |
commit | 7ea46aee3670981827c04df89b2c3a1cbdc7561b (patch) | |
tree | 78a88b19883a18ddab7ee1c262982b80d0293e45 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 5d5b9682527debef472bd8547e4e10df22ac0ef4 (diff) | |
download | llvm-7ea46aee3670981827c04df89b2c3a1cbdc7561b.zip llvm-7ea46aee3670981827c04df89b2c3a1cbdc7561b.tar.gz llvm-7ea46aee3670981827c04df89b2c3a1cbdc7561b.tar.bz2 |
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.
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions