Bob Andrews
89031594eb
Merge pull request #1876 from bbbradsmith/constant_overflow_warning
...
Emit warning for signed integer constant overflow
2022-10-16 22:15:22 +02:00
Bob Andrews
b2238fdcd4
Merge pull request #1868 from acqn/PPFix
...
[cc65] Fixed and improved C preprocessor
2022-10-16 19:02:23 +02:00
Bob Andrews
3aadf6c66e
Merge pull request #1867 from acqn/Diagnostics
...
[cc65] Diagnostics improvements
2022-10-16 18:26:26 +02:00
bbbradsmith
66698d4b1a
Rephrasing warnings for suspicious decimal integer constants
2022-10-14 16:47:11 -04:00
bbbradsmith
4540205b0d
Emit warning for signed integer constant overflow
2022-10-13 23:49:07 -04:00
Lauri Kasanen
d52ef67d51
Fix compilation after the postproc merge
2022-10-12 10:28:14 +03:00
acqn
feaedc5b50
Better organized stuff related to C types.
2022-10-12 13:10:17 +08:00
acqn
a2dfa7c721
More consistent names for SymEntry functions.
2022-10-12 13:10:17 +08:00
acqn
164eb198ce
Moved type facility functions for deciding code generation type flags.
2022-10-12 13:10:17 +08:00
acqn
2cda47cd36
More descriptive names for SymEntry usage.
2022-10-11 14:14:48 +08:00
acqn
959be2c98c
SymEntry struct cleanups.
2022-10-11 14:14:38 +08:00
Bob Andrews
71d64a3c1c
Merge pull request #1857 from acqn/PPFix
...
[cc65] Improved preprocessor
2022-10-09 19:00:07 +02:00
acqn
9eab36b95a
Fixed block-scope extern declarations visibility.
...
Fixed missing file-scope static function codegen output in a rare care.
2022-09-30 14:32:08 +08:00
acqn
9900e7361d
#pragma message now uses the new "note" level message routine.
2022-09-30 09:09:09 +08:00
acqn
715aa919e6
C++ style comments in C89 mode will cause errors only once per input file.
2022-09-29 19:47:31 +08:00
acqn
29c9cb3e00
Improved diagnostics on conflicting type declarations.
2022-09-29 19:38:32 +08:00
acqn
96df4e8b5e
Added a diagnostic level "note" for infomative messages.
2022-09-29 19:38:32 +08:00
acqn
133507b031
Fixed line info for #pragma messages and diagnostics.
2022-09-29 17:55:09 +08:00
mrdudz
fd6d00a4dd
revert 6096a24
- this breaks the case when the "label" is an expression containing spaces.
...
fixes bug #1853
2022-09-17 14:41:59 +02:00
mrdudz
253af1ed07
Force 16bit address for absolute-indirect-x-indexed in 65816 mode.
...
should fix issue #1846 (and hopefully not break anything :))
2022-09-03 18:36:40 +02:00
acqn
b4ddd01d78
Fixed checks on __VA_ARGS__.
2022-09-01 12:58:52 +08:00
acqn
950606d46a
Improved diagnostics on wrong number of arguments in function-like macro calls.
2022-09-01 12:59:00 +08:00
acqn
92f94e4e5b
A space character will be inserted in front of a leading '#' pp-token as the result of macro expansion.
2022-09-01 12:58:52 +08:00
acqn
770e529b20
Fixed newline counting inside old C style comments.
2022-09-01 12:58:52 +08:00
acqn
3d1e322519
Fixed keeping spacing in certain rare cases.
2022-09-01 12:58:52 +08:00
acqn
942ee47d05
Changed supposed usage of the original line input stack. It is now used for reusing input lines.
2022-09-01 12:58:52 +08:00
acqn
dc001cb4be
Reverted E_ADDRESS_OF logic fix.
...
Added testcase.
2022-09-01 12:56:46 +08:00
mrdudz
5bda57de87
add extra underscore to _bzero, add a test for bzero/memset
2022-08-29 23:20:48 +02:00
mrdudz
d371046ae4
Despite not technically needed, it seems to be desirable to remove all trailing whitespace from inline assembly
2022-08-28 03:43:02 +02:00
mrdudz
6096a24f1d
dont add whitespace after a label to the actual label, this fixes the root cause of #1252
2022-08-28 03:41:48 +02:00
acqn
9f8bfb859c
Fixed handling adjacent macro expansions that should not concatenate.
...
Example: F()G /* expansion results of F() shall not be concatenated with G */
2022-08-22 14:34:50 +08:00
acqn
c7ff416ce9
Fixed wide strings for preprocessor.
2022-08-22 14:34:50 +08:00
acqn
be95cb8f58
Fixed stringized macro argument concatenation.
...
Example: #define s(a) L## #a.
2022-08-22 14:34:50 +08:00
acqn
6260414136
The '#' operator in macro replacement is now checked at macro definition instead of macro expansion.
2022-08-22 14:34:50 +08:00
acqn
2f6b5621cc
Changed handling on nested macro replacement to match up with the behavior of other major C compilers, which is unspecified by the C standard.
2022-08-22 14:34:50 +08:00
acqn
95e5471cd6
Better preprocess macro expansion.
2022-08-22 14:34:50 +08:00
acqn
43d2fd2a96
Added support for the popular __COUNTER__ macro.
2022-07-24 23:19:05 +08:00
Bob Andrews
d2628d5949
Merge pull request #1840 from acqn/FnParamFix
...
[cc65] Fixed function parameters declared as function types rather than function pointers
2022-08-26 23:19:55 +02:00
Bob Andrews
68610490c9
Merge pull request #1837 from acqn/PPLineFix
...
[cc65] Fixed predefined __FILE__, __LINE__ and added missing preprocessing directive #line
2022-08-26 23:12:59 +02:00
acqn
26945c32ac
Fixed function parameters declared as function types rather than function pointers.
2022-08-24 15:30:52 +08:00
acqn
57ad7c8766
Improved diagnostics about C++ style comments for c89.
2022-08-22 14:31:53 +08:00
acqn
fd7f32ecd3
Improved error handling and diagnostics with failed macro definitions.
2022-08-22 14:31:51 +08:00
acqn
9565f41381
Improved Diagnostic with #include.
2022-08-19 13:27:56 +08:00
acqn
5d5bd472c6
Removed extra whitespace at line ends in preprocess-only output (-E).
...
Increased threshold from 5 to 7 for skipped newlines with #line directives in preprocess-only output (-E).
2022-08-22 00:27:21 +08:00
acqn
79f97e7714
Reused code more for macros in preprocessing directives.
2022-08-22 00:24:28 +08:00
acqn
bb9c98f4c9
Added support for the #line directive.
2022-07-24 23:19:05 +08:00
acqn
36123c9c8f
Improved naming for stuff related to preprocessing directives.
2022-07-24 23:19:05 +08:00
acqn
624e5025b0
Fixed parsing wide char constants.
2022-08-17 22:28:00 +08:00
acqn
5cca1e8b1d
Fixed parsing numeric constants.
2022-08-11 10:55:16 +08:00
acqn
4bb4f033ea
Fixed the bug that C keywords were not simply recognized as identifiers in preprocessing.
2022-08-07 16:14:45 +08:00
acqn
7a139a800e
Added # and ## as punctuators recognized by the tokenizer.
...
Reorganized the token enum.
2022-08-06 18:45:49 +08:00
Bob Andrews
12b9b10355
Merge pull request #1832 from acqn/PPDefineFix
...
[cc65] Preprocessor directive #define fixes
2022-08-20 14:27:25 +02:00
Bob Andrews
03421694b2
Merge pull request #1817 from acqn/PPFix
...
[cc65] More preprocessor fixes
2022-08-19 21:37:16 +02:00
acqn
3fbefdef45
Fixed warning on forward declaration of enums.
...
Fixed the issue that global static variables put on zeropage were missing optimization.
2022-08-19 18:48:52 +08:00
acqn
cf7558add3
Added check for ## at either end of macro expansion.
2022-08-18 23:16:29 +08:00
acqn
47d5e74a6e
Modified way to keep undefined macro handling more consistent.
2022-08-18 22:51:23 +08:00
Bob Andrews
ec310fceb8
Merge pull request #1825 from ReallyNiceGuy/master
...
Revert: Parse file included inside a macro at definition time
2022-08-11 00:03:12 +02:00
acqn
78e80eb942
Fixed superfluous warning on pointer types comparing a non-void pointer to a void pointer.
2022-08-09 13:13:33 +08:00
Marco Aurelio da Costa
71a9ed04a2
Revert: Parse file included inside a macro at definition time
...
The reverted change broke too many use cases where users
where expecting the compiler quirky behavior to be the correct
behavior.
A better solution is needed for the quirk which does not break
current usage.
2022-08-07 11:24:47 -03:00
acqn
a3a5fbe809
Disallowed 'defined' as a macro name.
2022-08-07 13:56:47 +08:00
acqn
7971eec3cc
Fixed parentheses handling when a function-like macro name itself is used as an macro argument.
2022-08-07 12:45:48 +08:00
acqn
ae811baaf1
Fixed the bug that redefined macros could co-exist but not all be undefined with a single #undef.
2022-08-06 18:21:42 +08:00
acqn
0a051a4dee
Unsupported #pragma within argument lists of function-like macro invocation.
2022-08-06 16:56:28 +08:00
acqn
251e984ba8
Fixed error recovery with preprocessing directives failures.
2022-08-05 14:03:51 +08:00
Bob Andrews
2c742ffc1c
Merge pull request #1800 from acqn/PPFix
...
[cc65] Preprocessor fixes
2022-07-28 01:48:41 +02:00
acqn
f8d08b1e1a
More post-C99 predefined macros.
2022-07-26 21:40:19 +08:00
acqn
2f357ba9b2
Preprocessor directives can now appear in the argument list of function-like macro calls.
...
#pragma PP-tokens can now be macro replaced.
#include header names directly enclosed in <> are free of macro replacement.
Preprocess-only mode (-E) now outputs with #line as source info.
Moved testcases for #760 and #1357 .
Added testcase for #1643 .
2022-07-26 21:10:38 +08:00
acqn
80fc8cd11e
Added preprocessor warning on missing terminating characters of character/string literals.
2022-07-26 21:10:36 +08:00
acqn
2c9c8ee196
Fixed extra "Macro argument count mismatch" message when a macro argument list is unterminated.
2022-07-26 21:10:31 +08:00
acqn
60c1290468
Fixed the bug that preprocessor could run past the end of included files.
...
Fixed the wrong filename and 0 line number in disgnostics when a preprocessor error occurred at the end of a file.
Fixed diagnostics for missing #endif.
2022-07-26 21:10:26 +08:00
acqn
8289c94e69
Fixed skipped lines consist of a leading # followed by any non-directive PP-token sequence.
2022-07-26 14:28:27 +08:00
acqn
0063f73f8a
Fixed __FILE__ and __LINE__ macros for preprocessor.
2022-07-24 23:19:05 +08:00
acqn
7381a2c420
Added check for extra tokens at the end of directives.
...
Improved diagnostics on missing/illegal macro names.
2022-07-24 19:07:16 +08:00
acqn
be26b0631b
Fixed #ifdef and #ifndef.
2022-07-24 19:07:02 +08:00
acqn
066a5e0fec
Fixed #pragma charmap for string literals.
2022-07-24 16:38:41 +08:00
acqn
ac4cb258be
Removed a mysterious "Hey!" message.
2022-07-21 11:59:38 +08:00
acqn
16a8a64746
Use a dedicated expression parser for the preprocessor.
2022-07-21 11:10:02 +08:00
acqn
f91c8ad247
Allowed comments right after "#" in preporcessor directives.
2022-07-21 11:09:59 +08:00
acqn
d3d6de2704
Allowed the pp-tokens following #error and #warning directives to be optional.
2022-07-21 11:09:56 +08:00
Bob Andrews
560317c8ba
Merge pull request #1789 from acqn/PPDiagnostics
...
[cc65] Fixed ICE with duplicate macro parameters
2022-07-19 17:38:29 +02:00
Bob Andrews
6b0afe0834
Merge pull request #1785 from acqn/Effectless
...
[cc65] Avoid generating asm from C code that has no observable effects
2022-07-19 17:38:03 +02:00
Bob Andrews
c802980d6a
Merge pull request #1784 from acqn/Diagnostics
...
[cc65] Slight improvements on diagnostics
2022-07-19 17:37:42 +02:00
Bob Andrews
82b268ee50
Merge pull request #1783 from acqn/MiscFixes
...
[cc65] Misc fixes and improvements
2022-07-19 17:37:19 +02:00
mrdudz
7165b29809
omit an error message also when an unresolved import was added by the compiler. fixes bug #1551
2022-07-14 22:54:18 +02:00
mrdudz
a6b807b1d8
more verbose comment
2022-07-14 22:39:29 +02:00
acqn
9e3b759540
Fixed ICE with duplicate macro parameters.
2022-07-05 22:22:49 +08:00
rofl0r
94e7b11870
cl65: fix regression in --print-target-path
...
since the "empty prefix means run from current dir" hack was removed,
cl65 --print-target-path no longer prints the path relative to the
binary, but the hardcoded library path which points to prefix, because
the code adds the hardcoded path first to the pathsearch, but then actually
only returns the first entry rather than looking whether the path exists.
closes #1754
2022-05-30 12:22:02 +00:00
Greg King
93e94c8dea
Fixed a multi-line comment.
...
The left border is thicker in cc65 than it is in VICE.
2022-05-18 05:09:48 -04:00
compyx
2fdb1e6b0d
Fix set but unused variable
2022-05-17 10:05:25 +02:00
mrdudz
f67fb3b326
define __CC65__ as ((VER_MAJOR * 0x100) + VER_MINOR), fixes issue #1667
2022-05-10 01:12:13 +02:00
mrdudz
b6ffa4af64
Fix endless loop on expanding a recursive macro, fixed issue #1678 , patch by kugelfuhr
2022-05-09 21:26:45 +02:00
mrdudz
43af562ce1
At the end of the optimizer run, remove jump cascades again. fixes the
...
regression reported in #1652
2022-05-08 13:22:10 +02:00
mrdudz
5813fd81d3
add extra optimizer step that replaces BRA by JMP if the target is external
2022-05-08 13:20:18 +02:00
Bob Andrews
71cec58d86
Adjust comments
2022-05-05 14:24:02 +02:00
rofl0r
20dd6fd872
change GetProgPath() to return full & resolved binary path
...
GetProgPath() now resolves the path derived from argv[0] always
via realpath(3p) to its real location in the filesystem, and returns
the path including binary name, effectively making it work like
windows' GetModuleFileName(), so we can re-use the existing code
to strip the trailing binary name.
since symlinks are now always resolved, we no longer need the
special case code for linux to use /proc/self/exe for this purpose.
2022-05-02 08:22:21 +00:00
Bob Andrews
74f92564c3
Try reading from /proc/self first on linux, this is needed to make the edgy "make avail" work
2022-04-30 15:01:58 +02:00
rofl0r
d78672a4b4
rename AddSubSearchPathFromWinBin to AddSubSearchPathFromBin
2022-04-28 18:35:05 +00:00
rofl0r
b32c12dd83
implement AddSubSearchPathFromWinBin() counterpart for unix
...
this looks up paths relative to the binary used to start the
specific application.
2022-04-28 18:35:05 +00:00
rofl0r
8669710c0f
build: allow empty prefix
...
there was some concern that this will break windows' way of doing
file lookups relatively from the binary, rather than via hardcoded
locations, but so far each occurence adding e.g. "CA65_INC" to
the pathsearch is already shielded with an #ifndef _WIN32.
addressing #1726
2022-04-27 16:19:06 +00:00
mrdudz
7c7c5af59f
Merge remote-tracking branch 'upstream/master' into constexpr
2022-04-26 16:43:10 +02:00