mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 10:54:49 +01:00
Add builtins for compound assignment operators. (#5335)
Provide builtins for compound assignments instead of defining them in the prelude as a use of a binary operator and an assignment. This allows us to lower compound assignment directly to LLVM operations instead of producing a function call. In the short term this also allows us to define a type-generic compound assignment in the prelude.
This commit is contained in:
@@ -1394,7 +1394,22 @@ static auto MakeConstantForBuiltinCall(EvalContext& eval_context,
|
||||
|
||||
case SemIR::BuiltinFunctionKind::PrintChar:
|
||||
case SemIR::BuiltinFunctionKind::PrintInt:
|
||||
case SemIR::BuiltinFunctionKind::ReadChar: {
|
||||
case SemIR::BuiltinFunctionKind::ReadChar:
|
||||
case SemIR::BuiltinFunctionKind::IntSAddAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntSSubAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntSMulAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntSDivAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntSModAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntUAddAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntUSubAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntUMulAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntUDivAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntUModAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntAndAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntOrAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntXorAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntLeftShiftAssign:
|
||||
case SemIR::BuiltinFunctionKind::IntRightShiftAssign: {
|
||||
// These are runtime-only builtins.
|
||||
// TODO: Consider tracking this on the `BuiltinFunctionKind`.
|
||||
return SemIR::ConstantId::NotConstant;
|
||||
|
||||
Reference in New Issue
Block a user