acqn
b45d373fd6
Fixed passing by value structs/unions <= 4 bytes in size to functions. Larger ones are forbidden for now.
2020-07-19 10:58:33 +02:00
acqn
9f67b45ea0
Fixed returning by value structs/unions <= 4 bytes in size from functions. Larger ones are forbidden for now.
2020-07-19 10:58:33 +02:00
acqn
333fa97326
Whitespaces/newlines fixes.
2020-07-18 12:54:29 +02:00
acqn
9198b3be00
Fixed '&function' and '&array'.
2020-07-18 12:54:29 +02:00
acqn
d23b577331
More compiler flags on address types to match the location types of expressions.
2020-07-18 12:54:29 +02:00
acqn
2108489523
Fix for Issue #1075 and #1077 .
2020-07-18 12:54:29 +02:00
acqn
8066cd9ace
Fixed wrong case in PreDec codegen, which never seems to be in use though.
2020-06-01 22:37:40 +02:00
acqn
33e103fdc6
Fixed Issue #1040 : non-byte pointer +=/-= byte codegen bug.
2020-06-01 22:37:40 +02:00
Greg King
90a2edcfa2
Made cc65 detect a possibly missing argument at the end of a function argument list.
...
(It could be a stray comma at the end of the list.)
2020-01-25 04:14:58 -05:00
Greg King
a0db846a97
Allowed old-style (K and R) function declarations to be fastcall.
...
That lets them match old-style definitions. It avoids "Type conflict" error messages. It allows shorter function calls.
Fixed the types of some variables in "test/ref/otccex.c". It avoids crashes on 64-bit Windows (32-bit Windows with 64-bit pointers).
2019-07-22 09:26:23 -04:00
Lauri Kasanen
654d972288
C90 param, void
2019-04-21 12:46:03 -04:00
Lauri Kasanen
a9cbb5305c
Fix missing spaces
2019-04-21 12:46:03 -04:00
Lauri Kasanen
3b3b16ee9c
Add support for computed gotos
...
This is a GCC extension that allows C to use fast jump tables.
2019-04-21 12:46:03 -04:00
Greg King
a6b04f6e97
Changed most "backticks" (grave accents) into apostrophes.
...
Quotations that are embraced by tick marks now look better, in most fonts.
2019-01-05 14:57:12 -05:00
Laubzega
581c46c213
Add checks for risky goto statements.
2018-10-02 18:49:53 +02:00
Greg King
c67e90dd19
Changed the type of a compiler variable that holds either integers or pointers.
...
The change allows cc65 to be compiled on 64-bit Windows, without getting warnings. That OS is actually 32 bits with 64-bit pointers. Its pointers are "long long" instead of "long". The change uses type-names that are configured for the actual pointer width.
2018-01-09 05:34:16 -05:00
Oliver Schmidt
c8d6ca908d
Minor style fix.
2017-10-23 18:22:51 +02:00
Oliver Schmidt
11b01b908d
Merge pull request #424 from clbr/trampoline
...
Trampoline support
2017-05-18 16:29:34 +02:00
Lauri Kasanen
f6fa74a636
Rename trampoline to wrappedcall everywhere
2017-05-18 16:00:04 +03:00
Lauri Kasanen
a2f61c667a
Update comments and location checks according to Greg
2017-05-07 20:31:41 +03:00
Lauri Kasanen
ead0338c0d
Add fast path for char postdec
2017-05-06 13:35:39 +03:00
Lauri Kasanen
767f093ff8
Add fast path for char postinc
2017-05-06 13:35:39 +03:00
Lauri Kasanen
2890b3a810
Pragma trampoline
2017-05-02 20:51:53 +03:00
Greg King
7e14dde07b
Fixed the cc65 code that handled an addition of a pointer to a 32-bit offset.
...
It didn't demote the offset to int because it looked at the pointer (instead of the offset) which already was 16 bits.
2015-12-31 17:41:48 -05:00
Greg King
3b303396bf
Made cc65 accept comparisons between pointers with different qualifiers (similarly to subtractions between pointers).
2015-12-29 04:18:17 -05:00
Oliver Schmidt
d3eebc8fcf
Merge branch 'pointer' of https://github.com/mrdudz/cc65 into mrdudz-pointer
2015-07-15 12:24:09 +02:00
mrdudz
6ab197f364
patch from Uz that makes some illegal operations on pointers error out
2015-07-10 14:27:49 +02:00
Greg King
8189339e7d
Added special-case compiler code that handles a pointer-to-array dereference.
...
The type needs to change (to array); but, the address shouldn't be changed -- it already points to the first element.
Based on a bug analysis by Daniel Serpell.
2015-07-01 06:55:57 -04:00
Greg King
8743e9911d
Added a command-line option to compile a program, with __cdecl__ as the default calling convention.
2015-04-22 09:59:23 -04:00
Greg King
a798b1d648
Made __fastcall__ be the default calling convention for non-variadic functions.
2015-03-10 05:53:52 -04:00
Greg King
0390c34e88
Changed multi-line C comments into another style.
...
The left side doesn't look unbalanced.
2014-06-30 16:51:07 -04:00
Oliver Schmidt
4185caf855
Normalized code.
2014-03-04 01:11:19 +01:00
Oliver Schmidt
f488f7576c
Applied fix contributed by Greg King.
...
The code
void foo(void)
{
int i;
long l = 1L * i;
}
triggered an
Internal compiler error:
Code generation messed up: StackPtr is -4, should be -2
Greg King: "We are lucky that the bug is simple -- a missing "else". The result is that the compiler thinks that it does the opposite of what it actually does: It thinks that it pushes the non-constant expression onto the stack. It doesn't; so, cc65's stack pointer is wrong."
2013-10-08 23:04:41 +02:00
Oliver Schmidt
85885001b1
Removed (pretty inconsistently used) tab chars from source code base.
2013-05-09 13:57:12 +02:00
uz
0eed753578
Prevent a literal string that is an argument for sizeof to be output into the
...
literal pool.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5968 b7a2c559-68d2-44c3-8de9-860c34a00d81
2013-01-25 20:45:40 +00:00
uz
ec1f955a6e
For commutative operators processed by hie_internal, if the left side is a
...
constant, exchange the order of the operands so that better code can be
generated.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5721 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-06-16 18:12:24 +00:00
uz
b5d88fdedd
Mark commutative operators as such (no change in code until now).
...
git-svn-id: svn://svn.cc65.org/cc65/trunk@5720 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-06-16 15:49:53 +00:00
uz
cbefb85d47
Fixed a problem reported by Greg King. structs returned from functions in the
...
primary register are actually rvalues and need special treatment.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5413 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-01-20 16:01:25 +00:00
uz
80a5686bd9
The code for compares with a constant result may not be removed, because it
...
may contain side effects.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5010 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-05-01 18:48:06 +00:00
uz
3f5b2a8fbd
Allow to disable the "Result of comparison is constant" warning.
...
git-svn-id: svn://svn.cc65.org/cc65/trunk@4883 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-28 21:16:46 +00:00
uz
477b77f528
Another minor improvement in compares.
...
git-svn-id: svn://svn.cc65.org/cc65/trunk@4745 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-11 21:53:48 +00:00
uz
2bb2d97ab0
Fixed and improved the code for compares. Before, compares of chars to a
...
constant where sometimes passed down to the code generator in a way that
caused wrong code to be generated.
This change may go into 2.13 after some testing.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4743 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-11 16:11:45 +00:00
uz
1a4e2edede
Reenable compile time evaluation of strlen for string literals.
...
git-svn-id: svn://svn.cc65.org/cc65/trunk@4631 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-20 18:51:59 +00:00
uz
3976746735
Rewrote literal handling. Literals are now saved together with other function
...
data, and at the end of compilation merged if possible. Literals for unused
functions are removed together with the function.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4501 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-05 22:39:45 +00:00
uz
50ff6d0768
Create one literal pool per function, so that literal pool data is removed
...
together with a function, if it is not used. Literal storage can now be
controlled by #pragma writable-strings on a per function basis.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4499 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-04 14:12:25 +00:00
uz
ce931b85be
In case of parse errors for structs, don't just set the type of the result to
...
"int", return a valid lvalue instead.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4483 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-24 23:02:58 +00:00
uz
548336a7bd
Renamed attribute handling functions. Added SymHasAttr().
...
git-svn-id: svn://svn.cc65.org/cc65/trunk@4375 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-19 10:19:26 +00:00
uz
5a00b38aab
Fixed the existing but unused attribute parsing code. Added
...
__attribute__((noexit)) that may be used to mark functions that won't return.
Added this attribute to the exit() function in stdlib.h.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4372 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-18 18:31:02 +00:00
uz
0ce362a69b
Some cleanup in the code generator. Added a g_drop function. g_drop and
...
g_space can now handle sizes > 255 bytes.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4370 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-15 21:08:03 +00:00
uz
17d592352c
Fixed an error with r4329: In case of a struct pointer the qualifiers of the
...
pointers had been used, not the qualifiers of the struct.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4340 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-08 09:54:46 +00:00