Stefano Sanfilippo
8656d5c761
Get rid of __Monicelli_main and directly call main()
2015-03-08 12:04:46 +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
3f19125574
Output object file in current directory.
2015-03-07 19:56:47 +01:00
Stefano Sanfilippo
35d3dbce75
Add implicit ret void after main in bitcode.
2015-03-07 19:44:49 +01:00
Stefano Sanfilippo
354654daec
Emitting a \n after printing variables in Monicelli runtime.
2015-03-07 19:44:34 +01:00
Stefano Sanfilippo
d802eddd71
Silence unused param compiler warnings because of Bison.
2015-03-07 19:44:16 +01:00
Stefano Sanfilippo
becafb4cd5
Plug new bitcode generator in main.
2015-03-07 19:43:53 +01:00
Stefano Sanfilippo
a8fa0a1bff
Adding license boilerplate where missing.
2015-03-07 17:26:19 +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
a313d4865c
Implementing stdlib runtime.
2015-03-07 14:12:18 +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
e476446e75
Minor refactorings to Nodes.hpp
...
1. Convenience ctor for Id
2. Clean spaces and redudant things.
2015-03-07 14:06:16 +01:00
Stefano Sanfilippo
0f5c138948
Renaming Module::Type to Module::ModuleType for clarity.
...
A monicelli::Type enum is already defined.
2015-03-07 14:05:03 +01:00
Stefano Sanfilippo
43fc82d318
Inheriting std::vector ctors in PointerList.
2015-03-07 14:04:15 +01:00
Stefano Sanfilippo
eafc7c5d94
Prototypes and lookup for standard functions.
2015-03-07 14:03:54 +01:00
Stefano Sanfilippo
bb675a09d7
Adding Type::UNKNOWN
2015-03-07 14:03:07 +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
dc017b3285
Adding Scope::drop() method to clean the whole scope.
2015-03-06 14:30:16 +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
68004b3f49
Reordering methods in iface Emittable (minor, cosmetic).
2015-03-06 13:41:27 +01:00
Stefano Sanfilippo
5d043566dc
Turn main into an ordinary function.
2015-03-06 13:40:40 +01:00
Stefano Sanfilippo
a509a61bfb
Adding Scope lookup utility class.
2015-03-05 22:30:08 +01:00
Stefano Sanfilippo
12dedc1cef
Adapting BitcodeEmitter to the new Emitter iface.
2015-03-05 22:29:34 +01:00
Stefano Sanfilippo
73122492f3
Merge branch 'master' into llvm
2015-03-05 22:28:59 +01:00
Stefano Sanfilippo
248afa02c8
Further simplification of the AST hieararchy and Emitter iface.
2015-03-05 22:28:45 +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
6a60b72b91
Merge branch 'master' into llvm
2015-03-05 17:36:13 +01:00
Stefano Sanfilippo
8554bda556
Reformat CMakeLists.txt script for readability.
2015-03-05 17:35:52 +01:00
Stefano Sanfilippo
c740954528
Updating bitcode emitter stub according to new Emitter iface.
2015-03-05 17:34:20 +01:00
Stefano Sanfilippo
a4b484b2b9
Merge branch 'master' into llvm
2015-03-05 17:27:50 +01:00
Stefano Sanfilippo
d7494702af
Simplify the Expression hierarchy by moving the operator on the binary father.
...
As a consequence, the Emitter interface is greatly simplified.
2015-03-05 17:25:02 +01:00
Stefano Sanfilippo
c55e25e2a2
Stub bitcode emitter.
2015-03-05 14:26:24 +01:00
Stefano Sanfilippo
82b63189f4
Adding new features to features.cpp compiler checks.
2015-03-05 14:24:27 +01:00
Stefano Sanfilippo
25153e8a85
Properly indent generated C++ code.
2015-03-05 13:55:34 +01:00
Stefano Sanfilippo
b0a01d2fb7
Decouple AST nodes from representation.
...
1. adding getters to all node properties.
2. extracting an Emitter interface.
3. moving all C++ codegen features to a CppEmitter.
All list template specializations typedefs have been removed for
increased readability.
A dependency on Boost is introduced for boost::optional,
which is required in the AST getters API.
2015-03-05 01:16:40 +01:00