Author: Florian Hahn
Date: 2025-04-01T09:28:46+01:00
New Revision: 9e5bfbf77db0945f59c0d18012a8e6d43c711b3a
URL:
https://github.com/llvm/llvm-project/commit/9e5bfbf77db0945f59c0d18012a8e6d43c711b3a
DIFF:
https://github.com/llvm/llvm-project/commit/9e5bfbf77db0945f59c0d18012a8e6d43c711b3a.diff
@@ -138,6 +139,9 @@ class EquivalenceClasses {
/// ECValues, it just keeps the key as part of the value.
std::set TheMapping;
+ /// List of all members, used to provide a determinstic iteration order.
+ SmallVector Members;
fhahn wrote:
Shared it here h
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/134075
>From 10afe2fb4743c0fccaad2797fffca174736a0997 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Sat, 29 Mar 2025 20:20:39 +
Subject: [PATCH 1/2] [EquivalenceClasses] Use SmallVector for deterministic
iterati
@@ -138,6 +139,9 @@ class EquivalenceClasses {
/// ECValues, it just keeps the key as part of the value.
std::set TheMapping;
+ /// List of all members, used to provide a determinstic iteration order.
+ SmallVector Members;
fhahn wrote:
This is where th
https://github.com/fhahn created
https://github.com/llvm/llvm-project/pull/134075
Currently iterators over EquivalenceClasses will iterate over std::set, which
guarantees the order specified by the comperator. Unfortunately in many cases,
EquivalenceClasses are used with pointers, so iterating
Author: Florian Hahn
Date: 2025-04-01T08:45:46+01:00
New Revision: 64d493f987dc24b3d7e45daade9b0e8bfa1cc471
URL:
https://github.com/llvm/llvm-project/commit/64d493f987dc24b3d7e45daade9b0e8bfa1cc471
DIFF:
https://github.com/llvm/llvm-project/commit/64d493f987dc24b3d7e45daade9b0e8bfa1cc471.diff
Author: Florian Hahn
Date: 2025-03-31T22:27:59+01:00
New Revision: 32f24029c72dae175c9e2cc81f931f065a2ba347
URL:
https://github.com/llvm/llvm-project/commit/32f24029c72dae175c9e2cc81f931f065a2ba347
DIFF:
https://github.com/llvm/llvm-project/commit/32f24029c72dae175c9e2cc81f931f065a2ba347.diff
https://github.com/fhahn created
https://github.com/llvm/llvm-project/pull/131885
None
>From fb1120b5a4abd716f6071ce8c7cfc81e725e9030 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Fri, 14 Mar 2025 15:40:47 +
Subject: [PATCH] [IRGen] Mark pointers as noalias when passing trivial types
@@ -9242,3 +9242,15 @@ Declares that a function potentially allocates heap
memory, and prevents any pot
of ``nonallocating`` by the compiler.
}];
}
+
+def ValueTypeDocs : Documentation {
+ let Category = DocCatDecl;
+ let Content = [{
+The ``value_type`` attribute can be u
https://github.com/fhahn updated https://github.com/llvm/llvm-project/pull/95004
>From c3b6943c236990c9f0ba363b4335b3c0e048ef2c Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Mon, 10 Jun 2024 16:54:02 +0100
Subject: [PATCH 1/3] [clang] Add value_type attr, use it to add noalias when
pass-by-
fhahn wrote:
Just rebased the PR and
> > I feel like this is a property that needs to propagate through types
>
> You mean, similar to the way trivial_abi works? That makes sense.
I am not sure about propagating. I added some documentation to make the spec of
the attribute clearer.
Specific
https://github.com/fhahn updated https://github.com/llvm/llvm-project/pull/95004
>From c3b6943c236990c9f0ba363b4335b3c0e048ef2c Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Mon, 10 Jun 2024 16:54:02 +0100
Subject: [PATCH 1/2] [clang] Add value_type attr, use it to add noalias when
pass-by-
https://github.com/fhahn closed https://github.com/llvm/llvm-project/pull/125050
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/125050
>From 3133b6bf495e82ec63a29ab639ab91ddd7421464 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Thu, 30 Jan 2025 11:33:12 +
Subject: [PATCH 1/7] [MergeFuncs] Don't introduce calls to weak_odr functions.
Avoi
https://github.com/fhahn closed https://github.com/llvm/llvm-project/pull/121789
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -2761,6 +2761,47 @@ etc.).
Query for this feature with
``__has_builtin(__builtin_assume_separate_storage)``.
+``__builtin_assume_dereferenceable``
+-
+
+``__builtin_assume_dereferenceable`` is used to provide the optimizer with the
+kno
fhahn wrote:
https://github.com/llvm/llvm-project/pull/126117 has landed now which adjusted
the semantics of dereferenceable assume bundles and I think it should be safe
to go ahead with exposing this in Clang.
Unless there are any further concerns I am planning on submitting this soon :)
htt
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/121789
>From b7b0a7a8a04e579c512c13bf114613ced56b8fe5 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Mon, 6 Jan 2025 13:39:55 +
Subject: [PATCH 1/5] [Clang] Add __builtin_assume_dereferenceable to encode
deref as
https://github.com/fhahn commented:
Great, thanks for fixing this!
https://github.com/llvm/llvm-project/pull/126721
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/fhahn closed https://github.com/llvm/llvm-project/pull/122116
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/fhahn edited https://github.com/llvm/llvm-project/pull/122116
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/122116
>From 04ae49a9c6680c6c9f2f9f482fc1f25fffd0d4d5 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Wed, 8 Jan 2025 13:07:01 +
Subject: [PATCH 1/8] [TBAA] Don't emit pointer-tbaa for void pointers.
While there a
@@ -2489,6 +2489,81 @@ are listed below.
$ clang -fuse-ld=lld -Oz -Wl,--icf=safe -fcodegen-data-use code.cc
+Strict Aliasing
+---
+
+The C and C++ standards require accesses to objects in memory to use l-values
of
+an appropriate type for the object. This is
@@ -5272,6 +5296,8 @@ The Visual C++ Toolset has a slightly more elaborate
mechanism for detection.
Restrictions and Limitations compared to Clang
--
+.. _clang_cl_strict_aliasing:
+
Strict Aliasing
fhahn wrote:
I
@@ -2489,6 +2489,81 @@ are listed below.
$ clang -fuse-ld=lld -Oz -Wl,--icf=safe -fcodegen-data-use code.cc
+Strict Aliasing
+---
+
+The C and C++ standards require accesses to objects in memory to use l-values
of
+an appropriate type for the object. This is
@@ -2489,6 +2489,81 @@ are listed below.
$ clang -fuse-ld=lld -Oz -Wl,--icf=safe -fcodegen-data-use code.cc
+Strict Aliasing
+---
+
+The C and C++ standards require accesses to objects in memory to use l-values
of
+an appropriate type for the object. This is
fhahn wrote:
> ⚠️ We detected that you are using a GitHub private e-mail address to
> contribute to the repo. Please turn off [Keep my email addresses
> private](https://github.com/settings/emails) setting in your account. See
> [LLVM
> Discourse](https://discourse.llvm.org/t/hidden-emails-on
@@ -2489,6 +2489,30 @@ are listed below.
$ clang -fuse-ld=lld -Oz -Wl,--icf=safe -fcodegen-data-use code.cc
+Strict Aliasing
+---
+
+Clang by default applies C/C++'s strict aliasing rules during optimizations. In
+cases C and C++ rules diverge, the more conser
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/122116
>From bac0f4a9dfbf375d876bc84c4474a533cbecec0e Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Wed, 8 Jan 2025 13:07:01 +
Subject: [PATCH 1/7] [TBAA] Don't emit pointer-tbaa for void pointers.
While there a
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/122116
>From 9a637043f00ad388971cd6d4247510510fca31c8 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Wed, 8 Jan 2025 13:07:01 +
Subject: [PATCH 1/6] [TBAA] Don't emit pointer-tbaa for void pointers.
While there a
fhahn wrote:
I updated the PR to not depend on
https://github.com/llvm/llvm-project/pull/123595, if it lands before, I'll add
back the reference to the TypeSanitizer doc
https://github.com/llvm/llvm-project/pull/122116
___
cfe-commits mailing list
cf
@@ -2486,6 +2486,23 @@ are listed below.
$ clang -fuse-ld=lld -Oz -Wl,--icf=safe -fcodegen-data-use code.cc
+Strict Aliasing
+---
+
+Clang by default applies C/C++'s strict aliasing rules during optimizations. In
fhahn wrote:
Thanks updated.
fhahn wrote:
> I could add a link to your initial pull request? You have a decent writeup
> there on how it works.
It's probably better to add a paragraph instead of linking to a PR. Of course
the description can be taken from the PR
https://github.com/llvm/llvm-project/pull/123595
_
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/122116
>From adbcc4fc5044d82bd983671ef5442142a3f498fe Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Wed, 8 Jan 2025 13:07:01 +
Subject: [PATCH 1/5] [TBAA] Don't emit pointer-tbaa for void pointers.
While there a
https://github.com/fhahn approved this pull request.
LGTM thanks!
I think it would be great to add a paragraph or link to a doc about how it
works as suggested by @vitalybuka but this could also be done as follow-up
https://github.com/llvm/llvm-project/pull/123595
_
fhahn wrote:
> Okay, so if the ultimate pointee type is `void`, we're basically treating
> that as a generic pointer, no matter what the pointer depth is? I guess that
> makes sense.
>
> > What would be a good place to document this?
>
> Hmm, I was hoping that we would have a section in the m
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/122116
>From adbcc4fc5044d82bd983671ef5442142a3f498fe Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Wed, 8 Jan 2025 13:07:01 +
Subject: [PATCH 1/4] [TBAA] Don't emit pointer-tbaa for void pointers.
While there a
@@ -526,6 +526,11 @@ static AttributeSet
getIntrinsicArgAttributeSet(LLVMContext &C, unsigned ID) {
)",
ID);
for (const CodeGenIntrinsic::ArgAttribute &Attr : Attrs) {
+if (Attr.Kind == CodeGenIntrinsic::NoCapture) {
fhahn wro
https://github.com/fhahn approved this pull request.
LGTM, thanks
https://github.com/llvm/llvm-project/pull/123181
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/fhahn edited https://github.com/llvm/llvm-project/pull/123181
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -526,6 +526,11 @@ static AttributeSet
getIntrinsicArgAttributeSet(LLVMContext &C, unsigned ID) {
)",
ID);
for (const CodeGenIntrinsic::ArgAttribute &Attr : Attrs) {
+if (Attr.Kind == CodeGenIntrinsic::NoCapture) {
fhahn wro
@@ -1015,7 +1015,7 @@ struct OperandBundleUse {
/// has the attribute A.
bool operandHasAttr(unsigned Idx, Attribute::AttrKind A) const {
if (isDeoptOperandBundle())
- if (A == Attribute::ReadOnly || A == Attribute::NoCapture)
fhahn wrote:
This ca
https://github.com/fhahn commented:
Just double checking, do we have a test for the auto-upgrade?
https://github.com/llvm/llvm-project/pull/123181
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/c
https://github.com/fhahn edited https://github.com/llvm/llvm-project/pull/123181
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -0,0 +1,153 @@
+
+TypeSanitizer
+
+
+.. contents::
+ :local:
+
+Introduction
+
+
+TypeSanitizer is a detector for strict type aliasing violations. It consists
of a compiler
+instrumentation module and a run-time library. The tool d
@@ -0,0 +1,153 @@
+
+TypeSanitizer
+
+
+.. contents::
+ :local:
+
+Introduction
+
+
+TypeSanitizer is a detector for strict type aliasing violations. It consists
of a compiler
+instrumentation module and a run-time library. The tool d
@@ -0,0 +1,153 @@
+
+TypeSanitizer
+
+
+.. contents::
+ :local:
+
+Introduction
+
+
+TypeSanitizer is a detector for strict type aliasing violations. It consists
of a compiler
+instrumentation module and a run-time library. The tool d
@@ -0,0 +1,153 @@
+
+TypeSanitizer
+
+
+.. contents::
+ :local:
+
+Introduction
+
+
+TypeSanitizer is a detector for strict type aliasing violations. It consists
of a compiler
+instrumentation module and a run-time library. The tool d
@@ -0,0 +1,153 @@
+
+TypeSanitizer
+
+
+.. contents::
+ :local:
+
+Introduction
+
+
+TypeSanitizer is a detector for strict type aliasing violations. It consists
of a compiler
+instrumentation module and a run-time library. The tool d
@@ -0,0 +1,153 @@
+
+TypeSanitizer
+
+
+.. contents::
+ :local:
+
+Introduction
+
+
+TypeSanitizer is a detector for strict type aliasing violations. It consists
of a compiler
+instrumentation module and a run-time library. The tool d
https://github.com/fhahn edited https://github.com/llvm/llvm-project/pull/123595
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -0,0 +1,153 @@
+
+TypeSanitizer
+
+
+.. contents::
+ :local:
+
+Introduction
+
+
+TypeSanitizer is a detector for strict type aliasing violations. It consists
of a compiler
+instrumentation module and a run-time library. The tool d
@@ -0,0 +1,153 @@
+
+TypeSanitizer
+
+
+.. contents::
+ :local:
+
+Introduction
+
+
+TypeSanitizer is a detector for strict type aliasing violations. It consists
of a compiler
+instrumentation module and a run-time library. The tool d
https://github.com/fhahn commented:
Thanks for putting this up!
https://github.com/llvm/llvm-project/pull/123595
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -3391,6 +3391,27 @@ static void findStoresToUninstrumentedArgAllocas(
}
}
+StringRef getAllocaName(AllocaInst *AI) {
+ // Alloca could have been renamed for uniqueness. Its true name will have
been
+ // recorded as an annotation.
+ if (AI->hasMetadata(LLVMContext::MD_
@@ -3391,6 +3391,27 @@ static void findStoresToUninstrumentedArgAllocas(
}
}
+StringRef getAllocaName(AllocaInst *AI) {
fhahn wrote:
```suggestion
static StringRef getAllocaName(AllocaInst *AI) {
```
https://github.com/llvm/llvm-project/pull/119387
___
@@ -3425,12 +3446,14 @@ void FunctionStackPoisoner::processStaticAllocas() {
ArgInitInst->moveBefore(InsBefore);
// If we have a call to llvm.localescape, keep it in the entry block.
- if (LocalEscapeCall) LocalEscapeCall->moveBefore(InsBefore);
+ if (LocalEscapeCall)
@@ -134,6 +134,12 @@ llvm::AllocaInst
*CodeGenFunction::CreateTempAlloca(llvm::Type *Ty,
Alloca =
new llvm::AllocaInst(Ty, CGM.getDataLayout().getAllocaAddrSpace(),
ArraySize, Name, AllocaInsertPt->getIterator());
+ llvm::errs() << "Al
@@ -3391,6 +3391,27 @@ static void findStoresToUninstrumentedArgAllocas(
}
}
+StringRef getAllocaName(AllocaInst *AI) {
+ // Alloca could have been renamed for uniqueness. Its true name will have
been
+ // recorded as an annotation.
+ if (AI->hasMetadata(LLVMContext::MD_
@@ -3391,6 +3391,27 @@ static void findStoresToUninstrumentedArgAllocas(
}
}
+StringRef getAllocaName(AllocaInst *AI) {
+ // Alloca could have been renamed for uniqueness. Its true name will have
been
+ // recorded as an annotation.
+ if (AI->hasMetadata(LLVMContext::MD_
@@ -3391,6 +3391,27 @@ static void findStoresToUninstrumentedArgAllocas(
}
}
+StringRef getAllocaName(AllocaInst *AI) {
+ // Alloca could have been renamed for uniqueness. Its true name will have
been
+ // recorded as an annotation.
+ if (AI->hasMetadata(LLVMContext::MD_
@@ -3391,6 +3391,27 @@ static void findStoresToUninstrumentedArgAllocas(
}
}
+StringRef getAllocaName(AllocaInst *AI) {
+ // Alloca could have been renamed for uniqueness. Its true name will have
been
+ // recorded as an annotation.
+ if (AI->hasMetadata(LLVMContext::MD_
fhahn wrote:
> Looks like this is causing a crash when building with sanitizers enabled on
> macOS
>
> Reduced reproducer: https://llvm.godbolt.org/z/fn83n4oz4
>
> End-to-end crash on GreenDragon:
> https://green.lab.llvm.org/job/llvm.org/job/clang-stage2-cmake-RgSan/664/console
Looked like
fhahn wrote:
Looks like this is causing a crash when building with sanitizers enabled on
macOS
Reduced reproducer: https://llvm.godbolt.org/z/fn83n4oz4
End-to-end crash on GreenDragon:
https://green.lab.llvm.org/job/llvm.org/job/clang-stage2-cmake-RgSan/664/console
https://github.com/llvm/ll
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/121789
>From efd38085120304c434487bf4a58a025086698180 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Mon, 6 Jan 2025 13:39:55 +
Subject: [PATCH 1/5] [Clang] Add __builtin_assume_dereferenceable to encode
deref as
@@ -2761,6 +2761,41 @@ etc.).
Query for this feature with
``__has_builtin(__builtin_assume_separate_storage)``.
+``__builtin_assume_dereferenceable``
+-
+
+``__builtin_assume_derefernceable`` is used to provide the optimizer with the
-
@@ -2761,6 +2761,41 @@ etc.).
Query for this feature with
``__has_builtin(__builtin_assume_separate_storage)``.
+``__builtin_assume_dereferenceable``
+-
+
+``__builtin_assume_derefernceable`` is used to provide the optimizer with the
+know
@@ -2761,6 +2761,41 @@ etc.).
Query for this feature with
``__has_builtin(__builtin_assume_separate_storage)``.
+``__builtin_assume_dereferenceable``
+-
+
+``__builtin_assume_derefernceable`` is used to provide the optimizer with the
+know
@@ -0,0 +1,36 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s |
FileCheck %s
+
+// CHECK-LABEL: @test1(
+// CHECK-NEXT: entry:
+// CHECK-NEXT:[[A_ADDR:%.*]] = alloca ptr,
@@ -839,6 +839,12 @@ def BuiltinAssumeAligned : Builtin {
let Prototype = "void*(void const*, size_t, ...)";
}
+def BuiltinAssumeDereferenceable : Builtin {
+ let Spellings = ["__builtin_assume_dereferenceable"];
+ let Attributes = [NoThrow, Const, Constexpr];
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/121789
>From 2c7c9bbf17f5c3c78c85dc91540004d75707ebe5 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Mon, 6 Jan 2025 13:39:55 +
Subject: [PATCH 1/4] [Clang] Add __builtin_assume_dereferenceable to encode
deref as
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/122116
>From 9d05f760c524fd23e6f160ec2f65c7a5ccdde52e Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Wed, 8 Jan 2025 13:07:01 +
Subject: [PATCH 1/3] [TBAA] Don't emit pointer-tbaa for void pointers.
While there a
fhahn wrote:
What would be a good place to document this?
https://github.com/llvm/llvm-project/pull/122116
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/122116
>From befe3a63d95712bf450ad1af360a8fb50c655a12 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Wed, 8 Jan 2025 13:07:01 +
Subject: [PATCH 1/2] [TBAA] Don't emit pointer-tbaa for void pointers.
While there a
fhahn wrote:
@pinskia thanks for sharing the GCC context!
https://github.com/llvm/llvm-project/pull/122116
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/fhahn created
https://github.com/llvm/llvm-project/pull/122116
While there are no special rules in the standards regarding void pointers and
strict aliasing, emitting distinct tags for void pointers break some common
idioms and there is no good alternative to re-write the co
Author: Florian Hahn
Date: 2025-01-08T14:08:28Z
New Revision: 346fad5c2c28d0cd39475ae979ee468a420ebed7
URL:
https://github.com/llvm/llvm-project/commit/346fad5c2c28d0cd39475ae979ee468a420ebed7
DIFF:
https://github.com/llvm/llvm-project/commit/346fad5c2c28d0cd39475ae979ee468a420ebed7.diff
LOG:
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/121789
>From 596d1346eb806e4c276042e50cca7514d3335f54 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Mon, 6 Jan 2025 13:39:55 +
Subject: [PATCH 1/3] [Clang] Add __builtin_assume_dereferenceable to encode
deref as
@@ -2761,6 +2761,41 @@ etc.).
Query for this feature with
``__has_builtin(__builtin_assume_separate_storage)``.
+``__builtin_assume_dereferenceable``
+-
+
+``__builtin_assume_derefernceable`` is used to provide the optimizer with the
+know
@@ -2761,6 +2761,41 @@ etc.).
Query for this feature with
``__has_builtin(__builtin_assume_separate_storage)``.
+``__builtin_assume_dereferenceable``
+-
+
+``__builtin_assume_derefernceable`` is used to provide the optimizer with the
+know
@@ -839,6 +839,12 @@ def BuiltinAssumeAligned : Builtin {
let Prototype = "void*(void const*, size_t, ...)";
}
+def BuiltinAssumeDereferenceable : Builtin {
+ let Spellings = ["__builtin_assume_dereferenceable"];
+ let Attributes = [NoThrow, Const, Constexpr];
@@ -3726,6 +3726,16 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl
GD, unsigned BuiltinID,
AlignmentCI, OffsetValue);
return RValue::get(PtrValue);
}
+ case Builtin::BI__builtin_assume_dereferenceable: {
+const Expr *Ptr = E-
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/121789
>From 596d1346eb806e4c276042e50cca7514d3335f54 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Mon, 6 Jan 2025 13:39:55 +
Subject: [PATCH 1/2] [Clang] Add __builtin_assume_dereferenceable to encode
deref as
Author: Florian Hahn
Date: 2025-01-08T11:54:02Z
New Revision: 9fc152d25ea1610efe2824c763e96e790d520910
URL:
https://github.com/llvm/llvm-project/commit/9fc152d25ea1610efe2824c763e96e790d520910
DIFF:
https://github.com/llvm/llvm-project/commit/9fc152d25ea1610efe2824c763e96e790d520910.diff
LOG:
https://github.com/fhahn closed https://github.com/llvm/llvm-project/pull/121922
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -3430,13 +3430,15 @@ void FunctionStackPoisoner::processStaticAllocas() {
SmallVector SVD;
SVD.reserve(AllocaVec.size());
for (AllocaInst *AI : AllocaVec) {
-ASanStackVariableDescription D = {AI->getName().data(),
- ASan.getAllo
@@ -3430,13 +3430,15 @@ void FunctionStackPoisoner::processStaticAllocas() {
SmallVector SVD;
SVD.reserve(AllocaVec.size());
for (AllocaInst *AI : AllocaVec) {
-ASanStackVariableDescription D = {AI->getName().data(),
- ASan.getAllo
@@ -53,3 +53,4 @@ LLVM_FIXED_MD_KIND(MD_DIAssignID, "DIAssignID", 38)
LLVM_FIXED_MD_KIND(MD_coro_outside_frame, "coro.outside.frame", 39)
LLVM_FIXED_MD_KIND(MD_mmra, "mmra", 40)
LLVM_FIXED_MD_KIND(MD_noalias_addrspace, "noalias.addrspace", 41)
+LLVM_FIXED_MD_KIND(MD_unaltered_n
@@ -3430,13 +3430,15 @@ void FunctionStackPoisoner::processStaticAllocas() {
SmallVector SVD;
SVD.reserve(AllocaVec.size());
for (AllocaInst *AI : AllocaVec) {
-ASanStackVariableDescription D = {AI->getName().data(),
- ASan.getAllo
https://github.com/fhahn created
https://github.com/llvm/llvm-project/pull/121922
Type metadata for incomplete types should also get handled at the place they
are defined.
Fixes https://github.com/llvm/llvm-project/issues/121014.
>From d5f66784891b0bd1d8a23060ec104b3a7d07dbec Mon Sep 17 00:00
https://github.com/fhahn created
https://github.com/llvm/llvm-project/pull/121789
This patch adds a new __builtin_assume_dereferenceable to encode
dereferenceability of a pointer using llvm.assume with an operand bundle.
For now the builtin only accepts constant sizes, I am planning to drop th
fhahn wrote:
Would be good to also update the documentation for the builtins the clarify the
behavior.
https://github.com/llvm/llvm-project/pull/119423
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/list
https://github.com/fhahn approved this pull request.
LGTM, thanks!
https://github.com/llvm/llvm-project/pull/120667
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/fhahn updated
https://github.com/llvm/llvm-project/pull/120565
>From 75b6f8923dcb386d3520dbde762f3855af73aed4 Mon Sep 17 00:00:00 2001
From: Florian Hahn
Date: Thu, 19 Dec 2024 11:39:20 +
Subject: [PATCH] [TySan] Don't report globals with external storage.
Globals with e
@@ -105,11 +106,32 @@ void SanitizerMetadata::reportGlobal(llvm::GlobalVariable
*GV,
GV, Loc, Ty, "init");
GV->setSanitizerMetadata(Meta);
+
+ if (Ty.isNull() || !CGM.getLangOpts().Sanitize.has(SanitizerKind::Type) ||
https://github.com/fhahn created
https://github.com/llvm/llvm-project/pull/120565
Globals with external storage should have been initialized where they are
defined.
Fixes https://github.com/llvm/llvm-project/issues/120448
>From a12283a7da8da16053f02ecf4f41c2eaa06717cd Mon Sep 17 00:00:00 2001
@@ -1306,6 +1306,10 @@ void PassBuilder::addVectorPasses(OptimizationLevel
Level,
}
// Cleanup after the loop optimization passes.
FPM.addPass(InstCombinePass());
+ // InstCombine can create CSE opportunities when it cleans the result of loop
+ // vectorization. They o
fhahn wrote:
> I guess there are no release notes or manual b/c this is not ready to be used
> by general users on the command line and that will come via another PR?
I added a release note as part of the Clang patch to the `Sanitizers` section:
https://clang.llvm.org/docs/ReleaseNotes.html#sa
fhahn wrote:
AFAICT this is happening at each place that includes the file, e.g. also if you
build AddressSanitizer. Not sure what the best way forward here is as this is
not related to TypeSanitizer, but seems to impact all sanitizers?
https://github.com/llvm/llvm-project/pull/76261
_
https://github.com/fhahn closed https://github.com/llvm/llvm-project/pull/76261
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
1 - 100 of 637 matches
Mail list logo