Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for west-const #59

Merged
merged 4 commits into from
Jan 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion cc_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2711,7 +2711,8 @@ void statement(void)
global_token = global_token->next;
}
else if((NULL != lookup_type(global_token->s, prim_types)) ||
match("struct", global_token->s))
match("struct", global_token->s) ||
match("const", global_token->s))
{
collect_local();
}
Expand Down
10 changes: 10 additions & 0 deletions cc_types.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ void initialize_types(void)
hold = new_primitive("char", "char*", "char**", 1, TRUE);
prim_types = add_primitive(hold);

/* Define _Bool */
hold = new_primitive("_Bool", "_Bool*", "_Bool**", 1, TRUE);
prim_types = add_primitive(hold);

/* Define FUNCTION */
hold = new_primitive("FUNCTION", "FUNCTION*", "FUNCTION**", register_size, FALSE);
prim_types = add_primitive(hold);
Expand Down Expand Up @@ -299,6 +303,12 @@ struct type* type_name(void)
require(NULL != global_token, "unfinished type definition in extern\n");
}

if(match("const", global_token->s))
{
global_token = global_token->next;
require(NULL != global_token, "unfinished type definition in const\n");
}

if(match("struct", global_token->s))
{
global_token = global_token->next;
Expand Down
30 changes: 15 additions & 15 deletions test/test.answers
Original file line number Diff line number Diff line change
Expand Up @@ -209,14 +209,14 @@ fb69ed45b3dbb9da3a2425cde3acbc10746b90d367d998cd22fb495cd8498735 test/results/t
6881582a03436d319d498ee7e8507dac10ddeef51c99a3c3972eaeb4ff8efc57 test/results/test0027-riscv32-binary
0d1c90e68389fa6d23eac22aa3cdc990772eb0c0d9a7faa5e135b45162d38b4d test/results/test0027-riscv64-binary
04e75e83bcea38ba913117c4a4fd1dac5264321aa34eb40a934d6596b6bf7978 test/results/test0027-x86-binary
889558c55dc9900546957d789f72e7322dc6b34b03678f99be9165017e0c35b1 test/results/test0028-aarch64-binary
85e061d85dc5a89c1419d1fe5544c9faecc874629e8e10f92f9fd250adcf38a4 test/results/test0028-amd64-binary
cddae954ec3486707f9c7ea6643093c71cdf31feef6db33ad359432bffcc8252 test/results/test0028-armv7l-binary
7818c4382355883e524b3b5d54d0b8a57b7a627f8b858d22cac231ed96b6a549 test/results/test0028-knight-native-binary
9ed5dc1fb8881d2abb44ebb323d3f5656e60972e2b30f59e7cbc395f20a794fd test/results/test0028-knight-posix-binary
d9d621632b1a50de329b38a39cfff4a18abe47f2cd89a497345f4792407612b9 test/results/test0028-riscv32-binary
cd74ccf3a4cb56fe52c0106da92a8befd8628993efd9a74765125ff132653533 test/results/test0028-riscv64-binary
5d48068861e37244acbab80d2a59e5c4f947b2d638d6b5788e473c587ecbc674 test/results/test0028-x86-binary
e7a27a9ad2f740bde6cf935a6f8946fcda4b56a07c4db3597fdfe9b0a5cf62b7 test/results/test0028-aarch64-binary
e838d696f395c47265acc284a52171445b0f182545ae76868259838fc31a1c2c test/results/test0028-amd64-binary
924075757b04c31849ef849db242a03219d17fbf16be742e8c1f2192cf6b9fdc test/results/test0028-armv7l-binary
ca46f103807d43f4e582c2d4785693664dfcf8a3dcc7a84b81dd831b82c2de55 test/results/test0028-knight-native-binary
18a267639ed743a229ce1d2f90f568cccc29d3e6d48c4b0bf3b1d6e713dade4b test/results/test0028-knight-posix-binary
ec23867d7f738134fef47dbd37ab677da1660d433cb33cef89d2b34db67d96e5 test/results/test0028-riscv32-binary
d8a2960f6250fcc684011251005f8d291f8ec99f44aaee64fbcb5425188175c1 test/results/test0028-riscv64-binary
1ee9516f1f2a40cba30328edbf1bde251279161c5d9dd8608bbfaf785b1277a7 test/results/test0028-x86-binary
e369398fe85d31d4f20171fbad3a354e03a5e7000e51f3fb40926dbe21300cf6 test/results/test0029-aarch64-binary
4481e92fd98af077c0f8f9ae2d6849a077979657ff7dab58c0bfacbb34c9cb20 test/results/test0029-amd64-binary
b7bf774fa05b78b5abfbe90b1a4e3775e997f61ab586b6bf9a54a030045e356e test/results/test0029-armv7l-binary
Expand Down Expand Up @@ -287,10 +287,10 @@ e9fa237a2c4d945490563795fee3adeb394171d65a6025c952c818941d1b0ee6 test/results/t
e6bb2bfffabcb09bdf681fc63d03d039484e4ce3a8f6dcb4d616d6d02dc3d8c9 test/results/test0106-riscv32-binary
ee0044cd67ad632f99d532f1cbfca9ac6c29f2e07eedf28a71110bd67edc6fae test/results/test0106-riscv64-binary
d731bc662f99ba7413a10b112662083a3e1bf31e959e08dc84b57b23f3ef31a7 test/results/test0106-x86-binary
3a5f3fd5c4f8ff2f6770cb3d7484537f2defd306071323020f78a93b60be973f test/results/test1000-aarch64-binary
1dbb08aec01b951819b03eb3feb253da3d67b021609d756569a9885cde1dfcdf test/results/test1000-amd64-binary
60a9c2c9678d805576ed6a84a20807f4a3ee64dded3e1b4839caf6ebc493828d test/results/test1000-armv7l-binary
9946ce4f52de35f6234833a5fd382632b97be438dccf67db1f41d2e60998b013 test/results/test1000-knight-posix-binary
4a071222fc53e3270dc197eebe21d91439c8af510497bb0e24535da09a4bdfc5 test/results/test1000-riscv32-binary
e50eebfa59b5eea601554f12243bb1d0fee0d382f0652d6c681bc43a36aa68eb test/results/test1000-riscv64-binary
e355316450658199c0ce764dde449953dc4c10aa6e2b081c7c8c96fb0b7786f8 test/results/test1000-x86-binary
f8a998e12f1c9f310485de2a580360b7f7a983aa75d34c7320d8bf42c427f6bc test/results/test1000-aarch64-binary
c0df4059b3964e143c6df9cc2fcc76adc6bdba7d2c012149e31c91d2ee9869fc test/results/test1000-amd64-binary
df17bf73f027d0a824df5c12b6feaa8ea795e0c8ad2547e618fd117970b52773 test/results/test1000-armv7l-binary
b44c0a66ccb57ba7ea504b5a864aadd8a28bd0a53c80ec3a8f039d32823b4e8e test/results/test1000-knight-posix-binary
e8b235af255d4e576cfa0773291e1ac2a8b431ca09477188c5c32471efef8ddf test/results/test1000-riscv32-binary
3851d9d51d4d0c86f58db3a0c0817607c3be0e85155ada82672e6dc01c2adf25 test/results/test1000-riscv64-binary
d634d26d3d00f0f529190a68871791cd9a4e032def85ade46d318c0c12481b8d test/results/test1000-x86-binary
2 changes: 1 addition & 1 deletion test/test0014/basic_args.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include<stdlib.h>
#include<stdio.h>

void write_string(char* a)
void write_string(const char* a)
{
while(0 != a[0])
{
Expand Down
8 changes: 6 additions & 2 deletions test/test0028/assignment.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,14 @@
* along with M2-Planet. If not, see <http://www.gnu.org/licenses/>.
*/

const int unused;

int main() {
const int one = 1;
const int three = 3;
int a = 44;
a += 1;
a *= 3;
a += one;
a *= three;
a /= 4;
a %= 7;
a <<= 8;
Expand Down
2 changes: 1 addition & 1 deletion test/test1000/proof.answer
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e17a29adcf2dddd2b270da9b078303242e49cc32990f6875fe2fd8e009a9eb05 test/test1000/proof
51a59b17d1858b5503cbb31fc6e3cae97d556c82d02e1978bcf276d07061fa83 test/test1000/proof