summary refs log tree commit diff stats
path: root/compiler/cgen.nim
Commit message (Collapse)AuthorAgeFilesLines
* thread var emulation should work againAraq2012-06-251-4/+7
|
* bite the bullet and make 'initStackBottom' a compilerprocAraq2012-06-241-11/+12
|
* Merge branch 'master' of github.com:Araq/NimrodAraq2012-06-191-41/+70
|\
| * proper indentation in the generated C codeZahary Karadjov2012-06-121-41/+70
| |
* | somewhat working closuresAraq2012-06-191-1/+4
|/
* fixes #20 properlyZahary Karadjov2012-04-151-31/+25
|
* C variables are created in their enclosing block instead of their enclosing ↵Zahary Karadjov2012-04-121-35/+35
| | | | function
* proper order of initialization for .global. variablesZahary Karadjov2012-04-101-1/+5
|
* Merge branch 'master' of github.com:Araq/Nimrod into upstreamZahary Karadjov2012-03-311-1/+7
|\
| * implemented support for the AVR CPU and standalone OSAraq2012-03-311-1/+7
| |
* | typedesc and expr paramsZahary Karadjov2012-03-311-0/+1
|/ | | | | | | | | | | | types are now valid proc/template/macro params and you can overload over them: proc foo(T: typedesc) # accept any type proc foo(T: typedesc{int}) # overload specifically for int proc foo(T: typedesc{int or float or Callable}) # overload for any type matching the constraints expr{type} is a param expecting compile time value of the designated type (or type class). when typedesc or expr params are used with a proc, the proc will be instantiated once for each unique type/value used as parameter.
* further steps for closure supportAraq2012-02-081-0/+1
|
* further steps to closure supportAraq2012-02-061-10/+23
|
* fixes #87Zahary Karadjov2012-02-031-2/+0
|
* fixes #98Araq2012-01-291-1/+1
|
* bugfix tests/tzeroarrayAraq2012-01-291-0/+3
|
* implemented incompleteStruct pragma; embedded debugger works with posix moduleAraq2012-01-051-2/+2
|
* year 2012 for most copyright headersAraq2012-01-021-5/+5
|
* code gen can generate code to keep alive stack rootsAraq2011-12-221-19/+39
|
* compiler generates volatile temps to keep C compiler from optimizing away ↵Araq2011-12-121-6/+26
| | | | stack roots
* codegen uses alias analysis to generate better codeAraq2011-12-101-10/+19
|
* cleaned up configuration file handling and documented the new behaviourAraq2011-11-301-1/+1
|
* implemented 'let' statementAraq2011-11-291-1/+2
|
* new pragma: 'noinit'Araq2011-11-251-7/+8
|
* unused constants are optimized awayAraq2011-11-221-25/+32
|
* Added system.program_results for controlling the exit code of the program ↵Zahary Karadjov2011-11-101-2/+2
| | | | | | | | under normal circumstances Implemented operators like +=, -=, etc for ordinals, floats and string Programs using the UnitTest module will now report the number of failed tests as the exit code of test runs (0 for successful run)
* lazy loading of body ast implementedAraq2011-10-301-1/+1
|
* constant folding for cnst[i] and cnst.attrAraq2011-10-291-1/+1
|
* compilation cache: DLL interfacing now worksAraq2011-10-271-8/+13
|
* compilation cache: small fixes; methods still not workingAraq2011-10-231-1/+6
|
* rod files: next trivial examples workingAraq2011-10-221-8/+11
|
* trivial change scenario works with symbol filesAraq2011-10-221-21/+28
|
* got rid of gToTypeInfoIdAraq2011-10-211-2/+0
|
* got rid of gGeneratedSymsAraq2011-10-211-9/+16
|
* further steps for incremental C code generationAraq2011-10-211-32/+32
|
* first steps to C file merge operation for incremental compilationAraq2011-10-211-111/+34
|
* bugfixes for ROD file generation; nimcache dir is now flatAraq2011-10-201-10/+18
|
* much more efficient rod file generationAraq2011-10-181-1/+1
|
* implemented optional pragma for implicit discardAraq2011-09-241-2/+2
|
* Multiple C lines corresponding to a single nimrod line are joined togetherZahary Karadjov2011-09-201-11/+38
| | | | | | | | | | | | | | | | | | | | | | This patch greatly improves the "step over" operation available in debuggers. In practice, there are often 4-8 lines of C code generated for each nimrod line Each such line will be responsible to a single step in the debugger that is a) not expected by the user b) taking the user to an incorrect line in the nimrod code To keep this working, all code generation should use the rope formatting facilities when producing new lines (i.e. $n and $N). New semantics for the format string are introduced: $n means "soft new line" that could be joined/broken when lineDir is enabled. $N means "hard new line" that will always appear as a new line. As an alternative to this approach, I also tested producing code like this: #line "code.nim" 154 foo = bar; \ foo(bar) \ This is better for readability of the final output, but unfortunately it didn't produce the desired result across all compilers/debuggers.
* Nimrod can now compile itself with --lineDir enabledZahary Karadjov2011-09-201-1/+1
|
* support for C++ code generation; importcpp and importobjc pragmasAraq2011-08-071-3/+4
|
* bugfix: forwarding of generic procs now worksAraq2011-07-301-20/+17
|
* bugfixes; step one for 'var T' as return type supportAraq2011-07-281-1/+1
|
* bugfix: proper cache for generic instantiationsAraq2011-07-211-1/+1
|
* importCompilerProc pragma introduced because the hacks for typeinfo.nim did ↵Araq2011-06-271-4/+8
| | | | not suffice
* code gen bugfixes; marshal.nim implementedAraq2011-06-261-2/+3
|
* compiler can emulate thread local variablesAraq2011-06-151-72/+34
|
* intsets are now a proper module and part of the stdlibAraq2011-06-141-12/+12
|
* got rid of nstrtabs and nhashes modulesAraq2011-06-101-1/+1
|