Hi - attached is a patch to enable building DragonEgg (x86_64) for LLVM3.3 and LLVM3.4. That is, add these changes to the 3.3 release, and it becomes possible to build DragonEgg against a llvm3.4 compiler. Regards, Richard Gorton Cognitive Electronics rcgorton at cog-e.com ---------- -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: dragonegg_diff.txt URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140911/70d1a61c/attachment.txt>
The src/Debug.cpp patch lines under "@@ -1115,13 +1121,33 @@" look like they have a mistake. In both "#if" branches, there is an "if ()" that has three return statements below it, one of which is unreachable. -Isaac On 09/11/2014 02:34 PM, Richard Gorton wrote:> > Hi - attached is a patch to enable building DragonEgg (x86_64) for LLVM3.3 and LLVM3.4. That is, add these changes to the 3.3 release, and it becomes possible to build DragonEgg against a llvm3.4 compiler. > > Regards, > Richard Gorton > Cognitive Electronics > rcgorton at cog-e.com > > ---------- > > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
On 9/12/2014 8:41 AM, Richard Gorton wrote:> Ohmy. Thank you for spotting that. Attached is a diff for the > correction. > > Regards, > Richard Gorton > Cognitive Electronics > rcgorton at cog-e.com >> > On 9/11/2014 3:06 PM, Isaac Dupree wrote: >> The src/Debug.cpp patch lines under "@@ -1115,13 +1121,33 @@" look like >> they have a mistake. In both "#if" branches, there is an "if ()" that >> has three return statements below it, one of which is unreachable. >> >> -Isaac >> >> On 09/11/2014 02:34 PM, Richard Gorton wrote: >>> Hi - attached is a patch to enable building DragonEgg (x86_64) for >>> LLVM3.3 and LLVM3.4. That is, add these changes to the 3.3 release, >>> and it becomes possible to build DragonEgg against a llvm3.4 compiler. >>> >>> Regards, >>> Richard Gorton >>> Cognitive Electronics >>> rcgorton at cog-e.com >>> >>> ---------- >>> >>> >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- Index: include/x86/dragonegg/Target.h ==================================================================--- include/x86/dragonegg/Target.h (revision 552) +++ include/x86/dragonegg/Target.h (working copy) @@ -338,6 +338,7 @@ argvec.push_back("-force-align-stack"); \ } while (0) +#if (LLVM_MINOR == 3) #define LLVM_SET_TARGET_MACHINE_OPTIONS(O) \ do { \ if (TARGET_OMIT_LEAF_FRAME_POINTER) { \ @@ -345,5 +346,13 @@ O.NoFramePointerElimNonLeaf = true; \ } \ } while (0) +#else +#define LLVM_SET_TARGET_MACHINE_OPTIONS(O) \ + do { \ + if (TARGET_OMIT_LEAF_FRAME_POINTER) { \ + O.NoFramePointerElim = false; \ + } \ + } while (0) +#endif #endif /* DRAGONEGG_TARGET_H */ Index: src/Debug.cpp ==================================================================--- src/Debug.cpp (revision 552) +++ src/Debug.cpp (working copy) @@ -1089,9 +1089,15 @@ return Builder.createArrayType(SizeInBits, AlignInBits, DerivedFrom, Elements); case dwarf::DW_TAG_structure_type: +#if (LLVM_MINOR == 3) return Builder.createStructType(Context, Name, F, LineNumber, SizeInBits, AlignInBits, Flags, DerivedFrom, Elements, 0, ContainingType); +#else + return Builder.createStructType(Context, Name, F, LineNumber, SizeInBits, + AlignInBits, Flags, DerivedFrom, Elements, + 0, DIType(ContainingType)); +#endif case dwarf::DW_TAG_union_type: return Builder.createUnionType(Context, Name, F, LineNumber, SizeInBits, AlignInBits, Flags, Elements, RuntimeLang); @@ -1115,6 +1121,8 @@ StringRef LinkageName, DIFile F, unsigned LineNo, DIType Ty, bool isLocalToUnit, bool isDefinition, unsigned VK, unsigned VIndex, DIType ContainingType, unsigned Flags, bool isOptimized, Function *Fn) { + +#if (LLVM_MINOR == 3) if (ContainingType.isValid() || VK || VIndex) return Builder.createMethod(Context, Name, LinkageName, F, LineNo, Ty, isLocalToUnit, isDefinition, VK, VIndex, NULL, @@ -1122,6 +1130,17 @@ return Builder.createFunction(Context, Name, LinkageName, F, LineNo, Ty, isLocalToUnit, isDefinition, LineNo, Flags, isOptimized, Fn, NULL, NULL); +#else + DICompositeType CTy = getDICompositeType(Ty); + assert(CTy.Verify() && "Expected a composite type!"); + if (ContainingType.isValid() || VK || VIndex) + return Builder.createMethod(Context, Name, LinkageName, F, LineNo, CTy, + isLocalToUnit, isDefinition, VK, VIndex, DIType(), + Flags, isOptimized, Fn, NULL); + return Builder.createFunction(Context, Name, LinkageName, F, LineNo, CTy, + isLocalToUnit, isDefinition, LineNo, Flags, + isOptimized, Fn, NULL, NULL); +#endif } /// CreateSubprogramDefinition - Create new subprogram descriptor for the Index: src/Backend.cpp ==================================================================--- src/Backend.cpp (revision 552) +++ src/Backend.cpp (working copy) @@ -482,11 +482,15 @@ if (flag_omit_frame_pointer) { // Eliminate frame pointers everywhere. Options.NoFramePointerElim = false; +#if (LLVM_MINOR == 3) Options.NoFramePointerElimNonLeaf = false; +#endif } else { // Keep frame pointers everywhere. Options.NoFramePointerElim = true; +#if (LLVM_MINOR == 3) Options.NoFramePointerElimNonLeaf = true; +#endif } // If a target has an option to eliminate frame pointers in leaf functions // only then it should set @@ -511,7 +515,9 @@ #else Options.UseInitArray = false; #endif +#if (LLVM_MINOR == 3) Options.SSPBufferSize = PARAM_VALUE(PARAM_SSP_BUFFER_SIZE); +#endif #ifdef LLVM_SET_TARGET_MACHINE_OPTIONS LLVM_SET_TARGET_MACHINE_OPTIONS(Options); #endif @@ -642,7 +648,9 @@ // Configure the pass builder. PassBuilder.SizeLevel = optimize_size; +#if (LLVM_MINOR == 3) PassBuilder.DisableSimplifyLibCalls = flag_no_simplify_libcalls; +#endif PassBuilder.DisableUnitAtATime = !flag_unit_at_a_time; PassBuilder.DisableUnrollLoops = !flag_unroll_loops; // Don't turn on the SLP vectorizer by default at -O3 for the moment. @@ -662,8 +670,13 @@ assert(!OutStream && "Output stream already initialized!"); std::string Error; +#if (LLVM_MINOR == 3) OutStream = new raw_fd_ostream(llvm_asm_file_name, Error, Binary ? raw_fd_ostream::F_Binary : 0); +#else + OutStream = new raw_fd_ostream(llvm_asm_file_name, Error, + Binary ? sys::fs::F_Binary : sys::fs::F_None); +#endif if (!Error.empty()) report_fatal_error(Error); Index: Makefile ==================================================================--- Makefile (revision 552) +++ Makefile (working copy) @@ -61,7 +61,10 @@ GCC_MICRO=$(word 3, $(subst ., ,$(GCC_VERSION))) TARGET_TRIPLE=$(shell $(GCC) -dumpmachine) -LLVM_VERSION=$(shell $(LLVM_CONFIG) --version) +LLVM_VERSION=$(shell $(LLVM_CONFIG) --version).0 +LLVM_MAJOR=$(word 1, $(subst ., ,$(LLVM_VERSION))) +LLVM_MINOR=$(word 2, $(subst ., ,$(LLVM_VERSION))) +LLVM_MICRO=$(word 3, $(subst ., ,$(LLVM_VERSION))) PLUGIN=dragonegg.so PLUGIN_OBJECTS=Aliasing.o Backend.o Cache.o ConstantConversion.o Convert.o \ @@ -80,8 +83,8 @@ -MD -MP \ -DIN_GCC -DLLVM_VERSION=\"$(LLVM_VERSION)\" \ -DTARGET_TRIPLE=\"$(TARGET_TRIPLE)\" \ - -DGCC_MAJOR=$(GCC_MAJOR) -DGCC_MINOR=$(GCC_MINOR) \ - -DGCC_MICRO=$(GCC_MICRO) \ + -DGCC_MAJOR=$(GCC_MAJOR) -DGCC_MINOR=$(GCC_MINOR) -DGCC_MICRO=$(GCC_MICRO) \ + -DLLVM_MAJOR=$(LLVM_MAJOR) -DLLVM_MINOR=$(LLVM_MINOR) -DLLVM_MICRO=$(LLVM_MICRO) \ -I$(INCLUDE_DIR) -isystem$(GCC_PLUGIN_DIR)/include ifdef DISABLE_VERSION_CHECK CPP_OPTIONS+=-DDISABLE_VERSION_CHECK
> On 9/12/2014 8:41 AM, Richard Gorton wrote: >> Ohmy. Thank you for spotting that. Attached is a diff for the >> correction. >> >> Regards, >> Richard Gorton >> Cognitive Electronics >> rcgorton at cog-e.com >> > > > >> >> On 9/11/2014 3:06 PM, Isaac Dupree wrote: >>> The src/Debug.cpp patch lines under "@@ -1115,13 +1121,33 @@" look like >>> they have a mistake. In both "#if" branches, there is an "if ()" that >>> has three return statements below it, one of which is unreachable. >>> >>> -Isaac >>> >>> On 09/11/2014 02:34 PM, Richard Gorton wrote: >>>> Hi - attached is a patch to enable building DragonEgg (x86_64) for >>>> LLVM3.3 and LLVM3.4. That is, add these changes to the 3.3 >>>> release, and it becomes possible to build DragonEgg against a >>>> llvm3.4 compiler. >>>> >>>> Regards, >>>> Richard Gorton >>>> Cognitive Electronics >>>> rcgorton at cog-e.com >>>> >>>> ---------- >>>> >>>> >>>> >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >-------------- next part -------------- Index: include/x86/dragonegg/Target.h ==================================================================--- include/x86/dragonegg/Target.h (revision 552) +++ include/x86/dragonegg/Target.h (working copy) @@ -338,6 +338,7 @@ argvec.push_back("-force-align-stack"); \ } while (0) +#if (LLVM_MINOR == 3) #define LLVM_SET_TARGET_MACHINE_OPTIONS(O) \ do { \ if (TARGET_OMIT_LEAF_FRAME_POINTER) { \ @@ -345,5 +346,13 @@ O.NoFramePointerElimNonLeaf = true; \ } \ } while (0) +#else +#define LLVM_SET_TARGET_MACHINE_OPTIONS(O) \ + do { \ + if (TARGET_OMIT_LEAF_FRAME_POINTER) { \ + O.NoFramePointerElim = false; \ + } \ + } while (0) +#endif #endif /* DRAGONEGG_TARGET_H */ Index: src/Debug.cpp ==================================================================--- src/Debug.cpp (revision 552) +++ src/Debug.cpp (working copy) @@ -1089,9 +1089,15 @@ return Builder.createArrayType(SizeInBits, AlignInBits, DerivedFrom, Elements); case dwarf::DW_TAG_structure_type: +#if (LLVM_MINOR == 3) return Builder.createStructType(Context, Name, F, LineNumber, SizeInBits, AlignInBits, Flags, DerivedFrom, Elements, 0, ContainingType); +#else + return Builder.createStructType(Context, Name, F, LineNumber, SizeInBits, + AlignInBits, Flags, DerivedFrom, Elements, + 0, DIType(ContainingType)); +#endif case dwarf::DW_TAG_union_type: return Builder.createUnionType(Context, Name, F, LineNumber, SizeInBits, AlignInBits, Flags, Elements, RuntimeLang); @@ -1115,6 +1121,8 @@ StringRef LinkageName, DIFile F, unsigned LineNo, DIType Ty, bool isLocalToUnit, bool isDefinition, unsigned VK, unsigned VIndex, DIType ContainingType, unsigned Flags, bool isOptimized, Function *Fn) { + +#if (LLVM_MINOR == 3) if (ContainingType.isValid() || VK || VIndex) return Builder.createMethod(Context, Name, LinkageName, F, LineNo, Ty, isLocalToUnit, isDefinition, VK, VIndex, NULL, @@ -1122,6 +1130,17 @@ return Builder.createFunction(Context, Name, LinkageName, F, LineNo, Ty, isLocalToUnit, isDefinition, LineNo, Flags, isOptimized, Fn, NULL, NULL); +#else + DICompositeType CTy = getDICompositeType(Ty); + assert(CTy.Verify() && "Expected a composite type!"); + if (ContainingType.isValid() || VK || VIndex) + return Builder.createMethod(Context, Name, LinkageName, F, LineNo, CTy, + isLocalToUnit, isDefinition, VK, VIndex, DIType(), + Flags, isOptimized, Fn, NULL); + return Builder.createFunction(Context, Name, LinkageName, F, LineNo, CTy, + isLocalToUnit, isDefinition, LineNo, Flags, + isOptimized, Fn, NULL, NULL); +#endif } /// CreateSubprogramDefinition - Create new subprogram descriptor for the Index: src/Backend.cpp ==================================================================--- src/Backend.cpp (revision 552) +++ src/Backend.cpp (working copy) @@ -482,11 +482,15 @@ if (flag_omit_frame_pointer) { // Eliminate frame pointers everywhere. Options.NoFramePointerElim = false; +#if (LLVM_MINOR == 3) Options.NoFramePointerElimNonLeaf = false; +#endif } else { // Keep frame pointers everywhere. Options.NoFramePointerElim = true; +#if (LLVM_MINOR == 3) Options.NoFramePointerElimNonLeaf = true; +#endif } // If a target has an option to eliminate frame pointers in leaf functions // only then it should set @@ -511,7 +515,9 @@ #else Options.UseInitArray = false; #endif +#if (LLVM_MINOR == 3) Options.SSPBufferSize = PARAM_VALUE(PARAM_SSP_BUFFER_SIZE); +#endif #ifdef LLVM_SET_TARGET_MACHINE_OPTIONS LLVM_SET_TARGET_MACHINE_OPTIONS(Options); #endif @@ -642,7 +648,9 @@ // Configure the pass builder. PassBuilder.SizeLevel = optimize_size; +#if (LLVM_MINOR == 3) PassBuilder.DisableSimplifyLibCalls = flag_no_simplify_libcalls; +#endif PassBuilder.DisableUnitAtATime = !flag_unit_at_a_time; PassBuilder.DisableUnrollLoops = !flag_unroll_loops; // Don't turn on the SLP vectorizer by default at -O3 for the moment. @@ -662,8 +670,13 @@ assert(!OutStream && "Output stream already initialized!"); std::string Error; +#if (LLVM_MINOR == 3) OutStream = new raw_fd_ostream(llvm_asm_file_name, Error, Binary ? raw_fd_ostream::F_Binary : 0); +#else + OutStream = new raw_fd_ostream(llvm_asm_file_name, Error, + Binary ? sys::fs::F_Binary : sys::fs::F_None); +#endif if (!Error.empty()) report_fatal_error(Error); Index: Makefile ==================================================================--- Makefile (revision 552) +++ Makefile (working copy) @@ -61,7 +61,10 @@ GCC_MICRO=$(word 3, $(subst ., ,$(GCC_VERSION))) TARGET_TRIPLE=$(shell $(GCC) -dumpmachine) -LLVM_VERSION=$(shell $(LLVM_CONFIG) --version) +LLVM_VERSION=$(shell $(LLVM_CONFIG) --version).0 +LLVM_MAJOR=$(word 1, $(subst ., ,$(LLVM_VERSION))) +LLVM_MINOR=$(word 2, $(subst ., ,$(LLVM_VERSION))) +LLVM_MICRO=$(word 3, $(subst ., ,$(LLVM_VERSION))) PLUGIN=dragonegg.so PLUGIN_OBJECTS=Aliasing.o Backend.o Cache.o ConstantConversion.o Convert.o \ @@ -80,8 +83,8 @@ -MD -MP \ -DIN_GCC -DLLVM_VERSION=\"$(LLVM_VERSION)\" \ -DTARGET_TRIPLE=\"$(TARGET_TRIPLE)\" \ - -DGCC_MAJOR=$(GCC_MAJOR) -DGCC_MINOR=$(GCC_MINOR) \ - -DGCC_MICRO=$(GCC_MICRO) \ + -DGCC_MAJOR=$(GCC_MAJOR) -DGCC_MINOR=$(GCC_MINOR) -DGCC_MICRO=$(GCC_MICRO) \ + -DLLVM_MAJOR=$(LLVM_MAJOR) -DLLVM_MINOR=$(LLVM_MINOR) -DLLVM_MICRO=$(LLVM_MICRO) \ -I$(INCLUDE_DIR) -isystem$(GCC_PLUGIN_DIR)/include ifdef DISABLE_VERSION_CHECK CPP_OPTIONS+=-DDISABLE_VERSION_CHECK