Commit Graph

39 Commits

Author SHA1 Message Date
Stefano Sanfilippo cf241951a0 Ensure that basic blocks in loops and branches are well formed. 2015-03-09 22:04:10 +01:00
Stefano Sanfilippo dc5fffbddc Cast the expression before deducing truth value in isTrue() 2015-03-09 21:41:11 +01:00
Stefano Sanfilippo 2d58363c50 Ext or trunc for integers types, not bitcast. 2015-03-09 14:26:25 +01:00
Stefano Sanfilippo 1f4fec77b3 Fix error reporting in FunctionPrototype bitcode emitter. 2015-03-09 13:58:43 +01:00
Stefano Sanfilippo e46ddfcd80 Fixing error message for parameter number mismatch in function call. 2015-03-09 13:43:22 +01:00
Stefano Sanfilippo 12ea83a4af Make sure vectors are not empty when calling back(). 2015-03-09 13:35:33 +01:00
Stefano Sanfilippo 0c3702ea34 Single ret point in functions, so that a ret is always in the codepath. 2015-03-09 12:33:10 +01:00
Stefano Sanfilippo 3278f12028 Assert that the value returned by FunctionPrototype bitcode emitter is a llvm::Function. 2015-03-09 12:04:08 +01:00
Stefano Sanfilippo 4037a76c6b Implicitly cast return expressions to the return type of the function. 2015-03-09 01:11:13 +01:00
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