Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base: 5dd8c543ab
compare: rurban/ops2c_llvm
Checking mergeability… Don't worry, you can still create the pull request.
This comparison is big! We're only showing the most recent 250 commits
Commits on Oct 01, 2012
@rurban rurban [codingstd] hard tabs in config/auto/ a38db3c
@rurban rurban [tools] better string output for multi-byte
Use errors=replace instead of strict. See
Prepend encoding when not ascii and not latin1, add strlen and bufused fields.
@rurban rurban Add gdb pretty-printing to ChangeLog bd6851e
@leto leto Add a failing test for #813 reported by @donaldxs 0b4417c
@leto leto Improve and refactor failing #813 enc_sub test 07d53a0
@rurban rurban [GH #813 + #814] Fix MIME/Base64.pir for encoded strings
Use bytebuffer representations of the encoded string, not the encoded ord value.
Now the implementation is correct, but some encoded tests not.
@rurban rurban Add special mime-base64 utf8 test and examples 2eeefe4
@rurban rurban t/library/mime_base64.t: decode result to same encoding ee7d8a5
@rurban rurban [codingstd] add code, pod and copyrights to new examples 92f4de4
@rurban rurban Add unicode tests to data_json. Document chr op 9fdc9c0
@leto leto [t] Update manifest to make manifest tests happy 2cd9f8e
@Whiteknight Whiteknight Undo a prospective fix from rurban++. We don't want to flush stdout e…
…very time we read from any filehandle.
@Whiteknight Whiteknight On second read through, it doesn't appear that the old IO system had …
…a write buffer on stdout. Take that away in the new system to try and fix some rakudo issues reported by pmichaud++
@rurban rurban [tools] Support more encodings
Also fix a python gdb strlen error. The number of char is needed, not the number of codepoints.
@rurban rurban Revise [tools] Support more encodings
Use native endianness
@bubaflub bubaflub remove hard tabs 9511781
@rurban rurban [cage] fix auto::inline for g++
add missing return type to function
error: ISO C++ forbids declaration of ‘f’ with no type [-fpermissive]
@rurban rurban [cage] Improve llvm detection
Probe for llvm-config-3.0 llvm-config-2.9 llvm-config-2.8 which do exist on debian,
where llvm-config does not exist.

Print found version, like "yes, 3.0" as with gcc and other libs.
If not requested, print "not requested" instead of "no" to give a hint,
that --with-llvm is wanted.

Add llvm and inline probes to ChangeLog
@rurban rurban [codingstd] hard tabs in config/auto/ 8c85134
@rurban rurban [tools] better string output for multi-byte
Use errors=replace instead of strict. See
Prepend encoding when not ascii and not latin1, add strlen and bufused fields.
@rurban rurban Add gdb pretty-printing to ChangeLog 5a51d80
@rurban rurban [GH #813 #814] [codingstd] Improve new mime_base64 examples c1c30c6
@rurban rurban [GH #813 #814] Move new mime_base64 examples to examples/library/ 072156a
@rurban rurban Simplify tools/dev/ a bit 00d8e4d
@rurban rurban [GH #852] Avoid unneeded libparrot already exists with rpath b6fcac4
@rurban rurban [GH #813 + #814] Use Bytebuffer for MIME::Base64, add 2nd enc arg to …

Use bytebuffer representations of the encoded string, not the encoded ord value.
Also fix the tests to match this conformant behaviour.

The problem is now that base64 encoded files are endian dependent, and the multibyte
tests need to be skipped on big-endian.
Commits on Oct 02, 2012
@jkeenan jkeenan '1' added to result message is superfluous; revert.
The second argument passed to auto::llvm::_handle_result() is merely a Boolean
used to determine whether the result message displayed as part of's output should be set to 'yes' or 'no'.  Consequently, a result
of 'yes, 1' conveys nothing above or beyond 'yes'.  Reverting the modification
(which was also causing failures in t/steps/auto/llvm-01.t).
@jkeenan jkeenan Add minimal tests for auto::alignof.
Configuration step auto::alignof was added to master without a corresponding
test file under t/steps.  Add that file; update MANIFEST.  Make indentation in
config/auto/ consistent.

Note: Running the newly added steps test shows that internal subroutine
test_if_needed throws a warning, at least when we are not trying to compile
with clang.  The warning is:

  value for '@TEMP_type@' in config/auto/alignof/ is undef at
    lib/Parrot/Configure/ line 584, <$in> line 55.

This indicates a possible problem with config/auto/alignof/
@rurban rurban Merge branch 'master' of f3e4193
@rurban rurban Fix t/steps/auto/alignof-01.t warning
Thanks to jkeenan++ for adding the test.
@rurban rurban Merge branch 'master' into rurban/mime-base64-utf8-gh813+gh814
Fixed merge conflicts:
@rurban rurban Revised [GH #813 + #814] ChangeLog 220ab0a
@rurban rurban [GH #813, #814] Fix tests for big-endian
Also check for has_icu to check with composed unicode strings
@rurban rurban Revised [GH #813 + #814] ChangeLog - titlecasing 87ac5ce
@bacek bacek Skeleton for LLVM bindings df587e8
@bacek bacek Move global functions loading into 256de9b
@bacek bacek Made test to looks more like test. 553b719
@bacek bacek Add more functions. fbbcd36
@bacek bacek Add Builder 7103124
@bacek bacek Add "private" _get_ptr to fetch underlying pointer. f6de3cf
@bacek bacek Add more functions. 6549d5e
@bacek bacek Add more functions. ee1c890
@bacek bacek More functions! More! 1b19f32
@bacek bacek Add LLMV::Type 99d6e0e
@bacek bacek Add new classes to build. 2975723
@bacek bacek Include new generated files 91f96b3
@bacek bacek Add LLVM::Module.add_function a4d354f
@bacek bacek Add LLVM::Function for real 2dfa209
@bacek bacek Add more functions. e3590a2
@bacek bacek Add test for apeend_basic_block. 8327c58
@bacek bacek Add LLVM::BasicBlock b6dd22a
@bacek bacek Add LLVM::Constant 0bfed50
@bacek bacek Add more guts to Builder. 5263594
@bacek bacek Add few actual builders to Builder. 021c96a
@bacek bacek Add tests and fix Builder creating 0c4cffb
@bacek bacek Add BasicBlock._get_ptr to use within Builder. 8cb47cd
@bacek bacek More tests 0dda50f
@bacek bacek Fix signature 28455e9
@bacek bacek Implement Also factor out common functionality to covert
@list to LLVM calling conventions.
@bacek bacek Implement set_linkage 335a610
@bacek bacek Add more types b1dd71f
@bacek bacek Create function with args in test a6b1452
@rurban rurban Skeleton for LLVMEngine wrapper
Fixed src/dynpmc/llvm_engine.pmc rebase conflict
@bacek bacek Fix stupid typo 261b590
@bacek bacek Add Constant.integer 3a36d0a
@bacek bacek Pass return type to add_function 731b7b5
@bacek bacek Add 'test' for invoking of LLVM generated function 57767a3
@bacek bacek "Import" all LLVM C API functions. b7f182e
@bacek bacek Add LLVM::Opaque eca1968
@bacek bacek Inherit Module from Opaque 674286e
@bacek bacek Migrate Function and BasicBlock to be Opaque c2a446f
@bacek bacek Provide default .BUILD and fix Builder to use unwrap 7f3e19b
@bacek bacek Migrate Builder to Opaque. Add .global_string method 626f197
@bacek bacek Add test for actual call. 14edb82
@bacek bacek Remove debug output. 6b952c5
@bacek bacek Add LLVM::Opaque.get_pointer VTABLE to avoid unwrapping objects const…
@bacek bacek Remove a lot of .unwrap 76a1e5d
@bacek bacek Add Builder.{alloca|load|store} 28baab5
@bacek bacek Add Module.add_type_name 6bce60d
@bacek bacek Add Type.struct 2a608f2
@bacek bacek Allow different wide int constants 01f7070
@bacek bacek Add GEP building 727b550
@bacek bacek Remove useless .wrap calls 5596d11
@bacek bacek Drop prefix LLVM from LLVM::F keys. We don't have to repeat it many t…
@bacek bacek Fix function signatures. 5245140
@bacek bacek Add more methods to Module. 5fd84b4
@bacek bacek Rename LLVM::convert_to_struct into to_array. For aesthetic reasons
@bacek bacek Add stub for LLVM::Context 5f2093f
@bacek bacek Add some guts to LLVM::Context ba7c8bb
@bacek bacek Add more stuff to LLVM::Context 3ff23a7
@bacek bacek Add more Types. fd192ac
@bacek bacek Add LLVM to default build 5d8148f
@bacek bacek Don't generate name in Function.append_basic_block. Expose Function.e…
@bacek bacek Ugly hack of parsing PCC signatures to support Object.get_pointer 1196f9a
@bacek bacek Remove Builder.BUILD. We can call it .new actually 869895f
@bacek bacek Remove Module.BUILD 7dd6945
@bacek bacek Change Context creation. fde3c59
@bacek bacek Add fe20d21
@bacek bacek Add stub for I do need way to call here ae44846
@bacek bacek Use .create for creating of LLVM::* objects. I couldn't find way of p…
…roper .new overriding without LLVM segfaults
@bacek bacek Add LLVM::Value stub 0f96898
@bacek bacek Add ed5ee1c
@bacek bacek Add fetching params from Function bbcc23e
@bacek bacek Add Opaque.defined for test simplification. b5b7565
@bacek bacek End-to-end testing to pass param from parrot into JITted functio, use…
… it and return back
@bacek bacek Wrap output of generated function for aesthetic reasons. 030ce27
@bacek bacek Add a lot more function declarations. 96387a6
@bacek bacek Add more LLVM function declarations. b97aba7
@bacek bacek Add test for optimization of generated function. b5d8a22
@bacek bacek Made LLVM::Type a class. We'll need it for resolving self-reference t…
@bacek bacek Add Module.verify 9cf6a5b
@bacek bacek Fix Module.verified 20c7fc9
@bacek bacek Add Builder.global_string_ptr and use it in test instead of .global_s…
@bacek bacek Verify more in test c7bfa16
@bacek bacek Add skeleton of PassManager a1abe1c
@bacek bacek Encapsulate PassManager 1c3533e
@bacek bacek Rename LLVM_Engine.create into create_call to avoid clash with other …
@bacek bacek Add 'checked call' and use it instead of direct access of %LLVM::F 49eb2b8
@bacek bacek Inherit Function from Value. 33e2d3c
@bacek bacek Reorder .include to get most generic classes first. 2cb6e5b
@bacek bacek Create LLVM::Value from each Builder method 2171635
@bacek bacek Generate for all math ops on load 719ade1
@bacek bacek Rearrange methods slightly and remove "stubs" for arithmetic ops. 4681a4c
@bacek bacek Wrap Type constructors to create LLMV::Type objects. 0c88385
@bacek bacek Generate Builder.cast methods e8ad778
@bacek bacek Rename arguments and fix types. ceda436
@bacek bacek Add Builder.icmp|fcmp ce1e53e
@bacek bacek Generate "enum" class with bunch of methods on load.
Currently for simple ValidateAction. Will be extended in next commits.
@bacek bacek Use 'enum' 3d9a33a
@bacek bacek Factor out common enum generator d9d6426
@bacek bacek Generate real predicate enum b7668f4
@bacek bacek Stylish changes 9bf5a6b
@bacek bacek Add more functions to Value. 4ebee51
@bacek bacek Porperly wrap LLVM::Context d350f4f
@bacek bacek Porperly wrap LLVM::Type in Context type methods. 2e4dcb3
@bacek bacek Add simple conditionals c21b928
@bacek bacek [codetest] Remove trailing space and useless comment 325bcb5
@bacek bacek Fix Builder 2e3536e
@bacek bacek Add float types 994180c
@bacek bacek Start building "proper" test-suite for LLVM bindings.
Create standalone 01-opaque.t
@bacek bacek Add initial LLVM::Type tests bf54603
@bacek bacek Wrap undef in Builder.DESTROY 5aa0d1b
@bacek bacek Initial test for LLVM::Builder. 7733529
@bacek bacek Add test for pointer types creation. ff40238
@bacek bacek Add sortcut for creating c strings type ebe3f87
@bacek bacek Wrap constants into Value and add test for it 805a410
@bacek bacek Add test for LLVM::Value 4c0417d
@bacek bacek Remove copy-pasted comment 09c6c44
@bacek bacek Rename old test ac80bd0
@bacek bacek Add test for Module. f59aadc
@bacek bacek Add Type.refine_to for gnerating recursive types (e.g. struct) 730657f
@bacek bacek Let's use good bits from statically typed languages.
1. Add types to Builder method arguments.
2. Also change $name parameter to be named and optional for consistency.
@bacek bacek Add more tests aa9aae5
@bacek bacek Add few utility methods for workaround of P6object freeze/thaw bug 263cc30
@bacek bacek Deep clone of Ops variant.
It will be used for generating of dump files with parsed Ops.
@bacek bacek Force boolify "experimental" flag. 1bf4ef2
@bacek bacek Clone scalars in process_recursive. 0463b0a
@bacek bacek Simplify Op.arg_type 7bf4c9d
@bacek bacek Rewrite test using "is" instead of "ok". 532d553
@bacek bacek Skip undefined elements in process_recursive. Fix last broken test in…
… t/compiler/opsc
@bacek bacek Fix stupid bug with process_recursive. dfe41e3
@bacek bacek Add another workaround for thawed Class/Namespaces cf21f48
@bacek bacek Made :core optional. Otherwise we can thaw Ops::File. 82eb3aa
@bacek bacek Few minor bugfixes. 4ce7c3d
@bacek bacek Implement dumping of parsed ops b5c0bbd
@bacek bacek Revert "Simplify Op.arg_type". It was really bad idea.
This reverts commit 1315017.
@bacek bacek Inherit BasicBlock from Value to access .name b09df88
@leto leto Add the next method to LLVM::BasicBlock b5c3223
@bacek bacek Fix BasicBlock. dukeleto-- for committing non-compilable stuff. 6a707ad
@bacek bacek Add simple skeleton test for BasicBlock. 05ea9a9
@bacek bacek Add LLVM::Opaque.ACCEPTS implementation. b6824ca
@bacek bacek Add test for aad173e
@bacek bacek Fix test. 768216e
@bacek bacek Implement Builder.get_insert_block f3ee74e
luben karavelov more test for generating constants 796e511
luben karavelov Flesh out LLVM::Constant a96f28a
@bacek bacek Use bit of static typing in LLVM bindings. 778e930
@bacek bacek Add shortcuts to create few Parrot types. 5895eea
@bacek bacek Add LLVM::BasicBlock.insert_before(); f4d2985
@bacek bacek Return self from for simplify chained calls. 264a21d
@bacek bacek Improve Type::PMC slightly.
LLVM doesn't like pointer(void). It should be replaced with pointer(int8()). Which makes sanse but still quite surprise.
@bacek bacek Fix typo 17e5d5d
@bacek bacek Add Type::function for create FunctionType fc86aa1
@bacek bacek Switch Module to use Type::function 2692292
@bacek bacek Fix bug with
We should actually return result of LLVM call.
@bacek bacek Add BasicBlock.prev 27522dd
@luben luben Add more Builder methods cb0c5a9
@luben luben * Add list of all available optimizer passes
* some stylistic fixes in builder
@luben luben Some more BasicBlock methods fb434e0
@luben luben fix copy/paste error 6871d17
@bacek bacek [cage] Trailing whitespace. 773e44d
@luben luben serialize and deserialize LLVM bitcode to files 4ae1d5c
@bacek bacek Implement function fetching and navigation c26649e
@bacek bacek Split LLVM_Engine.class_init function for initalize LLVM once only. A…
…dd empty .init. Fix memory leak in .load_module.
@bacek bacek Fix loading of bitcode. 989a620
@bacek bacek Use empty LLVM_Engine to load bitcode 9bb4782
@bacek bacek Rework bitcode loading slightly. 14f8203
@bacek bacek Fix testing loaded module.
Fe have to find proper function from it to call.
@bacek bacek Create complex parrot's types once only. aa1e318
@bacek bacek Add * variants of parrot types. 5ec4fdc
@bacek bacek Add Function.return_type. 5d6703f
@bacek bacek Add Module type introspection. 6bfba36
@bacek bacek Add Module.find_function 5eae35f
@jkeenan jkeenan Add generated files to .gitignore and MANIFEST.generated. Re-run mk_m…
… Add files as needed to FLUID_FILES_2 target in config/gen/makefiles/
@jkeenan jkeenan Overhaul auto::llvm to require minimum version of LLVM. Modify steps …
…test file accordingly.
@jkeenan jkeenan Use 'llvm-config' to simplify probe for LLVM; adjust tests accordingly. e2e1212
@jkeenan jkeenan Refactor code into internal method to make more execution paths testa…
…ble. Then test them.
@luben luben llvm config step:
 * add --llvm-config option to
 * add proper libs an cflags to the build system
@luben luben link libLLVM only to, not to libparrot 008608f
@luben luben load discovered in 843a3a8
@bacek bacek Function.first_basic_block and .last_basic_block c381df1
@jkeenan jkeenan Use Parrot::Configure::Utils::capture_output() to run 'llvm-config --…
…bindir'. Will work more cleanly than backticks on machines with no LLVM whatsoever.
@bacek bacek Mass add 'multi' to enforce check of types by PCC. Also remove some '…
…Str' and 'Int' because they are not supported by nqp/parrot
@bacek bacek Wrap result into LLVM::Value 3642c2b
@bacek bacek Merge Builder.insert_into_builder and _with_name versions into one. 47411b9
@bacek bacek Made to always be named parameter for consistency 069ba8c
@bacek bacek Remove useless Str 05c5be9
@bacek bacek Fix LLVM::Constant signatures. 9a0626f
@bacek bacek Fix merge error. bd0697d
@bacek bacek Use llvm_config from parameters instead of hardcoded "ll…
@bacek bacek Use "multi" for auto-generated methods as well. eb21088
@bacek bacek [llvm] Rework generation of "enum classes".
$foo++ doesn't increase number somehow. Use explicit +1.
@bacek bacek [llvm] Fix creating of LLVM::Values d053a4f
@bacek bacek [llvm] Fix Build?Cmp invokation 2c68d0a
@bacek bacek [llvm] Fix generating of bitwise ops f889647
@bacek bacek [llvm] Add BasicBlock.first/.last_instruction 8295186
@bacek bacek [llvm] Bind semi-generated LLVMIsAFoo functions. 529a8c6
@bacek bacek [llvm] Bind LLVM::Value.isAFoo methods.
TODO: rename them to more perlish style similar as in LLVM::Builder.
@luben luben make more perlish method names bccb333
@jkeenan jkeenan Same commit as in master. cb795e3
@bacek bacek Rename few generated methods for consistency with Builder. 4827ad8
@bacek bacek Revert "link libLLVM only to, not to libparrot"
This reverts commit b704d9e.
@bacek bacek [llvm] Add Type.opcode_t 4b30343
@bacek bacek [llvm] Add stubs for handling e8b60ad
@bacek bacek Add CXX compilation rules. 34851f7
@bacek bacek Add llvm_extra.cpp with supplimentary LLVM functions. d8f5c72
@bacek bacek Bind and use new dumping functions 36389e4
@bacek bacek Add usage/testing of new LLVM::Module.dump. f3c409b
@bacek bacek Add more LLVM::Module.dump tests. Because we can! 8d716aa
@bacek bacek Use template specialization for dumping modules. Also rename 'do_prin…
…t' to 'dump_to_string'
@bacek bacek Specialize only related part of dumping of LLVM::Stuff. d849732
@luben luben build llvm_engine dynPMC only if we have libLLVM 2ee457e
@luben luben resolve conflict in opsc c59b533
@rurban rurban [GH #853] Enable proper llvm probes
enable compilation probes
add the --llvm-config option and handle it
print the detected version (silent 1 as fallback)
detect static llvm libs
handle the debian testing default case (appended -version)
handle the llvm 3.2 new --version format
set proper llvm_{c,cxx,ld}flags and llvm_libs config keys for opsc_llvm integration
try given cc for a llvm-gcc or clang compatible compiler
check the output of -emit-llvm by file magic inspection
  ld: warning: cannot find entry symbol 'mit-llvm'
@rurban rurban Merge branch 'rurban/llvm-gh853' of into rur…

Fixed conflicts: (in favor of rurban/llvm-gh853)
@rurban rurban Enable LLVM compilation for dynpmc/llvm_engine and llvm_extra
Set the proper llvm c and link flags
Commits on Oct 03, 2012
@rurban rurban [GH #853] Less failing llvm-gcc noise c4ac9e8
@rurban rurban Merge remote-tracking branch 'origin/rurban/llvm-gh853' into rurban/o…
Commits on Oct 05, 2012
@rurban rurban [codingstd] Add coda to dynpmc/llvm_engine 63176bb
@rurban rurban Merge branch 'rurban/ops2c_llvm' of into rur…