Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

We’re showing branches in this repository, but you can also compare across forks.

base fork: erlang/otp
base: master
...
head fork: yiannist/otp
This comparison is big! We're only showing the most recent 250 commits
Commits on Mar 05, 2014
Chris Stavrakakis cstavr Implemented temporary mapping of RTL enter intr
For now enter is implemented as a normal call
6e17180
Chris Stavrakakis cstavr Removed unnecessary LLVM code for fcalls/hp_limit ef45b1c
Chris Stavrakakis cstavr Major commit - refactor about LlvmAssembler,Loader
- Created a LLVM backend Driver module to abstract work in HiPe LLVM backend.
hipe_llvm_main is responsible for invoking rtl2llvm translation, emitting llvm
assembly code, invoking llvm tools to produce native code and much (much) more.

- Created an ELF-64 object file parser to get various information from LLVM
toolchain's (binary) output. Modified HiPe loader to load the LLVM's binary.

- Modified LLVM backend's Makefile to support all previous work.
1d11564
Yiannis Tsiouris Fixed wrong llvmc cmd invokation
Added "-c <name>.ll" in llvmc invokation flags.
Inserted some assertions in file:write_file and llvmc commands that help
debuging!
14052e0
Yiannis Tsiouris Corrections in triggering LLVM toolchain 0053d50
Chris Stavrakakis Added abstraction for LLVM constant declaration 59f2386
Chris Stavrakakis Fixed new line c9a3110
Chris Stavrakakis Translate name of erlang '++' function 57d977d
Chris Stavrakakis Added translation of constants d5b5a05
Chris Stavrakakis Fixed name in function definition ce71bb5
Chris Stavrakakis Some more tests 4811ccb
Yiannis Tsiouris Corrections in triggering LLVM toolchain 4d1f7c4
Chris Stavrakakis Fixed function def/decl of recursive functions 9a7e842
Chris Stavrakakis Implemented mapping of RTL load isntruction f1769a9
Chris Stavrakakis cstavr Translated load_atom RTL instruction
To support atoms we also declare them as external constants,
and load them in the begging of the functions, as we do
for erlang constants.

Also we add them to dictionary to correlate them with the relocation values
extracted from the object files.

Finally atoms are added to relocation references needed by the loader,
as type 0.
e5d8230
Chris Stavrakakis cstavr Changed hipe bif which patches atoms.
In LLVM we use medium code model, in order to have 64-bit addresses for
constants as hipe does. This forces us to also use 64-bit addresses for atoms.
Hipe on the other hand uses 32-bit addresses for atoms.
So we changed the hipe bif that patches atoms (hipe_patch_insn).
2d08143
Chris Stavrakakis cstavr :-) 0252e5e
Chris Stavrakakis cstavr Simple test for atoms 141c7ba
Chris Stavrakakis cstavr Fixed alub instruction 1772165
Chris Stavrakakis Implemented load_address only for constants 9e34f48
Chris Stavrakakis Added abstraction for LLVM switch instruction 2e2fc48
Chris Stavrakakis Implemented mapping of RTL switch instruction
Fixed naming of constant in trans_load_address
446c417
Chris Stavrakakis Added inc_stack call to dictionary 4be8864
Chris Stavrakakis Fixed some errors bd36dce
Chris Stavrakakis Removed duplicates from constants/atoms 0796c73
Chris Stavrakakis Changed naming of temporary files(.ll,.rtl,.s) 023a9bb
Chris Stavrakakis Added mapping of precoloured register %rbp 4a9b1f8
Chris Stavrakakis Fixed some exit messages bebea3f
Chris Stavrakakis Reversed stack arguments
Reversed arguments that are passed to the stack, in order to match with
Erlang's Calling Convention.
0bf7de4
Chris Stavrakakis Changed naming of intermediate files 20e4b02
Chris Stavrakakis Implemented whole module compilation
Trick in hipe_unified_loader to support loading code of a whole module.
This is just a temporary trick and should be removed should.
68da92e
Chris Stavrakakis cstavr Added abstraction for LLVM's invoke instruction d0bc04a
Chris Stavrakakis cstavr Implemented calls with fail continuation 3499fd6
Chris Stavrakakis Added abstraction for LLVM's sitofp instruction
Also created conversion absraction which is generic for all conversion
instructions of LLVM.
938a9d9
Chris Stavrakakis Added mapping of float constants
Float constants need to be loaded on the Entry block.
ba38a2d
Chris Stavrakakis Mapping of RTL's fconv instruction a49dca1
Chris Stavrakakis Mapping of RTL's fload instruction 86cfd4a
Chris Stavrakakis Mapped fstore, fmove and fp instructions 074cbef
Chris Stavrakakis Fixed returning of a simple constant float
This is a special case where a float(a constant float) is used in
a non-float block.
22f6179
Chris Stavrakakis Simple float test d67cc1d
Chris Stavrakakis cstavr Support for trans_store with base being a value 487414d
Chris Stavrakakis cstavr Working on store and load RTL instructions
Added support for store instructions with base value being an rtl value.
Also added loading/storing values of diferrent size then i64.
trans_store_var and trans_store_reg should become..
ee38597
Chris Stavrakakis Fixed wrong ordering of instructions in trans_call c16f510
Chris Stavrakakis Filtered empty relocs 1f15f05
Chris Stavrakakis Added invoke calls to dictionary
Also removed calls to fwait
2e786a2
Chris Stavrakakis cstavr Trying to incorporate llvm backend to hipe
Changed the way llvm backend is triggered, in order to run independently
from the amd64 backend. Also changed backend to be more compatible with
hipe_unified_loader.
d8d26bc
Chris Stavrakakis cstavr Corrected computation of ConstSize and ConstAlign 5ebf943
Chris Stavrakakis Fixed naming of closures 44074e0
Chris Stavrakakis Load address of closures and call to address 14989f2
Chris Stavrakakis Added closures to dictionary 1a8d061
Chris Stavrakakis Fixed ExportMap and corrected some naming issues
Now exportmap has information about if one function is closure and if it is
exported, as expected by the hipe_unified_loader
a22052a
Chris Stavrakakis Changed declaration and loading of float constants 9c71976
Chris Stavrakakis cstavr Added field for call normal continuation in RTL
Extended RTL's call record with an optional field, which contains information
for the next label in a call instruction with fail continuation. This
information is necessary for LLVM's invoke instruction
8fc3854
Chris Stavrakakis cstavr Pass on RTL to fix calls
In order calls with fail continuation to go with the LLVM's invoke instruction
the are supplied with a normal continuation label, which is a label following
the call instruction. Also all phi nodes which are correlated with the block
that contains the call are updated.
8ed0ed7
Chris Stavrakakis cstavr Implemented fp_unop and fixed some errors 16a2d64
Chris Stavrakakis cstavr Removed empty relocations 5bd63c7
Chris Stavrakakis Some code cleanup 173bfe8
Chris Stavrakakis Major commit to extract Stack Descriptors
Parsing object file to extract information about the garbage collection and
exception handling, as needed by the hipe_unified_loader
5c9c6d7
Yiannis Tsiouris Added note_erlgc files a9dc98c
Yiannis Tsiouris Added noredzone function attribute
By disabling red-zone we make sure that there can be no negative offsets of sp
referenced anywhere around the code. This is something that must be satisfied
under any circumstances as hipe_bifs:enter_sdec defines the stack offsets as
unsigned integer!
75b3578
Chris Stavrakakis Update exception label addresses on loader a34c206
Chris Stavrakakis Fixed naming of atoms/closures to match llvm c2b3d76
Yiannis Tsiouris Fixed bug with merged entries of ExnHandlers 2dd4002
Chris Stavrakakis Temporary solution for "global" naming of consts f9aa9cf
Chris Stavrakakis cstavr Fixed loading of signed bytes 5e74f71
Chris Stavrakakis Synchronization point for binary fp instructions
Fixing bug introduced by code reordering of floating point arithmetic
instructions.
d9a5fe7
Yiannis Tsiouris Update elf64_format with .rodata section support
Now there is a new function get_label_list/1 to extract a list with all
constants and literals offsets in code from .rodata section (or an empty list
if no such section exists). We might use this to create proper mapping for an
rtl switch statement (we should build ConstMap and LabelMap by hand).
64c9279
Yiannis Tsiouris Fixed bug with a rela entry indexing a section
Now all relocation entry names appear correctly even if they refer to/index a
section such as ".rodata".
a0fce8a
Chris Stavrakakis cstavr New module to join llvm binaries 8a1bc24
Yiannis Tsiouris Fixed bug with wrong strtab names in get_call_list 5a10c49
Chris Stavrakakis cstavr Implemented switch statement
Also changed hipe_llvm_bin.erl to work with LabelMaps.
Currently works only for one switch statement per function.
84eb23f
Chris Stavrakakis cstavr Check that constant/label size match efa7393
Yiannis Tsiouris Slightly modified the API (get_call_list/1)
* Changed get_call_list to get_text_label_list as this is more approriate name
for usage.
* Created a new utility function to split a list based on some delimeters
(split_list/2).
* Refactored get_label_list/3 to get_label_list/2 as the NumOfEntries argument
wasn't compulsory (iterate based on the binary size).
6c254ad
Chris Stavrakakis Implemented tail calls 94e1440
Chris Stavrakakis Reverted commit for patching atoms d0d6af2
Yiannis Tsiouris Changed defaul options to Opt tool
Added explicitly -mem2reg and delegated to -O2 (maybe -O3 is too aggressive).
TODO: We should make these flags adjustable on llvm invokation!
1e2f84c
Yiannis Tsiouris Removed usage of Heap_limit and Fcalls(in mapping) baaebb4
Yiannis Tsiouris Use -stack-alignment and -tailcallopt in llc dcc391e
Chris Stavrakakis cstavr Some code refactoring
Changed trans_src, trans_dst, trans_float_src to return the the instructions
that are needed in order to load precoloured registers and float constants.
d4570c2
Yiannis Tsiouris No load commands before the get_stacktrace call
We do not want to load the virtual regs (HP, P, NSP) in case of a
get_stacktrace call (assumed to be the first call in every flow starting from a
fail/unwind label). In that way we overcome the problem with no return struct
in case of a non-normal exit of a function (i.e. in case of an exception
throw).
bf7408d
Chris Stavrakakis Introduced a dictionary to hold the relocations 22b3764
Chris Stavrakakis Fixed declaration of erlang.get_stacktrace.0 2e9f8d4
Chris Stavrakakis cstavr Moved handling of relocations to a new function
Also did some code refactoring..
19ab54d
Chris Stavrakakis Added abstraction for LLVM insertvalue instruction 9bdd55b
Chris Stavrakakis Changed return instruction to match with LLVM 3.0 84d6725
Chris Stavrakakis cstavr Code refactoring b1e2a59
Chris Stavrakakis cstavr Changed types from strings to records 07f9590
Chris Stavrakakis cstavr New fun for handling object file relocs 12cd0c8
Chris Stavrakakis cstavr Merging of relocations in llvm_binary bba0111
Chris Stavrakakis Moved llvm_debug_msg to .src file for autogen de3942a
Chris Stavrakakis Removed nsp from pinned regs a298c33
Chris Stavrakakis cstavr Wokring on garbage 7541a55
Yiannis Tsiouris Fixed bug (corner case) in get_sdesc_list
There was a bug when a Return Address (RA) was the limit (border) of the Exn
region. The specified handler was ignored in the RA/Handler association step.
d29d93b
Chris Stavrakakis cstavr New file for llvm_liveness 46b8ed0
Chris Stavrakakis Commented LLVM_DEBUG flag dec8314
Chris Stavrakakis Adjusting sdescs of calls with stack arguments 18b518b
Chris Stavrakakis Added landing pad instruction for llvm 3.0 ff22733
Chris Stavrakakis Created new blocks for landing pads a0e44db
Chris Stavrakakis Warning message for closures with more than 4 args 6269117
Chris Stavrakakis Abstraction for inline asm instruction b7101b2
Chris Stavrakakis Created hipe_bifs:llvm_stub/0 a982030
Chris Stavrakakis Add calls to hipe_bifs:llvm_stub/0 in fail labels 3de2b5c
Chris Stavrakakis cstavr Removed SSA conversion
Removed hipe conversion to SSA form.
All virtual registers of RTL are mapped to stack slots.
3c9dfbf
Chris Stavrakakis cstavr Moved hipe_bifs:llvm_stub/0 call to fail label 36b5dff
Yiannis Tsiouris Created two LLVM-specific BIFs
llvm_fixstack:       Used for reloading HP, SP and realigning caller's stack
llvm_expose_closure: Used for extracting the closure call address (to fix
                     sdesc)
d610eca
Yiannis Tsiouris Changed get_label_list comment in elf64_format 01b0107
Chris Stavrakakis Changed LLVM-specific BIFs 90cc2fc
Chris Stavrakakis Created abstraction for llvm_adj_stack
Created abstraction to print inline assembly in order to
realign stack in fail blocks of calls with stack arguments.
ff1da75
Chris Stavrakakis Compound commit about LLVM-BIFs and switch-stmt
* Changed translation to llvm to use the two new custom BIFs, used for:
  - llvm_fix_pinned_regs: Reload HP, P, SP in case of an unwind control flow
  	                      after an invoke call.
  - llvm_expose_closure: Expose a closure call in order to fix the sdesc.
* Added custom inline asm in llvm generation to re-align SP in an unwind block
  of an invoke call with more than 4 args (stacked args).
* Changed default label in llvm_switch (to avoid a stupid llvm optimization).
  It is not taken into consideration anyway.
* Did some simple parsing of more than one switch-stmts in a function (TODO:
  needs further testing).
aefa724
Yiannis Tsiouris Cleaned trailing white-space in elf64_format e5bf276
Yiannis Tsiouris Added get_text_rodata_list/1 in elf64_format
- We use this function to extract information about the .rela.rodata segment of
an object file and how to split the different case/switch statements.
- Changed the type of the split_list/2 function to just return a list of lists.
810f866
Chris Stavrakakis cstavr Fixing llvm backend compilation options
Remove use_indexing compilation(default enabled) when function has more than
1 switch statement.
29827a4
Chris Stavrakakis cstavr Fixed bugs with labelmap and sdesc of tailcalls f3aec95
Chris Stavrakakis cstavr Optimizing use of stack variables
Declare as gcroot not all var but only possible roots.
a558dba
Chris Stavrakakis cstavr Added liveouts to roots dd86ea8
Chris Stavrakakis cstavr Changed stupid naming of continuation labels 8d5fee9
Chris Stavrakakis cstavr Code Refactoring 79900fe
Chris Stavrakakis cstavr Removed trans_stack_dst calls 20a9f4c
Chris Stavrakakis cstavr Fixed bug in naming of relocations 1e17c53
Chris Stavrakakis Identifying target architecture c2352c6
Chris Stavrakakis Commented function hipe_llvm_main:fix_labelmap 61e3247
Chris Stavrakakis cstavr NrArgs from architecture and refactoring 551429b
Chris Stavrakakis Remove GC Root initialization
The llvm back end is from now on responsible for this task.
d7e1a4c
Yiannis Tsiouris Fixed trailing whitespace 4fface5
Yiannis Tsiouris Changes to handle more than one switch stmts
Commit only includes changes to elf64_format and hipe_llvm_main.
Also, fixed some annoying whitespace.
f5d990d
Chris Stavrakakis Fixed wrong cheking for table symbols e1d043a
Chris Stavrakakis Abstraction for LLVM indirectbr instruction bf54fb4
Chris Stavrakakis Chaned mapping of RTL switch statements 6cfe3c0
Chris Stavrakakis Adding no_use_indexing flag is no longer needed 18b7dac
Yiannis Tsiouris Added base case for extract_switch_infos/3 53dee03
Yiannis Tsiouris Bug fixes (erl_lint testcase) 0dd6ceb
Yiannis Tsiouris Fixed bug with multiple occurances of jump tables 0e7612e
Yiannis Tsiouris Fix bug in index slicing in extract_switch_infos 37c4fa3
Chris Stavrakakis Fixed bug in creation of jump tables.
From now on, jump tables will not be created with hipe_constab module.
We will explicitly create them after the translation to LLVM Code. For
each entry in LabelMap a jump table constant is created and added to ConstMap.
85b3879
Yiannis Tsiouris Work on utilizing a more compact form of GC layout
We try to take advantage of LLVM's poor GC infrastructure in order to write
less information to the object file while making sure that we create the
correct stack descriptors.
ca44a7f
Yiannis Tsiouris Comment out creation of temporary files (.{rtl,o}) 29f22e7
Yiannis Tsiouris Trigger all llvm tools with "llvmc"
Also, moved all intermediate/temp files to "/tmp/".
TODO: remove those files after compilation!
3ce5390
Yiannis Tsiouris Fixed passing flags to the opt tool 92d3700
Chris Stavrakakis Moved creation of jump tables to hipe_llvm_main 3c7f629
Chris Stavrakakis cstavr Remove .ll and .opt.o files 9e28ecd
Chris Stavrakakis cstavr Added llvm_save_temps flag
If this flag is on, then the llvmc tool will not remove the intermediate files
used for compilation. Currently intermediate files are stored to /tmp
directory.
The .ll and .o files are not yet handled by this flag, and are always deleted!
1c73204
Chris Stavrakakis cstavr New flag to pass options to the LLVM back end
Takes only o2 and o3 values. Currently the flag are passed only to the llc
tool. The opt tool has o2 as default flag.
195613e
Chris Stavrakakis cstavr Changed fix_opts to use string:join/2 575125b
Chris Stavrakakis cstavr Fix invoke and closure calls in one pass 4c7938e
Chris Stavrakakis cstavr Fixed bug in joining options 938f9bf
Chris Stavrakakis cstavr Taking NIL value from tagscheme 8cb1f31
Yiannis Tsiouris Fix whitespace and other syntax stuff dede8cc
Chris Stavrakakis cstavr Comments and refactoring 0425714
Yiannis Tsiouris Add forgotten hrl 72e0e28
Chris Stavrakakis Removed llvm-gcc from compilation steps edef6f0
Yiannis Tsiouris Code and whitespace cleanup 0fd5a96
Chris Stavrakakis Fixed whitespace bug fab504c
Yiannis Tsiouris Split llvm_opts to llvm_llc & llvm_opt
Available flags about LLVM in the HiPE compiler are:
* llvm_opt: the optimization level for opt tool,
* llvm_llc: the optimization level for llc tool,
* to_llvm: automatically expanded to use O2 ({llvm_opt,o2}, {llvm_llc,o2}), and
* {to_llvm, O}: use "O" optimization level for opt & llc tools.
6c90cb4
Yiannis Tsiouris Add "-O0" flag for no opts e1ddc7b
Yiannis Tsiouris Changed rtl_to_native header to match rtl_to_?ARCH 6614a5d
Yiannis Tsiouris Merge icode_to_llvm & rtl_to_llvm
Also, work on generating LLVM asm *after* the rtl stuff. This will cleanup the
code, but we have to measure in order to see if we have a performance overhead
or change in general.
a74bbbe
Chris Stavrakakis cstavr Comments 3568f65
Chris Stavrakakis cstavr Changed the liveness field of rtl_var 5473de4
Chris Stavrakakis cstavr Changed pipeline in hipe_main and fixed bug
Better integration of the LLVM back end in the HiPE pipeline.

Also, fixed a bug in hipe_llvm_liveness:find_dead_in_block/2. The list of the
variables that are being defined in a basic block must not have any duplicated
elements in order to guarantee the correctness of the liveness annotation.
4f30778
Yiannis Tsiouris Whitespace and comment fix da0fa56
Yiannis Tsiouris Removed test/ dir. We have a suite now b021b56
Yiannis Tsiouris Re-phrase, re-factor, whitespace cleanup 64736fb
Yiannis Tsiouris Exports in ExportMap should be in descending order 67183ca
Yiannis Tsiouris Reset ASSERT in patch_sdescs 16a579d
Yiannis Tsiouris Remove shadowing of 'to_rtl' flag from 'to_llvm' 896bdef
Yiannis Tsiouris Comment-out debug prints 2318809
Yiannis Tsiouris Moved LLVM-specific code to 'finalize' d258061
Yiannis Tsiouris Move some useful functions to the misc modules
Some usefull functions are needed by all HiPE back ends; they are
re-implemented with the exact same code in all
hipe_{sparc,ppc,arm,x86}_assemble modules. Moved them to hipe_pack_constants.

find_const: Update other back ends to use hipe_pack_constants:find_const/2.
Others: Not updated the back ends. This should be done later.
d8b45a5
Yiannis Tsiouris Refactoring handling of code's load info
Code-cleanup and refactoring in the way we handle information such
as ExportMap, LabelMap, Refs, ConstMap needed for loading the
actual code. Try to use similar data structures and the provided
infrastructure by the other backends use. In that way the LLVM
back-end's code base is reduced and more readable. :-)
34b6c95
Yiannis Tsiouris Fix bug in insert_label_map b88e481
Yiannis Tsiouris Open file with delayed_write 90ff4b5
Yiannis Tsiouris Get rid of io module. Use file:write! ff48496
Yiannis Tsiouris Disable delayed_write because it seems slower e995345
Yiannis Tsiouris Fix shadowing of Code and Codesize in generate b50dee3
Yiannis Tsiouris Make elf64_format modular (elf_format)
* Rename elf64_format.erl to elf_format.erl.
* Rename elf64_format.hrl to elf_format.hrl (general info).
* Use elf64_format.hrl for ELF64 specific fields.
* Update code to use elf_format module.
8ecb8a9
Chris Stavrakakis cstavr Small refactoring to hipe_rtl2llvm module
Fixing variables naming
c6376a0
Chris Stavrakakis cstavr Refactoring handling of closures with stack args
Remove hipe_bifs:llvm_expose_closure/0 which was used for exposing the
addresses of closures with arguments in the stack. Instead, we create a label
before any such call and save these labels to a special constant table
(table_closures) which is parsed from the object file with the
elf_format:get_symtab_list/1 function.
24a6535
Yiannis Tsiouris Better elf support with new data abstraction and staff 0d5ff55
Yiannis Tsiouris Simplify get_rodata_relocs 30c364b
Yiannis Tsiouris Merge get_switches and get_closures to one 4b5ac07
Yiannis Tsiouris Better filtering in get_tables 80e60a7
Chris Stavrakakis cstavr Change adjust stack instruction
Adjust stack instruction must also take the architecture stack pointer
register
389f27d
Chris Stavrakakis cstavr Translate alub with ltu as unsigned overflow 3908c28
Chris Stavrakakis cstavr Change patching of x86 closures/constants ce6d67e
Chris Stavrakakis cstavr Support for X86 32-bit architecture
Need ELF32 support to work
053f84b
Chris Stavrakakis cstavr Support ELF32 object file 9753f16
Chris Stavrakakis cstavr Rewrite hipe_llvm_liveness module
- Better specification of GC Roots
- Marking dead only GC Roots
- General Refactoring
f044a6c
Yiannis Tsiouris Minor refactor changes 9d37145
Yiannis Tsiouris Add better comments to new HiPE flags 19547d0
Yiannis Tsiouris Change /tmp to /dev/shm (tempfs)
Reduce compilation time by 8% (based on compiler_tests/ suite).
Currently, ErLLVM is 18% slower than vanilla HiPE.
b3e8fca
Yiannis Tsiouris Fixed minor typo 8d8136f
Yiannis Tsiouris Fixed some Dialyzer warnings and indentation 7092d9f
Kostis Sagonas kostis Added correct but suboptimal type for llvm_binary 8887f21
Kostis Sagonas kostis Comment out unused case 77850ad
Kostis Sagonas kostis Dialyzer fixes and code cleanups 1c10671
Kostis Sagonas kostis Fixes and cleanups in specs a331c64
Kostis Sagonas kostis Clean up two specs by adding a type 4df30b5
Kostis Sagonas kostis Small optimization 16c66f1
Kostis Sagonas kostis Make sure that file:write/2 uses an iolist() in its 2nd arg 668887f
Kostis Sagonas kostis Eliminate dialyzer warnings and code cleanups 7ebd156
Kostis Sagonas kostis Shorten code 794c8e4
Kostis Sagonas kostis Various code cleanups and simplifications 4b17408
Chris Stavrakakis Considering -O2 as default optimization level 304e823
Chris Stavrakakis Improve uniqueness of directory names 8ebbb0f
Yiannis Tsiouris Created a function for exporting ELF Class from ELF header 9d25682
Yiannis Tsiouris yiannist Removed /dev/shm/llvm_* folder if already exists fb7c00e
Yiannis Tsiouris yiannist Generate unique name for folder from the beginning e2a28c6
Yiannis Tsiouris yiannist Use new llvm where prologue insertion is a pass 85d1400
Kostis Sagonas kostis Added option to warn for missing specs for exported functions 4da574d
Yiannis Tsiouris yiannist Fixed compatibility bug with volatile load/store d695e3b
Chris Stavrakakis Implement branch metadata 0d0bb6e
Yiannis Tsiouris yiannist GC initilize only non-argument roots 55f49b5
Yiannis Tsiouris yiannist Fix typos in comments 89535f2
Yiannis Tsiouris yiannist Use of -strip in opt and -enable-block-placement in llc
-strip: Reduce generated file size by 1/3 by stripping all symbol information.
-enable-block-placement: Add HiPE flag (llvm_bplace) to pass that flag to llc in
       order to give hints to the Code Generator to place blocks based on branch
       probabilities generated by HiPE on previous IRs.
3e1d124
Yiannis Tsiouris yiannist Use -O2 in llc and {to_llvm, O} in opt (default: O3) 03c7b27
Yiannis Tsiouris yiannist Change hipe_llvm_merge to respect alignment 6d90f35
Yiannis Tsiouris yiannist Fix 'term created but never used' warning 05b832c
Yiannis Tsiouris yiannist Fix another 'unused' warning 848b20c
Yiannis Tsiouris yiannist Whitespace fixes 993c07f
Yiannis Tsiouris yiannist Fixed padding-bug in X86 (--enable-native-libs works like a charm!) 5e4828e
Yiannis Tsiouris yiannist Add 'inbounds' as default in getelementptr and fix whitespace/comments c48d125
Yiannis Tsiouris Changed -hipe-prologue to -enable-hipe-prologue to match LLVM 556bf36
Yiannis Tsiouris Revert "Changed -hipe-prologue to -enable-hipe-prologue to match LLVM"
This reverts commit 53ce459 for now and
fixes Issue #3, pointed by chaoslawful.

Thanks! :-)
5044b66
Chris Stavrakakis cstavr Add '-join-physregs' flag to llc opts 4504714
Chris Stavrakakis cstavr Revert "Add '-join-physregs' flag to llc opts"
This reverts commit 31c49ba.

This flag has been removed from latest LLVM.
c5009e0
Yiannis Tsiouris yiannist Removed -hipe-prologue, -load; fixed x86 alignment 8495491
Yiannis Tsiouris yiannist Fix ELF GC section parsing in x86 5e1bf05
Yiannis Tsiouris yiannist More fixes for x86 4fc897e
Kostis Sagonas kostis Minor prettyfication 86fdaea
Kostis Sagonas kostis No diffs in whitespaces, please 9b1a061
Kostis Sagonas kostis Minor cleanup 460888a
Kostis Sagonas kostis Cosmetic changes 1eef2f8
Kostis Sagonas kostis Fix typos in comments e0ecf45
Kostis Sagonas kostis Minor cosmetic changes c365159
Kostis Sagonas kostis Tidying of the code bf10202
Kostis Sagonas kostis Fix coding stype in various places 0213bc5
Kostis Sagonas kostis Major refactoring of ELF-related code
Includes removal of elf_datatypes.hrl.
bb1ff00
Kostis Sagonas kostis Mostly cosmetic cleanup 9a9b46f
Kostis Sagonas kostis Move the content of erl_datatypes into erl_format and delete the file 088c955
Kostis Sagonas kostis Change return type of fix_closure_name/1 95e0c47
Yiannis Tsiouris yiannist Add types in hipe_llvm.hrl records 3e27aac
Yiannis Tsiouris yiannist Fix email and copyright bump 420e85d
Yiannis Tsiouris yiannist Move content of hipe_llvm.hrl into hipe_llvm.erl and delete file d02b97c
Yiannis Tsiouris yiannist Remove hipe_llvm.hrl from hipe_rtl2llvm.erl b44cd35
Yiannis Tsiouris yiannist Better usage of macros in hipe_rtl2llvm + refactor
The previous usage of macros created multiple llvm "objects" in places
that they were not actually needed, e.g.:

> I3 = hipe_llvm:mk_call(T1, false, [], [], ReturnType, "@"++Name,
>      [{?WORD_TYPE, Src1}, {?WORD_TYPE, Src2}], []),

changed to:

> WordTy = ?WORD_TYPE,
> I3 = hipe_llvm:mk_call(T1, false, [], [], ReturnType, "@" ++ Name,
>      [{WordTy, Src1}, {WordTy, Src2}], [])

We should reconsider removing all these macros.
5f94ffb
Yiannis Tsiouris yiannist Cosmetic changes in hipe_llvm_main.erl 198c235
Yiannis Tsiouris yiannist Remove macros from hipe_rtl2llvm.erl
The usage of macros as function call aliases, such as those in
hipe_rtl2llvm, forces the creation of more Erlang terms than are
actually needed. Thus, we should avoid them.
2e30677
Yiannis Tsiouris yiannist Rename hipe_rtl2llvm.erl to hipe_rtl_to_llvm.erl 2da5fce
Yiannis Tsiouris yiannist More h4ck1sh way to write ?bits 6472f9d
Yiannis Tsiouris yiannist Remove WORD_WIDTH, use hipe_rtl_arch:word_size() 4506276