@@ -1658,6 +1828,170 @@ mlir::Value
ScalarExprEmitter::VisitUnaryExprOrTypeTraitExpr(
cgf.cgm.UInt64Ty, e->EvaluateKnownConstInt(cgf.getContext(;
}
+/// Return true if the specified expression is cheap enough and
side-effect-free
+/// enough to evaluate un
@@ -1658,6 +1828,170 @@ mlir::Value
ScalarExprEmitter::VisitUnaryExprOrTypeTraitExpr(
cgf.cgm.UInt64Ty, e->EvaluateKnownConstInt(cgf.getContext(;
}
+/// Return true if the specified expression is cheap enough and
side-effect-free
+/// enough to evaluate un
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/138156
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/138156
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/138156
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -948,6 +950,165 @@ void CIRGenFunction::emitIgnoredExpr(const Expr *e) {
emitLValue(e);
}
+// Handle the case where the condition is a constant evaluatable simple
integer,
+// which means we don't have to separately handle the true/false blocks.
+static std::optional han
@@ -948,6 +950,165 @@ void CIRGenFunction::emitIgnoredExpr(const Expr *e) {
emitLValue(e);
}
+// Handle the case where the condition is a constant evaluatable simple
integer,
+// which means we don't have to separately handle the true/false blocks.
+static std::optional han
https://github.com/mmha closed https://github.com/llvm/llvm-project/pull/138317
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
mmha wrote:
@bcardosolopes Adding a test for C++ -> CIR depends on #138003 which adds
lowering for `?:`, `&&` and `||`. Since this one's ready to be merged apart
from your remark IMO I'd add that test in #138003
https://github.com/llvm/llvm-project/pull/138317
_
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/138368
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -365,10 +365,15 @@ mlir::Attribute
ConstantEmitter::tryEmitPrivateForVarInit(const VarDecl &d) {
if (!d.hasLocalStorage()) {
QualType ty = cgm.getASTContext().getBaseElementType(d.getType());
if (ty->isRecordType())
- if (d.getInit() && isa(d.getInit())) {
-
@@ -177,18 +177,26 @@ void CIRRecordLowering::lower() {
return;
}
- if (isa(recordDecl)) {
-cirGenTypes.getCGModule().errorNYI(recordDecl->getSourceRange(),
- "lower: class");
-return;
- }
-
assert(!cir::MissingFeatures:
@@ -237,8 +237,11 @@ mlir::Type CIRGenTypes::convertRecordDeclType(const
clang::RecordDecl *rd) {
assert(insertResult && "isSafeToCovert() should have caught this.");
// Force conversion of non-virtual base classes recursively.
- if (isa(rd)) {
-cgm.errorNYI(rd->getS
@@ -12,6 +12,17 @@ IncompleteS *p;
// LLVM: @p = dso_local global ptr null
// OGCG: @p = global ptr null, align 8
+struct CompleteS {
mmha wrote:
Do simple union work with this? If so, can you add a test for those, too?
https://github.com/llvm/llvm-project/p
https://github.com/mmha approved this pull request.
LGTM, just a few nits
https://github.com/llvm/llvm-project/pull/138368
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/138368
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -365,10 +365,15 @@ mlir::Attribute
ConstantEmitter::tryEmitPrivateForVarInit(const VarDecl &d) {
if (!d.hasLocalStorage()) {
QualType ty = cgm.getASTContext().getBaseElementType(d.getType());
if (ty->isRecordType())
- if (d.getInit() && isa(d.getInit())) {
-
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/136807
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -247,9 +247,35 @@ size_type max_size(void) {
// CIR: %3 = cir.cast(integral, %2 : !s32i), !u64i
// CIR: %4 = cir.const #cir.int<8> : !u64i
// CIR: %5 = cir.binop(div, %3, %4) : !u64i
+// CIR: cir.store %5, %0 : !u64i, !cir.ptr
+// CIR: %6 = cir.load %0 : !cir.ptr,
https://github.com/mmha approved this pull request.
LGTM, just two nits
https://github.com/llvm/llvm-project/pull/136807
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -417,6 +417,19 @@ mlir::Type CIRGenTypes::convertType(QualType type) {
break;
}
+ case Type::Enum: {
+// TODO(cir): Implement updateCompletedType for enums.
+assert(!cir.MissingFeatures::updateCompletedType());
+const EnumDecl *ED = cast(ty)->getDecl();
+
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/136807
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/mmha commented:
Mostly a few nits.
https://github.com/llvm/llvm-project/pull/138222
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -365,46 +406,108 @@ mlir::Value CIRGenModule::getAddrOfGlobalVar(const
VarDecl *d, mlir::Type ty,
void CIRGenModule::emitGlobalVarDefinition(const clang::VarDecl *vd,
bool isTentative) {
const QualType astTy = vd->getType();
- c
@@ -118,7 +210,26 @@ class ConstExprEmitter
}
mlir::Attribute VisitInitListExpr(InitListExpr *ile, QualType t) {
-cgm.errorNYI(ile->getBeginLoc(), "ConstExprEmitter::VisitInitListExpr");
+if (ile->isTransparent())
+ return Visit(ile->getInit(0), t);
+
+if
@@ -365,46 +406,108 @@ mlir::Value CIRGenModule::getAddrOfGlobalVar(const
VarDecl *d, mlir::Type ty,
void CIRGenModule::emitGlobalVarDefinition(const clang::VarDecl *vd,
bool isTentative) {
const QualType astTy = vd->getType();
- c
@@ -31,6 +31,15 @@ class ConstantEmitter {
private:
bool abstract = false;
+ /// Whether non-abstract components of the emitter have been initialized.
+ bool initializedNonAbstract = false;
mmha wrote:
Is this just for sanity checking? Should this be wrap
@@ -90,8 +90,100 @@ class ConstExprEmitter
}
mlir::Attribute VisitCastExpr(CastExpr *e, QualType destType) {
-cgm.errorNYI(e->getBeginLoc(), "ConstExprEmitter::VisitCastExpr");
-return {};
+if (const auto *ece = dyn_cast(e))
+ cgm.errorNYI(e->getBeginLoc()
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/138222
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -27,6 +27,8 @@ def CIR_Dialect : Dialect {
let useDefaultAttributePrinterParser = 0;
let useDefaultTypePrinterParser = 0;
+ let hasConstantMaterializer = 1;
mmha wrote:
There's some documentation here:
https://mlir.llvm.org/docs/Canonicalization/#gen
https://github.com/mmha created https://github.com/llvm/llvm-project/pull/138317
This patch adds the cir-simplify pass for SelectOp and TernaryOp. It also adds
the SelectOp folder and adds the constant materializer for the CIR dialect.
>From 2b6ecd77c4fac0a2982172294d12ae858f0a2b34 Mon Sep 17 0
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/138156
>From 09763c19421acdb9896bab13f29679dbb38b9043 Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Thu, 1 May 2025 17:27:23 +0200
Subject: [PATCH 1/2] [CIR] Upstream lowering of lvalue conditional operators
to Terna
@@ -948,6 +950,165 @@ void CIRGenFunction::emitIgnoredExpr(const Expr *e) {
emitLValue(e);
}
+// Handle the case where the condition is a constant evaluatable simple
integer,
+// which means we don't have to separately handle the true/false blocks.
+static std::optional han
https://github.com/mmha created https://github.com/llvm/llvm-project/pull/138156
This patch adds visitors for BinLAnd, BinLOr and AbstractConditionalOperator.
Note that this patch still lacks visitation of OpaqueValueExpr which is needed
for the GNU ?: operator.
>From 09763c19421acdb9896bab13f
https://github.com/mmha closed https://github.com/llvm/llvm-project/pull/137184
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -609,8 +609,8 @@ def ConditionOp : CIR_Op<"condition", [
//===--===//
def YieldOp : CIR_Op<"yield", [ReturnLike, Terminator,
- ParentOneOf<["IfOp", "ScopeOp", "WhileOp",
-
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/137184
>From 1eed90e3859c2ad8d703708f89976cad8f0faeec Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Thu, 24 Apr 2025 16:12:37 +0200
Subject: [PATCH 1/3] [CIR] Upstream TernaryOp
This patch adds TernaryOp to CIR plus
@@ -1246,6 +1246,59 @@ def SelectOp : CIR_Op<"select", [Pure,
}];
}
+//===--===//
+// TernaryOp
+//===--===//
+
+def TernaryOp : CIR_Op<"te
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/137184
>From 1eed90e3859c2ad8d703708f89976cad8f0faeec Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Thu, 24 Apr 2025 16:12:37 +0200
Subject: [PATCH 1/2] [CIR] Upstream TernaryOp
This patch adds TernaryOp to CIR plus
@@ -1246,6 +1246,59 @@ def SelectOp : CIR_Op<"select", [Pure,
}];
}
+//===--===//
+// TernaryOp
+//===--===//
+
+def TernaryOp : CIR_Op<"te
@@ -609,8 +609,8 @@ def ConditionOp : CIR_Op<"condition", [
//===--===//
def YieldOp : CIR_Op<"yield", [ReturnLike, Terminator,
- ParentOneOf<["IfOp", "ScopeOp", "WhileOp",
-
https://github.com/mmha created https://github.com/llvm/llvm-project/pull/137184
This patch adds TernaryOp to CIR plus a pass that flattens the operator in
FlattenCFG.
This is the first PR out of (probably) 3 wrt. TernaryOp. I split the patches up
to make reviewing them easier. As such, this P
@@ -639,6 +639,9 @@ OpenACCClause
*SemaOpenACCClauseVisitor::VisitVectorLengthClause(
OpenACCClause *SemaOpenACCClauseVisitor::VisitAsyncClause(
SemaOpenACC::OpenACCParsedClause &Clause) {
+ if (DisallowSinceLastDeviceType(Clause))
mmha wrote:
Can you u
@@ -1294,6 +1296,90 @@ mlir::LogicalResult
CIRToLLVMCmpOpLowering::matchAndRewrite(
return mlir::success();
}
+mlir::LogicalResult CIRToLLVMShiftOpLowering::matchAndRewrite(
+cir::ShiftOp op, OpAdaptor adaptor,
+mlir::ConversionPatternRewriter &rewriter) const {
+
@@ -1294,6 +1296,90 @@ mlir::LogicalResult
CIRToLLVMCmpOpLowering::matchAndRewrite(
return mlir::success();
}
+mlir::LogicalResult CIRToLLVMShiftOpLowering::matchAndRewrite(
+cir::ShiftOp op, OpAdaptor adaptor,
+mlir::ConversionPatternRewriter &rewriter) const {
+
@@ -759,6 +762,46 @@ LogicalResult cir::BinOp::verify() {
return mlir::success();
}
+//===--===//
+// ShiftOp
+//===--===//
+LogicalResult
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/133405
>From 13833779faad62f95ef3fc0e2de3ed9b7c44d2f5 Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Fri, 11 Apr 2025 17:46:00 +0200
Subject: [PATCH 1/2] [CIR] Upstream SelectOp and ShiftOp
Since SelectOp will only ge
@@ -219,6 +219,13 @@ void CIRGenFunction::emitStoreOfScalar(mlir::Value value,
Address addr,
assert(!cir::MissingFeatures::opTBAA());
}
+void CIRGenFunction::emitStoreThroughBitfieldLValue(RValue src, LValue dst,
+mlir::Va
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/135115
>From 2a9a282dc3227710ce6462d2847876565ba5eb49 Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Fri, 11 Apr 2025 16:17:45 +0200
Subject: [PATCH 1/4] [CIR] Upstream binary assignments and comma
This patch adds `Vi
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/135115
>From 2a9a282dc3227710ce6462d2847876565ba5eb49 Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Fri, 11 Apr 2025 16:17:45 +0200
Subject: [PATCH 1/4] [CIR] Upstream binary assignments and comma
This patch adds `Vi
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/135115
>From 2a9a282dc3227710ce6462d2847876565ba5eb49 Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Fri, 11 Apr 2025 16:17:45 +0200
Subject: [PATCH 1/3] [CIR] Upstream binary assignments and comma
This patch adds `Vi
@@ -807,6 +808,65 @@ class ScalarExprEmitter : public
StmtVisitor {
VISITCOMP(EQ)
VISITCOMP(NE)
#undef VISITCOMP
+
+ mlir::Value VisitBinAssign(const BinaryOperator *e) {
+const bool ignore = std::exchange(ignoreResultAssign, false);
+
+mlir::Value rhs;
+LValu
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/135115
>From bcaeadf7fff01d2d92b0d234b40f8d5884974e4c Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Thu, 10 Apr 2025 03:53:43 +0200
Subject: [PATCH 1/3] [CIR] Upstream binary assignments and comma
This patch adds `Vi
@@ -0,0 +1,53 @@
+// RUN: %clang_cc1 -std=c23 -triple x86_64-unknown-linux-gnu -fclangir
-emit-cir %s -o %t.cir
+// RUN: FileCheck --input-file=%t.cir %s -check-prefix=CIR
+// RUN: %clang_cc1 -std=c23 -triple x86_64-unknown-linux-gnu -Wno-unused-value
-fclangir -emit-llvm %s -o
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/135115
>From bcaeadf7fff01d2d92b0d234b40f8d5884974e4c Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Thu, 10 Apr 2025 03:53:43 +0200
Subject: [PATCH 1/2] [CIR] Upstream binary assignments and comma
This patch adds `Vi
mmha wrote:
cc @erichkeane @andykaylor @dkolsen-pgi
https://github.com/llvm/llvm-project/pull/135115
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/mmha created https://github.com/llvm/llvm-project/pull/135115
This patch adds `VisitBinAssign` and `VisitBinComma` to the ClangIR
`ScalarExprEmitter` to enable assignments and the comma operator.
>From bcaeadf7fff01d2d92b0d234b40f8d5884974e4c Mon Sep 17 00:00:00 2001
From: Mo
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/133159
>From 57b1d4e30ab61c1723b34fea137e2e900b53e30e Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Tue, 8 Apr 2025 15:02:12 +0200
Subject: [PATCH 1/5] [CIR] Upstream CmpOp
This patch adds support for comparison oper
mmha wrote:
cc @andykaylor @erichkeane @dkolsen-pgi
https://github.com/llvm/llvm-project/pull/133159
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -558,8 +624,225 @@ class ScalarExprEmitter : public
StmtVisitor {
return res;
}
+
+ BinOpInfo emitBinOps(const BinaryOperator *e,
+ QualType promotionType = QualType()) {
+BinOpInfo result;
+result.lhs = cgf.emitPromotedScalarExpr(e->ge
mmha wrote:
cc @andykaylor @erichkeane @dkolsen-pgi
https://github.com/llvm/llvm-project/pull/133405
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/mmha created https://github.com/llvm/llvm-project/pull/133405
Since SelectOp will only generated by a future pass that transforms a TernaryOp
this only includes the lowering bits.
This patch also improves the testing of the existing binary operators.
>From fc549133df0092c9c2
@@ -0,0 +1,233 @@
+// RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-linux-gnu -fclangir
-emit-cir -DCIR_ONLY %s -o %t.cir
+// RUN: FileCheck --input-file=%t.cir %s -check-prefix=CIR
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -Wno-unused-value
-fclangir -emit-llvm %
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/133159
>From 6db5880fa7cdf6363d7e0025f811f42ec273df52 Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Wed, 26 Mar 2025 20:50:57 +
Subject: [PATCH 1/4] [CIR] Upstream CmpOp
This patch adds support for comparison ope
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/133159
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -710,6 +710,89 @@ class ScalarExprEmitter : public
StmtVisitor {
HANDLEBINOP(Xor)
HANDLEBINOP(Or)
#undef HANDLEBINOP
+
+ mlir::Value emitCmp(const BinaryOperator *e) {
+mlir::Value result;
+QualType lhsTy = e->getLHS()->getType();
+QualType rhsTy = e->getRH
@@ -710,6 +710,89 @@ class ScalarExprEmitter : public
StmtVisitor {
HANDLEBINOP(Xor)
HANDLEBINOP(Or)
#undef HANDLEBINOP
+
+ mlir::Value emitCmp(const BinaryOperator *e) {
+mlir::Value result;
+QualType lhsTy = e->getLHS()->getType();
+QualType rhsTy = e->getRH
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/133159
>From 6db5880fa7cdf6363d7e0025f811f42ec273df52 Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Wed, 26 Mar 2025 20:50:57 +
Subject: [PATCH 1/3] [CIR] Upstream CmpOp
This patch adds support for comparison ope
@@ -514,9 +515,17 @@ mlir::LogicalResult
CIRToLLVMCastOpLowering::matchAndRewrite(
assert(!MissingFeatures::cxxABI());
assert(!MissingFeatures::dataMemberType());
break;
- case cir::CastKind::ptr_to_bool:
-assert(!cir::MissingFeatures::opCmp());
+ case cir::C
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/133159
>From 6db5880fa7cdf6363d7e0025f811f42ec273df52 Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Wed, 26 Mar 2025 20:50:57 +
Subject: [PATCH 1/2] [CIR] Upstream CmpOp
This patch adds support for comparison ope
https://github.com/mmha created https://github.com/llvm/llvm-project/pull/133159
This patch adds support for comparison operators with ClangIR, both integral
and floating point.
>From 6db5880fa7cdf6363d7e0025f811f42ec273df52 Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Wed, 26 Mar 2025 2
@@ -170,7 +170,7 @@ mlir::Value CIRGenFunction::evaluateExprAsBool(const Expr
*e) {
SourceLocation loc = e->getExprLoc();
assert(!cir::MissingFeatures::pgoUse());
- if (const MemberPointerType *MPT = e->getType()->getAs())
{
+ if (e->getType()->getAs()) {
-
https://github.com/mmha approved this pull request.
LGTM, just a few nits.
https://github.com/llvm/llvm-project/pull/133134
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1366,8 +1366,7 @@ mlir::Value
ScalarExprEmitter::VisitUnaryExprOrTypeTraitExpr(
const mlir::Location loc = cgf.getLoc(e->getSourceRange());
if (auto kind = e->getKind();
kind == UETT_SizeOf || kind == UETT_DataSizeOf) {
-if (const VariableArrayType *variableA
@@ -1251,13 +1236,12 @@ void ConvertCIRToLLVMPass::runOnOperation() {
patterns.add(converter, patterns.getContext(), dl);
patterns.add(converter, patterns.getContext(),
dl);
patterns.add(converter, patterns.getContext(), dl);
- patterns.add(converter, patterns.getContex
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/133134
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -223,6 +223,16 @@ class CIRGenFunction : public CIRGenTypeCache {
void emitDecl(const clang::Decl &d);
+ /// Same as IRBuilder::CreateInBoundsGEP, but additionally emits a check to
+ /// detect undefined behavior when the pointer overflow sanitizer is enabled.
+ /// \
@@ -1117,6 +1118,122 @@ mlir::LogicalResult
CIRToLLVMBinOpLowering::matchAndRewrite(
return mlir::LogicalResult::success();
}
+mlir::LogicalResult CIRToLLVMBinOpOverflowOpLowering::matchAndRewrite(
+cir::BinOpOverflowOp op, OpAdaptor adaptor,
+mlir::ConversionPatter
mmha wrote:
cc @andykaylor @erichkeane @dkolsen-pgi
https://github.com/llvm/llvm-project/pull/133118
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/mmha created https://github.com/llvm/llvm-project/pull/133118
This was part of #132420 originally but split off to reduce the diff size.
This patch adds support for overflowing binary operators and all the plumbing
required for pointer arithmetic except for the actual Ops (`P
@@ -0,0 +1,81 @@
+//===--===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apac
https://github.com/mmha edited https://github.com/llvm/llvm-project/pull/132420
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -200,7 +200,7 @@ class ASTContext : public RefCountedBase {
mutable llvm::ContextualFoldingSet
ConstantArrayTypes;
mutable llvm::FoldingSet IncompleteArrayTypes;
- mutable std::vector VariableArrayTypes;
+ mutable std::vector VariableArrayTypes;
@@ -143,6 +147,114 @@ class CIRBaseBuilderTy : public mlir::OpBuilder {
return createCast(loc, cir::CastKind::bitcast, src, newTy);
}
+ mlir::Value createBinop(mlir::Value lhs, cir::BinOpKind kind,
+ const llvm::APInt &rhs) {
+return create(
@@ -0,0 +1,81 @@
+//===--===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apac
mmha wrote:
As @andykaylor suggested, I'm going to split off `BinOpOverflowOp` and the
pointer arithmetic bits into a separate patch next.
https://github.com/llvm/llvm-project/pull/132420
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https:/
@@ -93,16 +96,20 @@ struct MissingFeatures {
static bool stackSaveOp() { return false; }
static bool aggValueSlot() { return false; }
static bool generateDebugInfo() { return false; }
+ static bool getFPFeaturesInEffect() { return false; }
+ static bool pointerOverflowS
@@ -143,6 +147,114 @@ class CIRBaseBuilderTy : public mlir::OpBuilder {
return createCast(loc, cir::CastKind::bitcast, src, newTy);
}
+ mlir::Value createBinop(mlir::Value lhs, cir::BinOpKind kind,
+ const llvm::APInt &rhs) {
+return create(
@@ -826,6 +826,129 @@ def ForOp : CIR_Op<"for", [LoopOpInterface,
NoRegionArguments]> {
}];
}
+//===--===//
+// BinOp
+//===--===//
+
+//
@@ -143,6 +147,114 @@ class CIRBaseBuilderTy : public mlir::OpBuilder {
return createCast(loc, cir::CastKind::bitcast, src, newTy);
}
+ mlir::Value createBinop(mlir::Value lhs, cir::BinOpKind kind,
+ const llvm::APInt &rhs) {
+return create(
@@ -143,6 +147,114 @@ class CIRBaseBuilderTy : public mlir::OpBuilder {
return createCast(loc, cir::CastKind::bitcast, src, newTy);
}
+ mlir::Value createBinop(mlir::Value lhs, cir::BinOpKind kind,
+ const llvm::APInt &rhs) {
+return create(
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/132420
>From 594005c964b5c1e6605dc8ac170f1b43aa018bea Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Fri, 21 Mar 2025 17:55:00 +0100
Subject: [PATCH 1/6] [CIR] Add binary operators
This patch adds upstreams support fo
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/132420
>From 594005c964b5c1e6605dc8ac170f1b43aa018bea Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Fri, 21 Mar 2025 17:55:00 +0100
Subject: [PATCH 1/5] [CIR] Add binary operators
This patch adds upstreams support fo
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/132420
>From 594005c964b5c1e6605dc8ac170f1b43aa018bea Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Fri, 21 Mar 2025 17:55:00 +0100
Subject: [PATCH 1/4] [CIR] Add binary operators
This patch adds upstreams support fo
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/132420
>From 594005c964b5c1e6605dc8ac170f1b43aa018bea Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Fri, 21 Mar 2025 17:55:00 +0100
Subject: [PATCH 1/3] [CIR] Add binary operators
This patch adds upstreams support fo
https://github.com/mmha updated https://github.com/llvm/llvm-project/pull/132420
>From 594005c964b5c1e6605dc8ac170f1b43aa018bea Mon Sep 17 00:00:00 2001
From: Morris Hafner
Date: Fri, 21 Mar 2025 17:55:00 +0100
Subject: [PATCH 1/2] [CIR] Add binary operators
This patch adds upstreams support fo
@@ -44,3 +44,100 @@ void l0() {
// OGCG: br label %[[FOR_COND:.*]]
// OGCG: [[FOR_COND]]:
// OGCG: br label %[[FOR_COND]]
+
+void l1() {
+ for (int i = 0; ; ) {
+ }
+}
+
+// CIR: cir.func @l1
+// CIR-NEXT: cir.scope {
+// CIR-NEXT: %[[I:.*]] = cir.alloca !s32i,
@@ -293,7 +294,8 @@ void CIRGenFunction::startFunction(GlobalDecl gd, QualType
returnType,
mlir::Value addrVal =
emitAlloca(cast(paramVar)->getName(),
- convertType(paramVar->getType()), paramLoc, alignment);
+ convertType(param
@@ -0,0 +1,81 @@
+//===--===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apac
https://github.com/mmha approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/132468
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
1 - 100 of 126 matches
Mail list logo