Commit graph

8909 commits

Author SHA1 Message Date
Bill Currie
5a7650e54a Fix a missing return.
Yay, I've wanted this feature in qfcc for many years :).
2011-02-10 14:47:24 +09:00
Bill Currie
adeef4a4eb Copy named expressions.
Since expressions can be modified, making DAGs this early causes
corruption of the expression tree.
2011-02-10 14:43:49 +09:00
Bill Currie
6f625e426f Use the correct type when deferencing an offset pointer. 2011-02-10 14:26:12 +09:00
Bill Currie
1099ca086c Dump the offending expression and statement for a bad instruction. 2011-02-10 14:25:09 +09:00
Bill Currie
4a41d97afc Angle brackets and html :P 2011-02-10 14:24:31 +09:00
Bill Currie
01a7af17e5 Beat __obj_exec_class into submission. 2011-02-10 00:15:19 +09:00
Bill Currie
006c16807d Add the statement for based loads.
Oops :P
2011-02-09 22:40:16 +09:00
Bill Currie
a43946abf3 Give short values special treatment.
As a short value fits directly into a statement, it needs a fake def that
holds its value in the def's offset in order for the value to be written to
the statement.
2011-02-09 22:13:43 +09:00
Bill Currie
c7adde8709 Fix some case&paste errors. 2011-02-09 22:04:54 +09:00
Bill Currie
1b8edc07c9 Adjust the offsets of ivars in derived classes.
As ivar structs are not independent, their starting offset is not
necessarily zero (almost never will be for derived classes).
2011-02-09 22:02:52 +09:00
Bill Currie
d66a441867 Write out the far data space as well as the near.
This causes the Objective-QC structs to be emitted now that they havve been
moved to the far data space. Relocs are broken, though.
2011-02-09 21:45:29 +09:00
Bill Currie
244d969ae3 Ensure any tail bytes in the strings data are zeroed. 2011-02-09 18:32:37 +09:00
Bill Currie
2d5d8eda5a Save the caller's address when creating new relocations. 2011-02-09 17:16:49 +09:00
Bill Currie
29c1f7ac03 Use the correct type object in emit_struct(). 2011-02-09 17:15:29 +09:00
Bill Currie
59a683d39e Protect the name passed into emit_struct().
The name passed into emit_struct is sometimes created via va(), but the
struct creation code also uses va. This makes a mess of names.
2011-02-09 17:12:47 +09:00
Bill Currie
3e1b034aaf Use EMIT_DEF correctly. 2011-02-09 15:58:32 +09:00
Bill Currie
e75295b00c Make normal C style functions generate code. 2011-02-09 10:25:23 +09:00
Bill Currie
55b7f6eee4 Avoid another segfault when debugging. 2011-02-09 10:13:08 +09:00
Bill Currie
68cdc904f5 Give temporary variables unique names. 2011-02-09 10:04:55 +09:00
Bill Currie
681ded9375 Fix debug line number information. 2011-02-09 09:59:43 +09:00
Bill Currie
5eff00fdeb Fix debug information. 2011-02-09 08:47:01 +09:00
Bill Currie
de33cd6017 Ensure auxfunction_map is properly initialized. 2011-02-09 08:28:20 +09:00
Bill Currie
71c05bd899 Update for the new syntax.
This one compiles to progs even :) (though it looks broken).
2011-02-08 22:39:42 +09:00
Bill Currie
81125cff3a Creation of .ctor now mostly works.
There seems to be problems with the actual code generation using incorrect
addresses, but a very simple test file compiles successfully.
2011-02-08 22:38:34 +09:00
Bill Currie
1647b1e61d Check for the correct type in emit_symtab_cat_def_cnt(). 2011-02-08 22:31:09 +09:00
Bill Currie
9b52c590f8 Do not try to emit anything when there are no selector references. 2011-02-08 22:28:32 +09:00
Bill Currie
da14c95bb8 Initialize current_symtab in class_init() when necessary.
If an objective-qc symbol is the first token to be read, class_init() is
called before the parser gets a chance to perform the initialization
action. However, class_init() setting current_symtab if the first
objective-qc symbol is seen in a function body would be bad.
2011-02-08 22:26:35 +09:00
Bill Currie
c01f742b7b Fix some Class vs ClassPtr confusion. 2011-02-08 18:25:23 +09:00
Bill Currie
0d5ab6600d Store the source expression in a statement.
This makes problem reporting more informative.
2011-02-08 18:18:34 +09:00
Bill Currie
faab931ffc Fix assignment of id to class pointers. 2011-02-08 17:12:01 +09:00
Bill Currie
6643c5dd98 Fix messages to super. 2011-02-08 17:09:27 +09:00
Bill Currie
505e141633 Ensure the class symbol is in the symbol table. 2011-02-08 17:08:58 +09:00
Bill Currie
93a5808659 Support direct struct/union field access. 2011-02-08 14:48:26 +09:00
Bill Currie
3c849b970b Handle union access now that they're detected properly. 2011-02-08 14:45:48 +09:00
Bill Currie
204a267b6a Print the def name for a pointer expr when known. 2011-02-08 14:43:57 +09:00
Bill Currie
3b080fcbb0 Fix an uninitialized variable. 2011-02-08 13:27:37 +09:00
Bill Currie
2594be8b1b Fix a type-o ;) 2011-02-08 13:26:49 +09:00
Bill Currie
8c6fc6fb03 Fix a double insertion of a symbol. 2011-02-08 08:44:08 +09:00
Bill Currie
daa88d8f1c Fix a type clash warning I'd failed to notice. 2011-02-08 08:23:25 +09:00
Bill Currie
35d53d0d77 Fix typedefs and class names once and for all.
I suspect Holub did them that way as a teaching exercise :P
2011-02-08 08:20:32 +09:00
Bill Currie
7e2173f268 Remove some old code. 2011-02-08 08:16:36 +09:00
Bill Currie
d6b10c99aa Most, if not all, of the fixes needed to get qwaq building.
This is pretty much just changing [] to * and moving [N] to the other side
of the variable name.
2011-02-07 22:16:16 +09:00
Bill Currie
92799650c0 Implement struct field access via a pointer. 2011-02-07 22:15:10 +09:00
Bill Currie
7a1a9e3f2d Better handling of the current storage for function scopes. 2011-02-07 22:11:22 +09:00
Bill Currie
ff70177041 Fix type handling for local variables. 2011-02-07 21:38:58 +09:00
Bill Currie
952a02eb23 Make print_type() output a newline. 2011-02-07 21:31:37 +09:00
Bill Currie
a28ac636a7 Make local declarations support C syntax. 2011-02-07 21:29:04 +09:00
Bill Currie
da4ec3d47c Allow typedefs and classes in structs. 2011-02-07 20:55:13 +09:00
Bill Currie
aefd2a27d5 Make type handling in the grammar more consistent. 2011-02-07 20:54:49 +09:00
Bill Currie
3c64ae7b66 Fix overzealous type merging.
Use the type name instead of the symbol table for comparing
struct/union/enum types.
2011-02-07 20:48:01 +09:00