]> gitweb.factorcode.org Git - factor.git/commitdiff
llvm: move to unmaintained. it segfaults and the tests are disabled.
authorDoug Coleman <doug.coleman@gmail.com>
Sat, 18 Jul 2015 09:27:00 +0000 (02:27 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Sat, 18 Jul 2015 09:27:00 +0000 (02:27 -0700)
48 files changed:
extra/llvm/authors.txt [deleted file]
extra/llvm/clang/ffi/ffi.factor [deleted file]
extra/llvm/clang/ffi/platforms.txt [deleted file]
extra/llvm/core/core.factor [deleted file]
extra/llvm/core/tags.txt [deleted file]
extra/llvm/engine/engine.factor [deleted file]
extra/llvm/engine/tags.txt [deleted file]
extra/llvm/invoker/invoker-tests.factor [deleted file]
extra/llvm/invoker/invoker.factor [deleted file]
extra/llvm/invoker/tags.txt [deleted file]
extra/llvm/jit/jit-tests.factor [deleted file]
extra/llvm/jit/jit.factor [deleted file]
extra/llvm/jit/tags.txt [deleted file]
extra/llvm/reader/add.bc [deleted file]
extra/llvm/reader/add.ll [deleted file]
extra/llvm/reader/reader.factor [deleted file]
extra/llvm/reader/tags.txt [deleted file]
extra/llvm/tags.txt [deleted file]
extra/llvm/types/tags.txt [deleted file]
extra/llvm/types/types-tests.factor [deleted file]
extra/llvm/types/types.factor [deleted file]
extra/llvm/wrappers/tags.txt [deleted file]
extra/llvm/wrappers/wrappers-tests.factor [deleted file]
extra/llvm/wrappers/wrappers.factor [deleted file]
unmaintained/llvm/authors.txt [new file with mode: 0644]
unmaintained/llvm/clang/ffi/ffi.factor [new file with mode: 0644]
unmaintained/llvm/clang/ffi/platforms.txt [new file with mode: 0644]
unmaintained/llvm/core/core.factor [new file with mode: 0644]
unmaintained/llvm/core/tags.txt [new file with mode: 0644]
unmaintained/llvm/engine/engine.factor [new file with mode: 0644]
unmaintained/llvm/engine/tags.txt [new file with mode: 0644]
unmaintained/llvm/invoker/invoker-tests.factor [new file with mode: 0644]
unmaintained/llvm/invoker/invoker.factor [new file with mode: 0644]
unmaintained/llvm/invoker/tags.txt [new file with mode: 0644]
unmaintained/llvm/jit/jit-tests.factor [new file with mode: 0644]
unmaintained/llvm/jit/jit.factor [new file with mode: 0644]
unmaintained/llvm/jit/tags.txt [new file with mode: 0644]
unmaintained/llvm/reader/add.bc [new file with mode: 0644]
unmaintained/llvm/reader/add.ll [new file with mode: 0644]
unmaintained/llvm/reader/reader.factor [new file with mode: 0644]
unmaintained/llvm/reader/tags.txt [new file with mode: 0644]
unmaintained/llvm/tags.txt [new file with mode: 0644]
unmaintained/llvm/types/tags.txt [new file with mode: 0644]
unmaintained/llvm/types/types-tests.factor [new file with mode: 0644]
unmaintained/llvm/types/types.factor [new file with mode: 0644]
unmaintained/llvm/wrappers/tags.txt [new file with mode: 0644]
unmaintained/llvm/wrappers/wrappers-tests.factor [new file with mode: 0644]
unmaintained/llvm/wrappers/wrappers.factor [new file with mode: 0644]

diff --git a/extra/llvm/authors.txt b/extra/llvm/authors.txt
deleted file mode 100644 (file)
index 5645cd9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Matthew Willis
diff --git a/extra/llvm/clang/ffi/ffi.factor b/extra/llvm/clang/ffi/ffi.factor
deleted file mode 100644 (file)
index e9a83ba..0000000
+++ /dev/null
@@ -1,564 +0,0 @@
-USING: alien alien.c-types alien.libraries alien.syntax
-classes.struct combinators system unix.types ;
-IN: llvm.clang.ffi
-
-<<
-"libclang" {
-    { [ os macosx?  ] [ "libclang.dylib" ] }
-    { [ os windows? ] [ "clang.dll"      ] }
-    { [ os unix?    ] [ "/usrlibclang.so"    ] }
-} cond cdecl add-library
->>
-LIBRARY: libclang
-
-C-TYPE: CXTranslationUnitImpl
-
-TYPEDEF: void* CXIndex
-TYPEDEF: CXTranslationUnitImpl* CXTranslationUnit
-TYPEDEF: void* CXClientData
-
-STRUCT: CXUnsavedFile
-    { Filename c-string }
-    { Contents c-string }
-    { Length   ulong    } ;
-
-ENUM: CXAvailabilityKind
-  CXAvailability_Available
-  CXAvailability_Deprecated
-  CXAvailability_NotAvailable ;
-
-STRUCT: CXString
-    { data          void* }
-    { private_flags uint  } ;
-
-FUNCTION: c-string clang_getCString ( CXString string ) ;
-FUNCTION: void clang_disposeString ( CXString string ) ;
-
-FUNCTION: CXIndex clang_createIndex ( int excludeDeclarationsFromPCH,
-                                      int displayDiagnostics ) ;
-FUNCTION: void clang_disposeIndex ( CXIndex index ) ;
-
-TYPEDEF: void* CXFile
-
-FUNCTION: CXString clang_getFileName ( CXFile SFile ) ;
-FUNCTION: time_t clang_getFileTime ( CXFile SFile ) ;
-FUNCTION: uint clang_isFileMultipleIncludeGuarded ( CXTranslationUnit tu, CXFile file ) ;
-FUNCTION: CXFile clang_getFile ( CXTranslationUnit tu, c-string file_name ) ;
-
-STRUCT: CXSourceLocation
-    { ptr_data void*[2] }
-    { int_data uint     } ;
-
-STRUCT: CXSourceRange
-    { ptr_data       void*[2] }
-    { begin_int_data uint     }
-    { end_int_data   uint     } ;
-
-FUNCTION: CXSourceLocation clang_getNullLocation ( ) ;
-FUNCTION: uint clang_equalLocations ( CXSourceLocation loc1, CXSourceLocation loc2 ) ;
-
-FUNCTION: CXSourceLocation clang_getLocation ( CXTranslationUnit tu, CXFile file, uint line, uint column ) ;
-FUNCTION: CXSourceLocation clang_getLocationForOffset ( CXTranslationUnit tu,
-                                                        CXFile            file,
-                                                        uint              offset ) ;
-
-FUNCTION: CXSourceRange clang_getNullRange ( ) ;
-
-FUNCTION: CXSourceRange clang_getRange ( CXSourceLocation begin,
-                                         CXSourceLocation end ) ;
-
-FUNCTION: void clang_getInstantiationLocation ( CXSourceLocation location,
-                                                CXFile*          file,
-                                                uint*            line,
-                                                uint*            column,
-                                                uint*            offset ) ;
-
-FUNCTION: void clang_getSpellingLocation ( CXSourceLocation location,
-                                           CXFile*          file,
-                                           uint*            line,
-                                           uint*            column,
-                                           uint*            offset ) ;
-
-FUNCTION: CXSourceLocation clang_getRangeStart ( CXSourceRange range ) ;
-FUNCTION: CXSourceLocation clang_getRangeEnd ( CXSourceRange range ) ;
-
-ENUM: CXDiagnosticSeverity
-  CXDiagnostic_Ignored
-  CXDiagnostic_Note
-  CXDiagnostic_Warning
-  CXDiagnostic_Error
-  CXDiagnostic_Fatal ;
-
-TYPEDEF: void* CXDiagnostic
-
-FUNCTION: uint clang_getNumDiagnostics ( CXTranslationUnit Unit ) ;
-FUNCTION: CXDiagnostic clang_getDiagnostic ( CXTranslationUnit Unit,
-                                             uint              Index ) ;
-FUNCTION: void clang_disposeDiagnostic ( CXDiagnostic Diagnostic ) ;
-
-ENUM: CXDiagnosticDisplayOptions
-    { CXDiagnostic_DisplaySourceLocation 0x01 }
-    { CXDiagnostic_DisplayColumn         0x02 }
-    { CXDiagnostic_DisplaySourceRanges   0x04 }
-    { CXDiagnostic_DisplayOption         0x08 }
-    { CXDiagnostic_DisplayCategoryId     0x10 }
-    { CXDiagnostic_DisplayCategoryName   0x20 } ;
-
-FUNCTION: CXString clang_formatDiagnostic ( CXDiagnostic Diagnostic,
-                                            uint         Options ) ;
-FUNCTION: uint clang_defaultDiagnosticDisplayOptions ( ) ;
-
-FUNCTION: CXDiagnosticSeverity clang_getDiagnosticSeverity ( CXDiagnostic ) ;
-FUNCTION: CXSourceLocation clang_getDiagnosticLocation ( CXDiagnostic ) ;
-FUNCTION: CXString clang_getDiagnosticSpelling ( CXDiagnostic ) ;
-FUNCTION: CXString clang_getDiagnosticOption ( CXDiagnostic Diag, CXString* Disable ) ;
-FUNCTION: uint clang_getDiagnosticCategory ( CXDiagnostic ) ;
-FUNCTION: CXString clang_getDiagnosticCategoryName ( uint Category ) ;
-FUNCTION: uint clang_getDiagnosticNumRanges ( CXDiagnostic ) ;
-FUNCTION: CXSourceRange clang_getDiagnosticRange ( CXDiagnostic Diagnostic, uint Range ) ;
-FUNCTION: uint clang_getDiagnosticNumFixIts ( CXDiagnostic Diagnostic ) ;
-FUNCTION: CXString clang_getDiagnosticFixIt ( CXDiagnostic   Diagnostic,
-                                              uint           FixIt,
-                                              CXSourceRange* ReplacementRange ) ;
-FUNCTION: CXString clang_getTranslationUnitSpelling ( CXTranslationUnit CTUnit ) ;
-FUNCTION: CXTranslationUnit clang_createTranslationUnitFromSourceFile ( CXIndex        CIdx,
-                                                                        c-string       source_filename,
-                                                                        int            num_clang_command_line_args,
-                                                                        char**         clang_command_line_args,
-                                                                        uint           num_unsaved_files,
-                                                                        CXUnsavedFile* unsaved_files ) ;
-FUNCTION: CXTranslationUnit clang_createTranslationUnit ( CXIndex CIdx, c-string ast_filename ) ;
-
-ENUM: CXTranslationUnit_Flags
-    { CXTranslationUnit_None                        0x00 }
-    { CXTranslationUnit_DetailedPreprocessingRecord 0x01 }
-    { CXTranslationUnit_Incomplete                  0x02 }
-    { CXTranslationUnit_PrecompiledPreamble         0x04 }
-    { CXTranslationUnit_CacheCompletionResults      0x08 }
-    { CXTranslationUnit_CXXPrecompiledPreamble      0x10 }
-    { CXTranslationUnit_CXXChainedPCH               0x20 }
-    { CXTranslationUnit_NestedMacroInstantiations   0x40 } ;
-
-FUNCTION: uint clang_defaultEditingTranslationUnitOptions ( ) ;
-FUNCTION: CXTranslationUnit clang_parseTranslationUnit ( CXIndex        CIdx,
-                                                         c-string       source_filename,
-                                                         char**         command_line_args,
-                                                         int            num_command_line_args,
-                                                         CXUnsavedFile* unsaved_files,
-                                                         uint           num_unsaved_files,
-                                                         uint           options ) ;
-
-ENUM: CXSaveTranslationUnit_Flags CXSaveTranslationUnit_None ;
-
-FUNCTION: uint clang_defaultSaveOptions ( CXTranslationUnit TU ) ;
-FUNCTION: int clang_saveTranslationUnit ( CXTranslationUnit TU,
-                                          c-string          FileName,
-                                          uint              options ) ;
-FUNCTION: void clang_disposeTranslationUnit ( CXTranslationUnit ) ;
-
-ENUM: CXReparse_Flags CXReparse_None ;
-
-FUNCTION: uint clang_defaultReparseOptions ( CXTranslationUnit TU ) ;
-FUNCTION: int clang_reparseTranslationUnit ( CXTranslationUnit TU,
-                                             uint              num_unsaved_files,
-                                             CXUnsavedFile*    unsaved_files,
-                                             uint              options ) ;
-
-ENUM: CXTUResourceUsageKind
-    { CXTUResourceUsage_AST                                 1 }
-    { CXTUResourceUsage_Identifiers                         2 }
-    { CXTUResourceUsage_Selectors                           3 }
-    { CXTUResourceUsage_GlobalCompletionResults             4 }
-    { CXTUResourceUsage_SourceManagerContentCache           5 }
-    { CXTUResourceUsage_AST_SideTables                      6 }
-    { CXTUResourceUsage_SourceManager_Membuffer_Malloc      7 }
-    { CXTUResourceUsage_SourceManager_Membuffer_MMap        8 }
-    { CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc  9 }
-    { CXTUResourceUsage_ExternalASTSource_Membuffer_MMap   10 }
-    { CXTUResourceUsage_Preprocessor                       11 }
-    { CXTUResourceUsage_PreprocessingRecord                12 }
-    { CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN               1 }
-    { CXTUResourceUsage_MEMORY_IN_BYTES_END                12 }
-    { CXTUResourceUsage_First                               1 }
-    { CXTUResourceUsage_Last                               12 } ;
-
-FUNCTION: c-string clang_getTUResourceUsageName ( CXTUResourceUsageKind kind ) ;
-
-STRUCT: CXTUResourceUsageEntry
-    { kind   CXTUResourceUsageKind }
-    { amount ulong                 } ;
-
-STRUCT: CXTUResourceUsage
-    { data       void*                   }
-    { numEntries uint                    }
-    { entries    CXTUResourceUsageEntry* } ;
-
-FUNCTION: CXTUResourceUsage clang_getCXTUResourceUsage ( CXTranslationUnit TU ) ;
-FUNCTION: void clang_disposeCXTUResourceUsage ( CXTUResourceUsage usage ) ;
-
-ENUM: CXCursorKind
-    { CXCursor_UnexposedDecl                        1 }
-    { CXCursor_StructDecl                           2 }
-    { CXCursor_UnionDecl                            3 }
-    { CXCursor_ClassDecl                            4 }
-    { CXCursor_EnumDecl                             5 }
-    { CXCursor_FieldDecl                            6 }
-    { CXCursor_EnumConstantDecl                     7 }
-    { CXCursor_FunctionDecl                         8 }
-    { CXCursor_VarDecl                              9 }
-    { CXCursor_ParmDecl                            10 }
-    { CXCursor_ObjCInterfaceDecl                   11 }
-    { CXCursor_ObjCCategoryDecl                    12 }
-    { CXCursor_ObjCProtocolDecl                    13 }
-    { CXCursor_ObjCPropertyDecl                    14 }
-    { CXCursor_ObjCIvarDecl                        15 }
-    { CXCursor_ObjCInstanceMethodDecl              16 }
-    { CXCursor_ObjCClassMethodDecl                 17 }
-    { CXCursor_ObjCImplementationDecl              18 }
-    { CXCursor_ObjCCategoryImplDecl                19 }
-    { CXCursor_TypedefDecl                         20 }
-    { CXCursor_CXXMethod                           21 }
-    { CXCursor_Namespace                           22 }
-    { CXCursor_LinkageSpec                         23 }
-    { CXCursor_Constructor                         24 }
-    { CXCursor_Destructor                          25 }
-    { CXCursor_ConversionFunction                  26 }
-    { CXCursor_TemplateTypeParameter               27 }
-    { CXCursor_NonTypeTemplateParameter            28 }
-    { CXCursor_TemplateTemplateParameter           29 }
-    { CXCursor_FunctionTemplate                    30 }
-    { CXCursor_ClassTemplate                       31 }
-    { CXCursor_ClassTemplatePartialSpecialization  32 }
-    { CXCursor_NamespaceAlias                      33 }
-    { CXCursor_UsingDirective                      34 }
-    { CXCursor_UsingDeclaration                    35 }
-    { CXCursor_TypeAliasDecl                       36 }
-    { CXCursor_FirstDecl                            1 }
-    { CXCursor_LastDecl                            36 }
-    { CXCursor_FirstRef                            40 }
-    { CXCursor_ObjCSuperClassRef                   40 }
-    { CXCursor_ObjCProtocolRef                     41 }
-    { CXCursor_ObjCClassRef                        42 }
-    { CXCursor_TypeRef                             43 }
-    { CXCursor_CXXBaseSpecifier                    44 }
-    { CXCursor_TemplateRef                         45 }
-    { CXCursor_NamespaceRef                        46 }
-    { CXCursor_MemberRef                           47 }
-    { CXCursor_LabelRef                            48 }
-    { CXCursor_OverloadedDeclRef                   49 }
-    { CXCursor_LastRef                             49 }
-    { CXCursor_FirstInvalid                        70 }
-    { CXCursor_InvalidFile                         70 }
-    { CXCursor_NoDeclFound                         71 }
-    { CXCursor_NotImplemented                      72 }
-    { CXCursor_InvalidCode                         73 }
-    { CXCursor_LastInvalid                         73 }
-    { CXCursor_FirstExpr                          100 }
-    { CXCursor_UnexposedExpr                      100 }
-    { CXCursor_DeclRefExpr                        101 }
-    { CXCursor_MemberRefExpr                      102 }
-    { CXCursor_CallExpr                           103 }
-    { CXCursor_ObjCMessageExpr                    104 }
-    { CXCursor_BlockExpr                          105 }
-    { CXCursor_LastExpr                           105 }
-    { CXCursor_FirstStmt                          200 }
-    { CXCursor_UnexposedStmt                      200 }
-    { CXCursor_LabelStmt                          201 }
-    { CXCursor_LastStmt                           201 }
-    { CXCursor_TranslationUnit                    300 }
-    { CXCursor_FirstAttr                          400 }
-    { CXCursor_UnexposedAttr                      400 }
-    { CXCursor_IBActionAttr                       401 }
-    { CXCursor_IBOutletAttr                       402 }
-    { CXCursor_IBOutletCollectionAttr             403 }
-    { CXCursor_LastAttr                           403 }
-    { CXCursor_PreprocessingDirective             500 }
-    { CXCursor_MacroDefinition                    501 }
-    { CXCursor_MacroInstantiation                 502 }
-    { CXCursor_InclusionDirective                 503 }
-    { CXCursor_FirstPreprocessing                 500 }
-    { CXCursor_LastPreprocessing                  503 } ;
-
-STRUCT: CXCursor
-    { kind CXCursorKind }
-    { data void*[3]     } ;
-
-FUNCTION: CXCursor clang_getNullCursor ( ) ;
-FUNCTION: CXCursor clang_getTranslationUnitCursor ( CXTranslationUnit ) ;
-FUNCTION: uint clang_equalCursors ( CXCursor c1, CXCursor c2 ) ;
-FUNCTION: uint clang_hashCursor ( CXCursor ) ;
-FUNCTION: CXCursorKind clang_getCursorKind ( CXCursor ) ;
-FUNCTION: uint clang_isDeclaration ( CXCursorKind ) ;
-FUNCTION: uint clang_isReference ( CXCursorKind ) ;
-FUNCTION: uint clang_isExpression ( CXCursorKind ) ;
-FUNCTION: uint clang_isStatement ( CXCursorKind ) ;
-FUNCTION: uint clang_isInvalid ( CXCursorKind ) ;
-FUNCTION: uint clang_isTranslationUnit ( CXCursorKind ) ;
-FUNCTION: uint clang_isPreprocessing ( CXCursorKind ) ;
-FUNCTION: uint clang_isUnexposed ( CXCursorKind ) ;
-
-ENUM: CXLinkageKind
-  CXLinkage_Invalid
-  CXLinkage_NoLinkage
-  CXLinkage_Internal
-  CXLinkage_UniqueExternal
-  CXLinkage_External ;
-
-ENUM: CXLanguageKind
-  CXLanguage_Invalid
-  CXLanguage_C
-  CXLanguage_ObjC
-  CXLanguage_CPlusPlus ;
-
-FUNCTION: CXLinkageKind clang_getCursorLinkage ( CXCursor cursor ) ;
-FUNCTION: CXAvailabilityKind clang_getCursorAvailability ( CXCursor cursor ) ;
-FUNCTION: CXLanguageKind clang_getCursorLanguage ( CXCursor cursor ) ;
-
-C-TYPE: CXCursorSetImpl
-TYPEDEF: CXCursorSetImpl* CXCursorSet
-
-FUNCTION: CXCursorSet clang_createCXCursorSet ( ) ;
-FUNCTION: void clang_disposeCXCursorSet ( CXCursorSet cset ) ;
-FUNCTION: uint clang_CXCursorSet_contains ( CXCursorSet cset, CXCursor cursor ) ;
-FUNCTION: uint clang_CXCursorSet_insert ( CXCursorSet cset, CXCursor cursor ) ;
-FUNCTION: CXCursor clang_getCursorSemanticParent ( CXCursor cursor ) ;
-FUNCTION: CXCursor clang_getCursorLexicalParent ( CXCursor cursor ) ;
-FUNCTION: void clang_getOverriddenCursors ( CXCursor cursor, CXCursor** overridden, uint* num_overridden ) ;
-FUNCTION: void clang_disposeOverriddenCursors ( CXCursor* overridden ) ;
-FUNCTION: CXFile clang_getIncludedFile ( CXCursor cursor ) ;
-FUNCTION: CXCursor clang_getCursor ( CXTranslationUnit TU,
-                                     CXSourceLocation location ) ;
-FUNCTION: CXSourceLocation clang_getCursorLocation ( CXCursor ) ;
-FUNCTION: CXSourceRange clang_getCursorExtent ( CXCursor ) ;
-
-ENUM: CXTypeKind
-    { CXType_Invalid             0 }
-    { CXType_Unexposed           1 }
-    { CXType_Void                2 }
-    { CXType_Bool                3 }
-    { CXType_Char_U              4 }
-    { CXType_UChar               5 }
-    { CXType_Char16              6 }
-    { CXType_Char32              7 }
-    { CXType_UShort              8 }
-    { CXType_UInt                9 }
-    { CXType_ULong              10 }
-    { CXType_ULongLong          11 }
-    { CXType_UInt128            12 }
-    { CXType_Char_S             13 }
-    { CXType_SChar              14 }
-    { CXType_WChar              15 }
-    { CXType_Short              16 }
-    { CXType_Int                17 }
-    { CXType_Long               18 }
-    { CXType_LongLong           19 }
-    { CXType_Int128             20 }
-    { CXType_Float              21 }
-    { CXType_Double             22 }
-    { CXType_LongDouble         23 }
-    { CXType_NullPtr            24 }
-    { CXType_Overload           25 }
-    { CXType_Dependent          26 }
-    { CXType_ObjCId             27 }
-    { CXType_ObjCClass          28 }
-    { CXType_ObjCSel            29 }
-    { CXType_FirstBuiltin        2 }
-    { CXType_LastBuiltin        29 }
-    { CXType_Complex           100 }
-    { CXType_Pointer           101 }
-    { CXType_BlockPointer      102 }
-    { CXType_LValueReference   103 }
-    { CXType_RValueReference   104 }
-    { CXType_Record            105 }
-    { CXType_Enum              106 }
-    { CXType_Typedef           107 }
-    { CXType_ObjCInterface     108 }
-    { CXType_ObjCObjectPointer 109 }
-    { CXType_FunctionNoProto   110 }
-    { CXType_FunctionProto     111 } ;
-
-STRUCT: CXType
-    { kind CXTypeKind }
-    { data void*[2]   } ;
-
-FUNCTION: CXType clang_getCursorType ( CXCursor C ) ;
-FUNCTION: uint clang_equalTypes ( CXType A, CXType B ) ;
-FUNCTION: CXType clang_getCanonicalType ( CXType T ) ;
-FUNCTION: uint clang_isConstQualifiedType ( CXType T ) ;
-FUNCTION: uint clang_isVolatileQualifiedType ( CXType T ) ;
-FUNCTION: uint clang_isRestrictQualifiedType ( CXType T ) ;
-FUNCTION: CXType clang_getPointeeType ( CXType T ) ;
-FUNCTION: CXCursor clang_getTypeDeclaration ( CXType T ) ;
-FUNCTION: CXString clang_getDeclObjCTypeEncoding ( CXCursor C ) ;
-FUNCTION: CXString clang_getTypeKindSpelling ( CXTypeKind K ) ;
-FUNCTION: CXType clang_getResultType ( CXType T ) ;
-FUNCTION: CXType clang_getCursorResultType ( CXCursor C ) ;
-FUNCTION: uint clang_isPODType ( CXType T ) ;
-FUNCTION: uint clang_isVirtualBase ( CXCursor ) ;
-
-ENUM: CX_CXXAccessSpecifier
-  CX_CXXInvalidAccessSpecifier
-  CX_CXXPublic
-  CX_CXXProtected
-  CX_CXXPrivate ;
-
-FUNCTION: CX_CXXAccessSpecifier clang_getCXXAccessSpecifier ( CXCursor ) ;
-FUNCTION: uint clang_getNumOverloadedDecls ( CXCursor cursor ) ;
-FUNCTION: CXCursor clang_getOverloadedDecl ( CXCursor cursor, uint index ) ;
-FUNCTION: CXType clang_getIBOutletCollectionType ( CXCursor ) ;
-
-ENUM: CXChildVisitResult
-  CXChildVisit_Break
-  CXChildVisit_Continue
-  CXChildVisit_Recurse ;
-
-CALLBACK: CXChildVisitResult CXCursorVisitor ( CXCursor     cursor,
-                                               CXCursor     parent,
-                                               CXClientData client_data ) ;
-
-FUNCTION: uint clang_visitChildren ( CXCursor        parent,
-                                     CXCursorVisitor visitor,
-                                     CXClientData    client_data ) ;
-FUNCTION: CXString clang_getCursorUSR ( CXCursor ) ;
-FUNCTION: CXString clang_constructUSR_ObjCClass ( c-string class_name ) ;
-FUNCTION: CXString clang_constructUSR_ObjCCategory ( c-string class_name,
-                                                     c-string category_name ) ;
-FUNCTION: CXString clang_constructUSR_ObjCProtocol ( c-string protocol_name ) ;
-FUNCTION: CXString clang_constructUSR_ObjCIvar ( c-string name,
-                                                 CXString classUSR ) ;
-FUNCTION: CXString clang_constructUSR_ObjCMethod ( c-string name,
-                                                   uint     isInstanceMethod,
-                                                   CXString classUSR ) ;
-FUNCTION: CXString clang_constructUSR_ObjCProperty ( c-string property,
-                                                     CXString classUSR ) ;
-FUNCTION: CXString clang_getCursorSpelling ( CXCursor ) ;
-FUNCTION: CXString clang_getCursorDisplayName ( CXCursor ) ;
-FUNCTION: CXCursor clang_getCursorReferenced ( CXCursor ) ;
-FUNCTION: CXCursor clang_getCursorDefinition ( CXCursor ) ;
-FUNCTION: uint clang_isCursorDefinition ( CXCursor ) ;
-FUNCTION: CXCursor clang_getCanonicalCursor ( CXCursor ) ;
-FUNCTION: uint clang_CXXMethod_isStatic ( CXCursor C ) ;
-FUNCTION: uint clang_CXXMethod_isVirtual ( CXCursor C ) ;
-FUNCTION: CXCursorKind clang_getTemplateCursorKind ( CXCursor C ) ;
-FUNCTION: CXCursor clang_getSpecializedCursorTemplate ( CXCursor C ) ;
-
-ENUM: CXTokenKind
-  CXToken_Punctuation
-  CXToken_Keyword
-  CXToken_Identifier
-  CXToken_Literal
-  CXToken_Comment ;
-
-STRUCT: CXToken
-    { int_data uint[4] }
-    { ptr_data void*   } ;
-
-FUNCTION: CXTokenKind clang_getTokenKind ( CXToken ) ;
-FUNCTION: CXString clang_getTokenSpelling ( CXTranslationUnit TU,
-                                            CXToken           Token ) ;
-FUNCTION: CXSourceLocation clang_getTokenLocation ( CXTranslationUnit TU,
-                                                    CXToken           Token ) ;
-FUNCTION: CXSourceRange clang_getTokenExtent ( CXTranslationUnit TU,
-                                               CXToken           Token ) ;
-FUNCTION: void clang_tokenize ( CXTranslationUnit TU,
-                                CXSourceRange     Range,
-                                CXToken**         Tokens,
-                                uint*             NumTokens ) ;
-FUNCTION: void clang_annotateTokens ( CXTranslationUnit TU,
-                                      CXToken*          Tokens,
-                                      uint              NumTokens,
-                                      CXCursor*         Cursors ) ;
-FUNCTION: void clang_disposeTokens ( CXTranslationUnit TU,
-                                     CXToken*          Tokens,
-                                     uint              NumTokens ) ;
-
-FUNCTION: CXString clang_getCursorKindSpelling ( CXCursorKind Kind ) ;
-FUNCTION: void clang_getDefinitionSpellingAndExtent ( CXCursor cursor,
-                                                      char**   startBuf,
-                                                      char**   endBuf,
-                                                      uint*    startLine,
-                                                      uint*    startColumn,
-                                                      uint*    endLine,
-                                                      uint*    endColumn ) ;
-FUNCTION: void clang_enableStackTraces ( ) ;
-
-CALLBACK: void executeOnThreadCallback ( void* ) ;
-FUNCTION: void clang_executeOnThread ( executeOnThreadCallback* callback,
-                                       void*                    user_data,
-                                       uint                     stack_size ) ;
-
-TYPEDEF: void* CXCompletionString
-
-STRUCT: CXCompletionResult
-    { CursorKind       CXCursorKind       }
-    { CompletionString CXCompletionString } ;
-
-ENUM: CXCompletionChunkKind
-  CXCompletionChunk_Optional
-  CXCompletionChunk_TypedText
-  CXCompletionChunk_Text
-  CXCompletionChunk_Placeholder
-  CXCompletionChunk_Informative
-  CXCompletionChunk_CurrentParameter
-  CXCompletionChunk_LeftParen
-  CXCompletionChunk_RightParen
-  CXCompletionChunk_LeftBracket
-  CXCompletionChunk_RightBracket
-  CXCompletionChunk_LeftBrace
-  CXCompletionChunk_RightBrace
-  CXCompletionChunk_LeftAngle
-  CXCompletionChunk_RightAngle
-  CXCompletionChunk_Comma
-  CXCompletionChunk_ResultType
-  CXCompletionChunk_Colon
-  CXCompletionChunk_SemiColon
-  CXCompletionChunk_Equal
-  CXCompletionChunk_HorizontalSpace
-  CXCompletionChunk_VerticalSpace ;
-
-FUNCTION: CXCompletionChunkKind clang_getCompletionChunkKind ( CXCompletionString completion_string,
-                                                               uint               chunk_number ) ;
-FUNCTION: CXString clang_getCompletionChunkText ( CXCompletionString completion_string,
-                                                  uint               chunk_number ) ;
-FUNCTION: CXCompletionString clang_getCompletionChunkCompletionString ( CXCompletionString completion_string,
-                                                                        uint               chunk_number ) ;
-FUNCTION: uint clang_getNumCompletionChunks ( CXCompletionString completion_string ) ;
-FUNCTION: uint clang_getCompletionPriority ( CXCompletionString completion_string ) ;
-FUNCTION: CXAvailabilityKind clang_getCompletionAvailability ( CXCompletionString completion_string ) ;
-
-STRUCT: CXCodeCompleteResults
-    { Results CXCompletionResult* }
-    { NumResults uint             } ;
-
-ENUM: CXCodeComplete_Flags
-    { CXCodeComplete_IncludeMacros       1 }
-    { CXCodeComplete_IncludeCodePatterns 2 } ;
-
-FUNCTION: uint clang_defaultCodeCompleteOptions ( ) ;
-
-FUNCTION: CXCodeCompleteResults* clang_codeCompleteAt ( CXTranslationUnit TU,
-                                                        c-string          complete_filename,
-                                                        uint              complete_line,
-                                                        uint              complete_column,
-                                                        CXUnsavedFile*    unsaved_files,
-                                                        uint              num_unsaved_files,
-                                                        uint              options ) ;
-
-FUNCTION: void clang_sortCodeCompletionResults ( CXCompletionResult* Results, uint NumResults ) ;
-FUNCTION: void clang_disposeCodeCompleteResults ( CXCodeCompleteResults* Results ) ;
-FUNCTION: uint clang_codeCompleteGetNumDiagnostics ( CXCodeCompleteResults* Results ) ;
-
-FUNCTION: CXDiagnostic clang_codeCompleteGetDiagnostic ( CXCodeCompleteResults* Results,
-                                                         uint                   Index ) ;
-
-FUNCTION: CXString clang_getClangVersion ( ) ;
-FUNCTION: void clang_toggleCrashRecovery ( uint isEnabled ) ;
-
-CALLBACK: void CXInclusionVisitor ( CXFile            included_file,
-                                    CXSourceLocation* inclusion_stack,
-                                    uint              include_len,
-                                    CXClientData      client_data ) ;
-
-FUNCTION: void clang_getInclusions ( CXTranslationUnit  tu,
-                                     CXInclusionVisitor visitor,
-                                     CXClientData       client_data ) ;
diff --git a/extra/llvm/clang/ffi/platforms.txt b/extra/llvm/clang/ffi/platforms.txt
deleted file mode 100644 (file)
index 47e0a69..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unix
\ No newline at end of file
diff --git a/extra/llvm/core/core.factor b/extra/llvm/core/core.factor
deleted file mode 100644 (file)
index d84a618..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-
-USING: alien alien.c-types alien.libraries alien.syntax
-combinators kernel sequences system ;
-
-IN: llvm.core
-
-<<
-: add-llvm-library ( name -- )
-    dup {
-        { [ os macosx? ] [ "lib" ".dylib" surround ] }
-        { [ os unix? ] [ "lib" ".so" surround ] }
-        { [ os windows? ] [ ".dll" append ] }
-    } cond cdecl add-library ;
-
-{ "LLVMSystem" "LLVMSupport" "LLVMCore" "LLVMBitReader" }
-[ add-llvm-library ] each
->>
-
-! llvm-c/Core.h
-
-LIBRARY: LLVMCore
-
-TYPEDEF: uint unsigned
-TYPEDEF: unsigned enum
-
-ENUM: LLVMAttribute
-    { LLVMZExtAttribute         0b1 }
-    { LLVMSExtAttribute         0b10 }
-    { LLVMNoReturnAttribute     0b100 }
-    { LLVMInRegAttribute        0b1000 }
-    { LLVMStructRetAttribute    0b10000 }
-    { LLVMNoUnwindAttribute     0b100000 }
-    { LLVMNoAliasAttribute      0b1000000 }
-    { LLVMByValAttribute        0b10000000 }
-    { LLVMNestAttribute         0b100000000 }
-    { LLVMReadNoneAttribute     0b1000000000 }
-    { LLVMReadOnlyAttribute     0b10000000000 } ;
-
-ENUM: LLVMTypeKind
-  LLVMVoidTypeKind
-  LLVMFloatTypeKind
-  LLVMDoubleTypeKind
-  LLVMX86_FP80TypeKind
-  LLVMFP128TypeKind
-  LLVMPPC_FP128TypeKind
-  LLVMLabelTypeKind
-  LLVMMetadataTypeKind
-  LLVMIntegerTypeKind
-  LLVMFunctionTypeKind
-  LLVMStructTypeKind
-  LLVMArrayTypeKind
-  LLVMPointerTypeKind
-  LLVMOpaqueTypeKind
-  LLVMVectorTypeKind ;
-
-ENUM: LLVMLinkage
-  LLVMExternalLinkage
-  LLVMLinkOnceLinkage
-  LLVMWeakLinkage
-  LLVMAppendingLinkage
-  LLVMInternalLinkage
-  LLVMDLLImportLinkage
-  LLVMDLLExportLinkage
-  LLVMExternalWeakLinkage
-  LLVMGhostLinkage ;
-
-ENUM: LLVMVisibility
-  LLVMDefaultVisibility
-  LLVMHiddenVisibility
-  LLVMProtectedVisibility ;
-
-ENUM: LLVMCallConv
-  { LLVMCCallConv             0 }
-  { LLVMFastCallConv          8 }
-  { LLVMColdCallConv          9 }
-  { LLVMX86StdcallCallConv    64 }
-  { LLVMX86FastcallCallConv   65 } ;
-
-ENUM: LLVMIntPredicate
-  { LLVMIntEQ                 32 }
-  { LLVMIntNE                 33 }
-  { LLVMIntUGT                34 }
-  { LLVMIntUGE                35 }
-  { LLVMIntULT                36 }
-  { LLVMIntULE                37 }
-  { LLVMIntSGT                38 }
-  { LLVMIntSGE                39 }
-  { LLVMIntSLT                40 }
-  { LLVMIntSLE                41 } ;
-
-ENUM: LLVMRealPredicate
-  LLVMRealPredicateFalse
-  LLVMRealOEQ
-  LLVMRealOGT
-  LLVMRealOGE
-  LLVMRealOLT
-  LLVMRealOLE
-  LLVMRealONE
-  LLVMRealORD
-  LLVMRealUNO
-  LLVMRealUEQ
-  LLVMRealUGT
-  LLVMRealUGE
-  LLVMRealULT
-  LLVMRealULE
-  LLVMRealUNE
-  LLVMRealPredicateTrue ;
-
-! Opaque Types
-
-TYPEDEF: void* LLVMModuleRef
-
-TYPEDEF: void* LLVMPassManagerRef
-
-TYPEDEF: void* LLVMModuleProviderRef
-
-TYPEDEF: void* LLVMTypeRef
-
-TYPEDEF: void* LLVMTypeHandleRef
-
-TYPEDEF: void* LLVMValueRef
-
-TYPEDEF: void* LLVMBasicBlockRef
-
-TYPEDEF: void* LLVMBuilderRef
-
-TYPEDEF: void* LLVMMemoryBufferRef
-
-! Functions
-
-FUNCTION: void LLVMDisposeMessage ( c-string Message ) ;
-
-FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( c-string ModuleID ) ;
-
-FUNCTION: int LLVMAddTypeName ( LLVMModuleRef M, c-string Name, LLVMTypeRef Ty ) ;
-
-FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M ) ;
-
-FUNCTION: void LLVMDumpModule ( LLVMModuleRef M ) ;
-
-FUNCTION: LLVMModuleProviderRef
-LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M ) ;
-
-FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP ) ;
-
-! Types
-
-! LLVM types conform to the following hierarchy:
-!  
-!    types:
-!      integer type
-!      real type
-!      function type
-!      sequence types:
-!        array type
-!        pointer type
-!        vector type
-!      void type
-!      label type
-!      opaque type
-
-! See llvm::LLVMTypeKind::getTypeID.
-FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty ) ;
-
-! Operations on integer types
-FUNCTION: LLVMTypeRef LLVMInt1Type ( ) ;
-FUNCTION: LLVMTypeRef LLVMInt8Type ( ) ;
-FUNCTION: LLVMTypeRef LLVMInt16Type ( ) ;
-FUNCTION: LLVMTypeRef LLVMInt32Type ( ) ;
-FUNCTION: LLVMTypeRef LLVMInt64Type ( ) ;
-FUNCTION: LLVMTypeRef LLVMIntType ( unsigned NumBits ) ;
-FUNCTION: unsigned LLVMGetIntTypeWidth ( LLVMTypeRef IntegerTy ) ;
-
-! Operations on real types
-FUNCTION: LLVMTypeRef LLVMFloatType ( ) ;
-FUNCTION: LLVMTypeRef LLVMDoubleType ( ) ;
-FUNCTION: LLVMTypeRef LLVMX86FP80Type ( ) ;
-FUNCTION: LLVMTypeRef LLVMFP128Type ( ) ;
-FUNCTION: LLVMTypeRef LLVMPPCFP128Type ( ) ;
-
-! Operations on function types
-FUNCTION: LLVMTypeRef
-LLVMFunctionType ( LLVMTypeRef ReturnType, LLVMTypeRef* ParamTypes, unsigned ParamCount, int IsVarArg ) ;
-FUNCTION: int LLVMIsFunctionVarArg ( LLVMTypeRef FunctionTy ) ;
-FUNCTION: LLVMTypeRef LLVMGetReturnType ( LLVMTypeRef FunctionTy ) ;
-FUNCTION: unsigned LLVMCountParamTypes ( LLVMTypeRef FunctionTy ) ;
-FUNCTION: void LLVMGetParamTypes ( LLVMTypeRef FunctionTy, LLVMTypeRef* Dest ) ;
-
-! Operations on struct types
-FUNCTION: LLVMTypeRef
-LLVMStructType ( LLVMTypeRef* ElementTypes, unsigned ElementCount, int Packed ) ;
-FUNCTION: unsigned LLVMCountStructElementTypes ( LLVMTypeRef StructTy ) ;
-FUNCTION: void LLVMGetStructElementTypes ( LLVMTypeRef StructTy, LLVMTypeRef* Dest ) ;
-FUNCTION: int LLVMIsPackedStruct ( LLVMTypeRef StructTy ) ;
-
-! Operations on array, pointer, and vector types (sequence types)
-FUNCTION: LLVMTypeRef LLVMArrayType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
-FUNCTION: LLVMTypeRef LLVMPointerType ( LLVMTypeRef ElementType, unsigned AddressSpace ) ;
-FUNCTION: LLVMTypeRef LLVMVectorType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
-
-FUNCTION: LLVMTypeRef LLVMGetElementType ( LLVMTypeRef Ty ) ;
-FUNCTION: unsigned LLVMGetArrayLength ( LLVMTypeRef ArrayTy ) ;
-FUNCTION: unsigned LLVMGetPointerAddressSpace ( LLVMTypeRef PointerTy ) ;
-FUNCTION: unsigned LLVMGetVectorSize ( LLVMTypeRef VectorTy ) ;
-
-! Operations on other types
-FUNCTION: LLVMTypeRef LLVMVoidType ( ) ;
-FUNCTION: LLVMTypeRef LLVMLabelType ( ) ;
-FUNCTION: LLVMTypeRef LLVMOpaqueType ( ) ;
-
-! Operations on type handles
-FUNCTION: LLVMTypeHandleRef LLVMCreateTypeHandle ( LLVMTypeRef PotentiallyAbstractTy ) ;
-FUNCTION: void LLVMRefineType ( LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy ) ;
-FUNCTION: LLVMTypeRef LLVMResolveTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
-FUNCTION: void LLVMDisposeTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
-
-! Types end
-
-FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn ) ;
-
-FUNCTION: void LLVMGetParams ( LLVMValueRef Fn, LLVMValueRef* Params ) ;
-
-FUNCTION: LLVMValueRef
-LLVMAddFunction ( LLVMModuleRef M, c-string Name, LLVMTypeRef FunctionTy ) ;
-
-FUNCTION: LLVMValueRef LLVMGetFirstFunction ( LLVMModuleRef M ) ;
-
-FUNCTION: LLVMValueRef LLVMGetNextFunction ( LLVMValueRef Fn ) ;
-
-FUNCTION: unsigned LLVMGetFunctionCallConv ( LLVMValueRef Fn ) ;
-
-FUNCTION: void LLVMSetFunctionCallConv ( LLVMValueRef Fn, unsigned CC ) ;
-
-FUNCTION: LLVMBasicBlockRef
-LLVMAppendBasicBlock ( LLVMValueRef Fn, c-string Name ) ;
-
-FUNCTION: LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef BB ) ;
-
-! Values
-
-FUNCTION: LLVMTypeRef LLVMTypeOf ( LLVMValueRef Val ) ;
-FUNCTION: c-string LLVMGetValueName ( LLVMValueRef Val ) ;
-FUNCTION: void LLVMSetValueName ( LLVMValueRef Val, c-string Name ) ;
-FUNCTION: void LLVMDumpValue ( LLVMValueRef Val ) ;
-
-! Instruction Builders
-
-FUNCTION: LLVMBuilderRef LLVMCreateBuilder ( ) ;
-FUNCTION: void LLVMPositionBuilder
-( LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr ) ;
-FUNCTION: void LLVMPositionBuilderBefore
-( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
-FUNCTION: void LLVMPositionBuilderAtEnd
-( LLVMBuilderRef Builder, LLVMBasicBlockRef Block ) ;
-FUNCTION: LLVMBasicBlockRef LLVMGetInsertBlock
-( LLVMBuilderRef Builder ) ;
-FUNCTION: void LLVMClearInsertionPosition
-( LLVMBuilderRef Builder ) ;
-FUNCTION: void LLVMInsertIntoBuilder
-( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
-FUNCTION: void LLVMDisposeBuilder
-( LLVMBuilderRef Builder ) ;
-
-! IB Terminators
-
-FUNCTION: LLVMValueRef LLVMBuildRetVoid
-( LLVMBuilderRef Builder ) ;
-FUNCTION: LLVMValueRef LLVMBuildRet
-( LLVMBuilderRef Builder, LLVMValueRef V ) ;
-FUNCTION: LLVMValueRef LLVMBuildBr
-( LLVMBuilderRef Builder, LLVMBasicBlockRef Dest ) ;
-FUNCTION: LLVMValueRef LLVMBuildCondBr
-( LLVMBuilderRef Builder, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else ) ;
-FUNCTION: LLVMValueRef LLVMBuildSwitch
-( LLVMBuilderRef Builder, LLVMValueRef V, LLVMBasicBlockRef Else, unsigned NumCases ) ;
-FUNCTION: LLVMValueRef LLVMBuildInvoke
-( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs,
-  LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildUnwind
-( LLVMBuilderRef Builder ) ;
-FUNCTION: LLVMValueRef LLVMBuildUnreachable
-( LLVMBuilderRef Builder ) ;
-
-! IB Add Case to Switch
-
-FUNCTION: void LLVMAddCase
-( LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest ) ;
-
-! IB Arithmetic
-
-FUNCTION: LLVMValueRef LLVMBuildAdd
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildSub
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildMul
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildUDiv
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildSDiv
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildFDiv
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildURem
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildSRem
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildFRem
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildShl
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildLShr
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildAShr
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildAnd
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildOr
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildXor
-( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildNeg
-( LLVMBuilderRef Builder, LLVMValueRef V, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildNot
-( LLVMBuilderRef Builder, LLVMValueRef V, c-string Name ) ;
-
-! IB Memory
-
-FUNCTION: LLVMValueRef LLVMBuildMalloc
-( LLVMBuilderRef Builder, LLVMTypeRef Ty, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildArrayMalloc
-( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildAlloca
-( LLVMBuilderRef Builder, LLVMTypeRef Ty, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildArrayAlloca
-( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildFree
-( LLVMBuilderRef Builder, LLVMValueRef PointerVal ) ;
-FUNCTION: LLVMValueRef LLVMBuildLoad
-( LLVMBuilderRef Builder, LLVMValueRef PointerVal, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildStore
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMValueRef Ptr ) ;
-FUNCTION: LLVMValueRef LLVMBuildGEP
-( LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices,
-  unsigned NumIndices, c-string Name ) ;
-
-! IB Casts
-
-FUNCTION: LLVMValueRef LLVMBuildTrunc
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildZExt
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildSExt
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildFPToUI
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildFPToSI
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildUIToFP
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildSIToFP
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildFPTrunc
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildFPExt
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildPtrToInt
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildIntToPtr
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildBitCast
-( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
-
-! IB Comparisons
-
-FUNCTION: LLVMValueRef LLVMBuildICmp
-( LLVMBuilderRef Builder, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildFCmp
-( LLVMBuilderRef Builder, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
-
-! IB Misc Instructions
-
-FUNCTION: LLVMValueRef LLVMBuildPhi
-( LLVMBuilderRef Builder, LLVMTypeRef Ty, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildCall
-( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildSelect
-( LLVMBuilderRef Builder, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildVAArg
-( LLVMBuilderRef Builder, LLVMValueRef List, LLVMTypeRef Ty, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildExtractElement
-( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef Index, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildInsertElement
-( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildShuffleVector
-( LLVMBuilderRef Builder, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildExtractValue
-( LLVMBuilderRef Builder, LLVMValueRef AggVal, unsigned Index, c-string Name ) ;
-FUNCTION: LLVMValueRef LLVMBuildInsertValue
-( LLVMBuilderRef Builder, LLVMValueRef AggVal, LLVMValueRef EltVal, unsigned Index, c-string Name ) ;
-
-! Memory Buffers/Bit Reader
-
-FUNCTION: int LLVMCreateMemoryBufferWithContentsOfFile
-( c-string Path, LLVMMemoryBufferRef* OutMemBuf, c-string* OutMessage ) ;
-
-FUNCTION: void LLVMDisposeMemoryBuffer ( LLVMMemoryBufferRef MemBuf ) ;
-
-LIBRARY: LLVMBitReader
-
-FUNCTION: int LLVMParseBitcode
-( LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule, c-string* OutMessage ) ;
-
-FUNCTION: int LLVMGetBitcodeModuleProvider
-( LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef* OutMP, c-string* OutMessage ) ;
diff --git a/extra/llvm/core/tags.txt b/extra/llvm/core/tags.txt
deleted file mode 100644 (file)
index 700f0dc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-not tested
diff --git a/extra/llvm/engine/engine.factor b/extra/llvm/engine/engine.factor
deleted file mode 100644 (file)
index e653368..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.c-types alien.libraries alien.syntax kernel
-llvm.core sequences ;
-IN: llvm.engine
-
-<<
-{
-    "LLVMExecutionEngine" "LLVMTarget" "LLVMAnalysis" "LLVMipa"
-    "LLVMTransformUtils" "LLVMScalarOpts" "LLVMCodeGen"
-    "LLVMAsmPrinter" "LLVMSelectionDAG" "LLVMX86CodeGen"
-    "LLVMJIT" "LLVMInterpreter"
-} [ add-llvm-library ] each
->>
-
-! llvm-c/ExecutionEngine.h
-
-LIBRARY: LLVMExecutionEngine
-
-TYPEDEF: void* LLVMGenericValueRef
-TYPEDEF: void* LLVMExecutionEngineRef
-
-FUNCTION: LLVMGenericValueRef LLVMCreateGenericValueOfInt
-( LLVMTypeRef Ty, ulonglong N, int IsSigned ) ;
-
-FUNCTION: ulonglong LLVMGenericValueToInt
-( LLVMGenericValueRef GenVal, int IsSigned ) ;
-
-FUNCTION: int LLVMCreateExecutionEngine
-( LLVMExecutionEngineRef *OutEE, LLVMModuleProviderRef MP, c-string* OutError ) ;
-
-FUNCTION: int LLVMCreateJITCompiler
-( LLVMExecutionEngineRef* OutJIT, LLVMModuleProviderRef MP, unsigned OptLevel, c-string* OutError ) ;
-
-FUNCTION: void LLVMDisposeExecutionEngine ( LLVMExecutionEngineRef EE ) ;
-
-FUNCTION: void LLVMFreeMachineCodeForFunction ( LLVMExecutionEngineRef EE, LLVMValueRef F ) ;
-
-FUNCTION: void LLVMAddModuleProvider ( LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP ) ;
-
-FUNCTION: int LLVMRemoveModuleProvider
-( LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP, LLVMModuleRef* OutMod, c-string* OutError ) ;
-
-FUNCTION: int LLVMFindFunction
-( LLVMExecutionEngineRef EE, c-string Name, LLVMValueRef* OutFn ) ;
-
-FUNCTION: void* LLVMGetPointerToGlobal ( LLVMExecutionEngineRef EE, LLVMValueRef Global ) ;
-
-FUNCTION: LLVMGenericValueRef LLVMRunFunction
-( LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned NumArgs, LLVMGenericValueRef* Args ) ;
diff --git a/extra/llvm/engine/tags.txt b/extra/llvm/engine/tags.txt
deleted file mode 100644 (file)
index 700f0dc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-not tested
diff --git a/extra/llvm/invoker/invoker-tests.factor b/extra/llvm/invoker/invoker-tests.factor
deleted file mode 100644 (file)
index dca1df2..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: alien.llvm io.pathnames llvm.invoker llvm.reader tools.test ;
-
-{ 3 } [
-    << "resource:extra/llvm/reader/add.bc" install-bc >> 1 2 add
-] unit-test
diff --git a/extra/llvm/invoker/invoker.factor b/extra/llvm/invoker/invoker.factor
deleted file mode 100644 (file)
index 64a2ac9..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien alien.data arrays assocs compiler.units
-effects io.backend io.pathnames kernel llvm.core llvm.jit
-llvm.reader llvm.types make namespaces sequences
-specialized-arrays vocabs words ;
-QUALIFIED-WITH: alien.c-types c
-SPECIALIZED-ARRAY: c:void*
-IN: llvm.invoker
-
-! get function name, ret type, param types and names
-
-! load module
-! iterate through functions in a module
-
-TUPLE: function name alien return params ;
-
-: params ( llvm-function -- param-list )
-    dup LLVMCountParams c:void* <c-array>
-    [ LLVMGetParams ] keep >array
-    [ [ LLVMGetValueName ] [ LLVMTypeOf tref> ] bi 2array ] map ;
-
-: <function> ( LLVMValueRef -- function )
-    function new
-    over LLVMGetValueName >>name
-    over LLVMTypeOf tref> type>> return>> >>return
-    swap params >>params ;
-
-: (functions) ( llvm-function -- )
-    [ dup , LLVMGetNextFunction (functions) ] when* ;
-
-: functions ( llvm-module -- functions )
-    LLVMGetFirstFunction [ (functions) ] { } make [ <function> ] map ;
-
-: function-effect ( function -- effect )
-    [ params>> keys ] [ return>> void? 0 1 ? ] bi <effect> ;
-
-: install-function ( function -- )
-    dup name>> "alien.llvm" create-vocab drop
-    "alien.llvm" create-word swap
-    [
-        dup name>> function-pointer ,
-        dup return>> c:lookup-c-type ,
-        dup params>> [ second c:lookup-c-type ] map ,
-        cdecl , \ alien-indirect ,
-    ] [ ] make swap function-effect [ define-declared ] with-compilation-unit ;
-
-: install-module ( name -- )
-    current-jit mps>> at [
-        module>> functions [ install-function ] each
-    ] [ "no such module" throw ] if* ;
-
-: install-bc ( path -- )
-    [ normalize-path ] [ file-name ] bi
-    [ load-into-jit ] keep install-module ;
-
-<< "alien.llvm" create-vocab drop >>
diff --git a/extra/llvm/invoker/tags.txt b/extra/llvm/invoker/tags.txt
deleted file mode 100644 (file)
index 700f0dc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-not tested
diff --git a/extra/llvm/jit/jit-tests.factor b/extra/llvm/jit/jit-tests.factor
deleted file mode 100644 (file)
index e9d1fb0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: destructors llvm.jit llvm.wrappers tools.test ;
-
-{ } [ "test" <module> "test" add-module "test" remove-module ] unit-test
diff --git a/extra/llvm/jit/jit.factor b/extra/llvm/jit/jit.factor
deleted file mode 100644 (file)
index eb3bebe..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien.c-types alien.data alien.syntax assocs
-destructors kernel llvm.core llvm.engine llvm.wrappers
-namespaces ;
-
-IN: llvm.jit
-
-TUPLE: jit ee mps ;
-
-: empty-engine ( -- engine )
-    "initial-module" <module> <provider> <engine> ;
-
-: <jit> ( -- jit )
-    jit new empty-engine >>ee H{ } clone >>mps ;
-
-: current-jit ( -- jit )
-    \ current-jit global [ drop <jit> ] cache ;
-
-: (remove-functions) ( function -- )
-    current-jit ee>> value>> over LLVMFreeMachineCodeForFunction
-    LLVMGetNextFunction dup ALIEN: 0 = [ drop ] [ (remove-functions) ] if ;
-
-: remove-functions ( module -- )
-    ! free machine code for each function in module
-    LLVMGetFirstFunction dup ALIEN: 0 = [ drop ] [ (remove-functions) ] if ;
-
-: remove-provider ( provider -- )
-    current-jit ee>> value>> swap value>> f void* <ref> f void* <ref>
-    [ LLVMRemoveModuleProvider drop ] 2keep void* deref [ llvm-throw ] when*
-    void* deref module new swap >>value
-    [ value>> remove-functions ] with-disposal ;
-
-: remove-module ( name -- )
-    dup current-jit mps>> at [
-        remove-provider
-        current-jit mps>> delete-at
-    ] [ drop ] if* ;
-
-: add-module ( module name -- )
-    [ <provider> ] dip [ remove-module ] keep
-    current-jit ee>> value>> pick
-    [ [ value>> LLVMAddModuleProvider ] [ t >>disposed drop ] bi ] with-disposal
-    current-jit mps>> set-at ;
-
-: function-pointer ( name -- alien )
-    current-jit ee>> value>> dup
-    rot f void* <ref> [ LLVMFindFunction drop ] keep
-    void* deref LLVMGetPointerToGlobal ;
diff --git a/extra/llvm/jit/tags.txt b/extra/llvm/jit/tags.txt
deleted file mode 100644 (file)
index 700f0dc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-not tested
diff --git a/extra/llvm/reader/add.bc b/extra/llvm/reader/add.bc
deleted file mode 100644 (file)
index c0ba738..0000000
Binary files a/extra/llvm/reader/add.bc and /dev/null differ
diff --git a/extra/llvm/reader/add.ll b/extra/llvm/reader/add.ll
deleted file mode 100644 (file)
index 4ac57a2..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-define i32 @add(i32 %x, i32 %y) {
-entry:
-  %sum = add i32 %x, %y
-  ret i32 %sum
-}
diff --git a/extra/llvm/reader/reader.factor b/extra/llvm/reader/reader.factor
deleted file mode 100644 (file)
index 90cf36f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien.c-types alien.data alien.syntax
-destructors kernel llvm.core llvm.engine llvm.jit llvm.wrappers
-;
-
-IN: llvm.reader
-
-: buffer>module ( buffer -- module )
-    [
-        value>> f void* <ref> f void* <ref>
-        [ LLVMParseBitcode drop ] 2keep
-        void* deref [ llvm-throw ] when* void* deref
-        module new swap >>value
-    ] with-disposal ;
-
-: load-module ( path -- module )
-    <buffer> buffer>module ;
-
-: load-into-jit ( path name -- )
-    [ load-module ] dip add-module ;
diff --git a/extra/llvm/reader/tags.txt b/extra/llvm/reader/tags.txt
deleted file mode 100644 (file)
index 700f0dc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-not tested
diff --git a/extra/llvm/tags.txt b/extra/llvm/tags.txt
deleted file mode 100644 (file)
index ba3ee02..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-bindings
-not tested
diff --git a/extra/llvm/types/tags.txt b/extra/llvm/types/tags.txt
deleted file mode 100644 (file)
index 700f0dc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-not tested
diff --git a/extra/llvm/types/types-tests.factor b/extra/llvm/types/types-tests.factor
deleted file mode 100644 (file)
index 8e57fb1..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: kernel llvm.types sequences tools.test ;
-
-{ T{ integer f 32 }  } [ " i32 " parse-type ] unit-test
-{ float } [ " float " parse-type ] unit-test
-{ T{ pointer f f x86_fp80 } } [ " x86_fp80 * " parse-type ] unit-test
-{ T{ vector f f 4 T{ integer f 32 } } } [ " < 4 x i32 > " parse-type ] unit-test
-{ T{ struct f f { float double } f } } [ TYPE: { float , double } ; ] unit-test
-{ T{ array f f 0 float } } [ TYPE: [ 0 x float ] ; ] unit-test
-
-{ label void metadata }
-[ [ " label " " void " " metadata " ] [ parse-type ] each ] unit-test
-
-{ T{ function f f float { float float } t } }
-[ TYPE: float ( float , float , ... ) ; ] unit-test
-
-{ T{ struct f f { float TYPE: i32 (i32)* ; } t } }
-[ TYPE: < { float, i32 (i32)* } > ; ] unit-test
-
-{ t } [ TYPE: i32 ; TYPE: i32 ; [ >tref ] same? ] unit-test
-{ t } [ TYPE: i32 * ; TYPE: i32 * ; [ >tref ] same? ] unit-test
-
-{ TYPE: i32 ; } [ TYPE: i32 ; >tref tref> ] unit-test
-{ TYPE: float ; } [ TYPE: float ; >tref tref> ] unit-test
-{ TYPE: double ; } [ TYPE: double ; >tref tref> ] unit-test
-{ TYPE: x86_fp80 ; } [ TYPE: x86_fp80 ; >tref tref> ] unit-test
-{ TYPE: fp128 ; } [ TYPE: fp128 ; >tref tref> ] unit-test
-{ TYPE: ppc_fp128 ; } [ TYPE: ppc_fp128 ; >tref tref> ] unit-test
-{ TYPE: opaque ; } [ TYPE: opaque ; >tref tref> ] unit-test
-{ TYPE: label ; } [ TYPE: label ; >tref tref> ] unit-test
-{ TYPE: void ; } [ TYPE: void ; >tref tref> ] unit-test
-{ TYPE: i32* ; } [ TYPE: i32* ; >tref tref> ] unit-test
-{ TYPE: < 2 x i32 > ; } [ TYPE: < 2 x i32 > ; >tref tref> ] unit-test
-{ TYPE: [ 0 x i32 ] ; } [ TYPE: [ 0 x i32 ] ; >tref tref> ] unit-test
-{ TYPE: { i32, i32 } ; } [ TYPE: { i32, i32 } ; >tref tref> ] unit-test
-{ TYPE: < { i32, i32 } > ; } [ TYPE: < { i32, i32 } > ; >tref tref> ] unit-test
-{ TYPE: i32 ( i32 ) ; } [ TYPE: i32 ( i32 ) ; >tref tref> ] unit-test
-{ TYPE: \1* ; } [ TYPE: \1* ; >tref tref> ] unit-test
-{ TYPE: { i32, \2* } ; } [ TYPE: { i32, \2* } ; >tref tref> ] unit-test
diff --git a/extra/llvm/types/types.factor b/extra/llvm/types/types.factor
deleted file mode 100644 (file)
index b53f716..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien.c-types alien.data arrays combinators
-kernel llvm.core locals math.parser math multiline namespaces
-parser peg.ebnf sequences sequences.deep specialized-arrays
-strings vocabs words ;
-SPECIALIZED-ARRAY: void*
-IN: llvm.types
-
-! Type resolution strategy:
-!  pass 1:
-!    create the type with uprefs mapped to opaque types
-!    cache typerefs in enclosing types for pass 2
-!    if our type is concrete, then we are done
-!
-!  pass 2:
-!    wrap our abstract type in a type handle
-!    create a second type, using the cached enclosing type info
-!    resolve the first type to the second
-!
-GENERIC: (>tref) ( type -- LLVMTypeRef )
-GENERIC: ((tref>)) ( LLVMTypeRef type -- type )
-GENERIC: c-type ( type -- str )
-
-! default implementation for simple types
-M: object ((tref>)) nip ;
-: unsupported-type ( -- )
-    "cannot generate c-type: unsupported llvm type" throw ;
-M: object c-type unsupported-type ;
-
-TUPLE: integer size ;
-C: <integer> integer
-
-M: integer (>tref) size>> LLVMIntType ;
-M: integer ((tref>)) swap LLVMGetIntTypeWidth >>size ;
-M: integer c-type size>> {
-    { 64 [ "longlong" ] }
-    { 32 [ "int" ] }
-    { 16 [ "short" ] }
-    { 8  [ "char" ] }
-    [ unsupported-type ]
-} case ;
-
-SINGLETONS: float double x86_fp80 fp128 ppc_fp128 ;
-
-M: float (>tref) drop LLVMFloatType ;
-M: double (>tref) drop LLVMDoubleType ;
-M: double c-type drop "double" ;
-M: x86_fp80 (>tref) drop LLVMX86FP80Type ;
-M: fp128 (>tref) drop LLVMFP128Type ;
-M: ppc_fp128 (>tref) drop LLVMPPCFP128Type ;
-
-SINGLETONS: opaque label void metadata ;
-
-M: opaque (>tref) drop LLVMOpaqueType ;
-M: label (>tref) drop LLVMLabelType ;
-M: void (>tref) drop LLVMVoidType ;
-M: void c-type drop "void" ;
-M: metadata (>tref) drop
-    "metadata types unsupported by llvm c bindings" throw ;
-
-! enclosing types cache their llvm refs during
-! the first pass, used in the second pass to
-! resolve uprefs
-TUPLE: enclosing cached ;
-
-GENERIC: clean ( type -- )
-GENERIC: clean* ( type -- )
-M: object clean drop ;
-M: enclosing clean f >>cached clean* ;
-
-! builds the stack of types that uprefs need to refer to
-SYMBOL: types
-:: push-type ( type quot: ( type -- LLVMTypeRef ) -- LLVMTypeRef )
-    type types get push
-    type quot call( type -- LLVMTypeRef )
-    types get pop over >>cached drop ;
-
-DEFER: <up-ref>
-:: push-ref ( ref quot: ( LLVMTypeRef -- type ) -- type )
-    ref types get index
-    [ types get length swap - <up-ref> ] [
-        ref types get push
-        ref quot call( LLVMTypeRef -- type )
-        types get pop drop
-    ] if* ;
-
-GENERIC: (>tref)* ( type -- LLVMTypeRef )
-M: enclosing (>tref) [ (>tref)* ] push-type ;
-
-DEFER: type-kind
-GENERIC: (tref>)* ( LLVMTypeRef type -- type )
-M: enclosing ((tref>)) [ (tref>)* ] curry push-ref ;
-
-: (tref>) ( LLVMTypeRef -- type ) dup type-kind ((tref>)) ;
-
-TUPLE: pointer < enclosing type ;
-: <pointer> ( t -- o ) pointer new swap >>type ;
-
-M: pointer (>tref)* type>> (>tref) 0 LLVMPointerType ;
-M: pointer clean* type>> clean ;
-M: pointer (tref>)* swap LLVMGetElementType (tref>) >>type ;
-M: pointer c-type type>> 8 <integer> = "c-string" "void*" ? ;
-
-TUPLE: vector < enclosing size type ;
-: <vector> ( s t -- o )
-    vector new
-    swap >>type swap >>size ;
-
-M: vector (>tref)* [ type>> (>tref) ] [ size>> ] bi LLVMVectorType ;
-M: vector clean* type>> clean ;
-M: vector (tref>)*
-    over LLVMGetElementType (tref>) >>type
-    swap LLVMGetVectorSize >>size ;
-
-TUPLE: struct < enclosing types packed? ;
-: <struct> ( ts p? -- o )
-    struct new
-    swap >>packed? swap >>types ;
-
-M: struct (>tref)*
-    [ types>> [ (>tref) ] map void* >c-array ]
-    [ types>> length ]
-    [ packed?>> 1 0 ? ] tri LLVMStructType ;
-M: struct clean* types>> [ clean ] each ;
-M: struct (tref>)*
-    over LLVMIsPackedStruct 0 = not >>packed?
-    swap dup LLVMCountStructElementTypes void* <c-array>
-    [ LLVMGetStructElementTypes ] keep >array
-    [ (tref>) ] map >>types ;
-
-TUPLE: array < enclosing size type ;
-: <array> ( s t -- o )
-    array new
-    swap >>type swap >>size ;
-
-M: array (>tref)* [ type>> (>tref) ] [ size>> ] bi LLVMArrayType ;
-M: array clean* type>> clean ;
-M: array (tref>)*
-    over LLVMGetElementType (tref>) >>type
-    swap LLVMGetArrayLength >>size ;
-
-SYMBOL: ...
-TUPLE: function < enclosing return params vararg? ;
-: <function> ( ret params var? -- o )
-    function new
-    swap >>vararg? swap >>params swap >>return ;
-
-M: function (>tref)* {
-    [ return>> (>tref) ]
-    [ params>> [ (>tref) ] map void* >c-array ]
-    [ params>> length ]
-    [ vararg?>> 1 0 ? ]
-} cleave LLVMFunctionType ;
-M: function clean* [ return>> clean ] [ params>> [ clean ] each ] bi ;
-M: function (tref>)*
-    over LLVMIsFunctionVarArg 0 = not >>vararg?
-    over LLVMGetReturnType (tref>) >>return
-    swap dup LLVMCountParamTypes void* <c-array>
-    [ LLVMGetParamTypes ] keep >array
-    [ (tref>) ] map >>params ;
-
-: type-kind ( LLVMTypeRef -- class )
-    LLVMGetTypeKind {
-        { LLVMVoidTypeKind [ void ] }
-        { LLVMFloatTypeKind [ float ] }
-        { LLVMDoubleTypeKind [ double ] }
-        { LLVMX86_FP80TypeKind [ x86_fp80 ] }
-        { LLVMFP128TypeKind [ fp128 ] }
-        { LLVMPPC_FP128TypeKind [ ppc_fp128 ] }
-        { LLVMLabelTypeKind [ label ] }
-        { LLVMIntegerTypeKind [ integer new ] }
-        { LLVMFunctionTypeKind [ function new ] }
-        { LLVMStructTypeKind [ struct new ] }
-        { LLVMArrayTypeKind [ array new ] }
-        { LLVMPointerTypeKind [ pointer new ] }
-        { LLVMOpaqueTypeKind [ opaque ] }
-        { LLVMVectorTypeKind [ vector new ] }
-   } case ;
-
-TUPLE: up-ref height ;
-C: <up-ref> up-ref
-
-M: up-ref (>tref)
-    types get length swap height>> - types get nth
-    cached>> [ LLVMOpaqueType ] unless* ;
-
-: resolve-types ( typeref typeref -- typeref )
-    over LLVMCreateTypeHandle [ LLVMRefineType ] dip
-    [ LLVMResolveTypeHandle ] keep LLVMDisposeTypeHandle ;
-
-: >tref-caching ( type -- LLVMTypeRef )
-    V{ } clone types [ (>tref) ] with-variable ;
-
-: >tref ( type -- LLVMTypeRef )
-    [ >tref-caching ] [ >tref-caching ] [ clean ] tri
-    2dup = [ drop ] [ resolve-types ] if ;
-
-: tref> ( LLVMTypeRef -- type )
-    V{ } clone types [ (tref>) ] with-variable ;
-
-: t. ( type -- )
-    >tref
-    "type-info" LLVMModuleCreateWithName
-    [ "t" rot LLVMAddTypeName drop ]
-    [ LLVMDumpModule ]
-    [ LLVMDisposeModule ] tri ;
-
-EBNF: parse-type
-
-WhiteSpace = " "*
-
-Zero = "0" => [[ drop 0 ]]
-LeadingDigit = [1-9]
-DecimalDigit = [0-9]
-Number = LeadingDigit:d (DecimalDigit)*:ds => [[ ds d prefix string>number ]]
-WhiteNumberSpace = WhiteSpace Number:n WhiteSpace => [[ n ]]
-WhiteZeroSpace = WhiteSpace (Zero | Number):n WhiteSpace => [[ n ]]
-
-Integer = "i" Number:n => [[ n <integer> ]]
-FloatingPoint = ( "float" | "double" | "x86_fp80" | "fp128" | "ppc_fp128" ) => [[ "llvm.types" vocab lookup-word ]]
-LabelVoidMetadata = ( "label" | "void" | "metadata" | "opaque" ) => [[ "llvm.types" vocab lookup-word ]]
-Primitive = LabelVoidMetadata | FloatingPoint
-Pointer = T:t WhiteSpace "*" => [[ t <pointer> ]]
-Vector = "<" WhiteNumberSpace:n "x" Type:t ">" => [[ n t <vector> ]]
-StructureTypesList = "," Type:t => [[ t ]]
-Structure = "{" Type:t (StructureTypesList)*:ts "}" => [[ ts t prefix >array f <struct> ]]
-Array = "[" WhiteZeroSpace:n "x" Type:t "]" => [[ n t <array> ]]
-NoFunctionParams = "(" WhiteSpace ")" => [[ drop { } ]]
-VarArgs = WhiteSpace "..." WhiteSpace => [[ drop ... ]]
-ParamListContinued = "," (Type | VarArgs):t => [[ t ]]
-ParamList = "(" Type:t (ParamListContinued*):ts ")" => [[ ts t prefix ]]
-Function = T:t WhiteSpace ( ParamList | NoFunctionParams ):ts => [[ ... ts member? dup [ ... ts remove! drop ] when t ts >array rot <function> ]]
-PackedStructure = "<" WhiteSpace "{" Type:ty (StructureTypesList)*:ts "}" WhiteSpace ">" => [[ ts ty prefix >array t <struct> ]]
-UpReference = "\\" Number:n => [[ n <up-ref> ]]
-Name = '%' ([a-zA-Z][a-zA-Z0-9]*):id => [[ id flatten >string ]]
-
-T = Pointer | Function | Primitive | Integer | Vector | Structure | PackedStructure | Array | UpReference | Name
-
-Type = WhiteSpace T:t WhiteSpace => [[ t ]]
-
-Program = Type
-
-;EBNF
-
-SYNTAX: TYPE: ";" parse-multiline-string parse-type suffix! ;
diff --git a/extra/llvm/wrappers/tags.txt b/extra/llvm/wrappers/tags.txt
deleted file mode 100644 (file)
index 700f0dc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-not tested
diff --git a/extra/llvm/wrappers/wrappers-tests.factor b/extra/llvm/wrappers/wrappers-tests.factor
deleted file mode 100644 (file)
index 6d74932..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: destructors kernel llvm.wrappers sequences tools.test vocabs ;
-
-{ } [ "test" <module> dispose ] unit-test
-{ } [ "test" <module> <provider> dispose ] unit-test
-{ } [ "llvm.jit" vocabs member? [ "test" <module> <provider> <engine> dispose ] unless ] unit-test
diff --git a/extra/llvm/wrappers/wrappers.factor b/extra/llvm/wrappers/wrappers.factor
deleted file mode 100644 (file)
index 27c8a05..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-! Copyright (C) 2009 Matthew Willis.
-! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien.c-types alien.data alien.strings
-io.encodings.utf8 destructors kernel
-llvm.core llvm.engine ;
-
-IN: llvm.wrappers
-
-: llvm-throw ( c-string -- )
-    [ utf8 alien>string ] [ LLVMDisposeMessage ] bi throw ;
-
-: <dispose> ( alien class -- disposable ) new swap >>value ;
-
-TUPLE: module value disposed ;
-M: module dispose* value>> LLVMDisposeModule ;
-
-: <module> ( name -- module )
-    LLVMModuleCreateWithName module <dispose> ;
-
-TUPLE: provider value module disposed ;
-M: provider dispose* value>> LLVMDisposeModuleProvider ;
-
-: (provider) ( module -- provider )
-    [ value>> LLVMCreateModuleProviderForExistingModule provider <dispose> ]
-    [ t >>disposed value>> ] bi
-    >>module ;
-
-: <provider> ( module -- provider )
-    [ (provider) ] with-disposal ;
-
-TUPLE: engine value disposed ;
-M: engine dispose* value>> LLVMDisposeExecutionEngine ;
-
-: (engine) ( provider -- engine )
-    [
-        value>> f void* <ref> f void* <ref>
-        [ swapd 0 swap LLVMCreateJITCompiler drop ] 2keep
-        void* deref [ llvm-throw ] when* void* deref
-    ]
-    [ t >>disposed drop ] bi
-    engine <dispose> ;
-
-: <engine> ( provider -- engine )
-    [ (engine) ] with-disposal ;
-
-: (add-block) ( name -- basic-block )
-    "function" swap LLVMAppendBasicBlock ;
-
-TUPLE: builder value disposed ;
-M: builder dispose* value>> LLVMDisposeBuilder ;
-
-: <builder> ( name -- builder )
-    (add-block) LLVMCreateBuilder [ swap LLVMPositionBuilderAtEnd ] keep
-    builder <dispose> ;
-
-TUPLE: buffer value disposed ;
-M: buffer dispose* value>> LLVMDisposeMemoryBuffer ;
-
-: <buffer> ( path -- module )
-    f void* <ref> f void* <ref>
-    [ LLVMCreateMemoryBufferWithContentsOfFile drop ] 2keep
-    void* deref [ llvm-throw ] when* void* deref buffer <dispose> ;
diff --git a/unmaintained/llvm/authors.txt b/unmaintained/llvm/authors.txt
new file mode 100644 (file)
index 0000000..5645cd9
--- /dev/null
@@ -0,0 +1 @@
+Matthew Willis
diff --git a/unmaintained/llvm/clang/ffi/ffi.factor b/unmaintained/llvm/clang/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..e9a83ba
--- /dev/null
@@ -0,0 +1,564 @@
+USING: alien alien.c-types alien.libraries alien.syntax
+classes.struct combinators system unix.types ;
+IN: llvm.clang.ffi
+
+<<
+"libclang" {
+    { [ os macosx?  ] [ "libclang.dylib" ] }
+    { [ os windows? ] [ "clang.dll"      ] }
+    { [ os unix?    ] [ "/usrlibclang.so"    ] }
+} cond cdecl add-library
+>>
+LIBRARY: libclang
+
+C-TYPE: CXTranslationUnitImpl
+
+TYPEDEF: void* CXIndex
+TYPEDEF: CXTranslationUnitImpl* CXTranslationUnit
+TYPEDEF: void* CXClientData
+
+STRUCT: CXUnsavedFile
+    { Filename c-string }
+    { Contents c-string }
+    { Length   ulong    } ;
+
+ENUM: CXAvailabilityKind
+  CXAvailability_Available
+  CXAvailability_Deprecated
+  CXAvailability_NotAvailable ;
+
+STRUCT: CXString
+    { data          void* }
+    { private_flags uint  } ;
+
+FUNCTION: c-string clang_getCString ( CXString string ) ;
+FUNCTION: void clang_disposeString ( CXString string ) ;
+
+FUNCTION: CXIndex clang_createIndex ( int excludeDeclarationsFromPCH,
+                                      int displayDiagnostics ) ;
+FUNCTION: void clang_disposeIndex ( CXIndex index ) ;
+
+TYPEDEF: void* CXFile
+
+FUNCTION: CXString clang_getFileName ( CXFile SFile ) ;
+FUNCTION: time_t clang_getFileTime ( CXFile SFile ) ;
+FUNCTION: uint clang_isFileMultipleIncludeGuarded ( CXTranslationUnit tu, CXFile file ) ;
+FUNCTION: CXFile clang_getFile ( CXTranslationUnit tu, c-string file_name ) ;
+
+STRUCT: CXSourceLocation
+    { ptr_data void*[2] }
+    { int_data uint     } ;
+
+STRUCT: CXSourceRange
+    { ptr_data       void*[2] }
+    { begin_int_data uint     }
+    { end_int_data   uint     } ;
+
+FUNCTION: CXSourceLocation clang_getNullLocation ( ) ;
+FUNCTION: uint clang_equalLocations ( CXSourceLocation loc1, CXSourceLocation loc2 ) ;
+
+FUNCTION: CXSourceLocation clang_getLocation ( CXTranslationUnit tu, CXFile file, uint line, uint column ) ;
+FUNCTION: CXSourceLocation clang_getLocationForOffset ( CXTranslationUnit tu,
+                                                        CXFile            file,
+                                                        uint              offset ) ;
+
+FUNCTION: CXSourceRange clang_getNullRange ( ) ;
+
+FUNCTION: CXSourceRange clang_getRange ( CXSourceLocation begin,
+                                         CXSourceLocation end ) ;
+
+FUNCTION: void clang_getInstantiationLocation ( CXSourceLocation location,
+                                                CXFile*          file,
+                                                uint*            line,
+                                                uint*            column,
+                                                uint*            offset ) ;
+
+FUNCTION: void clang_getSpellingLocation ( CXSourceLocation location,
+                                           CXFile*          file,
+                                           uint*            line,
+                                           uint*            column,
+                                           uint*            offset ) ;
+
+FUNCTION: CXSourceLocation clang_getRangeStart ( CXSourceRange range ) ;
+FUNCTION: CXSourceLocation clang_getRangeEnd ( CXSourceRange range ) ;
+
+ENUM: CXDiagnosticSeverity
+  CXDiagnostic_Ignored
+  CXDiagnostic_Note
+  CXDiagnostic_Warning
+  CXDiagnostic_Error
+  CXDiagnostic_Fatal ;
+
+TYPEDEF: void* CXDiagnostic
+
+FUNCTION: uint clang_getNumDiagnostics ( CXTranslationUnit Unit ) ;
+FUNCTION: CXDiagnostic clang_getDiagnostic ( CXTranslationUnit Unit,
+                                             uint              Index ) ;
+FUNCTION: void clang_disposeDiagnostic ( CXDiagnostic Diagnostic ) ;
+
+ENUM: CXDiagnosticDisplayOptions
+    { CXDiagnostic_DisplaySourceLocation 0x01 }
+    { CXDiagnostic_DisplayColumn         0x02 }
+    { CXDiagnostic_DisplaySourceRanges   0x04 }
+    { CXDiagnostic_DisplayOption         0x08 }
+    { CXDiagnostic_DisplayCategoryId     0x10 }
+    { CXDiagnostic_DisplayCategoryName   0x20 } ;
+
+FUNCTION: CXString clang_formatDiagnostic ( CXDiagnostic Diagnostic,
+                                            uint         Options ) ;
+FUNCTION: uint clang_defaultDiagnosticDisplayOptions ( ) ;
+
+FUNCTION: CXDiagnosticSeverity clang_getDiagnosticSeverity ( CXDiagnostic ) ;
+FUNCTION: CXSourceLocation clang_getDiagnosticLocation ( CXDiagnostic ) ;
+FUNCTION: CXString clang_getDiagnosticSpelling ( CXDiagnostic ) ;
+FUNCTION: CXString clang_getDiagnosticOption ( CXDiagnostic Diag, CXString* Disable ) ;
+FUNCTION: uint clang_getDiagnosticCategory ( CXDiagnostic ) ;
+FUNCTION: CXString clang_getDiagnosticCategoryName ( uint Category ) ;
+FUNCTION: uint clang_getDiagnosticNumRanges ( CXDiagnostic ) ;
+FUNCTION: CXSourceRange clang_getDiagnosticRange ( CXDiagnostic Diagnostic, uint Range ) ;
+FUNCTION: uint clang_getDiagnosticNumFixIts ( CXDiagnostic Diagnostic ) ;
+FUNCTION: CXString clang_getDiagnosticFixIt ( CXDiagnostic   Diagnostic,
+                                              uint           FixIt,
+                                              CXSourceRange* ReplacementRange ) ;
+FUNCTION: CXString clang_getTranslationUnitSpelling ( CXTranslationUnit CTUnit ) ;
+FUNCTION: CXTranslationUnit clang_createTranslationUnitFromSourceFile ( CXIndex        CIdx,
+                                                                        c-string       source_filename,
+                                                                        int            num_clang_command_line_args,
+                                                                        char**         clang_command_line_args,
+                                                                        uint           num_unsaved_files,
+                                                                        CXUnsavedFile* unsaved_files ) ;
+FUNCTION: CXTranslationUnit clang_createTranslationUnit ( CXIndex CIdx, c-string ast_filename ) ;
+
+ENUM: CXTranslationUnit_Flags
+    { CXTranslationUnit_None                        0x00 }
+    { CXTranslationUnit_DetailedPreprocessingRecord 0x01 }
+    { CXTranslationUnit_Incomplete                  0x02 }
+    { CXTranslationUnit_PrecompiledPreamble         0x04 }
+    { CXTranslationUnit_CacheCompletionResults      0x08 }
+    { CXTranslationUnit_CXXPrecompiledPreamble      0x10 }
+    { CXTranslationUnit_CXXChainedPCH               0x20 }
+    { CXTranslationUnit_NestedMacroInstantiations   0x40 } ;
+
+FUNCTION: uint clang_defaultEditingTranslationUnitOptions ( ) ;
+FUNCTION: CXTranslationUnit clang_parseTranslationUnit ( CXIndex        CIdx,
+                                                         c-string       source_filename,
+                                                         char**         command_line_args,
+                                                         int            num_command_line_args,
+                                                         CXUnsavedFile* unsaved_files,
+                                                         uint           num_unsaved_files,
+                                                         uint           options ) ;
+
+ENUM: CXSaveTranslationUnit_Flags CXSaveTranslationUnit_None ;
+
+FUNCTION: uint clang_defaultSaveOptions ( CXTranslationUnit TU ) ;
+FUNCTION: int clang_saveTranslationUnit ( CXTranslationUnit TU,
+                                          c-string          FileName,
+                                          uint              options ) ;
+FUNCTION: void clang_disposeTranslationUnit ( CXTranslationUnit ) ;
+
+ENUM: CXReparse_Flags CXReparse_None ;
+
+FUNCTION: uint clang_defaultReparseOptions ( CXTranslationUnit TU ) ;
+FUNCTION: int clang_reparseTranslationUnit ( CXTranslationUnit TU,
+                                             uint              num_unsaved_files,
+                                             CXUnsavedFile*    unsaved_files,
+                                             uint              options ) ;
+
+ENUM: CXTUResourceUsageKind
+    { CXTUResourceUsage_AST                                 1 }
+    { CXTUResourceUsage_Identifiers                         2 }
+    { CXTUResourceUsage_Selectors                           3 }
+    { CXTUResourceUsage_GlobalCompletionResults             4 }
+    { CXTUResourceUsage_SourceManagerContentCache           5 }
+    { CXTUResourceUsage_AST_SideTables                      6 }
+    { CXTUResourceUsage_SourceManager_Membuffer_Malloc      7 }
+    { CXTUResourceUsage_SourceManager_Membuffer_MMap        8 }
+    { CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc  9 }
+    { CXTUResourceUsage_ExternalASTSource_Membuffer_MMap   10 }
+    { CXTUResourceUsage_Preprocessor                       11 }
+    { CXTUResourceUsage_PreprocessingRecord                12 }
+    { CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN               1 }
+    { CXTUResourceUsage_MEMORY_IN_BYTES_END                12 }
+    { CXTUResourceUsage_First                               1 }
+    { CXTUResourceUsage_Last                               12 } ;
+
+FUNCTION: c-string clang_getTUResourceUsageName ( CXTUResourceUsageKind kind ) ;
+
+STRUCT: CXTUResourceUsageEntry
+    { kind   CXTUResourceUsageKind }
+    { amount ulong                 } ;
+
+STRUCT: CXTUResourceUsage
+    { data       void*                   }
+    { numEntries uint                    }
+    { entries    CXTUResourceUsageEntry* } ;
+
+FUNCTION: CXTUResourceUsage clang_getCXTUResourceUsage ( CXTranslationUnit TU ) ;
+FUNCTION: void clang_disposeCXTUResourceUsage ( CXTUResourceUsage usage ) ;
+
+ENUM: CXCursorKind
+    { CXCursor_UnexposedDecl                        1 }
+    { CXCursor_StructDecl                           2 }
+    { CXCursor_UnionDecl                            3 }
+    { CXCursor_ClassDecl                            4 }
+    { CXCursor_EnumDecl                             5 }
+    { CXCursor_FieldDecl                            6 }
+    { CXCursor_EnumConstantDecl                     7 }
+    { CXCursor_FunctionDecl                         8 }
+    { CXCursor_VarDecl                              9 }
+    { CXCursor_ParmDecl                            10 }
+    { CXCursor_ObjCInterfaceDecl                   11 }
+    { CXCursor_ObjCCategoryDecl                    12 }
+    { CXCursor_ObjCProtocolDecl                    13 }
+    { CXCursor_ObjCPropertyDecl                    14 }
+    { CXCursor_ObjCIvarDecl                        15 }
+    { CXCursor_ObjCInstanceMethodDecl              16 }
+    { CXCursor_ObjCClassMethodDecl                 17 }
+    { CXCursor_ObjCImplementationDecl              18 }
+    { CXCursor_ObjCCategoryImplDecl                19 }
+    { CXCursor_TypedefDecl                         20 }
+    { CXCursor_CXXMethod                           21 }
+    { CXCursor_Namespace                           22 }
+    { CXCursor_LinkageSpec                         23 }
+    { CXCursor_Constructor                         24 }
+    { CXCursor_Destructor                          25 }
+    { CXCursor_ConversionFunction                  26 }
+    { CXCursor_TemplateTypeParameter               27 }
+    { CXCursor_NonTypeTemplateParameter            28 }
+    { CXCursor_TemplateTemplateParameter           29 }
+    { CXCursor_FunctionTemplate                    30 }
+    { CXCursor_ClassTemplate                       31 }
+    { CXCursor_ClassTemplatePartialSpecialization  32 }
+    { CXCursor_NamespaceAlias                      33 }
+    { CXCursor_UsingDirective                      34 }
+    { CXCursor_UsingDeclaration                    35 }
+    { CXCursor_TypeAliasDecl                       36 }
+    { CXCursor_FirstDecl                            1 }
+    { CXCursor_LastDecl                            36 }
+    { CXCursor_FirstRef                            40 }
+    { CXCursor_ObjCSuperClassRef                   40 }
+    { CXCursor_ObjCProtocolRef                     41 }
+    { CXCursor_ObjCClassRef                        42 }
+    { CXCursor_TypeRef                             43 }
+    { CXCursor_CXXBaseSpecifier                    44 }
+    { CXCursor_TemplateRef                         45 }
+    { CXCursor_NamespaceRef                        46 }
+    { CXCursor_MemberRef                           47 }
+    { CXCursor_LabelRef                            48 }
+    { CXCursor_OverloadedDeclRef                   49 }
+    { CXCursor_LastRef                             49 }
+    { CXCursor_FirstInvalid                        70 }
+    { CXCursor_InvalidFile                         70 }
+    { CXCursor_NoDeclFound                         71 }
+    { CXCursor_NotImplemented                      72 }
+    { CXCursor_InvalidCode                         73 }
+    { CXCursor_LastInvalid                         73 }
+    { CXCursor_FirstExpr                          100 }
+    { CXCursor_UnexposedExpr                      100 }
+    { CXCursor_DeclRefExpr                        101 }
+    { CXCursor_MemberRefExpr                      102 }
+    { CXCursor_CallExpr                           103 }
+    { CXCursor_ObjCMessageExpr                    104 }
+    { CXCursor_BlockExpr                          105 }
+    { CXCursor_LastExpr                           105 }
+    { CXCursor_FirstStmt                          200 }
+    { CXCursor_UnexposedStmt                      200 }
+    { CXCursor_LabelStmt                          201 }
+    { CXCursor_LastStmt                           201 }
+    { CXCursor_TranslationUnit                    300 }
+    { CXCursor_FirstAttr                          400 }
+    { CXCursor_UnexposedAttr                      400 }
+    { CXCursor_IBActionAttr                       401 }
+    { CXCursor_IBOutletAttr                       402 }
+    { CXCursor_IBOutletCollectionAttr             403 }
+    { CXCursor_LastAttr                           403 }
+    { CXCursor_PreprocessingDirective             500 }
+    { CXCursor_MacroDefinition                    501 }
+    { CXCursor_MacroInstantiation                 502 }
+    { CXCursor_InclusionDirective                 503 }
+    { CXCursor_FirstPreprocessing                 500 }
+    { CXCursor_LastPreprocessing                  503 } ;
+
+STRUCT: CXCursor
+    { kind CXCursorKind }
+    { data void*[3]     } ;
+
+FUNCTION: CXCursor clang_getNullCursor ( ) ;
+FUNCTION: CXCursor clang_getTranslationUnitCursor ( CXTranslationUnit ) ;
+FUNCTION: uint clang_equalCursors ( CXCursor c1, CXCursor c2 ) ;
+FUNCTION: uint clang_hashCursor ( CXCursor ) ;
+FUNCTION: CXCursorKind clang_getCursorKind ( CXCursor ) ;
+FUNCTION: uint clang_isDeclaration ( CXCursorKind ) ;
+FUNCTION: uint clang_isReference ( CXCursorKind ) ;
+FUNCTION: uint clang_isExpression ( CXCursorKind ) ;
+FUNCTION: uint clang_isStatement ( CXCursorKind ) ;
+FUNCTION: uint clang_isInvalid ( CXCursorKind ) ;
+FUNCTION: uint clang_isTranslationUnit ( CXCursorKind ) ;
+FUNCTION: uint clang_isPreprocessing ( CXCursorKind ) ;
+FUNCTION: uint clang_isUnexposed ( CXCursorKind ) ;
+
+ENUM: CXLinkageKind
+  CXLinkage_Invalid
+  CXLinkage_NoLinkage
+  CXLinkage_Internal
+  CXLinkage_UniqueExternal
+  CXLinkage_External ;
+
+ENUM: CXLanguageKind
+  CXLanguage_Invalid
+  CXLanguage_C
+  CXLanguage_ObjC
+  CXLanguage_CPlusPlus ;
+
+FUNCTION: CXLinkageKind clang_getCursorLinkage ( CXCursor cursor ) ;
+FUNCTION: CXAvailabilityKind clang_getCursorAvailability ( CXCursor cursor ) ;
+FUNCTION: CXLanguageKind clang_getCursorLanguage ( CXCursor cursor ) ;
+
+C-TYPE: CXCursorSetImpl
+TYPEDEF: CXCursorSetImpl* CXCursorSet
+
+FUNCTION: CXCursorSet clang_createCXCursorSet ( ) ;
+FUNCTION: void clang_disposeCXCursorSet ( CXCursorSet cset ) ;
+FUNCTION: uint clang_CXCursorSet_contains ( CXCursorSet cset, CXCursor cursor ) ;
+FUNCTION: uint clang_CXCursorSet_insert ( CXCursorSet cset, CXCursor cursor ) ;
+FUNCTION: CXCursor clang_getCursorSemanticParent ( CXCursor cursor ) ;
+FUNCTION: CXCursor clang_getCursorLexicalParent ( CXCursor cursor ) ;
+FUNCTION: void clang_getOverriddenCursors ( CXCursor cursor, CXCursor** overridden, uint* num_overridden ) ;
+FUNCTION: void clang_disposeOverriddenCursors ( CXCursor* overridden ) ;
+FUNCTION: CXFile clang_getIncludedFile ( CXCursor cursor ) ;
+FUNCTION: CXCursor clang_getCursor ( CXTranslationUnit TU,
+                                     CXSourceLocation location ) ;
+FUNCTION: CXSourceLocation clang_getCursorLocation ( CXCursor ) ;
+FUNCTION: CXSourceRange clang_getCursorExtent ( CXCursor ) ;
+
+ENUM: CXTypeKind
+    { CXType_Invalid             0 }
+    { CXType_Unexposed           1 }
+    { CXType_Void                2 }
+    { CXType_Bool                3 }
+    { CXType_Char_U              4 }
+    { CXType_UChar               5 }
+    { CXType_Char16              6 }
+    { CXType_Char32              7 }
+    { CXType_UShort              8 }
+    { CXType_UInt                9 }
+    { CXType_ULong              10 }
+    { CXType_ULongLong          11 }
+    { CXType_UInt128            12 }
+    { CXType_Char_S             13 }
+    { CXType_SChar              14 }
+    { CXType_WChar              15 }
+    { CXType_Short              16 }
+    { CXType_Int                17 }
+    { CXType_Long               18 }
+    { CXType_LongLong           19 }
+    { CXType_Int128             20 }
+    { CXType_Float              21 }
+    { CXType_Double             22 }
+    { CXType_LongDouble         23 }
+    { CXType_NullPtr            24 }
+    { CXType_Overload           25 }
+    { CXType_Dependent          26 }
+    { CXType_ObjCId             27 }
+    { CXType_ObjCClass          28 }
+    { CXType_ObjCSel            29 }
+    { CXType_FirstBuiltin        2 }
+    { CXType_LastBuiltin        29 }
+    { CXType_Complex           100 }
+    { CXType_Pointer           101 }
+    { CXType_BlockPointer      102 }
+    { CXType_LValueReference   103 }
+    { CXType_RValueReference   104 }
+    { CXType_Record            105 }
+    { CXType_Enum              106 }
+    { CXType_Typedef           107 }
+    { CXType_ObjCInterface     108 }
+    { CXType_ObjCObjectPointer 109 }
+    { CXType_FunctionNoProto   110 }
+    { CXType_FunctionProto     111 } ;
+
+STRUCT: CXType
+    { kind CXTypeKind }
+    { data void*[2]   } ;
+
+FUNCTION: CXType clang_getCursorType ( CXCursor C ) ;
+FUNCTION: uint clang_equalTypes ( CXType A, CXType B ) ;
+FUNCTION: CXType clang_getCanonicalType ( CXType T ) ;
+FUNCTION: uint clang_isConstQualifiedType ( CXType T ) ;
+FUNCTION: uint clang_isVolatileQualifiedType ( CXType T ) ;
+FUNCTION: uint clang_isRestrictQualifiedType ( CXType T ) ;
+FUNCTION: CXType clang_getPointeeType ( CXType T ) ;
+FUNCTION: CXCursor clang_getTypeDeclaration ( CXType T ) ;
+FUNCTION: CXString clang_getDeclObjCTypeEncoding ( CXCursor C ) ;
+FUNCTION: CXString clang_getTypeKindSpelling ( CXTypeKind K ) ;
+FUNCTION: CXType clang_getResultType ( CXType T ) ;
+FUNCTION: CXType clang_getCursorResultType ( CXCursor C ) ;
+FUNCTION: uint clang_isPODType ( CXType T ) ;
+FUNCTION: uint clang_isVirtualBase ( CXCursor ) ;
+
+ENUM: CX_CXXAccessSpecifier
+  CX_CXXInvalidAccessSpecifier
+  CX_CXXPublic
+  CX_CXXProtected
+  CX_CXXPrivate ;
+
+FUNCTION: CX_CXXAccessSpecifier clang_getCXXAccessSpecifier ( CXCursor ) ;
+FUNCTION: uint clang_getNumOverloadedDecls ( CXCursor cursor ) ;
+FUNCTION: CXCursor clang_getOverloadedDecl ( CXCursor cursor, uint index ) ;
+FUNCTION: CXType clang_getIBOutletCollectionType ( CXCursor ) ;
+
+ENUM: CXChildVisitResult
+  CXChildVisit_Break
+  CXChildVisit_Continue
+  CXChildVisit_Recurse ;
+
+CALLBACK: CXChildVisitResult CXCursorVisitor ( CXCursor     cursor,
+                                               CXCursor     parent,
+                                               CXClientData client_data ) ;
+
+FUNCTION: uint clang_visitChildren ( CXCursor        parent,
+                                     CXCursorVisitor visitor,
+                                     CXClientData    client_data ) ;
+FUNCTION: CXString clang_getCursorUSR ( CXCursor ) ;
+FUNCTION: CXString clang_constructUSR_ObjCClass ( c-string class_name ) ;
+FUNCTION: CXString clang_constructUSR_ObjCCategory ( c-string class_name,
+                                                     c-string category_name ) ;
+FUNCTION: CXString clang_constructUSR_ObjCProtocol ( c-string protocol_name ) ;
+FUNCTION: CXString clang_constructUSR_ObjCIvar ( c-string name,
+                                                 CXString classUSR ) ;
+FUNCTION: CXString clang_constructUSR_ObjCMethod ( c-string name,
+                                                   uint     isInstanceMethod,
+                                                   CXString classUSR ) ;
+FUNCTION: CXString clang_constructUSR_ObjCProperty ( c-string property,
+                                                     CXString classUSR ) ;
+FUNCTION: CXString clang_getCursorSpelling ( CXCursor ) ;
+FUNCTION: CXString clang_getCursorDisplayName ( CXCursor ) ;
+FUNCTION: CXCursor clang_getCursorReferenced ( CXCursor ) ;
+FUNCTION: CXCursor clang_getCursorDefinition ( CXCursor ) ;
+FUNCTION: uint clang_isCursorDefinition ( CXCursor ) ;
+FUNCTION: CXCursor clang_getCanonicalCursor ( CXCursor ) ;
+FUNCTION: uint clang_CXXMethod_isStatic ( CXCursor C ) ;
+FUNCTION: uint clang_CXXMethod_isVirtual ( CXCursor C ) ;
+FUNCTION: CXCursorKind clang_getTemplateCursorKind ( CXCursor C ) ;
+FUNCTION: CXCursor clang_getSpecializedCursorTemplate ( CXCursor C ) ;
+
+ENUM: CXTokenKind
+  CXToken_Punctuation
+  CXToken_Keyword
+  CXToken_Identifier
+  CXToken_Literal
+  CXToken_Comment ;
+
+STRUCT: CXToken
+    { int_data uint[4] }
+    { ptr_data void*   } ;
+
+FUNCTION: CXTokenKind clang_getTokenKind ( CXToken ) ;
+FUNCTION: CXString clang_getTokenSpelling ( CXTranslationUnit TU,
+                                            CXToken           Token ) ;
+FUNCTION: CXSourceLocation clang_getTokenLocation ( CXTranslationUnit TU,
+                                                    CXToken           Token ) ;
+FUNCTION: CXSourceRange clang_getTokenExtent ( CXTranslationUnit TU,
+                                               CXToken           Token ) ;
+FUNCTION: void clang_tokenize ( CXTranslationUnit TU,
+                                CXSourceRange     Range,
+                                CXToken**         Tokens,
+                                uint*             NumTokens ) ;
+FUNCTION: void clang_annotateTokens ( CXTranslationUnit TU,
+                                      CXToken*          Tokens,
+                                      uint              NumTokens,
+                                      CXCursor*         Cursors ) ;
+FUNCTION: void clang_disposeTokens ( CXTranslationUnit TU,
+                                     CXToken*          Tokens,
+                                     uint              NumTokens ) ;
+
+FUNCTION: CXString clang_getCursorKindSpelling ( CXCursorKind Kind ) ;
+FUNCTION: void clang_getDefinitionSpellingAndExtent ( CXCursor cursor,
+                                                      char**   startBuf,
+                                                      char**   endBuf,
+                                                      uint*    startLine,
+                                                      uint*    startColumn,
+                                                      uint*    endLine,
+                                                      uint*    endColumn ) ;
+FUNCTION: void clang_enableStackTraces ( ) ;
+
+CALLBACK: void executeOnThreadCallback ( void* ) ;
+FUNCTION: void clang_executeOnThread ( executeOnThreadCallback* callback,
+                                       void*                    user_data,
+                                       uint                     stack_size ) ;
+
+TYPEDEF: void* CXCompletionString
+
+STRUCT: CXCompletionResult
+    { CursorKind       CXCursorKind       }
+    { CompletionString CXCompletionString } ;
+
+ENUM: CXCompletionChunkKind
+  CXCompletionChunk_Optional
+  CXCompletionChunk_TypedText
+  CXCompletionChunk_Text
+  CXCompletionChunk_Placeholder
+  CXCompletionChunk_Informative
+  CXCompletionChunk_CurrentParameter
+  CXCompletionChunk_LeftParen
+  CXCompletionChunk_RightParen
+  CXCompletionChunk_LeftBracket
+  CXCompletionChunk_RightBracket
+  CXCompletionChunk_LeftBrace
+  CXCompletionChunk_RightBrace
+  CXCompletionChunk_LeftAngle
+  CXCompletionChunk_RightAngle
+  CXCompletionChunk_Comma
+  CXCompletionChunk_ResultType
+  CXCompletionChunk_Colon
+  CXCompletionChunk_SemiColon
+  CXCompletionChunk_Equal
+  CXCompletionChunk_HorizontalSpace
+  CXCompletionChunk_VerticalSpace ;
+
+FUNCTION: CXCompletionChunkKind clang_getCompletionChunkKind ( CXCompletionString completion_string,
+                                                               uint               chunk_number ) ;
+FUNCTION: CXString clang_getCompletionChunkText ( CXCompletionString completion_string,
+                                                  uint               chunk_number ) ;
+FUNCTION: CXCompletionString clang_getCompletionChunkCompletionString ( CXCompletionString completion_string,
+                                                                        uint               chunk_number ) ;
+FUNCTION: uint clang_getNumCompletionChunks ( CXCompletionString completion_string ) ;
+FUNCTION: uint clang_getCompletionPriority ( CXCompletionString completion_string ) ;
+FUNCTION: CXAvailabilityKind clang_getCompletionAvailability ( CXCompletionString completion_string ) ;
+
+STRUCT: CXCodeCompleteResults
+    { Results CXCompletionResult* }
+    { NumResults uint             } ;
+
+ENUM: CXCodeComplete_Flags
+    { CXCodeComplete_IncludeMacros       1 }
+    { CXCodeComplete_IncludeCodePatterns 2 } ;
+
+FUNCTION: uint clang_defaultCodeCompleteOptions ( ) ;
+
+FUNCTION: CXCodeCompleteResults* clang_codeCompleteAt ( CXTranslationUnit TU,
+                                                        c-string          complete_filename,
+                                                        uint              complete_line,
+                                                        uint              complete_column,
+                                                        CXUnsavedFile*    unsaved_files,
+                                                        uint              num_unsaved_files,
+                                                        uint              options ) ;
+
+FUNCTION: void clang_sortCodeCompletionResults ( CXCompletionResult* Results, uint NumResults ) ;
+FUNCTION: void clang_disposeCodeCompleteResults ( CXCodeCompleteResults* Results ) ;
+FUNCTION: uint clang_codeCompleteGetNumDiagnostics ( CXCodeCompleteResults* Results ) ;
+
+FUNCTION: CXDiagnostic clang_codeCompleteGetDiagnostic ( CXCodeCompleteResults* Results,
+                                                         uint                   Index ) ;
+
+FUNCTION: CXString clang_getClangVersion ( ) ;
+FUNCTION: void clang_toggleCrashRecovery ( uint isEnabled ) ;
+
+CALLBACK: void CXInclusionVisitor ( CXFile            included_file,
+                                    CXSourceLocation* inclusion_stack,
+                                    uint              include_len,
+                                    CXClientData      client_data ) ;
+
+FUNCTION: void clang_getInclusions ( CXTranslationUnit  tu,
+                                     CXInclusionVisitor visitor,
+                                     CXClientData       client_data ) ;
diff --git a/unmaintained/llvm/clang/ffi/platforms.txt b/unmaintained/llvm/clang/ffi/platforms.txt
new file mode 100644 (file)
index 0000000..47e0a69
--- /dev/null
@@ -0,0 +1 @@
+unix
\ No newline at end of file
diff --git a/unmaintained/llvm/core/core.factor b/unmaintained/llvm/core/core.factor
new file mode 100644 (file)
index 0000000..d84a618
--- /dev/null
@@ -0,0 +1,416 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+
+USING: alien alien.c-types alien.libraries alien.syntax
+combinators kernel sequences system ;
+
+IN: llvm.core
+
+<<
+: add-llvm-library ( name -- )
+    dup {
+        { [ os macosx? ] [ "lib" ".dylib" surround ] }
+        { [ os unix? ] [ "lib" ".so" surround ] }
+        { [ os windows? ] [ ".dll" append ] }
+    } cond cdecl add-library ;
+
+{ "LLVMSystem" "LLVMSupport" "LLVMCore" "LLVMBitReader" }
+[ add-llvm-library ] each
+>>
+
+! llvm-c/Core.h
+
+LIBRARY: LLVMCore
+
+TYPEDEF: uint unsigned
+TYPEDEF: unsigned enum
+
+ENUM: LLVMAttribute
+    { LLVMZExtAttribute         0b1 }
+    { LLVMSExtAttribute         0b10 }
+    { LLVMNoReturnAttribute     0b100 }
+    { LLVMInRegAttribute        0b1000 }
+    { LLVMStructRetAttribute    0b10000 }
+    { LLVMNoUnwindAttribute     0b100000 }
+    { LLVMNoAliasAttribute      0b1000000 }
+    { LLVMByValAttribute        0b10000000 }
+    { LLVMNestAttribute         0b100000000 }
+    { LLVMReadNoneAttribute     0b1000000000 }
+    { LLVMReadOnlyAttribute     0b10000000000 } ;
+
+ENUM: LLVMTypeKind
+  LLVMVoidTypeKind
+  LLVMFloatTypeKind
+  LLVMDoubleTypeKind
+  LLVMX86_FP80TypeKind
+  LLVMFP128TypeKind
+  LLVMPPC_FP128TypeKind
+  LLVMLabelTypeKind
+  LLVMMetadataTypeKind
+  LLVMIntegerTypeKind
+  LLVMFunctionTypeKind
+  LLVMStructTypeKind
+  LLVMArrayTypeKind
+  LLVMPointerTypeKind
+  LLVMOpaqueTypeKind
+  LLVMVectorTypeKind ;
+
+ENUM: LLVMLinkage
+  LLVMExternalLinkage
+  LLVMLinkOnceLinkage
+  LLVMWeakLinkage
+  LLVMAppendingLinkage
+  LLVMInternalLinkage
+  LLVMDLLImportLinkage
+  LLVMDLLExportLinkage
+  LLVMExternalWeakLinkage
+  LLVMGhostLinkage ;
+
+ENUM: LLVMVisibility
+  LLVMDefaultVisibility
+  LLVMHiddenVisibility
+  LLVMProtectedVisibility ;
+
+ENUM: LLVMCallConv
+  { LLVMCCallConv             0 }
+  { LLVMFastCallConv          8 }
+  { LLVMColdCallConv          9 }
+  { LLVMX86StdcallCallConv    64 }
+  { LLVMX86FastcallCallConv   65 } ;
+
+ENUM: LLVMIntPredicate
+  { LLVMIntEQ                 32 }
+  { LLVMIntNE                 33 }
+  { LLVMIntUGT                34 }
+  { LLVMIntUGE                35 }
+  { LLVMIntULT                36 }
+  { LLVMIntULE                37 }
+  { LLVMIntSGT                38 }
+  { LLVMIntSGE                39 }
+  { LLVMIntSLT                40 }
+  { LLVMIntSLE                41 } ;
+
+ENUM: LLVMRealPredicate
+  LLVMRealPredicateFalse
+  LLVMRealOEQ
+  LLVMRealOGT
+  LLVMRealOGE
+  LLVMRealOLT
+  LLVMRealOLE
+  LLVMRealONE
+  LLVMRealORD
+  LLVMRealUNO
+  LLVMRealUEQ
+  LLVMRealUGT
+  LLVMRealUGE
+  LLVMRealULT
+  LLVMRealULE
+  LLVMRealUNE
+  LLVMRealPredicateTrue ;
+
+! Opaque Types
+
+TYPEDEF: void* LLVMModuleRef
+
+TYPEDEF: void* LLVMPassManagerRef
+
+TYPEDEF: void* LLVMModuleProviderRef
+
+TYPEDEF: void* LLVMTypeRef
+
+TYPEDEF: void* LLVMTypeHandleRef
+
+TYPEDEF: void* LLVMValueRef
+
+TYPEDEF: void* LLVMBasicBlockRef
+
+TYPEDEF: void* LLVMBuilderRef
+
+TYPEDEF: void* LLVMMemoryBufferRef
+
+! Functions
+
+FUNCTION: void LLVMDisposeMessage ( c-string Message ) ;
+
+FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( c-string ModuleID ) ;
+
+FUNCTION: int LLVMAddTypeName ( LLVMModuleRef M, c-string Name, LLVMTypeRef Ty ) ;
+
+FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M ) ;
+
+FUNCTION: void LLVMDumpModule ( LLVMModuleRef M ) ;
+
+FUNCTION: LLVMModuleProviderRef
+LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M ) ;
+
+FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP ) ;
+
+! Types
+
+! LLVM types conform to the following hierarchy:
+!  
+!    types:
+!      integer type
+!      real type
+!      function type
+!      sequence types:
+!        array type
+!        pointer type
+!        vector type
+!      void type
+!      label type
+!      opaque type
+
+! See llvm::LLVMTypeKind::getTypeID.
+FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty ) ;
+
+! Operations on integer types
+FUNCTION: LLVMTypeRef LLVMInt1Type ( ) ;
+FUNCTION: LLVMTypeRef LLVMInt8Type ( ) ;
+FUNCTION: LLVMTypeRef LLVMInt16Type ( ) ;
+FUNCTION: LLVMTypeRef LLVMInt32Type ( ) ;
+FUNCTION: LLVMTypeRef LLVMInt64Type ( ) ;
+FUNCTION: LLVMTypeRef LLVMIntType ( unsigned NumBits ) ;
+FUNCTION: unsigned LLVMGetIntTypeWidth ( LLVMTypeRef IntegerTy ) ;
+
+! Operations on real types
+FUNCTION: LLVMTypeRef LLVMFloatType ( ) ;
+FUNCTION: LLVMTypeRef LLVMDoubleType ( ) ;
+FUNCTION: LLVMTypeRef LLVMX86FP80Type ( ) ;
+FUNCTION: LLVMTypeRef LLVMFP128Type ( ) ;
+FUNCTION: LLVMTypeRef LLVMPPCFP128Type ( ) ;
+
+! Operations on function types
+FUNCTION: LLVMTypeRef
+LLVMFunctionType ( LLVMTypeRef ReturnType, LLVMTypeRef* ParamTypes, unsigned ParamCount, int IsVarArg ) ;
+FUNCTION: int LLVMIsFunctionVarArg ( LLVMTypeRef FunctionTy ) ;
+FUNCTION: LLVMTypeRef LLVMGetReturnType ( LLVMTypeRef FunctionTy ) ;
+FUNCTION: unsigned LLVMCountParamTypes ( LLVMTypeRef FunctionTy ) ;
+FUNCTION: void LLVMGetParamTypes ( LLVMTypeRef FunctionTy, LLVMTypeRef* Dest ) ;
+
+! Operations on struct types
+FUNCTION: LLVMTypeRef
+LLVMStructType ( LLVMTypeRef* ElementTypes, unsigned ElementCount, int Packed ) ;
+FUNCTION: unsigned LLVMCountStructElementTypes ( LLVMTypeRef StructTy ) ;
+FUNCTION: void LLVMGetStructElementTypes ( LLVMTypeRef StructTy, LLVMTypeRef* Dest ) ;
+FUNCTION: int LLVMIsPackedStruct ( LLVMTypeRef StructTy ) ;
+
+! Operations on array, pointer, and vector types (sequence types)
+FUNCTION: LLVMTypeRef LLVMArrayType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
+FUNCTION: LLVMTypeRef LLVMPointerType ( LLVMTypeRef ElementType, unsigned AddressSpace ) ;
+FUNCTION: LLVMTypeRef LLVMVectorType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
+
+FUNCTION: LLVMTypeRef LLVMGetElementType ( LLVMTypeRef Ty ) ;
+FUNCTION: unsigned LLVMGetArrayLength ( LLVMTypeRef ArrayTy ) ;
+FUNCTION: unsigned LLVMGetPointerAddressSpace ( LLVMTypeRef PointerTy ) ;
+FUNCTION: unsigned LLVMGetVectorSize ( LLVMTypeRef VectorTy ) ;
+
+! Operations on other types
+FUNCTION: LLVMTypeRef LLVMVoidType ( ) ;
+FUNCTION: LLVMTypeRef LLVMLabelType ( ) ;
+FUNCTION: LLVMTypeRef LLVMOpaqueType ( ) ;
+
+! Operations on type handles
+FUNCTION: LLVMTypeHandleRef LLVMCreateTypeHandle ( LLVMTypeRef PotentiallyAbstractTy ) ;
+FUNCTION: void LLVMRefineType ( LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy ) ;
+FUNCTION: LLVMTypeRef LLVMResolveTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
+FUNCTION: void LLVMDisposeTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
+
+! Types end
+
+FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn ) ;
+
+FUNCTION: void LLVMGetParams ( LLVMValueRef Fn, LLVMValueRef* Params ) ;
+
+FUNCTION: LLVMValueRef
+LLVMAddFunction ( LLVMModuleRef M, c-string Name, LLVMTypeRef FunctionTy ) ;
+
+FUNCTION: LLVMValueRef LLVMGetFirstFunction ( LLVMModuleRef M ) ;
+
+FUNCTION: LLVMValueRef LLVMGetNextFunction ( LLVMValueRef Fn ) ;
+
+FUNCTION: unsigned LLVMGetFunctionCallConv ( LLVMValueRef Fn ) ;
+
+FUNCTION: void LLVMSetFunctionCallConv ( LLVMValueRef Fn, unsigned CC ) ;
+
+FUNCTION: LLVMBasicBlockRef
+LLVMAppendBasicBlock ( LLVMValueRef Fn, c-string Name ) ;
+
+FUNCTION: LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef BB ) ;
+
+! Values
+
+FUNCTION: LLVMTypeRef LLVMTypeOf ( LLVMValueRef Val ) ;
+FUNCTION: c-string LLVMGetValueName ( LLVMValueRef Val ) ;
+FUNCTION: void LLVMSetValueName ( LLVMValueRef Val, c-string Name ) ;
+FUNCTION: void LLVMDumpValue ( LLVMValueRef Val ) ;
+
+! Instruction Builders
+
+FUNCTION: LLVMBuilderRef LLVMCreateBuilder ( ) ;
+FUNCTION: void LLVMPositionBuilder
+( LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr ) ;
+FUNCTION: void LLVMPositionBuilderBefore
+( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
+FUNCTION: void LLVMPositionBuilderAtEnd
+( LLVMBuilderRef Builder, LLVMBasicBlockRef Block ) ;
+FUNCTION: LLVMBasicBlockRef LLVMGetInsertBlock
+( LLVMBuilderRef Builder ) ;
+FUNCTION: void LLVMClearInsertionPosition
+( LLVMBuilderRef Builder ) ;
+FUNCTION: void LLVMInsertIntoBuilder
+( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
+FUNCTION: void LLVMDisposeBuilder
+( LLVMBuilderRef Builder ) ;
+
+! IB Terminators
+
+FUNCTION: LLVMValueRef LLVMBuildRetVoid
+( LLVMBuilderRef Builder ) ;
+FUNCTION: LLVMValueRef LLVMBuildRet
+( LLVMBuilderRef Builder, LLVMValueRef V ) ;
+FUNCTION: LLVMValueRef LLVMBuildBr
+( LLVMBuilderRef Builder, LLVMBasicBlockRef Dest ) ;
+FUNCTION: LLVMValueRef LLVMBuildCondBr
+( LLVMBuilderRef Builder, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else ) ;
+FUNCTION: LLVMValueRef LLVMBuildSwitch
+( LLVMBuilderRef Builder, LLVMValueRef V, LLVMBasicBlockRef Else, unsigned NumCases ) ;
+FUNCTION: LLVMValueRef LLVMBuildInvoke
+( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs,
+  LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildUnwind
+( LLVMBuilderRef Builder ) ;
+FUNCTION: LLVMValueRef LLVMBuildUnreachable
+( LLVMBuilderRef Builder ) ;
+
+! IB Add Case to Switch
+
+FUNCTION: void LLVMAddCase
+( LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest ) ;
+
+! IB Arithmetic
+
+FUNCTION: LLVMValueRef LLVMBuildAdd
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildSub
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildMul
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildUDiv
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildSDiv
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildFDiv
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildURem
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildSRem
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildFRem
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildShl
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildLShr
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildAShr
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildAnd
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildOr
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildXor
+( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildNeg
+( LLVMBuilderRef Builder, LLVMValueRef V, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildNot
+( LLVMBuilderRef Builder, LLVMValueRef V, c-string Name ) ;
+
+! IB Memory
+
+FUNCTION: LLVMValueRef LLVMBuildMalloc
+( LLVMBuilderRef Builder, LLVMTypeRef Ty, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildArrayMalloc
+( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildAlloca
+( LLVMBuilderRef Builder, LLVMTypeRef Ty, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildArrayAlloca
+( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildFree
+( LLVMBuilderRef Builder, LLVMValueRef PointerVal ) ;
+FUNCTION: LLVMValueRef LLVMBuildLoad
+( LLVMBuilderRef Builder, LLVMValueRef PointerVal, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildStore
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMValueRef Ptr ) ;
+FUNCTION: LLVMValueRef LLVMBuildGEP
+( LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices,
+  unsigned NumIndices, c-string Name ) ;
+
+! IB Casts
+
+FUNCTION: LLVMValueRef LLVMBuildTrunc
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildZExt
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildSExt
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildFPToUI
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildFPToSI
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildUIToFP
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildSIToFP
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildFPTrunc
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildFPExt
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildPtrToInt
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildIntToPtr
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildBitCast
+( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
+
+! IB Comparisons
+
+FUNCTION: LLVMValueRef LLVMBuildICmp
+( LLVMBuilderRef Builder, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildFCmp
+( LLVMBuilderRef Builder, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
+
+! IB Misc Instructions
+
+FUNCTION: LLVMValueRef LLVMBuildPhi
+( LLVMBuilderRef Builder, LLVMTypeRef Ty, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildCall
+( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildSelect
+( LLVMBuilderRef Builder, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildVAArg
+( LLVMBuilderRef Builder, LLVMValueRef List, LLVMTypeRef Ty, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildExtractElement
+( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef Index, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildInsertElement
+( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildShuffleVector
+( LLVMBuilderRef Builder, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildExtractValue
+( LLVMBuilderRef Builder, LLVMValueRef AggVal, unsigned Index, c-string Name ) ;
+FUNCTION: LLVMValueRef LLVMBuildInsertValue
+( LLVMBuilderRef Builder, LLVMValueRef AggVal, LLVMValueRef EltVal, unsigned Index, c-string Name ) ;
+
+! Memory Buffers/Bit Reader
+
+FUNCTION: int LLVMCreateMemoryBufferWithContentsOfFile
+( c-string Path, LLVMMemoryBufferRef* OutMemBuf, c-string* OutMessage ) ;
+
+FUNCTION: void LLVMDisposeMemoryBuffer ( LLVMMemoryBufferRef MemBuf ) ;
+
+LIBRARY: LLVMBitReader
+
+FUNCTION: int LLVMParseBitcode
+( LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule, c-string* OutMessage ) ;
+
+FUNCTION: int LLVMGetBitcodeModuleProvider
+( LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef* OutMP, c-string* OutMessage ) ;
diff --git a/unmaintained/llvm/core/tags.txt b/unmaintained/llvm/core/tags.txt
new file mode 100644 (file)
index 0000000..700f0dc
--- /dev/null
@@ -0,0 +1 @@
+not tested
diff --git a/unmaintained/llvm/engine/engine.factor b/unmaintained/llvm/engine/engine.factor
new file mode 100644 (file)
index 0000000..e653368
--- /dev/null
@@ -0,0 +1,50 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries alien.syntax kernel
+llvm.core sequences ;
+IN: llvm.engine
+
+<<
+{
+    "LLVMExecutionEngine" "LLVMTarget" "LLVMAnalysis" "LLVMipa"
+    "LLVMTransformUtils" "LLVMScalarOpts" "LLVMCodeGen"
+    "LLVMAsmPrinter" "LLVMSelectionDAG" "LLVMX86CodeGen"
+    "LLVMJIT" "LLVMInterpreter"
+} [ add-llvm-library ] each
+>>
+
+! llvm-c/ExecutionEngine.h
+
+LIBRARY: LLVMExecutionEngine
+
+TYPEDEF: void* LLVMGenericValueRef
+TYPEDEF: void* LLVMExecutionEngineRef
+
+FUNCTION: LLVMGenericValueRef LLVMCreateGenericValueOfInt
+( LLVMTypeRef Ty, ulonglong N, int IsSigned ) ;
+
+FUNCTION: ulonglong LLVMGenericValueToInt
+( LLVMGenericValueRef GenVal, int IsSigned ) ;
+
+FUNCTION: int LLVMCreateExecutionEngine
+( LLVMExecutionEngineRef *OutEE, LLVMModuleProviderRef MP, c-string* OutError ) ;
+
+FUNCTION: int LLVMCreateJITCompiler
+( LLVMExecutionEngineRef* OutJIT, LLVMModuleProviderRef MP, unsigned OptLevel, c-string* OutError ) ;
+
+FUNCTION: void LLVMDisposeExecutionEngine ( LLVMExecutionEngineRef EE ) ;
+
+FUNCTION: void LLVMFreeMachineCodeForFunction ( LLVMExecutionEngineRef EE, LLVMValueRef F ) ;
+
+FUNCTION: void LLVMAddModuleProvider ( LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP ) ;
+
+FUNCTION: int LLVMRemoveModuleProvider
+( LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP, LLVMModuleRef* OutMod, c-string* OutError ) ;
+
+FUNCTION: int LLVMFindFunction
+( LLVMExecutionEngineRef EE, c-string Name, LLVMValueRef* OutFn ) ;
+
+FUNCTION: void* LLVMGetPointerToGlobal ( LLVMExecutionEngineRef EE, LLVMValueRef Global ) ;
+
+FUNCTION: LLVMGenericValueRef LLVMRunFunction
+( LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned NumArgs, LLVMGenericValueRef* Args ) ;
diff --git a/unmaintained/llvm/engine/tags.txt b/unmaintained/llvm/engine/tags.txt
new file mode 100644 (file)
index 0000000..700f0dc
--- /dev/null
@@ -0,0 +1 @@
+not tested
diff --git a/unmaintained/llvm/invoker/invoker-tests.factor b/unmaintained/llvm/invoker/invoker-tests.factor
new file mode 100644 (file)
index 0000000..dca1df2
--- /dev/null
@@ -0,0 +1,7 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.llvm io.pathnames llvm.invoker llvm.reader tools.test ;
+
+{ 3 } [
+    << "resource:extra/llvm/reader/add.bc" install-bc >> 1 2 add
+] unit-test
diff --git a/unmaintained/llvm/invoker/invoker.factor b/unmaintained/llvm/invoker/invoker.factor
new file mode 100644 (file)
index 0000000..64a2ac9
--- /dev/null
@@ -0,0 +1,57 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien alien.data arrays assocs compiler.units
+effects io.backend io.pathnames kernel llvm.core llvm.jit
+llvm.reader llvm.types make namespaces sequences
+specialized-arrays vocabs words ;
+QUALIFIED-WITH: alien.c-types c
+SPECIALIZED-ARRAY: c:void*
+IN: llvm.invoker
+
+! get function name, ret type, param types and names
+
+! load module
+! iterate through functions in a module
+
+TUPLE: function name alien return params ;
+
+: params ( llvm-function -- param-list )
+    dup LLVMCountParams c:void* <c-array>
+    [ LLVMGetParams ] keep >array
+    [ [ LLVMGetValueName ] [ LLVMTypeOf tref> ] bi 2array ] map ;
+
+: <function> ( LLVMValueRef -- function )
+    function new
+    over LLVMGetValueName >>name
+    over LLVMTypeOf tref> type>> return>> >>return
+    swap params >>params ;
+
+: (functions) ( llvm-function -- )
+    [ dup , LLVMGetNextFunction (functions) ] when* ;
+
+: functions ( llvm-module -- functions )
+    LLVMGetFirstFunction [ (functions) ] { } make [ <function> ] map ;
+
+: function-effect ( function -- effect )
+    [ params>> keys ] [ return>> void? 0 1 ? ] bi <effect> ;
+
+: install-function ( function -- )
+    dup name>> "alien.llvm" create-vocab drop
+    "alien.llvm" create-word swap
+    [
+        dup name>> function-pointer ,
+        dup return>> c:lookup-c-type ,
+        dup params>> [ second c:lookup-c-type ] map ,
+        cdecl , \ alien-indirect ,
+    ] [ ] make swap function-effect [ define-declared ] with-compilation-unit ;
+
+: install-module ( name -- )
+    current-jit mps>> at [
+        module>> functions [ install-function ] each
+    ] [ "no such module" throw ] if* ;
+
+: install-bc ( path -- )
+    [ normalize-path ] [ file-name ] bi
+    [ load-into-jit ] keep install-module ;
+
+<< "alien.llvm" create-vocab drop >>
diff --git a/unmaintained/llvm/invoker/tags.txt b/unmaintained/llvm/invoker/tags.txt
new file mode 100644 (file)
index 0000000..700f0dc
--- /dev/null
@@ -0,0 +1 @@
+not tested
diff --git a/unmaintained/llvm/jit/jit-tests.factor b/unmaintained/llvm/jit/jit-tests.factor
new file mode 100644 (file)
index 0000000..e9d1fb0
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: destructors llvm.jit llvm.wrappers tools.test ;
+
+{ } [ "test" <module> "test" add-module "test" remove-module ] unit-test
diff --git a/unmaintained/llvm/jit/jit.factor b/unmaintained/llvm/jit/jit.factor
new file mode 100644 (file)
index 0000000..eb3bebe
--- /dev/null
@@ -0,0 +1,49 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien.c-types alien.data alien.syntax assocs
+destructors kernel llvm.core llvm.engine llvm.wrappers
+namespaces ;
+
+IN: llvm.jit
+
+TUPLE: jit ee mps ;
+
+: empty-engine ( -- engine )
+    "initial-module" <module> <provider> <engine> ;
+
+: <jit> ( -- jit )
+    jit new empty-engine >>ee H{ } clone >>mps ;
+
+: current-jit ( -- jit )
+    \ current-jit global [ drop <jit> ] cache ;
+
+: (remove-functions) ( function -- )
+    current-jit ee>> value>> over LLVMFreeMachineCodeForFunction
+    LLVMGetNextFunction dup ALIEN: 0 = [ drop ] [ (remove-functions) ] if ;
+
+: remove-functions ( module -- )
+    ! free machine code for each function in module
+    LLVMGetFirstFunction dup ALIEN: 0 = [ drop ] [ (remove-functions) ] if ;
+
+: remove-provider ( provider -- )
+    current-jit ee>> value>> swap value>> f void* <ref> f void* <ref>
+    [ LLVMRemoveModuleProvider drop ] 2keep void* deref [ llvm-throw ] when*
+    void* deref module new swap >>value
+    [ value>> remove-functions ] with-disposal ;
+
+: remove-module ( name -- )
+    dup current-jit mps>> at [
+        remove-provider
+        current-jit mps>> delete-at
+    ] [ drop ] if* ;
+
+: add-module ( module name -- )
+    [ <provider> ] dip [ remove-module ] keep
+    current-jit ee>> value>> pick
+    [ [ value>> LLVMAddModuleProvider ] [ t >>disposed drop ] bi ] with-disposal
+    current-jit mps>> set-at ;
+
+: function-pointer ( name -- alien )
+    current-jit ee>> value>> dup
+    rot f void* <ref> [ LLVMFindFunction drop ] keep
+    void* deref LLVMGetPointerToGlobal ;
diff --git a/unmaintained/llvm/jit/tags.txt b/unmaintained/llvm/jit/tags.txt
new file mode 100644 (file)
index 0000000..700f0dc
--- /dev/null
@@ -0,0 +1 @@
+not tested
diff --git a/unmaintained/llvm/reader/add.bc b/unmaintained/llvm/reader/add.bc
new file mode 100644 (file)
index 0000000..c0ba738
Binary files /dev/null and b/unmaintained/llvm/reader/add.bc differ
diff --git a/unmaintained/llvm/reader/add.ll b/unmaintained/llvm/reader/add.ll
new file mode 100644 (file)
index 0000000..4ac57a2
--- /dev/null
@@ -0,0 +1,5 @@
+define i32 @add(i32 %x, i32 %y) {
+entry:
+  %sum = add i32 %x, %y
+  ret i32 %sum
+}
diff --git a/unmaintained/llvm/reader/reader.factor b/unmaintained/llvm/reader/reader.factor
new file mode 100644 (file)
index 0000000..90cf36f
--- /dev/null
@@ -0,0 +1,21 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien.c-types alien.data alien.syntax
+destructors kernel llvm.core llvm.engine llvm.jit llvm.wrappers
+;
+
+IN: llvm.reader
+
+: buffer>module ( buffer -- module )
+    [
+        value>> f void* <ref> f void* <ref>
+        [ LLVMParseBitcode drop ] 2keep
+        void* deref [ llvm-throw ] when* void* deref
+        module new swap >>value
+    ] with-disposal ;
+
+: load-module ( path -- module )
+    <buffer> buffer>module ;
+
+: load-into-jit ( path name -- )
+    [ load-module ] dip add-module ;
diff --git a/unmaintained/llvm/reader/tags.txt b/unmaintained/llvm/reader/tags.txt
new file mode 100644 (file)
index 0000000..700f0dc
--- /dev/null
@@ -0,0 +1 @@
+not tested
diff --git a/unmaintained/llvm/tags.txt b/unmaintained/llvm/tags.txt
new file mode 100644 (file)
index 0000000..ba3ee02
--- /dev/null
@@ -0,0 +1,2 @@
+bindings
+not tested
diff --git a/unmaintained/llvm/types/tags.txt b/unmaintained/llvm/types/tags.txt
new file mode 100644 (file)
index 0000000..700f0dc
--- /dev/null
@@ -0,0 +1 @@
+not tested
diff --git a/unmaintained/llvm/types/types-tests.factor b/unmaintained/llvm/types/types-tests.factor
new file mode 100644 (file)
index 0000000..8e57fb1
--- /dev/null
@@ -0,0 +1,40 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: kernel llvm.types sequences tools.test ;
+
+{ T{ integer f 32 }  } [ " i32 " parse-type ] unit-test
+{ float } [ " float " parse-type ] unit-test
+{ T{ pointer f f x86_fp80 } } [ " x86_fp80 * " parse-type ] unit-test
+{ T{ vector f f 4 T{ integer f 32 } } } [ " < 4 x i32 > " parse-type ] unit-test
+{ T{ struct f f { float double } f } } [ TYPE: { float , double } ; ] unit-test
+{ T{ array f f 0 float } } [ TYPE: [ 0 x float ] ; ] unit-test
+
+{ label void metadata }
+[ [ " label " " void " " metadata " ] [ parse-type ] each ] unit-test
+
+{ T{ function f f float { float float } t } }
+[ TYPE: float ( float , float , ... ) ; ] unit-test
+
+{ T{ struct f f { float TYPE: i32 (i32)* ; } t } }
+[ TYPE: < { float, i32 (i32)* } > ; ] unit-test
+
+{ t } [ TYPE: i32 ; TYPE: i32 ; [ >tref ] same? ] unit-test
+{ t } [ TYPE: i32 * ; TYPE: i32 * ; [ >tref ] same? ] unit-test
+
+{ TYPE: i32 ; } [ TYPE: i32 ; >tref tref> ] unit-test
+{ TYPE: float ; } [ TYPE: float ; >tref tref> ] unit-test
+{ TYPE: double ; } [ TYPE: double ; >tref tref> ] unit-test
+{ TYPE: x86_fp80 ; } [ TYPE: x86_fp80 ; >tref tref> ] unit-test
+{ TYPE: fp128 ; } [ TYPE: fp128 ; >tref tref> ] unit-test
+{ TYPE: ppc_fp128 ; } [ TYPE: ppc_fp128 ; >tref tref> ] unit-test
+{ TYPE: opaque ; } [ TYPE: opaque ; >tref tref> ] unit-test
+{ TYPE: label ; } [ TYPE: label ; >tref tref> ] unit-test
+{ TYPE: void ; } [ TYPE: void ; >tref tref> ] unit-test
+{ TYPE: i32* ; } [ TYPE: i32* ; >tref tref> ] unit-test
+{ TYPE: < 2 x i32 > ; } [ TYPE: < 2 x i32 > ; >tref tref> ] unit-test
+{ TYPE: [ 0 x i32 ] ; } [ TYPE: [ 0 x i32 ] ; >tref tref> ] unit-test
+{ TYPE: { i32, i32 } ; } [ TYPE: { i32, i32 } ; >tref tref> ] unit-test
+{ TYPE: < { i32, i32 } > ; } [ TYPE: < { i32, i32 } > ; >tref tref> ] unit-test
+{ TYPE: i32 ( i32 ) ; } [ TYPE: i32 ( i32 ) ; >tref tref> ] unit-test
+{ TYPE: \1* ; } [ TYPE: \1* ; >tref tref> ] unit-test
+{ TYPE: { i32, \2* } ; } [ TYPE: { i32, \2* } ; >tref tref> ] unit-test
diff --git a/unmaintained/llvm/types/types.factor b/unmaintained/llvm/types/types.factor
new file mode 100644 (file)
index 0000000..b53f716
--- /dev/null
@@ -0,0 +1,246 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien.c-types alien.data arrays combinators
+kernel llvm.core locals math.parser math multiline namespaces
+parser peg.ebnf sequences sequences.deep specialized-arrays
+strings vocabs words ;
+SPECIALIZED-ARRAY: void*
+IN: llvm.types
+
+! Type resolution strategy:
+!  pass 1:
+!    create the type with uprefs mapped to opaque types
+!    cache typerefs in enclosing types for pass 2
+!    if our type is concrete, then we are done
+!
+!  pass 2:
+!    wrap our abstract type in a type handle
+!    create a second type, using the cached enclosing type info
+!    resolve the first type to the second
+!
+GENERIC: (>tref) ( type -- LLVMTypeRef )
+GENERIC: ((tref>)) ( LLVMTypeRef type -- type )
+GENERIC: c-type ( type -- str )
+
+! default implementation for simple types
+M: object ((tref>)) nip ;
+: unsupported-type ( -- )
+    "cannot generate c-type: unsupported llvm type" throw ;
+M: object c-type unsupported-type ;
+
+TUPLE: integer size ;
+C: <integer> integer
+
+M: integer (>tref) size>> LLVMIntType ;
+M: integer ((tref>)) swap LLVMGetIntTypeWidth >>size ;
+M: integer c-type size>> {
+    { 64 [ "longlong" ] }
+    { 32 [ "int" ] }
+    { 16 [ "short" ] }
+    { 8  [ "char" ] }
+    [ unsupported-type ]
+} case ;
+
+SINGLETONS: float double x86_fp80 fp128 ppc_fp128 ;
+
+M: float (>tref) drop LLVMFloatType ;
+M: double (>tref) drop LLVMDoubleType ;
+M: double c-type drop "double" ;
+M: x86_fp80 (>tref) drop LLVMX86FP80Type ;
+M: fp128 (>tref) drop LLVMFP128Type ;
+M: ppc_fp128 (>tref) drop LLVMPPCFP128Type ;
+
+SINGLETONS: opaque label void metadata ;
+
+M: opaque (>tref) drop LLVMOpaqueType ;
+M: label (>tref) drop LLVMLabelType ;
+M: void (>tref) drop LLVMVoidType ;
+M: void c-type drop "void" ;
+M: metadata (>tref) drop
+    "metadata types unsupported by llvm c bindings" throw ;
+
+! enclosing types cache their llvm refs during
+! the first pass, used in the second pass to
+! resolve uprefs
+TUPLE: enclosing cached ;
+
+GENERIC: clean ( type -- )
+GENERIC: clean* ( type -- )
+M: object clean drop ;
+M: enclosing clean f >>cached clean* ;
+
+! builds the stack of types that uprefs need to refer to
+SYMBOL: types
+:: push-type ( type quot: ( type -- LLVMTypeRef ) -- LLVMTypeRef )
+    type types get push
+    type quot call( type -- LLVMTypeRef )
+    types get pop over >>cached drop ;
+
+DEFER: <up-ref>
+:: push-ref ( ref quot: ( LLVMTypeRef -- type ) -- type )
+    ref types get index
+    [ types get length swap - <up-ref> ] [
+        ref types get push
+        ref quot call( LLVMTypeRef -- type )
+        types get pop drop
+    ] if* ;
+
+GENERIC: (>tref)* ( type -- LLVMTypeRef )
+M: enclosing (>tref) [ (>tref)* ] push-type ;
+
+DEFER: type-kind
+GENERIC: (tref>)* ( LLVMTypeRef type -- type )
+M: enclosing ((tref>)) [ (tref>)* ] curry push-ref ;
+
+: (tref>) ( LLVMTypeRef -- type ) dup type-kind ((tref>)) ;
+
+TUPLE: pointer < enclosing type ;
+: <pointer> ( t -- o ) pointer new swap >>type ;
+
+M: pointer (>tref)* type>> (>tref) 0 LLVMPointerType ;
+M: pointer clean* type>> clean ;
+M: pointer (tref>)* swap LLVMGetElementType (tref>) >>type ;
+M: pointer c-type type>> 8 <integer> = "c-string" "void*" ? ;
+
+TUPLE: vector < enclosing size type ;
+: <vector> ( s t -- o )
+    vector new
+    swap >>type swap >>size ;
+
+M: vector (>tref)* [ type>> (>tref) ] [ size>> ] bi LLVMVectorType ;
+M: vector clean* type>> clean ;
+M: vector (tref>)*
+    over LLVMGetElementType (tref>) >>type
+    swap LLVMGetVectorSize >>size ;
+
+TUPLE: struct < enclosing types packed? ;
+: <struct> ( ts p? -- o )
+    struct new
+    swap >>packed? swap >>types ;
+
+M: struct (>tref)*
+    [ types>> [ (>tref) ] map void* >c-array ]
+    [ types>> length ]
+    [ packed?>> 1 0 ? ] tri LLVMStructType ;
+M: struct clean* types>> [ clean ] each ;
+M: struct (tref>)*
+    over LLVMIsPackedStruct 0 = not >>packed?
+    swap dup LLVMCountStructElementTypes void* <c-array>
+    [ LLVMGetStructElementTypes ] keep >array
+    [ (tref>) ] map >>types ;
+
+TUPLE: array < enclosing size type ;
+: <array> ( s t -- o )
+    array new
+    swap >>type swap >>size ;
+
+M: array (>tref)* [ type>> (>tref) ] [ size>> ] bi LLVMArrayType ;
+M: array clean* type>> clean ;
+M: array (tref>)*
+    over LLVMGetElementType (tref>) >>type
+    swap LLVMGetArrayLength >>size ;
+
+SYMBOL: ...
+TUPLE: function < enclosing return params vararg? ;
+: <function> ( ret params var? -- o )
+    function new
+    swap >>vararg? swap >>params swap >>return ;
+
+M: function (>tref)* {
+    [ return>> (>tref) ]
+    [ params>> [ (>tref) ] map void* >c-array ]
+    [ params>> length ]
+    [ vararg?>> 1 0 ? ]
+} cleave LLVMFunctionType ;
+M: function clean* [ return>> clean ] [ params>> [ clean ] each ] bi ;
+M: function (tref>)*
+    over LLVMIsFunctionVarArg 0 = not >>vararg?
+    over LLVMGetReturnType (tref>) >>return
+    swap dup LLVMCountParamTypes void* <c-array>
+    [ LLVMGetParamTypes ] keep >array
+    [ (tref>) ] map >>params ;
+
+: type-kind ( LLVMTypeRef -- class )
+    LLVMGetTypeKind {
+        { LLVMVoidTypeKind [ void ] }
+        { LLVMFloatTypeKind [ float ] }
+        { LLVMDoubleTypeKind [ double ] }
+        { LLVMX86_FP80TypeKind [ x86_fp80 ] }
+        { LLVMFP128TypeKind [ fp128 ] }
+        { LLVMPPC_FP128TypeKind [ ppc_fp128 ] }
+        { LLVMLabelTypeKind [ label ] }
+        { LLVMIntegerTypeKind [ integer new ] }
+        { LLVMFunctionTypeKind [ function new ] }
+        { LLVMStructTypeKind [ struct new ] }
+        { LLVMArrayTypeKind [ array new ] }
+        { LLVMPointerTypeKind [ pointer new ] }
+        { LLVMOpaqueTypeKind [ opaque ] }
+        { LLVMVectorTypeKind [ vector new ] }
+   } case ;
+
+TUPLE: up-ref height ;
+C: <up-ref> up-ref
+
+M: up-ref (>tref)
+    types get length swap height>> - types get nth
+    cached>> [ LLVMOpaqueType ] unless* ;
+
+: resolve-types ( typeref typeref -- typeref )
+    over LLVMCreateTypeHandle [ LLVMRefineType ] dip
+    [ LLVMResolveTypeHandle ] keep LLVMDisposeTypeHandle ;
+
+: >tref-caching ( type -- LLVMTypeRef )
+    V{ } clone types [ (>tref) ] with-variable ;
+
+: >tref ( type -- LLVMTypeRef )
+    [ >tref-caching ] [ >tref-caching ] [ clean ] tri
+    2dup = [ drop ] [ resolve-types ] if ;
+
+: tref> ( LLVMTypeRef -- type )
+    V{ } clone types [ (tref>) ] with-variable ;
+
+: t. ( type -- )
+    >tref
+    "type-info" LLVMModuleCreateWithName
+    [ "t" rot LLVMAddTypeName drop ]
+    [ LLVMDumpModule ]
+    [ LLVMDisposeModule ] tri ;
+
+EBNF: parse-type
+
+WhiteSpace = " "*
+
+Zero = "0" => [[ drop 0 ]]
+LeadingDigit = [1-9]
+DecimalDigit = [0-9]
+Number = LeadingDigit:d (DecimalDigit)*:ds => [[ ds d prefix string>number ]]
+WhiteNumberSpace = WhiteSpace Number:n WhiteSpace => [[ n ]]
+WhiteZeroSpace = WhiteSpace (Zero | Number):n WhiteSpace => [[ n ]]
+
+Integer = "i" Number:n => [[ n <integer> ]]
+FloatingPoint = ( "float" | "double" | "x86_fp80" | "fp128" | "ppc_fp128" ) => [[ "llvm.types" vocab lookup-word ]]
+LabelVoidMetadata = ( "label" | "void" | "metadata" | "opaque" ) => [[ "llvm.types" vocab lookup-word ]]
+Primitive = LabelVoidMetadata | FloatingPoint
+Pointer = T:t WhiteSpace "*" => [[ t <pointer> ]]
+Vector = "<" WhiteNumberSpace:n "x" Type:t ">" => [[ n t <vector> ]]
+StructureTypesList = "," Type:t => [[ t ]]
+Structure = "{" Type:t (StructureTypesList)*:ts "}" => [[ ts t prefix >array f <struct> ]]
+Array = "[" WhiteZeroSpace:n "x" Type:t "]" => [[ n t <array> ]]
+NoFunctionParams = "(" WhiteSpace ")" => [[ drop { } ]]
+VarArgs = WhiteSpace "..." WhiteSpace => [[ drop ... ]]
+ParamListContinued = "," (Type | VarArgs):t => [[ t ]]
+ParamList = "(" Type:t (ParamListContinued*):ts ")" => [[ ts t prefix ]]
+Function = T:t WhiteSpace ( ParamList | NoFunctionParams ):ts => [[ ... ts member? dup [ ... ts remove! drop ] when t ts >array rot <function> ]]
+PackedStructure = "<" WhiteSpace "{" Type:ty (StructureTypesList)*:ts "}" WhiteSpace ">" => [[ ts ty prefix >array t <struct> ]]
+UpReference = "\\" Number:n => [[ n <up-ref> ]]
+Name = '%' ([a-zA-Z][a-zA-Z0-9]*):id => [[ id flatten >string ]]
+
+T = Pointer | Function | Primitive | Integer | Vector | Structure | PackedStructure | Array | UpReference | Name
+
+Type = WhiteSpace T:t WhiteSpace => [[ t ]]
+
+Program = Type
+
+;EBNF
+
+SYNTAX: TYPE: ";" parse-multiline-string parse-type suffix! ;
diff --git a/unmaintained/llvm/wrappers/tags.txt b/unmaintained/llvm/wrappers/tags.txt
new file mode 100644 (file)
index 0000000..700f0dc
--- /dev/null
@@ -0,0 +1 @@
+not tested
diff --git a/unmaintained/llvm/wrappers/wrappers-tests.factor b/unmaintained/llvm/wrappers/wrappers-tests.factor
new file mode 100644 (file)
index 0000000..6d74932
--- /dev/null
@@ -0,0 +1,7 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: destructors kernel llvm.wrappers sequences tools.test vocabs ;
+
+{ } [ "test" <module> dispose ] unit-test
+{ } [ "test" <module> <provider> dispose ] unit-test
+{ } [ "llvm.jit" vocabs member? [ "test" <module> <provider> <engine> dispose ] unless ] unit-test
diff --git a/unmaintained/llvm/wrappers/wrappers.factor b/unmaintained/llvm/wrappers/wrappers.factor
new file mode 100644 (file)
index 0000000..27c8a05
--- /dev/null
@@ -0,0 +1,62 @@
+! Copyright (C) 2009 Matthew Willis.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien.c-types alien.data alien.strings
+io.encodings.utf8 destructors kernel
+llvm.core llvm.engine ;
+
+IN: llvm.wrappers
+
+: llvm-throw ( c-string -- )
+    [ utf8 alien>string ] [ LLVMDisposeMessage ] bi throw ;
+
+: <dispose> ( alien class -- disposable ) new swap >>value ;
+
+TUPLE: module value disposed ;
+M: module dispose* value>> LLVMDisposeModule ;
+
+: <module> ( name -- module )
+    LLVMModuleCreateWithName module <dispose> ;
+
+TUPLE: provider value module disposed ;
+M: provider dispose* value>> LLVMDisposeModuleProvider ;
+
+: (provider) ( module -- provider )
+    [ value>> LLVMCreateModuleProviderForExistingModule provider <dispose> ]
+    [ t >>disposed value>> ] bi
+    >>module ;
+
+: <provider> ( module -- provider )
+    [ (provider) ] with-disposal ;
+
+TUPLE: engine value disposed ;
+M: engine dispose* value>> LLVMDisposeExecutionEngine ;
+
+: (engine) ( provider -- engine )
+    [
+        value>> f void* <ref> f void* <ref>
+        [ swapd 0 swap LLVMCreateJITCompiler drop ] 2keep
+        void* deref [ llvm-throw ] when* void* deref
+    ]
+    [ t >>disposed drop ] bi
+    engine <dispose> ;
+
+: <engine> ( provider -- engine )
+    [ (engine) ] with-disposal ;
+
+: (add-block) ( name -- basic-block )
+    "function" swap LLVMAppendBasicBlock ;
+
+TUPLE: builder value disposed ;
+M: builder dispose* value>> LLVMDisposeBuilder ;
+
+: <builder> ( name -- builder )
+    (add-block) LLVMCreateBuilder [ swap LLVMPositionBuilderAtEnd ] keep
+    builder <dispose> ;
+
+TUPLE: buffer value disposed ;
+M: buffer dispose* value>> LLVMDisposeMemoryBuffer ;
+
+: <buffer> ( path -- module )
+    f void* <ref> f void* <ref>
+    [ LLVMCreateMemoryBufferWithContentsOfFile drop ] 2keep
+    void* deref [ llvm-throw ] when* void* deref buffer <dispose> ;