30 Commits

Author SHA1 Message Date
Stefano Sanfilippo
be503447b3 Fix bug in codegen for functions with multiple parameters.
Prior to this, all mutable param variables would be bound to the same parameter.
2015-03-09 01:02:24 +01:00
Stefano Sanfilippo
711f693f55 Renaming monicelli::plist to monicelli::plist_of 2015-03-08 21:27:24 +01:00
Stefano Sanfilippo
b2e7a11b7a Introducing boost::ptr_vector and boost::ptr_unordered_set.
This is an easy way to increase the uniformity of the API.
2015-03-08 21:03:23 +01:00
Stefano Sanfilippo
b5196b1776 Replace hardcoded stdlib prototypes with a module registry. 2015-03-08 13:25:59 +01:00
Stefano Sanfilippo
4f4ab480a3 Moving system functions names to BitcodeEmitter.cpp 2015-03-08 12:47:52 +01:00
Stefano Sanfilippo
b1aff41ce9 Moving convertAndStore to preamble of BitcodeEmitter.cpp 2015-03-08 12:47:15 +01:00
Stefano Sanfilippo
be60adb510 Minor cosmetic fixes (splitting lines, beautify error message). 2015-03-08 11:29:26 +01:00
Stefano Sanfilippo
f933cc3163 Extracting a FunctionPrototype node.
This will allow more flexibility in defining externed functions.
2015-03-08 11:25:41 +01:00
Stefano Sanfilippo
35d3dbce75 Add implicit ret void after main in bitcode. 2015-03-07 19:44:49 +01:00
Stefano Sanfilippo
e921a24929 Adding -Wextra -Werror to compiler flags and fixing issues. 2015-03-07 17:24:25 +01:00
Stefano Sanfilippo
226aff325f Adding LLVM stuff to CMake build script. 2015-03-07 17:23:46 +01:00
Stefano Sanfilippo
fb42a90235 Adding forgotten RuntimePrototypes include to BitcodeEmitter 2015-03-07 14:12:00 +01:00
Stefano Sanfilippo
8d28c5e909 Fix bug in FP to integer conversion. 2015-03-07 14:11:38 +01:00
Stefano Sanfilippo
c9bff1e64b Ensure that parameters passed to function call are of the right type. 2015-03-07 14:11:25 +01:00
Stefano Sanfilippo
6725cbaf88 Implementing MonicelliType, refactoring LLVMType. 2015-03-07 14:10:49 +01:00
Stefano Sanfilippo
3968d937e0 Rename TYPE_MAP to TYPECAST_MAP (more relevant). 2015-03-07 14:09:57 +01:00
Stefano Sanfilippo
6df0801d35 Clearer error messages for BitcodeEmitter. 2015-03-07 14:08:52 +01:00
Stefano Sanfilippo
287d543b34 Extracting method BitcodeEmitter::emitFunctionPrototype() 2015-03-07 14:08:10 +01:00
Stefano Sanfilippo
c0bfd4757f Implementing system module loading for register runtime functions. 2015-03-07 14:06:58 +01:00
Stefano Sanfilippo
754485e40b Implementing abort/assert/input/output bitcode generation. 2015-03-07 14:02:29 +01:00
Stefano Sanfilippo
4321fa5dbf Adding type coercion and deduction mechanism. 2015-03-06 16:10:35 +01:00
Stefano Sanfilippo
cac89bb476 Stubbing implicit type casting mechanism. 2015-03-06 14:51:54 +01:00
Stefano Sanfilippo
f9cfe700fa Report error when applying int-only ops to float values. 2015-03-06 14:41:02 +01:00
Stefano Sanfilippo
ec21714af9 Minor refactorings to BitcodeEmitter.
1. split initalizer for module unique_ptr on multiple lines for readibility.
2. replace //TODO modules with commented loop.
2015-03-06 14:31:00 +01:00
Stefano Sanfilippo
b7be4dc37f Implementing error handling in emitters.
As a result, Emitter iface changes by providing a bool retval.
False means failure and should be managed as such.
2015-03-06 14:29:52 +01:00
Stefano Sanfilippo
2ce76a1dfd LLVM BitcodeEmitter completed for all statements.
Error handling is still missing.
2015-03-06 13:45:05 +01:00
Stefano Sanfilippo
4e883d148c LLVM Module is now managed by BitcodeEmitter. 2015-03-06 13:42:47 +01:00
Stefano Sanfilippo
becdac1f7f Bitcode emitter for expressions and returns, more things in place. 2015-03-05 22:27:14 +01:00
Stefano Sanfilippo
c740954528 Updating bitcode emitter stub according to new Emitter iface. 2015-03-05 17:34:20 +01:00
Stefano Sanfilippo
c55e25e2a2 Stub bitcode emitter. 2015-03-05 14:26:24 +01:00