summaryrefslogtreecommitdiffstats
path: root/build/build-clang/revert-llvmorg-14-init-3651-g85ba583eba19.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build/build-clang/revert-llvmorg-14-init-3651-g85ba583eba19.patch')
-rw-r--r--build/build-clang/revert-llvmorg-14-init-3651-g85ba583eba19.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/build/build-clang/revert-llvmorg-14-init-3651-g85ba583eba19.patch b/build/build-clang/revert-llvmorg-14-init-3651-g85ba583eba19.patch
new file mode 100644
index 0000000000..03b6235eb9
--- /dev/null
+++ b/build/build-clang/revert-llvmorg-14-init-3651-g85ba583eba19.patch
@@ -0,0 +1,64 @@
+diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
+index b0b64328b84e..ae0aca09ea4a 100644
+--- a/clang/lib/CodeGen/CGCall.cpp
++++ b/clang/lib/CodeGen/CGCall.cpp
+@@ -2087,6 +2087,24 @@ void CodeGenModule::ConstructAttributeList(StringRef Name,
+ // allows it to work on indirect virtual function calls.
+ if (AttrOnCallSite && TargetDecl->hasAttr<NoMergeAttr>())
+ FuncAttrs.addAttribute(llvm::Attribute::NoMerge);
++
++ // Add known guaranteed alignment for allocation functions.
++ if (unsigned BuiltinID = Fn->getBuiltinID()) {
++ switch (BuiltinID) {
++ case Builtin::BIaligned_alloc:
++ case Builtin::BIcalloc:
++ case Builtin::BImalloc:
++ case Builtin::BImemalign:
++ case Builtin::BIrealloc:
++ case Builtin::BIstrdup:
++ case Builtin::BIstrndup:
++ RetAttrs.addAlignmentAttr(Context.getTargetInfo().getNewAlign() /
++ Context.getTargetInfo().getCharWidth());
++ break;
++ default:
++ break;
++ }
++ }
+ }
+
+ // 'const', 'pure' and 'noalias' attributed functions are also nounwind.
+diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
+index 506af5d1458c..5c22df026a7d 100644
+--- a/clang/lib/Sema/SemaDecl.cpp
++++ b/clang/lib/Sema/SemaDecl.cpp
+@@ -15215,30 +15215,6 @@ void Sema::AddKnownFunctionAttributes(FunctionDecl *FD) {
+ else
+ FD->addAttr(CUDAHostAttr::CreateImplicit(Context, FD->getLocation()));
+ }
+-
+- // Add known guaranteed alignment for allocation functions.
+- switch (BuiltinID) {
+- case Builtin::BIaligned_alloc:
+- case Builtin::BIcalloc:
+- case Builtin::BImalloc:
+- case Builtin::BImemalign:
+- case Builtin::BIrealloc:
+- case Builtin::BIstrdup:
+- case Builtin::BIstrndup: {
+- if (!FD->hasAttr<AssumeAlignedAttr>()) {
+- unsigned NewAlign = Context.getTargetInfo().getNewAlign() /
+- Context.getTargetInfo().getCharWidth();
+- IntegerLiteral *Alignment = IntegerLiteral::Create(
+- Context, Context.MakeIntValue(NewAlign, Context.UnsignedIntTy),
+- Context.UnsignedIntTy, FD->getLocation());
+- FD->addAttr(AssumeAlignedAttr::CreateImplicit(
+- Context, Alignment, /*Offset=*/nullptr, FD->getLocation()));
+- }
+- break;
+- }
+- default:
+- break;
+- }
+ }
+
+ AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction(FD);