From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id EDhwGhd332YVHAEAqHPOHw:P1 (envelope-from ) for ; Tue, 10 Sep 2024 00:30:47 +0200 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id EDhwGhd332YVHAEAqHPOHw (envelope-from ) for ; Tue, 10 Sep 2024 00:30:47 +0200 X-Envelope-To: patches@johnnyrichard.com Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=lists.sr.ht header.s=20240113 header.b=QScNBsjN; dkim=pass header.d=maniero.me header.s=hostingermail1 header.b=bJz6lQtX; dmarc=pass (policy=none) header.from=maniero.me; spf=pass (aspmx1.migadu.com: domain of lists@sr.ht designates 46.23.81.152 as permitted sender) smtp.mailfrom=lists@sr.ht; arc=pass ("mailchannels.net:s=arc-2022:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=johnnyrichard.com; s=key1; t=1725921047; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:list-id: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=BqMOZ4GuW3q6xW6NCyHiTO86FD67cz//SyEK2zgSOfM=; b=Ir0vsx6UdpHL0dwyWVZ+IkZiNNo+fvR9bZGwYrUh3USBVGgRE4nsB6UJVf9oSRfG8CHKUG aHDZJa+y4HFAgWPau0O1RJpNmmHJJhehcf4fWeFOrsqOsHGs5Fo0iQ9VKoKYpGx/WVfCW/ LV2RVJEEF1N9MH+ez8VHIEyYcQqIPpI0FKRa6nwQB4PgKyRre7MiclN9oabRmbG/t68bsP Ge3YED+7xoFyQ6AOmYbH/mqVZtPu51AnmfL1fJJl4+XXKh3aGMHFM8qDbV4IRXC27qYq6i 7y/o+e9a+SQxrQpmvhNV7yGntqG487g/3rvYbj43NhmEA7viLS2yKCSlakqBtQ== ARC-Seal: i=2; s=key1; d=johnnyrichard.com; t=1725921047; a=rsa-sha256; cv=pass; b=bjNLmc/vyF4f+kXGv8wH0skL8SxiDEey5RmroXmFWbK5f6msyCpb3scZwz1l2ZDTMo7Mgn EX1tEc7eIzRYQyjR5RTzeSjUshh3QPKRFy/Nh0WgrD0ugyM5K4s7FBpiy0J8gUfVU4vOhG Mp+NGY48Avg3wgYZqcqS3XD6523o47MkIxeYIpVxGJ3jVDkkYCx3sZTL0EcfACUTYlpofx 88/g6uzOvKfPJmRyKD2x+oS3F9EcMCPqQtDplEi+proi3mkFbfDek6nHjrgOg+I0lrY0f/ 3G+0zkyU5c9cuwj2/3zpsjvWaBAbMFQ0LZWCgihvw0EkHcCwfsNhsZoVFjZW8Q== ARC-Authentication-Results: i=2; aspmx1.migadu.com; dkim=pass header.d=lists.sr.ht header.s=20240113 header.b=QScNBsjN; dkim=pass header.d=maniero.me header.s=hostingermail1 header.b=bJz6lQtX; dmarc=pass (policy=none) header.from=maniero.me; spf=pass (aspmx1.migadu.com: domain of lists@sr.ht designates 46.23.81.152 as permitted sender) smtp.mailfrom=lists@sr.ht; arc=pass ("mailchannels.net:s=arc-2022:i=1") Received: from mail-a.sr.ht (mail-a.sr.ht [46.23.81.152]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 2973E16262 for ; Tue, 10 Sep 2024 00:30:47 +0200 (CEST) DKIM-Signature: a=rsa-sha256; bh=15L1O/9cAMUMlbhWPDjUyMn8C05vBpqsoZRfJ/ZZkA8=; c=simple/simple; d=lists.sr.ht; h=From:To:Cc:Subject:Date:List-Unsubscribe:List-Subscribe:List-Archive:List-Post:List-ID; q=dns/txt; s=20240113; t=1725921046; v=1; b=QScNBsjNN3uIYiEpDZFM09jo1F4OQDNny+RsGnYy/RlVMNCdT0eZbbXWKepEhO6uyRAk8XCh 27WdGgl/99ZUmCWzgWHoPLbN1NG/8dC9rLJPnk1Ths5wJkLcQmfwkZifo5Iev/bg/QSL2VyS7Zh ZBTypI+YqqgFq1ATofy2YZqAErrxMnc06YQ/5cQg8sBrMDFYaBUosX8swA/P6qPCEk6sPS4kXIt PArrw3DFz/ygo2MiNZf1N0KXh7/0v9fbsIxYe49sO1TEsdFDWwjXXyTiDw+kvsIiH0bMJipfmRo Vd5u58HbRMb1c6gE5RDefii+N41oZ9VqPyhzoIzkONd6Q== Received: from lists.sr.ht (unknown [46.23.81.154]) by mail-a.sr.ht (Postfix) with ESMTPSA id D52D920231 for ; Mon, 09 Sep 2024 22:30:46 +0000 (UTC) Received: from sienna.cherry.relay.mailchannels.net (sienna.cherry.relay.mailchannels.net [23.83.223.165]) by mail-a.sr.ht (Postfix) with ESMTPS id 3BB1020217 for <~johnnyrichard/olang-devel@lists.sr.ht>; Mon, 09 Sep 2024 22:30:45 +0000 (UTC) X-Sender-Id: hostingeremail|x-authuser|carlos@maniero.me Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 792961A2AC6 for <~johnnyrichard/olang-devel@lists.sr.ht>; Mon, 9 Sep 2024 22:30:43 +0000 (UTC) Received: from nl-srv-smtpout1.hostinger.io (trex-6.trex.outbound.svc.cluster.local [100.96.73.147]) (Authenticated sender: hostingeremail) by relay.mailchannels.net (Postfix) with ESMTPA id BB3741A2F52 for <~johnnyrichard/olang-devel@lists.sr.ht>; Mon, 9 Sep 2024 22:30:42 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1725921043; a=rsa-sha256; cv=none; b=CH5S8a+HSgDbQfCSySl/4pUI7dCKUCCnim0zn2Q6PECh0cE1geuiZ4XjxIzTX4MdikdfbJ jya4TuXvt43L1MdD7wyBjLQ4c02ANBPhzsqcCFsw4fwfF3udhQw9E0cNQYKCKy14SVQeWX f12kdsoVbFnj9iMESQTkTTUjLZdQqb/A2H/+YcA9bqaOelU97/oHBKzE9rdfZT4Ht0I2Xi W+jw7ia0e+2EbcMWZSNcmhFVjAudwxEQP7xfpw0kY2eJa1xef6ZWectpU2zSnv5nXulrta 5DieAVidCiL5y38hMkl+ERZk7EKWZq/aJTWh2LdzWQW0Yifed9ur0QJRjmBCkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1725921043; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:dkim-signature; bh=BqMOZ4GuW3q6xW6NCyHiTO86FD67cz//SyEK2zgSOfM=; b=2Q83mDuVxlzEv+ww0HGoNjhI54fcCUcEuIjjUJ2jmp0LNvPZkrF1auJTLwMZWAKak0BUqV NJNsQRIPhPCa6N7GpYyGHqKvnmXXGNm2fNm/vv3dVsBZ0ghUPpmR6Az6L4ObjaQZ54WBdl hQUd4VaGHPTohFRSwBw9Ec+hEoSLQ6HTRziu3bvjQsE4zKs8WjvjmuL8lts2n/7VMxe1qy kdnXtdkL5dl3HSY1xzaDfBEdWVJugXF2NBF+WozoO0IiUxNjRTMTjDwudp2NgyMwLO7UmH +42C5Lb3Fo1QPaz3VNBChgCrNL/wBVrUL9/iYbBtVII0dG91++PxaVmQXaPxKw== ARC-Authentication-Results: i=1; rspamd-77766c4bb8-w6mnp; auth=pass smtp.auth=hostingeremail smtp.mailfrom=carlos@maniero.me X-Sender-Id: hostingeremail|x-authuser|carlos@maniero.me X-MC-Relay: Neutral X-MailChannels-SenderId: hostingeremail|x-authuser|carlos@maniero.me X-MailChannels-Auth-Id: hostingeremail X-Irritate-Wiry: 7f8f6ae137a88f28_1725921043217_559317374 X-MC-Loop-Signature: 1725921043217:3739420596 X-MC-Ingress-Time: 1725921043217 Received: from nl-srv-smtpout1.hostinger.io (nl-srv-smtpout1.hostinger.io [145.14.150.87]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.96.73.147 (trex/7.0.2); Mon, 09 Sep 2024 22:30:43 +0000 From: Carlos Maniero DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maniero.me; s=hostingermail1; t=1725921041; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=BqMOZ4GuW3q6xW6NCyHiTO86FD67cz//SyEK2zgSOfM=; b=bJz6lQtXN9bmoe+VjHjx7ILa4W2j2Bgpqpv5fgLVM1yPciq9/Hfd93pkThDi+4Z3oXCLFI 5wew2c7x7M0nwCqpA4srGcoRnMI4x7v9qYxUYAIbjXSfvbRz7Mb89FckAgMsOrCkrvy0jq 8hgleamHY4WmLP3EM9uu1/19YXR2tIIMF6WGraR8NWHxvAGbFKg/1L3BaGM5xnbTRBS89g ssI2iALNm+d8lAket9o0legDqUvI5JAA+XYZVyXJwQ9PiNxKZ05qmlxGPUJzncIx2dusxv 5JR8K6vmO426C/PeVCPUQMHEhck0LeF/fhRELtQ8r/CtonPTK71MtTJflYUEFg== To: ~johnnyrichard/olang-devel@lists.sr.ht Cc: Carlos Maniero Subject: [PATCH olang] codegen: x86_64: add support to else statement Message-Id: <20240909223020.226581-1-carlos@maniero.me> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Date: Mon, 09 Sep 2024 22:30:40 +0000 (UTC) X-CM-Envelope: MS4xfKV/COQrJM4VFc5yUdtWpfz3UKGJnPfBWC2bahciA2DlDA5gYo8f8gFnFgzaMuvPzoYbdtk6/IYvv/YxocOozDKc/sAfu8k+HhqxLau6bnTddMltZPfa F0Pss3pagrIXUTsmwf84HI00Bh4bytB8v4fSxVwbIhaqaz+tXx6aqColSWBxfdqZ5RAhycyFbwRYm9aK/uH/1pL5ZlIr6k5pppqWtO8+r8HtuhwrtMu8q2sO X-CM-Analysis: v=2.4 cv=YNXNygGx c=1 sm=1 tr=0 ts=66df7711 a=WwxFCuf3mf1fs3oSi6/dng==:117 a=WwxFCuf3mf1fs3oSi6/dng==:17 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=QlycZ4lst8plhNx7_r0A:9 a=BXDaF_L80NY05PYiAFlV:22 X-AuthUser: carlos@maniero.me X-Sourcehut-Patchset-Status: PROPOSED List-Unsubscribe: List-Subscribe: List-Archive: Archived-At: List-Post: List-ID: ~johnnyrichard/olang-devel <~johnnyrichard/olang-devel.lists.sr.ht> Sender: ~johnnyrichard/olang-devel <~johnnyrichard/olang-devel@lists.sr.ht> X-Migadu-Flow: FLOW_IN X-Migadu-Country: NL X-Migadu-Queue-Id: 2973E16262 X-Migadu-Scanner: mx12.migadu.com X-Migadu-Spam-Score: -5.74 X-Spam-Score: -5.74 X-TUID: m/ZvA7uyb8oz Signed-off-by: Carlos Maniero --- src/codegen_linux_x86_64.c | 11 +++++++++++ tests/integration/tests/0023_else_statement.ol | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/codegen_linux_x86_64.c b/src/codegen_linux_x86_64.c index 958c46e..8ed127c 100644 --- a/src/codegen_linux_x86_64.c +++ b/src/codegen_linux_x86_64.c @@ -324,8 +324,10 @@ codegen_linux_x86_64_emit_block(FILE *out, ast_block_t *block) ast_node_t *cond = if_stmt.cond; ast_node_t *then = if_stmt.then; + ast_node_t *_else = if_stmt._else; size_t end_if_label = codegen_linux_x86_64_get_next_label(); + size_t end_else_label = codegen_linux_x86_64_get_next_label(); codegen_linux_x86_64_emit_expression(out, cond); fprintf(out, " cmp $1, %%rax\n"); @@ -335,8 +337,17 @@ codegen_linux_x86_64_emit_block(FILE *out, ast_block_t *block) ast_block_t then_block = then->as_block; codegen_linux_x86_64_emit_block(out, &then_block); + fprintf(out, " jmp .L%ld\n", end_else_label); fprintf(out, ".L%ld:\n", end_if_label); + + if (_else != NULL) { + ast_block_t else_block = _else->as_block; + codegen_linux_x86_64_emit_block(out, &else_block); + } + + fprintf(out, ".L%ld:\n", end_else_label); + break; } default: { diff --git a/tests/integration/tests/0023_else_statement.ol b/tests/integration/tests/0023_else_statement.ol index a741537..fafb22e 100644 --- a/tests/integration/tests/0023_else_statement.ol +++ b/tests/integration/tests/0023_else_statement.ol @@ -21,6 +21,10 @@ fn main(): u32 { } } +# TEST test_compile(exit_code=0) + +# TEST test_run_binary(exit_code=0) + # TEST test_contains_tokens WITH # ./tests/0023_else_statement.ol:19:5: # END base-commit: 6d2288e9adf715b301eb62b9287b103a37353c9c -- 2.34.1