| ... | @@ -20860,6 +20860,12 @@ static IrInstruction *ir_analyze_instruction_fence(IrAnalyze *ira, IrInstruction | ... | @@ -20860,6 +20860,12 @@ static IrInstruction *ir_analyze_instruction_fence(IrAnalyze *ira, IrInstruction |
| 20860 | if (!ir_resolve_atomic_order(ira, order_value, &order)) | 20860 | if (!ir_resolve_atomic_order(ira, order_value, &order)) |
| 20861 | return ira->codegen->invalid_instruction; | 20861 | return ira->codegen->invalid_instruction; |
| 20862 | | 20862 | |
| | 20863 | if (order < AtomicOrderAcquire) { |
| | 20864 | ir_add_error(ira, order_value, |
| | 20865 | buf_sprintf("atomic ordering must be Acquire or stricter")); |
| | 20866 | return ira->codegen->invalid_instruction; |
| | 20867 | } |
| | 20868 | |
| 20863 | IrInstruction *result = ir_build_fence(&ira->new_irb, | 20869 | IrInstruction *result = ir_build_fence(&ira->new_irb, |
| 20864 | instruction->base.scope, instruction->base.source_node, order_value, order); | 20870 | instruction->base.scope, instruction->base.source_node, order_value, order); |
| 20865 | result->value.type = ira->codegen->builtin_types.entry_void; | 20871 | result->value.type = ira->codegen->builtin_types.entry_void; |