llvm_c_ext: Updated to use `llvm::DINode::DIFlags` rather than just `unsigned`. Added new constantpool `LLVMDIFLags` default tip
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 15 Sep 2016 22:14:32 +0100
changeset 79 6d6e5a3ec6b1
parent 78 7a4c769a9fea
llvm_c_ext: Updated to use `llvm::DINode::DIFlags` rather than just `unsigned`. Added new constantpool `LLVMDIFLags`
LLVMDIFlags.st
LLVMVisibility.st
Make.proto
Make.spec
abbrev.stc
bc.mak
jv_llvm_s.st
libInit.cc
llvm_c_ext/include/llvm-c-ext/DIBuilder.h
llvm_c_ext/lib/DIBuilder.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LLVMDIFlags.st	Thu Sep 15 22:14:32 2016 +0100
@@ -0,0 +1,87 @@
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+"{ Package: 'jv:llvm_s' }"
+
+"{ NameSpace: Smalltalk }"
+
+SharedPool subclass:#LLVMDIFlags
+	instanceVariableNames:''
+	classVariableNames:'LLVMDIFlagZero LLVMDIFlagPrivate LLVMDIFlagProtected
+		LLVMDIFlagPublic LLVMDIFlagFwdDecl LLVMDIFlagAppleBlock
+		LLVMDIFlagBlockByrefStruct LLVMDIFlagVirtual LLVMDIFlagArtificial
+		LLVMDIFlagExplicit LLVMDIFlagPrototyped
+		LLVMDIFlagObjcClassComplete LLVMDIFlagObjectPointer
+		LLVMDIFlagVector LLVMDIFlagStaticMember LLVMDIFlagLValueReference
+		LLVMDIFlagRValueReference LLVMDIFlagExternalTypeRef
+		LLVMDIFlagSingleInheritance LLVMDIFlagMultipleInheritance
+		LLVMDIFlagVirtualInheritance LLVMDIFlagIntroducedVirtual
+		LLVMDIFlagBitField LLVMDIFlagNoReturn LLVMDIFlagAccessibility'
+	poolDictionaries:''
+	category:'LLVM-S-Core-Constants'
+!
+
+!LLVMDIFlags class methodsFor:'documentation'!
+
+copyright
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+! !
+
+!LLVMDIFlags class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    LLVMDIFlagZero := 0.
+    LLVMDIFlagPrivate := 1.
+    LLVMDIFlagProtected := 2.
+    LLVMDIFlagPublic := 3.
+    LLVMDIFlagFwdDecl := (1 << 2).
+    LLVMDIFlagAppleBlock := (1 << 3).
+    LLVMDIFlagBlockByrefStruct := (1 << 4).
+    LLVMDIFlagVirtual := (1 << 5).
+    LLVMDIFlagArtificial := (1 << 6).
+    LLVMDIFlagExplicit := (1 << 7).
+    LLVMDIFlagPrototyped := (1 << 8).
+    LLVMDIFlagObjcClassComplete := (1 << 9).
+    LLVMDIFlagObjectPointer := (1 << 10).
+    LLVMDIFlagVector := (1 << 11).
+    LLVMDIFlagStaticMember := (1 << 12).
+    LLVMDIFlagLValueReference := (1 << 13).
+    LLVMDIFlagRValueReference := (1 << 14).
+    LLVMDIFlagExternalTypeRef := (1 << 15).
+    LLVMDIFlagSingleInheritance := (1 << 16).
+    LLVMDIFlagMultipleInheritance := (2 << 16).
+    LLVMDIFlagVirtualInheritance := (3 << 16).
+    LLVMDIFlagIntroducedVirtual := (1 << 18).
+    LLVMDIFlagBitField := (1 << 19).
+    LLVMDIFlagNoReturn := (1 << 20).
+    LLVMDIFlagAccessibility := LLVMDIFlagPrivate | LLVMDIFlagProtected | LLVMDIFlagPublic
+
+    "Modified: / 15-09-2016 / 22:12:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+LLVMDIFlags initialize!
--- a/LLVMVisibility.st	Tue Aug 30 16:57:29 2016 +0100
+++ b/LLVMVisibility.st	Thu Sep 15 22:14:32 2016 +0100
@@ -67,5 +67,12 @@
     ^LLVMProtectedVisibility
 ! !
 
+!LLVMVisibility class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
 
 LLVMVisibility initialize!
--- a/Make.proto	Tue Aug 30 16:57:29 2016 +0100
+++ b/Make.proto	Thu Sep 15 22:14:32 2016 +0100
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic
 
 
 # if you need any additional defines for embedded C code,
@@ -135,6 +135,7 @@
 $(OUTDIR)LLVMCallConv.$(O) LLVMCallConv.$(C) LLVMCallConv.$(H): LLVMCallConv.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMConfig.$(O) LLVMConfig.$(C) LLVMConfig.$(H): LLVMConfig.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMConstant.$(O) LLVMConstant.$(C) LLVMConstant.$(H): LLVMConstant.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMDIFlags.$(O) LLVMDIFlags.$(C) LLVMDIFlags.$(H): LLVMDIFlags.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDLLStorageClass.$(O) LLVMDLLStorageClass.$(C) LLVMDLLStorageClass.$(H): LLVMDLLStorageClass.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDWARFEncoding.$(O) LLVMDWARFEncoding.$(C) LLVMDWARFEncoding.$(H): LLVMDWARFEncoding.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDWARFLamguage.$(O) LLVMDWARFLamguage.$(C) LLVMDWARFLamguage.$(H): LLVMDWARFLamguage.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
--- a/Make.spec	Tue Aug 30 16:57:29 2016 +0100
+++ b/Make.spec	Thu Sep 15 22:14:32 2016 +0100
@@ -60,6 +60,7 @@
 	LLVMCallConv \
 	LLVMConfig \
 	LLVMConstant \
+	LLVMDIFlags \
 	LLVMDLLStorageClass \
 	LLVMDWARFEncoding \
 	LLVMDWARFLamguage \
@@ -138,6 +139,7 @@
     $(OUTDIR_SLASH)LLVMCallConv.$(O) \
     $(OUTDIR_SLASH)LLVMConfig.$(O) \
     $(OUTDIR_SLASH)LLVMConstant.$(O) \
+    $(OUTDIR_SLASH)LLVMDIFlags.$(O) \
     $(OUTDIR_SLASH)LLVMDLLStorageClass.$(O) \
     $(OUTDIR_SLASH)LLVMDWARFEncoding.$(O) \
     $(OUTDIR_SLASH)LLVMDWARFLamguage.$(O) \
--- a/abbrev.stc	Tue Aug 30 16:57:29 2016 +0100
+++ b/abbrev.stc	Thu Sep 15 22:14:32 2016 +0100
@@ -10,6 +10,7 @@
 LLVMCallConv LLVMCallConv jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMConfig LLVMConfig jv:llvm_s 'LLVM-S-Internal' 0
 LLVMConstant LLVMConstant jv:llvm_s 'LLVM-S-Core' 0
+LLVMDIFlags LLVMDIFlags jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMDLLStorageClass LLVMDLLStorageClass jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMDWARFEncoding LLVMDWARFEncoding jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMDWARFLamguage LLVMDWARFLamguage jv:llvm_s 'LLVM-S-Core-Constants' 0
@@ -31,7 +32,6 @@
 LLVMVerifierFailureAction LLVMVerifierFailureAction jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMVisibility LLVMVisibility jv:llvm_s 'LLVM-S-Core-Constants' 0
 jv_llvm_s jv_llvm_s jv:llvm_s '* Projects & Packages *' 3
-LLVMExamples LLVMExamples jv:llvm_s 'LLVM-S-Core-Examples' 1
 LLVMObject LLVMObject jv:llvm_s 'LLVM-S-Internal' 0
 LLVMTypeError LLVMTypeError jv:llvm_s 'LLVM-S-Core-Exceptions' 1
 LLVMBasicBlock LLVMBasicBlock jv:llvm_s 'LLVM-S-Core' 0
@@ -75,3 +75,4 @@
 LLVMTypeFloat LLVMTypeFloat jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypePPC_FP128 LLVMTypePPC_FP128 jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeX86_FP80 LLVMTypeX86_FP80 jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMExamples LLVMExamples jv:llvm_s 'LLVM-S-Core-Examples' 1
--- a/bc.mak	Tue Aug 30 16:57:29 2016 +0100
+++ b/bc.mak	Thu Sep 15 22:14:32 2016 +0100
@@ -35,7 +35,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -77,6 +77,7 @@
 $(OUTDIR)LLVMCallConv.$(O) LLVMCallConv.$(C) LLVMCallConv.$(H): LLVMCallConv.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMConfig.$(O) LLVMConfig.$(C) LLVMConfig.$(H): LLVMConfig.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMConstant.$(O) LLVMConstant.$(C) LLVMConstant.$(H): LLVMConstant.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMDIFlags.$(O) LLVMDIFlags.$(C) LLVMDIFlags.$(H): LLVMDIFlags.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDLLStorageClass.$(O) LLVMDLLStorageClass.$(C) LLVMDLLStorageClass.$(H): LLVMDLLStorageClass.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDWARFEncoding.$(O) LLVMDWARFEncoding.$(C) LLVMDWARFEncoding.$(H): LLVMDWARFEncoding.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDWARFLamguage.$(O) LLVMDWARFLamguage.$(C) LLVMDWARFLamguage.$(H): LLVMDWARFLamguage.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
--- a/jv_llvm_s.st	Tue Aug 30 16:57:29 2016 +0100
+++ b/jv_llvm_s.st	Thu Sep 15 22:14:32 2016 +0100
@@ -91,7 +91,6 @@
      by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
-        #'stx:goodies/sunit'    "TestAsserter - superclass of LLVMExamples"
     )
 !
 
@@ -147,6 +146,7 @@
         LLVMCallConv
         LLVMConfig
         LLVMConstant
+        LLVMDIFlags
         LLVMDLLStorageClass
         LLVMDWARFEncoding
         LLVMDWARFLamguage
@@ -168,7 +168,6 @@
         LLVMVerifierFailureAction
         LLVMVisibility
         #'jv_llvm_s'
-        (LLVMExamples autoload)
         LLVMObject
         LLVMTypeError
         LLVMBasicBlock
@@ -212,6 +211,7 @@
         LLVMTypeFloat
         #'LLVMTypePPC_FP128'
         #'LLVMTypeX86_FP80'
+        (LLVMExamples autoload)
     )
 !
 
--- a/libInit.cc	Tue Aug 30 16:57:29 2016 +0100
+++ b/libInit.cc	Thu Sep 15 22:14:32 2016 +0100
@@ -25,6 +25,7 @@
 extern void _LLVMCallConv_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMConfig_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMConstant_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _LLVMDIFlags_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMDLLStorageClass_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMDWARFEncoding_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMDWARFLamguage_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -112,6 +113,7 @@
     _LLVMCallConv_Init(pass,__pRT__,snd);
     _LLVMConfig_Init(pass,__pRT__,snd);
     _LLVMConstant_Init(pass,__pRT__,snd);
+    _LLVMDIFlags_Init(pass,__pRT__,snd);
     _LLVMDLLStorageClass_Init(pass,__pRT__,snd);
     _LLVMDWARFEncoding_Init(pass,__pRT__,snd);
     _LLVMDWARFLamguage_Init(pass,__pRT__,snd);
--- a/llvm_c_ext/include/llvm-c-ext/DIBuilder.h	Tue Aug 30 16:57:29 2016 +0100
+++ b/llvm_c_ext/include/llvm-c-ext/DIBuilder.h	Thu Sep 15 22:14:32 2016 +0100
@@ -26,6 +26,18 @@
 extern "C" {
 #endif
 
+/**
+ * Debug info flags.
+ * 
+ * \see llvm::DINode::DIFlags
+ */
+enum LLVMDIFlag {
+#define HANDLE_DI_FLAG(ID, NAME) DIFlag##NAME = ID,
+#include "llvm/IR/DebugInfoFlags.def"
+    DIFlagAccessibility = DIFlagPrivate | DIFlagProtected | DIFlagPublic
+};
+
+
 // FIXME: These bindings shouldn't be Go-specific and should eventually move to
 // a (somewhat) less stable collection of C APIs for use in creating bindings of
 // LLVM in other languages.
--- a/llvm_c_ext/lib/DIBuilder.cpp	Tue Aug 30 16:57:29 2016 +0100
+++ b/llvm_c_ext/lib/DIBuilder.cpp	Thu Sep 15 22:14:32 2016 +0100
@@ -87,7 +87,7 @@
   return wrap(D->createFunction(unwrap<DIScope>(Scope), Name, LinkageName,
                                 File ? unwrap<DIFile>(File) : nullptr, Line,
                                 unwrap<DISubroutineType>(CompositeType),
-                                IsLocalToUnit, IsDefinition, ScopeLine, Flags,
+                                IsLocalToUnit, IsDefinition, ScopeLine, (DINode::DIFlags)Flags,
                                 IsOptimized, unwrap<Function>(Func)));
 }
 #else
@@ -100,7 +100,7 @@
   return wrap(D->createFunction(unwrap<DIScope>(Scope), Name, LinkageName,
                                 File ? unwrap<DIFile>(File) : nullptr, Line,
                                 unwrap<DISubroutineType>(CompositeType),
-                                IsLocalToUnit, IsDefinition, ScopeLine, Flags,
+                                IsLocalToUnit, IsDefinition, ScopeLine, (DINode::DIFlags)Flags,
                                 IsOptimized));
 }
 #endif
@@ -112,7 +112,7 @@
   DIBuilder *D = unwrap(Dref);
   return wrap(D->createAutoVariable(
 		  unwrap<DIScope>(Scope), StringRef(Name), unwrap<DIFile>(File), Line,
-		  unwrap<DIType>(Ty), (bool)AlwaysPreserve, Flags));
+		  unwrap<DIType>(Ty), (bool)AlwaysPreserve, (DINode::DIFlags)Flags));
 }
 
 
@@ -123,7 +123,7 @@
   DIBuilder *D = unwrap(Dref);
   return wrap(D->createParameterVariable(
 		  unwrap<DIScope>(Scope), StringRef(Name), ArgNo, unwrap<DIFile>(File), Line,
-		  unwrap<DIType>(Ty), (bool)AlwaysPreserve, Flags));
+		  unwrap<DIType>(Ty), (bool)AlwaysPreserve, (DINode::DIFlags)Flags));
 }
 
 LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Dref,
@@ -173,7 +173,7 @@
   DIBuilder *D = unwrap(Dref);
   return wrap(D->createStructType(
       unwrap<DIScope>(Scope), Name, File ? unwrap<DIFile>(File) : nullptr, Line,
-      SizeInBits, AlignInBits, Flags,
+      SizeInBits, AlignInBits, (DINode::DIFlags)Flags,
       DerivedFrom ? unwrap<DIType>(DerivedFrom) : nullptr,
       ElementTypes ? DINodeArray(unwrap<MDTuple>(ElementTypes)) : nullptr));
 }
@@ -186,7 +186,7 @@
   DIBuilder *D = unwrap(Dref);
   return wrap(D->createReplaceableCompositeType(
       Tag, Name, unwrap<DIScope>(Scope), File ? unwrap<DIFile>(File) : nullptr,
-      Line, RuntimeLang, SizeInBits, AlignInBits, Flags));
+      Line, RuntimeLang, SizeInBits, AlignInBits, (DINode::DIFlags)Flags));
 }
 
 LLVMMetadataRef
@@ -198,7 +198,7 @@
   DIBuilder *D = unwrap(Dref);
   return wrap(D->createMemberType(
       unwrap<DIScope>(Scope), Name, File ? unwrap<DIFile>(File) : nullptr, Line,
-      SizeInBits, AlignInBits, OffsetInBits, Flags, unwrap<DIType>(Ty)));
+      SizeInBits, AlignInBits, OffsetInBits, (DINode::DIFlags)Flags, unwrap<DIType>(Ty)));
 }
 
 LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Dref,