diff --git a/lib/CliftEmitC/CBackend.cpp b/lib/CliftEmitC/CBackend.cpp index b8b62e39e..2607b076a 100644 --- a/lib/CliftEmitC/CBackend.cpp +++ b/lib/CliftEmitC/CBackend.cpp @@ -489,26 +489,6 @@ public: Tokens.emitOperator(getOperator(Op)); } - RecursiveCoroutine emitAssignMacroExpression(mlir::Value V) { - auto Assign = V.getDefiningOp(); - - auto LHS = Assign.getOperand(0); - auto RHS = Assign.getOperand(1); - - Tokens.emitLiteralIdentifier("assign_array"); - Tokens.emitPunctuator(CTE::Punctuator::LeftParenthesis); - - rc_recur emitExpression(LHS); - - Tokens.emitPunctuator(CTE::Punctuator::Comma); - Tokens.emitSpace(); - CurrentPrecedence = OperatorPrecedence::Parentheses; - - rc_recur emitExpression(RHS); - - Tokens.emitPunctuator(CTE::Punctuator::RightParenthesis); - } - RecursiveCoroutine emitInfixExpression(mlir::Value V) { mlir::Operation *Op = V.getDefiningOp(); @@ -744,13 +724,6 @@ public: if (auto Assign = V.getDefiningOp()) { auto LHS = Assign.getOperand(0); auto RHS = Assign.getOperand(1); - if (isa(LHS.getType()) - or isa(RHS.getType())) { - return { - .Precedence = OperatorPrecedence::UnaryPostfix, - .Emit = &CliftToCEmitter::emitAssignMacroExpression, - }; - } return { .Precedence = OperatorPrecedence::Assignment, .Emit = &CliftToCEmitter::emitInfixExpression, diff --git a/lib/Model/NameBuilder.cpp b/lib/Model/NameBuilder.cpp index 02fb895b7..2af8648a5 100644 --- a/lib/Model/NameBuilder.cpp +++ b/lib/Model/NameBuilder.cpp @@ -324,7 +324,6 @@ const std::set ReservedKeywords = { "__typeof__", "bit_cast", "static_assert_typedef", - "assign_array", }; /// Returns `true` iff the identifier is exactly the given prefix + a decimal diff --git a/share/revng/include/primitive-types.h b/share/revng/include/primitive-types.h index 9c33cac9b..268ed6995 100644 --- a/share/revng/include/primitive-types.h +++ b/share/revng/include/primitive-types.h @@ -232,7 +232,7 @@ extern uintmax_t undef_value(void); // // __typeof__ is required for properly implementing a generic bitcast primitive -// and a generic array_assignment primitive that only need the destination type. +// that only needs the destination type. #if defined(__GNUC__) // For Clang and GCC, they both have __typeof__ // Don't do anything, __typeof__ is already available #elif __STDC_VERSION__ >= 202311L // C23 has typeof @@ -274,12 +274,3 @@ extern uintmax_t undef_value(void); .dst) #endif // defined(__GNU_C_) - -// -// array_assign and array_bit_cast -// - -#define assign_array(x, ...) \ - (*(__typeof__(x) *) __builtin_memcpy(&(x), \ - &((__VA_ARGS__)), \ - sizeof(__typeof__(x))))