Initial support for generating (DWARF) debug info.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Mon, 17 Aug 2015 08:53:26 +0100
changeset 33 feabf14b6c1d
parent 32 1378060fadd6
child 34 787c180f847f
Initial support for generating (DWARF) debug info. The current API is really horrible and clumsy, but it's more or less 1-to-1 mapping to LLVM API. LLVMExamples>>example7_factorial_with_debug_info shows how to use it. The debug info API (at the Smalltalk level) will be refactored to provide easier-to-use interface.
LLVM.st
LLVMCEXT.st
LLVMDIBuilder.st
LLVMDWARFEncoding.st
LLVMDWARFLamguage.st
LLVMExamples.st
LLVMExecutionEngine.st
LLVMFunction.st
LLVMGenericValue.st
LLVMIRBuilder.st
LLVMMCJITCompilerOptions.st
LLVMMetadata.st
LLVMModule.st
LLVMModuleFlagBehavior.st
LLVMObject.st
LLVMOpcode.st
LLVMStXMethod.st
LLVMType.st
LLVMTypeDouble.st
LLVMTypeFP128.st
LLVMTypeFloat.st
LLVMTypeHalt.st
LLVMTypeInteger.st
LLVMTypePPC_FP128.st
LLVMTypeScalar.st
LLVMTypeX86_FP80.st
LLVMTypeX86_MMX.st
LLVMValue.st
Make.proto
Make.spec
abbrev.stc
bc.mak
extensions.st
jv_llvm_s.st
libInit.cc
tests/LLVMTypeTests.st
--- a/LLVM.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVM.st	Mon Aug 17 08:53:26 2015 +0100
@@ -73,7 +73,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMABIAlignmentOfType" ( LLVMTargetData LLVMType ) >
+    <cdecl: uint "LLVMABIAlignmentOfType" ( LLVMTargetData LLVMType ) >
     self primitiveFailed
 !
 
@@ -83,7 +83,7 @@
      @return: long long unsigned int
     "
 
-    <cdecl: uint64 "LLVMABISizeOfType" ( LLVMTargetData LLVMType ) >
+    <cdecl: longlong "LLVMABISizeOfType" ( LLVMTargetData LLVMType ) >
     self primitiveFailed
 !
 
@@ -147,10 +147,8 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMFunction "LLVMAddFunction" ( LLVMModule charPointer LLVMType ) >
-    self primitiveFailed
-
-    "Modified: / 11-07-2015 / 07:43:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    <cdecl: LLVMValue "LLVMAddFunction" ( LLVMModule charPointer LLVMType ) >
+    self primitiveFailed
 !
 
 AddFunctionAttr: Fn _: PA 
@@ -182,7 +180,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMAddGlobalInAddressSpace" ( LLVMModule LLVMType charPointer uint32 ) >
+    <cdecl: LLVMValue "LLVMAddGlobalInAddressSpace" ( LLVMModule LLVMType charPointer uint ) >
     self primitiveFailed
 !
 
@@ -205,7 +203,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMAddIncoming" ( LLVMValue pointer pointer uint32 ) >
+    <cdecl: void "LLVMAddIncoming" ( LLVMValue pointer pointer uint ) >
     self primitiveFailed
 !
 
@@ -216,7 +214,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMAddInstrAttribute" ( LLVMValue uint32 int32 ) >
+    <cdecl: void "LLVMAddInstrAttribute" ( LLVMValue uint int32 ) >
     self primitiveFailed
 !
 
@@ -328,7 +326,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMArrayType" ( LLVMType uint32 ) >
+    <cdecl: LLVMType "LLVMArrayType" ( LLVMType uint ) >
     self primitiveFailed
 !
 
@@ -394,7 +392,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildAggregateRet" ( LLVMIRBuilder pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMBuildAggregateRet" ( LLVMIRBuilder pointer uint ) >
     self primitiveFailed
 !
 
@@ -455,7 +453,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildAtomicRMW" ( LLVMIRBuilder int32 LLVMValue LLVMValue int32 int32 ) >
+    <cdecl: LLVMValue "LLVMBuildAtomicRMW" ( LLVMIRBuilder int32 LLVMValue LLVMValue int32 bool ) >
     self primitiveFailed
 !
 
@@ -503,7 +501,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildCall" ( LLVMIRBuilder LLVMValue pointer uint32 charPointer ) >
+    <cdecl: LLVMValue "LLVMBuildCall" ( LLVMIRBuilder LLVMValue pointer uint charPointer ) >
     self primitiveFailed
 !
 
@@ -564,7 +562,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildExtractValue" ( LLVMIRBuilder LLVMValue uint32 charPointer ) >
+    <cdecl: LLVMValue "LLVMBuildExtractValue" ( LLVMIRBuilder LLVMValue uint charPointer ) >
     self primitiveFailed
 !
 
@@ -720,7 +718,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildFence" ( LLVMIRBuilder int32 int32 charPointer ) >
+    <cdecl: LLVMValue "LLVMBuildFence" ( LLVMIRBuilder int32 bool charPointer ) >
     self primitiveFailed
 !
 
@@ -743,7 +741,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildGEP" ( LLVMIRBuilder LLVMValue pointer uint32 charPointer ) >
+    <cdecl: LLVMValue "LLVMBuildGEP" ( LLVMIRBuilder LLVMValue pointer uint charPointer ) >
     self primitiveFailed
 !
 
@@ -791,7 +789,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildInBoundsGEP" ( LLVMIRBuilder LLVMValue pointer uint32 charPointer ) >
+    <cdecl: LLVMValue "LLVMBuildInBoundsGEP" ( LLVMIRBuilder LLVMValue pointer uint charPointer ) >
     self primitiveFailed
 !
 
@@ -802,7 +800,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildIndirectBr" ( LLVMIRBuilder LLVMValue uint32 ) >
+    <cdecl: LLVMValue "LLVMBuildIndirectBr" ( LLVMIRBuilder LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -828,7 +826,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildInsertValue" ( LLVMIRBuilder LLVMValue LLVMValue uint32 charPointer ) >
+    <cdecl: LLVMValue "LLVMBuildInsertValue" ( LLVMIRBuilder LLVMValue LLVMValue uint charPointer ) >
     self primitiveFailed
 !
 
@@ -867,7 +865,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildInvoke" ( LLVMIRBuilder LLVMValue pointer uint32 LLVMBasicBlock LLVMBasicBlock charPointer ) >
+    <cdecl: LLVMValue "LLVMBuildInvoke" ( LLVMIRBuilder LLVMValue pointer uint LLVMBasicBlock LLVMBasicBlock charPointer ) >
     self primitiveFailed
 !
 
@@ -917,6 +915,19 @@
     self primitiveFailed
 !
 
+BuildLandingPad: B _: Ty _: PersFn _: NumClauses _: Name 
+    "@param B: LLVMBuilderRef
+     @param Ty: LLVMTypeRef
+     @param PersFn: LLVMValueRef
+     @param NumClauses: unsigned int
+     @param Name: *const char
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMBuildLandingPad" ( LLVMIRBuilder LLVMType LLVMValue uint charPointer ) >
+    self primitiveFailed
+!
+
 BuildLoad: arg1 _: PointerVal _: Name 
     "@param arg1: LLVMBuilderRef
      @param PointerVal: LLVMValueRef
@@ -1272,7 +1283,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildStructGEP" ( LLVMIRBuilder LLVMValue uint32 charPointer ) >
+    <cdecl: LLVMValue "LLVMBuildStructGEP" ( LLVMIRBuilder LLVMValue uint charPointer ) >
     self primitiveFailed
 !
 
@@ -1296,7 +1307,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMBuildSwitch" ( LLVMIRBuilder LLVMValue LLVMBasicBlock uint32 ) >
+    <cdecl: LLVMValue "LLVMBuildSwitch" ( LLVMIRBuilder LLVMValue LLVMBasicBlock uint ) >
     self primitiveFailed
 !
 
@@ -1432,7 +1443,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMCallFrameAlignmentOfType" ( LLVMTargetData LLVMType ) >
+    <cdecl: uint "LLVMCallFrameAlignmentOfType" ( LLVMTargetData LLVMType ) >
     self primitiveFailed
 !
 
@@ -1510,7 +1521,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstArray" ( LLVMType pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMConstArray" ( LLVMType pointer uint ) >
     self primitiveFailed
 !
 
@@ -1551,7 +1562,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstExtractValue" ( LLVMValue int32Pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMConstExtractValue" ( LLVMValue intPointer uint ) >
     self primitiveFailed
 !
 
@@ -1682,7 +1693,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstGEP" ( LLVMValue pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMConstGEP" ( LLVMValue pointer uint ) >
     self primitiveFailed
 !
 
@@ -1704,7 +1715,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstInBoundsGEP" ( LLVMValue pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMConstInBoundsGEP" ( LLVMValue pointer uint ) >
     self primitiveFailed
 !
 
@@ -1717,7 +1728,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstInlineAsm" ( LLVMType charPointer charPointer int32 int32 ) >
+    <cdecl: LLVMValue "LLVMConstInlineAsm" ( LLVMType charPointer charPointer bool bool ) >
     self primitiveFailed
 !
 
@@ -1740,7 +1751,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstInsertValue" ( LLVMValue LLVMValue int32Pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMConstInsertValue" ( LLVMValue LLVMValue intPointer uint ) >
     self primitiveFailed
 !
 
@@ -1751,10 +1762,8 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstInt" ( LLVMType uint64 int32 ) >
-    self primitiveFailed
-
-    "Modified: / 03-08-2015 / 17:12:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    <cdecl: LLVMValue "LLVMConstInt" ( LLVMType longlong bool ) >
+    self primitiveFailed
 !
 
 ConstIntCast: ConstantVal _: ToType _: isSigned 
@@ -1764,7 +1773,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstIntCast" ( LLVMValue LLVMType int32 ) >
+    <cdecl: LLVMValue "LLVMConstIntCast" ( LLVMValue LLVMType bool ) >
     self primitiveFailed
 !
 
@@ -1773,7 +1782,7 @@
      @return: long long int
     "
 
-    <cdecl: uint64 "LLVMConstIntGetSExtValue" ( LLVMValue ) >
+    <cdecl: longlong "LLVMConstIntGetSExtValue" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -1782,7 +1791,7 @@
      @return: long long unsigned int
     "
 
-    <cdecl: uint64 "LLVMConstIntGetZExtValue" ( LLVMValue ) >
+    <cdecl: longlong "LLVMConstIntGetZExtValue" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -1793,7 +1802,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstIntOfArbitraryPrecision" ( LLVMType uint32 pointer ) >
+    <cdecl: LLVMValue "LLVMConstIntOfArbitraryPrecision" ( LLVMType uint pointer ) >
     self primitiveFailed
 !
 
@@ -1804,7 +1813,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstIntOfString" ( LLVMType charPointer uchar ) >
+    <cdecl: LLVMValue "LLVMConstIntOfString" ( LLVMType charPointer uint8 ) >
     self primitiveFailed
 !
 
@@ -1816,7 +1825,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstIntOfStringAndSize" ( LLVMType charPointer uint32 uchar ) >
+    <cdecl: LLVMValue "LLVMConstIntOfStringAndSize" ( LLVMType charPointer uint uint8 ) >
     self primitiveFailed
 !
 
@@ -1935,7 +1944,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstNamedStruct" ( LLVMType pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMConstNamedStruct" ( LLVMType pointer uint ) >
     self primitiveFailed
 !
 
@@ -2042,7 +2051,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstRealOfStringAndSize" ( LLVMType charPointer uint32 ) >
+    <cdecl: LLVMValue "LLVMConstRealOfStringAndSize" ( LLVMType charPointer uint ) >
     self primitiveFailed
 !
 
@@ -2135,7 +2144,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstString" ( charPointer uint32 int32 ) >
+    <cdecl: LLVMValue "LLVMConstString" ( charPointer uint bool ) >
     self primitiveFailed
 !
 
@@ -2147,7 +2156,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstStringInContext" ( LLVMContext charPointer uint32 int32 ) >
+    <cdecl: LLVMValue "LLVMConstStringInContext" ( LLVMContext charPointer uint bool ) >
     self primitiveFailed
 !
 
@@ -2158,7 +2167,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstStruct" ( pointer uint32 int32 ) >
+    <cdecl: LLVMValue "LLVMConstStruct" ( pointer uint bool ) >
     self primitiveFailed
 !
 
@@ -2170,7 +2179,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstStructInContext" ( LLVMContext pointer uint32 int32 ) >
+    <cdecl: LLVMValue "LLVMConstStructInContext" ( LLVMContext pointer uint bool ) >
     self primitiveFailed
 !
 
@@ -2240,7 +2249,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMConstVector" ( pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMConstVector" ( pointer uint ) >
     self primitiveFailed
 !
 
@@ -2298,7 +2307,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMContextSetDiagnosticHandler" ( LLVMContext int32Pointer voidPointer ) >
+    <cdecl: void "LLVMContextSetDiagnosticHandler" ( LLVMContext intPointer voidPointer ) >
     self primitiveFailed
 !
 
@@ -2309,7 +2318,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMContextSetYieldCallback" ( LLVMContext int32Pointer voidPointer ) >
+    <cdecl: void "LLVMContextSetYieldCallback" ( LLVMContext intPointer voidPointer ) >
     self primitiveFailed
 !
 
@@ -2327,7 +2336,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMCountBasicBlocks" ( LLVMValue ) >
+    <cdecl: uint "LLVMCountBasicBlocks" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -2336,7 +2345,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMCountIncoming" ( LLVMValue ) >
+    <cdecl: uint "LLVMCountIncoming" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -2345,7 +2354,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMCountParamTypes" ( LLVMType ) >
+    <cdecl: uint "LLVMCountParamTypes" ( LLVMType ) >
     self primitiveFailed
 !
 
@@ -2354,7 +2363,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMCountParams" ( LLVMValue ) >
+    <cdecl: uint "LLVMCountParams" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -2363,7 +2372,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMCountStructElementTypes" ( LLVMType ) >
+    <cdecl: uint "LLVMCountStructElementTypes" ( LLVMType ) >
     self primitiveFailed
 !
 
@@ -2391,7 +2400,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMCreateExecutionEngine" ( pointer LLVMModuleProvider pointer ) >
+    <cdecl: bool "LLVMCreateExecutionEngine" ( pointer LLVMModuleProvider pointer ) >
     self primitiveFailed
 !
 
@@ -2402,7 +2411,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMCreateExecutionEngineForModule" ( pointer LLVMModule pointer ) >
+    <cdecl: bool "LLVMCreateExecutionEngineForModule" ( pointer LLVMModule pointer ) >
     self primitiveFailed
 !
 
@@ -2441,7 +2450,7 @@
      @return: LLVMGenericValueRef
     "
 
-    <cdecl: LLVMGenericValue "LLVMCreateGenericValueOfInt" ( LLVMType uint64 int32 ) >
+    <cdecl: LLVMGenericValue "LLVMCreateGenericValueOfInt" ( LLVMType longlong bool ) >
     self primitiveFailed
 !
 
@@ -2461,7 +2470,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMCreateInterpreter" ( pointer LLVMModuleProvider pointer ) >
+    <cdecl: bool "LLVMCreateInterpreter" ( pointer LLVMModuleProvider pointer ) >
     self primitiveFailed
 !
 
@@ -2472,7 +2481,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMCreateInterpreterForModule" ( pointer LLVMModule pointer ) >
+    <cdecl: bool "LLVMCreateInterpreterForModule" ( pointer LLVMModule pointer ) >
     self primitiveFailed
 !
 
@@ -2484,7 +2493,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMCreateJITCompiler" ( pointer LLVMModuleProvider uint32 pointer ) >
+    <cdecl: bool "LLVMCreateJITCompiler" ( pointer LLVMModuleProvider uint pointer ) >
     self primitiveFailed
 !
 
@@ -2496,7 +2505,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMCreateJITCompilerForModule" ( pointer LLVMModule uint32 pointer ) >
+    <cdecl: bool "LLVMCreateJITCompilerForModule" ( pointer LLVMModule uint pointer ) >
     self primitiveFailed
 !
 
@@ -2509,7 +2518,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMCreateMCJITCompilerForModule" ( pointer LLVMModule LLVMMCJITCompilerOptions uint64 pointer ) >
+    <cdecl: bool "LLVMCreateMCJITCompilerForModule" ( pointer LLVMModule LLVMMCJITCompilerOptions long pointer ) >
     self primitiveFailed
 !
 
@@ -2520,7 +2529,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMCreateMemoryBufferWithContentsOfFile" ( charPointer pointer pointer ) >
+    <cdecl: bool "LLVMCreateMemoryBufferWithContentsOfFile" ( charPointer pointer pointer ) >
     self primitiveFailed
 !
 
@@ -2532,7 +2541,7 @@
      @return: LLVMMemoryBufferRef
     "
 
-    <cdecl: pointer "LLVMCreateMemoryBufferWithMemoryRange" ( charPointer uint64 charPointer int32 ) >
+    <cdecl: pointer "LLVMCreateMemoryBufferWithMemoryRange" ( charPointer long charPointer bool ) >
     self primitiveFailed
 !
 
@@ -2543,7 +2552,7 @@
      @return: LLVMMemoryBufferRef
     "
 
-    <cdecl: pointer "LLVMCreateMemoryBufferWithMemoryRangeCopy" ( charPointer uint64 charPointer ) >
+    <cdecl: pointer "LLVMCreateMemoryBufferWithMemoryRangeCopy" ( charPointer long charPointer ) >
     self primitiveFailed
 !
 
@@ -2553,7 +2562,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMCreateMemoryBufferWithSTDIN" ( pointer pointer ) >
+    <cdecl: bool "LLVMCreateMemoryBufferWithSTDIN" ( pointer pointer ) >
     self primitiveFailed
 !
 
@@ -2592,7 +2601,7 @@
      @return: LLVMMCJITMemoryManagerRef
     "
 
-    <cdecl: LLVMMCJITMemoryManager "LLVMCreateSimpleMCJITMemoryManager" ( voidPointer int32Pointer int32Pointer int32Pointer int32Pointer ) >
+    <cdecl: LLVMMCJITMemoryManager "LLVMCreateSimpleMCJITMemoryManager" ( voidPointer intPointer intPointer intPointer intPointer ) >
     self primitiveFailed
 !
 
@@ -2773,7 +2782,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMElementAtOffset" ( LLVMTargetData LLVMType uint64 ) >
+    <cdecl: uint "LLVMElementAtOffset" ( LLVMTargetData LLVMType longlong ) >
     self primitiveFailed
 !
 
@@ -2807,7 +2816,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMFinalizeFunctionPassManager" ( LLVMPassManager ) >
+    <cdecl: bool "LLVMFinalizeFunctionPassManager" ( LLVMPassManager ) >
     self primitiveFailed
 !
 
@@ -2818,7 +2827,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMFindFunction" ( LLVMExecutionEngine charPointer pointer ) >
+    <cdecl: bool "LLVMFindFunction" ( LLVMExecutionEngine charPointer pointer ) >
     self primitiveFailed
 !
 
@@ -2857,10 +2866,8 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMFunctionType" ( LLVMType pointer uint32 bool ) >
-    self primitiveFailed
-
-    "Modified: / 04-08-2015 / 19:28:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    <cdecl: LLVMType "LLVMFunctionType" ( LLVMType pointer uint bool ) >
+    self primitiveFailed
 !
 
 GenericValueIntWidth: GenValRef 
@@ -2868,7 +2875,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGenericValueIntWidth" ( LLVMGenericValue ) >
+    <cdecl: uint "LLVMGenericValueIntWidth" ( LLVMGenericValue ) >
     self primitiveFailed
 !
 
@@ -2888,7 +2895,7 @@
      @return: long long unsigned int
     "
 
-    <cdecl: uint64 "LLVMGenericValueToInt" ( LLVMGenericValue int32 ) >
+    <cdecl: longlong "LLVMGenericValueToInt" ( LLVMGenericValue bool ) >
     self primitiveFailed
 !
 
@@ -2906,7 +2913,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetAlignment" ( LLVMValue ) >
+    <cdecl: uint "LLVMGetAlignment" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -2915,7 +2922,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetArrayLength" ( LLVMType ) >
+    <cdecl: uint "LLVMGetArrayLength" ( LLVMType ) >
     self primitiveFailed
 !
 
@@ -2971,7 +2978,7 @@
      @return: size_t
     "
 
-    <cdecl: uint64 "LLVMGetBufferSize" ( pointer ) >
+    <cdecl: long "LLVMGetBufferSize" ( pointer ) >
     self primitiveFailed
 !
 
@@ -3053,7 +3060,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMGetElementAsConstant" ( LLVMValue uint32 ) >
+    <cdecl: LLVMValue "LLVMGetElementAsConstant" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -3162,10 +3169,8 @@
      @return: uint64_t
     "
 
-    <cdecl: int64 "LLVMGetFunctionAddress" ( LLVMExecutionEngine charPointer ) >
-    self primitiveFailed
-
-    "Modified: / 10-07-2015 / 21:50:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    <cdecl: uint64 "LLVMGetFunctionAddress" ( LLVMExecutionEngine charPointer ) >
+    self primitiveFailed
 !
 
 GetFunctionAttr: Fn 
@@ -3182,7 +3187,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetFunctionCallConv" ( LLVMValue ) >
+    <cdecl: uint "LLVMGetFunctionCallConv" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3245,7 +3250,7 @@
      @return: LLVMBasicBlockRef
     "
 
-    <cdecl: LLVMBasicBlock "LLVMGetIncomingBlock" ( LLVMValue uint32 ) >
+    <cdecl: LLVMBasicBlock "LLVMGetIncomingBlock" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -3255,7 +3260,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMGetIncomingValue" ( LLVMValue uint32 ) >
+    <cdecl: LLVMValue "LLVMGetIncomingValue" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -3282,7 +3287,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetInstructionCallConv" ( LLVMValue ) >
+    <cdecl: uint "LLVMGetInstructionCallConv" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3309,7 +3314,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetIntTypeWidth" ( LLVMType ) >
+    <cdecl: uint "LLVMGetIntTypeWidth" ( LLVMType ) >
     self primitiveFailed
 !
 
@@ -3318,7 +3323,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetIntrinsicID" ( LLVMValue ) >
+    <cdecl: uint "LLVMGetIntrinsicID" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3382,7 +3387,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetMDKindID" ( charPointer uint32 ) >
+    <cdecl: uint "LLVMGetMDKindID" ( charPointer uint ) >
     self primitiveFailed
 !
 
@@ -3393,7 +3398,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetMDKindIDInContext" ( LLVMContext charPointer uint32 ) >
+    <cdecl: uint "LLVMGetMDKindIDInContext" ( LLVMContext charPointer uint ) >
     self primitiveFailed
 !
 
@@ -3402,7 +3407,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetMDNodeNumOperands" ( LLVMValue ) >
+    <cdecl: uint "LLVMGetMDNodeNumOperands" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3422,7 +3427,7 @@
      @return: *const char
     "
 
-    <cdecl: charPointer "LLVMGetMDString" ( LLVMValue int32Pointer ) >
+    <cdecl: charPointer "LLVMGetMDString" ( LLVMValue intPointer ) >
     self primitiveFailed
 !
 
@@ -3432,7 +3437,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMGetMetadata" ( LLVMValue uint32 ) >
+    <cdecl: LLVMValue "LLVMGetMetadata" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -3471,7 +3476,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetNamedMetadataNumOperands" ( LLVMModule charPointer ) >
+    <cdecl: uint "LLVMGetNamedMetadataNumOperands" ( LLVMModule charPointer ) >
     self primitiveFailed
 !
 
@@ -3545,7 +3550,7 @@
      @return: int
     "
 
-    <cdecl: int32 "LLVMGetNumOperands" ( LLVMValue ) >
+    <cdecl: int "LLVMGetNumOperands" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3554,7 +3559,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetNumSuccessors" ( LLVMValue ) >
+    <cdecl: uint "LLVMGetNumSuccessors" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3564,7 +3569,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMGetOperand" ( LLVMValue uint32 ) >
+    <cdecl: LLVMValue "LLVMGetOperand" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -3574,7 +3579,16 @@
      @return: LLVMUseRef
     "
 
-    <cdecl: LLVMUse "LLVMGetOperandUse" ( LLVMValue uint32 ) >
+    <cdecl: LLVMUse "LLVMGetOperandUse" ( LLVMValue uint ) >
+    self primitiveFailed
+!
+
+GetOrdering: MemoryAccessInst 
+    "@param MemoryAccessInst: LLVMValueRef
+     @return: LLVMAtomicOrdering
+    "
+
+    <cdecl: int32 "LLVMGetOrdering" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3584,7 +3598,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMGetParam" ( LLVMValue uint32 ) >
+    <cdecl: LLVMValue "LLVMGetParam" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -3617,12 +3631,21 @@
     self primitiveFailed
 !
 
+GetPersonalityFn: Fn 
+    "@param Fn: LLVMValueRef
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMGetPersonalityFn" ( LLVMValue ) >
+    self primitiveFailed
+!
+
 GetPointerAddressSpace: PointerTy 
     "@param PointerTy: LLVMTypeRef
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetPointerAddressSpace" ( LLVMType ) >
+    <cdecl: uint "LLVMGetPointerAddressSpace" ( LLVMType ) >
     self primitiveFailed
 !
 
@@ -3724,7 +3747,7 @@
      @return: LLVMBasicBlockRef
     "
 
-    <cdecl: LLVMBasicBlock "LLVMGetSuccessor" ( LLVMValue uint32 ) >
+    <cdecl: LLVMBasicBlock "LLVMGetSuccessor" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -3824,7 +3847,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMGetVectorSize" ( LLVMType ) >
+    <cdecl: uint "LLVMGetVectorSize" ( LLVMType ) >
     self primitiveFailed
 !
 
@@ -3842,7 +3865,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMGetVolatile" ( LLVMValue ) >
+    <cdecl: bool "LLVMGetVolatile" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3868,7 +3891,7 @@
      @return: int
     "
 
-    <cdecl: int32 "LLVMHasMetadata" ( LLVMValue ) >
+    <cdecl: int "LLVMHasMetadata" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3877,7 +3900,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMHasUnnamedAddr" ( LLVMValue ) >
+    <cdecl: bool "LLVMHasUnnamedAddr" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -3943,7 +3966,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMInitializeFunctionPassManager" ( LLVMPassManager ) >
+    <cdecl: bool "LLVMInitializeFunctionPassManager" ( LLVMPassManager ) >
     self primitiveFailed
 !
 
@@ -3953,7 +3976,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMInitializeMCJITCompilerOptions" ( LLVMMCJITCompilerOptions uint64 ) >
+    <cdecl: void "LLVMInitializeMCJITCompilerOptions" ( LLVMMCJITCompilerOptions long ) >
     self primitiveFailed
 !
 
@@ -3961,7 +3984,7 @@
     "@return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMInitializeNativeAsmParser" ( ) >
+    <cdecl: bool "LLVMInitializeNativeAsmParser" ( ) >
     self primitiveFailed
 !
 
@@ -3969,7 +3992,7 @@
     "@return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMInitializeNativeAsmPrinter" ( ) >
+    <cdecl: bool "LLVMInitializeNativeAsmPrinter" ( ) >
     self primitiveFailed
 !
 
@@ -3977,7 +4000,7 @@
     "@return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMInitializeNativeDisassembler" ( ) >
+    <cdecl: bool "LLVMInitializeNativeDisassembler" ( ) >
     self primitiveFailed
 !
 
@@ -3985,7 +4008,7 @@
     "@return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMInitializeNativeTarget" ( ) >
+    <cdecl: bool "LLVMInitializeNativeTarget" ( ) >
     self primitiveFailed
 !
 
@@ -4076,7 +4099,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMInstallFatalErrorHandler" ( int32Pointer ) >
+    <cdecl: void "LLVMInstallFatalErrorHandler" ( intPointer ) >
     self primitiveFailed
 !
 
@@ -4198,7 +4221,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMIntPtrTypeForAS" ( LLVMTargetData uint32 ) >
+    <cdecl: LLVMType "LLVMIntPtrTypeForAS" ( LLVMTargetData uint ) >
     self primitiveFailed
 !
 
@@ -4209,7 +4232,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMIntPtrTypeForASInContext" ( LLVMContext LLVMTargetData uint32 ) >
+    <cdecl: LLVMType "LLVMIntPtrTypeForASInContext" ( LLVMContext LLVMTargetData uint ) >
     self primitiveFailed
 !
 
@@ -4228,7 +4251,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMIntType" ( uint32 ) >
+    <cdecl: LLVMType "LLVMIntType" ( uint ) >
     self primitiveFailed
 !
 
@@ -4238,7 +4261,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMIntTypeInContext" ( LLVMContext uint32 ) >
+    <cdecl: LLVMType "LLVMIntTypeInContext" ( LLVMContext uint ) >
     self primitiveFailed
 !
 
@@ -4332,6 +4355,51 @@
     self primitiveFailed
 !
 
+IsACatchEndPadInst: Val 
+    "@param Val: LLVMValueRef
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMIsACatchEndPadInst" ( LLVMValue ) >
+    self primitiveFailed
+!
+
+IsACatchPadInst: Val 
+    "@param Val: LLVMValueRef
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMIsACatchPadInst" ( LLVMValue ) >
+    self primitiveFailed
+!
+
+IsACatchReturnInst: Val 
+    "@param Val: LLVMValueRef
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMIsACatchReturnInst" ( LLVMValue ) >
+    self primitiveFailed
+!
+
+IsACleanupPadInst: Val 
+    "@param Val: LLVMValueRef
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMIsACleanupPadInst" ( LLVMValue ) >
+    self primitiveFailed
+!
+
+IsACleanupReturnInst: Val 
+    "@param Val: LLVMValueRef
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMIsACleanupReturnInst" ( LLVMValue ) >
+    self primitiveFailed
+!
+
 IsACmpInst: Val 
     "@param Val: LLVMValueRef
      @return: LLVMValueRef
@@ -4827,6 +4895,15 @@
     self primitiveFailed
 !
 
+IsATerminatePadInst: Val 
+    "@param Val: LLVMValueRef
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMIsATerminatePadInst" ( LLVMValue ) >
+    self primitiveFailed
+!
+
 IsATerminatorInst: Val 
     "@param Val: LLVMValueRef
      @return: LLVMValueRef
@@ -4913,7 +4990,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsConditional" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsConditional" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -4922,7 +4999,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsConstant" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsConstant" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -4931,7 +5008,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsConstantString" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsConstantString" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -4940,7 +5017,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsDeclaration" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsDeclaration" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -4949,7 +5026,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsExternallyInitialized" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsExternallyInitialized" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -4958,7 +5035,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsFunctionVarArg" ( LLVMType ) >
+    <cdecl: bool "LLVMIsFunctionVarArg" ( LLVMType ) >
     self primitiveFailed
 !
 
@@ -4967,7 +5044,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsGlobalConstant" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsGlobalConstant" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -4975,7 +5052,7 @@
     "@return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsMultithreaded" ( ) >
+    <cdecl: bool "LLVMIsMultithreaded" ( ) >
     self primitiveFailed
 !
 
@@ -4984,7 +5061,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsNull" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsNull" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -4995,8 +5072,6 @@
 
     <cdecl: bool "LLVMIsOpaqueStruct" ( LLVMType ) >
     self primitiveFailed
-
-    "Modified: / 14-08-2015 / 06:11:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 IsPackedStruct: StructTy 
@@ -5006,8 +5081,6 @@
 
     <cdecl: bool "LLVMIsPackedStruct" ( LLVMType ) >
     self primitiveFailed
-
-    "Modified: / 14-08-2015 / 06:11:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 IsTailCall: CallInst 
@@ -5015,7 +5088,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsTailCall" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsTailCall" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -5024,7 +5097,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsThreadLocal" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsThreadLocal" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -5033,7 +5106,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMIsUndef" ( LLVMValue ) >
+    <cdecl: bool "LLVMIsUndef" ( LLVMValue ) >
     self primitiveFailed
 !
 
@@ -5076,7 +5149,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMMDNode" ( pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMMDNode" ( pointer uint ) >
     self primitiveFailed
 !
 
@@ -5087,7 +5160,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMMDNodeInContext" ( LLVMContext pointer uint32 ) >
+    <cdecl: LLVMValue "LLVMMDNodeInContext" ( LLVMContext pointer uint ) >
     self primitiveFailed
 !
 
@@ -5097,7 +5170,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMMDString" ( charPointer uint32 ) >
+    <cdecl: LLVMValue "LLVMMDString" ( charPointer uint ) >
     self primitiveFailed
 !
 
@@ -5108,7 +5181,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMMDStringInContext" ( LLVMContext charPointer uint32 ) >
+    <cdecl: LLVMValue "LLVMMDStringInContext" ( LLVMContext charPointer uint ) >
     self primitiveFailed
 !
 
@@ -5119,8 +5192,6 @@
 
     <cdecl: LLVMModule "LLVMModuleCreateWithName" ( charPointer ) >
     self primitiveFailed
-
-    "Modified (format): / 07-07-2015 / 20:36:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 ModuleCreateWithNameInContext: ModuleID _: C 
@@ -5160,7 +5231,7 @@
      @return: long long unsigned int
     "
 
-    <cdecl: uint64 "LLVMOffsetOfElement" ( LLVMTargetData LLVMType uint32 ) >
+    <cdecl: longlong "LLVMOffsetOfElement" ( LLVMTargetData LLVMType uint ) >
     self primitiveFailed
 !
 
@@ -5186,7 +5257,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMPointerSize" ( LLVMTargetData ) >
+    <cdecl: uint "LLVMPointerSize" ( LLVMTargetData ) >
     self primitiveFailed
 !
 
@@ -5196,7 +5267,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMPointerSizeForAS" ( LLVMTargetData uint32 ) >
+    <cdecl: uint "LLVMPointerSizeForAS" ( LLVMTargetData uint ) >
     self primitiveFailed
 !
 
@@ -5206,7 +5277,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMPointerType" ( LLVMType uint32 ) >
+    <cdecl: LLVMType "LLVMPointerType" ( LLVMType uint ) >
     self primitiveFailed
 !
 
@@ -5247,7 +5318,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMPreferredAlignmentOfGlobal" ( LLVMTargetData LLVMValue ) >
+    <cdecl: uint "LLVMPreferredAlignmentOfGlobal" ( LLVMTargetData LLVMValue ) >
     self primitiveFailed
 !
 
@@ -5257,7 +5328,7 @@
      @return: unsigned int
     "
 
-    <cdecl: uint32 "LLVMPreferredAlignmentOfType" ( LLVMTargetData LLVMType ) >
+    <cdecl: uint "LLVMPreferredAlignmentOfType" ( LLVMTargetData LLVMType ) >
     self primitiveFailed
 !
 
@@ -5268,7 +5339,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMPrintModuleToFile" ( LLVMModule charPointer pointer ) >
+    <cdecl: bool "LLVMPrintModuleToFile" ( LLVMModule charPointer pointer ) >
     self primitiveFailed
 !
 
@@ -5280,7 +5351,7 @@
     <cdecl: pointer "LLVMPrintModuleToString" ( LLVMModule ) >
     self primitiveFailed
 
-    "Modified: / 10-07-2015 / 14:27:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-08-2015 / 13:06:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 PrintTypeToString: Val 
@@ -5288,10 +5359,8 @@
      @return: *char
     "
 
-    <cdecl: pointer "LLVMPrintTypeToString" ( LLVMType ) >
-    self primitiveFailed
-
-    "Modified: / 10-07-2015 / 14:27:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    <cdecl: charPointer "LLVMPrintTypeToString" ( LLVMType ) >
+    self primitiveFailed
 !
 
 PrintValueToString: Val 
@@ -5302,7 +5371,7 @@
     <cdecl: pointer "LLVMPrintValueToString" ( LLVMValue ) >
     self primitiveFailed
 
-    "Modified: / 10-07-2015 / 14:27:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 15-08-2015 / 07:00:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 RecompileAndRelinkFunction: EE _: Fn 
@@ -5351,7 +5420,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMRemoveInstrAttribute" ( LLVMValue uint32 int32 ) >
+    <cdecl: void "LLVMRemoveInstrAttribute" ( LLVMValue uint int32 ) >
     self primitiveFailed
 !
 
@@ -5363,7 +5432,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMRemoveModule" ( LLVMExecutionEngine LLVMModule pointer pointer ) >
+    <cdecl: bool "LLVMRemoveModule" ( LLVMExecutionEngine LLVMModule pointer pointer ) >
     self primitiveFailed
 !
 
@@ -5375,7 +5444,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMRemoveModuleProvider" ( LLVMExecutionEngine LLVMModuleProvider pointer pointer ) >
+    <cdecl: bool "LLVMRemoveModuleProvider" ( LLVMExecutionEngine LLVMModuleProvider pointer pointer ) >
     self primitiveFailed
 !
 
@@ -5405,7 +5474,7 @@
      @return: LLVMGenericValueRef
     "
 
-    <cdecl: LLVMGenericValue "LLVMRunFunction" ( LLVMExecutionEngine LLVMValue uint32 pointer ) >
+    <cdecl: LLVMGenericValue "LLVMRunFunction" ( LLVMExecutionEngine LLVMValue uint pointer ) >
     self primitiveFailed
 !
 
@@ -5418,7 +5487,7 @@
      @return: int
     "
 
-    <cdecl: int32 "LLVMRunFunctionAsMain" ( LLVMExecutionEngine LLVMValue uint32 pointer pointer ) >
+    <cdecl: int "LLVMRunFunctionAsMain" ( LLVMExecutionEngine LLVMValue uint pointer pointer ) >
     self primitiveFailed
 !
 
@@ -5428,7 +5497,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMRunFunctionPassManager" ( LLVMPassManager LLVMValue ) >
+    <cdecl: bool "LLVMRunFunctionPassManager" ( LLVMPassManager LLVMValue ) >
     self primitiveFailed
 !
 
@@ -5438,7 +5507,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMRunPassManager" ( LLVMPassManager LLVMModule ) >
+    <cdecl: bool "LLVMRunPassManager" ( LLVMPassManager LLVMModule ) >
     self primitiveFailed
 !
 
@@ -5466,7 +5535,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetAlignment" ( LLVMValue uint32 ) >
+    <cdecl: void "LLVMSetAlignment" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -5476,7 +5545,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetCleanup" ( LLVMValue int32 ) >
+    <cdecl: void "LLVMSetCleanup" ( LLVMValue bool ) >
     self primitiveFailed
 !
 
@@ -5526,7 +5595,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetExternallyInitialized" ( LLVMValue int32 ) >
+    <cdecl: void "LLVMSetExternallyInitialized" ( LLVMValue bool ) >
     self primitiveFailed
 !
 
@@ -5536,7 +5605,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetFunctionCallConv" ( LLVMValue uint32 ) >
+    <cdecl: void "LLVMSetFunctionCallConv" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -5556,7 +5625,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetGlobalConstant" ( LLVMValue int32 ) >
+    <cdecl: void "LLVMSetGlobalConstant" ( LLVMValue bool ) >
     self primitiveFailed
 !
 
@@ -5587,7 +5656,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetInstrParamAlignment" ( LLVMValue uint32 uint32 ) >
+    <cdecl: void "LLVMSetInstrParamAlignment" ( LLVMValue uint uint ) >
     self primitiveFailed
 !
 
@@ -5597,7 +5666,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetInstructionCallConv" ( LLVMValue uint32 ) >
+    <cdecl: void "LLVMSetInstructionCallConv" ( LLVMValue uint ) >
     self primitiveFailed
 !
 
@@ -5618,7 +5687,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetMetadata" ( LLVMValue uint32 LLVMValue ) >
+    <cdecl: void "LLVMSetMetadata" ( LLVMValue uint LLVMValue ) >
     self primitiveFailed
 !
 
@@ -5639,7 +5708,17 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetOperand" ( LLVMValue uint32 LLVMValue ) >
+    <cdecl: void "LLVMSetOperand" ( LLVMValue uint LLVMValue ) >
+    self primitiveFailed
+!
+
+SetOrdering: MemoryAccessInst _: Ordering 
+    "@param MemoryAccessInst: LLVMValueRef
+     @param Ordering: LLVMAtomicOrdering
+     @return: void
+    "
+
+    <cdecl: void "LLVMSetOrdering" ( LLVMValue int32 ) >
     self primitiveFailed
 !
 
@@ -5649,7 +5728,17 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetParamAlignment" ( LLVMValue uint32 ) >
+    <cdecl: void "LLVMSetParamAlignment" ( LLVMValue uint ) >
+    self primitiveFailed
+!
+
+SetPersonalityFn: Fn _: PersonalityFn 
+    "@param Fn: LLVMValueRef
+     @param PersonalityFn: LLVMValueRef
+     @return: void
+    "
+
+    <cdecl: void "LLVMSetPersonalityFn" ( LLVMValue LLVMValue ) >
     self primitiveFailed
 !
 
@@ -5670,7 +5759,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetSuccessor" ( LLVMValue uint32 LLVMBasicBlock ) >
+    <cdecl: void "LLVMSetSuccessor" ( LLVMValue uint LLVMBasicBlock ) >
     self primitiveFailed
 !
 
@@ -5680,7 +5769,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetTailCall" ( LLVMValue int32 ) >
+    <cdecl: void "LLVMSetTailCall" ( LLVMValue bool ) >
     self primitiveFailed
 !
 
@@ -5700,7 +5789,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetThreadLocal" ( LLVMValue int32 ) >
+    <cdecl: void "LLVMSetThreadLocal" ( LLVMValue bool ) >
     self primitiveFailed
 !
 
@@ -5720,7 +5809,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetUnnamedAddr" ( LLVMValue int32 ) >
+    <cdecl: void "LLVMSetUnnamedAddr" ( LLVMValue bool ) >
     self primitiveFailed
 !
 
@@ -5750,7 +5839,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMSetVolatile" ( LLVMValue int32 ) >
+    <cdecl: void "LLVMSetVolatile" ( LLVMValue bool ) >
     self primitiveFailed
 !
 
@@ -5777,7 +5866,7 @@
      @return: long long unsigned int
     "
 
-    <cdecl: uint64 "LLVMSizeOfTypeInBits" ( LLVMTargetData LLVMType ) >
+    <cdecl: longlong "LLVMSizeOfTypeInBits" ( LLVMTargetData LLVMType ) >
     self primitiveFailed
 !
 
@@ -5785,7 +5874,7 @@
     "@return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMStartMultithreaded" ( ) >
+    <cdecl: bool "LLVMStartMultithreaded" ( ) >
     self primitiveFailed
 !
 
@@ -5803,7 +5892,7 @@
      @return: long long unsigned int
     "
 
-    <cdecl: uint64 "LLVMStoreSizeOfType" ( LLVMTargetData LLVMType ) >
+    <cdecl: longlong "LLVMStoreSizeOfType" ( LLVMTargetData LLVMType ) >
     self primitiveFailed
 !
 
@@ -5823,7 +5912,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMStructGetTypeAtIndex" ( LLVMType uint32 ) >
+    <cdecl: LLVMType "LLVMStructGetTypeAtIndex" ( LLVMType uint ) >
     self primitiveFailed
 !
 
@@ -5835,7 +5924,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMStructSetBody" ( LLVMType pointer uint32 int32 ) >
+    <cdecl: void "LLVMStructSetBody" ( LLVMType pointer uint bool ) >
     self primitiveFailed
 !
 
@@ -5846,7 +5935,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMStructType" ( pointer uint32 int32 ) >
+    <cdecl: LLVMType "LLVMStructType" ( pointer uint bool ) >
     self primitiveFailed
 !
 
@@ -5858,7 +5947,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMStructTypeInContext" ( LLVMContext pointer uint32 int32 ) >
+    <cdecl: LLVMType "LLVMStructTypeInContext" ( LLVMContext pointer uint bool ) >
     self primitiveFailed
 !
 
@@ -5867,7 +5956,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMTypeIsSized" ( LLVMType ) >
+    <cdecl: bool "LLVMTypeIsSized" ( LLVMType ) >
     self primitiveFailed
 !
 
@@ -5896,8 +5985,6 @@
 
     <cdecl: bool "LLVMValueIsBasicBlock" ( LLVMValue ) >
     self primitiveFailed
-
-    "Modified: / 08-08-2015 / 04:17:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 VectorType: ElementType _: ElementCount 
@@ -5906,7 +5993,7 @@
      @return: LLVMTypeRef
     "
 
-    <cdecl: LLVMType "LLVMVectorType" ( LLVMType uint32 ) >
+    <cdecl: LLVMType "LLVMVectorType" ( LLVMType uint ) >
     self primitiveFailed
 !
 
@@ -5916,7 +6003,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMVerifyFunction" ( LLVMValue int32 ) >
+    <cdecl: bool "LLVMVerifyFunction" ( LLVMValue int32 ) >
     self primitiveFailed
 !
 
@@ -5927,7 +6014,7 @@
      @return: LLVMBool
     "
 
-    <cdecl: int32 "LLVMVerifyModule" ( LLVMModule int32 pointer ) >
+    <cdecl: bool "LLVMVerifyModule" ( LLVMModule int32 pointer ) >
     self primitiveFailed
 !
 
@@ -5974,7 +6061,7 @@
      @return: int
     "
 
-    <cdecl: int32 "LLVMWriteBitcodeToFD" ( LLVMModule int32 int32 int32 ) >
+    <cdecl: int "LLVMWriteBitcodeToFD" ( LLVMModule int int int ) >
     self primitiveFailed
 !
 
@@ -5984,7 +6071,7 @@
      @return: int
     "
 
-    <cdecl: int32 "LLVMWriteBitcodeToFile" ( LLVMModule charPointer ) >
+    <cdecl: int "LLVMWriteBitcodeToFile" ( LLVMModule charPointer ) >
     self primitiveFailed
 !
 
@@ -5994,7 +6081,7 @@
      @return: int
     "
 
-    <cdecl: int32 "LLVMWriteBitcodeToFileHandle" ( LLVMModule int32 ) >
+    <cdecl: int "LLVMWriteBitcodeToFileHandle" ( LLVMModule int ) >
     self primitiveFailed
 !
 
--- a/LLVMCEXT.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMCEXT.st	Mon Aug 17 08:53:26 2015 +0100
@@ -95,7 +95,7 @@
      @return: void
     "
 
-    <cdecl: void "LLVMAddNamedMetadataOperand2" ( pointer charPointer LLVMMetadata ) >
+    <cdecl: void "LLVMAddNamedMetadataOperand2" ( LLVMModule charPointer LLVMMetadata ) >
     self primitiveFailed
 !
 
@@ -394,30 +394,41 @@
     self primitiveFailed
 !
 
-DIBuilderInsertDeclareAtEnd: D _: Storage _: VarInfo _: Expr _: Block 
+DIBuilderInsertDeclareAtEnd: D _: Storage _: VarInfo _: Expr _: Location _: Block 
     "@param D: LLVMDIBuilderRef
      @param Storage: LLVMValueRef
      @param VarInfo: LLVMMetadataRef
      @param Expr: LLVMMetadataRef
+     @param Location: LLVMMetadataRef
      @param Block: LLVMBasicBlockRef
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMDIBuilderInsertDeclareAtEnd" ( LLVMDIBuilder LLVMValue LLVMMetadata LLVMMetadata pointer ) >
+    <cdecl: LLVMValue "LLVMDIBuilderInsertDeclareAtEnd" ( LLVMDIBuilder LLVMValue LLVMMetadata LLVMMetadata LLVMMetadata pointer ) >
     self primitiveFailed
 !
 
-DIBuilderInsertValueAtEnd: D _: Val _: Offset _: VarInfo _: Expr _: Block 
+DIBuilderInsertValueAtEnd: D _: Val _: Offset _: VarInfo _: Expr _: Location _: Block 
     "@param D: LLVMDIBuilderRef
      @param Val: LLVMValueRef
      @param Offset: uint64_t
      @param VarInfo: LLVMMetadataRef
      @param Expr: LLVMMetadataRef
+     @param Location: LLVMMetadataRef
      @param Block: LLVMBasicBlockRef
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMDIBuilderInsertValueAtEnd" ( LLVMDIBuilder LLVMValue uint64 LLVMMetadata LLVMMetadata pointer ) >
+    <cdecl: LLVMValue "LLVMDIBuilderInsertValueAtEnd" ( LLVMDIBuilder LLVMValue uint64 LLVMMetadata LLVMMetadata LLVMMetadata pointer ) >
+    self primitiveFailed
+!
+
+GetCurrentDebugLocation2: Bref 
+    "@param Bref: LLVMBuilderRef
+     @return: LLVMMetadataRef
+    "
+
+    <cdecl: LLVMMetadata "LLVMGetCurrentDebugLocation2" ( pointer ) >
     self primitiveFailed
 !
 
@@ -438,7 +449,7 @@
      @return: LLVMValueRef
     "
 
-    <cdecl: LLVMValue "LLVMGetIntrinsicByName" ( pointer charPointer int pointer ) >
+    <cdecl: LLVMValue "LLVMGetIntrinsicByName" ( LLVMModule charPointer int pointer ) >
     self primitiveFailed
 !
 
@@ -464,6 +475,25 @@
     self primitiveFailed
 !
 
+MetadataAsValue: MD 
+    "@param MD: LLVMMetadataRef
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMMetadataAsValue" ( LLVMMetadata ) >
+    self primitiveFailed
+!
+
+MetadataAsValueInContext: C _: MD 
+    "@param C: LLVMContextRef
+     @param MD: LLVMMetadataRef
+     @return: LLVMValueRef
+    "
+
+    <cdecl: LLVMValue "LLVMMetadataAsValueInContext" ( LLVMContext LLVMMetadata ) >
+    self primitiveFailed
+!
+
 MetadataReplaceAllUsesWith: MD _: New 
     "@param MD: LLVMMetadataRef
      @param New: LLVMMetadataRef
@@ -474,12 +504,24 @@
     self primitiveFailed
 !
 
+ModuleAddModuleFlag: M _: Behavior _: Key _: Val 
+    "@param M: LLVMModuleRef
+     @param Behavior: LLVMModuleFlagBehavior
+     @param Key: *const char
+     @param Val: LLVMMetadataRef
+     @return: void
+    "
+
+    <cdecl: void "LLVMModuleAddModuleFlag" ( LLVMModule int32 charPointer LLVMMetadata ) >
+    self primitiveFailed
+!
+
 NewDIBuilder: m 
     "@param m: LLVMModuleRef
      @return: LLVMDIBuilderRef
     "
 
-    <cdecl: LLVMDIBuilder "LLVMNewDIBuilder" ( pointer ) >
+    <cdecl: LLVMDIBuilder "LLVMNewDIBuilder" ( LLVMModule ) >
     self primitiveFailed
 !
 
@@ -526,6 +568,33 @@
 
     <cdecl: LLVMMetadata "LLVMTemporaryMDNode" ( LLVMContext pointer uint ) >
     self primitiveFailed
+!
+
+ValueAsMetadata: Value 
+    "@param Value: LLVMValueRef
+     @return: LLVMMetadataRef
+    "
+
+    <cdecl: LLVMMetadata "LLVMValueAsMetadata" ( LLVMValue ) >
+    self primitiveFailed
+!
+
+ValueAsSInt64: Value 
+    "@param Value: LLVMValueRef
+     @return: int64_t
+    "
+
+    <cdecl: sint64 "LLVMValueAsSInt64" ( LLVMValue ) >
+    self primitiveFailed
+!
+
+ValueAsUInt64: Value 
+    "@param Value: LLVMValueRef
+     @return: uint64_t
+    "
+
+    <cdecl: uint64 "LLVMValueAsUInt64" ( LLVMValue ) >
+    self primitiveFailed
 ! !
 
 !LLVMCEXT class methodsFor:'documentation'!
--- a/LLVMDIBuilder.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMDIBuilder.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,10 +15,10 @@
 
 "{ NameSpace: Smalltalk }"
 
-ExternalAddress subclass:#LLVMDIBuilder
+LLVMDisposableObject subclass:#LLVMDIBuilder
 	instanceVariableNames:''
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'LLVMModuleFlagBehavior'
 	category:'LLVM-S-Core'
 !
 
@@ -40,3 +40,235 @@
 "
 ! !
 
+!LLVMDIBuilder class methodsFor:'instance creation'!
+
+newForModule: module
+    | dib |
+    dib := LLVMCEXT NewDIBuilder: module.
+    "/ Now we have to add module flags otherwise llc won't
+    "/ produce debug info.
+    "/ See http://lists.llvm.org/pipermail/llvm-dev/2014-October/077815.html
+    module addFlag: 'Dwarf Version' value: (LLVMConstant uint32: 4) asLLVMMetadata behavior: LLVMModuleFlagBehaviorWarning.  
+    module addFlag: 'Debug Info Version' value: (LLVMConstant uint32: 3) asLLVMMetadata behavior: LLVMModuleFlagBehaviorError.  
+
+    ^ dib
+
+    "Created: / 13-08-2015 / 06:35:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 15-08-2015 / 23:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVMDIBuilder methodsFor:'assertions'!
+
+assertIsStringOrFilename: value
+    <resource: #skipInDebuggersWalkback>
+    self assert: (value isString or:[ value isFilename ]) message: 'value is not a String or Filename'
+
+    "Created: / 13-08-2015 / 06:47:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVMDIBuilder methodsFor:'building'!
+
+createAutomaticVariable: name in: scope file: file line: line type: type
+    ^ self createAutomaticVariable: name in: scope file: file line: line type: type flags: 0
+
+    "Created: / 14-08-2015 / 13:58:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createAutomaticVariable: name in: scope file: file line: line type: type flags: flags
+    ^ self createAutomaticVariable: name in: scope file: file line: line type: type flags: flags preserve: true.
+
+    "Created: / 14-08-2015 / 13:57:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createAutomaticVariable: name in: scope file: file line: line type: type flags: flags preserve: preserve
+    "Creates a debg info metadata describing a local variable"
+
+    self assertIsString: name.
+    self assertIsMetadata: scope.  
+    self assertIsMetadata: file.
+    self assertIsIntegerUnsigned: line.
+    self assertIsMetadata: type.
+    self assertIsIntegerUnsigned: flags.
+    self assertIsBoolean: preserve.
+
+    ^ LLVMCEXT DIBuilderCreateAutoVariable: self _: scope _: name _: file _: line _: type _: (preserve ifTrue:[1] ifFalse:[0]) _: flags
+
+    "Created: / 14-08-2015 / 13:56:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createCompilationUnit: path language: lang producer: producer
+    ^ self createCompilationUnit: path language: lang producer: producer runtimeVersion: 0 optimized: false flags: ''
+
+    "Created: / 13-08-2015 / 06:58:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createCompilationUnit: path language: lang producer: producer runtimeVersion: rv optimized: isOptimized flags: compilerFlags
+    | filename |
+    self assertIsStringOrFilename: path.
+    self assertIsIntegerUnsigned: lang.
+    self assertIsString: producer.
+    self assertIsIntegerUnsigned: rv.
+    self assertIsBoolean: isOptimized.
+    self assertIsString: compilerFlags.
+
+    filename := path asFilename.
+
+    ^ LLVMCEXT DIBuilderCreateCompileUnit: self _: lang _: filename baseName _: filename directory pathName _: producer _: (isOptimized ifTrue:[1] ifFalse:[0]) _: compilerFlags _: rv
+
+    "Created: / 13-08-2015 / 06:47:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createExpression
+    ^ LLVMCEXT DIBuilderCreateExpression: self _: ExternalAddress new _: 0
+
+    "Created: / 14-08-2015 / 14:06:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createFile: path
+    | filename |
+
+    self assertIsStringOrFilename: path.    
+
+    filename := path asFilename.
+    ^ LLVMCEXT DIBuilderCreateFile: self _: filename baseName _: filename directory pathName
+
+    "Created: / 15-08-2015 / 22:08:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized
+    ^ self createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: 0
+
+    "Created: / 14-08-2015 / 13:47:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags
+    ^ self createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: line
+
+    "Created: / 14-08-2015 / 13:47:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine
+    ^ self createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine linkageName: function name
+
+    "Created: / 14-08-2015 / 13:46:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine linkageName: linkageName
+
+    self assertIsMetadata: scope.          
+    self assertIsMetadata: file.
+    self assertIsString: name.
+    self assertIsIntegerUnsigned: line.
+    self assertIsFunctionValue: function.
+    self assertIsBoolean: isLocal.
+    self assertIsBoolean: isDefinition.
+    self assertIsBoolean: isOptimized.
+    self assertIsIntegerUnsigned: flags.
+    self assertIsIntegerUnsigned: scopeLine.
+    self assertIsString: linkageName.
+
+    ^ LLVMCEXT DIBuilderCreateFunction: self  _: scope _: name _: linkageName _: file _: line _: type _: (isLocal ifTrue:[1] ifFalse:[0]) _: (isDefinition ifTrue:[1] ifFalse:[0]) _: scopeLine _: flags _: (isOptimized ifTrue:[1] ifFalse:[0]) _: function.
+
+    "Created: / 14-08-2015 / 13:46:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createParameterVariable: name in: scope file: file line: line type: type flags: flags index: index
+    ^  self createParameterVariable: name in: scope file: file line: line type: type flags: flags index: index preserve: true
+
+    "Created: / 14-08-2015 / 13:54:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createParameterVariable: name in: scope file: file line: line type: type flags: flags index: index  preserve: preserve
+    "Creates a debg info metadata describing a local variable"
+
+    self assertIsString: name.
+    self assertIsMetadata: scope.  
+    self assertIsMetadata: file.
+    self assertIsIntegerUnsigned: line.
+    self assertIsMetadata: type.
+    self assertIsIntegerUnsigned: flags.
+    self assertIsIntegerUnsigned: index.
+    self assertIsBoolean: preserve.
+
+    ^ LLVMCEXT DIBuilderCreateParameterVariable: self _: scope _: name _: file _: line _: type _: (preserve ifTrue:[1] ifFalse:[0]) _: flags _: index - 1
+
+    "Created: / 14-08-2015 / 13:54:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createTypeFunctionIn: file parameterTypes: parameterTypes
+    | parameterTypesAsTuple |
+
+    self assertIsMetadata: file.
+    self assertIsMetadataArray: parameterTypes.
+
+    parameterTypesAsTuple := LLVMCEXT MDNode2: LLVM GetGlobalContext _: parameterTypes asLLVMObjectArray _: parameterTypes size.
+    ^ LLVMCEXT DIBuilderCreateSubroutineType: self  _: file _: parameterTypesAsTuple
+
+    "Created: / 14-08-2015 / 08:57:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createTypeScalar: name size: sizeInBits alignment: alignmentInBits encoding: encoding
+    self assertIsString: name.
+    self assertIsInteger64Unsigned: sizeInBits.
+    self assertIsInteger64Unsigned: alignmentInBits.
+    self assertIsIntegerUnsigned: alignmentInBits.
+
+    ^ LLVMCEXT DIBuilderCreateBasicType: self _: name _: sizeInBits _: alignmentInBits _: encoding
+
+    "Created: / 14-08-2015 / 07:32:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createTypeScalar: name type: type encoding: encoding
+    self assertIsString: name.
+    self assertIsType: type.
+
+    ^ self createTypeScalar: name size: type sizeInBits alignment:type alignmentInBits encoding: encoding
+
+    "Created: / 14-08-2015 / 09:17:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+finish
+    LLVMCEXT DIBuilderFinalize: self
+
+    "Created: / 14-08-2015 / 13:11:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+insertDeclare: alloca variable: variable expression: expr location: location atEndOf: basicblock
+    "Inserts @llvm.dbg.declare() intrinsic at the end of given `basicblock`"
+
+    self assertIsValue: alloca.
+    self assertIsMetadata: variable.
+    self assertIsMetadata: expr.
+    self assertIsMetadata: location.
+    self assertIsBasicBlock: basicblock.
+
+    ^ LLVMCEXT DIBuilderInsertDeclareAtEnd: self  _: alloca _: variable _: expr _: location _: basicblock
+
+    "Created: / 15-08-2015 / 23:44:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+insertValue: alloca variable: variable expression: expr location: location atEndOf: basicblock offset: offset
+    "Inserts @llvm.dbg.value() intrinsic at the end of given `basicblock`"
+
+    self assertIsValue: alloca.
+    self assertIsMetadata: variable.
+    self assertIsMetadata: expr.
+    self assertIsMetadata: location.
+    self assertIsBasicBlock: basicblock.
+    self assertIsInteger64Unsigned: offset.  
+
+    ^ LLVMCEXT DIBuilderInsertValueAtEnd: self _: alloca _: offset _: variable _: expr _: location _: basicblock
+
+    "Created: / 15-08-2015 / 23:49:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVMDIBuilder methodsFor:'initialization & release'!
+
+dispose
+    "superclass LLVMDisposableObject says that I am responsible to implement this method"
+
+    ^ LLVMCEXT DIBuilderDestroy: self
+
+    "Modified: / 14-08-2015 / 13:20:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LLVMDWARFEncoding.st	Mon Aug 17 08:53:26 2015 +0100
@@ -0,0 +1,167 @@
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+"{ Package: 'jv:llvm_s' }"
+
+"{ NameSpace: Smalltalk }"
+
+SharedPool subclass:#LLVMDWARFEncoding
+	instanceVariableNames:''
+	classVariableNames:'LLVM_DW_ATE_address LLVM_DW_ATE_boolean LLVM_DW_ATE_complex_float
+		LLVM_DW_ATE_float LLVM_DW_ATE_signed LLVM_DW_ATE_signed_char
+		LLVM_DW_ATE_unsigned LLVM_DW_ATE_unsigned_char
+		LLVM_DW_ATE_imaginary_float LLVM_DW_ATE_packed_decimal
+		LLVM_DW_ATE_numeric_string LLVM_DW_ATE_edited
+		LLVM_DW_ATE_signed_fixed LLVM_DW_ATE_unsigned_fixed
+		LLVM_DW_ATE_decimal_float LLVM_DW_ATE_UTF LLVM_DW_ATE_lo_user
+		LLVM_DW_ATE_hi_user'
+	poolDictionaries:''
+	category:'LLVM-S-Core-Constants'
+!
+
+!LLVMDWARFEncoding class methodsFor:'documentation'!
+
+copyright
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+! !
+
+!LLVMDWARFEncoding class methodsFor:'initialization'!
+
+initialize
+
+    LLVM_DW_ATE_address := 1.
+    LLVM_DW_ATE_boolean := 2.
+    LLVM_DW_ATE_complex_float := 3.
+    LLVM_DW_ATE_float := 4.
+    LLVM_DW_ATE_signed := 5.
+    LLVM_DW_ATE_signed_char := 6.
+    LLVM_DW_ATE_unsigned := 7.
+    LLVM_DW_ATE_unsigned_char := 8.
+    LLVM_DW_ATE_imaginary_float := 9.
+    LLVM_DW_ATE_packed_decimal := 10.
+    LLVM_DW_ATE_numeric_string := 11.
+    LLVM_DW_ATE_edited := 12.
+    LLVM_DW_ATE_signed_fixed := 13.
+    LLVM_DW_ATE_unsigned_fixed := 14.
+    LLVM_DW_ATE_decimal_float := 15.
+    LLVM_DW_ATE_UTF := 16.
+    LLVM_DW_ATE_lo_user := 128.
+    LLVM_DW_ATE_hi_user := 255.
+! !
+
+!LLVMDWARFEncoding class methodsFor:'constants'!
+
+LLVM_DW_ATE_UTF
+
+    ^LLVM_DW_ATE_UTF
+!
+
+LLVM_DW_ATE_address
+
+    ^LLVM_DW_ATE_address
+!
+
+LLVM_DW_ATE_boolean
+
+    ^LLVM_DW_ATE_boolean
+!
+
+LLVM_DW_ATE_complex_float
+
+    ^LLVM_DW_ATE_complex_float
+!
+
+LLVM_DW_ATE_decimal_float
+
+    ^LLVM_DW_ATE_decimal_float
+!
+
+LLVM_DW_ATE_edited
+
+    ^LLVM_DW_ATE_edited
+!
+
+LLVM_DW_ATE_float
+
+    ^LLVM_DW_ATE_float
+!
+
+LLVM_DW_ATE_hi_user
+
+    ^LLVM_DW_ATE_hi_user
+!
+
+LLVM_DW_ATE_imaginary_float
+
+    ^LLVM_DW_ATE_imaginary_float
+!
+
+LLVM_DW_ATE_lo_user
+
+    ^LLVM_DW_ATE_lo_user
+!
+
+LLVM_DW_ATE_numeric_string
+
+    ^LLVM_DW_ATE_numeric_string
+!
+
+LLVM_DW_ATE_packed_decimal
+
+    ^LLVM_DW_ATE_packed_decimal
+!
+
+LLVM_DW_ATE_signed
+
+    ^LLVM_DW_ATE_signed
+!
+
+LLVM_DW_ATE_signed_char
+
+    ^LLVM_DW_ATE_signed_char
+!
+
+LLVM_DW_ATE_signed_fixed
+
+    ^LLVM_DW_ATE_signed_fixed
+!
+
+LLVM_DW_ATE_unsigned
+
+    ^LLVM_DW_ATE_unsigned
+!
+
+LLVM_DW_ATE_unsigned_char
+
+    ^LLVM_DW_ATE_unsigned_char
+!
+
+LLVM_DW_ATE_unsigned_fixed
+
+    ^LLVM_DW_ATE_unsigned_fixed
+! !
+
+
+LLVMDWARFEncoding initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LLVMDWARFLamguage.st	Mon Aug 17 08:53:26 2015 +0100
@@ -0,0 +1,294 @@
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+"{ Package: 'jv:llvm_s' }"
+
+"{ NameSpace: Smalltalk }"
+
+SharedPool subclass:#LLVMDWARFLamguage
+	instanceVariableNames:''
+	classVariableNames:'LLVM_DW_LANG_C89 LLVM_DW_LANG_C LLVM_DW_LANG_Ada83
+		LLVM_DW_LANG_C_plus_plus LLVM_DW_LANG_Cobol74
+		LLVM_DW_LANG_Cobol85 LLVM_DW_LANG_Fortran77
+		LLVM_DW_LANG_Fortran90 LLVM_DW_LANG_Pascal83 LLVM_DW_LANG_Modula2
+		LLVM_DW_LANG_Java LLVM_DW_LANG_C99 LLVM_DW_LANG_Ada95
+		LLVM_DW_LANG_Fortran95 LLVM_DW_LANG_PLI LLVM_DW_LANG_ObjC
+		LLVM_DW_LANG_ObjC_plus_plus LLVM_DW_LANG_UPC LLVM_DW_LANG_D
+		LLVM_DW_LANG_Python LLVM_DW_LANG_OpenCL LLVM_DW_LANG_Go
+		LLVM_DW_LANG_Modula3 LLVM_DW_LANG_Haskell
+		LLVM_DW_LANG_C_plus_plus_03 LLVM_DW_LANG_C_plus_plus_11
+		LLVM_DW_LANG_OCaml LLVM_DW_LANG_Rust LLVM_DW_LANG_C11
+		LLVM_DW_LANG_Swift LLVM_DW_LANG_Julia LLVM_DW_LANG_Dylan
+		LLVM_DW_LANG_C_plus_plus_14 LLVM_DW_LANG_Fortran03
+		LLVM_DW_LANG_Fortran08 LLVM_DW_LANG_Mips_Assembler
+		LLVM_DW_LANG_lo_user LLVM_DW_LANG_hi_user'
+	poolDictionaries:''
+	category:'LLVM-S-Core-Constants'
+!
+
+!LLVMDWARFLamguage class methodsFor:'documentation'!
+
+copyright
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+! !
+
+!LLVMDWARFLamguage class methodsFor:'initialization'!
+
+initialize
+
+    LLVM_DW_LANG_C89 := 1.
+    LLVM_DW_LANG_C := 2.
+    LLVM_DW_LANG_Ada83 := 3.
+    LLVM_DW_LANG_C_plus_plus := 4.
+    LLVM_DW_LANG_Cobol74 := 5.
+    LLVM_DW_LANG_Cobol85 := 6.
+    LLVM_DW_LANG_Fortran77 := 7.
+    LLVM_DW_LANG_Fortran90 := 8.
+    LLVM_DW_LANG_Pascal83 := 9.
+    LLVM_DW_LANG_Modula2 := 10.
+    LLVM_DW_LANG_Java := 11.
+    LLVM_DW_LANG_C99 := 12.
+    LLVM_DW_LANG_Ada95 := 13.
+    LLVM_DW_LANG_Fortran95 := 14.
+    LLVM_DW_LANG_PLI := 15.
+    LLVM_DW_LANG_ObjC := 16.
+    LLVM_DW_LANG_ObjC_plus_plus := 17.
+    LLVM_DW_LANG_UPC := 18.
+    LLVM_DW_LANG_D := 19.
+    LLVM_DW_LANG_Python := 20.
+    LLVM_DW_LANG_OpenCL := 21.
+    LLVM_DW_LANG_Go := 22.
+    LLVM_DW_LANG_Modula3 := 23.
+    LLVM_DW_LANG_Haskell := 24.
+    LLVM_DW_LANG_C_plus_plus_03 := 25.
+    LLVM_DW_LANG_C_plus_plus_11 := 26.
+    LLVM_DW_LANG_OCaml := 27.
+    LLVM_DW_LANG_Rust := 28.
+    LLVM_DW_LANG_C11 := 29.
+    LLVM_DW_LANG_Swift := 30.
+    LLVM_DW_LANG_Julia := 31.
+    LLVM_DW_LANG_Dylan := 32.
+    LLVM_DW_LANG_C_plus_plus_14 := 33.
+    LLVM_DW_LANG_Fortran03 := 34.
+    LLVM_DW_LANG_Fortran08 := 35.
+    LLVM_DW_LANG_Mips_Assembler := 32769.
+    LLVM_DW_LANG_lo_user := 32768.
+    LLVM_DW_LANG_hi_user := 65535.
+! !
+
+!LLVMDWARFLamguage class methodsFor:'constants'!
+
+LLVM_DW_LANG_Ada83
+
+    ^LLVM_DW_LANG_Ada83
+!
+
+LLVM_DW_LANG_Ada95
+
+    ^LLVM_DW_LANG_Ada95
+!
+
+LLVM_DW_LANG_C
+
+    ^LLVM_DW_LANG_C
+!
+
+LLVM_DW_LANG_C11
+
+    ^LLVM_DW_LANG_C11
+!
+
+LLVM_DW_LANG_C89
+
+    ^LLVM_DW_LANG_C89
+!
+
+LLVM_DW_LANG_C99
+
+    ^LLVM_DW_LANG_C99
+!
+
+LLVM_DW_LANG_C_plus_plus
+
+    ^LLVM_DW_LANG_C_plus_plus
+!
+
+LLVM_DW_LANG_C_plus_plus_03
+
+    ^LLVM_DW_LANG_C_plus_plus_03
+!
+
+LLVM_DW_LANG_C_plus_plus_11
+
+    ^LLVM_DW_LANG_C_plus_plus_11
+!
+
+LLVM_DW_LANG_C_plus_plus_14
+
+    ^LLVM_DW_LANG_C_plus_plus_14
+!
+
+LLVM_DW_LANG_Cobol74
+
+    ^LLVM_DW_LANG_Cobol74
+!
+
+LLVM_DW_LANG_Cobol85
+
+    ^LLVM_DW_LANG_Cobol85
+!
+
+LLVM_DW_LANG_D
+
+    ^LLVM_DW_LANG_D
+!
+
+LLVM_DW_LANG_Dylan
+
+    ^LLVM_DW_LANG_Dylan
+!
+
+LLVM_DW_LANG_Fortran03
+
+    ^LLVM_DW_LANG_Fortran03
+!
+
+LLVM_DW_LANG_Fortran08
+
+    ^LLVM_DW_LANG_Fortran08
+!
+
+LLVM_DW_LANG_Fortran77
+
+    ^LLVM_DW_LANG_Fortran77
+!
+
+LLVM_DW_LANG_Fortran90
+
+    ^LLVM_DW_LANG_Fortran90
+!
+
+LLVM_DW_LANG_Fortran95
+
+    ^LLVM_DW_LANG_Fortran95
+!
+
+LLVM_DW_LANG_Go
+
+    ^LLVM_DW_LANG_Go
+!
+
+LLVM_DW_LANG_Haskell
+
+    ^LLVM_DW_LANG_Haskell
+!
+
+LLVM_DW_LANG_Java
+
+    ^LLVM_DW_LANG_Java
+!
+
+LLVM_DW_LANG_Julia
+
+    ^LLVM_DW_LANG_Julia
+!
+
+LLVM_DW_LANG_Mips_Assembler
+
+    ^LLVM_DW_LANG_Mips_Assembler
+!
+
+LLVM_DW_LANG_Modula2
+
+    ^LLVM_DW_LANG_Modula2
+!
+
+LLVM_DW_LANG_Modula3
+
+    ^LLVM_DW_LANG_Modula3
+!
+
+LLVM_DW_LANG_OCaml
+
+    ^LLVM_DW_LANG_OCaml
+!
+
+LLVM_DW_LANG_ObjC
+
+    ^LLVM_DW_LANG_ObjC
+!
+
+LLVM_DW_LANG_ObjC_plus_plus
+
+    ^LLVM_DW_LANG_ObjC_plus_plus
+!
+
+LLVM_DW_LANG_OpenCL
+
+    ^LLVM_DW_LANG_OpenCL
+!
+
+LLVM_DW_LANG_PLI
+
+    ^LLVM_DW_LANG_PLI
+!
+
+LLVM_DW_LANG_Pascal83
+
+    ^LLVM_DW_LANG_Pascal83
+!
+
+LLVM_DW_LANG_Python
+
+    ^LLVM_DW_LANG_Python
+!
+
+LLVM_DW_LANG_Rust
+
+    ^LLVM_DW_LANG_Rust
+!
+
+LLVM_DW_LANG_Swift
+
+    ^LLVM_DW_LANG_Swift
+!
+
+LLVM_DW_LANG_UPC
+
+    ^LLVM_DW_LANG_UPC
+!
+
+LLVM_DW_LANG_hi_user
+
+    ^LLVM_DW_LANG_hi_user
+!
+
+LLVM_DW_LANG_lo_user
+
+    ^LLVM_DW_LANG_lo_user
+! !
+
+
+LLVMDWARFLamguage initialize!
--- a/LLVMExamples.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMExamples.st	Mon Aug 17 08:53:26 2015 +0100
@@ -18,7 +18,7 @@
 TestCase subclass:#LLVMExamples
 	instanceVariableNames:''
 	classVariableNames:''
-	poolDictionaries:'LLVMIntPredicate'
+	poolDictionaries:'LLVMIntPredicate LLVMDWARFEncoding LLVMDWARFLamguage'
 	category:'LLVM-S-Core-Examples'
 !
 
@@ -231,19 +231,15 @@
 !
 
 example5_factorial
-    "
-     S simple factorial using recursive algorithm.
-     No negative argument or overflow checks"
+    "A simple factorial using recursive algorithm.
+     No overflow or negative value checks"
     
-    | module  functionType  function  asm  "Variables"
-    result  i  "Blocks"
-    entry  loop  loopBody  exit  jit  externalFunction |
+    | module functionType function asm  
+    "Variables" result  i  
+    "Blocks" entry loop loopBody exit jit externalFunction |
 
     module := LLVMModule newWithName:testSelector.
-    functionType := LLVMType function:{
-                    LLVMType intptr
-                }
-            returning:LLVMType intptr.
+    functionType := LLVMType function:{ LLVMType intptr } returning:LLVMType intptr.
     function := module addFunctionNamed:'factorial' type:functionType.
     asm := LLVMIRBuilder new.
     entry := function entry.
@@ -253,25 +249,25 @@
      
     "/ Generate function setup
     "/ 
-    "/   function f(v) {
-    "/     var result;
-    "/     var i;
-    "/     result = 0;
-    "/     i := v;
+    "/ 03   function f(v) {
+    "/ 04    var result;
+    "/ 05    var i;
+    "/ 06    result = 0;
+    "/ 07    i := v;
     
     asm block:entry.
     result := asm alloca:LLVMType intptr as:'result'.
     i := asm alloca:LLVMType intptr as:'i'.
     asm store:(function parameterAt:1) _:i.
-    asm store:(function parameterAt:1) _:result.
+    asm store:(LLVMConstant sintptr: 1) _:result.
     asm br:loop.
      
     "/ Generate loop that computes the factorial
     "/ 
-    "/     while ( i > 1 ) {
-    "/       result = result * i;
-    "/       i = i - 1.
-    "/     }
+    "/ 08    while ( i > 1 ) {
+    "/ 09      result = result * i;
+    "/ 10      i = i - 1.
+    "/ 11    }
     "/ 
     "/ Note, that unlike 'traditional' assemblers, there's no
     "/ fall-through instruction, so we have to introduce a block 
@@ -293,7 +289,8 @@
      
     "/ Generate return from function
     "/ 
-    "/     return result;
+    "/ 12    return result;
+    "/ 13 }
     "/ 
     
     asm block:exit.
@@ -304,11 +301,14 @@
     self assert:(externalFunction callWith:1) == 1.
 
     "
-     LLVMExamples example3_cond"
+        LLVMExamples run: example5_factorial_with_debug_info
+    "
+
     "Created: / 10-08-2015 / 09:46:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-08-2015 / 07:39:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-example5_factorial_with_overflow
+example6_factorial_with_overflow
     "
      Simple factorial using recursive algorithm.
      This one checks for overflow, if overflow happens,
@@ -344,7 +344,7 @@
     result := asm alloca:LLVMType intptr as:'result'.
     i := asm alloca:LLVMType intptr as:'i'.
     asm store:(function parameterAt:1) _:i.
-    asm store:(function parameterAt:1) _:result.
+    asm store:(LLVMConstant sintptr: 1) _:result.
     asm br:loop.
      
     "/ Generate loop that computes the factorial
@@ -408,7 +408,163 @@
     self assert:(externalFunction callWith:120) == -1.
 
     "sly    LLVMExamples example3_cond"
-    "Created: / 10-08-2015 / 17:12:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 10-08-2015 / 18:58:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+
+    "Created: / 14-08-2015 / 06:46:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-08-2015 / 07:40:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+example7_factorial_with_debug_info
+    "A simple factorial using recursive algorithm
+     with debug info attached. 
+
+
+
+    "     
+
+    | module functionType function asm   
+    "Variables" result  i  
+    "Blocks" entry loop loopBody exit 
+    "Debug Info Metadata" dib diFile compilationUnitDI functionTypeDI functionDI intptrDI resultDI iDI
+    jit externalFunction |
+
+    module := LLVMModule newWithName:testSelector.
+    dib := module debugInfoBuilder.
+
+    diFile := dib createFile: Filename currentDirectory / 'factorial.lang'.
+    compilationUnitDI := dib createCompilationUnit: Filename currentDirectory / 'factorial.lang' language: LLVM_DW_LANG_lo_user + 10 producer: self class name.
+
+    functionType := LLVMType function:{ LLVMType intptr } returning:LLVMType intptr.
+    intptrDI := dib createTypeScalar: 'intptr' type: LLVMType intptr encoding: LLVM_DW_ATE_signed.
+    functionTypeDI := dib createTypeFunctionIn: compilationUnitDI 
+                                parameterTypes: { intptrDI }.
+    function := module addFunctionNamed:'factorial' type:functionType.
+    functionDI := dib createFunction: 'factorial' in: compilationUnitDI file: diFile line: 03 type: functionTypeDI function: function local: false definition: true optimized: false.
+    dib createParameterVariable: 'v' in: functionDI file: diFile line: 03 type: intptrDI flags: 0 index: 1.
+    asm := LLVMIRBuilder new.
+    entry := function entry.
+    loop := function addBasicBlockNamed:'loop'.
+    loopBody := function addBasicBlockNamed:'loopBody'.
+    exit := function addBasicBlockNamed:'exit'.
+     
+    "/ Generate function setup
+    "/ 
+    "/ 03  function f(v) {
+    "/ 04    var result;
+    "/ 05    var i;
+    "/ 06    result = 0;
+    "/ 07    i := v;
+    
+    asm block:entry.
+    asm line: 4 column: 3 scope: functionDI.
+    result := asm alloca:LLVMType intptr as:'result'.
+    resultDI := dib createAutomaticVariable: 'result' in: functionDI file: diFile line: 4 type: intptrDI.
+    dib insertDeclare: result variable: resultDI expression: dib createExpression location: asm location atEndOf: entry.
+
+    asm line: 5 column: 3 scope: functionDI.
+    i := asm alloca:LLVMType intptr as:'i'.
+    iDI := dib createAutomaticVariable: 'i' in: functionDI file: diFile line: 4 type: intptrDI.
+    dib insertDeclare: i variable: iDI expression: dib createExpression location: asm location atEndOf: entry.
+
+    asm line: 6 column: 3 scope: functionDI.
+    asm store:(function parameterAt:1) _:i.
+
+    asm line: 7 column: 3 scope: functionDI.
+    asm store:(LLVMConstant sintptr: 1) _:result.
+    asm br:loop.
+     
+    "/ Generate loop that computes the factorial
+    "/ 
+    "/   08  while ( i > 1 ) {
+    "/   09    result = result * i;
+    "/   10    i = i - 1.
+    "/   11  }
+    "/ 
+    "/ Note, that unlike 'traditional' assemblers, there's no
+    "/ fall-through instruction, so we have to introduce a block 
+    "/ loop's body which will become a target for conditional's
+    "/ then-branch.
+    
+    asm block:loop.
+    asm line: 8 column: 3 scope: functionDI.
+    asm 
+        if:(asm 
+                icmp:(asm load:i)
+                _:(LLVMConstant sintptr:1)
+                cond:LLVMIntSGT)
+        then:loopBody
+        else:exit.
+    asm block:loopBody.
+    asm line: 9 column: 3 scope: functionDI.
+    asm store:(asm mul:(asm load:result) _:(asm load:i)) _:result.
+    asm line: 10 column: 3 scope: functionDI.
+    asm store:(asm sub:(asm load:i) _:(LLVMConstant sintptr:1)) _:i.
+    asm line: 11 column: 3 scope: functionDI.
+    asm br:loop.
+     
+    "/ Generate return from function
+    "/ 
+    "/ 12    return result;
+    "/ 13  }
+    "/ 
+
+    asm block:exit.
+    asm line: 12 column: 3 scope: functionDI.
+    asm ret:(asm load:result).
+
+    dib finish.
+    self halt.
+    "
+    To generate stand-alone executable do the following:
+
+    1) Execute following to write LLVM IR to /tmp/factorial.ll
+
+        module writeBitcodeToFile: '/tmp/factorial.bc'
+
+    2) Compile it into an object file
+
+        llc-3.8 --filetype=obj factorial.bc
+
+    3) Write a simple main.c to call factorial():
+
+        '/tmp/main.c' asFilename writingFileDo:[:f | f nextPutAll: 'int main(int argc, char **argv) { factorial(5); exit(0); }' ].
+
+    4) Compile main.c and link it with factorial.o
+
+        gcc -o main main.c factorial.o
+
+    To actually debug it, first write the pseudo-code for the factorial:
+
+        '/tmp/factorial.lang' asFilename writingFileDo:[ :f|
+            f nextPutLine: ''.
+            f nextPutLine: ''.
+            f nextPutLine: 'function factorial(v) {'.
+            f nextPutLine: '  var result;'.
+            f nextPutLine: '  var i;'.
+            f nextPutLine: '  result = 0;'.
+            f nextPutLine: '  i := v;'.
+            f nextPutLine: '  while ( i > 1 ) {'.
+            f nextPutLine: '    result = result * i;'.
+            f nextPutLine: '    i = i - 1.'.
+            f nextPutLine: '  }'.
+            f nextPutLine: '  return result;'.
+            f nextPutLine: '}'.
+        ]
+
+    Then debug it using gdb:
+
+            gdb main
+    "
+
+
+    jit := LLVMExecutionEngine newForModule:module.
+    externalFunction := jit externalOfFunction:function.
+    self assert:(externalFunction callWith:5) == 120.
+    self assert:(externalFunction callWith:1) == 1.
+
+    "
+     LLVMExamples example7_factorial_with_debug_info"
+
+    "Created: / 14-08-2015 / 06:46:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 17-08-2015 / 08:52:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
--- a/LLVMExecutionEngine.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMExecutionEngine.st	Mon Aug 17 08:53:26 2015 +0100
@@ -73,7 +73,7 @@
     eePtr := ExternalBytes new: ExternalBytes sizeofPointer.
     errmsgPtr := ExternalBytes new: ExternalBytes sizeofPointer.
 
-    (LLVM CreateExecutionEngineForModule: eePtr _: module _: errmsgPtr) ~~ 0 ifTrue:[ 
+    (LLVM CreateExecutionEngineForModule: eePtr _: module _: errmsgPtr) ifTrue:[ 
         | errmsg err |
 
         errmsg := errmsgPtr pointerAt: 1.
@@ -92,7 +92,7 @@
     ].
 
     "Created: / 10-07-2015 / 15:47:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 17-07-2015 / 12:31:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-08-2015 / 13:08:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !LLVMExecutionEngine methodsFor:'accessing'!
--- a/LLVMFunction.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMFunction.st	Mon Aug 17 08:53:26 2015 +0100
@@ -16,7 +16,7 @@
 "{ NameSpace: Smalltalk }"
 
 LLVMValue subclass:#LLVMFunction
-	instanceVariableNames:'numArgs'
+	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	category:'LLVM-S-Core'
@@ -64,22 +64,23 @@
 !
 
 numArgs
-    | last current |
+    "Same as #numParams.
 
-    numArgs isNil ifTrue:[
-        numArgs := 0.
-"/        current := LLVM GetFirstParam: self.
-"/        last := LLVM GetLastParam: self.  
-"/        [ current ~= last ] whileTrue:[
-"/            numArgs := numArgs + 1.
-"/            current := LLVM GetNextFunction: current.
-"/            self halt.
-"/        ].
-    ].
-    ^ numArgs
+     Defined here as a courtesy to Smalltalk/X programmer - Smalltalk/X
+     uses #numArgs."
+
+    ^ self numParams
 
     "Created: / 11-07-2015 / 09:42:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 11-07-2015 / 11:23:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-08-2015 / 12:56:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+numParams
+    "Return a number of parameters that this function takes"
+
+    ^ LLVM CountParams: self.
+
+    "Created: / 14-08-2015 / 12:54:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 parameterAt: index
--- a/LLVMGenericValue.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMGenericValue.st	Mon Aug 17 08:53:26 2015 +0100
@@ -48,3 +48,10 @@
     "Modified: / 08-07-2015 / 22:39:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!LLVMGenericValue class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/LLVMIRBuilder.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMIRBuilder.st	Mon Aug 17 08:53:26 2015 +0100
@@ -69,6 +69,39 @@
     ^ self positionAtEnd: anLLVMBasicBlock
 
     "Created: / 10-08-2015 / 09:03:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+line: line column: column scope: scope
+    "Sets the current location in original source (i.e., on source being
+     translated to LLVM IR). This information is used generate debug information."
+
+    ^ self line: line column: column scope: scope inlinedAt: nil
+
+    "Created: / 15-08-2015 / 21:26:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+line: line column: column scope: scope inlinedAt: inlinedScope
+    "Sets the current location in original source (i.e., on source being
+     translated to LLVM IR). This information is used generate debug information."
+
+    self assertIsIntegerUnsigned: line.
+    self assertIsIntegerUnsigned: column.
+    self assertIsMetadata: scope. 
+    inlinedScope notNil ifTrue:[  
+    self assertIsMetadata: inlinedScope.  
+    ].
+
+    LLVMCEXT SetCurrentDebugLocation2: self  _: line _: column _: scope _: inlinedScope
+
+    "Created: / 15-08-2015 / 21:26:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+location
+    "Return current location as LLVMMetadata."
+
+    ^ LLVMCEXT GetCurrentDebugLocation2: self
+
+    "Created: / 15-08-2015 / 23:52:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !LLVMIRBuilder methodsFor:'initialization & release'!
@@ -435,3 +468,10 @@
     "Created: / 07-07-2015 / 22:45:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!LLVMIRBuilder class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/LLVMMCJITCompilerOptions.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMMCJITCompilerOptions.st	Mon Aug 17 08:53:26 2015 +0100
@@ -60,7 +60,7 @@
 !LLVMMCJITCompilerOptions methodsFor:'accessing'!
 
 CodeModel
-    "Returns ;; Line: 3627
+    "Returns ;; Line: 3682
 (enum LLVMCodeModel
 	(value (LLVMCodeModelDefault) 0)
 	(value (LLVMCodeModelJITDefault) 1)
@@ -78,10 +78,10 @@
 !
 
 EnableFastISel
-    "Returns ;; Line: 1121
+    "Returns ;; Line: 1141
 (typedef 
 	LLVMBool
-		int32)"
+		bool)"
 
     ^self at:1 + 12
 !
@@ -92,10 +92,10 @@
 !
 
 MCJMM
-    "Returns ;; Line: 3620
+    "Returns ;; Line: 3675
 (typedef 
 	LLVMMCJITMemoryManagerRef
-		(pointer-to ;; Line: 4027
+		(pointer-to ;; Line: 4082
 ;; Class: LLVMOpaqueMCJITMemoryManager
 ))"
 
@@ -108,10 +108,10 @@
 !
 
 NoFramePointerElim
-    "Returns ;; Line: 1121
+    "Returns ;; Line: 1141
 (typedef 
 	LLVMBool
-		int32)"
+		bool)"
 
     ^self at:1 + 8
 !
@@ -122,8 +122,7 @@
 !
 
 OptLevel
-    "Returns unsigned 
-		int32"
+    "Returns unsigned int"
 
     ^self longAt:1 + 0
 !
--- a/LLVMMetadata.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMMetadata.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,7 +15,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-ExternalAddress subclass:#LLVMMetadata
+LLVMObject subclass:#LLVMMetadata
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -40,3 +40,25 @@
 "
 ! !
 
+!LLVMMetadata methodsFor:'converting'!
+
+asLLVMMetadata
+    ^ self
+
+    "Created: / 15-08-2015 / 06:41:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+asLLVMValue
+    ^ LLVMCEXT MetadataAsValue: self.
+
+    "Created: / 14-08-2015 / 16:35:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVMMetadata methodsFor:'testing'!
+
+isLLVMMetadata
+    ^ true
+
+    "Created: / 14-08-2015 / 08:51:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/LLVMModule.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMModule.st	Mon Aug 17 08:53:26 2015 +0100
@@ -54,17 +54,39 @@
     ^ LLVM GetDataLayout: self.
 
     "Created: / 11-07-2015 / 06:57:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+debugInfoBuilder
+    ^ LLVMDIBuilder newForModule: self
+
+    "Created: / 13-08-2015 / 06:35:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !LLVMModule methodsFor:'adding & removing'!
 
+addFlag: key value: value behavior: behavior
+    self assertIsString: key.
+    self assertIsMetadata: value.
+    self assertIsIntegerUnsigned: behavior.
+
+    LLVMCEXT ModuleAddModuleFlag: self _: behavior _: key _: value
+
+    "Created: / 15-08-2015 / 06:58:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 15-08-2015 / 22:06:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 addFunctionNamed: name type: type
+    | function |
     self assertIsString: name.  
     self assert: type kind == LLVMFunctionTypeKind.
-    ^ LLVM AddFunction: self _: name _: type.
+
+    function := LLVM AddFunction: self _: name _: type.
+    "/ TODO: Certainly a hack. must find a better way to do this.
+    function changeClassTo: LLVMFunction.
+    ^ function
 
     "Created: / 07-07-2015 / 21:59:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 10-08-2015 / 17:07:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-08-2015 / 13:05:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 addGlobalNamed: name type: type value: value
@@ -104,12 +126,28 @@
     "Created: / 11-07-2015 / 09:37:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+getIntrinsicNamed: name 
+    | function |
+
+    function := self getIntrinsicNamed: name types: #().
+    "/ TODO: Certainly a hack. must find a better way to do this.
+    function changeClassTo: LLVMFunction.
+    ^ function
+
+    "Created: / 14-08-2015 / 14:10:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 getIntrinsicNamed: name types: types
+    | intrinsic |    
     self assertIsString: name.  
     self assertIsTypeArray: types.
-    ^ LLVMCEXT GetIntrinsicByName: self _: name _: types size _: types asLLVMObjectArray.
+    intrinsic := LLVMCEXT GetIntrinsicByName: self _: name _: types size _: types asLLVMObjectArray.
+    "/ TODO: Certainly a hack. must find a better way to do this.
+    intrinsic changeClassTo: LLVMFunction.
+    ^ intrinsic
 
     "Created: / 10-08-2015 / 17:06:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-08-2015 / 07:43:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !LLVMModule methodsFor:'debugging'!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LLVMModuleFlagBehavior.st	Mon Aug 17 08:53:26 2015 +0100
@@ -0,0 +1,120 @@
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+"{ Package: 'jv:llvm_s' }"
+
+"{ NameSpace: Smalltalk }"
+
+SharedPool subclass:#LLVMModuleFlagBehavior
+	instanceVariableNames:''
+	classVariableNames:'LLVMModuleFlagBehaviorError LLVMModuleFlagBehaviorWarning
+		LLVMModuleFlagBehaviorRequire LLVMModuleFlagBehaviorOverride
+		LLVMModuleFlagBehaviorAppend LLVMModuleFlagBehaviorAppendUnique'
+	poolDictionaries:''
+	category:'LLVM-S-Core-Constants'
+!
+
+!LLVMModuleFlagBehavior class methodsFor:'documentation'!
+
+copyright
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+! !
+
+!LLVMModuleFlagBehavior class methodsFor:'initialization'!
+
+initialize
+
+    LLVMModuleFlagBehaviorError := 1.
+    LLVMModuleFlagBehaviorWarning := 2.
+    LLVMModuleFlagBehaviorRequire := 3.
+    LLVMModuleFlagBehaviorOverride := 4.
+    LLVMModuleFlagBehaviorAppend := 5.
+    LLVMModuleFlagBehaviorAppendUnique := 6.
+! !
+
+!LLVMModuleFlagBehavior class methodsFor:'constants'!
+
+Append
+
+    ^Append
+!
+
+AppendUnique
+
+    ^AppendUnique
+!
+
+Error
+
+    ^Error
+!
+
+LLVMModuleFlagBehaviorAppend
+
+    ^LLVMModuleFlagBehaviorAppend
+!
+
+LLVMModuleFlagBehaviorAppendUnique
+
+    ^LLVMModuleFlagBehaviorAppendUnique
+!
+
+LLVMModuleFlagBehaviorError
+
+    ^LLVMModuleFlagBehaviorError
+!
+
+LLVMModuleFlagBehaviorOverride
+
+    ^LLVMModuleFlagBehaviorOverride
+!
+
+LLVMModuleFlagBehaviorRequire
+
+    ^LLVMModuleFlagBehaviorRequire
+!
+
+LLVMModuleFlagBehaviorWarning
+
+    ^LLVMModuleFlagBehaviorWarning
+!
+
+Override
+
+    ^Override
+!
+
+Require
+
+    ^Require
+!
+
+Warning
+
+    ^Warning
+! !
+
+
+LLVMModuleFlagBehavior initialize!
--- a/LLVMObject.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMObject.st	Mon Aug 17 08:53:26 2015 +0100
@@ -52,6 +52,14 @@
 
 !LLVMObject methodsFor:'assertions'!
 
+assertIsBasicBlock: value 
+    <resource: #skipInDebuggersWalkback>
+
+    self assert:(value isKindOf: LLVMBasicBlock) message: 'value is not an LLVM basic block'
+
+    "Created: / 15-08-2015 / 23:45:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 assertIsBasicBlockValue:value 
     <resource: #skipInDebuggersWalkback>
 
@@ -61,6 +69,14 @@
     "Created: / 08-08-2015 / 02:43:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+assertIsBoolean: value
+    <resource: #skipInDebuggersWalkback>
+
+    self assert: value isBoolean message: 'value is not a boolean'.
+
+    "Created: / 13-08-2015 / 06:52:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 assertIsFunctionValue: value
     <resource: #skipInDebuggersWalkback>
 
@@ -69,6 +85,15 @@
     "Created: / 10-08-2015 / 18:55:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+assertIsInteger64Unsigned:value 
+    <resource: #skipInDebuggersWalkback>
+
+    self assert: value isInteger message: 'value is not an integer'.
+    self assert: (value between: 0 and: 16rFFFFFFFFFFFFFFFF) message: 'value out of range'
+
+    "Created: / 14-08-2015 / 07:32:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 assertIsIntegerOrIntegerVectorValue:value 
     <resource: #skipInDebuggersWalkback>
 
@@ -78,22 +103,41 @@
     "Modified (format): / 08-08-2015 / 02:41:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-assertIsIntegerUnsigned: value
+assertIsIntegerUnsigned:value 
+    <resource: #skipInDebuggersWalkback>
+
+    self assert: value isInteger message: 'value is not an integer'.
+    self assert: (value between: 0 and: 16rFFFFFFFF) message: 'value out of range'
+
+    "Created: / 13-08-2015 / 06:49:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+assertIsMetadata: value
     <resource: #skipInDebuggersWalkback>
 
-    self assert:  value isInteger message: 'value is not an integer'.
-    self assert: (value between: 0 and: 16rFFFFFFFF) message: 'value out of range'.
+    self assert: value isLLVMMetadata message: 'value is not an LLVMMetadata'.
+
+    "Created: / 14-08-2015 / 08:50:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
 
-    "Created: / 13-08-2015 / 18:57:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+assertIsMetadataArray: values
+    <resource: #skipInDebuggersWalkback>
+
+    self assert: values isSequenceable message: 'values is not a sequenceable collection'.
+    values do:[:value | 
+        self assertIsMetadata: value.  
+    ].
+
+    "Created: / 14-08-2015 / 08:50:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 assertIsString:aString 
     <resource: #skipInDebuggersWalkback>
 
-    self assert:aString isSingleByteString description:'string is not a valid LLVM name (twine)'
+    self assert:(aString isSymbol or:[aString isSingleByteString]) description:'string is not a valid LLVM name (twine)'
 
     "Created: / 07-08-2015 / 18:38:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 08-08-2015 / 02:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-08-2015 / 07:01:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 assertIsType: type
--- a/LLVMOpcode.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMOpcode.st	Mon Aug 17 08:53:26 2015 +0100
@@ -27,7 +27,9 @@
 		LLVMFCmp LLVMPHI LLVMCall LLVMSelect LLVMUserOp1 LLVMUserOp2
 		LLVMVAArg LLVMExtractElement LLVMInsertElement LLVMShuffleVector
 		LLVMExtractValue LLVMInsertValue LLVMFence LLVMAtomicCmpXchg
-		LLVMAtomicRMW LLVMResume LLVMLandingPad'
+		LLVMAtomicRMW LLVMResume LLVMLandingPad LLVMCleanupRet
+		LLVMCatchRet LLVMCatchPad LLVMTerminatePad LLVMCleanupPad
+		LLVMCatchEndPad'
 	poolDictionaries:''
 	category:'LLVM-S-Core-Constants'
 !
@@ -113,6 +115,12 @@
     LLVMAtomicRMW := 57.
     LLVMResume := 58.
     LLVMLandingPad := 59.
+    LLVMCleanupRet := 61.
+    LLVMCatchRet := 62.
+    LLVMCatchPad := 63.
+    LLVMTerminatePad := 64.
+    LLVMCleanupPad := 65.
+    LLVMCatchEndPad := 66.
 ! !
 
 !LLVMOpcode class methodsFor:'constants'!
@@ -167,6 +175,31 @@
     ^LLVMCall
 !
 
+LLVMCatchEndPad
+
+    ^LLVMCatchEndPad
+!
+
+LLVMCatchPad
+
+    ^LLVMCatchPad
+!
+
+LLVMCatchRet
+
+    ^LLVMCatchRet
+!
+
+LLVMCleanupPad
+
+    ^LLVMCleanupPad
+!
+
+LLVMCleanupRet
+
+    ^LLVMCleanupRet
+!
+
 LLVMExtractElement
 
     ^LLVMExtractElement
@@ -362,6 +395,11 @@
     ^LLVMSwitch
 !
 
+LLVMTerminatePad
+
+    ^LLVMTerminatePad
+!
+
 LLVMTrunc
 
     ^LLVMTrunc
--- a/LLVMStXMethod.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMStXMethod.st	Mon Aug 17 08:53:26 2015 +0100
@@ -107,10 +107,10 @@
 
 !LLVMStXMethod methodsFor:'accessing'!
 
-numArgs
-    ^ super numArgs - 4
+numParams
+    ^ super numParams - 4
 
-    "Created: / 11-07-2015 / 09:42:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 14-08-2015 / 12:54:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 parameterAt: index
--- a/LLVMType.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMType.st	Mon Aug 17 08:53:26 2015 +0100
@@ -249,6 +249,28 @@
 
 !LLVMType methodsFor:'accessing'!
 
+alignmentInBits
+    "Return an alignment of the type in bits"
+
+    ^ self alignmentInBytes * 8
+
+    "Created: / 14-08-2015 / 09:16:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+alignmentInBytes
+    "Return an alignment of the type in bytes"
+
+    | alignmentAsValue |
+
+    alignmentAsValue := LLVM AlignOf: self.
+    self assert: alignmentAsValue isConstantValue.
+    self assert: alignmentAsValue isIntegerValue.
+    ^ LLVMCEXT ValueAsUInt64: alignmentAsValue.
+
+    "Created: / 14-08-2015 / 09:16:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-08-2015 / 11:38:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 kind
     ^ LLVM GetTypeKind: self
 
@@ -265,6 +287,18 @@
     LLVMTypeError new signal: 'type size not known'
 
     "Created: / 13-08-2015 / 16:25:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sizeInBytes
+    "For integer, pointer, FP  types, return the size in bytes (rounded up). For all 
+     other types, throw an LLVMTypeError.
+
+     LLVMType int32 sizeInBytes -> 4
+     LLVMType int1 sizeInBytes  -> 1
+    "
+    ^ (self sizeInBits // 8) + (self sizeInBits \\ 8)
+
+    "Created: / 14-08-2015 / 07:27:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !LLVMType methodsFor:'comparing'!
--- a/LLVMTypeDouble.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMTypeDouble.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,7 +15,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-LLVMType subclass:#LLVMTypeDouble
+LLVMTypeScalar subclass:#LLVMTypeDouble
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/LLVMTypeFP128.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMTypeFP128.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,7 +15,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-LLVMType subclass:#LLVMTypeFP128
+LLVMTypeScalar subclass:#LLVMTypeFP128
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/LLVMTypeFloat.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMTypeFloat.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,7 +15,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-LLVMType subclass:#LLVMTypeFloat
+LLVMTypeScalar subclass:#LLVMTypeFloat
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/LLVMTypeHalt.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMTypeHalt.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,7 +15,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-LLVMType subclass:#LLVMTypeHalt
+LLVMTypeScalar subclass:#LLVMTypeHalt
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/LLVMTypeInteger.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMTypeInteger.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,7 +15,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-LLVMType subclass:#LLVMTypeInteger
+LLVMTypeScalar subclass:#LLVMTypeInteger
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/LLVMTypePPC_FP128.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMTypePPC_FP128.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,7 +15,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-LLVMType subclass:#LLVMTypePPC_FP128
+LLVMTypeScalar subclass:#LLVMTypePPC_FP128
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -62,3 +62,10 @@
     "Created: / 13-08-2015 / 16:52:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!LLVMTypePPC_FP128 class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LLVMTypeScalar.st	Mon Aug 17 08:53:26 2015 +0100
@@ -0,0 +1,52 @@
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+"{ Package: 'jv:llvm_s' }"
+
+"{ NameSpace: Smalltalk }"
+
+LLVMType subclass:#LLVMTypeScalar
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'LLVM-S-Core-Types'
+!
+
+!LLVMTypeScalar class methodsFor:'documentation'!
+
+copyright
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+! !
+
+!LLVMTypeScalar class methodsFor:'queries'!
+
+isAbstract
+    "Return if this class is an abstract class.
+     True is returned here for myself only; false for subclasses.
+     Abstract subclasses must redefine again."
+
+    ^ self == LLVMTypeScalar.
+! !
+
--- a/LLVMTypeX86_FP80.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMTypeX86_FP80.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,7 +15,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-LLVMType subclass:#LLVMTypeX86_FP80
+LLVMTypeScalar subclass:#LLVMTypeX86_FP80
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -62,3 +62,10 @@
     "Created: / 13-08-2015 / 16:52:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!LLVMTypeX86_FP80 class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/LLVMTypeX86_MMX.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMTypeX86_MMX.st	Mon Aug 17 08:53:26 2015 +0100
@@ -15,7 +15,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-LLVMType subclass:#LLVMTypeX86_MMX
+LLVMTypeScalar subclass:#LLVMTypeX86_MMX
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/LLVMValue.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/LLVMValue.st	Mon Aug 17 08:53:26 2015 +0100
@@ -77,6 +77,12 @@
     "Created: / 08-08-2015 / 02:16:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+asLLVMMetadata
+    ^ LLVMCEXT ValueAsMetadata: self
+
+    "Created: / 15-08-2015 / 06:41:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 asLLVMValue
     ^ self
 
--- a/Make.proto	Mon Aug 17 09:16:53 2015 +0100
+++ b/Make.proto	Mon Aug 17 08:53:26 2015 +0100
@@ -139,14 +139,15 @@
 $(OUTDIR)LLVMCallConv.$(O) LLVMCallConv.$(H): LLVMCallConv.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMConfig.$(O) LLVMConfig.$(H): LLVMConfig.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMConstant.$(O) LLVMConstant.$(H): LLVMConstant.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMDIBuilder.$(O) LLVMDIBuilder.$(H): LLVMDIBuilder.st $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMDLLStorageClass.$(O) LLVMDLLStorageClass.$(H): LLVMDLLStorageClass.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
+$(OUTDIR)LLVMDWARFEncoding.$(O) LLVMDWARFEncoding.$(H): LLVMDWARFEncoding.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
+$(OUTDIR)LLVMDWARFLamguage.$(O) LLVMDWARFLamguage.$(H): LLVMDWARFLamguage.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDiagnosticSeverity.$(O) LLVMDiagnosticSeverity.$(H): LLVMDiagnosticSeverity.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMError.$(O) LLVMError.$(H): LLVMError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMIntPredicate.$(O) LLVMIntPredicate.$(H): LLVMIntPredicate.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMLandingPadClauseTy.$(O) LLVMLandingPadClauseTy.$(H): LLVMLandingPadClauseTy.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMLinkage.$(O) LLVMLinkage.$(H): LLVMLinkage.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
-$(OUTDIR)LLVMMetadata.$(O) LLVMMetadata.$(H): LLVMMetadata.st $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMModuleFlagBehavior.$(O) LLVMModuleFlagBehavior.$(H): LLVMModuleFlagBehavior.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMObjectArray.$(O) LLVMObjectArray.$(H): LLVMObjectArray.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)LLVMOpcode.$(O) LLVMOpcode.$(H): LLVMOpcode.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMRealPredicate.$(O) LLVMRealPredicate.$(H): LLVMRealPredicate.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
@@ -162,12 +163,14 @@
 $(OUTDIR)LLVMDiagnosticInfo.$(O) LLVMDiagnosticInfo.$(H): LLVMDiagnosticInfo.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMDisposableObject.$(O) LLVMDisposableObject.$(H): LLVMDisposableObject.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMMCJITCompilerOptions.$(O) LLVMMCJITCompilerOptions.$(H): LLVMMCJITCompilerOptions.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMMetadata.$(O) LLVMMetadata.$(H): LLVMMetadata.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMPassRegistry.$(O) LLVMPassRegistry.$(H): LLVMPassRegistry.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTargetLibraryInfo.$(O) LLVMTargetLibraryInfo.$(H): LLVMTargetLibraryInfo.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMType.$(O) LLVMType.$(H): LLVMType.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeKind.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeMismatchError.$(O) LLVMTypeMismatchError.$(H): LLVMTypeMismatchError.st $(INCLUDE_TOP)/jv/llvm_s/LLVMError.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMUse.$(O) LLVMUse.$(H): LLVMUse.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMValue.$(O) LLVMValue.$(H): LLVMValue.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMDIBuilder.$(O) LLVMDIBuilder.$(H): LLVMDIBuilder.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMModuleFlagBehavior.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMExecutionEngine.$(O) LLVMExecutionEngine.$(H): LLVMExecutionEngine.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMFunction.$(O) LLVMFunction.$(H): LLVMFunction.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMValue.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMGenericValue.$(O) LLVMGenericValue.$(H): LLVMGenericValue.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -177,24 +180,25 @@
 $(OUTDIR)LLVMModuleProvider.$(O) LLVMModuleProvider.$(H): LLVMModuleProvider.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMPassManager.$(O) LLVMPassManager.$(H): LLVMPassManager.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTargetData.$(O) LLVMTargetData.$(H): LLVMTargetData.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeDouble.$(O) LLVMTypeDouble.$(H): LLVMTypeDouble.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeFP128.$(O) LLVMTypeFP128.$(H): LLVMTypeFP128.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeFloat.$(O) LLVMTypeFloat.$(H): LLVMTypeFloat.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeFunction.$(O) LLVMTypeFunction.$(H): LLVMTypeFunction.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeHalt.$(O) LLVMTypeHalt.$(H): LLVMTypeHalt.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeInteger.$(O) LLVMTypeInteger.$(H): LLVMTypeInteger.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeLabel.$(O) LLVMTypeLabel.$(H): LLVMTypeLabel.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeMetadata.$(O) LLVMTypeMetadata.$(H): LLVMTypeMetadata.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypePPC_FP128.$(O) LLVMTypePPC_FP128.$(H): LLVMTypePPC_FP128.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeScalar.$(O) LLVMTypeScalar.$(H): LLVMTypeScalar.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeSequential.$(O) LLVMTypeSequential.$(H): LLVMTypeSequential.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeStruct.$(O) LLVMTypeStruct.$(H): LLVMTypeStruct.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeVoid.$(O) LLVMTypeVoid.$(H): LLVMTypeVoid.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeX86_FP80.$(O) LLVMTypeX86_FP80.$(H): LLVMTypeX86_FP80.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeX86_MMX.$(O) LLVMTypeX86_MMX.$(H): LLVMTypeX86_MMX.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMStXMethod.$(O) LLVMStXMethod.$(H): LLVMStXMethod.st $(INCLUDE_TOP)/jv/llvm_s/LLVMFunction.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMValue.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeArray.$(O) LLVMTypeArray.$(H): LLVMTypeArray.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeSequential.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeDouble.$(O) LLVMTypeDouble.$(H): LLVMTypeDouble.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeScalar.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeFP128.$(O) LLVMTypeFP128.$(H): LLVMTypeFP128.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeScalar.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeFloat.$(O) LLVMTypeFloat.$(H): LLVMTypeFloat.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeScalar.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeHalt.$(O) LLVMTypeHalt.$(H): LLVMTypeHalt.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeScalar.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeInteger.$(O) LLVMTypeInteger.$(H): LLVMTypeInteger.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeScalar.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypePPC_FP128.$(O) LLVMTypePPC_FP128.$(H): LLVMTypePPC_FP128.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeScalar.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypePointer.$(O) LLVMTypePointer.$(H): LLVMTypePointer.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeSequential.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeVector.$(O) LLVMTypeVector.$(H): LLVMTypeVector.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeSequential.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeX86_FP80.$(O) LLVMTypeX86_FP80.$(H): LLVMTypeX86_FP80.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeScalar.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeX86_MMX.$(O) LLVMTypeX86_MMX.$(H): LLVMTypeX86_MMX.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMType.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeScalar.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/goodies/sunit/stx_goodies_sunit.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/stx_libbasic.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
--- a/Make.spec	Mon Aug 17 09:16:53 2015 +0100
+++ b/Make.spec	Mon Aug 17 08:53:26 2015 +0100
@@ -60,14 +60,15 @@
 	LLVMCallConv \
 	LLVMConfig \
 	LLVMConstant \
-	LLVMDIBuilder \
 	LLVMDLLStorageClass \
+	LLVMDWARFEncoding \
+	LLVMDWARFLamguage \
 	LLVMDiagnosticSeverity \
 	LLVMError \
 	LLVMIntPredicate \
 	LLVMLandingPadClauseTy \
 	LLVMLinkage \
-	LLVMMetadata \
+	LLVMModuleFlagBehavior \
 	LLVMObjectArray \
 	LLVMOpcode \
 	LLVMRealPredicate \
@@ -83,12 +84,14 @@
 	LLVMDiagnosticInfo \
 	LLVMDisposableObject \
 	LLVMMCJITCompilerOptions \
+	LLVMMetadata \
 	LLVMPassRegistry \
 	LLVMTargetLibraryInfo \
 	LLVMType \
 	LLVMTypeMismatchError \
 	LLVMUse \
 	LLVMValue \
+	LLVMDIBuilder \
 	LLVMExecutionEngine \
 	LLVMFunction \
 	LLVMGenericValue \
@@ -98,24 +101,25 @@
 	LLVMModuleProvider \
 	LLVMPassManager \
 	LLVMTargetData \
+	LLVMTypeFunction \
+	LLVMTypeLabel \
+	LLVMTypeMetadata \
+	LLVMTypeScalar \
+	LLVMTypeSequential \
+	LLVMTypeStruct \
+	LLVMTypeVoid \
+	LLVMStXMethod \
+	LLVMTypeArray \
 	LLVMTypeDouble \
 	LLVMTypeFP128 \
 	LLVMTypeFloat \
-	LLVMTypeFunction \
 	LLVMTypeHalt \
 	LLVMTypeInteger \
-	LLVMTypeLabel \
-	LLVMTypeMetadata \
 	LLVMTypePPC_FP128 \
-	LLVMTypeSequential \
-	LLVMTypeStruct \
-	LLVMTypeVoid \
+	LLVMTypePointer \
+	LLVMTypeVector \
 	LLVMTypeX86_FP80 \
 	LLVMTypeX86_MMX \
-	LLVMStXMethod \
-	LLVMTypeArray \
-	LLVMTypePointer \
-	LLVMTypeVector \
 
 
 
@@ -130,14 +134,15 @@
     $(OUTDIR_SLASH)LLVMCallConv.$(O) \
     $(OUTDIR_SLASH)LLVMConfig.$(O) \
     $(OUTDIR_SLASH)LLVMConstant.$(O) \
-    $(OUTDIR_SLASH)LLVMDIBuilder.$(O) \
     $(OUTDIR_SLASH)LLVMDLLStorageClass.$(O) \
+    $(OUTDIR_SLASH)LLVMDWARFEncoding.$(O) \
+    $(OUTDIR_SLASH)LLVMDWARFLamguage.$(O) \
     $(OUTDIR_SLASH)LLVMDiagnosticSeverity.$(O) \
     $(OUTDIR_SLASH)LLVMError.$(O) \
     $(OUTDIR_SLASH)LLVMIntPredicate.$(O) \
     $(OUTDIR_SLASH)LLVMLandingPadClauseTy.$(O) \
     $(OUTDIR_SLASH)LLVMLinkage.$(O) \
-    $(OUTDIR_SLASH)LLVMMetadata.$(O) \
+    $(OUTDIR_SLASH)LLVMModuleFlagBehavior.$(O) \
     $(OUTDIR_SLASH)LLVMObjectArray.$(O) \
     $(OUTDIR_SLASH)LLVMOpcode.$(O) \
     $(OUTDIR_SLASH)LLVMRealPredicate.$(O) \
@@ -153,12 +158,14 @@
     $(OUTDIR_SLASH)LLVMDiagnosticInfo.$(O) \
     $(OUTDIR_SLASH)LLVMDisposableObject.$(O) \
     $(OUTDIR_SLASH)LLVMMCJITCompilerOptions.$(O) \
+    $(OUTDIR_SLASH)LLVMMetadata.$(O) \
     $(OUTDIR_SLASH)LLVMPassRegistry.$(O) \
     $(OUTDIR_SLASH)LLVMTargetLibraryInfo.$(O) \
     $(OUTDIR_SLASH)LLVMType.$(O) \
     $(OUTDIR_SLASH)LLVMTypeMismatchError.$(O) \
     $(OUTDIR_SLASH)LLVMUse.$(O) \
     $(OUTDIR_SLASH)LLVMValue.$(O) \
+    $(OUTDIR_SLASH)LLVMDIBuilder.$(O) \
     $(OUTDIR_SLASH)LLVMExecutionEngine.$(O) \
     $(OUTDIR_SLASH)LLVMFunction.$(O) \
     $(OUTDIR_SLASH)LLVMGenericValue.$(O) \
@@ -168,24 +175,25 @@
     $(OUTDIR_SLASH)LLVMModuleProvider.$(O) \
     $(OUTDIR_SLASH)LLVMPassManager.$(O) \
     $(OUTDIR_SLASH)LLVMTargetData.$(O) \
+    $(OUTDIR_SLASH)LLVMTypeFunction.$(O) \
+    $(OUTDIR_SLASH)LLVMTypeLabel.$(O) \
+    $(OUTDIR_SLASH)LLVMTypeMetadata.$(O) \
+    $(OUTDIR_SLASH)LLVMTypeScalar.$(O) \
+    $(OUTDIR_SLASH)LLVMTypeSequential.$(O) \
+    $(OUTDIR_SLASH)LLVMTypeStruct.$(O) \
+    $(OUTDIR_SLASH)LLVMTypeVoid.$(O) \
+    $(OUTDIR_SLASH)LLVMStXMethod.$(O) \
+    $(OUTDIR_SLASH)LLVMTypeArray.$(O) \
     $(OUTDIR_SLASH)LLVMTypeDouble.$(O) \
     $(OUTDIR_SLASH)LLVMTypeFP128.$(O) \
     $(OUTDIR_SLASH)LLVMTypeFloat.$(O) \
-    $(OUTDIR_SLASH)LLVMTypeFunction.$(O) \
     $(OUTDIR_SLASH)LLVMTypeHalt.$(O) \
     $(OUTDIR_SLASH)LLVMTypeInteger.$(O) \
-    $(OUTDIR_SLASH)LLVMTypeLabel.$(O) \
-    $(OUTDIR_SLASH)LLVMTypeMetadata.$(O) \
     $(OUTDIR_SLASH)LLVMTypePPC_FP128.$(O) \
-    $(OUTDIR_SLASH)LLVMTypeSequential.$(O) \
-    $(OUTDIR_SLASH)LLVMTypeStruct.$(O) \
-    $(OUTDIR_SLASH)LLVMTypeVoid.$(O) \
+    $(OUTDIR_SLASH)LLVMTypePointer.$(O) \
+    $(OUTDIR_SLASH)LLVMTypeVector.$(O) \
     $(OUTDIR_SLASH)LLVMTypeX86_FP80.$(O) \
     $(OUTDIR_SLASH)LLVMTypeX86_MMX.$(O) \
-    $(OUTDIR_SLASH)LLVMStXMethod.$(O) \
-    $(OUTDIR_SLASH)LLVMTypeArray.$(O) \
-    $(OUTDIR_SLASH)LLVMTypePointer.$(O) \
-    $(OUTDIR_SLASH)LLVMTypeVector.$(O) \
     $(OUTDIR_SLASH)extensions.$(O) \
 
 
--- a/abbrev.stc	Mon Aug 17 09:16:53 2015 +0100
+++ b/abbrev.stc	Mon Aug 17 08:53:26 2015 +0100
@@ -10,14 +10,15 @@
 LLVMCallConv LLVMCallConv jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMConfig LLVMConfig jv:llvm_s 'LLVM-S-Internal' 0
 LLVMConstant LLVMConstant jv:llvm_s 'LLVM-S-Core' 0
-LLVMDIBuilder LLVMDIBuilder jv:llvm_s 'LLVM-S-Core' 0
 LLVMDLLStorageClass LLVMDLLStorageClass jv:llvm_s 'LLVM-S-Core-Constants' 0
+LLVMDWARFEncoding LLVMDWARFEncoding jv:llvm_s 'LLVM-S-Core-Constants' 0
+LLVMDWARFLamguage LLVMDWARFLamguage jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMDiagnosticSeverity LLVMDiagnosticSeverity jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMError LLVMError jv:llvm_s 'LLVM-S-Core-Exceptions' 1
 LLVMIntPredicate LLVMIntPredicate jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMLandingPadClauseTy LLVMLandingPadClauseTy jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMLinkage LLVMLinkage jv:llvm_s 'LLVM-S-Core-Constants' 0
-LLVMMetadata LLVMMetadata jv:llvm_s 'LLVM-S-Core' 0
+LLVMModuleFlagBehavior LLVMModuleFlagBehavior jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMObjectArray LLVMObjectArray jv:llvm_s 'LLVM-S-Core' 0
 LLVMOpcode LLVMOpcode jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMRealPredicate LLVMRealPredicate jv:llvm_s 'LLVM-S-Core-Constants' 0
@@ -34,12 +35,14 @@
 LLVMDiagnosticInfo LLVMDiagnosticInfo jv:llvm_s 'LLVM-S-Core' 0
 LLVMDisposableObject LLVMDisposableObject jv:llvm_s 'LLVM-S-Internal' 0
 LLVMMCJITCompilerOptions LLVMMCJITCompilerOptions jv:llvm_s 'LLVM-S-Core' 0
+LLVMMetadata LLVMMetadata jv:llvm_s 'LLVM-S-Core' 0
 LLVMPassRegistry LLVMPassRegistry jv:llvm_s 'LLVM-S-Core' 0
 LLVMTargetLibraryInfo LLVMTargetLibraryInfo jv:llvm_s 'LLVM-S-Core' 0
 LLVMType LLVMType jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeMismatchError LLVMTypeMismatchError jv:llvm_s 'LLVM-S-Core-Exceptions' 1
 LLVMUse LLVMUse jv:llvm_s 'LLVM-S-Core' 0
 LLVMValue LLVMValue jv:llvm_s 'LLVM-S-Core' 0
+LLVMDIBuilder LLVMDIBuilder jv:llvm_s 'LLVM-S-Core' 0
 LLVMExecutionEngine LLVMExecutionEngine jv:llvm_s 'LLVM-S-Core' 0
 LLVMFunction LLVMFunction jv:llvm_s 'LLVM-S-Core' 0
 LLVMGenericValue LLVMGenericValue jv:llvm_s 'LLVM-S-Core' 0
@@ -49,21 +52,22 @@
 LLVMModuleProvider LLVMModuleProvider jv:llvm_s 'LLVM-S-Core' 0
 LLVMPassManager LLVMPassManager jv:llvm_s 'LLVM-S-Core' 0
 LLVMTargetData LLVMTargetData jv:llvm_s 'LLVM-S-Core' 0
+LLVMTypeFunction LLVMTypeFunction jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMTypeLabel LLVMTypeLabel jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMTypeMetadata LLVMTypeMetadata jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMTypeScalar LLVMTypeScalar jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMTypeSequential LLVMTypeSequential jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMTypeStruct LLVMTypeStruct jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMTypeVoid LLVMTypeVoid jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMStXMethod LLVMStXMethod jv:llvm_s 'LLVM-S-StX' 0
+LLVMTypeArray LLVMTypeArray jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeDouble LLVMTypeDouble jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeFP128 LLVMTypeFP128 jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeFloat LLVMTypeFloat jv:llvm_s 'LLVM-S-Core-Types' 0
-LLVMTypeFunction LLVMTypeFunction jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeHalt LLVMTypeHalt jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeInteger LLVMTypeInteger jv:llvm_s 'LLVM-S-Core-Types' 0
-LLVMTypeLabel LLVMTypeLabel jv:llvm_s 'LLVM-S-Core-Types' 0
-LLVMTypeMetadata LLVMTypeMetadata jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypePPC_FP128 LLVMTypePPC_FP128 jv:llvm_s 'LLVM-S-Core-Types' 0
-LLVMTypeSequential LLVMTypeSequential jv:llvm_s 'LLVM-S-Core-Types' 0
-LLVMTypeStruct LLVMTypeStruct jv:llvm_s 'LLVM-S-Core-Types' 0
-LLVMTypeVoid LLVMTypeVoid jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMTypePointer LLVMTypePointer jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMTypeVector LLVMTypeVector jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeX86_FP80 LLVMTypeX86_FP80 jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeX86_MMX LLVMTypeX86_MMX jv:llvm_s 'LLVM-S-Core-Types' 0
-LLVMStXMethod LLVMStXMethod jv:llvm_s 'LLVM-S-StX' 0
-LLVMTypeArray LLVMTypeArray jv:llvm_s 'LLVM-S-Core-Types' 0
-LLVMTypePointer LLVMTypePointer jv:llvm_s 'LLVM-S-Core-Types' 0
-LLVMTypeVector LLVMTypeVector jv:llvm_s 'LLVM-S-Core-Types' 0
--- a/bc.mak	Mon Aug 17 09:16:53 2015 +0100
+++ b/bc.mak	Mon Aug 17 08:53:26 2015 +0100
@@ -81,14 +81,15 @@
 $(OUTDIR)LLVMCallConv.$(O) LLVMCallConv.$(H): LLVMCallConv.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMConfig.$(O) LLVMConfig.$(H): LLVMConfig.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMConstant.$(O) LLVMConstant.$(H): LLVMConstant.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMDIBuilder.$(O) LLVMDIBuilder.$(H): LLVMDIBuilder.st $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMDLLStorageClass.$(O) LLVMDLLStorageClass.$(H): LLVMDLLStorageClass.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
+$(OUTDIR)LLVMDWARFEncoding.$(O) LLVMDWARFEncoding.$(H): LLVMDWARFEncoding.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
+$(OUTDIR)LLVMDWARFLamguage.$(O) LLVMDWARFLamguage.$(H): LLVMDWARFLamguage.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDiagnosticSeverity.$(O) LLVMDiagnosticSeverity.$(H): LLVMDiagnosticSeverity.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMError.$(O) LLVMError.$(H): LLVMError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMIntPredicate.$(O) LLVMIntPredicate.$(H): LLVMIntPredicate.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMLandingPadClauseTy.$(O) LLVMLandingPadClauseTy.$(H): LLVMLandingPadClauseTy.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMLinkage.$(O) LLVMLinkage.$(H): LLVMLinkage.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
-$(OUTDIR)LLVMMetadata.$(O) LLVMMetadata.$(H): LLVMMetadata.st $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMModuleFlagBehavior.$(O) LLVMModuleFlagBehavior.$(H): LLVMModuleFlagBehavior.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMObjectArray.$(O) LLVMObjectArray.$(H): LLVMObjectArray.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)LLVMOpcode.$(O) LLVMOpcode.$(H): LLVMOpcode.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMRealPredicate.$(O) LLVMRealPredicate.$(H): LLVMRealPredicate.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
@@ -104,12 +105,14 @@
 $(OUTDIR)LLVMDiagnosticInfo.$(O) LLVMDiagnosticInfo.$(H): LLVMDiagnosticInfo.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMDisposableObject.$(O) LLVMDisposableObject.$(H): LLVMDisposableObject.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMMCJITCompilerOptions.$(O) LLVMMCJITCompilerOptions.$(H): LLVMMCJITCompilerOptions.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMMetadata.$(O) LLVMMetadata.$(H): LLVMMetadata.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMPassRegistry.$(O) LLVMPassRegistry.$(H): LLVMPassRegistry.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTargetLibraryInfo.$(O) LLVMTargetLibraryInfo.$(H): LLVMTargetLibraryInfo.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMType.$(O) LLVMType.$(H): LLVMType.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeKind.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeMismatchError.$(O) LLVMTypeMismatchError.$(H): LLVMTypeMismatchError.st $(INCLUDE_TOP)\jv\llvm_s\LLVMError.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMUse.$(O) LLVMUse.$(H): LLVMUse.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMValue.$(O) LLVMValue.$(H): LLVMValue.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMDIBuilder.$(O) LLVMDIBuilder.$(H): LLVMDIBuilder.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMModuleFlagBehavior.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMExecutionEngine.$(O) LLVMExecutionEngine.$(H): LLVMExecutionEngine.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMFunction.$(O) LLVMFunction.$(H): LLVMFunction.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMValue.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMGenericValue.$(O) LLVMGenericValue.$(H): LLVMGenericValue.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -119,24 +122,25 @@
 $(OUTDIR)LLVMModuleProvider.$(O) LLVMModuleProvider.$(H): LLVMModuleProvider.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMPassManager.$(O) LLVMPassManager.$(H): LLVMPassManager.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTargetData.$(O) LLVMTargetData.$(H): LLVMTargetData.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeDouble.$(O) LLVMTypeDouble.$(H): LLVMTypeDouble.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeFP128.$(O) LLVMTypeFP128.$(H): LLVMTypeFP128.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeFloat.$(O) LLVMTypeFloat.$(H): LLVMTypeFloat.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeFunction.$(O) LLVMTypeFunction.$(H): LLVMTypeFunction.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeHalt.$(O) LLVMTypeHalt.$(H): LLVMTypeHalt.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeInteger.$(O) LLVMTypeInteger.$(H): LLVMTypeInteger.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeLabel.$(O) LLVMTypeLabel.$(H): LLVMTypeLabel.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeMetadata.$(O) LLVMTypeMetadata.$(H): LLVMTypeMetadata.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypePPC_FP128.$(O) LLVMTypePPC_FP128.$(H): LLVMTypePPC_FP128.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeScalar.$(O) LLVMTypeScalar.$(H): LLVMTypeScalar.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeSequential.$(O) LLVMTypeSequential.$(H): LLVMTypeSequential.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeStruct.$(O) LLVMTypeStruct.$(H): LLVMTypeStruct.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeVoid.$(O) LLVMTypeVoid.$(H): LLVMTypeVoid.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeX86_FP80.$(O) LLVMTypeX86_FP80.$(H): LLVMTypeX86_FP80.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMTypeX86_MMX.$(O) LLVMTypeX86_MMX.$(H): LLVMTypeX86_MMX.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMStXMethod.$(O) LLVMStXMethod.$(H): LLVMStXMethod.st $(INCLUDE_TOP)\jv\llvm_s\LLVMFunction.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMValue.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeArray.$(O) LLVMTypeArray.$(H): LLVMTypeArray.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeSequential.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeDouble.$(O) LLVMTypeDouble.$(H): LLVMTypeDouble.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeScalar.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeFP128.$(O) LLVMTypeFP128.$(H): LLVMTypeFP128.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeScalar.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeFloat.$(O) LLVMTypeFloat.$(H): LLVMTypeFloat.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeScalar.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeHalt.$(O) LLVMTypeHalt.$(H): LLVMTypeHalt.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeScalar.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeInteger.$(O) LLVMTypeInteger.$(H): LLVMTypeInteger.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeScalar.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypePPC_FP128.$(O) LLVMTypePPC_FP128.$(H): LLVMTypePPC_FP128.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeScalar.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypePointer.$(O) LLVMTypePointer.$(H): LLVMTypePointer.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeSequential.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTypeVector.$(O) LLVMTypeVector.$(H): LLVMTypeVector.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeSequential.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeX86_FP80.$(O) LLVMTypeX86_FP80.$(H): LLVMTypeX86_FP80.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeScalar.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMTypeX86_MMX.$(O) LLVMTypeX86_MMX.$(H): LLVMTypeX86_MMX.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMType.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeScalar.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\goodies\sunit\stx_goodies_sunit.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\stx_libbasic.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
--- a/extensions.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/extensions.st	Mon Aug 17 08:53:26 2015 +0100
@@ -2,6 +2,18 @@
 
 !Object methodsFor:'converting'!
 
+asLLVMMetadata
+    "Return representation of the receiver as LLVMMetadata."
+
+    "Raise an error - arbitrary object cannot be represented
+     as LLVM metadata"
+    self error: 'cannot be converted to an LLVM metadata'
+
+    "Created: / 15-08-2015 / 06:43:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Object methodsFor:'converting'!
+
 asLLVMValue
     "Return representation of the receiver as LLVMValue."
 
--- a/jv_llvm_s.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/jv_llvm_s.st	Mon Aug 17 08:53:26 2015 +0100
@@ -135,33 +135,79 @@
      Each entry in the list may be: a single class-name (symbol),
      or an array-literal consisting of class name and attributes.
      Attributes are: #autoload or #<os> where os is one of win32, unix,..."
-    
-    ^ "<className> or (<className> attributes...) in load order" 
-     #(
-     #LLVM #LLVMAtomicOrdering #LLVMAtomicRMWBinOp #LLVMAttribute #LLVMByteOrdering #LLVMCEXT #LLVMCallConv #LLVMConfig #LLVMConstant #LLVMDLLStorageClass #LLVMDiagnosticSeverity #LLVMIntPredicate #LLVMLandingPadClauseTy #LLVMLinkage #LLVMObjectArray #LLVMOpcode #LLVMRealPredicate #LLVMThreadLocalMode #LLVMTypeKind #LLVMVerifierFailureAction #LLVMVisibility
+
+    ^ #(
+        "<className> or (<className> attributes...) in load order"
+        LLVM
+        LLVMAtomicOrdering
+        LLVMAtomicRMWBinOp
+        LLVMAttribute
+        LLVMByteOrdering
+        LLVMCEXT
+        LLVMCallConv
+        LLVMConfig
+        LLVMConstant
+        LLVMDLLStorageClass
+        LLVMDWARFEncoding
+        LLVMDWARFLamguage
+        LLVMDiagnosticSeverity
         LLVMError
-     #'jv_llvm_s'
-     #(LLVMExamples autoload)
-     #LLVMObject #LLVMBasicBlock #LLVMContext #LLVMDiagnosticInfo #LLVMDisposableObject #LLVMMCJITCompilerOptions #LLVMPassRegistry #LLVMTargetLibraryInfo #LLVMType #LLVMUse #LLVMValue #LLVMIRBuilder #LLVMExecutionEngine #LLVMFunction #LLVMGenericValue #LLVMMCJITMemoryManager #LLVMModule #LLVMModuleProvider #LLVMPassManager #LLVMTargetData #LLVMStXMethod
+        LLVMIntPredicate
+        LLVMLandingPadClauseTy
+        LLVMLinkage
+        LLVMModuleFlagBehavior
+        LLVMObjectArray
+        LLVMOpcode
+        LLVMRealPredicate
+        LLVMThreadLocalMode
+        LLVMTypeKind
+        LLVMVerifierFailureAction
+        LLVMVisibility
+        #'jv_llvm_s'
+        (LLVMExamples autoload)
+        LLVMObject
         LLVMTypeError
+        LLVMBasicBlock
+        LLVMContext
+        LLVMDiagnosticInfo
+        LLVMDisposableObject
+        LLVMMCJITCompilerOptions
+        LLVMMetadata
+        LLVMPassRegistry
+        LLVMTargetLibraryInfo
+        LLVMType
         LLVMTypeMismatchError
+        LLVMUse
+        LLVMValue
+        LLVMDIBuilder
+        LLVMExecutionEngine
+        LLVMFunction
+        LLVMGenericValue
+        LLVMIRBuilder
+        LLVMMCJITMemoryManager
+        LLVMModule
+        LLVMModuleProvider
+        LLVMPassManager
+        LLVMTargetData
+        LLVMTypeFunction
+        LLVMTypeLabel
+        LLVMTypeMetadata
+        LLVMTypeScalar
+        LLVMTypeSequential
+        LLVMTypeStruct
+        LLVMTypeVoid
+        LLVMStXMethod
+        LLVMTypeArray
         LLVMTypeDouble
         LLVMTypeFP128
         LLVMTypeFloat
-        LLVMTypeFunction
         LLVMTypeHalt
         LLVMTypeInteger
-        LLVMTypeLabel
-        LLVMTypeMetadata
         #'LLVMTypePPC_FP128'
-        LLVMTypeSequential
-        LLVMTypeStruct
-        LLVMTypeVoid
+        LLVMTypePointer
+        LLVMTypeVector
         #'LLVMTypeX86_FP80'
         #'LLVMTypeX86_MMX'
-        LLVMTypeArray
-        LLVMTypePointer
-        LLVMTypeVector
     )
 !
 
@@ -178,6 +224,7 @@
         Object isLLVMType
         Object isLLVMValue
         Object isLLVMFunction
+        Object asLLVMMetadata
     )
 ! !
 
--- a/libInit.cc	Mon Aug 17 09:16:53 2015 +0100
+++ b/libInit.cc	Mon Aug 17 08:53:26 2015 +0100
@@ -36,14 +36,15 @@
 _LLVMCallConv_Init(pass,__pRT__,snd);
 _LLVMConfig_Init(pass,__pRT__,snd);
 _LLVMConstant_Init(pass,__pRT__,snd);
-_LLVMDIBuilder_Init(pass,__pRT__,snd);
 _LLVMDLLStorageClass_Init(pass,__pRT__,snd);
+_LLVMDWARFEncoding_Init(pass,__pRT__,snd);
+_LLVMDWARFLamguage_Init(pass,__pRT__,snd);
 _LLVMDiagnosticSeverity_Init(pass,__pRT__,snd);
 _LLVMError_Init(pass,__pRT__,snd);
 _LLVMIntPredicate_Init(pass,__pRT__,snd);
 _LLVMLandingPadClauseTy_Init(pass,__pRT__,snd);
 _LLVMLinkage_Init(pass,__pRT__,snd);
-_LLVMMetadata_Init(pass,__pRT__,snd);
+_LLVMModuleFlagBehavior_Init(pass,__pRT__,snd);
 _LLVMObjectArray_Init(pass,__pRT__,snd);
 _LLVMOpcode_Init(pass,__pRT__,snd);
 _LLVMRealPredicate_Init(pass,__pRT__,snd);
@@ -59,12 +60,14 @@
 _LLVMDiagnosticInfo_Init(pass,__pRT__,snd);
 _LLVMDisposableObject_Init(pass,__pRT__,snd);
 _LLVMMCJITCompilerOptions_Init(pass,__pRT__,snd);
+_LLVMMetadata_Init(pass,__pRT__,snd);
 _LLVMPassRegistry_Init(pass,__pRT__,snd);
 _LLVMTargetLibraryInfo_Init(pass,__pRT__,snd);
 _LLVMType_Init(pass,__pRT__,snd);
 _LLVMTypeMismatchError_Init(pass,__pRT__,snd);
 _LLVMUse_Init(pass,__pRT__,snd);
 _LLVMValue_Init(pass,__pRT__,snd);
+_LLVMDIBuilder_Init(pass,__pRT__,snd);
 _LLVMExecutionEngine_Init(pass,__pRT__,snd);
 _LLVMFunction_Init(pass,__pRT__,snd);
 _LLVMGenericValue_Init(pass,__pRT__,snd);
@@ -74,24 +77,25 @@
 _LLVMModuleProvider_Init(pass,__pRT__,snd);
 _LLVMPassManager_Init(pass,__pRT__,snd);
 _LLVMTargetData_Init(pass,__pRT__,snd);
+_LLVMTypeFunction_Init(pass,__pRT__,snd);
+_LLVMTypeLabel_Init(pass,__pRT__,snd);
+_LLVMTypeMetadata_Init(pass,__pRT__,snd);
+_LLVMTypeScalar_Init(pass,__pRT__,snd);
+_LLVMTypeSequential_Init(pass,__pRT__,snd);
+_LLVMTypeStruct_Init(pass,__pRT__,snd);
+_LLVMTypeVoid_Init(pass,__pRT__,snd);
+_LLVMStXMethod_Init(pass,__pRT__,snd);
+_LLVMTypeArray_Init(pass,__pRT__,snd);
 _LLVMTypeDouble_Init(pass,__pRT__,snd);
 _LLVMTypeFP128_Init(pass,__pRT__,snd);
 _LLVMTypeFloat_Init(pass,__pRT__,snd);
-_LLVMTypeFunction_Init(pass,__pRT__,snd);
 _LLVMTypeHalt_Init(pass,__pRT__,snd);
 _LLVMTypeInteger_Init(pass,__pRT__,snd);
-_LLVMTypeLabel_Init(pass,__pRT__,snd);
-_LLVMTypeMetadata_Init(pass,__pRT__,snd);
 _LLVMTypePPC_137FP128_Init(pass,__pRT__,snd);
-_LLVMTypeSequential_Init(pass,__pRT__,snd);
-_LLVMTypeStruct_Init(pass,__pRT__,snd);
-_LLVMTypeVoid_Init(pass,__pRT__,snd);
+_LLVMTypePointer_Init(pass,__pRT__,snd);
+_LLVMTypeVector_Init(pass,__pRT__,snd);
 _LLVMTypeX86_137FP80_Init(pass,__pRT__,snd);
 _LLVMTypeX86_137MMX_Init(pass,__pRT__,snd);
-_LLVMStXMethod_Init(pass,__pRT__,snd);
-_LLVMTypeArray_Init(pass,__pRT__,snd);
-_LLVMTypePointer_Init(pass,__pRT__,snd);
-_LLVMTypeVector_Init(pass,__pRT__,snd);
 
 _jv_137llvm_137s_extensions_Init(pass,__pRT__,snd);
 __END_PACKAGE__();
--- a/tests/LLVMTypeTests.st	Mon Aug 17 09:16:53 2015 +0100
+++ b/tests/LLVMTypeTests.st	Mon Aug 17 08:53:26 2015 +0100
@@ -171,3 +171,10 @@
     "Created: / 14-08-2015 / 06:16:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!LLVMTypeTests class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+