@@ -792,7 +792,7 @@ ABIArgInfo X86_32ABIInfo::classifyArgumentType(QualType Ty,
CCState &State,
return ABIArgInfo::getDirect();
return ABIArgInfo::getExpand();
}
-return getIndirectResult(Ty, /*ByVal=*/false, State);
+return getIndirectResult(Ty, IsVe
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/91846
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1950,8 +1950,22 @@ ConstantLValueEmitter::tryEmitBase(const
APValue::LValueBase &base) {
if (D->hasAttr())
return CGM.GetWeakRefReference(D).getPointer();
-if (auto FD = dyn_cast(D))
- return CGM.GetAddrOfFunction(FD);
+if (auto FD = dyn_cast(D)) {
@@ -4180,8 +4180,10 @@ LValue CodeGenFunction::EmitArraySubscriptExpr(const
ArraySubscriptExpr *E,
// If the base is a vector type, then we are forming a vector element lvalue
// with this subscript.
- if (E->getBase()->getType()->isVectorType() &&
- !isa(E->getBase
@@ -88,3 +88,13 @@ float subscript_float32(svfloat32_t a, size_t b) {
double subscript_float64(svfloat64_t a, size_t b) {
return a[b];
}
+
+// CHECK-LABEL: @subscript_write_float32(
+// CHECK-NEXT: entry:
+// CHECK-NEXT:[[VECINS:%.*]] = insertelement
[[A:%.*]], float 1
@@ -6088,6 +6088,9 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl
GD, unsigned BuiltinID,
StringRef Prefix =
llvm::Triple::getArchTypePrefix(getTarget().getTriple().getArch());
if (!Prefix.empty()) {
+if (Prefix == "spv" &&
+getTarget().getTr
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/90741
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1052,6 +1053,165 @@ CodeGenFunction::emitFlexibleArrayMemberSize(const Expr
*E, unsigned Type,
return Builder.CreateSelect(Cmp, Res, ConstantInt::get(ResType, 0,
IsSigned));
}
+namespace {
+
+class ObjectSizeVisitor
+: public ConstStmtVisitor {
+ bool SkipASE;
+
+
@@ -1052,6 +1053,165 @@ CodeGenFunction::emitFlexibleArrayMemberSize(const Expr
*E, unsigned Type,
return Builder.CreateSelect(Cmp, Res, ConstantInt::get(ResType, 0,
IsSigned));
}
+namespace {
+
+class ObjectSizeVisitor
+: public ConstStmtVisitor {
+ bool SkipASE;
+
+
@@ -1052,6 +1053,165 @@ CodeGenFunction::emitFlexibleArrayMemberSize(const Expr
*E, unsigned Type,
return Builder.CreateSelect(Cmp, Res, ConstantInt::get(ResType, 0,
IsSigned));
}
+namespace {
+
+class ObjectSizeVisitor
+: public ConstStmtVisitor {
+ bool SkipASE;
+
+
@@ -3768,6 +3768,12 @@ def err_conflicting_attributes_arm_state : Error<
"conflicting attributes for state '%0'">;
def err_sme_streaming_cannot_be_multiversioned : Error<
"streaming function cannot be multi-versioned">;
+def err_sme_streaming_mode_change_no_sve : Error<
+
@@ -8287,6 +8289,13 @@ AArch64TargetLowering::LowerCall(CallLoweringInfo &CLI,
SDValue InGlue;
if (RequiresSMChange) {
+
+if (Subtarget->hasSVE()) {
efriedma-quic wrote:
I'm not sure I follow what the issue is... I think we discussed before that we
w
@@ -6088,6 +6088,9 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl
GD, unsigned BuiltinID,
StringRef Prefix =
llvm::Triple::getArchTypePrefix(getTarget().getTriple().getArch());
if (!Prefix.empty()) {
+if (Prefix == "spv" &&
+getTarget().getTr
@@ -1,13 +1,15 @@
-// RUN: %clang_cc1 -emit-llvm -triple arm64-- -o - %s -O0 | FileCheck %s
--check-prefix=CHECK-O0
-// RUN: %clang_cc1 -emit-llvm -disable-llvm-optzns -triple arm64-- -o - %s -O3
| FileCheck %s --check-prefix=CHECK-O3
+// NOTE: Assertions have been autogenerated
https://github.com/efriedma-quic approved this pull request.
LGTM.
I'm not completely convinced by your argument here... but let's try to move
forward and land this and #88898 so we can do the refactor to use isUnique().
Then we can revisit later if necessary.
https://github.com/llvm/llvm-pr
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/88898
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/efriedma-quic closed
https://github.com/llvm/llvm-project/pull/88898
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/efriedma-quic closed
https://github.com/llvm/llvm-project/pull/1
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
clang already supports `?:` with a vector condition; does this add anything new
on top of that?
https://github.com/llvm/llvm-project/pull/91306
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin
efriedma-quic wrote:
However we choose to emit this particular builtin, should we provide a way to
write a function like this? Like, the caller has to either support sve, or
have streaming enabled. Maybe call it __arm_streaming_compatible_requires_sve.
https://github.com/llvm/llvm-project/pu
efriedma-quic wrote:
> The data layout will insert 4-bytes of padding between the float and the
> vector because the vector needs to be properly aligned.
You can use `type <{ float, <2 x float>}>` if you need the tightly-packed
layout.
https://github.com/llvm/llvm-project/pull/91999
_
efriedma-quic wrote:
clang already generates certain diagnostics from ExprConstant; expanding the
set of diagnostics could be reasonable.
Alternatively, we could try to add some sort of cooperation between
DiagRuntimeBehavior and constant evaluation, to try to avoid having to diagnose
everyth
https://github.com/efriedma-quic edited
https://github.com/llvm/llvm-project/pull/92427
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
The key here is that `__arm_streaming_compatible` is the only way to write code
that runs in both streaming and non-streaming mode; outside of
`__arm_streaming_compatible`, there generally isn't an issue. If you know
you're not in streaming mode, you can just check direct
efriedma-quic wrote:
> Thinking about it a bit more, maybe we can just do some magic to make things
> work? Say, if you specify `__attribute__((target("sve")))
> __arm_streaming_compatible`, and the caller is in streaming mode, allow the
> call even if the caller doesn't have SVE proper.
Thin
@@ -535,20 +535,23 @@ void AggExprEmitter::EmitArrayInit(Address DestPtr,
llvm::ArrayType *AType,
elementType.isTriviallyCopyableType(CGF.getContext())) {
CodeGen::CodeGenModule &CGM = CGF.CGM;
ConstantEmitter Emitter(CGF);
-LangAS AS = ArrayQTy.getAddressSpa
@@ -949,11 +949,11 @@ tryEmitGlobalCompoundLiteral(ConstantEmitter &emitter,
static llvm::Constant *
EmitArrayConstant(CodeGenModule &CGM, llvm::ArrayType *DesiredType,
- llvm::Type *CommonElementType, unsigned ArrayBound,
+ llvm::Type *Common
efriedma-quic wrote:
clang specifically diagnoses always_inline functions. So for example, say you
want to write something like:
```
#include
__attribute__((always_inline, target("+sve")))
static inline void f(void* p) __arm_streaming_compatible {
*(svuint32_t*)p = svmul_m(svptrue_b32(), *(
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/92473
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
If we're going to do this, it should probably also work for constants.
Also, I think I'd prefer to sort out the situation with the C++ standard's
rules for constant merging before we start extending those rules. See #63628.
https://github.com/llvm/llvm-project/pull/92499
_
@@ -4180,8 +4180,10 @@ LValue CodeGenFunction::EmitArraySubscriptExpr(const
ArraySubscriptExpr *E,
// If the base is a vector type, then we are forming a vector element lvalue
// with this subscript.
- if (E->getBase()->getType()->isVectorType() &&
- !isa(E->getBase
@@ -537,8 +537,9 @@ void AggExprEmitter::EmitArrayInit(Address DestPtr,
llvm::ArrayType *AType,
elementType.isTriviallyCopyableType(CGF.getContext())) {
CodeGen::CodeGenModule &CGM = CGF.CGM;
ConstantEmitter Emitter(CGF);
+Qualifiers Quals;
QualType GVAr
@@ -537,8 +537,9 @@ void AggExprEmitter::EmitArrayInit(Address DestPtr,
llvm::ArrayType *AType,
elementType.isTriviallyCopyableType(CGF.getContext())) {
CodeGen::CodeGenModule &CGM = CGF.CGM;
ConstantEmitter Emitter(CGF);
+Qualifiers Quals;
QualType GVAr
@@ -3054,6 +3054,13 @@ QualType ASTContext::removeAddrSpaceQualType(QualType T)
const {
if (!T.hasAddressSpace())
return T;
+ // For arrays, strip the qualifier off the element type, then reconstruct the
+ // array type
+ if (T.getTypePtr()->isArrayType()) {
+Qua
@@ -0,0 +1,55 @@
+// RUN: %clang_cc1 -emit-llvm -triple i386-linux -Wno-unknown-pragmas %s -o -
| FileCheck %s
efriedma-quic wrote:
Since this is a preprocessor testcase, can you just use -E?
https://github.com/llvm/llvm-project/pull/92699
_
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/92778
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -0,0 +1,55 @@
+// RUN: %clang_cc1 -emit-llvm -triple i386-linux -Wno-unknown-pragmas %s -o -
| FileCheck %s
efriedma-quic wrote:
Is there some reason the preprocessor can't parse FENV_ROUND? Breaking code
with -save-temps etc. seems bad.
https://github.com
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/90849
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1950,8 +1950,22 @@ ConstantLValueEmitter::tryEmitBase(const
APValue::LValueBase &base) {
if (D->hasAttr())
return CGM.GetWeakRefReference(D).getPointer();
-if (auto FD = dyn_cast(D))
- return CGM.GetAddrOfFunction(FD);
+if (auto FD = dyn_cast(D)) {
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/92612
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/90255
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
Bot is unreliable, so copy-pasting:
> ⚠️ 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:/
efriedma-quic wrote:
This patch, as proposed, doesn't seem like a good idea: it's very likely to
miscompile user code without any diagnostic. Are you sure you don't want one of
the following?
- A soft-float ABI (-mabi=aapcs-soft)
- Completely forbidding the use of floating-point values (-mgene
https://github.com/efriedma-quic approved this pull request.
Please don't use "NFC" markings for patches that change the emitted IR, even if
it doesn't significantly impact the resulting assembly in most cases.
That said, LGTM
https://github.com/llvm/llvm-project/pull/92836
___
efriedma-quic wrote:
I think the underlying functionality is pretty clearly useful: identical code
folding gives significant codesize reductions. In fact, on Windows, the linker
does this kind of folding automatically by default (despite the fact that it
isn't standards-compliant). I imagine
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/91965
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/92885
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1793,6 +1793,37 @@ void ItaniumCXXABI::EmitDestructorCall(CodeGenFunction
&CGF,
ThisTy, VTT, VTTTy, nullptr);
}
+// Check if any non-inline method has the specified attribute.
+template
+static bool CXXRecordNonInlineHasAttr(const CXXRecordDec
https://github.com/efriedma-quic closed
https://github.com/llvm/llvm-project/pull/90255
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1793,6 +1793,37 @@ void ItaniumCXXABI::EmitDestructorCall(CodeGenFunction
&CGF,
ThisTy, VTT, VTTTy, nullptr);
}
+// Check if any non-inline method has the specified attribute.
+template
+static bool CXXRecordNonInlineHasAttr(const CXXRecordDec
https://github.com/efriedma-quic edited
https://github.com/llvm/llvm-project/pull/92579
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
Looks fine.
https://github.com/llvm/llvm-project/pull/93086
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -11868,8 +11868,10 @@ static bool CheckMultiVersionFunction(Sema &S,
FunctionDecl *NewFD,
return false;
if (!OldDecl || !OldDecl->getAsFunction() ||
- OldDecl->getDeclContext()->getRedeclContext() !=
- NewFD->getDeclContext()->getRedeclContext()) {
+
@@ -1793,6 +1793,37 @@ void ItaniumCXXABI::EmitDestructorCall(CodeGenFunction
&CGF,
ThisTy, VTT, VTTTy, nullptr);
}
+// Check if any non-inline method has the specified attribute.
+template
+static bool CXXRecordNonInlineHasAttr(const CXXRecordDec
https://github.com/efriedma-quic created
https://github.com/llvm/llvm-project/pull/93115
If a class is empty, don't store it to memory: the store might overwrite useful
data.
(See also d60c3d08.)
Fixes #93040.
>From bdfcc729c309fc5b1092b67d7c3c803c852ae251 Mon Sep 17 00:00:00 2001
From: Eli
efriedma-quic wrote:
I didn't think so at first glance... but yes, we do, in certain obscure cases:
```
#include
struct A { char c; A(); };
struct __attribute((packed)) S { char a; int x; __attribute((aligned(2))) char
y; consteval S() : x(1), a(3), y(2) {} };
struct S2 { [[no_unique_address]
@@ -135,6 +135,17 @@ class AggExprEmitter : public StmtVisitor {
EnsureDest(E->getType());
if (llvm::Value *Result = ConstantEmitter(CGF).tryEmitConstantExpr(E)) {
+ // An empty record can overlap other data (if declared with
+ // no_unique_address); omit the
@@ -1062,6 +1063,159 @@ CodeGenFunction::emitFlexibleArrayMemberSize(const Expr
*E, unsigned Type,
return Builder.CreateSelect(Cmp, Res, ConstantInt::get(ResType, 0,
IsSigned));
}
+namespace {
+
+class ObjectSizeVisitor
+: public ConstStmtVisitor {
+ bool SkipASE;
+
+
@@ -1062,6 +1063,159 @@ CodeGenFunction::emitFlexibleArrayMemberSize(const Expr
*E, unsigned Type,
return Builder.CreateSelect(Cmp, Res, ConstantInt::get(ResType, 0,
IsSigned));
}
+namespace {
+
+class ObjectSizeVisitor
+: public ConstStmtVisitor {
+ bool SkipASE;
+
+
@@ -1052,6 +1053,165 @@ CodeGenFunction::emitFlexibleArrayMemberSize(const Expr
*E, unsigned Type,
return Builder.CreateSelect(Cmp, Res, ConstantInt::get(ResType, 0,
IsSigned));
}
+namespace {
+
+class ObjectSizeVisitor
+: public ConstStmtVisitor {
+ bool SkipASE;
+
+
@@ -1062,6 +1063,159 @@ CodeGenFunction::emitFlexibleArrayMemberSize(const Expr
*E, unsigned Type,
return Builder.CreateSelect(Cmp, Res, ConstantInt::get(ResType, 0,
IsSigned));
}
+namespace {
+
+class ObjectSizeVisitor
+: public ConstStmtVisitor {
+ bool SkipASE;
+
+
https://github.com/efriedma-quic updated
https://github.com/llvm/llvm-project/pull/93115
>From 19f3b677d92ed88b825b455d738055da05f91e0d Mon Sep 17 00:00:00 2001
From: Eli Friedman
Date: Thu, 23 May 2024 18:38:04 -0700
Subject: [PATCH] Fix codegen of consteval functions returning an empty class,
https://github.com/efriedma-quic edited
https://github.com/llvm/llvm-project/pull/93115
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/efriedma-quic edited
https://github.com/llvm/llvm-project/pull/93115
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -177,7 +179,12 @@ kernel void KernelTwoMember(struct StructTwoMember u) {
// AMDGCN-LABEL: define{{.*}} amdgpu_kernel void @KernelLargeTwoMember
// AMDGCN-SAME: (%struct.LargeStructTwoMember %[[u_coerce:.*]])
// AMDGCN: %[[u:.*]] = alloca %struct.LargeStructTwoMember, alig
@@ -46,9 +46,9 @@ int mane() {
char1 f1{1};
char1 f2{1};
-// CHECK: [[TMP:%.+]] = alloca i16
efriedma-quic wrote:
The revised version of casting integers is a bit more aggressive; it's hard to
make it precisely match the old code while still preservi
@@ -44,20 +44,20 @@ struct S1 f1(struct S1 s1) { return s1; }
// CHECK-SOFT: define{{.*}} void @_Z2f22S2(ptr dead_on_unwind noalias
nocapture writable writeonly sret(%struct.S2) align 8 %agg.result, [4 x i32]
%s2.coerce)
// CHECK-HARD: define{{.*}} arm_aapcs_vfpcc [2 x <2 x
@@ -48,10 +48,13 @@ uint8x16x4_t test_vld4q_u8(const uint8_t *addr)
// CHECK-LABEL: @test_vst2q_u32(
// CHECK-NEXT: entry:
-// CHECK-NEXT:[[VALUE_COERCE_FCA_0_0_EXTRACT:%.*]] = extractvalue
[[STRUCT_UINT32X4X2_T:%.*]] [[VALUE_COERCE:%.*]], 0, 0
-// CHECK-NEXT:[[VALUE
https://github.com/efriedma-quic edited
https://github.com/llvm/llvm-project/pull/92699
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/efriedma-quic commented:
This approach seems much better.
https://github.com/llvm/llvm-project/pull/92699
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -965,6 +965,16 @@ void Preprocessor::Lex(Token &Result) {
LastTokenWasAt = Result.is(tok::at);
--LexLevel;
+ if (Result.is(tok::l_brace)) {
+CurlyBraceLevel++;
+ } else if (Result.is(tok::r_brace)) {
+if (!RoundingPragmas.empty() &&
efriedma-q
https://github.com/efriedma-quic approved this pull request.
LGTM, but maybe wait a few days to merge in case someone else has comments.
https://github.com/llvm/llvm-project/pull/92699
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lis
https://github.com/efriedma-quic approved this pull request.
LGTM
(In the future, please leave a note on the pull request when you push an
update; as far as
I can tell, GitHub doesn't generate a notification when you force-push to the
branch.)
https://github.com/llvm/llvm-project/pull/85837
https://github.com/efriedma-quic closed
https://github.com/llvm/llvm-project/pull/85837
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
Oh, I somehow thought the macro was part of the spec; reading again, I guess it
isn't, it's just an attempt to implement the spec.
We probably want some feedback from libc implementers to check if this is what
they want. I don't really want to end up in a situation where
@@ -119,8 +119,6 @@ static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const
Expr *E) {
// First come the expressions that are always lvalues, unconditionally.
case Expr::ObjCIsaExprClass:
-// C++ [expr.prim.general]p1: A string literal is an lvalue.
- case Expr::S
@@ -150,6 +148,12 @@ static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const
Expr *E) {
case Expr::OMPIteratorExprClass:
return Cl::CL_LValue;
+// C++ [expr.prim.general]p1: A string literal is an lvalue.
+// Except we special case them as prvalues when they ar
@@ -119,8 +119,6 @@ static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const
Expr *E) {
// First come the expressions that are always lvalues, unconditionally.
case Expr::ObjCIsaExprClass:
-// C++ [expr.prim.general]p1: A string literal is an lvalue.
- case Expr::S
efriedma-quic wrote:
A revert isn't necessary just for the missing release note; a followup PR is
fine.
https://github.com/llvm/llvm-project/pull/100637
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/lis
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/86388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/101447
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1136,15 +1135,15 @@ llvm::Value *CodeGenFunction::EmitCountedByFieldExpr(
return nullptr;
}
- llvm::Value *Zero = Builder.getInt32(0);
RecIndicesTy Indices;
-
getGEPIndicesToField(*this, RD, CountDecl, Indices);
+ if (Indices.empty())
+return nullptr;
-
https://github.com/efriedma-quic edited
https://github.com/llvm/llvm-project/pull/101434
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/101434
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
Is there some reason this is an attribute, and not a calling convention, at the
IR level?
https://github.com/llvm/llvm-project/pull/101228
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mail
https://github.com/efriedma-quic closed
https://github.com/llvm/llvm-project/pull/93115
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
transparent_union generally means that the value is passed using the convention
of the first member of the union. Why do you need to check for whether the
value was originally a transparent union? Shouldn't the resulting convention
be the same either way?
https://github
efriedma-quic wrote:
/cherry-pick 1762e01cca0186f1862db561cfd9019164b8c654
https://github.com/llvm/llvm-project/pull/93115
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -104,6 +104,7 @@ FEATURE(thread_sanitizer,
LangOpts.Sanitize.has(SanitizerKind::Thread))
FEATURE(dataflow_sanitizer, LangOpts.Sanitize.has(SanitizerKind::DataFlow))
FEATURE(scudo, LangOpts.Sanitize.hasOneOf(SanitizerKind::Scudo))
FEATURE(ptrauth_intrinsics, LangOpts.Pointer
efriedma-quic wrote:
Would it do any harm to just unconditionally compute the type and pass it into
getExtend()?
https://github.com/llvm/llvm-project/pull/101738
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/ma
@@ -104,6 +104,7 @@ FEATURE(thread_sanitizer,
LangOpts.Sanitize.has(SanitizerKind::Thread))
FEATURE(dataflow_sanitizer, LangOpts.Sanitize.has(SanitizerKind::DataFlow))
FEATURE(scudo, LangOpts.Sanitize.hasOneOf(SanitizerKind::Scudo))
FEATURE(ptrauth_intrinsics, LangOpts.Pointer
efriedma-quic wrote:
#100452 only fixed the "ignoring the in-class initializer of the static data
member" issue. I don't think we did anything to allow downgrading overflow
errors to warnings.
https://github.com/llvm/llvm-project/pull/70307
___
cfe-
https://github.com/efriedma-quic created
https://github.com/llvm/llvm-project/pull/102390
Recent Android NDK headers are broken on 32-bit because they contain an invalid
shift, and older versions of clang didn't catch this. Demote the error to a
default-error with a flag so it can be suppresse
efriedma-quic wrote:
#102390 "fixes" the Android NDK issue.
https://github.com/llvm/llvm-project/pull/70307
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
I targeted all overflows with this fix because we were missing diagnostics for
all overflows. For example, "enum{x=99*99};" only produces a pedantic
warning on clang 18. So if we need the extra flexibility, we should just add
it for everything.
I think a default
@@ -3124,26 +3124,40 @@ RValue X86_64ABIInfo::EmitVAArg(CodeGenFunction &CGF,
Address VAListAddr,
CGF.Builder.CreateStore(V, CGF.Builder.CreateStructGEP(Tmp, 1));
RegAddr = Tmp.withElementType(LTy);
- } else if (neededInt) {
-RegAddr = Address(CGF.Builder.CreateG
@@ -1056,12 +1056,18 @@ class ConstantPtrAuth final : public Constant {
return !getAddrDiscriminator()->isNullValue();
}
- /// A constant value for the address discriminator which has special
- /// significance to ctors/dtors lowering. Regular address discrimination
c
Author: Eli Friedman
Date: 2021-04-14T17:09:59-07:00
New Revision: dc1ab590a0527533815aeed0100de54a5f4a4829
URL:
https://github.com/llvm/llvm-project/commit/dc1ab590a0527533815aeed0100de54a5f4a4829
DIFF:
https://github.com/llvm/llvm-project/commit/dc1ab590a0527533815aeed0100de54a5f4a4829.diff
https://github.com/efriedma-quic approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/101738
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
efriedma-quic wrote:
Opened #104738 as a followup.
https://github.com/llvm/llvm-project/pull/104666
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
1001 - 1100 of 2038 matches
Mail list logo