From lattner at cs.uiuc.edu Mon Nov 1 00:15:12 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 1 Nov 2004 00:15:12 -0600 Subject: [llvm-commits] CVS: llvm/Makefile.rules Message-ID: <200411010615.iA16FCSw006162@apoc.cs.uiuc.edu> Changes in directory llvm: Makefile.rules updated: 1.228 -> 1.229 --- Log message: When compiling a file, indicate what build it is for --- Diffs of the changes: (+19 -14) Index: llvm/Makefile.rules diff -u llvm/Makefile.rules:1.228 llvm/Makefile.rules:1.229 --- llvm/Makefile.rules:1.228 Sun Oct 31 16:53:06 2004 +++ llvm/Makefile.rules Mon Nov 1 00:14:59 2004 @@ -312,7 +312,7 @@ $(bindir): $(Verb) $(MKDIR) $(bindir) - + $(libdir): $(Verb) $(MKDIR) $(libdir) @@ -661,6 +661,11 @@ # Object Build Rules: Build object files based on sources ############################################################################### +# BUILDMODE - This variable can be used in a rule that generates a file in the +# ObjDir to indicate whether the compiled file is a Debug, Release, or Profile +# object. +BUILDMODE = $(notdir $(patsubst %/,%, $(dir $@))) + # Provide rule sets for when dependency generation is enabled ifndef DISABLE_AUTO_DEPENDENCIES @@ -670,13 +675,13 @@ ifdef SHARED_LIBRARY $(ObjDir)/%.lo $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp (PIC)" + $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (PIC)" $(Verb) if $(LTCompile.CXX) -MD -MT $@ -MP -MF $(ObjDir)/$*.LACXXd $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.LACXXd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.LACXXd"; exit 1; fi $(ObjDir)/%.lo $(ObjDir)/%.o: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.c (PIC)" + $(Echo) "Compiling $*.c for $(BUILDMODE) build (PIC)" $(Verb) if $(LTCompile.C) -MD -MT $@ -MP -MF $(ObjDir)/$*.LACd $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.LACd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.LACd"; exit 1; fi @@ -687,13 +692,13 @@ else $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp" + $(Echo) "Compiling $*.cpp for $(BUILDMODE) build" $(Verb) if $(Compile.CXX) -MD -MT $@ -MP -MF $(ObjDir)/$*.CXXd $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.CXXd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.CXXd"; exit 1; fi $(ObjDir)/%.o: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.c" + $(Echo) "Compiling $*.c for $(BUILDMODE) build" $(Verb) if $(Compile.C) -MD -MT $@ -MP -MF $(ObjDir)/$*.Cd $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.Cd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.Cd"; exit 1; fi @@ -704,13 +709,13 @@ # Create .bc files in the ObjDir directory from .cpp and .c files... #--------------------------------------------------------- $(ObjDir)/%.bc: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp (bytecode)" + $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (bytecode)" $(Verb) if $(BCCompile.CXX) -MD -MT $@ -MP -MF "$(ObjDir)/$*.BCCXXd" $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.BCCXXd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.BCCXXd"; exit 1; fi $(ObjDir)/%.bc: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.c (bytecode)" + $(Echo) "Compiling $*.c for $(BUILDMODE) build (bytecode)" $(Verb) if $(BCCompile.C) -MD -MT $@ -MP -MF "$(ObjDir)/$*.BCCd" $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.BCCd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.BCCd"; exit 1; fi @@ -721,30 +726,30 @@ ifdef SHARED_LIBRARY $(ObjDir)/%.lo $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp (PIC)" + $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (PIC)" $(LTCompile.CXX) $< -o $@ $(ObjDir)/%.lo $(ObjDir)/%.o: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp (PIC)" + $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (PIC)" $(LTCompile.C) $< -o $@ else $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp" + $(Echo) "Compiling $*.cpp for $(BUILDMODE) build" $(Compile.CXX) $< -o $@ $(ObjDir)/%.o: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp" + $(Echo) "Compiling $*.cpp for $(BUILDMODE) build" $(Compile.C) $< -o $@ endif $(ObjDir)/%.bc: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp (bytecode)" + $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (bytecode)" $(BCCompile.CXX) $< -o $@ $(ObjDir)/%.bc: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.c (bytecode)" + $(Echo) "Compiling $*.c for $(BUILDMODE) build (bytecode)" $(BCCompile.C) $< -o $@ endif @@ -754,7 +759,7 @@ # regardless of dependencies #--------------------------------------------------------- $(ObjDir)/%.bc: %.ll $(ObjDir)/.dir $(LLVMAS) - $(Echo) "Compiling $*.ll" + $(Echo) "Compiling $*.ll for $(BUILDMODE) build" $(Verb) $(LLVMAS) $< -f -o $@ ############################################################################### From lattner at cs.uiuc.edu Mon Nov 1 00:54:12 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 1 Nov 2004 00:54:12 -0600 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Utils/SimplifyCFG.cpp Message-ID: <200411010654.iA16sC9g021673@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Utils: SimplifyCFG.cpp updated: 1.56 -> 1.57 --- Log message: Do not compute the predecessor list for a block unless we need it. This speeds up simplifycfg on this program, from 44.87s to 0.29s (with a profiled build): #define CL0(a) case a: goto c; #define CL1(a) CL0(a##0) CL0(a##1) CL0(a##2) CL0(a##3) CL0(a##4) CL0(a##5) \ CL0(a##6) CL0(a##7) CL0(a##8) CL0(a##9) #define CL2(a) CL1(a##0) CL1(a##1) CL1(a##2) CL1(a##3) CL1(a##4) CL1(a##5) \ CL1(a##6) CL1(a##7) CL1(a##8) CL1(a##9) #define CL3(a) CL2(a##0) CL2(a##1) CL2(a##2) CL2(a##3) CL2(a##4) CL2(a##5) \ CL2(a##6) CL2(a##7) CL2(a##8) CL2(a##9) #define CL4(a) CL3(a##0) CL3(a##1) CL3(a##2) CL3(a##3) CL3(a##4) CL3(a##5) \ CL3(a##6) CL3(a##7) CL3(a##8) CL3(a##9) void f(); void a() { int b; c: switch (b) { CL4(1) } } This testcase is contrived to expose N^2 behavior, but this patch should speedup simplifycfg on any programs that use large switch statements. This testcase comes from GCC PR17895: http://llvm.cs.uiuc.edu/PR17895 . --- Diffs of the changes: (+24 -27) Index: llvm/lib/Transforms/Utils/SimplifyCFG.cpp diff -u llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.56 llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.57 --- llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.56 Fri Oct 22 11:10:39 2004 +++ llvm/lib/Transforms/Utils/SimplifyCFG.cpp Mon Nov 1 00:53:58 2004 @@ -608,31 +608,29 @@ // to the successor. succ_iterator SI(succ_begin(BB)); if (SI != succ_end(BB) && ++SI == succ_end(BB)) { // One succ? - BasicBlock::iterator BBI = BB->begin(); // Skip over phi nodes... while (isa(*BBI)) ++BBI; - if (BBI->isTerminator()) { // Terminator is the only non-phi instruction! - BasicBlock *Succ = *succ_begin(BB); // There is exactly one successor - - if (Succ != BB) { // Arg, don't hurt infinite loops! - // If our successor has PHI nodes, then we need to update them to - // include entries for BB's predecessors, not for BB itself. - // Be careful though, if this transformation fails (returns true) then - // we cannot do this transformation! - // - if (!PropagatePredecessorsForPHIs(BB, Succ)) { - DEBUG(std::cerr << "Killing Trivial BB: \n" << *BB); - std::string OldName = BB->getName(); - + BasicBlock *Succ = *succ_begin(BB); // There is exactly one successor. + if (BBI->isTerminator() && // Terminator is the only non-phi instruction! + Succ != BB) { // Don't hurt infinite loops! + // If our successor has PHI nodes, then we need to update them to include + // entries for BB's predecessors, not for BB itself. Be careful though, + // if this transformation fails (returns true) then we cannot do this + // transformation! + // + if (!PropagatePredecessorsForPHIs(BB, Succ)) { + DEBUG(std::cerr << "Killing Trivial BB: \n" << *BB); + + if (isa(&BB->front())) { std::vector OldSuccPreds(pred_begin(Succ), pred_end(Succ)); - + // Move all PHI nodes in BB to Succ if they are alive, otherwise // delete them. while (PHINode *PN = dyn_cast(&BB->front())) if (PN->use_empty()) - BB->getInstList().erase(BB->begin()); // Nuke instruction... + BB->getInstList().erase(BB->begin()); // Nuke instruction. else { // The instruction is alive, so this means that Succ must have // *ONLY* had BB as a predecessor, and the PHI node is still valid @@ -640,7 +638,7 @@ // strictly dominated Succ. BB->getInstList().remove(BB->begin()); Succ->getInstList().push_front(PN); - + // We need to add new entries for the PHI node to account for // predecessors of Succ that the PHI node does not take into // account. At this point, since we know that BB dominated succ, @@ -651,17 +649,16 @@ if (OldSuccPreds[i] != BB) PN->addIncoming(PN, OldSuccPreds[i]); } + } + + // Everything that jumped to BB now goes to Succ. + std::string OldName = BB->getName(); + BB->replaceAllUsesWith(Succ); + BB->eraseFromParent(); // Delete the old basic block. - // Everything that jumped to BB now goes to Succ... - BB->replaceAllUsesWith(Succ); - - // Delete the old basic block... - M->getBasicBlockList().erase(BB); - - if (!OldName.empty() && !Succ->hasName()) // Transfer name if we can - Succ->setName(OldName); - return true; - } + if (!OldName.empty() && !Succ->hasName()) // Transfer name if we can + Succ->setName(OldName); + return true; } } } From lattner at cs.uiuc.edu Mon Nov 1 01:05:19 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 1 Nov 2004 01:05:19 -0600 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/TailDuplication.cpp Message-ID: <200411010705.iA175JKd022586@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: TailDuplication.cpp updated: 1.25 -> 1.26 --- Log message: Speed up the tail duplication pass on the testcase below from 68.2s to 1.23s: #define CL0(a) case a: f(); goto c; #define CL1(a) CL0(a##0) CL0(a##1) CL0(a##2) CL0(a##3) CL0(a##4) CL0(a##5) \ CL0(a##6) CL0(a##7) CL0(a##8) CL0(a##9) #define CL2(a) CL1(a##0) CL1(a##1) CL1(a##2) CL1(a##3) CL1(a##4) CL1(a##5) \ CL1(a##6) CL1(a##7) CL1(a##8) CL1(a##9) #define CL3(a) CL2(a##0) CL2(a##1) CL2(a##2) CL2(a##3) CL2(a##4) CL2(a##5) \ CL2(a##6) CL2(a##7) CL2(a##8) CL2(a##9) #define CL4(a) CL3(a##0) CL3(a##1) CL3(a##2) CL3(a##3) CL3(a##4) CL3(a##5) \ CL3(a##6) CL3(a##7) CL3(a##8) CL3(a##9) void f(); void a() { int b; c: switch (b) { CL4(1) } } This comes from GCC PR 15524: http://llvm.cs.uiuc.edu/PR15524 --- Diffs of the changes: (+8 -3) Index: llvm/lib/Transforms/Scalar/TailDuplication.cpp diff -u llvm/lib/Transforms/Scalar/TailDuplication.cpp:1.25 llvm/lib/Transforms/Scalar/TailDuplication.cpp:1.26 --- llvm/lib/Transforms/Scalar/TailDuplication.cpp:1.25 Tue Oct 5 22:27:37 2004 +++ llvm/lib/Transforms/Scalar/TailDuplication.cpp Mon Nov 1 01:05:07 2004 @@ -114,9 +114,14 @@ // with a single successor if the block has many other predecessors. This can // cause an N^2 explosion in CFG edges (and PHI node entries), as seen in // cases that have a large number of indirect gotos. - if (DTI->getNumSuccessors() > 8) - if (std::distance(PI, PE) * DTI->getNumSuccessors() > 128) - return false; + unsigned NumSuccs = DTI->getNumSuccessors(); + if (NumSuccs > 8) { + unsigned TooMany = 128; + if (NumSuccs >= TooMany) return false; + TooMany = TooMany/NumSuccs; + for (; PI != PE; ++PI) + if (TooMany-- == 0) return false; + } return true; } From reid at x10sys.com Mon Nov 1 01:50:38 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 01:50:38 -0600 Subject: [llvm-commits] CVS: llvm/Makefile.rules Message-ID: <200411010750.BAA27486@zion.cs.uiuc.edu> Changes in directory llvm: Makefile.rules updated: 1.229 -> 1.230 --- Log message: Eliminate redundant variable definition. Rename Configuration -> BuildMode Make lex/yacc output cleaned only if in a directory that has those sources. --- Diffs of the changes: (+44 -50) Index: llvm/Makefile.rules diff -u llvm/Makefile.rules:1.229 llvm/Makefile.rules:1.230 --- llvm/Makefile.rules:1.229 Mon Nov 1 00:14:59 2004 +++ llvm/Makefile.rules Mon Nov 1 01:50:27 2004 @@ -145,18 +145,18 @@ #-------------------------------------------------------------------- ifdef ENABLE_PROFILING - Configuration := Profile + BuildMode := Profile CXX.Flags := -O3 -DNDEBUG -felide-constructors -finline-functions -pg C.Flags := -O3 -DNDEBUG -pg LD.Flags := -O3 -DNDEBUG -pg else ifdef ENABLE_OPTIMIZED - Configuration := Release + BuildMode := Release CXX.Flags := -O3 -DNDEBUG -finline-functions -felide-constructors -fomit-frame-pointer C.Flags := -O3 -DNDEBUG -fomit-frame-pointer LD.Flags := -O3 -DNDEBUG else - Configuration := Debug + BuildMode := Debug CXX.Flags := -g -D_DEBUG C.Flags := -g -D_DEBUG LD.Flags := -g -D_DEBUG @@ -174,11 +174,11 @@ #-------------------------------------------------------------------- # Directory locations #-------------------------------------------------------------------- -ObjDir := $(BUILD_OBJ_DIR)/$(Configuration) -LibDir := $(BUILD_OBJ_ROOT)/lib/$(Configuration) -ToolDir := $(BUILD_OBJ_ROOT)/tools/$(Configuration) -LLVMLibDir := $(LLVM_OBJ_ROOT)/lib/$(Configuration) -LLVMToolDir := $(LLVM_OBJ_ROOT)/tools/$(Configuration) +ObjDir := $(BUILD_OBJ_DIR)/$(BuildMode) +LibDir := $(BUILD_OBJ_ROOT)/lib/$(BuildMode) +ToolDir := $(BUILD_OBJ_ROOT)/tools/$(BuildMode) +LLVMLibDir := $(LLVM_OBJ_ROOT)/lib/$(BuildMode) +LLVMToolDir := $(LLVM_OBJ_ROOT)/tools/$(BuildMode) #-------------------------------------------------------------------- # Full Paths To Compiled Tools and Utilities @@ -452,7 +452,7 @@ all-local:: $(LibName.LA) $(LibName.LA): $(BUILT_SOURCES) $(ObjectsLO) $(LibDir)/.dir - $(Echo) Linking $(Configuration) Shared Library $(LIBRARYNAME)$(SHLIBEXT) + $(Echo) Linking $(BuildMode) Shared Library $(LIBRARYNAME)$(SHLIBEXT) $(Verb) $(Link) -o $@ $(ObjectsLO) $(Verb) $(LTInstall) $@ $(LibDir) @@ -466,12 +466,12 @@ install-local:: $(DestSharedLib) $(DestSharedLib): $(libdir) $(LibName.LA) - $(Echo) Installing $(Configuration) Shared Library $(DestSharedLib) + $(Echo) Installing $(BuildMode) Shared Library $(DestSharedLib) $(Verb) $(LTInstall) $(LibName.LA) $(DestSharedLib) $(Verb) $(LIBTOOL) --finish $(libdir) uninstall-local:: - $(Echo) Uninstalling $(Configuration) Shared Library $(DestSharedLib) + $(Echo) Uninstalling $(BuildMode) Shared Library $(DestSharedLib) $(Verb) $(RM) -f $(DestSharedLib) endif @@ -497,7 +497,7 @@ all-local:: $(LibName.BC) $(LibName.BC): $(BUILT_SOURCES) $(ObjectsBC) $(LibDir)/.dir - $(Echo) Linking $(Configuration) Bytecode Library $(notdir $@) + $(Echo) Linking $(BuildMode) Bytecode Library $(notdir $@) $(Verb) $(BCLinkLib) -o $@ $(ObjectsBC) clean-local:: @@ -510,11 +510,11 @@ install-local:: $(DestBytecodeLib) $(DestBytecodeLib): $(bytecode_libdir) $(LibName.BC) - $(Echo) Installing $(Configuration) Bytecode Library $(DestBytecodeLib) + $(Echo) Installing $(BuildMode) Bytecode Library $(DestBytecodeLib) $(Verb) $(INSTALL) $(LibName.BC) $@ uninstall-local:: - $(Echo) Uninstalling $(Configuration) Bytecode Library $(DestBytecodeLib) + $(Echo) Uninstalling $(BuildMode) Bytecode Library $(DestBytecodeLib) $(Verb) $(RM) -f $(DestBytecodeLib) endif @@ -529,7 +529,7 @@ all-local:: $(LibName.O) $(LibName.O): $(BUILT_SOURCES) $(ObjectsO) $(LibDir)/.dir - $(Echo) Linking $(Configuration) Object Library $(notdir $@) + $(Echo) Linking $(BuildMode) Object Library $(notdir $@) $(Verb) $(Relink) -o $@ $(ObjectsO) clean-local:: @@ -542,11 +542,11 @@ install-local:: $(DestRelinkedLib) $(DestRelinkedLib): $(libdir) $(LibName.O) - $(Echo) Installing $(Configuration) Object Library $(DestRelinkedLib) + $(Echo) Installing $(BuildMode) Object Library $(DestRelinkedLib) $(Verb) $(LTInstall) $(LibName.O) $(DestRelinkedLib) uninstall-local:: - $(Echo) Uninstalling $(Configuration) Object Library $(DestRelinkedLib) + $(Echo) Uninstalling $(BuildMode) Object Library $(DestRelinkedLib) $(Verb) $(RM) -f $(DestRelinkedLib) endif @@ -561,7 +561,7 @@ all-local:: $(LibName.A) $(LibName.A): $(BUILT_SOURCES) $(ObjectsO) $(LibDir)/.dir - $(Echo) Building $(Configuration) Archive Library $(notdir $@) + $(Echo) Building $(BuildMode) Archive Library $(notdir $@) $(Verb)$(RM) -f $@ $(Verb) $(Archive) $@ $(ObjectsO) $(Verb) $(Ranlib) $@ @@ -576,12 +576,12 @@ install-local:: $(DestArchiveLib) $(DestArchiveLib): $(libdir) $(LibName.A) - $(Echo) Installing $(Configuration) Archive Library $(DestArchiveLib) + $(Echo) Installing $(BuildMode) Archive Library $(DestArchiveLib) $(Verb) $(MKDIR) $(libdir) $(Verb) $(LTInstall) $(LibName.A) $(DestArchiveLib) uninstall-local:: - $(Echo) Uninstalling $(Configuration) Archive Library $(DestArchiveLib) + $(Echo) Uninstalling $(BuildMode) Archive Library $(DestArchiveLib) $(Verb) $(RM) -f $(DestArchiveLib) endif @@ -638,21 +638,21 @@ $(ToolBuildPath): $(BUILT_SOURCES) $(ObjectsO) $(ProjLibsPaths) $(LLVMLibsPaths)\ $(ToolDir)/.dir - $(Echo) Linking $(Configuration) executable $(TOOLNAME) $(StripWarnMsg) + $(Echo) Linking $(BuildMode) executable $(TOOLNAME) $(StripWarnMsg) $(Verb) $(Link) -o $@ $(TOOLLINKOPTS) $(ObjectsO) $(ProjLibsOptions) \ $(LLVMLibsOptions) $(ExtraLibs) $(TOOLLINKOPTSB) - $(Echo) ======= Finished Linking $(Configuration) Executable $(TOOLNAME) $(StripWarnMsg) + $(Echo) ======= Finished Linking $(BuildMode) Executable $(TOOLNAME) $(StripWarnMsg) DestTool = $(bindir)/$(TOOLNAME) install-local:: $(DestTool) $(DestTool): $(bindir) $(ToolBuildPath) - $(Echo) Installing $(Configuration) $(DestTool) + $(Echo) Installing $(BuildMode) $(DestTool) $(Verb) $(INSTALL) $(ToolBuildPath) $(DestTool) uninstall-local:: - $(Echo) Uninstalling $(Configuration) $(DestTool) + $(Echo) Uninstalling $(BuildMode) $(DestTool) $(Verb) $(RM) -f $(DestTool) endif @@ -661,11 +661,6 @@ # Object Build Rules: Build object files based on sources ############################################################################### -# BUILDMODE - This variable can be used in a rule that generates a file in the -# ObjDir to indicate whether the compiled file is a Debug, Release, or Profile -# object. -BUILDMODE = $(notdir $(patsubst %/,%, $(dir $@))) - # Provide rule sets for when dependency generation is enabled ifndef DISABLE_AUTO_DEPENDENCIES @@ -675,13 +670,13 @@ ifdef SHARED_LIBRARY $(ObjDir)/%.lo $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (PIC)" + $(Echo) "Compiling $*.cpp for $(BuildMode) build (PIC)" $(Verb) if $(LTCompile.CXX) -MD -MT $@ -MP -MF $(ObjDir)/$*.LACXXd $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.LACXXd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.LACXXd"; exit 1; fi $(ObjDir)/%.lo $(ObjDir)/%.o: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.c for $(BUILDMODE) build (PIC)" + $(Echo) "Compiling $*.c for $(BuildMode) build (PIC)" $(Verb) if $(LTCompile.C) -MD -MT $@ -MP -MF $(ObjDir)/$*.LACd $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.LACd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.LACd"; exit 1; fi @@ -692,13 +687,13 @@ else $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp for $(BUILDMODE) build" + $(Echo) "Compiling $*.cpp for $(BuildMode) build" $(Verb) if $(Compile.CXX) -MD -MT $@ -MP -MF $(ObjDir)/$*.CXXd $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.CXXd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.CXXd"; exit 1; fi $(ObjDir)/%.o: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.c for $(BUILDMODE) build" + $(Echo) "Compiling $*.c for $(BuildMode) build" $(Verb) if $(Compile.C) -MD -MT $@ -MP -MF $(ObjDir)/$*.Cd $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.Cd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.Cd"; exit 1; fi @@ -709,13 +704,13 @@ # Create .bc files in the ObjDir directory from .cpp and .c files... #--------------------------------------------------------- $(ObjDir)/%.bc: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (bytecode)" + $(Echo) "Compiling $*.cpp for $(BuildMode) build (bytecode)" $(Verb) if $(BCCompile.CXX) -MD -MT $@ -MP -MF "$(ObjDir)/$*.BCCXXd" $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.BCCXXd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.BCCXXd"; exit 1; fi $(ObjDir)/%.bc: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.c for $(BUILDMODE) build (bytecode)" + $(Echo) "Compiling $*.c for $(BuildMode) build (bytecode)" $(Verb) if $(BCCompile.C) -MD -MT $@ -MP -MF "$(ObjDir)/$*.BCCd" $< -o $@ ; \ then $(MV) -f "$(ObjDir)/$*.BCCd" "$(ObjDir)/$*.d"; \ else $(RM) -f "$(ObjDir)/$*.BCCd"; exit 1; fi @@ -726,30 +721,30 @@ ifdef SHARED_LIBRARY $(ObjDir)/%.lo $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (PIC)" + $(Echo) "Compiling $*.cpp for $(BuildMode) build (PIC)" $(LTCompile.CXX) $< -o $@ $(ObjDir)/%.lo $(ObjDir)/%.o: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (PIC)" + $(Echo) "Compiling $*.cpp for $(BuildMode) build (PIC)" $(LTCompile.C) $< -o $@ else $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp for $(BUILDMODE) build" + $(Echo) "Compiling $*.cpp for $(BuildMode) build" $(Compile.CXX) $< -o $@ $(ObjDir)/%.o: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp for $(BUILDMODE) build" + $(Echo) "Compiling $*.cpp for $(BuildMode) build" $(Compile.C) $< -o $@ endif $(ObjDir)/%.bc: %.cpp $(ObjDir)/.dir - $(Echo) "Compiling $*.cpp for $(BUILDMODE) build (bytecode)" + $(Echo) "Compiling $*.cpp for $(BuildMode) build (bytecode)" $(BCCompile.CXX) $< -o $@ $(ObjDir)/%.bc: %.c $(ObjDir)/.dir - $(Echo) "Compiling $*.c for $(BUILDMODE) build (bytecode)" + $(Echo) "Compiling $*.c for $(BuildMode) build (bytecode)" $(BCCompile.C) $< -o $@ endif @@ -759,7 +754,7 @@ # regardless of dependencies #--------------------------------------------------------- $(ObjDir)/%.bc: %.ll $(ObjDir)/.dir $(LLVMAS) - $(Echo) "Compiling $*.ll for $(BUILDMODE) build" + $(Echo) "Compiling $*.ll for $(BuildMode) build" $(Verb) $(LLVMAS) $< -f -o $@ ############################################################################### @@ -847,6 +842,9 @@ $(SED) 's/#define YY_BUF_SIZE 16384/#define YY_BUF_SIZE (16384*64)/' \ > $@ +clean-local:: + $(RM) -f $(LexOutput) + endif #--------------------------------------------------------- @@ -873,6 +871,8 @@ $(Verb) $(MV) -f $*.tab.c $*.cpp $(Verb) $(MV) -f $*.tab.h $*.h +clean-local:: + $(RM) -f $(YaccOutput) endif ############################################################################### @@ -904,12 +904,6 @@ ifneq ($(strip $(SHLIBEXT)),) # Extra paranoia - make real sure SHLIBEXT is set $(Verb) $(RM) -f *$(SHLIBEXT) endif -ifneq ($(strip $(LexOutput)),) - $(Verb) $(RM) -f $(LexOutput) -endif -ifneq ($(strip $(YaccOutput)),) - $(Verb) $(RM) -f $(YaccOutput) -endif # Build tags database for Emacs/Xemacs: tags:: TAGS @@ -927,7 +921,7 @@ # Get the list of dependency files DependFiles := $(basename $(filter %.cpp %.c %.cc, $(Sources))) -DependFiles := $(patsubst %,$(BUILD_OBJ_DIR)/$(Configuration)/%.d,$(DependFiles)) +DependFiles := $(patsubst %,$(BUILD_OBJ_DIR)/$(BuildMode)/%.d,$(DependFiles)) -include /dev/null $(DependFiles) @@ -1152,7 +1146,7 @@ # Print out the directories used for building #------------------------------------------------------------------------ printvars:: - $(Echo) "Configuration : " '$(Configuration)' + $(Echo) "BuildMode : " '$(BuildMode)' $(Echo) "BUILD_SRC_ROOT : " '$(BUILD_SRC_ROOT)' $(Echo) "BUILD_SRC_DIR : " '$(BUILD_SRC_DIR)' $(Echo) "BUILD_OBJ_ROOT : " '$(BUILD_OBJ_ROOT)' From reid at x10sys.com Mon Nov 1 01:53:28 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 01:53:28 -0600 Subject: [llvm-commits] CVS: llvm/docs/MakefileGuide.html Message-ID: <200411010753.BAA27543@zion.cs.uiuc.edu> Changes in directory llvm/docs: MakefileGuide.html updated: 1.9 -> 1.10 --- Log message: Configuration -> BuildMode --- Diffs of the changes: (+4 -2) Index: llvm/docs/MakefileGuide.html diff -u llvm/docs/MakefileGuide.html:1.9 llvm/docs/MakefileGuide.html:1.10 --- llvm/docs/MakefileGuide.html:1.9 Sun Oct 31 12:50:34 2004 +++ llvm/docs/MakefileGuide.html Mon Nov 1 01:53:17 2004 @@ -693,6 +693,9 @@
The directory into which executables will ultimately be installed. This value is derived from the --prefix option given to configure.
+
BuildMode
+
The name of the type of build being performed: Debug, Release, or + Profile
bytecode_libdir
The directory into which bytecode libraries will ultimately be installed. This value is derived from the --prefix option given to @@ -768,7 +771,6 @@
CompileCommonOpts
Compile.CXX
ConfigStatusScript
-
Configuration
ConfigureScript
CPP.Flags
CPP.Flags
@@ -845,7 +847,7 @@ Reid Spencer
The LLVM Compiler Infrastructure
- Last modified: $Date: 2004/10/31 18:50:34 $ + Last modified: $Date: 2004/11/01 07:53:17 $ From reid at x10sys.com Mon Nov 1 02:18:17 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 02:18:17 -0600 Subject: [llvm-commits] CVS: llvm/docs/llvm.css Message-ID: <200411010818.CAA27705@zion.cs.uiuc.edu> Changes in directory llvm/docs: llvm.css updated: 1.22 -> 1.23 --- Log message: Add layout classes for table elements so tables can be used for layouts. This is easier than attempting to figure out dual purpose columnar layouts for multiple browser types. All browsers understand tables. --- Diffs of the changes: (+12 -0) Index: llvm/docs/llvm.css diff -u llvm/docs/llvm.css:1.22 llvm/docs/llvm.css:1.23 --- llvm/docs/llvm.css:1.22 Sun Oct 31 17:01:02 2004 +++ llvm/docs/llvm.css Mon Nov 1 02:18:06 2004 @@ -67,5 +67,17 @@ display:table; } +TABLE.layout { text-align: left; border: none; border-collapse; collapse; + padding: 4px 4px 4px 4px; } +TR.layout { border: none; padding: 4pt 4pt 2pt 2pt; } +TD.layout { border: none; padding: 4pt 4pt 2pt 2pt; + vertical-align: top;} +TD.left { border: none; padding: 4pt 4pt 2pt 2pt; text-align: left; + vertical-align: top;} +TD.right { border: none; padding: 4pt 4pt 2pt 2pt; text-align: right; + vertical-align: top;} +TH.layout { border: none font-weight: bold; font-size: 105%; + text-align:center; vertical-align: middle; } + /* Left align table cell */ .td_left { border: 2px solid gray; text-align: left; } From reid at x10sys.com Mon Nov 1 02:19:47 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 02:19:47 -0600 Subject: [llvm-commits] CVS: llvm/docs/CompilerDriver.html GettingStarted.html HowToSubmitABug.html LangRef.html Lexicon.html ProgrammersManual.html SourceLevelDebugging.html Message-ID: <200411010819.CAA27774@zion.cs.uiuc.edu> Changes in directory llvm/docs: CompilerDriver.html updated: 1.8 -> 1.9 GettingStarted.html updated: 1.69 -> 1.70 HowToSubmitABug.html updated: 1.22 -> 1.23 LangRef.html updated: 1.76 -> 1.77 Lexicon.html updated: 1.8 -> 1.9 ProgrammersManual.html updated: 1.69 -> 1.70 SourceLevelDebugging.html updated: 1.8 -> 1.9 --- Log message: Minor format tweask for tables. --- Diffs of the changes: (+148 -194) Index: llvm/docs/CompilerDriver.html diff -u llvm/docs/CompilerDriver.html:1.8 llvm/docs/CompilerDriver.html:1.9 --- llvm/docs/CompilerDriver.html:1.8 Thu Sep 9 15:34:13 2004 +++ llvm/docs/CompilerDriver.html Mon Nov 1 02:19:36 2004 @@ -556,7 +556,7 @@ optimizer.output bytecode or assembly This item specifies the kind of output the language's - optimizer generates. Valid values are "assembly" and "bytecode" + optimizer generates. Valid values are "assembly" and "bytecode" bytecode @@ -813,7 +813,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!">Reid Spencer
The LLVM Compiler Infrastructure
-Last modified: $Date: 2004/09/09 20:34:13 $ +Last modified: $Date: 2004/11/01 08:19:36 $ Index: llvm/docs/GettingStarted.html diff -u llvm/docs/GettingStarted.html:1.69 llvm/docs/GettingStarted.html:1.70 --- llvm/docs/GettingStarted.html:1.69 Sun Sep 5 15:50:22 2004 +++ llvm/docs/GettingStarted.html Mon Nov 1 02:19:36 2004 @@ -581,12 +581,8 @@

The following environment variables are used by the configure script to configure the build system:

- - - - - - +
VariablePurpose
+ -
VariablePurpose
CC Tells configure which C compiler to use. By default, @@ -594,7 +590,6 @@ PATH. Use this variable to override configure's default behavior.
CXX Tells configure which C++ compiler to use. By default, @@ -1320,7 +1315,7 @@ Chris Lattner
Reid Spencer
The LLVM Compiler Infrastructure
- Last modified: $Date: 2004/09/05 20:50:22 $ + Last modified: $Date: 2004/11/01 08:19:36 $ Index: llvm/docs/HowToSubmitABug.html diff -u llvm/docs/HowToSubmitABug.html:1.22 llvm/docs/HowToSubmitABug.html:1.23 --- llvm/docs/HowToSubmitABug.html:1.22 Sun May 23 16:05:39 2004 +++ llvm/docs/HowToSubmitABug.html Mon Nov 1 02:19:36 2004 @@ -11,10 +11,9 @@ How to submit an LLVM bug report - - -
- + + + -
  1. Introduction - Got bugs?
  2. Crashing Bugs @@ -26,20 +25,17 @@
  3. Miscompilations
  4. Incorrect code generation (JIT and LLC)
  5. -
-

Written by Chris Lattner and Misha Brukman

-
-
+ Debugging
+
@@ -353,7 +349,7 @@ Chris Lattner
The LLVM Compiler Infrastructure
- Last modified: $Date: 2004/05/23 21:05:39 $ + Last modified: $Date: 2004/11/01 08:19:36 $ Index: llvm/docs/LangRef.html diff -u llvm/docs/LangRef.html:1.76 llvm/docs/LangRef.html:1.77 --- llvm/docs/LangRef.html:1.76 Sat Oct 16 13:04:13 2004 +++ llvm/docs/LangRef.html Mon Nov 1 02:19:36 2004 @@ -299,78 +299,39 @@

The primitive types are the fundamental building blocks of the LLVM system. The current set of primitive types are as follows:

- - - -
- +
+ + -
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + +
voidNo value
ubyteUnsigned 8 bit value
ushortUnsigned 16 bit value
uintUnsigned 32 bit value
ulongUnsigned 64 bit value
float32 bit floating point value
labelBranch destination
TypeDescription
voidNo value
ubyteUnsigned 8 bit value
ushortUnsigned 16 bit value
uintUnsigned 32 bit value
ulongUnsigned 64 bit value
float32 bit floating point value
labelBranch destination
-
- + + - - + +
+ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + +
boolTrue or False value
sbyteSigned 8 bit value
shortSigned 16 bit value
intSigned 32 bit value
longSigned 64 bit value
double64 bit floating point value
TypeDescription
boolTrue or False value
sbyteSigned 8 bit value
shortSigned 16 bit value
intSigned 32 bit value
longSigned 64 bit value
double64 bit floating point value
-
- + @@ -380,6 +341,7 @@ + @@ -436,30 +398,37 @@

The number of elements is a constant integer value, elementtype may be any type with a size.

Examples:
-

[40 x int ]: Array of 40 integer values.
-[41 x int ]: Array of 41 integer values.
-[40 x uint]: Array of 40 unsigned integer values.

-

+
ClassificationTypes
signed sbyte, short, int, long, float, double
+ + + + +
+ [40 x int ]
+ [41 x int ]
+ [40 x uint]
+
+ Array of 40 integer values.
+ Array of 41 integer values.
+ Array of 40 unsigned integer values.
+

Here are some examples of multidimensional arrays:

- - - - - - - - - - - - - - - - +
[3 x [4 x int]]: 3x4 array integer values.
[12 x [10 x float]]: 12x10 array of single precision floating point values.
[2 x [3 x [4 x uint]]]: 2x3x4 array of unsigned integer values.
+ + + +
+ [3 x [4 x int]]
+ [12 x [10 x float]]
+ [2 x [3 x [4 x uint]]]
+
+ 3x4 array integer values.
+ 12x10 array of single precision floating point values.
+ 2x3x4 array of unsigned integer values.
+
- +
@@ -480,27 +449,23 @@ Variable argument functions can access their arguments with the variable argument handling intrinsic functions.

Examples:
- - - - - - - - - - - + - + - +
int (int): function taking an int, returning an int
float (int, int *) *: Pointer to a function that takes an + + + + - - - - - - + returning float.
+ A vararg function that takes at least one pointer + to sbyte (signed char in C), which returns an integer. This is + the signature for printf in LLVM.
+ +
+ int (int)
+ float (int, int *) *
+ int (sbyte *, ...)
+
+ function taking an int, returning an int
+ Pointer to a function that takes an int and a pointer to int, - returning float.
int (sbyte *, ...): A vararg function that takes at least one pointer to sbyte (signed char in C), which - returns an integer. This is the signature for printf in - LLVM.
@@ -519,24 +484,22 @@
Syntax:
  { <type list> }
Examples:
- - - - - - - - - - - - +
{ int, int, int }: a triple of three int values
{ float, int (int) * }: A pair, where the first element is a float and the second - element is a pointer to a function that takes an int, returning an - int.
+ + + +
+ { int, int, int }
+ { float, int (int) * }
+
+ a triple of three int values
+ A pair, where the first element is a float and the second element + is a pointer to a function + that takes an int, returning an int.
+
- +
@@ -546,23 +509,23 @@
Syntax:
  <type> *
Examples:
- - - - - - - - - - + + - - + int.
+ +
[4x int]*: pointer to array of - four int values
int (int *) *: A pointer to a +
+ [4x int]*
+ int (int *) *
+
+ A pointer to array of + four int values
+ A pointer to a function that takes an int, returning an - int.
+
@@ -578,10 +541,20 @@

The number of elements is a constant integer value, elementtype may be any integral or floating point type.

Examples:
-

<4 x int>: Packed vector of 4 integer values.
-<8 x float>: Packed vector of 8 floating-point values.
-<2 x uint>: Packed vector of 2 unsigned integer values.

-

+ + + + + +
+ <4 x int>
+ <8 x float>
+ <2 x uint>
+
+ Packed vector of 4 integer values.
+ Packed vector of 8 floating-point values.
+ Packed vector of 2 unsigned integer values.
+
@@ -2697,7 +2670,7 @@ Chris Lattner
The LLVM Compiler Infrastructure
- Last modified: $Date: 2004/10/16 18:04:13 $ + Last modified: $Date: 2004/11/01 08:19:36 $ Index: llvm/docs/Lexicon.html diff -u llvm/docs/Lexicon.html:1.8 llvm/docs/Lexicon.html:1.9 --- llvm/docs/Lexicon.html:1.8 Sat Oct 30 16:40:28 2004 +++ llvm/docs/Lexicon.html Mon Nov 1 02:19:36 2004 @@ -4,14 +4,6 @@ The LLVM Lexicon - @@ -24,52 +16,52 @@
- + - + - + - + - + - + - + - + @@ -170,7 +162,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!">The LLVM Team
The LLVM Compiler Infrastructure
-Last modified: $Date: 2004/10/30 21:40:28 $ +Last modified: $Date: 2004/11/01 08:19:36 $ Index: llvm/docs/ProgrammersManual.html diff -u llvm/docs/ProgrammersManual.html:1.69 llvm/docs/ProgrammersManual.html:1.70 --- llvm/docs/ProgrammersManual.html:1.69 Thu Oct 28 23:33:19 2004 +++ llvm/docs/ProgrammersManual.html Mon Nov 1 02:19:36 2004 @@ -1939,20 +1939,20 @@ the beginning or end of the sequence for both const and non-const. It is important to keep track of the different kinds of iterators. There are three idioms worth pointing out:

-
- A -
- A -
ADCE
- B -
- B -
BURS
- C -
- C -
CSE
- D -
- D -
DSA DSE
- L -
- I -
IPA IPO
- L -
- L -
LICM Load-VN
- P -
- P -
PRE
- S -
- S -
SCCP SSA
+
- - + - - + - - +
UnitsIteratorIdiom
Planes Of name/Value mapsPI
+    
Planes Of name/Value mapsPI
 for (SymbolTable::plane_const_iterator PI = ST.plane_begin(),
-PE = ST.plane_end(); PI != PE; ++PI ) {
+     PE = ST.plane_end(); PI != PE; ++PI ) {
   PI->first // This is the Type* of the plane
   PI->second // This is the SymbolTable::ValueMap of name/Value pairs
     
All name/Type PairsTI
+    
All name/Type PairsTI
 for (SymbolTable::type_const_iterator TI = ST.type_begin(),
      TE = ST.type_end(); TI != TE; ++TI )
   TI->first  // This is the name of the type
@@ -1960,8 +1960,8 @@
     
name/Value pairs in a planeVI
+    
name/Value pairs in a planeVI
 for (SymbolTable::value_const_iterator VI = ST.value_begin(SomeType),
      VE = ST.value_end(SomeType); VI != VE; ++VI )
   VI->first  // This is the name of the Value
@@ -2054,7 +2054,7 @@
   Dinakar Dhurjati and
   Chris Lattner
The LLVM Compiler Infrastructure
- Last modified: $Date: 2004/10/29 04:33:19 $ + Last modified: $Date: 2004/11/01 08:19:36 $ Index: llvm/docs/SourceLevelDebugging.html diff -u llvm/docs/SourceLevelDebugging.html:1.8 llvm/docs/SourceLevelDebugging.html:1.9 --- llvm/docs/SourceLevelDebugging.html:1.8 Mon Jul 19 14:30:40 2004 +++ llvm/docs/SourceLevelDebugging.html Mon Nov 1 02:19:36 2004 @@ -9,11 +9,10 @@
Source Level Debugging with LLVM
- - -
+ + + - - -
+ A leafy and green bug eater
+

Written by Chris Lattner

@@ -1111,7 +1109,7 @@ Chris Lattner
LLVM Compiler Infrastructure
- Last modified: $Date: 2004/07/19 19:30:40 $ + Last modified: $Date: 2004/11/01 08:19:36 $ From reid at x10sys.com Mon Nov 1 02:24:23 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 02:24:23 -0600 Subject: [llvm-commits] CVS: llvm/docs/HowToSubmitABug.html Message-ID: <200411010824.CAA27832@zion.cs.uiuc.edu> Changes in directory llvm/docs: HowToSubmitABug.html updated: 1.23 -> 1.24 --- Log message: Fix tag placement to make HTML 4.01 Strict compliant. --- Diffs of the changes: (+2 -2) Index: llvm/docs/HowToSubmitABug.html diff -u llvm/docs/HowToSubmitABug.html:1.23 llvm/docs/HowToSubmitABug.html:1.24 --- llvm/docs/HowToSubmitABug.html:1.23 Mon Nov 1 02:19:36 2004 +++ llvm/docs/HowToSubmitABug.html Mon Nov 1 02:24:13 2004 @@ -29,13 +29,13 @@

Written by Chris Lattner and Misha Brukman

+
Debugging
-
@@ -349,7 +349,7 @@ Chris Lattner
The LLVM Compiler Infrastructure
- Last modified: $Date: 2004/11/01 08:19:36 $ + Last modified: $Date: 2004/11/01 08:24:13 $ From reid at x10sys.com Mon Nov 1 02:26:36 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 02:26:36 -0600 Subject: [llvm-commits] CVS: llvm/docs/TestingGuide.html Message-ID: <200411010826.CAA27889@zion.cs.uiuc.edu> Changes in directory llvm/docs: TestingGuide.html updated: 1.14 -> 1.15 --- Log message: Make HTML 4.01 Strict compliant. --- Diffs of the changes: (+4 -4) Index: llvm/docs/TestingGuide.html diff -u llvm/docs/TestingGuide.html:1.14 llvm/docs/TestingGuide.html:1.15 --- llvm/docs/TestingGuide.html:1.14 Thu Oct 7 19:55:43 2004 +++ llvm/docs/TestingGuide.html Mon Nov 1 02:26:25 2004 @@ -54,18 +54,18 @@ required to build LLVM, plus the following:

-
QMTest
+
QMTest
The LLVM test suite uses QMTest to organize and run tests. Note: you will need QMTest 2.0.3 (source tar.gz file) to be successful. The tests do not run with any other version.
-
Python
+
Python
You will need a Python interpreter that works with QMTest. Python will need zlib and SAX support enabled.
-
F2C
+
F2C
For now, LLVM does not have a Fortran front-end, but using F2C, we can run Fortran benchmarks. F2C support must be enabled via configure if not installed in a standard place. F2C requires three items: the f2c @@ -500,7 +500,7 @@ John T. Criswell
The LLVM Compiler Infrastructure
- Last modified: $Date: 2004/10/08 00:55:43 $ + Last modified: $Date: 2004/11/01 08:26:25 $ From reid at x10sys.com Mon Nov 1 02:30:24 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 02:30:24 -0600 Subject: [llvm-commits] CVS: llvm/docs/TestingGuide.html Message-ID: <200411010830.CAA27960@zion.cs.uiuc.edu> Changes in directory llvm/docs: TestingGuide.html updated: 1.15 -> 1.16 --- Log message: Remove spurious end tag, fix indentation. --- Diffs of the changes: (+17 -17) Index: llvm/docs/TestingGuide.html diff -u llvm/docs/TestingGuide.html:1.15 llvm/docs/TestingGuide.html:1.16 --- llvm/docs/TestingGuide.html:1.15 Mon Nov 1 02:26:25 2004 +++ llvm/docs/TestingGuide.html Mon Nov 1 02:30:14 2004 @@ -12,24 +12,25 @@
    -
  1. Overview
  2. -
  3. Requirements
  4. -
  5. Quick Start
  6. -
  7. LLVM Test Suite Organization -
  8. -
  9. LLVM Test Suite Tree
  10. -
  11. QMTest Structure
  12. -
  13. llvm-test Structure
  14. -
  15. Running the LLVM Tests
  16. -
  17. Running the nightly tester
  18. +
  19. Overview
  20. +
  21. Requirements
  22. +
  23. Quick Start
  24. +
  25. LLVM Test Suite Organization + +
  26. +
  27. LLVM Test Suite Tree
  28. +
  29. QMTest Structure
  30. +
  31. llvm-test Structure
  32. +
  33. Running the LLVM Tests
  34. +
  35. Running the nightly tester
-

Written by John T. Criswell and Reid Spencer

+

Written by John T. Criswell and Reid Spencer

@@ -63,7 +64,6 @@
Python
You will need a Python interpreter that works with QMTest. Python will need zlib and SAX support enabled.
-
F2C
For now, LLVM does not have a Fortran front-end, but using F2C, we can run @@ -500,7 +500,7 @@ John T. Criswell
The LLVM Compiler Infrastructure
- Last modified: $Date: 2004/11/01 08:26:25 $ + Last modified: $Date: 2004/11/01 08:30:14 $ From reid at x10sys.com Mon Nov 1 03:03:03 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 03:03:03 -0600 Subject: [llvm-commits] CVS: llvm/docs/ProgrammersManual.html Message-ID: <200411010903.DAA28267@zion.cs.uiuc.edu> Changes in directory llvm/docs: ProgrammersManual.html updated: 1.70 -> 1.71 --- Log message: Cleanup the constants section. --- Diffs of the changes: (+85 -82) Index: llvm/docs/ProgrammersManual.html diff -u llvm/docs/ProgrammersManual.html:1.70 llvm/docs/ProgrammersManual.html:1.71 --- llvm/docs/ProgrammersManual.html:1.70 Mon Nov 1 02:19:36 2004 +++ llvm/docs/ProgrammersManual.html Mon Nov 1 03:02:53 2004 @@ -15,11 +15,12 @@
  • Introduction
  • General Information
  • Important and useful LLVM APIs @@ -34,10 +35,11 @@
  • The Statistic template & -stats -option
  • +option +
  • Helpful Hints for Common Operations @@ -68,6 +70,7 @@
  • Replacing an Instruction with another Value
  • + +-->
  • The Core LLVM Class Hierarchy Reference +
  • + +
  • The SymbolTable class
  • +
  • The ilist and iplist classes +
      +
    • Creating, inserting, moving and deleting from LLVM lists
    • +
    +
  • +
  • Important iterator invalidation semantics to be aware of.
  • @@ -1666,58 +1672,55 @@ -
    +
    + +
    Important Subclasses of Constant
    +
      -
      Important Subclasses of Constant -

      +
    • ConstantSInt : This subclass of Constant represents a signed integer + constant.
        -
      • ConstantSInt : This subclass of Constant represents a signed -integer constant. -
          -
        • int64_t getValue() const: Returns the underlying value of -this constant.
        • -
        -
      • -
      • ConstantUInt : This class represents an unsigned integer. -
          -
        • uint64_t getValue() const: Returns the underlying value -of this constant.
        • -
        -
      • -
      • ConstantFP : This class represents a floating point constant. -
          -
        • double getValue() const: Returns the underlying value of -this constant.
        • -
        -
      • -
      • ConstantBool : This represents a boolean constant. -
          -
        • bool getValue() const: Returns the underlying value of -this constant.
        • -
        -
      • -
      • ConstantArray : This represents a constant array. -
          -
        • const std::vector<Use> &getValues() const: -Returns a Vecotr of component constants that makeup this array.
        • -
        -
      • -
      • ConstantStruct : This represents a constant struct. -
          -
        • const std::vector<Use> &getValues() const: -Returns a Vecotr of component constants that makeup this array.
        • -
        -
      • -
      • GlobalValue : This represents either a global variable or a - function. In either case, the value is a constant fixed address - (after linking). -
      • +
      • int64_t getValue() const: Returns the underlying value of + this constant.
      • +
      +
    • +
    • ConstantUInt : This class represents an unsigned integer. +
        +
      • uint64_t getValue() const: Returns the underlying value of + this constant.
    • +
    • ConstantFP : This class represents a floating point constant. +
        +
      • double getValue() const: Returns the underlying value of + this constant.
      • +
      +
    • +
    • ConstantBool : This represents a boolean constant. +
        +
      • bool getValue() const: Returns the underlying value of this + constant.
      • +
      +
    • +
    • ConstantArray : This represents a constant array. +
        +
      • const std::vector<Use> &getValues() const: Returns + a Vecotr of component constants that makeup this array.
      • +
      +
    • +
    • ConstantStruct : This represents a constant struct. +
        +
      • const std::vector<Use> &getValues() const: Returns + a Vector of component constants that makeup this array.
      • +
      +
    • +
    • GlobalValue : This represents either a global variable or a function. In + either case, the value is a constant fixed address (after linking). +
    @@ -2054,7 +2057,7 @@ Dinakar Dhurjati and Chris Lattner
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/11/01 08:19:36 $ + Last modified: $Date: 2004/11/01 09:02:53 $ From reid at x10sys.com Mon Nov 1 03:12:11 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 03:12:11 -0600 Subject: [llvm-commits] CVS: llvm/docs/ProgrammersManual.html Message-ID: <200411010912.DAA19139@zion.cs.uiuc.edu> Changes in directory llvm/docs: ProgrammersManual.html updated: 1.71 -> 1.72 --- Log message: Attempt HTML 4.01 Strict compliance. --- Diffs of the changes: (+40 -38) Index: llvm/docs/ProgrammersManual.html diff -u llvm/docs/ProgrammersManual.html:1.71 llvm/docs/ProgrammersManual.html:1.72 --- llvm/docs/ProgrammersManual.html:1.71 Mon Nov 1 03:02:53 2004 +++ llvm/docs/ProgrammersManual.html Mon Nov 1 03:11:57 2004 @@ -1771,42 +1771,43 @@
  • isLosslesslyConvertableTo (const Type *Ty) const: Return true if this type can be converted to 'Ty' without any reinterpretation of bits. For example, uint to int or one pointer type to another.
  • + +
    -
    -

    Derived Types

    - + + +
    +
      +
    • SequentialType : This is subclassed by ArrayType and PointerType
        -
      • SequentialType : This is subclassed by ArrayType and PointerType -
          -
        • const Type * getElementType() const: Returns the type of -each of the elements in the sequential type.
        • -
        -
      • -
      • ArrayType : This is a subclass of SequentialType and defines -interface for array types. -
          -
        • unsigned getNumElements() const: Returns the number of -elements in the array.
        • -
        -
      • -
      • PointerType : Subclass of SequentialType for pointer types.
      • -
      • StructType : subclass of DerivedTypes for struct types
      • -
      • FunctionType : subclass of DerivedTypes for function types. -
          -
        • bool isVarArg() const: Returns true if its a vararg - function
        • -
        • const Type * getReturnType() const: Returns the - return type of the function.
        • -
        • const Type * getParamType (unsigned i): Returns - the type of the ith parameter.
        • -
        • const unsigned getNumParams() const: Returns the - number of formal parameters.
        • -
        -
      • +
      • const Type * getElementType() const: Returns the type of each + of the elements in the sequential type.
      • +
      +
    • +
    • ArrayType : This is a subclass of SequentialType and defines interface for + array types. +
        +
      • unsigned getNumElements() const: Returns the number of + elements in the array.
      • +
      +
    • +
    • PointerType : Subclass of SequentialType for pointer types.
    • +
    • StructType : subclass of DerivedTypes for struct types
    • +
    • FunctionType : subclass of DerivedTypes for function types. +
        +
      • bool isVarArg() const: Returns true if its a vararg + function
      • +
      • const Type * getReturnType() const: Returns the + return type of the function.
      • +
      • const Type * getParamType (unsigned i): Returns + the type of the ith parameter.
      • +
      • const unsigned getNumParams() const: Returns the + number of formal parameters.
    -
    @@ -1946,32 +1947,33 @@
    UnitsIteratorIdiom
    Planes Of name/Value mapsPI
    +    
    
     for (SymbolTable::plane_const_iterator PI = ST.plane_begin(),
          PE = ST.plane_end(); PI != PE; ++PI ) {
       PI->first // This is the Type* of the plane
       PI->second // This is the SymbolTable::ValueMap of name/Value pairs
    -    
    All name/Type PairsTI
    +    
    
     for (SymbolTable::type_const_iterator TI = ST.type_begin(),
          TE = ST.type_end(); TI != TE; ++TI )
       TI->first  // This is the name of the type
       TI->second // This is the Type* value associated with the name
    -    
    name/Value pairs in a planeVI
    +    
    
     for (SymbolTable::value_const_iterator VI = ST.value_begin(SomeType),
          VE = ST.value_end(SomeType); VI != VE; ++VI )
       VI->first  // This is the name of the Value
       VI->second // This is the Value* value associated with the name
    -    
    +

    Using the recommended iterator names and idioms will help you avoid making mistakes. Of particular note, make sure that whenever you use value_begin(SomeType) that you always compare the resulting iterator @@ -2057,7 +2059,7 @@ Dinakar Dhurjati and Chris Lattner
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/11/01 09:02:53 $ + Last modified: $Date: 2004/11/01 09:11:57 $ From reid at x10sys.com Mon Nov 1 03:16:41 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 03:16:41 -0600 Subject: [llvm-commits] CVS: llvm/docs/CommandLine.html Message-ID: <200411010916.DAA31035@zion.cs.uiuc.edu> Changes in directory llvm/docs: CommandLine.html updated: 1.26 -> 1.27 --- Log message: Attempt HTML 4.01 Strict compliance. --- Diffs of the changes: (+3 -2) Index: llvm/docs/CommandLine.html diff -u llvm/docs/CommandLine.html:1.26 llvm/docs/CommandLine.html:1.27 --- llvm/docs/CommandLine.html:1.26 Mon Aug 30 00:56:51 2004 +++ llvm/docs/CommandLine.html Mon Nov 1 03:16:30 2004 @@ -875,7 +875,8 @@ else break; // we're done with the list } - }

    + } +

    Note that, for compatibility reasons, the cl::opt also supports an unsigned getPosition() option that will provide the absolute position of that option. You can apply the same approach as above with a @@ -1775,7 +1776,7 @@ Chris Lattner
    LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/08/30 05:56:51 $ + Last modified: $Date: 2004/11/01 09:16:30 $ From reid at x10sys.com Mon Nov 1 03:20:04 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 03:20:04 -0600 Subject: [llvm-commits] CVS: llvm/docs/UsingLibraries.html Message-ID: <200411010920.DAA32011@zion.cs.uiuc.edu> Changes in directory llvm/docs: UsingLibraries.html updated: 1.8 -> 1.9 --- Log message: Add the HTML 4.01 and CSS icons with links to validators. --- Diffs of the changes: (+8 -2) Index: llvm/docs/UsingLibraries.html diff -u llvm/docs/UsingLibraries.html:1.8 llvm/docs/UsingLibraries.html:1.9 --- llvm/docs/UsingLibraries.html:1.8 Sun Oct 31 17:24:31 2004 +++ llvm/docs/UsingLibraries.html Mon Nov 1 03:19:53 2004 @@ -175,9 +175,15 @@


    +
    Last modified: $Date: 2004/11/01 09:19:53 $

    llvmc always looks for files of a specific name. It uses the @@ -748,7 +750,7 @@ ########################################################## assembler.command=llc %in% -o %out% %target% %time% %stats% - +

    @@ -813,7 +815,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!">Reid Spencer
    The LLVM Compiler Infrastructure
    -Last modified: $Date: 2004/11/01 08:19:36 $ +Last modified: $Date: 2004/11/01 21:31:39 $ From reid at x10sys.com Mon Nov 1 15:55:56 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 15:55:56 -0600 Subject: [llvm-commits] CVS: llvm/docs/Bugpoint.html Message-ID: <200411012155.PAA20610@zion.cs.uiuc.edu> Changes in directory llvm/docs: Bugpoint.html updated: 1.3 -> 1.4 --- Log message: Add compliant header. NOTE: This doc needs to describe the bugpoint "subsystem" not the tool. --- Diffs of the changes: (+11 -3) Index: llvm/docs/Bugpoint.html diff -u llvm/docs/Bugpoint.html:1.3 llvm/docs/Bugpoint.html:1.4 --- llvm/docs/Bugpoint.html:1.3 Fri Oct 15 12:04:28 2004 +++ llvm/docs/Bugpoint.html Mon Nov 1 15:55:46 2004 @@ -1,8 +1,16 @@ + + + + + LLVM: bugpoint tool + + + + -LLVM: bugpoint tool - - +

    LLVM: bugpoint tool


    From reid at x10sys.com Mon Nov 1 15:57:45 2004 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Nov 2004 15:57:45 -0600 Subject: [llvm-commits] CVS: llvm/docs/index.html Message-ID: <200411012157.PAA20675@zion.cs.uiuc.edu> Changes in directory llvm/docs: index.html updated: 1.33 -> 1.34 --- Log message: List the individual tools for easier reference. Make the bugpoint link reference the man page in the CommandGuide until the Bugpoint.html file can describe bugpoint in a little more of a tutorial style instead of just being a man page. --- Diffs of the changes: (+24 -4) Index: llvm/docs/index.html diff -u llvm/docs/index.html:1.33 llvm/docs/index.html:1.34 --- llvm/docs/index.html:1.33 Sun Oct 31 17:02:38 2004 +++ llvm/docs/index.html Mon Nov 1 15:57:35 2004 @@ -52,7 +52,27 @@ some tools.
  • LLVM Command Guide - A reference -manual for the LLVM command line utilities ("man" pages for LLVM tools).
  • +manual for the LLVM command line utilities ("man" pages for LLVM tools).
    +Current tools: + llvm-as, + llvm-dis, + opt, + llc, + lli, + llvm-link, + analyze, + llvm-nm, + llvm-prof, + llvmgcc, + llvmgxx, + gccas, + gccld, + stkrc, + bugpoint, + extract, + llvm-bcanalyzer, + llvmc +
  • Frequently Asked Questions - A list of common questions and problems and their solutions.
  • @@ -162,8 +182,8 @@ LLVM - This document describes the design and philosophy behind the LLVM source-level debugger. -
  • Bugpoint automatic bug finder and -test-case reducer description and usage information.
  • +
  • bugpoint - automatic bug +finder and test-case reducer description and usage information.
  • Compiler Driver (llvmc) - This document describes the design and configuration of the LLVM compiler driver tool, @@ -208,6 +228,6 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"> LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/10/31 23:02:38 $ + Last modified: $Date: 2004/11/01 21:57:35 $ From lattner at cs.uiuc.edu Mon Nov 1 16:17:18 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 1 Nov 2004 16:17:18 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp PoolAllocator.h Message-ID: <200411012217.iA1MHIre014855@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.11 -> 1.12 PoolAllocator.h updated: 1.5 -> 1.6 --- Log message: Improve 64-bit alignment cleanliness --- Diffs of the changes: (+6 -5) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.11 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.12 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.11 Fri Mar 5 13:40:38 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Mon Nov 1 16:17:08 2004 @@ -165,11 +165,13 @@ // structure. Hand off to the system malloc. if (Pool == 0) return malloc(NumBytes); if (NumBytes == 0) return 0; - NumBytes = (NumBytes+3) & ~3; // Round up to 4 bytes... + unsigned PtrSize = sizeof(int*); + NumBytes = (NumBytes+(PtrSize-1)) & ~(PtrSize-1); // Round up to 4/8 bytes... // Objects must be at least 8 bytes to hold the FreedNodeHeader object when // they are freed. - if (NumBytes < 8) NumBytes = 8; + if (NumBytes < (sizeof(FreedNodeHeader)-sizeof(NodeHeader))) + NumBytes = sizeof(FreedNodeHeader)-sizeof(NodeHeader); #ifdef PRINT_NUM_POOLS if (Pool->NumObjects == 0) ++PoolCounter; // Track # pools. Index: poolalloc/runtime/FL2Allocator/PoolAllocator.h diff -u poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.5 poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.6 --- poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.5 Fri Mar 5 04:52:47 2004 +++ poolalloc/runtime/FL2Allocator/PoolAllocator.h Mon Nov 1 16:17:08 2004 @@ -19,10 +19,9 @@ struct FreedNodeHeader; // NodeHeader - Each block of memory is preceeded in the the pool by one of -// these headers. If the node is allocated, the ObjectSize value is used, if -// the object is free, the 'Next' value is used. +// these headers. struct NodeHeader { - unsigned Size; + unsigned long Size; }; From lattner at cs.uiuc.edu Mon Nov 1 16:19:23 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 1 Nov 2004 16:19:23 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/PoolAllocator.h Message-ID: <200411012219.iA1MJNZu014869@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: PoolAllocator.h updated: 1.6 -> 1.7 --- Log message: Oops, this needs to be consistent --- Diffs of the changes: (+1 -1) Index: poolalloc/runtime/FL2Allocator/PoolAllocator.h diff -u poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.6 poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.7 --- poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.6 Mon Nov 1 16:17:08 2004 +++ poolalloc/runtime/FL2Allocator/PoolAllocator.h Mon Nov 1 16:19:13 2004 @@ -47,7 +47,7 @@ // Marker: this is the ObjectSize marker which MUST BE THE LAST ELEMENT of // this header! - unsigned Marker; + unsigned long Marker; }; From criswell at cs.uiuc.edu Mon Nov 1 16:47:12 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon, 1 Nov 2004 16:47:12 -0600 (CST) Subject: [llvm-commits] CVS: poolalloc/test/TEST.cputrack.Makefile Makefile Message-ID: <200411012247.QAA07394@kain.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.cputrack.Makefile added (r1.1) Makefile updated: 1.20 -> 1.21 --- Log message: Added support for measuring cache misses on the Solaris/SparcV9 machines. --- Diffs of the changes: (+62 -0) Index: poolalloc/test/TEST.cputrack.Makefile diff -c /dev/null poolalloc/test/TEST.cputrack.Makefile:1.1 *** /dev/null Mon Nov 1 16:47:12 2004 --- poolalloc/test/TEST.cputrack.Makefile Mon Nov 1 16:47:01 2004 *************** *** 0 **** --- 1,55 ---- + ##===- poolalloc/TEST.strace.Makefile ----------------------*- Makefile -*-===## + # + # Makefile for measuring system call activity with strace + # + ##===----------------------------------------------------------------------===## + + TESTNAME = $* + CURDIR := $(shell cd .; pwd) + PROGDIR := $(shell cd $(LLVM_OBJ_ROOT)/projects/llvm-test; pwd)/ + RELDIR := $(subst $(PROGDIR),,$(CURDIR)) + + CPUTRACK := cputrack -T 500 -c pic0=EC_rd_miss,pic1=DC_rd_miss + + # + # Once the results are generated, create files containing each individiual + # piece of performance information. + # + + # + # Generate events for Pool Allocated CBE + # + $(PROGRAMS_TO_TEST:%=Output/test.$(TEST).pa.%): \ + Output/test.$(TEST).pa.%: Output/%.poolalloc.cbe Output/test.$(TEST).% + @echo "=========================================" + @echo "Running '$(TEST)' test on '$(TESTNAME)' program" + ifeq ($(RUN_OPTIONS),) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) -o $@ $< + else + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) -o $@ $< $(RUN_OPTIONS) + endif + + # + # Generate events for CBE + # + $(PROGRAMS_TO_TEST:%=Output/test.$(TEST).%): \ + Output/test.$(TEST).%: Output/%.cbe + @echo "=========================================" + @echo "Running '$(TEST)' test on '$(TESTNAME)' program" + ifeq ($(RUN_OPTIONS),) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) -o $@ $< + else + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) -o $@ $< $(RUN_OPTIONS) + endif + + $(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \ + Output/%.$(TEST).report.txt: Output/test.$(TEST).pa.% Output/test.$(TEST).% + touch $@ + + $(PROGRAMS_TO_TEST:%=test.$(TEST).%): \ + test.$(TEST).%: Output/%.$(TEST).report.txt + @echo "---------------------------------------------------------------" + @echo ">>> ========= '$(RELDIR)/$*' Program" + @echo "---------------------------------------------------------------" + @cat $< + Index: poolalloc/test/Makefile diff -u poolalloc/test/Makefile:1.20 poolalloc/test/Makefile:1.21 --- poolalloc/test/Makefile:1.20 Wed Oct 13 11:59:22 2004 +++ poolalloc/test/Makefile Mon Nov 1 16:47:01 2004 @@ -135,3 +135,10 @@ PROJECT_DIR=$(BUILD_OBJ_ROOT) $(MAKE) -j1 TEST=strace \ test) @printf "\a"; sleep 1; printf "\a"; sleep 1; printf "\a" + +cputrack:: + (cd $(LLVM_OBJ_ROOT)/projects/llvm-test/$(SUBDIR); \ + PROJECT_DIR=$(BUILD_OBJ_ROOT) $(MAKE) -j1 TEST=cputrack \ + test) + @printf "\a"; sleep 1; printf "\a"; sleep 1; printf "\a" + From criswell at cs.uiuc.edu Mon Nov 1 20:52:52 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon, 1 Nov 2004 20:52:52 -0600 (CST) Subject: [llvm-commits] CVS: poolalloc/test/TEST.cputrack.Makefile Message-ID: <200411020252.UAA17303@kain.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.cputrack.Makefile updated: 1.1 -> 1.2 --- Log message: Fix header comment. --- Diffs of the changes: (+1 -1) Index: poolalloc/test/TEST.cputrack.Makefile diff -u poolalloc/test/TEST.cputrack.Makefile:1.1 poolalloc/test/TEST.cputrack.Makefile:1.2 --- poolalloc/test/TEST.cputrack.Makefile:1.1 Mon Nov 1 16:47:01 2004 +++ poolalloc/test/TEST.cputrack.Makefile Mon Nov 1 20:52:41 2004 @@ -1,4 +1,4 @@ -##===- poolalloc/TEST.strace.Makefile ----------------------*- Makefile -*-===## +##===- poolalloc/TEST.cputrack.Makefile --------------------*- Makefile -*-===## # # Makefile for measuring system call activity with strace # From criswell at cs.uiuc.edu Mon Nov 1 20:56:08 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon, 1 Nov 2004 20:56:08 -0600 (CST) Subject: [llvm-commits] CVS: poolalloc/test/TEST.cputrack.Makefile Message-ID: <200411020256.UAA18785@kain.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.cputrack.Makefile updated: 1.2 -> 1.3 --- Log message: Flushed out more strace's thanks to sabre. --- Diffs of the changes: (+1 -1) Index: poolalloc/test/TEST.cputrack.Makefile diff -u poolalloc/test/TEST.cputrack.Makefile:1.2 poolalloc/test/TEST.cputrack.Makefile:1.3 --- poolalloc/test/TEST.cputrack.Makefile:1.2 Mon Nov 1 20:52:41 2004 +++ poolalloc/test/TEST.cputrack.Makefile Mon Nov 1 20:55:57 2004 @@ -1,6 +1,6 @@ ##===- poolalloc/TEST.cputrack.Makefile --------------------*- Makefile -*-===## # -# Makefile for measuring system call activity with strace +# Makefile for measuring cache miss rates with the Solaris cputrack utility # ##===----------------------------------------------------------------------===## From lattner at cs.uiuc.edu Mon Nov 1 21:50:46 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 1 Nov 2004 21:50:46 -0600 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp Message-ID: <200411020350.iA23okUN016377@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.277 -> 1.278 --- Log message: * Rearrange code slightly * Disable broken transforms for simplifying (setcc (cast X to larger), CI) where CC is not != or == --- Diffs of the changes: (+20 -11) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.277 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.278 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.277 Wed Oct 27 00:57:15 2004 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Mon Nov 1 21:50:32 2004 @@ -2024,29 +2024,38 @@ if (SrcTy == Type::BoolTy) SrcBits = 1; unsigned DestBits = LHSI->getType()->getPrimitiveSize()*8; if (LHSI->getType() == Type::BoolTy) DestBits = 1; - if (SrcBits < DestBits) { + if (SrcBits < DestBits && + // FIXME: Reenable the code below for < and >. However, we have + // to handle the cases when the source of the cast and the dest of + // the cast have different signs. e.g: + // (cast sbyte %X to uint) >u 255U -> X getType()) != CI) { - Constant *Min = ConstantIntegral::getMinValue(SrcTy); - Constant *Max = ConstantIntegral::getMaxValue(SrcTy); - Min = ConstantExpr::getCast(Min, LHSI->getType()); - Max = ConstantExpr::getCast(Max, LHSI->getType()); switch (I.getOpcode()) { default: assert(0 && "unknown integer comparison"); +#if 0 + case Instruction::SetLT: { + Constant *Max = ConstantIntegral::getMaxValue(SrcTy); + Max = ConstantExpr::getCast(Max, LHSI->getType()); + return ReplaceInstUsesWith(I, ConstantExpr::getSetLT(Max, CI)); + } + case Instruction::SetGT: { + Constant *Min = ConstantIntegral::getMinValue(SrcTy); + Min = ConstantExpr::getCast(Min, LHSI->getType()); + return ReplaceInstUsesWith(I, ConstantExpr::getSetGT(Min, CI)); + } +#endif case Instruction::SetEQ: return ReplaceInstUsesWith(I, ConstantBool::False); case Instruction::SetNE: return ReplaceInstUsesWith(I, ConstantBool::True); - case Instruction::SetLT: - return ReplaceInstUsesWith(I, ConstantExpr::getSetLT(Max, CI)); - case Instruction::SetGT: - return ReplaceInstUsesWith(I, ConstantExpr::getSetGT(Min, CI)); } } - return new SetCondInst(I.getOpcode(), LHSI->getOperand(0), - ConstantExpr::getCast(CI, SrcTy)); + return new SetCondInst(I.getOpcode(), LHSI->getOperand(0), NewCst); } } break; From lattner at cs.uiuc.edu Mon Nov 1 23:28:20 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 1 Nov 2004 23:28:20 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp PoolAllocator.h Message-ID: <200411020528.iA25SKhv020533@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.12 -> 1.13 PoolAllocator.h updated: 1.7 -> 1.8 --- Log message: We can't really support this API in this allocator, but lets just pretend we can for fun, it might come in handy in the future. --- Diffs of the changes: (+33 -0) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.12 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.13 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.12 Mon Nov 1 16:17:08 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Mon Nov 1 23:28:10 2004 @@ -322,3 +322,29 @@ LAH->Next->Prev = LAH->Prev; free(LAH); } + +unsigned poolobjsize(PoolTy *Pool, void *Node) { + if (Node == 0) return 0; + + // If a null pool descriptor is passed in, this is not a pool allocated data + // structure. We don't really have any way to service this!! + if (Pool == 0) { + fprintf(stderr, "ERROR: Cannot call poolobjsize on a pool that is getting" + " memory from the heap. Sorry!\n"); + abort(); + } + + // Check to see how many elements were allocated to this node... + FreedNodeHeader *FNH = (FreedNodeHeader*)((char*)Node-sizeof(NodeHeader)); + assert((FNH->Header.Size & 1) && "Node not allocated!"); + if (Size != ~1U) return FNH->Header.Size & ~1; + + // Otherwise, we have a large array. + //LargeArrayHeader *LAH = ((LargeArrayHeader*)Node)-1; + + // Note that we don't have a size for this object either, because we got it + // from malloc. :( + fprintf(stderr, "ERROR: Cannot call poolobjsize on a large array object. " + "Sorry!\n"); + abort(); +} Index: poolalloc/runtime/FL2Allocator/PoolAllocator.h diff -u poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.7 poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.8 --- poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.7 Mon Nov 1 16:19:13 2004 +++ poolalloc/runtime/FL2Allocator/PoolAllocator.h Mon Nov 1 23:28:10 2004 @@ -93,6 +93,13 @@ void pooldestroy(PoolTy *Pool); void *poolalloc(PoolTy *Pool, unsigned NumBytes); void poolfree(PoolTy *Pool, void *Node); + + /// poolobjsize - Reutrn the size of the object at the specified address, in + /// the specified pool. Note that this cannot be used in normal cases, as it + /// is completely broken if things land in the system heap. Perhaps in the + /// future. :( + /// + unsigned poolobjsize(PoolTy *Pool, void *Node); } #endif From lattner at cs.uiuc.edu Mon Nov 1 23:34:26 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 1 Nov 2004 23:34:26 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Message-ID: <200411020534.iA25YQhE021316@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.13 -> 1.14 --- Log message: Make this compile :) --- Diffs of the changes: (+3 -2) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.13 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.14 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.13 Mon Nov 1 23:28:10 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Mon Nov 1 23:34:16 2004 @@ -334,10 +334,11 @@ abort(); } - // Check to see how many elements were allocated to this node... + // Check to see how many bytes were allocated to this node. FreedNodeHeader *FNH = (FreedNodeHeader*)((char*)Node-sizeof(NodeHeader)); assert((FNH->Header.Size & 1) && "Node not allocated!"); - if (Size != ~1U) return FNH->Header.Size & ~1; + unsigned Size = FNH->Header.Size & ~1; + if (Size != ~1U) return Size; // Otherwise, we have a large array. //LargeArrayHeader *LAH = ((LargeArrayHeader*)Node)-1; From lattner at cs.uiuc.edu Mon Nov 1 23:56:34 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 1 Nov 2004 23:56:34 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp PoolAllocator.h Message-ID: <200411020556.iA25uYwC021400@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.14 -> 1.15 PoolAllocator.h updated: 1.8 -> 1.9 --- Log message: add support for getting sizes from large array objects --- Diffs of the changes: (+7 -8) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.14 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.15 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.14 Mon Nov 1 23:34:16 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Mon Nov 1 23:56:24 2004 @@ -265,6 +265,7 @@ LAH->Next->Prev = &LAH->Next; Pool->LargeArrays = LAH; LAH->Prev = &Pool->LargeArrays; + LAH->Size = NumBytes; LAH->Marker = ~0U; DEBUG(printf("alloc large Pool:0x%X NumBytes:%d -> 0x%X\n", Pool, NumBytes, LAH+1)); @@ -341,11 +342,6 @@ if (Size != ~1U) return Size; // Otherwise, we have a large array. - //LargeArrayHeader *LAH = ((LargeArrayHeader*)Node)-1; - - // Note that we don't have a size for this object either, because we got it - // from malloc. :( - fprintf(stderr, "ERROR: Cannot call poolobjsize on a large array object. " - "Sorry!\n"); - abort(); + LargeArrayHeader *LAH = ((LargeArrayHeader*)Node)-1; + return LAH->Size; } Index: poolalloc/runtime/FL2Allocator/PoolAllocator.h diff -u poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.8 poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.9 --- poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.8 Mon Nov 1 23:28:10 2004 +++ poolalloc/runtime/FL2Allocator/PoolAllocator.h Mon Nov 1 23:56:24 2004 @@ -40,10 +40,13 @@ // Large Arrays are passed on to directly malloc, and are not necessarily page -// aligned. These arrays are marked by setting the object size preheader to ~0. +// aligned. These arrays are marked by setting the object size preheader to ~1. // LargeArrays are on their own list to allow for efficient deletion. struct LargeArrayHeader { LargeArrayHeader **Prev, *Next; + + // Size - This contains the size of the object. + unsigned long Size; // Marker: this is the ObjectSize marker which MUST BE THE LAST ELEMENT of // this header! From lattner at cs.uiuc.edu Tue Nov 2 00:06:58 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 00:06:58 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp PoolAllocator.h Message-ID: <200411020606.iA266wFS021877@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.15 -> 1.16 PoolAllocator.h updated: 1.9 -> 1.10 --- Log message: Add a new function, which will allow us to implement realloc correctly. --- Diffs of the changes: (+23 -0) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.15 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.16 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.15 Mon Nov 1 23:56:24 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Tue Nov 2 00:06:47 2004 @@ -324,6 +324,28 @@ free(LAH); } +void *poolrealloc(PoolTy *Pool, void *Node, unsigned NumBytes) { + // If a null pool descriptor is passed in, this is not a pool allocated data + // structure. Hand off to the system realloc. + if (Pool == 0) return realloc(Node, NumBytes); + if (Node == 0) return poolalloc(Pool, NumBytes); + if (NumBytes == 0) { + poolfree(Pool, Node); + return 0; + } + + // FIXME: This is obviously much worse than it could be. In particular, we + // never try to expand something in a pool. This might hurt some programs! + void *New = poolalloc(Pool, NumBytes); + assert(New != 0 && "Our poolalloc doesn't ever return null for failure!"); + + // Copy the min of the new and old sizes over. + unsigned Size = poolobjsize(Pool, Node); + memcpy(New, Node, Size < NumBytes ? Size : NumBytes); + poolfree(Pool, Node); + return New; +} + unsigned poolobjsize(PoolTy *Pool, void *Node) { if (Node == 0) return 0; Index: poolalloc/runtime/FL2Allocator/PoolAllocator.h diff -u poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.9 poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.10 --- poolalloc/runtime/FL2Allocator/PoolAllocator.h:1.9 Mon Nov 1 23:56:24 2004 +++ poolalloc/runtime/FL2Allocator/PoolAllocator.h Tue Nov 2 00:06:47 2004 @@ -95,6 +95,7 @@ void poolmakeunfreeable(PoolTy *Pool); void pooldestroy(PoolTy *Pool); void *poolalloc(PoolTy *Pool, unsigned NumBytes); + void *poolrealloc(PoolTy *Pool, void *Node, unsigned NumBytes); void poolfree(PoolTy *Pool, void *Node); /// poolobjsize - Reutrn the size of the object at the specified address, in From lattner at cs.uiuc.edu Tue Nov 2 00:29:22 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 00:29:22 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/Makefile Message-ID: <200411020629.iA26TMC3027441@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: Makefile updated: 1.1 -> 1.2 --- Log message: Compile with -fno-exception to avoid getting eh stuff into the files. --- Diffs of the changes: (+2 -0) Index: poolalloc/runtime/FL2Allocator/Makefile diff -u poolalloc/runtime/FL2Allocator/Makefile:1.1 poolalloc/runtime/FL2Allocator/Makefile:1.2 --- poolalloc/runtime/FL2Allocator/Makefile:1.1 Thu Dec 25 13:46:20 2003 +++ poolalloc/runtime/FL2Allocator/Makefile Tue Nov 2 00:29:12 2004 @@ -3,6 +3,8 @@ SHARED_LIBRARY=1 LIBRARYNAME=poolalloc_rt +CXXFLAGS += -fno-exceptions + include $(LEVEL)/Makefile.common # Always build optimized and debug versions From lattner at cs.uiuc.edu Tue Nov 2 00:39:08 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 00:39:08 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp Message-ID: <200411020639.iA26d8Fs028338@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: EquivClassGraphs.cpp updated: 1.13 -> 1.14 --- Log message: Minor cleanups --- Diffs of the changes: (+21 -25) Index: poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp diff -u poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.13 poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.14 --- poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.13 Mon Nov 1 15:07:05 2004 +++ poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp Tue Nov 2 00:38:58 2004 @@ -179,57 +179,54 @@ Function* LF = *LI; const std::set& EqClass = FuncECs.getEqClass(LF); -#ifndef NDEBUG if (EqClass.size() > 1) { +#ifndef NDEBUG DEBUG(std::cerr <<" Equivalence set for leader " <getName()<<" = "); for (std::set::const_iterator EqI = EqClass.begin(), EqEnd = EqClass.end(); EqI != EqEnd; ++EqI) DEBUG(std::cerr << " " << (*EqI)->getName() << ","); DEBUG(std::cerr << "\n"); - } #endif - if (EqClass.size() > 1) { // This equiv class has multiple functions: merge their graphs. First, // clone the CBU graph for the leader and make it the common graph for the // equivalence graph. - DSGraph *mergedG = &getOrCreateGraph(*LF); + DSGraph &MergedG = getOrCreateGraph(*LF); // Record the argument nodes for use in merging later below. std::vector ArgNodes; for (Function::aiterator AI1 = LF->abegin(); AI1 != LF->aend(); ++AI1) if (DS::isPointerType(AI1->getType())) - ArgNodes.push_back(mergedG->getNodeForValue(AI1)); + ArgNodes.push_back(MergedG.getNodeForValue(AI1)); // Merge in the graphs of all other functions in this equiv. class. Note // that two or more functions may have the same graph, and it only needs - // to be merged in once. Use a set to find repetitions. + // to be merged in once. std::set GraphsMerged; + GraphsMerged.insert(&CBU->getDSGraph(*LF)); + for (std::set::const_iterator EqI = EqClass.begin(), - EqEnd = EqClass.end(); EqI != EqEnd; ++EqI) { - Function* F = *EqI; - DSGraph*& FG = DSInfo[F]; + E = EqClass.end(); EqI != E; ++EqI) { + Function *F = *EqI; + DSGraph *&FG = DSInfo[F]; - if (F == LF || FG == mergedG) + DSGraph &CBUGraph = CBU->getDSGraph(*F); + if (!GraphsMerged.insert(&CBUGraph).second) continue; + assert(FG == 0 && "Remerged a graph?"); // Record the "folded" graph for the function. - FG = mergedG; - - // Clone this member of the equivalence class into mergedG - DSGraph* CBUGraph = &CBU->getDSGraph(*F); - if (GraphsMerged.count(CBUGraph) > 0) - continue; + FG = &MergedG; - GraphsMerged.insert(CBUGraph); + // Clone this member of the equivalence class into MergedG. DSGraph::NodeMapTy NodeMap; - mergedG->cloneInto(*CBUGraph, mergedG->getScalarMap(), - mergedG->getReturnNodes(), NodeMap, 0); + MergedG.cloneInto(CBUGraph, MergedG.getScalarMap(), + MergedG.getReturnNodes(), NodeMap, 0); // Merge the return nodes of all functions together. - mergedG->getReturnNodes()[LF].mergeWith(mergedG->getReturnNodes()[F]); + MergedG.getReturnNodes()[LF].mergeWith(MergedG.getReturnNodes()[F]); // Merge the function arguments with all argument nodes found so far. // If there are extra function args, add them to the vector of argNodes @@ -237,12 +234,12 @@ for (unsigned arg=0, numArgs = ArgNodes.size(); arg != numArgs && AI2 != AI2end; ++AI2, ++arg) if (DS::isPointerType(AI2->getType())) - ArgNodes[arg].mergeWith(mergedG->getNodeForValue(AI2)); + ArgNodes[arg].mergeWith(MergedG.getNodeForValue(AI2)); for ( ; AI2 != AI2end; ++AI2) if (DS::isPointerType(AI2->getType())) - ArgNodes.push_back(mergedG->getNodeForValue(AI2)); - DEBUG(mergedG->AssertGraphOK()); + ArgNodes.push_back(MergedG.getNodeForValue(AI2)); + DEBUG(MergedG.AssertGraphOK()); } } } @@ -267,8 +264,7 @@ I != Graph->getReturnNodes().end(); ++I) if (I->first != &F) { DSGraph *&FG = DSInfo[I->first]; - assert(FG == NULL || FG == &CBU->getDSGraph(*I->first) && - "Merging function in SCC twice?"); + assert(FG == 0 && "Merging function in SCC twice?"); FG = Graph; } From lattner at cs.uiuc.edu Tue Nov 2 00:42:31 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 00:42:31 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp Message-ID: <200411020642.iA26gVTO028366@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: TransformFunctionBody.cpp updated: 1.30 -> 1.31 --- Log message: Codegen X = realloc(Y, Size) into X = poolrealloc(PD, Y, Size) instead of X = poolalloc(PD, Size); memcpy(X, Y, Size); poolfree(PD, Y); This does two things: 1. It is actually correct. If the realloc grows the allocation, the old memcpy would read past the end of the input buffer. This caused Shootout/strcat to fail, which now passes. 2. This allows the poolalloc runtime to implement realloc efficiently, though our current one does not do so. --- Diffs of the changes: (+31 -26) Index: poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp diff -u poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp:1.30 poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp:1.31 --- poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp:1.30 Mon Nov 1 15:03:51 2004 +++ poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp Tue Nov 2 00:42:21 2004 @@ -165,7 +165,7 @@ } // Remove old allocation instruction. - I->getParent()->getInstList().erase(I); + I->eraseFromParent(); return Casted; } @@ -261,37 +261,42 @@ void FuncTransform::visitReallocCall(CallSite CS) { - Module *M = CS.getInstruction()->getParent()->getParent()->getParent(); assert(CS.arg_end()-CS.arg_begin() == 2 && "realloc takes two arguments!"); + Instruction *I = CS.getInstruction(); + Value *PH = getPoolHandle(I); Value *OldPtr = *CS.arg_begin(); Value *Size = *(CS.arg_begin()+1); - BasicBlock::iterator BBI = - TransformAllocationInstr(CS.getInstruction(), Size); - Value *NewPtr = BBI++; - - // We just turned the call of 'realloc' into the equivalent of malloc. To - // finish realloc, we need to copy the memory from the old block to the new, - // then free the old block. - const Type *SBPtr = PointerType::get(Type::SByteTy); - Function *MemCpy = M->getOrInsertFunction("llvm.memcpy", - Type::VoidTy, SBPtr, SBPtr, - Type::UIntTy, Type::UIntTy, 0); - - if (NewPtr->getType() != SBPtr) - NewPtr = new CastInst(NewPtr, SBPtr, NewPtr->getName(), BBI); - if (OldPtr->getType() != SBPtr) - OldPtr = new CastInst(OldPtr, SBPtr, OldPtr->getName(), BBI); if (Size->getType() != Type::UIntTy) - Size = new CastInst(Size, Type::UIntTy, Size->getName(), BBI); - - // We know that the memory returned by poolalloc is at least 4 byte aligned. - new CallInst(MemCpy, make_vector(NewPtr, OldPtr, Size, - ConstantUInt::get(Type::UIntTy, 4), 0), - "", BBI); + Size = new CastInst(Size, Type::UIntTy, Size->getName(), I); + + static Type *VoidPtrTy = PointerType::get(Type::SByteTy); + if (OldPtr->getType() != VoidPtrTy) + OldPtr = new CastInst(OldPtr, VoidPtrTy, OldPtr->getName(), I); + + std::string Name = I->getName(); I->setName(""); + Instruction *V = new CallInst(PAInfo.PoolRealloc, make_vector(PH, OldPtr, + Size, 0), + Name, I); + Instruction *Casted = V; + if (V->getType() != I->getType()) + Casted = new CastInst(V, I->getType(), V->getName(), I); + + // Update def-use info + I->replaceAllUsesWith(Casted); + + // If we are modifying the original function, update the DSGraph. + if (!FI.Clone) { + // V and Casted now point to whatever the original allocation did. + G.getScalarMap().replaceScalar(I, V); + if (V != Casted) + G.getScalarMap()[Casted] = G.getScalarMap()[V]; + } else { // Otherwise, update the NewToOldValueMap + UpdateNewToOldValueMap(I, V, V != Casted ? Casted : 0); + } - // Free the old memory now. - InsertPoolFreeInstr(OldPtr, BBI); + // Remove old allocation instruction. + I->eraseFromParent(); } From lattner at cs.uiuc.edu Tue Nov 2 00:42:32 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 00:42:32 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp PoolAllocate.h Message-ID: <200411020642.iA26gW5S028375@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.77 -> 1.78 PoolAllocate.h updated: 1.25 -> 1.26 --- Log message: Add poolrealloc prototype to the program --- Diffs of the changes: (+10 -5) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.77 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.78 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.77 Sun Oct 31 17:42:08 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Tue Nov 2 00:39:22 2004 @@ -157,20 +157,25 @@ CurModule->addTypeName("PoolDescriptor", PoolDescType); - // Get poolinit function... + // Get poolinit function. PoolInit = CurModule->getOrInsertFunction("poolinit", Type::VoidTy, PoolDescPtrTy, Type::UIntTy, 0); - // Get pooldestroy function... + // Get pooldestroy function. PoolDestroy = CurModule->getOrInsertFunction("pooldestroy", Type::VoidTy, PoolDescPtrTy, 0); - // The poolalloc function + // The poolalloc function. PoolAlloc = CurModule->getOrInsertFunction("poolalloc", VoidPtrTy, PoolDescPtrTy, Type::UIntTy, 0); - // Get the poolfree function... + // The poolrealloc function. + PoolRealloc = CurModule->getOrInsertFunction("poolrealloc", + VoidPtrTy, PoolDescPtrTy, + VoidPtrTy, Type::UIntTy, 0); + + // Get the poolfree function. PoolFree = CurModule->getOrInsertFunction("poolfree", Type::VoidTy, PoolDescPtrTy, VoidPtrTy, 0); } Index: poolalloc/lib/PoolAllocate/PoolAllocate.h diff -u poolalloc/lib/PoolAllocate/PoolAllocate.h:1.25 poolalloc/lib/PoolAllocate/PoolAllocate.h:1.26 --- poolalloc/lib/PoolAllocate/PoolAllocate.h:1.25 Sun Sep 19 23:35:24 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.h Tue Nov 2 00:39:22 2004 @@ -87,7 +87,7 @@ public: - Function *PoolInit, *PoolDestroy, *PoolAlloc, *PoolAllocArray, *PoolFree; + Function *PoolInit, *PoolDestroy, *PoolAlloc, *PoolRealloc, *PoolFree; static const Type *PoolDescPtrTy; /// GlobalNodes - For each node (with an H marker) in the globals graph, this From lattner at cs.uiuc.edu Tue Nov 2 09:28:11 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 09:28:11 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/X86TargetMachine.cpp Message-ID: <200411021528.iA2FSBDk029989@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: X86TargetMachine.cpp updated: 1.70 -> 1.71 --- Log message: Fix a warning --- Diffs of the changes: (+2 -1) Index: llvm/lib/Target/X86/X86TargetMachine.cpp diff -u llvm/lib/Target/X86/X86TargetMachine.cpp:1.70 llvm/lib/Target/X86/X86TargetMachine.cpp:1.71 --- llvm/lib/Target/X86/X86TargetMachine.cpp:1.70 Mon Nov 1 14:10:20 2004 +++ llvm/lib/Target/X86/X86TargetMachine.cpp Tue Nov 2 09:27:57 2004 @@ -31,7 +31,8 @@ /// in a library unless there are references into the library. In particular, /// it seems that it is not possible to get things to work on Win32 without /// this. Though it is unused, do not remove it. -extern "C" int X86TargetMachineModule = 0; +extern "C" int X86TargetMachineModule; +int X86TargetMachineModule = 0; namespace { cl::opt NoSSAPeephole("disable-ssa-peephole", cl::init(true), From reid at x10sys.com Tue Nov 2 10:36:41 2004 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Nov 2004 10:36:41 -0600 Subject: [llvm-commits] CVS: llvm/Makefile.rules Message-ID: <200411021636.KAA05106@zion.cs.uiuc.edu> Changes in directory llvm: Makefile.rules updated: 1.230 -> 1.231 --- Log message: * New Recursive Target: clean-all --- Diffs of the changes: (+19 -11) Index: llvm/Makefile.rules diff -u llvm/Makefile.rules:1.230 llvm/Makefile.rules:1.231 --- llvm/Makefile.rules:1.230 Mon Nov 1 01:50:27 2004 +++ llvm/Makefile.rules Tue Nov 2 10:36:03 2004 @@ -19,9 +19,9 @@ #-------------------------------------------------------------------- # Define the various target sets #-------------------------------------------------------------------- -RecursiveTargets := all clean check install uninstall -LocalTargets := all-local clean-local check-local install-local printvars \ - uninstall-local +RecursiveTargets := all clean clean-all check install uninstall +LocalTargets := all-local clean-local clean-all-local check-local \ + install-local printvars uninstall-local TopLevelTargets := dist dist-check dist-clean tags dist-gzip dist-bzip2 \ dist-zip UserTargets := $(RecursiveTargets) $(LocalTargets) $(TopLevelTargets) @@ -131,6 +131,7 @@ all:: all-local check:: check-local clean:: clean-local +clean-all:: clean-local clean-all-local install:: install-local uninstall:: uninstall-local check-local:: all-local @@ -373,6 +374,7 @@ # recursive targets are added. all :: $(addsuffix /.makeall ,$(PARALLEL_DIRS)) clean :: $(addsuffix /.makeclean ,$(PARALLEL_DIRS)) +clean-all:: $(addsuffix /.makecleanall ,$(PARALLEL_DIRS)) check :: $(addsuffix /.makecheck ,$(PARALLEL_DIRS)) install :: $(addsuffix /.makeinstall ,$(PARALLEL_DIRS)) uninstall:: $(addsuffix /.makeuninstall,$(PARALLEL_DIRS)) @@ -822,9 +824,11 @@ # (f)lex input sources. #--------------------------------------------------------- -LexOutput := $(strip $(subst %.l,%.cpp,$(filter %.l,$(Sources)))) +LexFiles := $(filter %.l,$(Sources)) -ifneq ($(LexOutput),) +ifneq ($(LexFiles),) + +LexOutput := $(strip $(patsubst %.l,%.cpp,$(LexFiles))) .PRECIOUS: $(LexOutput) @@ -843,7 +847,7 @@ > $@ clean-local:: - $(RM) -f $(LexOutput) + $(Verb) $(RM) -f $(LexOutput) endif @@ -852,10 +856,9 @@ # from yacc (bison) input sources. #--------------------------------------------------------- -YaccOutput := $(strip $(addprefix $(subst %.y,%,$(filter %.y,$(Sources))),\ - .h .cpp .output)) - -ifneq ($(YaccOutput),) +YaccFiles := $(filter %.y,$(Sources)) +ifneq ($(YaccFiles),) +YaccOutput := $(addprefix $(patsubst %.y,%,$(YaccFiles)),.h .cpp .output) .PRECIOUS: $(YaccOutput) @@ -872,7 +875,7 @@ $(Verb) $(MV) -f $*.tab.h $*.h clean-local:: - $(RM) -f $(YaccOutput) + $(Verb) $(RM) -f $(YaccOutput) endif ############################################################################### @@ -905,6 +908,9 @@ $(Verb) $(RM) -f *$(SHLIBEXT) endif +clean-all-local:: + $(Verb) $(RM) -rf Debug Release Profile + # Build tags database for Emacs/Xemacs: tags:: TAGS TAGS: @@ -1168,3 +1174,5 @@ $(Echo) "Compile.CXX : " '$(Compile.CXX)' $(Echo) "Compile.C : " '$(Compile.C)' $(Echo) "Archive : " '$(Archive)' + $(Echo) "YaccFiles : " '$(YaccFiles)' + $(Echo) "LexFiles : " '$(LexFiles)' From reid at x10sys.com Tue Nov 2 10:56:25 2004 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Nov 2004 10:56:25 -0600 Subject: [llvm-commits] CVS: llvm/Makefile.rules Message-ID: <200411021656.KAA05239@zion.cs.uiuc.edu> Changes in directory llvm: Makefile.rules updated: 1.231 -> 1.232 --- Log message: * New Recursive Target: clean-all. This target will recursively descend the $(ObjDir) and clean out all build modes (Debug, Release, Profile) in addition to the normal "clean" rules. * Fix "clean" problems with Lex/Yacc so all files are remove properly. * Ensure errors from "rm" don't thwart the uninstall and clean targets. --- Diffs of the changes: (+21 -19) Index: llvm/Makefile.rules diff -u llvm/Makefile.rules:1.231 llvm/Makefile.rules:1.232 --- llvm/Makefile.rules:1.231 Tue Nov 2 10:36:03 2004 +++ llvm/Makefile.rules Tue Nov 2 10:56:15 2004 @@ -77,7 +77,7 @@ clean-local:: ifneq ($(strip $(BUILT_SOURCES)),) - $(Verb) $(RM) -f $(BUILT_SOURCES) + -$(Verb) $(RM) -f $(BUILT_SOURCES) endif $(BUILT_SOURCES) : $(ObjMakefiles) @@ -374,7 +374,7 @@ # recursive targets are added. all :: $(addsuffix /.makeall ,$(PARALLEL_DIRS)) clean :: $(addsuffix /.makeclean ,$(PARALLEL_DIRS)) -clean-all:: $(addsuffix /.makecleanall ,$(PARALLEL_DIRS)) +clean-all:: $(addsuffix /.makeclean-all,$(PARALLEL_DIRS)) check :: $(addsuffix /.makecheck ,$(PARALLEL_DIRS)) install :: $(addsuffix /.makeinstall ,$(PARALLEL_DIRS)) uninstall:: $(addsuffix /.makeuninstall,$(PARALLEL_DIRS)) @@ -460,7 +460,7 @@ clean-local:: ifneq ($(strip $(LibName.LA)),) - $(Verb) $(RM) -f $(LibName.LA) + -$(Verb) $(RM) -f $(LibName.LA) endif DestSharedLib = $(libdir)/lib$(LIBRARYNAME)$(SHLIBEXT) @@ -474,7 +474,7 @@ uninstall-local:: $(Echo) Uninstalling $(BuildMode) Shared Library $(DestSharedLib) - $(Verb) $(RM) -f $(DestSharedLib) + -$(Verb) $(RM) -f $(DestSharedLib) endif @@ -504,7 +504,7 @@ clean-local:: ifneq ($(strip $(LibName.BC)),) - $(Verb) $(RM) -f $(LibName.BC) + -$(Verb) $(RM) -f $(LibName.BC) endif DestBytecodeLib = $(bytecode_libdir)/lib$(LIBRARYNAME).bc @@ -517,7 +517,7 @@ uninstall-local:: $(Echo) Uninstalling $(BuildMode) Bytecode Library $(DestBytecodeLib) - $(Verb) $(RM) -f $(DestBytecodeLib) + -$(Verb) $(RM) -f $(DestBytecodeLib) endif @@ -536,7 +536,7 @@ clean-local:: ifneq ($(strip $(LibName.O)),) - $(Verb) $(RM) -f $(LibName.O) + -$(Verb) $(RM) -f $(LibName.O) endif DestRelinkedLib = $(libdir)/$(LIBRARYNAME).o @@ -549,7 +549,7 @@ uninstall-local:: $(Echo) Uninstalling $(BuildMode) Object Library $(DestRelinkedLib) - $(Verb) $(RM) -f $(DestRelinkedLib) + -$(Verb) $(RM) -f $(DestRelinkedLib) endif @@ -564,13 +564,13 @@ $(LibName.A): $(BUILT_SOURCES) $(ObjectsO) $(LibDir)/.dir $(Echo) Building $(BuildMode) Archive Library $(notdir $@) - $(Verb)$(RM) -f $@ + -$(Verb) $(RM) -f $@ $(Verb) $(Archive) $@ $(ObjectsO) $(Verb) $(Ranlib) $@ clean-local:: ifneq ($(strip $(LibName.A)),) - $(Verb) $(RM) -f $(LibName.A) + -$(Verb) $(RM) -f $(LibName.A) endif DestArchiveLib := $(libdir)/lib$(LIBRARYNAME).a @@ -584,7 +584,7 @@ uninstall-local:: $(Echo) Uninstalling $(BuildMode) Archive Library $(DestArchiveLib) - $(Verb) $(RM) -f $(DestArchiveLib) + -$(Verb) $(RM) -f $(DestArchiveLib) endif @@ -635,7 +635,7 @@ clean-local:: ifneq ($(strip $(ToolBuildPath)),) - $(Verb) $(RM) -f $(ToolBuildPath) + -$(Verb) $(RM) -f $(ToolBuildPath) endif $(ToolBuildPath): $(BUILT_SOURCES) $(ObjectsO) $(ProjLibsPaths) $(LLVMLibsPaths)\ @@ -655,7 +655,7 @@ uninstall-local:: $(Echo) Uninstalling $(BuildMode) $(DestTool) - $(Verb) $(RM) -f $(DestTool) + -$(Verb) $(RM) -f $(DestTool) endif @@ -811,7 +811,7 @@ $(Verb) $(TableGen) -gen-emitter -o $@ $< clean-local:: - $(Verb) $(RM) -f $(INCFiles) + -$(Verb) $(RM) -f $(INCFiles) endif @@ -847,6 +847,7 @@ > $@ clean-local:: + -$(Verb) $(RM) -f $(LexOutput) $(Verb) $(RM) -f $(LexOutput) endif @@ -875,6 +876,7 @@ $(Verb) $(MV) -f $*.tab.h $*.h clean-local:: + -$(Verb) $(RM) -f $(YaccOutput) $(Verb) $(RM) -f $(YaccOutput) endif @@ -901,15 +903,15 @@ # errors or disastrous removal. clean-local:: ifneq ($(strip $(ObjDir)),) - $(Verb) $(RM) -rf $(ObjDir) + -$(Verb) $(RM) -rf $(ObjDir) endif - $(Verb) $(RM) -f core core.[0-9][0-9]* *.o *.d *~ *.flc + -$(Verb) $(RM) -f core core.[0-9][0-9]* *.o *.d *~ *.flc ifneq ($(strip $(SHLIBEXT)),) # Extra paranoia - make real sure SHLIBEXT is set - $(Verb) $(RM) -f *$(SHLIBEXT) + -$(Verb) $(RM) -f *$(SHLIBEXT) endif clean-all-local:: - $(Verb) $(RM) -rf Debug Release Profile + -$(Verb) $(RM) -rf Debug Release Profile # Build tags database for Emacs/Xemacs: tags:: TAGS @@ -1041,7 +1043,7 @@ dist-clean:: $(Echo) Cleaning distribution files - $(Verb) $(RM) -rf $(DistTarGZip) $(DistTarBZ2) $(DistZip) $(DistName) $(DistCheckDir) + -$(Verb) $(RM) -rf $(DistTarGZip) $(DistTarBZ2) $(DistZip) $(DistName) $(DistCheckDir) endif From lattner at cs.uiuc.edu Tue Nov 2 11:31:17 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 11:31:17 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Config/alloca.h Message-ID: <200411021731.iA2HVH13021287@apoc.cs.uiuc.edu> Changes in directory llvm/include/llvm/Config: alloca.h updated: 1.7 -> 1.8 --- Log message: Fix typo, contributed by Henrik Bach! --- Diffs of the changes: (+1 -1) Index: llvm/include/llvm/Config/alloca.h diff -u llvm/include/llvm/Config/alloca.h:1.7 llvm/include/llvm/Config/alloca.h:1.8 --- llvm/include/llvm/Config/alloca.h:1.7 Mon Oct 25 13:38:05 2004 +++ llvm/include/llvm/Config/alloca.h Tue Nov 2 11:31:02 2004 @@ -28,7 +28,7 @@ #define alloca _alloca #elif defined(HAVE_ALLOCA_H) #include -#elif defined(__MINGW_H) && defined(HAVE_MALLOC_H) +#elif defined(__MINGW) && defined(HAVE_MALLOC_H) #include #elif !defined(__GNUC__) # ifdef _AIX From lattner at cs.uiuc.edu Tue Nov 2 11:51:21 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 11:51:21 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp EquivClassGraphs.h Message-ID: <200411021751.iA2HpLt8023979@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: EquivClassGraphs.cpp updated: 1.14 -> 1.15 EquivClassGraphs.h updated: 1.12 -> 1.13 --- Log message: Substantially cleanup/speedup the eq graphs pass by walking the callgraph a DSGraph at a time instead of a function at a time. This is also more correct, though it doesn't seem to fix any programs. --- Diffs of the changes: (+44 -49) Index: poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp diff -u poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.14 poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.15 --- poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.14 Tue Nov 2 00:38:58 2004 +++ poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp Tue Nov 2 11:51:11 2004 @@ -86,20 +86,20 @@ buildIndirectFunctionSets(M); // Stack of functions used for Tarjan's SCC-finding algorithm. - std::vector Stack; - std::map ValMap; + std::vector Stack; + std::map ValMap; unsigned NextID = 1; if (Function *Main = M.getMainFunction()) { if (!Main->isExternal()) - processSCC(getOrCreateGraph(*Main), *Main, Stack, NextID, ValMap); + processSCC(getOrCreateGraph(*Main), Stack, NextID, ValMap); } else { std::cerr << "Fold Graphs: No 'main' function found!\n"; } for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) - if (!I->isExternal() && !ValMap.count(I)) - processSCC(getOrCreateGraph(*I), *I, Stack, NextID, ValMap); + if (!I->isExternal()) + processSCC(getOrCreateGraph(*I), Stack, NextID, ValMap); DEBUG(CheckAllGraphs(&M, *this)); @@ -272,19 +272,19 @@ } -unsigned PA::EquivClassGraphs::processSCC(DSGraph &FG, Function &F, - std::vector &Stack, - unsigned &NextID, - std::map &ValMap){ - DEBUG(std::cerr << " ProcessSCC for function " << F.getName() << "\n"); - - std::map::iterator It = ValMap.lower_bound(&F); - if (It != ValMap.end() && It->first == &F) +unsigned PA::EquivClassGraphs:: +processSCC(DSGraph &FG, std::vector &Stack, unsigned &NextID, + std::map &ValMap) { + std::map::iterator It = ValMap.lower_bound(&FG); + if (It != ValMap.end() && It->first == &FG) return It->second; + DEBUG(std::cerr << " ProcessSCC for function " << FG.getFunctionNames() + << "\n"); + unsigned Min = NextID++, MyID = Min; - ValMap[&F] = Min; - Stack.push_back(&F); + ValMap[&FG] = Min; + Stack.push_back(&FG); // The edges out of the current node are the call site targets... for (unsigned i = 0, e = FG.getFunctionCalls().size(); i != e; ++i) { @@ -295,21 +295,21 @@ for (tie(I, E) = getActualCallees().equal_range(Call); I != E; ++I) if (!I->second->isExternal()) { // Process the callee as necessary. - unsigned M = processSCC(getOrCreateGraph(*I->second), *I->second, + unsigned M = processSCC(getOrCreateGraph(*I->second), Stack, NextID, ValMap); if (M < Min) Min = M; } } - assert(ValMap[&F] == MyID && "SCC construction assumption wrong!"); + assert(ValMap[&FG] == MyID && "SCC construction assumption wrong!"); if (Min != MyID) return Min; // This is part of a larger SCC! // If this is a new SCC, process it now. bool IsMultiNodeSCC = false; - while (Stack.back() != &F) { - DSGraph *NG = &getOrCreateGraph(*Stack.back()); - ValMap[Stack.back()] = ~0U; + while (Stack.back() != &FG) { + DSGraph *NG = Stack.back(); + ValMap[NG] = ~0U; // Since all SCCs must be the same as those found in CBU, we do not need to // do any merging. Make sure all functions in the SCC share the same graph. @@ -321,25 +321,24 @@ Stack.pop_back(); - processGraph(FG, F); - ValMap[&F] = ~0U; + processGraph(FG); + ValMap[&FG] = ~0U; return MyID; } /// processGraph - Process the CBU graphs for the program in bottom-up order on /// the SCC of the __ACTUAL__ call graph. This builds final folded CBU graphs. -void PA::EquivClassGraphs::processGraph(DSGraph &G, Function &F) { - DEBUG(std::cerr << " ProcessGraph for function " << F.getName() << "\n"); +void PA::EquivClassGraphs::processGraph(DSGraph &G) { + DEBUG(std::cerr << " ProcessGraph for function " + << G.getFunctionNames() << "\n"); hash_set calls; - DSGraph* CallerGraph = &getOrCreateGraph(F); - // Else we need to inline some callee graph. Visit all call sites. // The edges out of the current node are the call site targets... - for (unsigned i=0, e = CallerGraph->getFunctionCalls().size(); i != e; ++i) { - const DSCallSite &CS = CallerGraph->getFunctionCalls()[i]; + for (unsigned i=0, e = G.getFunctionCalls().size(); i != e; ++i) { + const DSCallSite &CS = G.getFunctionCalls()[i]; Instruction *TheCall = CS.getCallSite().getInstruction(); assert(calls.insert(TheCall).second && @@ -369,21 +368,19 @@ // including self-recursion have been folded in the equiv classes. // CalleeGraph = &getOrCreateGraph(*CalleeFunc); - if (CalleeGraph != CallerGraph) { + if (CalleeGraph != &G) { ++NumFoldGraphInlines; - CallerGraph->mergeInGraph(CS, *CalleeFunc, *CalleeGraph, - DSGraph::KeepModRefBits | - DSGraph::StripAllocaBit | - DSGraph::DontCloneCallNodes | - DSGraph::DontCloneAuxCallNodes); + G.mergeInGraph(CS, *CalleeFunc, *CalleeGraph, + DSGraph::KeepModRefBits | DSGraph::StripAllocaBit | + DSGraph::DontCloneCallNodes | + DSGraph::DontCloneAuxCallNodes); DEBUG(std::cerr << " Inlining graph [" << i << "/" << e-1 << ":" << TNum << "/" << Num-1 << "] for " << CalleeFunc->getName() << "[" << CalleeGraph->getGraphSize() << "+" << CalleeGraph->getAuxFunctionCalls().size() - << "] into '" /*<< CallerGraph->getFunctionNames()*/ << "' [" - << CallerGraph->getGraphSize() << "+" - << CallerGraph->getAuxFunctionCalls().size() + << "] into '" /*<< G.getFunctionNames()*/ << "' [" + << G.getGraphSize() << "+" << G.getAuxFunctionCalls().size() << "]\n"); } } @@ -400,26 +397,25 @@ } // Recompute the Incomplete markers. - assert(CallerGraph->getInlinedGlobals().empty()); - CallerGraph->maskIncompleteMarkers(); - CallerGraph->markIncompleteNodes(DSGraph::MarkFormalArgs); + assert(G.getInlinedGlobals().empty()); + G.maskIncompleteMarkers(); + G.markIncompleteNodes(DSGraph::MarkFormalArgs); // Delete dead nodes. Treat globals that are unreachable but that can // reach live nodes as live. - CallerGraph->removeDeadNodes(DSGraph::KeepUnreachableGlobals); + G.removeDeadNodes(DSGraph::KeepUnreachableGlobals); // When this graph is finalized, clone the globals in the graph into the // globals graph to make sure it has everything, from all graphs. - DSScalarMap &MainSM = CallerGraph->getScalarMap(); - ReachabilityCloner RC(*CallerGraph->getGlobalsGraph(), *CallerGraph, - DSGraph::StripAllocaBit); + ReachabilityCloner RC(*G.getGlobalsGraph(), G, DSGraph::StripAllocaBit); // Clone everything reachable from globals in the function graph into the // globals graph. + DSScalarMap &MainSM = G.getScalarMap(); for (DSScalarMap::global_iterator I = MainSM.global_begin(), E = MainSM.global_end(); I != E; ++I) RC.getClonedNH(MainSM[*I]); DEBUG(std::cerr << " -- DONE ProcessGraph for function " - << F.getName() << "\n"); + << G.getFunctionNames() << "\n"); } Index: poolalloc/lib/PoolAllocate/EquivClassGraphs.h diff -u poolalloc/lib/PoolAllocate/EquivClassGraphs.h:1.12 poolalloc/lib/PoolAllocate/EquivClassGraphs.h:1.13 --- poolalloc/lib/PoolAllocate/EquivClassGraphs.h:1.12 Mon Nov 1 15:07:05 2004 +++ poolalloc/lib/PoolAllocate/EquivClassGraphs.h Tue Nov 2 11:51:11 2004 @@ -93,11 +93,10 @@ private: void buildIndirectFunctionSets(Module &M); - unsigned processSCC(DSGraph &FG, Function &F, std::vector &Stack, + unsigned processSCC(DSGraph &FG, std::vector &Stack, unsigned &NextID, - std::map &ValMap); - - void processGraph(DSGraph &FG, Function &F); + std::map &ValMap); + void processGraph(DSGraph &FG); DSGraph &getOrCreateGraph(Function &F); }; From criswell at cs.uiuc.edu Tue Nov 2 13:21:59 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Tue, 2 Nov 2004 13:21:59 -0600 (CST) Subject: [llvm-commits] CVS: poolalloc/test/Makefile Message-ID: <200411021921.NAA11220@kain.cs.uiuc.edu> Changes in directory poolalloc/test: Makefile updated: 1.21 -> 1.22 --- Log message: Added progcputrack target, which will measure cache misses on the Sparc with the cputrack utility for all of the standard LARGE problems. --- Diffs of the changes: (+24 -0) Index: poolalloc/test/Makefile diff -u poolalloc/test/Makefile:1.21 poolalloc/test/Makefile:1.22 --- poolalloc/test/Makefile:1.21 Mon Nov 1 16:47:01 2004 +++ poolalloc/test/Makefile Tue Nov 2 13:21:48 2004 @@ -100,6 +100,30 @@ done @printf "\a"; sleep 1; printf "\a"; sleep 1; printf "\a" +progcputrack:: + for dir in $(LARGE_PROBLEM_SIZE_DIRS); do \ + (cd $$dir; \ + PROJECT_DIR=$(BUILD_OBJ_ROOT) $(MAKE) -j1 TEST=cputrack \ + LARGE_PROBLEM_SIZE=1 report.html) \ + done + for dir in $(NORMAL_PROBLEM_SIZE_DIRS); do \ + (cd $$dir; \ + PROJECT_DIR=$(BUILD_OBJ_ROOT) $(MAKE) -j1 TEST=cputrack \ + report.html) \ + done + @for dir in $(LARGE_PROBLEM_SIZE_DIRS); do \ + (cd $$dir; \ + PROJECT_DIR=$(BUILD_OBJ_ROOT) $(MAKE) -s -j1 TEST=cputrack \ + LARGE_PROBLEM_SIZE=1 report) \ + done + @for dir in $(NORMAL_PROBLEM_SIZE_DIRS); do \ + (cd $$dir; \ + PROJECT_DIR=$(BUILD_OBJ_ROOT) $(MAKE) -s -j1 TEST=cputrack \ + report) \ + done + @printf "\a"; sleep 1; printf "\a"; sleep 1; printf "\a" + + ############################################################################## # Targets for running tests and gathering statistics for arbitrary tests ############################################################################## From lattner at cs.uiuc.edu Tue Nov 2 13:30:13 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 13:30:13 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp Message-ID: <200411021930.iA2JUDDD027233@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: EquivClassGraphs.cpp updated: 1.15 -> 1.16 --- Log message: Correctly handle new SCC's found as a result of merging EQ graphs do to function pointer equivalences. This fixes many problems, including a testcase reduced Prolangs-C++/objects. --- Diffs of the changes: (+18 -5) Index: poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp diff -u poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.15 poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.16 --- poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.15 Tue Nov 2 11:51:11 2004 +++ poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp Tue Nov 2 13:29:59 2004 @@ -306,19 +306,32 @@ return Min; // This is part of a larger SCC! // If this is a new SCC, process it now. - bool IsMultiNodeSCC = false; + bool MergedGraphs = false; while (Stack.back() != &FG) { DSGraph *NG = Stack.back(); ValMap[NG] = ~0U; - // Since all SCCs must be the same as those found in CBU, we do not need to - // do any merging. Make sure all functions in the SCC share the same graph. - assert(NG == &FG && "ECG discovered different SCC's than the CBU pass?"); + // If the SCC found is not the same as those found in CBU, make sure to + // merge the graphs as appropriate. + DSGraph::NodeMapTy NodeMap; + FG.cloneInto(*NG, FG.getScalarMap(), FG.getReturnNodes(), NodeMap); + + // Update the DSInfo map and delete the old graph... + for (DSGraph::ReturnNodesTy::iterator I = NG->getReturnNodes().begin(); + I != NG->getReturnNodes().end(); ++I) + DSInfo[I->first] = &FG; + // Remove NG from the ValMap since the pointer may get recycled. + ValMap.erase(NG); + delete NG; + MergedGraphs = true; Stack.pop_back(); - IsMultiNodeSCC = true; } + // Clean up the graph before we start inlining a bunch again. + if (MergedGraphs) + FG.removeTriviallyDeadNodes(); + Stack.pop_back(); processGraph(FG); From llvm at cs.uiuc.edu Tue Nov 2 13:59:51 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Tue, 2 Nov 2004 13:59:51 -0600 Subject: [llvm-commits] CVS: llvm/win32/ Message-ID: <200411021959.NAA08071@zion.cs.uiuc.edu> Changes in directory llvm/win32: --- Log message: Directory /var/cvs/llvm/llvm/win32 added to the repository --- Diffs of the changes: (+0 -0) From alkis at cs.uiuc.edu Tue Nov 2 14:00:22 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Tue, 2 Nov 2004 14:00:22 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp Message-ID: <200411022000.OAA08144@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: Compiler.cpp updated: 1.133 -> 1.134 --- Log message: When copying method pointers to the vtable from the super class' vtable skip the typeinfo pointer. --- Diffs of the changes: (+4 -4) Index: llvm-java/lib/Compiler/Compiler.cpp diff -u llvm-java/lib/Compiler/Compiler.cpp:1.133 llvm-java/lib/Compiler/Compiler.cpp:1.134 --- llvm-java/lib/Compiler/Compiler.cpp:1.133 Thu Oct 28 15:45:55 2004 +++ llvm-java/lib/Compiler/Compiler.cpp Tue Nov 2 14:00:11 2004 @@ -643,8 +643,8 @@ // Use a null typeinfo struct for now. init[0] = llvm::Constant::getNullValue(VTableInfo::TypeInfoTy); // Fill in the function pointers as they are in the super - // class. overriden methods will be replaced later. - for (unsigned i = 0, e = superInit->getNumOperands(); i != e; ++i) + // class. Overriden methods will be replaced later. + for (unsigned i = 1, e = superInit->getNumOperands(); i != e; ++i) init[i] = superInit->getOperand(i); vi.m2iMap = superVI.m2iMap; @@ -720,8 +720,8 @@ // Use a null typeinfo struct for now. init[0] = llvm::Constant::getNullValue(VTableInfo::TypeInfoTy); // Fill in the function pointers as they are in the super - // class. overriden methods will be replaced later. - for (unsigned i = 0, e = superInit->getNumOperands(); i != e; ++i) + // class. Overriden methods will be replaced later. + for (unsigned i = 1, e = superInit->getNumOperands(); i != e; ++i) init[i] = superInit->getOperand(i); vi.m2iMap = superVI.m2iMap; From lattner at cs.uiuc.edu Tue Nov 2 14:31:16 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 14:31:16 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp Message-ID: <200411022031.iA2KVGTP003971@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: EquivClassGraphs.cpp updated: 1.16 -> 1.17 --- Log message: Graphs that are part of equivalence sets can be multi-function SCC's themselves. Make sure to update DSInfo correctly. This fixes a testcase reduced from Prolangs-C++/objects --- Diffs of the changes: (+8 -3) Index: poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp diff -u poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.16 poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.17 --- poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp:1.16 Tue Nov 2 13:29:59 2004 +++ poolalloc/lib/PoolAllocate/EquivClassGraphs.cpp Tue Nov 2 14:31:06 2004 @@ -214,16 +214,21 @@ DSGraph &CBUGraph = CBU->getDSGraph(*F); if (!GraphsMerged.insert(&CBUGraph).second) continue; - assert(FG == 0 && "Remerged a graph?"); // Record the "folded" graph for the function. - FG = &MergedG; + for (DSGraph::ReturnNodesTy::iterator + I = CBUGraph.getReturnNodes().begin(), + E = CBUGraph.getReturnNodes().end(); + I != E; ++I) { + assert(DSInfo[I->first] == 0 && "Graph already exists for Fn!"); + DSInfo[I->first] = &MergedG; + } // Clone this member of the equivalence class into MergedG. DSGraph::NodeMapTy NodeMap; MergedG.cloneInto(CBUGraph, MergedG.getScalarMap(), - MergedG.getReturnNodes(), NodeMap, 0); + MergedG.getReturnNodes(), NodeMap, 0); // Merge the return nodes of all functions together. MergedG.getReturnNodes()[LF].mergeWith(MergedG.getReturnNodes()[F]); From alkis at cs.uiuc.edu Tue Nov 2 14:38:58 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Tue, 2 Nov 2004 14:38:58 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp Message-ID: <200411022038.OAA09893@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: Compiler.cpp updated: 1.134 -> 1.135 --- Log message: Remove debugging output. --- Diffs of the changes: (+0 -2) Index: llvm-java/lib/Compiler/Compiler.cpp diff -u llvm-java/lib/Compiler/Compiler.cpp:1.134 llvm-java/lib/Compiler/Compiler.cpp:1.135 --- llvm-java/lib/Compiler/Compiler.cpp:1.134 Tue Nov 2 14:00:11 2004 +++ llvm-java/lib/Compiler/Compiler.cpp Tue Nov 2 14:38:48 2004 @@ -1408,8 +1408,6 @@ void do_iinc(unsigned index, int amount) { Value* v = currentLocals_->load(index, currentBB_); Value* a = ConstantSInt::get(Type::IntTy, amount); - std::cerr << "v: " << *v << '\n'; - std::cerr << "a: " << *a << '\n'; BinaryOperator::createAdd(v, a, TMP, currentBB_); currentLocals_->store(index, v, currentBB_); } From tbrethou at cs.uiuc.edu Tue Nov 2 15:05:11 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Tue, 2 Nov 2004 15:05:11 -0600 (CST) Subject: [llvm-commits] CVS: llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.cpp ModuloScheduling.h Message-ID: <200411022105.PAA15991@kain.cs.uiuc.edu> Changes in directory llvm/lib/Target/SparcV9/ModuloScheduling: ModuloScheduling.cpp updated: 1.32 -> 1.33 ModuloScheduling.h updated: 1.17 -> 1.18 --- Log message: Added gross hacks such as creating my own def-use map, and picking on Instruction that I can add all my TmpInstructions to its MCFI. --- Diffs of the changes: (+73 -70) Index: llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.cpp diff -u llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.cpp:1.32 llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.cpp:1.33 --- llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.cpp:1.32 Fri Oct 29 19:39:07 2004 +++ llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.cpp Tue Nov 2 15:04:55 2004 @@ -137,6 +137,33 @@ if(MachineBBisValid(BI)) Worklist.push_back(&*BI); + defaultInst = 0; + + //If we have a basic block to schedule, create our def map + if(Worklist.size() > 0) { + for(MachineFunction::iterator BI = MF.begin(); BI != MF.end(); ++BI) { + for(MachineBasicBlock::iterator I = BI->begin(), E = BI->end(); I != E; ++I) { + for(unsigned opNum = 0; opNum < I->getNumOperands(); ++opNum) { + const MachineOperand &mOp = I->getOperand(opNum); + if(mOp.getType() == MachineOperand::MO_VirtualRegister && mOp.isDef()) { + defMap[mOp.getVRegValue()] = &*I; + } + + //See if we can use this Value* as our defaultInst + if(!defaultInst && mOp.getType() == MachineOperand::MO_VirtualRegister) { + Value *V = mOp.getVRegValue(); + if(!isa(V) && !isa(V) && !isa(V)) + defaultInst = (Instruction*) V; + } + } + } + } + } + + assert(defaultInst && "We must have a default instruction to use as our main point to add to machine code for instruction\n"); + + DEBUG(std::cerr << "Default Instruction: " << *defaultInst << "\n"); + DEBUG(if(Worklist.size() == 0) std::cerr << "No single basic block loops in function to ModuloSchedule\n"); //Iterate over the worklist and perform scheduling @@ -265,7 +292,6 @@ MachineOpCode OC = I->getOpcode(); if(TMI->isCall(OC)) return false; - } return true; } @@ -1286,8 +1312,8 @@ //Save copy in tmpInstruction tmp = new TmpInstruction(mOp.getVRegValue()); - //Get machine code for this instruction - MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get((Instruction*) mOp.getVRegValue()); + //Add TmpInstruction to safe LLVM Instruction MCFI + MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get(defaultInst); tempMvec.addTemp((Value*) tmp); DEBUG(std::cerr << "Value: " << *(mOp.getVRegValue()) << " New Value: " << *tmp << " Stage: " << i << "\n"); @@ -1405,7 +1431,7 @@ Instruction *tmp = new TmpInstruction(newValues[mOp.getVRegValue()][i]); //Get machine code for this instruction - MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get((Instruction*) mOp.getVRegValue()); + MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get(defaultInst); tempMvec.addTemp((Value*) tmp); MachineInstr *saveValue = BuildMI(machineBB, V9::PHI, 3).addReg(newValues[mOp.getVRegValue()][i]).addReg(kernelPHIs[mOp.getVRegValue()][i]).addRegDef(tmp); @@ -1479,7 +1505,7 @@ TmpInstruction *tmp = new TmpInstruction(mOp.getVRegValue()); //Get machine code for this instruction - MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get((Instruction*) mOp.getVRegValue()); + MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get(defaultInst); tempMvec.addTemp((Value*) tmp); //Update the operand in the cloned instruction @@ -1498,7 +1524,7 @@ TmpInstruction *tmp = new TmpInstruction(mOp.getVRegValue()); //Get machine code for this instruction - MachineCodeForInstruction & tempVec = MachineCodeForInstruction::get((Instruction*) mOp.getVRegValue()); + MachineCodeForInstruction & tempVec = MachineCodeForInstruction::get(defaultInst); tempVec.addTemp((Value*) tmp); //Create new machine instr and put in MBB @@ -1554,7 +1580,7 @@ lastPhi = new TmpInstruction(I->second); //Get machine code for this instruction - MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get((Instruction*) V->first); + MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get(defaultInst); tempMvec.addTemp((Value*) lastPhi); MachineInstr *saveValue = BuildMI(*machineBB, machineBB->begin(), V9::PHI, 3).addReg(kernelValue[V->first]).addReg(I->second).addRegDef(lastPhi); @@ -1565,7 +1591,7 @@ Instruction *tmp = new TmpInstruction(I->second); //Get machine code for this instruction - MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get((Instruction*) V->first); + MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get(defaultInst); tempMvec.addTemp((Value*) tmp); @@ -1612,6 +1638,7 @@ //Start with the kernel and for each phi insert a copy for the phi def and for each arg for(MachineBasicBlock::iterator I = kernelBB->begin(), E = kernelBB->end(); I != E; ++I) { + DEBUG(std::cerr << "Looking at Instr: " << *I << "\n"); //Get op code and check if its a phi if(I->getOpcode() == V9::PHI) { @@ -1659,34 +1686,24 @@ } - else { - //We found an instruction that we can add to its mcfi - if(addToMCFI.size() > 0) { - for(unsigned i = 0; i < I->getNumOperands(); ++i) { - const MachineOperand &mOp = I->getOperand(i); - if(mOp.getType() == MachineOperand::MO_VirtualRegister) { - if(!isa(mOp.getVRegValue()) && !isa(mOp.getVRegValue())) { - //Get machine code for this instruction - MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get((Instruction*) mOp.getVRegValue()); - for(unsigned x = 0; x < addToMCFI.size(); ++x) { - tempMvec.addTemp(addToMCFI[x]); - } - addToMCFI.clear(); - break; - } - } - } - } - } } - //for(std::vector >::reverse_iterator I = newORs.rbegin(), IE = newORs.rend(); I != IE; ++I) - //BuildMI(*kernelBB, kernelBB->begin(), V9::ORr, 3).addReg(I->first).addImm(0).addRegDef(I->second); + //Add TmpInstructions to some MCFI + if(addToMCFI.size() > 0) { + MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get(defaultInst); + for(unsigned x = 0; x < addToMCFI.size(); ++x) { + tempMvec.addTemp(addToMCFI[x]); + } + addToMCFI.clear(); + } + //Remove phis from epilogue for(std::vector::iterator MB = epilogues.begin(), ME = epilogues.end(); MB != ME; ++MB) { for(MachineBasicBlock::iterator I = (*MB)->begin(), E = (*MB)->end(); I != E; ++I) { + + DEBUG(std::cerr << "Looking at Instr: " << *I << "\n"); //Get op code and check if its a phi if(I->getOpcode() == V9::PHI) { Instruction *tmp = 0; @@ -1730,29 +1747,19 @@ } } - else { - //We found an instruction that we can add to its mcfi - if(addToMCFI.size() > 0) { - for(unsigned i = 0; i < I->getNumOperands(); ++i) { - const MachineOperand &mOp = I->getOperand(i); - if(mOp.getType() == MachineOperand::MO_VirtualRegister) { - - if(!isa(mOp.getVRegValue()) && !isa(mOp.getVRegValue())) { - //Get machine code for this instruction - MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get((Instruction*) mOp.getVRegValue()); - for(unsigned x = 0; x < addToMCFI.size(); ++x) { - tempMvec.addTemp(addToMCFI[x]); - } - addToMCFI.clear(); - break; - } - } - } - } - } + } } + + if(addToMCFI.size() > 0) { + MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get(defaultInst); + for(unsigned x = 0; x < addToMCFI.size(); ++x) { + tempMvec.addTemp(addToMCFI[x]); + } + addToMCFI.clear(); + } + //Delete the phis for(std::vector >::iterator I = worklist.begin(), E = worklist.end(); I != E; ++I) { @@ -1795,6 +1802,9 @@ //find the value in the map if (const Value* srcI = mOp.getVRegValue()) { + if(isa(srcI) || isa(srcI)) + continue; + //Before we declare this Value* one that we should save //make sure its def is not of the same stage as this instruction //because it will be consumed before its used @@ -1803,28 +1813,15 @@ //Should we save this value? bool save = true; - //Get Machine code for this instruction, and loop backwards over the array - //to find the def - MachineCodeForInstruction & tempMvec = MachineCodeForInstruction::get(defInst); - for (int j = tempMvec.size()-1; j >= 0; j--) { - MachineInstr *temp = tempMvec[j]; - - //Loop over instructions - for(unsigned opNum = 0; opNum < temp->getNumOperands(); ++opNum) { - MachineOperand &mDefOp = temp->getOperand(opNum); - - if (mDefOp.getType() == MachineOperand::MO_VirtualRegister && mDefOp.isDef()) { - const Value* defVReg = mDefOp.getVRegValue(); - if(defVReg == srcI) { - //Check if instruction has been seen already and is of same stage - if(lastInstrs.count(temp)) { - if(lastInstrs[temp] == I->second) - save = false; - } - } - } - } + //Assert if not in the def map + assert(defMap.count(srcI) && "No entry for this Value* definition in our map"); + MachineInstr *defInstr = defMap[srcI]; + + if(lastInstrs.count(defInstr)) { + if(lastInstrs[defInstr] == I->second) + save = false; } + if(save) valuesToSave[srcI] = std::make_pair(I->first, i); } Index: llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h diff -u llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h:1.17 llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h:1.18 --- llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h:1.17 Fri Oct 29 19:39:07 2004 +++ llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h Tue Nov 2 15:04:56 2004 @@ -39,6 +39,12 @@ class ModuloSchedulingPass : public FunctionPass { const TargetMachine ⌖ + //Map to hold Value* defs + std::map defMap; + + //LLVM Instruction we know we can add TmpInstructions to its MCFI + Instruction *defaultInst; + //Map that holds node to node attribute information std::map nodeToAttributesMap; From criswell at cs.uiuc.edu Tue Nov 2 15:48:54 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Tue, 2 Nov 2004 15:48:54 -0600 (CST) Subject: [llvm-commits] CVS: poolalloc/test/TEST.cputrack.Makefile Message-ID: <200411022148.PAA27146@kain.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.cputrack.Makefile updated: 1.3 -> 1.4 --- Log message: Add other miscellaneous events. By default, L1 data cache reads and read misses will be measured. --- Diffs of the changes: (+32 -5) Index: poolalloc/test/TEST.cputrack.Makefile diff -u poolalloc/test/TEST.cputrack.Makefile:1.3 poolalloc/test/TEST.cputrack.Makefile:1.4 --- poolalloc/test/TEST.cputrack.Makefile:1.3 Mon Nov 1 20:55:57 2004 +++ poolalloc/test/TEST.cputrack.Makefile Tue Nov 2 15:48:44 2004 @@ -9,7 +9,34 @@ PROGDIR := $(shell cd $(LLVM_OBJ_ROOT)/projects/llvm-test; pwd)/ RELDIR := $(subst $(PROGDIR),,$(CURDIR)) -CPUTRACK := cputrack -T 500 -c pic0=EC_rd_miss,pic1=DC_rd_miss + +# +# Solaris cputrack command that will sample the counters every 500 ticks. +# All programs must complete in under 500 ticks (500 seconds by default), +# and the counters must not wrap around +# +CPUTRACK := cputrack -T 500 + +# +# Events for the Ultrasparc IIIi processor. +# +# EVENTS_DC_RD: +# Read accesses and misses on the L1 Data Cache. +# +# EVENTS_DC_WR: +# Write accesses and misses on the L1 Data Cache. This probably isn't as +# valuable as it sounds because the cache is write through, non allocate. +# So, as I understand it, the L2 and Write Caches are where the write action +# is. +# +# EVENTS_EC_MISS: +# Read misses and overall misses for the L2 Cache (aka the Embedded Cache). +# +EVENTS_DC_RD := -c pic0=DC_rd,pic1=DC_rd_miss +EVENTS_DC_WR := -c pic0=DC_wr,pic1=DC_wr_miss +EVENTS_EC_MISS := -c pic0=EC_rd_miss,pic1=EC_misses +EVENTS_TLB := -c pic0=EC_rd_miss,pic1=DTLB_miss +EVENTS_WC := -c pic0=Cycle_cnt,pic1=WC_miss # # Once the results are generated, create files containing each individiual @@ -24,9 +51,9 @@ @echo "=========================================" @echo "Running '$(TEST)' test on '$(TESTNAME)' program" ifeq ($(RUN_OPTIONS),) - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) -o $@ $< + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@ $< else - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) -o $@ $< $(RUN_OPTIONS) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@ $< $(RUN_OPTIONS) endif # @@ -37,9 +64,9 @@ @echo "=========================================" @echo "Running '$(TEST)' test on '$(TESTNAME)' program" ifeq ($(RUN_OPTIONS),) - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) -o $@ $< + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@ $< else - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) -o $@ $< $(RUN_OPTIONS) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@ $< $(RUN_OPTIONS) endif $(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \ From lattner at cs.uiuc.edu Tue Nov 2 16:18:33 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Tue, 2 Nov 2004 16:18:33 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/TargetData.cpp Message-ID: <200411022218.iA2MIXqu009635@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Target: TargetData.cpp updated: 1.52 -> 1.53 --- Log message: Fix this function to not say that longs have 8-byte alignment on X86/PPC. This method is really a gross hack, but at least we can make it work on the targets we support right now. This bug fix stops a crash in a testcase reduced from 176.gcc --- Diffs of the changes: (+1 -1) Index: llvm/lib/Target/TargetData.cpp diff -u llvm/lib/Target/TargetData.cpp:1.52 llvm/lib/Target/TargetData.cpp:1.53 --- llvm/lib/Target/TargetData.cpp:1.52 Wed Sep 1 17:55:35 2004 +++ llvm/lib/Target/TargetData.cpp Tue Nov 2 16:18:18 2004 @@ -107,7 +107,7 @@ PointerAlignment = PointerSize; DoubleAlignment = PointerSize; FloatAlignment = 4; - LongAlignment = 8; + LongAlignment = PointerSize; IntAlignment = 4; ShortAlignment = 2; ByteAlignment = 1; From alkis at cs.uiuc.edu Wed Nov 3 02:16:11 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Wed, 3 Nov 2004 02:16:11 -0600 Subject: [llvm-commits] CVS: llvm-java/include/llvm/Java/BytecodeParser.h Message-ID: <200411030816.CAA17830@zion.cs.uiuc.edu> Changes in directory llvm-java/include/llvm/Java: BytecodeParser.h updated: 1.12 -> 1.13 --- Log message: Offsets for IFNULL and IFNONNULL are signed shorts. --- Diffs of the changes: (+2 -2) Index: llvm-java/include/llvm/Java/BytecodeParser.h diff -u llvm-java/include/llvm/Java/BytecodeParser.h:1.12 llvm-java/include/llvm/Java/BytecodeParser.h:1.13 --- llvm-java/include/llvm/Java/BytecodeParser.h:1.12 Thu Oct 28 14:12:50 2004 +++ llvm-java/include/llvm/Java/BytecodeParser.h Wed Nov 3 02:15:59 2004 @@ -618,12 +618,12 @@ break; } case IFNULL: { - unsigned t = curBC + readUShort(code, i); + unsigned t = curBC + readSShort(code, i); THIS->do_ifnull(t, i + 1); break; } case IFNONNULL: { - unsigned t = curBC + readUShort(code, i); + unsigned t = curBC + readSShort(code, i); THIS->do_ifnonnull(t, i + 1); break; } From criswell at cs.uiuc.edu Wed Nov 3 07:18:15 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Wed, 3 Nov 2004 07:18:15 -0600 Subject: [llvm-commits] CVS: llvm-test/External/Makefile Message-ID: <200411031318.HAA20412@choi.cs.uiuc.edu> Changes in directory llvm-test/External: Makefile updated: 1.18 -> 1.19 --- Log message: Add FPGrowth to the list of programs to test. --- Diffs of the changes: (+5 -1) Index: llvm-test/External/Makefile diff -u llvm-test/External/Makefile:1.18 llvm-test/External/Makefile:1.19 --- llvm-test/External/Makefile:1.18 Mon Oct 25 23:51:30 2004 +++ llvm-test/External/Makefile Wed Nov 3 07:17:53 2004 @@ -8,7 +8,7 @@ # # Create the list of directories to compile # -PARALLEL_DIRS := SPEC Povray Namd +PARALLEL_DIRS := SPEC Povray Namd FPGrowth ifndef USE_POVRAY PARALLEL_DIRS := $(filter-out Povray, $(PARALLEL_DIRS)) @@ -18,6 +18,10 @@ PARALLEL_DIRS := $(filter-out Namd, $(PARALLEL_DIRS)) endif +ifndef USE_FPGROWTH +PARALLEL_DIRS := $(filter-out FPGrowth, $(PARALLEL_DIRS)) +endif + # Sparc can't handle Namd: infinite loop, cause unknown ifeq ($(ARCH),Sparc) PARALLEL_DIRS := $(filter-out Namd, $(PARALLEL_DIRS)) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/Analysis/ Message-ID: <200411031542.JAA13790@zion.cs.uiuc.edu> Changes in directory llvm/win32/Analysis: --- Log message: Directory /var/cvs/llvm/llvm/win32/Analysis added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/CodeGen/ Message-ID: <200411031542.JAA13793@zion.cs.uiuc.edu> Changes in directory llvm/win32/CodeGen: --- Log message: Directory /var/cvs/llvm/llvm/win32/CodeGen added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/Configure/ Message-ID: <200411031542.JAA13796@zion.cs.uiuc.edu> Changes in directory llvm/win32/Configure: --- Log message: Directory /var/cvs/llvm/llvm/win32/Configure added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/Fibonacci/ Message-ID: <200411031542.JAA13803@zion.cs.uiuc.edu> Changes in directory llvm/win32/Fibonacci: --- Log message: Directory /var/cvs/llvm/llvm/win32/Fibonacci added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/Debug/ Message-ID: <200411031542.JAA13799@zion.cs.uiuc.edu> Changes in directory llvm/win32/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/ExecutionEngine/ Message-ID: <200411031542.JAA13802@zion.cs.uiuc.edu> Changes in directory llvm/win32/ExecutionEngine: --- Log message: Directory /var/cvs/llvm/llvm/win32/ExecutionEngine added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/Target/ Message-ID: <200411031542.JAA13820@zion.cs.uiuc.edu> Changes in directory llvm/win32/Target: --- Log message: Directory /var/cvs/llvm/llvm/win32/Target added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/VMCore/ Message-ID: <200411031542.JAA13826@zion.cs.uiuc.edu> Changes in directory llvm/win32/VMCore: --- Log message: Directory /var/cvs/llvm/llvm/win32/VMCore added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/System/ Message-ID: <200411031542.JAA13814@zion.cs.uiuc.edu> Changes in directory llvm/win32/System: --- Log message: Directory /var/cvs/llvm/llvm/win32/System added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/TableGen/ Message-ID: <200411031542.JAA13817@zion.cs.uiuc.edu> Changes in directory llvm/win32/TableGen: --- Log message: Directory /var/cvs/llvm/llvm/win32/TableGen added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/Release/ Message-ID: <200411031542.JAA13808@zion.cs.uiuc.edu> Changes in directory llvm/win32/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/Transforms/ Message-ID: <200411031542.JAA13823@zion.cs.uiuc.edu> Changes in directory llvm/win32/Transforms: --- Log message: Directory /var/cvs/llvm/llvm/win32/Transforms added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/Support/ Message-ID: <200411031542.JAA13811@zion.cs.uiuc.edu> Changes in directory llvm/win32/Support: --- Log message: Directory /var/cvs/llvm/llvm/win32/Support added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:42:21 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:42:21 -0600 Subject: [llvm-commits] CVS: llvm/win32/x86/ Message-ID: <200411031542.JAA13829@zion.cs.uiuc.edu> Changes in directory llvm/win32/x86: --- Log message: Directory /var/cvs/llvm/llvm/win32/x86 added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:48:33 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:48:33 -0600 Subject: [llvm-commits] CVS: llvm/win32/Analysis/Debug/ Message-ID: <200411031548.JAA13968@zion.cs.uiuc.edu> Changes in directory llvm/win32/Analysis/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/Analysis/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:48:33 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:48:33 -0600 Subject: [llvm-commits] CVS: llvm/win32/Analysis/Release/ Message-ID: <200411031548.JAA13971@zion.cs.uiuc.edu> Changes in directory llvm/win32/Analysis/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/Analysis/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:50:03 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:50:03 -0600 Subject: [llvm-commits] CVS: llvm/win32/CodeGen/Debug/ Message-ID: <200411031550.JAA14071@zion.cs.uiuc.edu> Changes in directory llvm/win32/CodeGen/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/CodeGen/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:50:03 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:50:03 -0600 Subject: [llvm-commits] CVS: llvm/win32/CodeGen/Release/ Message-ID: <200411031550.JAA14074@zion.cs.uiuc.edu> Changes in directory llvm/win32/CodeGen/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/CodeGen/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:50:51 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:50:51 -0600 Subject: [llvm-commits] CVS: llvm/win32/Configure/Configure/ Message-ID: <200411031550.JAA14104@zion.cs.uiuc.edu> Changes in directory llvm/win32/Configure/Configure: --- Log message: Directory /var/cvs/llvm/llvm/win32/Configure/Configure added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:51:27 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:51:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/ExecutionEngine/Release/ Message-ID: <200411031551.JAA14124@zion.cs.uiuc.edu> Changes in directory llvm/win32/ExecutionEngine/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/ExecutionEngine/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:51:27 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:51:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/ExecutionEngine/Debug/ Message-ID: <200411031551.JAA14121@zion.cs.uiuc.edu> Changes in directory llvm/win32/ExecutionEngine/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/ExecutionEngine/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:52:20 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:52:20 -0600 Subject: [llvm-commits] CVS: llvm/win32/Fibonacci/Debug/ Message-ID: <200411031552.JAA14137@zion.cs.uiuc.edu> Changes in directory llvm/win32/Fibonacci/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/Fibonacci/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:52:20 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:52:20 -0600 Subject: [llvm-commits] CVS: llvm/win32/Fibonacci/Release/ Message-ID: <200411031552.JAA14140@zion.cs.uiuc.edu> Changes in directory llvm/win32/Fibonacci/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/Fibonacci/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:57:56 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:57:56 -0600 Subject: [llvm-commits] CVS: llvm/win32/Support/Release/ Message-ID: <200411031557.JAA14179@zion.cs.uiuc.edu> Changes in directory llvm/win32/Support/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/Support/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 09:57:56 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 09:57:56 -0600 Subject: [llvm-commits] CVS: llvm/win32/Support/Debug/ Message-ID: <200411031557.JAA14176@zion.cs.uiuc.edu> Changes in directory llvm/win32/Support/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/Support/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:06:52 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:06:52 -0600 Subject: [llvm-commits] CVS: llvm/win32/System/Debug/ Message-ID: <200411031606.KAA14359@zion.cs.uiuc.edu> Changes in directory llvm/win32/System/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/System/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:06:52 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:06:52 -0600 Subject: [llvm-commits] CVS: llvm/win32/System/Release/ Message-ID: <200411031606.KAA14362@zion.cs.uiuc.edu> Changes in directory llvm/win32/System/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/System/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:08:05 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:08:05 -0600 Subject: [llvm-commits] CVS: llvm/win32/TableGen/Release/ Message-ID: <200411031608.KAA14433@zion.cs.uiuc.edu> Changes in directory llvm/win32/TableGen/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/TableGen/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:08:05 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:08:05 -0600 Subject: [llvm-commits] CVS: llvm/win32/TableGen/Debug/ Message-ID: <200411031608.KAA14430@zion.cs.uiuc.edu> Changes in directory llvm/win32/TableGen/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/TableGen/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:10:26 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:10:26 -0600 Subject: [llvm-commits] CVS: llvm/win32/Target/Debug/ Message-ID: <200411031610.KAA14513@zion.cs.uiuc.edu> Changes in directory llvm/win32/Target/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/Target/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:10:26 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:10:26 -0600 Subject: [llvm-commits] CVS: llvm/win32/Target/Release/ Message-ID: <200411031610.KAA14516@zion.cs.uiuc.edu> Changes in directory llvm/win32/Target/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/Target/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:10:51 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:10:51 -0600 Subject: [llvm-commits] CVS: llvm/win32/Transforms/Debug/ Message-ID: <200411031610.KAA14529@zion.cs.uiuc.edu> Changes in directory llvm/win32/Transforms/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/Transforms/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:10:51 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:10:51 -0600 Subject: [llvm-commits] CVS: llvm/win32/Transforms/Release/ Message-ID: <200411031610.KAA14532@zion.cs.uiuc.edu> Changes in directory llvm/win32/Transforms/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/Transforms/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:11:18 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:11:18 -0600 Subject: [llvm-commits] CVS: llvm/win32/VMCore/Release/ Message-ID: <200411031611.KAA14550@zion.cs.uiuc.edu> Changes in directory llvm/win32/VMCore/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/VMCore/Release added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:11:18 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:11:18 -0600 Subject: [llvm-commits] CVS: llvm/win32/VMCore/Debug/ Message-ID: <200411031611.KAA14547@zion.cs.uiuc.edu> Changes in directory llvm/win32/VMCore/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/VMCore/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:12:12 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:12:12 -0600 Subject: [llvm-commits] CVS: llvm/win32/x86/Debug/ Message-ID: <200411031612.KAA14564@zion.cs.uiuc.edu> Changes in directory llvm/win32/x86/Debug: --- Log message: Directory /var/cvs/llvm/llvm/win32/x86/Debug added to the repository --- Diffs of the changes: (+0 -0) From llvm at cs.uiuc.edu Wed Nov 3 10:12:12 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Wed, 3 Nov 2004 10:12:12 -0600 Subject: [llvm-commits] CVS: llvm/win32/x86/Release/ Message-ID: <200411031612.KAA14567@zion.cs.uiuc.edu> Changes in directory llvm/win32/x86/Release: --- Log message: Directory /var/cvs/llvm/llvm/win32/x86/Release added to the repository --- Diffs of the changes: (+0 -0) From reid at x10sys.com Wed Nov 3 10:13:26 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:26 -0600 Subject: [llvm-commits] CVS: llvm/win32/VMCore/VMCore.vcproj Message-ID: <200411031613.KAA14663@zion.cs.uiuc.edu> Changes in directory llvm/win32/VMCore: VMCore.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+189 -0) Index: llvm/win32/VMCore/VMCore.vcproj diff -c /dev/null llvm/win32/VMCore/VMCore.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/VMCore/VMCore.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,189 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/ExecutionEngine/ExecutionEngine.vcproj Message-ID: <200411031613.KAA14669@zion.cs.uiuc.edu> Changes in directory llvm/win32/ExecutionEngine: ExecutionEngine.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+167 -0) Index: llvm/win32/ExecutionEngine/ExecutionEngine.vcproj diff -c /dev/null llvm/win32/ExecutionEngine/ExecutionEngine.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/ExecutionEngine/ExecutionEngine.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,167 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/Fibonacci/Fibonacci.vcproj Message-ID: <200411031613.KAA14671@zion.cs.uiuc.edu> Changes in directory llvm/win32/Fibonacci: Fibonacci.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+142 -0) Index: llvm/win32/Fibonacci/Fibonacci.vcproj diff -c /dev/null llvm/win32/Fibonacci/Fibonacci.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/Fibonacci/Fibonacci.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,142 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/Transforms/Transforms.vcproj Message-ID: <200411031613.KAA14680@zion.cs.uiuc.edu> Changes in directory llvm/win32/Transforms: Transforms.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+397 -0) Index: llvm/win32/Transforms/Transforms.vcproj diff -c /dev/null llvm/win32/Transforms/Transforms.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/Transforms/Transforms.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,397 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/CodeGen/CodeGen.vcproj Message-ID: <200411031613.KAA14688@zion.cs.uiuc.edu> Changes in directory llvm/win32/CodeGen: CodeGen.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+189 -0) Index: llvm/win32/CodeGen/CodeGen.vcproj diff -c /dev/null llvm/win32/CodeGen/CodeGen.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/CodeGen/CodeGen.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,189 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:26 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:26 -0600 Subject: [llvm-commits] CVS: llvm/win32/Support/Support.vcproj Message-ID: <200411031613.KAA14666@zion.cs.uiuc.edu> Changes in directory llvm/win32/Support: Support.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+190 -0) Index: llvm/win32/Support/Support.vcproj diff -c /dev/null llvm/win32/Support/Support.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/Support/Support.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,190 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/Target/Target.vcproj Message-ID: <200411031613.KAA14670@zion.cs.uiuc.edu> Changes in directory llvm/win32/Target: Target.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+138 -0) Index: llvm/win32/Target/Target.vcproj diff -c /dev/null llvm/win32/Target/Target.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/Target/Target.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,138 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/x86/x86.vcproj Message-ID: <200411031613.KAA14687@zion.cs.uiuc.edu> Changes in directory llvm/win32/x86: x86.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+180 -0) Index: llvm/win32/x86/x86.vcproj diff -c /dev/null llvm/win32/x86/x86.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/x86/x86.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,180 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:14:50 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:14:50 -0600 Subject: [llvm-commits] CVS: llvm/win32/README.txt llvm.sln llvm.suo unistd.h Message-ID: <200411031614.KAA14738@zion.cs.uiuc.edu> Changes in directory llvm/win32: README.txt added (r1.1) llvm.sln added (r1.1) llvm.suo added (r1.1) unistd.h added (r1.1) --- Log message: Top level files for building natively on win32 --- Diffs of the changes: (+183 -0) Index: llvm/win32/README.txt diff -c /dev/null llvm/win32/README.txt:1.1 *** /dev/null Wed Nov 3 10:14:50 2004 --- llvm/win32/README.txt Wed Nov 3 10:14:40 2004 *************** *** 0 **** --- 1,48 ---- + Directory structure + =================== + Although I have made every effort not to use absolute paths, I have only tested building + with my own directory structure and it looks like this: + + c:\project\llvm ; Main project directory + c:\project\llvm\win32 ; win32 project + c:\project\llvm\win32\tools ; flex, bison and sed live here + c:\project\llvm\win32\share ; flex, bison and sed support files + + Requirements + ============ + + You need flex, sed and bison - I'm using the GnuWin32 versions of these tools which can be obtained from + + http://gnuwin32.sourceforge.net/ + + Limitations + ============ + + At the moment only the core LLVM libraries and the tablegen executable are built. If anyone has time to + port the rest of the LLVM tools it would be great... + + Other notes + =========== + + When linking with your own application it is of the utmost importance that you use the same runtime + libraries in compiling LLVM as in your own project. Otherwise you will get a lot of errors. To change this, + just mark all the projects except the Config project (since it doesn't use the C compiler) in the + solution explorer, select properties - then go to the C/C++ options and the Code Generation sub option page. + In the Runtime Library (6th from the top) select the appropriate version. Then change the active + configuration to Release (in the top left corner of the properties window) and select the appropriate + runtime library for the release version. + + When linking with your applications, you need to force a symbol reference to bring in the x86 backend. + Open the properties for your main project and select the Linker options - under the Input options there + is a Force Symbol References field where you need to enter _X86TargetMachineModule. If anyone has a better + suggestion for how to trick the linker into always pulling in these objects, I'd be grateful... + + Contact Information + =================== + + please contact me at this address if you have any questions: + + morten at hue.no + + + -- Morten Ofstad 2.11.2004 Index: llvm/win32/llvm.sln diff -c /dev/null llvm/win32/llvm.sln:1.1 *** /dev/null Wed Nov 3 10:14:50 2004 --- llvm/win32/llvm.sln Wed Nov 3 10:14:40 2004 *************** *** 0 **** --- 1,134 ---- + Microsoft Visual Studio Solution File, Format Version 8.00 + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Support", "Support\Support.vcproj", "{28AA9146-3482-4F41-9CC6-407B1D258508}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TableGen", "TableGen\TableGen.vcproj", "{339C2249-26B6-4172-B484-85653029AF57}" + ProjectSection(ProjectDependencies) = postProject + {28AA9146-3482-4F41-9CC6-407B1D258508} = {28AA9146-3482-4F41-9CC6-407B1D258508} + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} = {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Fibonacci", "Fibonacci\Fibonacci.vcproj", "{48FB551D-E37E-42EC-BC97-FF7219774867}" + ProjectSection(ProjectDependencies) = postProject + {0622E827-8464-489D-8B1C-B0B496F35C08} = {0622E827-8464-489D-8B1C-B0B496F35C08} + {28AA9146-3482-4F41-9CC6-407B1D258508} = {28AA9146-3482-4F41-9CC6-407B1D258508} + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4} = {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4} + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} = {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} + {C59374C1-9FC0-4147-B836-327DFDC52D99} = {C59374C1-9FC0-4147-B836-327DFDC52D99} + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB} = {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB} + {76295AE8-A083-460E-9F80-6F2B8923264A} = {76295AE8-A083-460E-9F80-6F2B8923264A} + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} = {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} + {144EEBF6-8C9B-4473-B715-2C821666AF6C} = {144EEBF6-8C9B-4473-B715-2C821666AF6C} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExecutionEngine", "ExecutionEngine\ExecutionEngine.vcproj", "{76295AE8-A083-460E-9F80-6F2B8923264A}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VMCore", "VMCore\VMCore.vcproj", "{45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Target", "Target\Target.vcproj", "{059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + {144EEBF6-8C9B-4473-B715-2C821666AF6C} = {144EEBF6-8C9B-4473-B715-2C821666AF6C} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CodeGen", "CodeGen\CodeGen.vcproj", "{08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System", "System\System.vcproj", "{0F8407F3-FA23-4CF1-83A9-DCBE0B361489}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Analysis", "Analysis\Analysis.vcproj", "{0622E827-8464-489D-8B1C-B0B496F35C08}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x86", "x86\x86.vcproj", "{144EEBF6-8C9B-4473-B715-2C821666AF6C}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + {339C2249-26B6-4172-B484-85653029AF57} = {339C2249-26B6-4172-B484-85653029AF57} + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} = {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} + {C59374C1-9FC0-4147-B836-327DFDC52D99} = {C59374C1-9FC0-4147-B836-327DFDC52D99} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Transforms", "Transforms\Transforms.vcproj", "{C59374C1-9FC0-4147-B836-327DFDC52D99}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Configure", "Configure\Configure.vcproj", "{19514E48-456C-4B9D-8637-F2285476461E}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection + EndProject + Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {28AA9146-3482-4F41-9CC6-407B1D258508}.Debug.ActiveCfg = Debug|Win32 + {28AA9146-3482-4F41-9CC6-407B1D258508}.Debug.Build.0 = Debug|Win32 + {28AA9146-3482-4F41-9CC6-407B1D258508}.Release.ActiveCfg = Release|Win32 + {28AA9146-3482-4F41-9CC6-407B1D258508}.Release.Build.0 = Release|Win32 + {339C2249-26B6-4172-B484-85653029AF57}.Debug.ActiveCfg = Debug|Win32 + {339C2249-26B6-4172-B484-85653029AF57}.Debug.Build.0 = Debug|Win32 + {339C2249-26B6-4172-B484-85653029AF57}.Release.ActiveCfg = Release|Win32 + {339C2249-26B6-4172-B484-85653029AF57}.Release.Build.0 = Release|Win32 + {48FB551D-E37E-42EC-BC97-FF7219774867}.Debug.ActiveCfg = Debug|Win32 + {48FB551D-E37E-42EC-BC97-FF7219774867}.Debug.Build.0 = Debug|Win32 + {48FB551D-E37E-42EC-BC97-FF7219774867}.Release.ActiveCfg = Release|Win32 + {48FB551D-E37E-42EC-BC97-FF7219774867}.Release.Build.0 = Release|Win32 + {76295AE8-A083-460E-9F80-6F2B8923264A}.Debug.ActiveCfg = Debug|Win32 + {76295AE8-A083-460E-9F80-6F2B8923264A}.Debug.Build.0 = Debug|Win32 + {76295AE8-A083-460E-9F80-6F2B8923264A}.Release.ActiveCfg = Release|Win32 + {76295AE8-A083-460E-9F80-6F2B8923264A}.Release.Build.0 = Release|Win32 + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Debug.ActiveCfg = Debug|Win32 + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Debug.Build.0 = Debug|Win32 + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Release.ActiveCfg = Release|Win32 + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Release.Build.0 = Release|Win32 + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Debug.ActiveCfg = Debug|Win32 + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Debug.Build.0 = Debug|Win32 + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Release.ActiveCfg = Release|Win32 + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Release.Build.0 = Release|Win32 + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Debug.ActiveCfg = Debug|Win32 + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Debug.Build.0 = Debug|Win32 + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Release.ActiveCfg = Release|Win32 + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Release.Build.0 = Release|Win32 + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Debug.ActiveCfg = Debug|Win32 + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Debug.Build.0 = Debug|Win32 + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Release.ActiveCfg = Release|Win32 + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Release.Build.0 = Release|Win32 + {0622E827-8464-489D-8B1C-B0B496F35C08}.Debug.ActiveCfg = Debug|Win32 + {0622E827-8464-489D-8B1C-B0B496F35C08}.Debug.Build.0 = Debug|Win32 + {0622E827-8464-489D-8B1C-B0B496F35C08}.Release.ActiveCfg = Release|Win32 + {0622E827-8464-489D-8B1C-B0B496F35C08}.Release.Build.0 = Release|Win32 + {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Debug.ActiveCfg = Debug|Win32 + {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Debug.Build.0 = Debug|Win32 + {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Release.ActiveCfg = Release|Win32 + {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Release.Build.0 = Release|Win32 + {C59374C1-9FC0-4147-B836-327DFDC52D99}.Debug.ActiveCfg = Debug|Win32 + {C59374C1-9FC0-4147-B836-327DFDC52D99}.Debug.Build.0 = Debug|Win32 + {C59374C1-9FC0-4147-B836-327DFDC52D99}.Release.ActiveCfg = Release|Win32 + {C59374C1-9FC0-4147-B836-327DFDC52D99}.Release.Build.0 = Release|Win32 + {19514E48-456C-4B9D-8637-F2285476461E}.Debug.ActiveCfg = Configure|Win32 + {19514E48-456C-4B9D-8637-F2285476461E}.Debug.Build.0 = Configure|Win32 + {19514E48-456C-4B9D-8637-F2285476461E}.Release.ActiveCfg = Configure|Win32 + {19514E48-456C-4B9D-8637-F2285476461E}.Release.Build.0 = Configure|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection + EndGlobal Index: llvm/win32/llvm.suo Index: llvm/win32/unistd.h diff -c /dev/null llvm/win32/unistd.h:1.1 *** /dev/null Wed Nov 3 10:14:50 2004 --- llvm/win32/unistd.h Wed Nov 3 10:14:40 2004 *************** *** 0 **** --- 1 ---- + // This file has to be here because it's #included from the auto generated FileLexer.cpp \ No newline at end of file From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/TableGen/TableGen.vcproj Message-ID: <200411031613.KAA14678@zion.cs.uiuc.edu> Changes in directory llvm/win32/TableGen: TableGen.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+271 -0) Index: llvm/win32/TableGen/TableGen.vcproj diff -c /dev/null llvm/win32/TableGen/TableGen.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/TableGen/TableGen.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,271 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/Analysis/Analysis.vcproj Message-ID: <200411031613.KAA14693@zion.cs.uiuc.edu> Changes in directory llvm/win32/Analysis: Analysis.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+174 -0) Index: llvm/win32/Analysis/Analysis.vcproj diff -c /dev/null llvm/win32/Analysis/Analysis.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/Analysis/Analysis.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,174 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/System/System.vcproj Message-ID: <200411031613.KAA14679@zion.cs.uiuc.edu> Changes in directory llvm/win32/System: System.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+285 -0) Index: llvm/win32/System/System.vcproj diff -c /dev/null llvm/win32/System/System.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/System/System.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,285 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From reid at x10sys.com Wed Nov 3 10:13:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Nov 2004 10:13:27 -0600 Subject: [llvm-commits] CVS: llvm/win32/Configure/Configure.vcproj Message-ID: <200411031613.KAA14696@zion.cs.uiuc.edu> Changes in directory llvm/win32/Configure: Configure.vcproj added (r1.1) --- Log message: MS Visual Studio files for building LLVM on Win32 platforms. --- Diffs of the changes: (+133 -0) Index: llvm/win32/Configure/Configure.vcproj diff -c /dev/null llvm/win32/Configure/Configure.vcproj:1.1 *** /dev/null Wed Nov 3 10:13:24 2004 --- llvm/win32/Configure/Configure.vcproj Wed Nov 3 10:13:14 2004 *************** *** 0 **** --- 1,133 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From criswell at cs.uiuc.edu Wed Nov 3 10:34:36 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Wed, 3 Nov 2004 10:34:36 -0600 (CST) Subject: [llvm-commits] CVS: poolalloc/test/TEST.cputrack.report Makefile TEST.cputrack.Makefile Message-ID: <200411031634.KAA06132@kain.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.cputrack.report added (r1.1) Makefile updated: 1.22 -> 1.23 TEST.cputrack.Makefile updated: 1.4 -> 1.5 --- Log message: Initial addition of creating report tables of the cputrack cache results. It seems a little unstable, though. --- Diffs of the changes: (+102 -6) Index: poolalloc/test/TEST.cputrack.report diff -c /dev/null poolalloc/test/TEST.cputrack.report:1.1 *** /dev/null Wed Nov 3 10:34:36 2004 --- poolalloc/test/TEST.cputrack.report Wed Nov 3 10:34:25 2004 *************** *** 0 **** --- 1,88 ---- + ##=== TEST.poolalloc.report - Report description for poolalloc -*- perl -*-===## + # + # This file defines a report to be generated for the pool allocator tests. + # + ##===----------------------------------------------------------------------===## + + # Sort by program name + $SortCol = 0; + $TrimRepeatedPrefix = 1; + + sub Ratio { + my ($Cols, $Col) = @_; + if ($Cols->[$Col-1] ne "*" and $Cols->[$Col-4] ne "*" and + $Cols->[$Col-1] != "0") { + return sprintf "%1.3f", $Cols->[$Col-4]/$Cols->[$Col-1]; + } else { + return "n/a"; + } + } + + sub Sum { + my ($Cols, $Col) = @_; + if ($Cols->[$Col-1] ne "*" and $Cols->[$Col-2] ne "*") { + return sprintf "%1.3f", $Cols->[$Col-2]+$Cols->[$Col-1]; + } else { + return "n/a"; + } + } + + + sub FormatTime { + my $Time = shift; + if ($Time =~ m/([0-9]+)[m:]([0-9.]+)/) { + $Time = sprintf("%7.3f", $1*60.0+$2); + } + return $Time; + } + + @LatexColumns = (2, 3, 4, 5, 6, 7); + + my $OLDEN = 'MultiSource/Benchmarks/Olden'; + my $FREEBENCH = 'MultiSource/Benchmarks/FreeBench'; + my $PTRDIST = 'MultiSource/Benchmarks/Ptrdist'; + + @LatexRowMapOrder = ( + "$OLDEN/bh/bh" => 'bh', + "$OLDEN/bisort/bisort" => 'bisort', + "$OLDEN/em3d/em3d" => 'em3d', + "$OLDEN/health/health" => 'health', + "$OLDEN/mst/mst" => 'mst', + "$OLDEN/perimeter/perimeter" => 'perimeter', + "$OLDEN/power/power" => 'power', + "$OLDEN/treeadd/treeadd" => 'treeadd', + "$OLDEN/tsp/tsp" => 'tsp', + "$OLDEN/voronoi/voronoi" => 'voronoi', + '-' => '-', + "$FREEBENCH/analyzer/analyzer" => 'analyzer', + # "$FREEBENCH/distray/distray" => 'distray', + # "$FREEBENCH/fourinarow/fourinarow" => 'fourinarow', + # "$FREEBENCH/mason/mason" => 'mason', + "$FREEBENCH/neural/neural" => 'neural', + "$FREEBENCH/pcompress2/pcompress2" => 'pcompress2', + "$FREEBENCH/pifft/pifft" => 'pifft', + '-' => '-', + "$PTRDIST/anagram/anagram" => 'anagram', + "$PTRDIST/bc/bc" => 'bc', + "$PTRDIST/ft/ft" => 'ft', + "$PTRDIST/ks/ks" => 'ks', + "$PTRDIST/yacr2/yacr2" => 'yacr2', + ); + + + # These are the columns for the report. The first entry is the header for the + # column, the second is the regex to use to match the value. Empty list create + # seperators, and closures may be put in for custom processing. + ( + # Name + ["Name:" , '\'([^\']+)\' Program'], + [], + # Times + ["NormalL1DataRead", 'CBE-L1-Data-Reads: ([0-9]+)'], + ["NormalL1DataMiss", 'CBE-L1-Data-Misses: ([0-9]+)'], + + ["PoolAllocL1DataRead", 'CBE-PA-L1-Data-Reads: ([0-9]+)'], + ["PoolAllocL1DataMiss", 'CBE-PA-L1-Data-Misses: ([0-9]+)'], + [] + ); + Index: poolalloc/test/Makefile diff -u poolalloc/test/Makefile:1.22 poolalloc/test/Makefile:1.23 --- poolalloc/test/Makefile:1.22 Tue Nov 2 13:21:48 2004 +++ poolalloc/test/Makefile Wed Nov 3 10:34:25 2004 @@ -163,6 +163,6 @@ cputrack:: (cd $(LLVM_OBJ_ROOT)/projects/llvm-test/$(SUBDIR); \ PROJECT_DIR=$(BUILD_OBJ_ROOT) $(MAKE) -j1 TEST=cputrack \ - test) + report) @printf "\a"; sleep 1; printf "\a"; sleep 1; printf "\a" Index: poolalloc/test/TEST.cputrack.Makefile diff -u poolalloc/test/TEST.cputrack.Makefile:1.4 poolalloc/test/TEST.cputrack.Makefile:1.5 --- poolalloc/test/TEST.cputrack.Makefile:1.4 Tue Nov 2 15:48:44 2004 +++ poolalloc/test/TEST.cputrack.Makefile Wed Nov 3 10:34:25 2004 @@ -51,10 +51,12 @@ @echo "=========================================" @echo "Running '$(TEST)' test on '$(TESTNAME)' program" ifeq ($(RUN_OPTIONS),) - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@ $< + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< else - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@ $< $(RUN_OPTIONS) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< $(RUN_OPTIONS) endif + $(VERB) cat $@.dcrd | tail -1 | awk '{print $$4}' > $@.dcrd.total + $(VERB) cat $@.dcrd | tail -1 | awk '{print $$5}' > $@.dcrd.misses # # Generate events for CBE @@ -64,14 +66,20 @@ @echo "=========================================" @echo "Running '$(TEST)' test on '$(TESTNAME)' program" ifeq ($(RUN_OPTIONS),) - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@ $< + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< else - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@ $< $(RUN_OPTIONS) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< $(RUN_OPTIONS) endif + $(VERB) cat $@.dcrd | tail -1 | awk '{print $$4}' > $@.dcrd.total + $(VERB) cat $@.dcrd | tail -1 | awk '{print $$5}' > $@.dcrd.misses $(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \ Output/%.$(TEST).report.txt: Output/test.$(TEST).pa.% Output/test.$(TEST).% - touch $@ + @printf "CBE-PA-L1-Data-Reads: %d\n" `cat Output/test.$(TEST).pa.$*.dcrd.total` > $@ + @printf "CBE-PA-L1-Data-Misses: %d\n" `cat Output/test.$(TEST).pa.$*.dcrd.misses` >> $@ + @printf "CBE-L1-Data-Reads: %d\n" `cat Output/test.$(TEST).$*.dcrd.total` >> $@ + @printf "CBE-L1-Data-Misses: %d\n" `cat Output/test.$(TEST).$*.dcrd.misses` >> $@ + @touch $@ $(PROGRAMS_TO_TEST:%=test.$(TEST).%): \ test.$(TEST).%: Output/%.$(TEST).report.txt From gaeke at cs.uiuc.edu Wed Nov 3 11:11:33 2004 From: gaeke at cs.uiuc.edu (Brian Gaeke) Date: Wed, 3 Nov 2004 11:11:33 -0600 Subject: [llvm-commits] CVS: llvm/test/Makefile Message-ID: <200411031711.LAA15769@zion.cs.uiuc.edu> Changes in directory llvm/test: Makefile updated: 1.56 -> 1.57 --- Log message: CONFIGURATION isn't spelled Configuration, it's spelled BuildMode. Due to qmtest's or llvm.py's lousy error checking, this single error causes qmtest to fork-bomb the machine, filling the process table with python processes that do nothing. Clearly, better error checking is needed. --- Diffs of the changes: (+1 -1) Index: llvm/test/Makefile diff -u llvm/test/Makefile:1.56 llvm/test/Makefile:1.57 --- llvm/test/Makefile:1.56 Sat Oct 30 04:19:36 2004 +++ llvm/test/Makefile Wed Nov 3 11:11:23 2004 @@ -44,7 +44,7 @@ # CONTEXT= -c "srcroot=$(LLVM_SRC_ROOT)" \ -c "buildroot=$(LLVM_OBJ_ROOT)" \ - -c "buildtype=$(Configuration)" \ + -c "buildtype=$(BuildMode)" \ -c "tmpdir=$(LLVM_OBJ_ROOT)/test/tmp" \ -c "coresize=0" \ -c "cc=$(CC)" \ From lattner at cs.uiuc.edu Wed Nov 3 11:15:59 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 11:15:59 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Support/DataTypes.h.in Message-ID: <200411031715.iA3HFxaC015640@apoc.cs.uiuc.edu> Changes in directory llvm/include/llvm/Support: DataTypes.h.in updated: 1.15 -> 1.16 --- Log message: defining __STDC_LIMIT_MACROS on the command line is not really necessary for Visual Studio, and is a bit of a pain when you want to include the LLVM headers from your own project, so I moved the check a bit down into the Unix case to avoid the hassle... Here is a patch Patch by Morten Ofstad! --- Diffs of the changes: (+6 -5) Index: llvm/include/llvm/Support/DataTypes.h.in diff -u llvm/include/llvm/Support/DataTypes.h.in:1.15 llvm/include/llvm/Support/DataTypes.h.in:1.16 --- llvm/include/llvm/Support/DataTypes.h.in:1.15 Tue Oct 26 11:15:18 2004 +++ llvm/include/llvm/Support/DataTypes.h.in Wed Nov 3 11:15:45 2004 @@ -23,6 +23,12 @@ #include "llvm/Config/config.h" +#undef HAVE_SYS_TYPES_H +#undef HAVE_INTTYPES_H +#undef HAVE_STDINT_H + +#ifndef _MSC_VER + // Note that this header's correct operation depends on __STDC_LIMIT_MACROS // being defined. We would define it here, but in order to prevent Bad Things // happening when system headers or C++ STL headers include stdint.h before @@ -31,11 +37,6 @@ # error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h" #endif -#undef HAVE_SYS_TYPES_H -#undef HAVE_INTTYPES_H -#undef HAVE_STDINT_H - -#ifndef _MSC_VER // Note that includes , if this is a C99 system. #ifdef HAVE_SYS_TYPES_H #include From reid at x10sys.com Wed Nov 3 11:19:45 2004 From: reid at x10sys.com (Reid Spencer) Date: Wed, 03 Nov 2004 09:19:45 -0800 Subject: [llvm-commits] CVS: llvm/test/Makefile In-Reply-To: <200411031711.LAA15769@zion.cs.uiuc.edu> References: <200411031711.LAA15769@zion.cs.uiuc.edu> Message-ID: <41891331.10306@x10sys.com> WHAAAAATTTT??? That's nuts! One more reason to get off qmtest. Reid. Brian Gaeke wrote: > Changes in directory llvm/test: > > Makefile updated: 1.56 -> 1.57 > --- > Log message: > > CONFIGURATION isn't spelled Configuration, it's spelled BuildMode. > > Due to qmtest's or llvm.py's lousy error checking, this single error > causes qmtest to fork-bomb the machine, filling the process table with > python processes that do nothing. Clearly, better error checking is > needed. > > > --- > Diffs of the changes: (+1 -1) > > Index: llvm/test/Makefile > diff -u llvm/test/Makefile:1.56 llvm/test/Makefile:1.57 > --- llvm/test/Makefile:1.56 Sat Oct 30 04:19:36 2004 > +++ llvm/test/Makefile Wed Nov 3 11:11:23 2004 > @@ -44,7 +44,7 @@ > # > CONTEXT= -c "srcroot=$(LLVM_SRC_ROOT)" \ > -c "buildroot=$(LLVM_OBJ_ROOT)" \ > - -c "buildtype=$(Configuration)" \ > + -c "buildtype=$(BuildMode)" \ > -c "tmpdir=$(LLVM_OBJ_ROOT)/test/tmp" \ > -c "coresize=0" \ > -c "cc=$(CC)" \ > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://mail.cs.uiuc.edu/mailman/listinfo/llvm-commits > From sabre at nondot.org Wed Nov 3 11:41:19 2004 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Nov 2004 11:41:19 -0600 (CST) Subject: [llvm-commits] CVS: llvm/test/Makefile In-Reply-To: <41891331.10306@x10sys.com> Message-ID: On Wed, 3 Nov 2004, Reid Spencer wrote: > WHAAAAATTTT??? That's nuts! > One more reason to get off qmtest. It's a fixable problem, probably just error checking missing in llvm.py. That said, getting off qmtest is still probably not a bad idea, but it doesn't relate much to this bug. -Chris > Brian Gaeke wrote: > > Changes in directory llvm/test: > > > > Makefile updated: 1.56 -> 1.57 > > --- > > Log message: > > > > CONFIGURATION isn't spelled Configuration, it's spelled BuildMode. > > > > Due to qmtest's or llvm.py's lousy error checking, this single error > > causes qmtest to fork-bomb the machine, filling the process table with > > python processes that do nothing. Clearly, better error checking is > > needed. > > > > > > --- > > Diffs of the changes: (+1 -1) > > > > Index: llvm/test/Makefile > > diff -u llvm/test/Makefile:1.56 llvm/test/Makefile:1.57 > > --- llvm/test/Makefile:1.56 Sat Oct 30 04:19:36 2004 > > +++ llvm/test/Makefile Wed Nov 3 11:11:23 2004 > > @@ -44,7 +44,7 @@ > > # > > CONTEXT= -c "srcroot=$(LLVM_SRC_ROOT)" \ > > -c "buildroot=$(LLVM_OBJ_ROOT)" \ > > - -c "buildtype=$(Configuration)" \ > > + -c "buildtype=$(BuildMode)" \ > > -c "tmpdir=$(LLVM_OBJ_ROOT)/test/tmp" \ > > -c "coresize=0" \ > > -c "cc=$(CC)" \ > > > > > > > > _______________________________________________ > > llvm-commits mailing list > > llvm-commits at cs.uiuc.edu > > http://mail.cs.uiuc.edu/mailman/listinfo/llvm-commits > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://mail.cs.uiuc.edu/mailman/listinfo/llvm-commits > -Chris -- http://llvm.org/ http://nondot.org/sabre/ From lattner at cs.uiuc.edu Wed Nov 3 11:25:22 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 11:25:22 -0600 Subject: [llvm-commits] CVS: llvm-test/External/FPGrowth/Makefile Message-ID: <200411031725.iA3HPMgw015925@apoc.cs.uiuc.edu> Changes in directory llvm-test/External/FPGrowth: Makefile updated: 1.1 -> 1.2 --- Log message: Rename benchmark --- Diffs of the changes: (+1 -1) Index: llvm-test/External/FPGrowth/Makefile diff -u llvm-test/External/FPGrowth/Makefile:1.1 llvm-test/External/FPGrowth/Makefile:1.2 --- llvm-test/External/FPGrowth/Makefile:1.1 Thu Oct 21 11:44:50 2004 +++ llvm-test/External/FPGrowth/Makefile Wed Nov 3 11:25:08 2004 @@ -2,7 +2,7 @@ include $(LEVEL)/Makefile.config -PROG = fpall +PROG = fpgrowth SourceDir := $(FPGROWTH_ROOT) #CFLAGS += -Wno-deprecated From criswell at cs.uiuc.edu Wed Nov 3 11:33:43 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Wed, 3 Nov 2004 11:33:43 -0600 Subject: [llvm-commits] CVS: llvm-test/External/Makefile Message-ID: <200411031733.LAA23691@choi.cs.uiuc.edu> Changes in directory llvm-test/External: Makefile updated: 1.19 -> 1.20 --- Log message: Remove FPGrowth for now. I thought it worked, but it doesn't. Time to put it back on the TODO list. --- Diffs of the changes: (+2 -0) Index: llvm-test/External/Makefile diff -u llvm-test/External/Makefile:1.19 llvm-test/External/Makefile:1.20 --- llvm-test/External/Makefile:1.19 Wed Nov 3 07:17:53 2004 +++ llvm-test/External/Makefile Wed Nov 3 11:33:29 2004 @@ -20,6 +20,8 @@ ifndef USE_FPGROWTH PARALLEL_DIRS := $(filter-out FPGrowth, $(PARALLEL_DIRS)) +else +PARALLEL_DIRS := $(filter-out FPGrowth, $(PARALLEL_DIRS)) endif # Sparc can't handle Namd: infinite loop, cause unknown From criswell at cs.uiuc.edu Wed Nov 3 11:34:25 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Wed, 3 Nov 2004 11:34:25 -0600 Subject: [llvm-commits] CVS: llvm-test/External/Makefile Message-ID: <200411031734.LAA23705@choi.cs.uiuc.edu> Changes in directory llvm-test/External: Makefile updated: 1.20 -> 1.21 --- Log message: Re-enable FPGrowth at Chris's request. --- Diffs of the changes: (+0 -2) Index: llvm-test/External/Makefile diff -u llvm-test/External/Makefile:1.20 llvm-test/External/Makefile:1.21 --- llvm-test/External/Makefile:1.20 Wed Nov 3 11:33:29 2004 +++ llvm-test/External/Makefile Wed Nov 3 11:34:12 2004 @@ -20,8 +20,6 @@ ifndef USE_FPGROWTH PARALLEL_DIRS := $(filter-out FPGrowth, $(PARALLEL_DIRS)) -else -PARALLEL_DIRS := $(filter-out FPGrowth, $(PARALLEL_DIRS)) endif # Sparc can't handle Namd: infinite loop, cause unknown From criswell at cs.uiuc.edu Wed Nov 3 11:42:22 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Wed, 3 Nov 2004 11:42:22 -0600 Subject: [llvm-commits] CVS: llvm-test/External/FPGrowth/README Message-ID: <200411031742.LAA24116@choi.cs.uiuc.edu> Changes in directory llvm-test/External/FPGrowth: README added (r1.1) --- Log message: Original email detailing what this code does. --- Diffs of the changes: (+6 -0) Index: llvm-test/External/FPGrowth/README diff -c /dev/null llvm-test/External/FPGrowth/README:1.1 *** /dev/null Wed Nov 3 11:42:20 2004 --- llvm-test/External/FPGrowth/README Wed Nov 3 11:42:10 2004 *************** *** 0 **** --- 1,6 ---- + In yesterday's compiler seminar, I found that Jiawei Han and Shengnan Cong have + this data mining program that could be useful for the paper. It is very compute + intensive and creates one large tree and then repeatedly creates a small tree, + uses it for a search, and then throws it away. That latter phase takes 96% of + the total run time. The code is in C++. + From criswell at cs.uiuc.edu Wed Nov 3 11:43:08 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Wed, 3 Nov 2004 11:43:08 -0600 Subject: [llvm-commits] CVS: llvm-test/External/FPGrowth/README Message-ID: <200411031743.LAA24131@choi.cs.uiuc.edu> Changes in directory llvm-test/External/FPGrowth: README updated: 1.1 -> 1.2 --- Log message: Yes, I'm paranoid. --- Diffs of the changes: (+1 -1) Index: llvm-test/External/FPGrowth/README diff -u llvm-test/External/FPGrowth/README:1.1 llvm-test/External/FPGrowth/README:1.2 --- llvm-test/External/FPGrowth/README:1.1 Wed Nov 3 11:42:10 2004 +++ llvm-test/External/FPGrowth/README Wed Nov 3 11:42:55 2004 @@ -1,4 +1,4 @@ -In yesterday's compiler seminar, I found that Jiawei Han and Shengnan Cong have +In yesterday's compiler seminar, I found that ------ --- and -------- ---- have this data mining program that could be useful for the paper. It is very compute intensive and creates one large tree and then repeatedly creates a small tree, uses it for a search, and then throws it away. That latter phase takes 96% of From lattner at cs.uiuc.edu Wed Nov 3 12:25:25 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 12:25:25 -0600 Subject: [llvm-commits] CVS: llvm-test/External/FPGrowth/Makefile Message-ID: <200411031825.iA3IPOIZ016455@apoc.cs.uiuc.edu> Changes in directory llvm-test/External/FPGrowth: Makefile updated: 1.2 -> 1.3 --- Log message: This is actually a C benchmark --- Diffs of the changes: (+0 -5) Index: llvm-test/External/FPGrowth/Makefile diff -u llvm-test/External/FPGrowth/Makefile:1.2 llvm-test/External/FPGrowth/Makefile:1.3 --- llvm-test/External/FPGrowth/Makefile:1.2 Wed Nov 3 11:25:08 2004 +++ llvm-test/External/FPGrowth/Makefile Wed Nov 3 12:25:10 2004 @@ -5,10 +5,5 @@ PROG = fpgrowth SourceDir := $(FPGROWTH_ROOT) -#CFLAGS += -Wno-deprecated -#CPPFLAGS += -Wno-deprecated -LIBS += -lstdc++ -LDFLAGS = -lstdc++ - RUN_OPTIONS = $(FPGROWTH_ROOT)/mushroom.dat include $(LEVEL)/MultiSource/Makefile.multisrc From lattner at cs.uiuc.edu Wed Nov 3 12:51:38 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 12:51:38 -0600 Subject: [llvm-commits] CVS: llvm/lib/Analysis/DataStructure/Local.cpp Message-ID: <200411031851.iA3Ipci4017870@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Analysis/DataStructure: Local.cpp updated: 1.116 -> 1.117 --- Log message: Don't call Constant::getNullValue when the argument could be VoidTy --- Diffs of the changes: (+3 -2) Index: llvm/lib/Analysis/DataStructure/Local.cpp diff -u llvm/lib/Analysis/DataStructure/Local.cpp:1.116 llvm/lib/Analysis/DataStructure/Local.cpp:1.117 --- llvm/lib/Analysis/DataStructure/Local.cpp:1.116 Fri Oct 29 23:22:45 2004 +++ llvm/lib/Analysis/DataStructure/Local.cpp Wed Nov 3 12:51:26 2004 @@ -209,7 +209,7 @@ /// DSNodeHandle GraphBuilder::getValueDest(Value &Val) { Value *V = &Val; - if (V == Constant::getNullValue(V->getType())) + if (isa(V) && cast(V)->isNullValue()) return 0; // Null doesn't point to anything, don't add to ScalarMap! DSNodeHandle &NH = ScalarMap[V]; @@ -528,7 +528,8 @@ return; } else if (F->getName() == "realloc") { DSNodeHandle RetNH = getValueDest(*CS.getInstruction()); - RetNH.mergeWith(getValueDest(**CS.arg_begin())); + if (CS.arg_begin() != CS.arg_end()) + RetNH.mergeWith(getValueDest(**CS.arg_begin())); if (DSNode *N = RetNH.getNode()) N->setHeapNodeMarker()->setModifiedMarker()->setReadMarker(); return; From criswell at cs.uiuc.edu Wed Nov 3 13:10:53 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Wed, 3 Nov 2004 13:10:53 -0600 (CST) Subject: [llvm-commits] CVS: poolalloc/test/TEST.cputrack.Makefile TEST.cputrack.report Message-ID: <200411031910.NAA12792@kain.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.cputrack.Makefile updated: 1.5 -> 1.6 TEST.cputrack.report updated: 1.1 -> 1.2 --- Log message: Added other metric tests, such as L2 cache misses and the Write Cache miss. Making sense of cache writes will require understanding how the Ultrasparc IIIi Write Cache plays with the other caches, which I don't completly understand at the moment. --- Diffs of the changes: (+28 -2) Index: poolalloc/test/TEST.cputrack.Makefile diff -u poolalloc/test/TEST.cputrack.Makefile:1.5 poolalloc/test/TEST.cputrack.Makefile:1.6 --- poolalloc/test/TEST.cputrack.Makefile:1.5 Wed Nov 3 10:34:25 2004 +++ poolalloc/test/TEST.cputrack.Makefile Wed Nov 3 13:10:42 2004 @@ -51,12 +51,19 @@ @echo "=========================================" @echo "Running '$(TEST)' test on '$(TESTNAME)' program" ifeq ($(RUN_OPTIONS),) - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_EC_MISS) -o $@.ec $< + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_WC) -o $@.wc $< else - $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< $(RUN_OPTIONS) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< $(RUN_OPTIONS) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_EC_MISS) -o $@.ec $< $(RUN_OPTIONS) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_WC) -o $@.wc $< $(RUN_OPTIONS) endif $(VERB) cat $@.dcrd | tail -1 | awk '{print $$4}' > $@.dcrd.total $(VERB) cat $@.dcrd | tail -1 | awk '{print $$5}' > $@.dcrd.misses + $(VERB) cat $@.ec | tail -1 | awk '{print $$4}' > $@.ec.rdmiss + $(VERB) cat $@.ec | tail -1 | awk '{print $$5}' > $@.ec.allmiss + $(VERB) cat $@.wc | tail -1 | awk '{print $$5}' > $@.wc.miss # # Generate events for CBE @@ -67,11 +74,18 @@ @echo "Running '$(TEST)' test on '$(TESTNAME)' program" ifeq ($(RUN_OPTIONS),) $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_EC_MISS) -o $@.ec $< + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_WC) -o $@.wc $< else $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_DC_RD) -o $@.dcrd $< $(RUN_OPTIONS) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_EC_MISS) -o $@.ec $< $(RUN_OPTIONS) + $(VERB) cat $(STDIN_FILENAME) | $(CPUTRACK) $(EVENTS_WC) -o $@.wc $< $(RUN_OPTIONS) endif $(VERB) cat $@.dcrd | tail -1 | awk '{print $$4}' > $@.dcrd.total $(VERB) cat $@.dcrd | tail -1 | awk '{print $$5}' > $@.dcrd.misses + $(VERB) cat $@.ec | tail -1 | awk '{print $$4}' > $@.ec.rdmiss + $(VERB) cat $@.ec | tail -1 | awk '{print $$5}' > $@.ec.allmiss + $(VERB) cat $@.wc | tail -1 | awk '{print $$5}' > $@.wc.miss $(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \ Output/%.$(TEST).report.txt: Output/test.$(TEST).pa.% Output/test.$(TEST).% @@ -79,6 +93,12 @@ @printf "CBE-PA-L1-Data-Misses: %d\n" `cat Output/test.$(TEST).pa.$*.dcrd.misses` >> $@ @printf "CBE-L1-Data-Reads: %d\n" `cat Output/test.$(TEST).$*.dcrd.total` >> $@ @printf "CBE-L1-Data-Misses: %d\n" `cat Output/test.$(TEST).$*.dcrd.misses` >> $@ + @printf "CBE-PA-L2-Data-Read-Misses: %d\n" `cat Output/test.$(TEST).pa.$*.ec.rdmiss` >> $@ + @printf "CBE-PA-L2-Data-Misses: %d\n" `cat Output/test.$(TEST).pa.$*.ec.allmiss` >> $@ + @printf "CBE-L2-Data-Read-Misses: %d\n" `cat Output/test.$(TEST).$*.ec.rdmiss` >> $@ + @printf "CBE-L2-Data-Misses: %d\n" `cat Output/test.$(TEST).$*.ec.allmiss` >> $@ + @printf "CBE-PA-WriteCache-Misses: %d\n" `cat Output/test.$(TEST).pa.$*.wc.miss` >> $@ + @printf "CBE-WriteCache-Misses: %d\n" `cat Output/test.$(TEST).$*.wc.miss` >> $@ @touch $@ $(PROGRAMS_TO_TEST:%=test.$(TEST).%): \ Index: poolalloc/test/TEST.cputrack.report diff -u poolalloc/test/TEST.cputrack.report:1.1 poolalloc/test/TEST.cputrack.report:1.2 --- poolalloc/test/TEST.cputrack.report:1.1 Wed Nov 3 10:34:25 2004 +++ poolalloc/test/TEST.cputrack.report Wed Nov 3 13:10:42 2004 @@ -80,9 +80,15 @@ # Times ["NormalL1DataRead", 'CBE-L1-Data-Reads: ([0-9]+)'], ["NormalL1DataMiss", 'CBE-L1-Data-Misses: ([0-9]+)'], + ["NormalL2DataReadMiss", 'CBE-L2-Data-Read-Misses: ([0-9]+)'], + ["NormalL2DataMiss", 'CBE-L2-Data-Misses: ([0-9]+)'], + ["NormalWriteCacheMiss", 'CBE-WriteCache-Misses: ([0-9]+)'], ["PoolAllocL1DataRead", 'CBE-PA-L1-Data-Reads: ([0-9]+)'], ["PoolAllocL1DataMiss", 'CBE-PA-L1-Data-Misses: ([0-9]+)'], + ["PoolAllocL2DataReadMiss", 'CBE-PA-L2-Data-Read-Misses: ([0-9]+)'], + ["PoolAllocL2DataMiss", 'CBE-PA-L2-Data-Misses: ([0-9]+)'], + ["PoolAllocWriteCacheMiss", 'CBE-PA-WriteCache-Misses: ([0-9]+)'], [] ); From lattner at cs.uiuc.edu Wed Nov 3 15:43:18 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 15:43:18 -0600 Subject: [llvm-commits] CVS: llvm/examples/Fibonacci/fibonacci.cpp Message-ID: <200411032143.iA3LhIkl021862@apoc.cs.uiuc.edu> Changes in directory llvm/examples/Fibonacci: fibonacci.cpp updated: 1.2 -> 1.3 --- Log message: Cleanup this example, simplifying it and making it conform to LLVM coding standards --- Diffs of the changes: (+80 -151) Index: llvm/examples/Fibonacci/fibonacci.cpp diff -u llvm/examples/Fibonacci/fibonacci.cpp:1.2 llvm/examples/Fibonacci/fibonacci.cpp:1.3 --- llvm/examples/Fibonacci/fibonacci.cpp:1.2 Sat Sep 11 15:30:11 2004 +++ llvm/examples/Fibonacci/fibonacci.cpp Wed Nov 3 15:43:03 2004 @@ -7,182 +7,111 @@ // //===----------------------------------------------------------------------===// // -// This small program provides an example of how to build quickly a small -// module with function Fibonacci and execute it with the JIT. +// This small program provides an example of how to build quickly a small module +// with function Fibonacci and execute it with the JIT. // -// This simple example shows as well 30% speed up with LLVM 1.3 -// in comparison to gcc 3.3.3 at AMD Athlon XP 1500+ . +// The goal of this snippet is to create in the memory the LLVM module +// consisting of one function as follow: // -// (Modified from HowToUseJIT.cpp and Stacker/lib/compiler/StackerCompiler.cpp) +// int fib(int x) { +// if(x<=2) return 1; +// return fib(x-1)+fib(x-2); +// } // -//===------------------------------------------------------------------------=== -// Goal: -// The goal of this snippet is to create in the memory -// the LLVM module consisting of one function as follow: -// -// int fib(int x) { -// if(x<=2) return 1; -// return fib(x-1)+fib(x-2); -// } -// -// then compile the module via JIT, then execute the `fib' +// Once we have this, we compile the module via JIT, then execute the `fib' // function and return result to a driver, i.e. to a "host program". // +//===----------------------------------------------------------------------===// -#include - -#include -#include -#include -#include -#include -#include +#include "llvm/Module.h" +#include "llvm/DerivedTypes.h" +#include "llvm/Constants.h" +#include "llvm/Instructions.h" +#include "llvm/ModuleProvider.h" +#include "llvm/Analysis/Verifier.h" #include "llvm/ExecutionEngine/ExecutionEngine.h" #include "llvm/ExecutionEngine/GenericValue.h" - - +#include using namespace llvm; -int main(int argc, char**argv) { - - int n = argc > 1 ? atol(argv[1]) : 44; - - // Create some module to put our function into it. - Module *M = new Module("test"); - - - // We are about to create the "fib" function: - Function *FibF; - - { - // first create type for the single argument of fib function: - // the type is 'int ()' - std::vector ArgT(1); - ArgT[0] = Type::IntTy; - - // now create full type of the "fib" function: - FunctionType *FibT = FunctionType::get(Type::IntTy, // type of result - ArgT, - /*not vararg*/false); - - // Now create the fib function entry and - // insert this entry into module M - // (By passing a module as the last parameter to the Function constructor, - // it automatically gets appended to the Module.) - FibF = new Function(FibT, - Function::ExternalLinkage, // maybe too much - "fib", M); - - // Add a basic block to the function... (again, it automatically inserts - // because of the last argument.) - BasicBlock *BB = new BasicBlock("EntryBlock of fib function", FibF); +static Function *CreateFibFunction(Module *M) { + // Create the fib function and insert it into module M. This function is said + // to return an int and take an int parameter. + Function *FibF = M->getOrInsertFunction("fib", Type::IntTy, Type::IntTy, 0); - // Get pointers to the constants ... - Value *One = ConstantSInt::get(Type::IntTy, 1); - Value *Two = ConstantSInt::get(Type::IntTy, 2); - - // Get pointers to the integer argument of the add1 function... - assert(FibF->abegin() != FibF->aend()); // Make sure there's an arg + // Add a basic block to the function. + BasicBlock *BB = new BasicBlock("EntryBlock", FibF); + + // Get pointers to the constants. + Value *One = ConstantSInt::get(Type::IntTy, 1); + Value *Two = ConstantSInt::get(Type::IntTy, 2); + + // Get pointer to the integer argument of the add1 function... + Argument *ArgX = FibF->abegin(); // Get the arg. + ArgX->setName("AnArg"); // Give it a nice symbolic name for fun. + + + // Create the true_block. + BasicBlock *RetBB = new BasicBlock("return", FibF); + // Create an exit block. + BasicBlock* RecurseBB = new BasicBlock("recurse", FibF); + + // Create the "if (arg < 2) goto exitbb" + Value *CondInst = BinaryOperator::createSetLE(ArgX, Two, "cond", BB); + new BranchInst(RetBB, RecurseBB, CondInst, BB); - Argument &ArgX = FibF->afront(); // Get the arg - ArgX.setName("AnArg"); // Give it a nice symbolic name for fun. + // Create: ret int 1 + new ReturnInst(One, RetBB); + + // create fib(x-1) + Value *Sub = BinaryOperator::createSub(ArgX, One, "arg", RecurseBB); + Value *CallFibX1 = new CallInst(FibF, Sub, "fibx1", RecurseBB); + + // create fib(x-2) + Sub = BinaryOperator::createSub(ArgX, Two, "arg", RecurseBB); + Value *CallFibX2 = new CallInst(FibF, Sub, "fibx2", RecurseBB); + + // fib(x-1)+fib(x-2) + Value *Sum = BinaryOperator::createAdd(CallFibX1, CallFibX2, + "addresult", RecurseBB); + + // Create the return instruction and add it to the basic block + new ReturnInst(Sum, RecurseBB); - SetCondInst* CondInst - = new SetCondInst( Instruction::SetLE, - &ArgX, Two ); + return FibF; +} - BB->getInstList().push_back(CondInst); - // Create the true_block - BasicBlock* true_bb = new BasicBlock("arg<=2"); +int main(int argc, char **argv) { + int n = argc > 1 ? atol(argv[1]) : 24; + // Create some module to put our function into it. + Module *M = new Module("test"); - // Create the return instruction and add it - // to the basic block for true case: - true_bb->getInstList().push_back(new ReturnInst(One)); - - // Create an exit block - BasicBlock* exit_bb = new BasicBlock("arg>2"); - - { - - // create fib(x-1) - CallInst* CallFibX1; - { - // Create the sub instruction... does not insert... - Instruction *Sub - = BinaryOperator::create(Instruction::Sub, &ArgX, One, - "arg"); - - exit_bb->getInstList().push_back(Sub); - - CallFibX1 = new CallInst(FibF, Sub, "fib(x-1)"); - exit_bb->getInstList().push_back(CallFibX1); - - } - - // create fib(x-2) - CallInst* CallFibX2; - { - // Create the sub instruction... does not insert... - Instruction * Sub - = BinaryOperator::create(Instruction::Sub, &ArgX, Two, - "arg"); - - exit_bb->getInstList().push_back(Sub); - CallFibX2 = new CallInst(FibF, Sub, "fib(x-2)"); - exit_bb->getInstList().push_back(CallFibX2); - - } - - // Create the add instruction... does not insert... - Instruction *Add = - BinaryOperator::create(Instruction::Add, - CallFibX1, CallFibX2, "addresult"); - - // explicitly insert it into the basic block... - exit_bb->getInstList().push_back(Add); - - // Create the return instruction and add it to the basic block - exit_bb->getInstList().push_back(new ReturnInst(Add)); - } - - // Create a branch on the SetCond - BranchInst* br_inst = - new BranchInst( true_bb, exit_bb, CondInst ); - - BB->getInstList().push_back( br_inst ); - FibF->getBasicBlockList().push_back(true_bb); - FibF->getBasicBlockList().push_back(exit_bb); - } + // We are about to create the "fib" function: + Function *FibF = CreateFibFunction(M); // Now we going to create JIT - ExistingModuleProvider* MP = new ExistingModuleProvider(M); - ExecutionEngine* EE = ExecutionEngine::create( MP, false ); - - // Call the `foo' function with argument n: - std::vector args(1); - args[0].IntVal = n; - + ExistingModuleProvider *MP = new ExistingModuleProvider(M); + ExecutionEngine *EE = ExecutionEngine::create(MP, false); - std::clog << "verifying... "; + std::cerr << "verifying... "; if (verifyModule(*M)) { - std::cerr << argv[0] - << ": assembly parsed, but does not verify as correct!\n"; + std::cerr << argv[0] << ": Error constructing function!\n"; return 1; } - else - std::clog << "OK\n"; + std::cerr << "OK\n"; + std::cerr << "We just constructed this LLVM module:\n\n---------\n" << *M; + std::cerr << "---------\nstarting fibonacci(" + << n << ") with JIT...\n"; - std::clog << "We just constructed this LLVM module:\n\n---------\n" << *M; - std::clog << "---------\nstarting fibonacci(" - << n << ") with JIT...\n" << std::flush; - - GenericValue gv = EE->runFunction(FibF, args); - - // import result of execution: - std::cout << "Result: " << gv.IntVal << std:: endl; + // Call the `foo' function with argument n: + std::vector Args(1); + args[0].IntVal = n; + GenericValue GV = EE->runFunction(FibF, Args); + // import result of execution + std::cout << "Result: " << GV.IntVal << "\n"; return 0; } From lattner at cs.uiuc.edu Wed Nov 3 15:55:28 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 15:55:28 -0600 Subject: [llvm-commits] CVS: llvm-test/GenerateReport.pl Message-ID: <200411032155.iA3LtS7G022006@apoc.cs.uiuc.edu> Changes in directory llvm-test: GenerateReport.pl updated: 1.21 -> 1.22 --- Log message: Successfully strip off paths that start with / --- Diffs of the changes: (+2 -1) Index: llvm-test/GenerateReport.pl diff -u llvm-test/GenerateReport.pl:1.21 llvm-test/GenerateReport.pl:1.22 --- llvm-test/GenerateReport.pl:1.21 Sat Jun 19 18:02:37 2004 +++ llvm-test/GenerateReport.pl Wed Nov 3 15:55:16 2004 @@ -150,7 +150,8 @@ if ($TrimRepeatedPrefix and scalar(@Values)) { OuterLoop: while (1) { # Figure out what the first path prefix is: - $Values[0]->[0] =~ m|([^/]+/).|; + $Values[0]->[0] =~ m|^([^/]*/).|; +print "PREFIX = $1\n"; last OuterLoop if (!defined($1)); # Now that we have the prefix, check to see if all of the entries in the From lattner at cs.uiuc.edu Wed Nov 3 15:57:56 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 15:57:56 -0600 Subject: [llvm-commits] CVS: llvm-test/GenerateReport.pl Message-ID: <200411032157.iA3LvuER022027@apoc.cs.uiuc.edu> Changes in directory llvm-test: GenerateReport.pl updated: 1.22 -> 1.23 --- Log message: Remvoe debugging code. :( --- Diffs of the changes: (+0 -1) Index: llvm-test/GenerateReport.pl diff -u llvm-test/GenerateReport.pl:1.22 llvm-test/GenerateReport.pl:1.23 --- llvm-test/GenerateReport.pl:1.22 Wed Nov 3 15:55:16 2004 +++ llvm-test/GenerateReport.pl Wed Nov 3 15:57:44 2004 @@ -151,7 +151,6 @@ OuterLoop: while (1) { # Figure out what the first path prefix is: $Values[0]->[0] =~ m|^([^/]*/).|; -print "PREFIX = $1\n"; last OuterLoop if (!defined($1)); # Now that we have the prefix, check to see if all of the entries in the From lattner at cs.uiuc.edu Wed Nov 3 17:56:26 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 17:56:26 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp Message-ID: <200411032356.iA3NuQ1K030819@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.78 -> 1.79 --- Log message: Do not scramble functions around in the module (moving all pool allocated ones to the end of the module), instead, preserve the program order for functions. This makes it easier to read the pool allocated program, and also speeds up some programs. For example, PtrDist/anagram went from 0% speedup to 20% speedup (!) --- Diffs of the changes: (+22 -26) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.78 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.79 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.78 Tue Nov 2 00:39:22 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Wed Nov 3 17:56:15 2004 @@ -105,35 +105,27 @@ // over the modules. Loop over only the function initially in the program, // don't traverse newly added ones. If the function needs new arguments, make // its clone. - Module::iterator LastOrigFunction = --M.end(); - for (Module::iterator I = M.begin(); ; ++I) { + std::set ClonedFunctions; + for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) if (!I->isExternal()) - if (Function *R = MakeFunctionClone(*I)) - FuncMap[I] = R; - if (I == LastOrigFunction) break; - } + if (Function *Clone = MakeFunctionClone(*I)) { + FuncMap[I] = Clone; + ClonedFunctions.insert(Clone); + } - ++LastOrigFunction; - // Now that all call targets are available, rewrite the function bodies of the // clones. - for (Module::iterator I = M.begin(); I != LastOrigFunction; ++I) - if (!I->isExternal()) { + for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) + if (!I->isExternal() && !ClonedFunctions.count(I)) { std::map::iterator FI = FuncMap.find(I); ProcessFunctionBody(*I, FI != FuncMap.end() ? *FI->second : *I); } - //Loop to replace all uses of original functions with new values - // create a new ConstantPtrRef - //create a new ConstantExpr cast - std::map::iterator fmI = FuncMap.begin(), - fmE = FuncMap.end(); - for (; fmI != fmE; ++fmI) { - Function *origF = fmI->first; - Function *cloneF = fmI->second; - - Constant *expr = ConstantExpr::getCast(cloneF, origF->getType()); - origF->replaceAllUsesWith(expr); + // Replace all uses of original functions with the transformed function. + for (std::map::iterator I = FuncMap.begin(), + E = FuncMap.end(); I != E; ++I) { + Function *F = I->first; + F->replaceAllUsesWith(ConstantExpr::getCast(I->second, F->getType())); } return true; } @@ -271,8 +263,8 @@ FunctionType *FuncTy = FunctionType::get(OldFuncTy->getReturnType(), ArgTys, OldFuncTy->isVarArg()); // Create the new function... - Function *New = new Function(FuncTy, GlobalValue::InternalLinkage, - F.getName(), F.getParent()); + Function *New = new Function(FuncTy, Function::InternalLinkage, F.getName()); + F.getParent()->getFunctionList().insert(&F, New); // Set the rest of the new arguments names to be PDa and add entries to the // pool descriptors map @@ -661,9 +653,13 @@ } } - std::cerr << "[" << F.getName() << "] " << NodesToPA.size() - << " nodes pool allocatable\n"; - CreatePools(NewF, NodesToPA, FI.PoolDescriptors); + if (!NodesToPA.empty()) { + std::cerr << "[" << F.getName() << "] " << NodesToPA.size() + << " nodes pool allocatable\n"; + CreatePools(NewF, NodesToPA, FI.PoolDescriptors); + } else { + DEBUG(std::cerr << "[" << F.getName() << "] transforming body.\n"); + } // Transform the body of the function now... collecting information about uses // of the pools. From lattner at cs.uiuc.edu Wed Nov 3 18:26:37 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 18:26:37 -0600 Subject: [llvm-commits] CVS: llvm-test/External/SPEC/CINT2000/197.parser.hacked/Makefile Message-ID: <200411040026.iA40Qbql031891@apoc.cs.uiuc.edu> Changes in directory llvm-test/External/SPEC/CINT2000/197.parser.hacked: Makefile updated: 1.4 -> 1.5 --- Log message: Remove space at end of line which broke makefile --- Diffs of the changes: (+1 -1) Index: llvm-test/External/SPEC/CINT2000/197.parser.hacked/Makefile diff -u llvm-test/External/SPEC/CINT2000/197.parser.hacked/Makefile:1.4 llvm-test/External/SPEC/CINT2000/197.parser.hacked/Makefile:1.5 --- llvm-test/External/SPEC/CINT2000/197.parser.hacked/Makefile:1.4 Mon Sep 6 23:18:02 2004 +++ llvm-test/External/SPEC/CINT2000/197.parser.hacked/Makefile Wed Nov 3 18:26:23 2004 @@ -8,7 +8,7 @@ Source = $(addprefix $(SPEC_BENCH_DIR)/src/, \ analyze-linkage.c and.c build-disjuncts.c extract-links.c \ - fast-match.c idiom.c main.c massage.c parse.c post-process.c \ + fast-match.c idiom.c main.c massage.c parse.c post-process.c \ print.c prune.c read-dict.c strncasecmp.c utilities.c word-file.c) \ xa.c From alkis at cs.uiuc.edu Wed Nov 3 22:11:08 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Wed, 3 Nov 2004 22:11:08 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp Message-ID: <200411040411.WAA22547@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: Compiler.cpp updated: 1.135 -> 1.136 --- Log message: Create globals for static fields of a class even if it doesn't have a class initialization method. --- Diffs of the changes: (+46 -43) Index: llvm-java/lib/Compiler/Compiler.cpp diff -u llvm-java/lib/Compiler/Compiler.cpp:1.135 llvm-java/lib/Compiler/Compiler.cpp:1.136 --- llvm-java/lib/Compiler/Compiler.cpp:1.135 Tue Nov 2 14:38:48 2004 +++ llvm-java/lib/Compiler/Compiler.cpp Wed Nov 3 22:10:56 2004 @@ -987,50 +987,53 @@ /// Emits static initializers for this class if not done already. void emitStaticInitializers(const ClassFile* classfile) { - const Method* method = classfile->getMethod("()V"); - if (!method) - return; + typedef SetVector ClassFileSet; + static ClassFileSet toInitClasses; - std::string name = classfile->getThisClass()->getName()->str(); - name += '/'; - name += method->getName()->str(); - name += method->getDescriptor()->str(); - - Function* hook = module_.getOrInsertFunction(LLVM_JAVA_STATIC_INIT, - Type::VoidTy, 0); - Function* init = module_.getOrInsertFunction(name, Type::VoidTy, 0); - - // If this is the first time we scheduled this function - // for compilation insert a call to it right before the - // terminator of the only basic block in - // llvm_java_static_init/ - if (toCompileFunctions_.insert(init)) { - assert(hook->front().getTerminator() && - LLVM_JAVA_STATIC_INIT " should have a terminator!"); - new CallInst(init, "", hook->front().getTerminator()); - // We also create the global variables of this class. - const Fields& fields = classfile->getFields(); - for (unsigned i = 0, e = fields.size(); i != e; ++i) { - Field* field = fields[i]; - if (field->isStatic()) { - llvm::Constant* init = NULL; - if (ConstantValueAttribute* cv = field->getConstantValueAttribute()) - init = getConstant(cv->getValue()); - - std::string globalName = - classfile->getThisClass()->getName()->str() + '/' + - field->getName()->str(); - DEBUG(std::cerr << "Adding global: " << globalName << '\n'); - new GlobalVariable(getType(field->getDescriptor()), - field->isFinal(), - (field->isPrivate() & bool(init) ? - GlobalVariable::InternalLinkage : - GlobalVariable::ExternalLinkage), - init, - globalName, - &module_); - } - } + if (toInitClasses.insert(classfile)) { + // Create the global variables of this class. + const Fields& fields = classfile->getFields(); + for (unsigned i = 0, e = fields.size(); i != e; ++i) { + Field* field = fields[i]; + if (field->isStatic()) { + llvm::Constant* init = NULL; + if (ConstantValueAttribute* cv = field->getConstantValueAttribute()) + init = getConstant(cv->getValue()); + + std::string globalName = + classfile->getThisClass()->getName()->str() + '/' + + field->getName()->str(); + DEBUG(std::cerr << "Adding global: " << globalName << '\n'); + new GlobalVariable(getType(field->getDescriptor()), + field->isFinal(), + (field->isPrivate() & bool(init) ? + GlobalVariable::InternalLinkage : + GlobalVariable::ExternalLinkage), + init, + globalName, + &module_); + } + } + + // Call its class initialization method if it exists. + if (const Method* method = classfile->getMethod("()V")) { + std::string name = classfile->getThisClass()->getName()->str(); + name += '/'; + name += method->getName()->str(); + name += method->getDescriptor()->str(); + + Function* hook = module_.getOrInsertFunction(LLVM_JAVA_STATIC_INIT, + Type::VoidTy, 0); + Function* init = module_.getOrInsertFunction(name, Type::VoidTy, 0); + + // Insert a call to it right before the terminator of the only + // basic block in llvm_java_static_init. + bool inserted = toCompileFunctions_.insert(init); + assert(inserted && "Class initialization method already called!"); + assert(hook->front().getTerminator() && + LLVM_JAVA_STATIC_INIT " should have a terminator!"); + new CallInst(init, "", hook->front().getTerminator()); + } } } From lattner at persephone.cs.uiuc.edu Wed Nov 3 23:00:44 2004 From: lattner at persephone.cs.uiuc.edu (Chris Lattner) Date: Wed, 3 Nov 2004 23:00:44 -0600 (CST) Subject: [llvm-commits] CVS: llvm/examples/Fibonacci/fibonacci.cpp Message-ID: <20041104050044.075426760A8@persephone.cs.uiuc.edu> Changes in directory llvm/examples/Fibonacci: fibonacci.cpp updated: 1.3 -> 1.4 --- Log message: Fix typeo --- Diffs of the changes: (+1 -1) Index: llvm/examples/Fibonacci/fibonacci.cpp diff -u llvm/examples/Fibonacci/fibonacci.cpp:1.3 llvm/examples/Fibonacci/fibonacci.cpp:1.4 --- llvm/examples/Fibonacci/fibonacci.cpp:1.3 Wed Nov 3 15:43:03 2004 +++ llvm/examples/Fibonacci/fibonacci.cpp Wed Nov 3 23:00:18 2004 @@ -108,7 +108,7 @@ // Call the `foo' function with argument n: std::vector Args(1); - args[0].IntVal = n; + Args[0].IntVal = n; GenericValue GV = EE->runFunction(FibF, Args); // import result of execution From alkis at cs.uiuc.edu Wed Nov 3 23:40:20 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Wed, 3 Nov 2004 23:40:20 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp Message-ID: <200411040540.XAA24806@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: Compiler.cpp updated: 1.136 -> 1.137 --- Log message: When loading/storing from arrays of anything smaller than an int, convert from/to an int on the operand stack. --- Diffs of the changes: (+22 -15) Index: llvm-java/lib/Compiler/Compiler.cpp diff -u llvm-java/lib/Compiler/Compiler.cpp:1.136 llvm-java/lib/Compiler/Compiler.cpp:1.137 --- llvm-java/lib/Compiler/Compiler.cpp:1.136 Wed Nov 3 22:10:56 2004 +++ llvm-java/lib/Compiler/Compiler.cpp Wed Nov 3 23:40:10 2004 @@ -1149,17 +1149,23 @@ void do_laload() { do_aload_common(); } void do_faload() { do_aload_common(); } void do_daload() { do_aload_common(); } - void do_aaload() { do_aload_common(); } - void do_baload() { do_aload_common(); } - void do_caload() { do_aload_common(); } - void do_saload() { do_aload_common(); } + void do_aaload() { + do_aload_common(); + do_cast_common( + PointerType::get( + getClassInfo(ClassFile::get("java/lang/Object")).type)); + } + void do_baload() { do_aload_common(); do_cast_common(Type::IntTy); } + void do_caload() { do_aload_common(); do_cast_common(Type::IntTy); } + void do_saload() { do_aload_common(); do_cast_common(Type::IntTy); } void do_aload_common() { Value* index = currentOpStack_->pop(currentBB_); Value* arrayRef = currentOpStack_->pop(currentBB_); std::vector indices; - indices.reserve(2); + indices.reserve(3); + indices.push_back(ConstantUInt::get(Type::UIntTy, 0)); indices.push_back(ConstantUInt::get(Type::UIntTy, 2)); indices.push_back(index); Value* elementPtr = @@ -1183,10 +1189,15 @@ void do_lastore() { do_astore_common(); } void do_fastore() { do_astore_common(); } void do_dastore() { do_astore_common(); } - void do_aastore() { do_astore_common(); } - void do_bastore() { do_astore_common(); } - void do_castore() { do_astore_common(); } - void do_sastore() { do_astore_common(); } + void do_aastore() { + do_cast_common( + PointerType::get( + getClassInfo(ClassFile::get("java/lang/Object")).type)); + do_astore_common(); + } + void do_bastore() { do_cast_common(Type::SByteTy); do_astore_common(); } + void do_castore() { do_cast_common(Type::UShortTy); do_astore_common(); } + void do_sastore() { do_cast_common(Type::ShortTy); do_astore_common(); } void do_astore_common() { Value* value = currentOpStack_->pop(currentBB_); @@ -1194,16 +1205,12 @@ Value* arrayRef = currentOpStack_->pop(currentBB_); std::vector indices; - indices.reserve(2); + indices.reserve(3); + indices.push_back(ConstantUInt::get(Type::UIntTy, 0)); indices.push_back(ConstantUInt::get(Type::UIntTy, 2)); indices.push_back(index); Value* elementPtr = new GetElementPtrInst(arrayRef, indices, TMP, currentBB_); - // We need this case because ints on the stack can be stored to - // arrays of bool, byte, short or char. - value = new CastInst( - value, cast(elementPtr->getType())->getElementType(), - TMP, currentBB_); new StoreInst(value, elementPtr, currentBB_); } From lattner at cs.uiuc.edu Thu Nov 4 00:10:37 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Nov 2004 00:10:37 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp Message-ID: <200411040610.iA46Ab4O003864@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.79 -> 1.80 --- Log message: The only functionality change here is to make poolfree optimization controllable by a separate command line switch from poolinit/pooldestroy opt, and turn it on by default. --- Diffs of the changes: (+13 -8) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.79 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.80 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.79 Wed Nov 3 17:56:15 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Thu Nov 4 00:10:26 2004 @@ -5,7 +5,7 @@ // //===----------------------------------------------------------------------===// -#define DEBUG_TYPE "PoolAllocator" +#define DEBUG_TYPE "poolalloc" #include "EquivClassGraphs.h" #include "PoolAllocate.h" #include "llvm/Constants.h" @@ -74,6 +74,9 @@ cl::opt DisableInitDestroyOpt("poolalloc-force-simple-pool-init", cl::desc("Always insert poolinit/pooldestroy calls at start and exit of functions"), cl::init(true)); + cl::opt + DisablePoolFreeOpt("poolalloc-force-all-poolfrees", + cl::desc("Do not try to elide poolfree's where possible")); } void PoolAllocate::getAnalysisUsage(AnalysisUsage &AU) const { @@ -107,7 +110,7 @@ // its clone. std::set ClonedFunctions; for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) - if (!I->isExternal()) + if (!I->isExternal() && !ClonedFunctions.count(I)) if (Function *Clone = MakeFunctionClone(*I)) { FuncMap[I] = Clone; ClonedFunctions.insert(Clone); @@ -749,10 +752,6 @@ DSNode *Node = NodesToPA[i]; if (AllocaInst *PD = dyn_cast(PoolDescriptors[Node])) if (AllocasHandled.insert(PD).second) { - Value *ElSize = - ConstantUInt::get(Type::UIntTy, Node->getType()->isSized() ? - TD.getTypeSize(Node->getType()) : 0); - // Convert the PoolUses/PoolFrees sets into something specific to this // pool. std::set UsingBlocks; @@ -871,7 +870,12 @@ } DEBUG(std::cerr << "\n Init in blocks: "); - // Insert the calls to initialize the pool... + // Insert the calls to initialize the pool. + unsigned ElSizeV = 0; + if (Node->getType()->isSized()) + ElSizeV = TD.getTypeSize(Node->getType()); + Value *ElSize = ConstantUInt::get(Type::UIntTy, ElSizeV); + for (unsigned i = 0, e = PoolInitPoints.size(); i != e; ++i) { new CallInst(PoolInit, make_vector((Value*)PD, ElSize, 0), "", PoolInitPoints[i]); @@ -895,10 +899,11 @@ // call to poolalloc, and the call to pooldestroy. Figure out which // basic blocks have this property for this pool. std::set PoolFreeLiveBlocks; - if (!DisableInitDestroyOpt) + if (!DisablePoolFreeOpt) CalculateLivePoolFreeBlocks(PoolFreeLiveBlocks, PD); else PoolFreeLiveBlocks = LiveBlocks; + if (!DisableInitDestroyOpt) PoolDestroyPoints.clear(); From alkis at cs.uiuc.edu Thu Nov 4 03:10:01 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Thu, 4 Nov 2004 03:10:01 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp Message-ID: <200411040910.DAA12326@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: Compiler.cpp updated: 1.137 -> 1.138 --- Log message: Implement reference type arrays. --- Diffs of the changes: (+321 -61) Index: llvm-java/lib/Compiler/Compiler.cpp diff -u llvm-java/lib/Compiler/Compiler.cpp:1.137 llvm-java/lib/Compiler/Compiler.cpp:1.138 --- llvm-java/lib/Compiler/Compiler.cpp:1.137 Wed Nov 3 23:40:10 2004 +++ llvm-java/lib/Compiler/Compiler.cpp Thu Nov 4 03:09:50 2004 @@ -30,9 +30,7 @@ #include #include #include -#include #include -#include #include #define LLVM_JAVA_OBJECT_BASE "struct.llvm_java_object_base" @@ -191,10 +189,20 @@ return PointerType::get(getClassInfo(ClassFile::get(className)).type); } case '[': - // FIXME: this should really be a new class - // represeting the array of the following type - return PointerType::get( - ArrayType::get(getTypeHelper(descr, i, NULL), 0)); + if (descr[i] == '[') { + do { ++i; } while (descr[i] == '['); + getTypeHelper(descr, i, NULL); + return PointerType::get(getObjectArrayInfo().type); + } + else if (descr[i] == 'L') { + getTypeHelper(descr, i, NULL); + return PointerType::get(getObjectArrayInfo().type); + } + else { + return PointerType::get( + getPrimitiveArrayInfo(getTypeHelper(descr, i, NULL)).type); + } + break; case '(': { std::vector params; if (self) @@ -409,6 +417,18 @@ return arrayInfo; } + const ClassInfo& getPrimitiveArrayInfo(Type* type) { + if (Type::BoolTy == type) return getPrimitiveArrayInfo(BOOLEAN); + else if (Type::UShortTy == type) return getPrimitiveArrayInfo(CHAR); + else if (Type::FloatTy == type) return getPrimitiveArrayInfo(FLOAT); + else if (Type::DoubleTy == type) return getPrimitiveArrayInfo(DOUBLE); + else if (Type::SByteTy == type) return getPrimitiveArrayInfo(BYTE); + else if (Type::ShortTy == type) return getPrimitiveArrayInfo(SHORT); + else if (Type::IntTy == type) return getPrimitiveArrayInfo(INT); + else if (Type::LongTy == type) return getPrimitiveArrayInfo(LONG); + else abort(); + } + /// Returns the ClassInfo object associated with an array of the /// specified element type. const ClassInfo& getPrimitiveArrayInfo(JType type) { @@ -452,7 +472,8 @@ /// specified element type. const ClassInfo& getObjectArrayInfo() { static ClassInfo arrayInfo = buildArrayClassInfo( - getClassInfo(ClassFile::get("java/lang/Object")).type); + PointerType::get( + getClassInfo(ClassFile::get("java/lang/Object")).type)); return arrayInfo; } @@ -719,8 +740,9 @@ std::vector init(superInit->getNumOperands()); // Use a null typeinfo struct for now. init[0] = llvm::Constant::getNullValue(VTableInfo::TypeInfoTy); - // Fill in the function pointers as they are in the super - // class. Overriden methods will be replaced later. + + // Fill in the function pointers as they are in + // java/lang/Object. There are no overriden methods. for (unsigned i = 1, e = superInit->getNumOperands(); i != e; ++i) init[i] = superInit->getOperand(i); vi.m2iMap = superVI.m2iMap; @@ -773,6 +795,18 @@ return vi; } + const VTableInfo& getPrimitiveArrayVTableInfo(Type* type) { + if (Type::BoolTy == type) return getPrimitiveArrayVTableInfo(BOOLEAN); + else if (Type::UShortTy == type) return getPrimitiveArrayVTableInfo(CHAR); + else if (Type::FloatTy == type) return getPrimitiveArrayVTableInfo(FLOAT); + else if (Type::DoubleTy == type) return getPrimitiveArrayVTableInfo(DOUBLE); + else if (Type::SByteTy == type) return getPrimitiveArrayVTableInfo(BYTE); + else if (Type::ShortTy == type) return getPrimitiveArrayVTableInfo(SHORT); + else if (Type::IntTy == type) return getPrimitiveArrayVTableInfo(INT); + else if (Type::LongTy == type) return getPrimitiveArrayVTableInfo(LONG); + else abort(); + } + // Returns the VTableInfo object for an array of the specified // element type. const VTableInfo& getPrimitiveArrayVTableInfo(JType type) { @@ -812,26 +846,170 @@ } } -// const VTableInfo& getArrayVTableInfo(ClassFile* cf) { -// Class2VTableInfoMap::iterator it = ac2viMap_.lower_bound(cf); -// if (it != ac2viMap_.end() && it->first == cf) -// return it->second; - -// const std::string& className = cf->getThisClass()->getName()->str(); -// DEBUG(std::cerr << "Building VTableInfo for: " << className << "[]\n"); -// VTableInfo& vi = ac2viMap_[cf]; - -// assert(!vi.vtable && vi.m2iMap.empty() && -// "got already initialized VTableInfo!"); - - -// ConstantClass* super = cf->getSuperClass(); -// if (!super) { -// } -// else { + /// Initializes the VTableInfo map for object arrays; in other + /// words it adds the VTableInfo for java.lang.Object[]. + void initializeObjectArrayVTableInfoMap() { + DEBUG(std::cerr << "Building VTableInfo for: java/lang/Object[]\n"); + ClassFile* cf = ClassFile::get("java/lang/Object"); + VTableInfo& vi = ac2viMap_[cf]; + assert(!vi.vtable && vi.m2iMap.empty() && + "java/lang/Object[] VTableInfo should not be initialized!"); + + const VTableInfo& javaLangObjectVI = + getVTableInfo(ClassFile::get("java/lang/Object")); + vi.superVtables.reserve(1); + vi.superVtables.push_back(javaLangObjectVI.vtable); + + std::vector init; + + // This is java/lang/Object[] so we must add a + // llvm_java_object_typeinfo struct first. + + // depth + init.push_back(llvm::ConstantSInt::get(Type::IntTy, 1)); + // superclasses vtable pointers + ArrayType* vtablesArrayTy = + ArrayType::get(PointerType::get(VTableInfo::VTableTy), 1); + + GlobalVariable* vtablesArray = new GlobalVariable( + vtablesArrayTy, + true, + GlobalVariable::ExternalLinkage, + ConstantArray::get(vtablesArrayTy, vi.superVtables), + "java/lang/Object[]", + &module_); + init.push_back(ConstantExpr::getGetElementPtr( + vtablesArray, + std::vector(2, ConstantUInt::get(Type::UIntTy, 0)))); + + // last interface index + init.push_back(llvm::ConstantSInt::get(Type::IntTy, -1)); + // interfaces vtable pointers + init.push_back( + llvm::Constant::getNullValue( + PointerType::get(PointerType::get(VTableInfo::VTableTy)))); + + llvm::Constant* typeInfoInit = + ConstantStruct::get(VTableInfo::TypeInfoTy, init); + + // Now that we have both the type and initializer for the + // llvm_java_object_typeinfo struct we can start adding the + // function pointers. + ConstantStruct* superInit = + cast(javaLangObjectVI.vtable->getInitializer()); + + init.clear(); + init.resize(superInit->getNumOperands()); + // Add the typeinfo block for this class. + init[0] = typeInfoInit; + + // Fill in the function pointers as they are in + // java/lang/Object. There are no overriden methods. + for (unsigned i = 1, e = superInit->getNumOperands(); i != e; ++i) + init[i] = superInit->getOperand(i); + vi.m2iMap = javaLangObjectVI.m2iMap; + + llvm::Constant* vtable = ConstantStruct::get(init); + module_.addTypeName("java/lang/Object[]", vtable->getType()); + + vi.vtable = new GlobalVariable(VTableInfo::VTableTy, + true, GlobalVariable::ExternalLinkage, + vtable, + "java/lang/Object[]", + &module_); + DEBUG(std::cerr << "Built VTableInfo for: java/lang/Object[]\n"); + } + + const VTableInfo& getObjectArrayVTableInfo(ClassFile* cf) { + Class2VTableInfoMap::iterator it = ac2viMap_.lower_bound(cf); + if (it != ac2viMap_.end() && it->first == cf) + return it->second; + + const std::string& className = cf->getThisClass()->getName()->str(); + DEBUG(std::cerr << "Building VTableInfo for: " << className << "[]\n"); + VTableInfo& vi = ac2viMap_[cf]; + + assert(!vi.vtable && vi.m2iMap.empty() && + "got already initialized VTableInfo!"); + + ConstantClass* super = cf->getSuperClass(); + assert(super && "Class does not have superclass!"); + const VTableInfo& superVI = + getVTableInfo(ClassFile::get(super->getName()->str())); + + // Copy the super vtables array. + vi.superVtables.reserve(superVI.superVtables.size() + 1); + vi.superVtables.push_back(superVI.vtable); + std::copy(superVI.superVtables.begin(), superVI.superVtables.end(), + std::back_inserter(vi.superVtables)); + + // Copy all the constants from the super class' vtable. + assert(superVI.vtable && "No vtable found for super class!"); + ConstantStruct* superInit = + cast(superVI.vtable->getInitializer()); + std::vector init(superInit->getNumOperands()); + // Use a null typeinfo struct for now. + init[0] = llvm::Constant::getNullValue(VTableInfo::TypeInfoTy); + // Fill in the function pointers as they are in the super + // class. There are no overriden methods. + for (unsigned i = 0, e = superInit->getNumOperands(); i != e; ++i) + init[i] = superInit->getOperand(i); + vi.m2iMap = superVI.m2iMap; + +#ifndef NDEBUG + for (unsigned i = 0, e = init.size(); i != e; ++i) + assert(init[i] && "No elements in the initializer should be NULL!"); +#endif + + const std::string& globalName = className + "[]"; + + llvm::Constant* vtable = ConstantStruct::get(init); + module_.addTypeName(globalName, vtable->getType()); + vi.vtable = new GlobalVariable(vtable->getType(), + true, + GlobalVariable::ExternalLinkage, + vtable, + globalName, + &module_); + + // Now the vtable is complete, install the new typeinfo block + // for this class: we install it last because we need the vtable + // to exist in order to build it. + std::vector typeInfoInit; + typeInfoInit.reserve(4); + // depth + typeInfoInit.push_back( + llvm::ConstantSInt::get(Type::IntTy, vi.superVtables.size())); + // superclasses vtable pointers + ArrayType* vtablesArrayTy = + ArrayType::get(PointerType::get(VTableInfo::VTableTy), + vi.superVtables.size()); + + GlobalVariable* vtablesArray = new GlobalVariable( + vtablesArrayTy, + true, + GlobalVariable::ExternalLinkage, + ConstantArray::get(vtablesArrayTy, vi.superVtables), + className + "[]", + &module_); -// } -// } + typeInfoInit.push_back(ConstantExpr::getGetElementPtr( + vtablesArray, + std::vector(2, ConstantUInt::get(Type::UIntTy, 0)))); + // last interface index + typeInfoInit.push_back(llvm::ConstantSInt::get(Type::IntTy, -1)); + // interfaces vtable pointers + typeInfoInit.push_back( + llvm::Constant::getNullValue( + PointerType::get(PointerType::get(VTableInfo::VTableTy)))); + + init[0] = ConstantStruct::get(VTableInfo::TypeInfoTy, typeInfoInit); + vi.vtable->setInitializer(ConstantStruct::get(init)); + + DEBUG(std::cerr << "Built VTableInfo for: " << className << "[]\n"); + return vi; + + } /// Emits the necessary code to get a pointer to a static field of /// an object. @@ -980,7 +1158,7 @@ DEBUG(std::cerr << "Finished compilation of method: " << classMethodDesc << '\n'); - DEBUG(function->dump()); + // DEBUG(function->dump()); return function; } @@ -996,15 +1174,17 @@ for (unsigned i = 0, e = fields.size(); i != e; ++i) { Field* field = fields[i]; if (field->isStatic()) { + Type* globalTy = getType(field->getDescriptor()); llvm::Constant* init = NULL; if (ConstantValueAttribute* cv = field->getConstantValueAttribute()) - init = getConstant(cv->getValue()); + init = + ConstantExpr::getCast(getConstant(cv->getValue()), globalTy); std::string globalName = classfile->getThisClass()->getName()->str() + '/' + field->getName()->str(); DEBUG(std::cerr << "Adding global: " << globalName << '\n'); - new GlobalVariable(getType(field->getDescriptor()), + new GlobalVariable(globalTy, field->isFinal(), (field->isPrivate() & bool(init) ? GlobalVariable::InternalLinkage : @@ -1088,6 +1268,7 @@ // Initialize type maps and vtable globals. initializeClassInfoMap(); initializeVTableInfoMap(); + initializeObjectArrayVTableInfoMap(); // Create the method requested. Function* function = getFunction(getMethod(classMethodDesc)); @@ -1204,6 +1385,8 @@ Value* index = currentOpStack_->pop(currentBB_); Value* arrayRef = currentOpStack_->pop(currentBB_); + arrayRef->dump(); + std::vector indices; indices.reserve(3); indices.push_back(ConstantUInt::get(Type::UIntTy, 0)); @@ -1648,39 +1831,95 @@ return params; } + std::pair + getInfo(const std::string& className) { + const ClassInfo* ci = NULL; + const VTableInfo* vi = NULL; + + if (className[0] == '[') { + if (className[1] == '[' || className[1] == 'L') { + vi = &getObjectArrayVTableInfo(ClassFile::get("java/lang/Object")); + ci = &getObjectArrayInfo(); + } + else switch (className[1]) { + case 'B': + vi = &getPrimitiveArrayVTableInfo(Type::SByteTy); + ci = &getPrimitiveArrayInfo(Type::SByteTy); + break; + case 'C': + vi = &getPrimitiveArrayVTableInfo(Type::UShortTy); + ci = &getPrimitiveArrayInfo(Type::UShortTy); + break; + case 'D': + vi = &getPrimitiveArrayVTableInfo(Type::DoubleTy); + ci = &getPrimitiveArrayInfo(Type::DoubleTy); + break; + case 'F': + vi = &getPrimitiveArrayVTableInfo(Type::FloatTy); + ci = &getPrimitiveArrayInfo(Type::FloatTy); + break; + case 'I': + vi = &getPrimitiveArrayVTableInfo(Type::IntTy); + ci = &getPrimitiveArrayInfo(Type::IntTy); + break; + case 'J': + vi = &getPrimitiveArrayVTableInfo(Type::LongTy); + ci = &getPrimitiveArrayInfo(Type::LongTy); + break; + case 'S': + vi = &getPrimitiveArrayVTableInfo(Type::ShortTy); + ci = &getPrimitiveArrayInfo(Type::ShortTy); + break; + case 'Z': + vi = &getPrimitiveArrayVTableInfo(Type::BoolTy); + ci = &getPrimitiveArrayInfo(Type::BoolTy); + break; + } + } + else { + ClassFile* cf = ClassFile::get(className); + vi = &getVTableInfo(cf); + ci = &getClassInfo(cf); + } + + return std::make_pair(ci, vi); + } + void do_invokevirtual(unsigned index) { ConstantMethodRef* methodRef = cf_->getConstantMethodRef(index); ConstantNameAndType* nameAndType = methodRef->getNameAndType(); - ClassFile* cf = ClassFile::get(methodRef->getClass()->getName()->str()); - const ClassInfo& ci = getClassInfo(cf); - const VTableInfo& vi = getVTableInfo(cf); + const std::string& className = methodRef->getClass()->getName()->str(); + + const ClassInfo* ci = NULL; + const VTableInfo* vi = NULL; + tie(ci, vi) = getInfo(className); - const std::string& className = cf->getThisClass()->getName()->str(); const std::string& methodDescr = nameAndType->getName()->str() + nameAndType->getDescriptor()->str(); FunctionType* funTy = - cast(getType(nameAndType->getDescriptor(), ci.type)); + cast(getType(nameAndType->getDescriptor(), ci->type)); std::vector params(getParams(funTy)); Value* objRef = params.front(); - objRef = new CastInst(objRef, PointerType::get(ci.type), + objRef = new CastInst(objRef, PointerType::get(ci->type), "this", currentBB_); - Value* objBase = getField(cf, LLVM_JAVA_OBJECT_BASE, objRef); + Value* objBase = + new CastInst(objRef, ClassInfo::ObjectBaseTy, TMP, currentBB_); Function* f = module_.getOrInsertFunction( LLVM_JAVA_GETOBJECTCLASS, PointerType::get(VTableInfo::VTableTy), objBase->getType(), NULL); Value* vtable = new CallInst(f, objBase, TMP, currentBB_); - vtable = new CastInst(vtable, PointerType::get(vi.vtable->getType()), + vtable = new CastInst(vtable, PointerType::get(vi->vtable->getType()), TMP, currentBB_); vtable = new LoadInst(vtable, className + "", currentBB_); std::vector indices(1, ConstantUInt::get(Type::UIntTy, 0)); - assert(vi.m2iMap.find(methodDescr) != vi.m2iMap.end() && + assert(vi->m2iMap.find(methodDescr) != vi->m2iMap.end() && "could not find slot for virtual function!"); - unsigned vSlot = vi.m2iMap.find(methodDescr)->second; + unsigned vSlot = vi->m2iMap.find(methodDescr)->second; indices.push_back(ConstantUInt::get(Type::UIntTy, vSlot)); Value* vfunPtr = new GetElementPtrInst(vtable, indices, TMP, currentBB_); @@ -1728,24 +1967,26 @@ cf_->getConstantInterfaceMethodRef(index); ConstantNameAndType* nameAndType = methodRef->getNameAndType(); - ClassFile* cf = ClassFile::get(methodRef->getClass()->getName()->str()); - const ClassInfo& ci = getClassInfo(cf); - const VTableInfo& vi = getVTableInfo(cf); + const std::string& className = methodRef->getClass()->getName()->str(); + + const ClassInfo* ci = NULL; + const VTableInfo* vi = NULL; + tie(ci, vi) = getInfo(className); - const std::string& className = cf->getThisClass()->getName()->str(); const std::string& methodDescr = nameAndType->getName()->str() + nameAndType->getDescriptor()->str(); FunctionType* funTy = - cast(getType(nameAndType->getDescriptor(), ci.type)); + cast(getType(nameAndType->getDescriptor(), ci->type)); std::vector params(getParams(funTy)); Value* objRef = params.front(); - objRef = new CastInst(objRef, PointerType::get(ci.type), + objRef = new CastInst(objRef, PointerType::get(ci->type), "this", currentBB_); - Value* objBase = getField(cf, LLVM_JAVA_OBJECT_BASE, objRef); + Value* objBase = + new CastInst(objRef, ClassInfo::ObjectBaseTy, TMP, currentBB_); Function* f = module_.getOrInsertFunction( LLVM_JAVA_GETOBJECTCLASS, PointerType::get(VTableInfo::VTableTy), objBase->getType(), NULL); @@ -1758,18 +1999,18 @@ interfaceVTables = new LoadInst(interfaceVTables, TMP, currentBB_); // Get the actual interface vtable. indices.clear(); - indices.push_back(ConstantUInt::get(Type::UIntTy, ci.interfaceIdx)); + indices.push_back(ConstantUInt::get(Type::UIntTy, ci->interfaceIdx)); Value* interfaceVTable = new GetElementPtrInst(interfaceVTables, indices, TMP, currentBB_); interfaceVTable = new LoadInst(interfaceVTable, className + "", currentBB_); interfaceVTable = - new CastInst(interfaceVTable, vi.vtable->getType(), TMP, currentBB_); + new CastInst(interfaceVTable, vi->vtable->getType(), TMP, currentBB_); // Get the function pointer. indices.resize(1); - assert(vi.m2iMap.find(methodDescr) != vi.m2iMap.end() && + assert(vi->m2iMap.find(methodDescr) != vi->m2iMap.end() && "could not find slot for virtual function!"); - unsigned vSlot = vi.m2iMap.find(methodDescr)->second; + unsigned vSlot = vi->m2iMap.find(methodDescr)->second; indices.push_back(ConstantUInt::get(Type::UIntTy, vSlot)); Value* vfunPtr = new GetElementPtrInst(interfaceVTable, indices, TMP, currentBB_); @@ -1823,9 +2064,29 @@ const ClassInfo& ci = getPrimitiveArrayInfo(type); const VTableInfo& vi = getPrimitiveArrayVTableInfo(type); + do_newarray_common(ci, getType(type), vi, count); + } + + void do_anewarray(unsigned index) { + Value* count = currentOpStack_->pop(currentBB_); + count = new CastInst(count, Type::UIntTy, TMP, currentBB_); + + ConstantClass* classRef = cf_->getConstantClass(index); + ClassFile* cf = ClassFile::get(classRef->getName()->str()); + const ClassInfo& ci = getObjectArrayInfo(); + const ClassInfo& ei = getClassInfo(cf); + const VTableInfo& vi = getObjectArrayVTableInfo(cf); + + do_newarray_common(ci, PointerType::get(ei.type), vi, count); + } + + void do_newarray_common(const ClassInfo& ci, + Type* elementTy, + const VTableInfo& vi, + Value* count) { // The size of the array part of the struct. Value* size = BinaryOperator::create( - Instruction::Mul, count, ConstantExpr::getSizeOf(getType(type)), + Instruction::Mul, count, ConstantExpr::getSizeOf(elementTy), TMP, currentBB_); // Plus the size of the rest of the struct. size = BinaryOperator::create( @@ -1850,10 +2111,6 @@ currentOpStack_->push(objRef, currentBB_); } - void do_anewarray(unsigned index) { - assert(0 && "not implemented"); - } - void do_arraylength() { Value* arrayRef = currentOpStack_->pop(currentBB_); const ClassInfo& ci = getObjectArrayInfo(); @@ -1887,15 +2144,18 @@ void do_instanceof(unsigned index) { ConstantClass* classRef = cf_->getConstantClass(index); - ClassFile* cf = ClassFile::get(classRef->getName()->str()); - const VTableInfo& vi = getVTableInfo(cf); + + const ClassInfo* ci = NULL; + const VTableInfo* vi = NULL; + tie(ci, vi) = getInfo(classRef->getName()->str()); Value* objRef = currentOpStack_->pop(currentBB_); - Value* objBase = getField(cf, LLVM_JAVA_OBJECT_BASE, objRef); + Value* objBase = + new CastInst(objRef, ClassInfo::ObjectBaseTy, TMP, currentBB_); Function* f = module_.getOrInsertFunction( LLVM_JAVA_ISINSTANCEOF, Type::IntTy, objBase->getType(), PointerType::get(VTableInfo::VTableTy), NULL); - Value* vtable = new CastInst(vi.vtable, + Value* vtable = new CastInst(vi->vtable, PointerType::get(VTableInfo::VTableTy), TMP, currentBB_); Value* r = new CallInst(f, objBase, vtable, TMP, currentBB_); From vadve at cs.uiuc.edu Thu Nov 4 06:17:25 2004 From: vadve at cs.uiuc.edu (Vikram Adve) Date: Thu, 4 Nov 2004 06:17:25 -0600 Subject: [llvm-commits] CVS: llvm-www/pubs/index.html Message-ID: <200411041217.iA4CHPpL007080@apoc.cs.uiuc.edu> Changes in directory llvm-www/pubs: index.html updated: 1.12 -> 1.13 --- Log message: Reoptimizer pubs should be listed under "about LLVM." --- Diffs of the changes: (+5 -5) Index: llvm-www/pubs/index.html diff -u llvm-www/pubs/index.html:1.12 llvm-www/pubs/index.html:1.13 --- llvm-www/pubs/index.html:1.12 Sun Oct 31 20:50:15 2004 +++ llvm-www/pubs/index.html Thu Nov 4 06:17:12 2004 @@ -26,6 +26,11 @@ Lattner & Vikram Adve. Technical Report #UIUCDCS-R-2003-2380, Computer Science Dept., Univ. of Illinois, Sep. 2003.
  • +
  • "Lightweight, Cross-Procedure +Tracing for Runtime Optimization"
    Anand Shukla. Masters Thesis, +Computer Science Dept., University of Illinois at Urbana-Champaign, +July 2003
  • +
  • "Architecture For a Next-Generation GCC"
    Chris Lattner & Vikram Adve, First Annual GCC Developers' @@ -57,11 +62,6 @@ Brian Ensink and Vikram Adve. Proc. of the 24th International Conference on Distributed Computing Systems (ICDCS 2004), Tokyo, Japan, March 2004
  • -
  • "Lightweight, Cross-Procedure -Tracing for Runtime Optimization"
    Anand Shukla. Masters Thesis, -Computer Science Dept., University of Illinois at Urbana-Champaign, -July 2003
  • -
  • "Language Extensions for Performance-Oriented Programming"
    Joel Stanley. Masters Thesis, Computer Science Dept., University of Illinois at Urbana-Champaign, From vadve at cs.uiuc.edu Thu Nov 4 06:20:50 2004 From: vadve at cs.uiuc.edu (Vikram Adve) Date: Thu, 4 Nov 2004 06:20:50 -0600 Subject: [llvm-commits] CVS: llvm-www/pubs/index.html Message-ID: <200411041220.iA4CKoBr007109@apoc.cs.uiuc.edu> Changes in directory llvm-www/pubs: index.html updated: 1.13 -> 1.14 --- Log message: Make LLVM TR a paragraph under the CGO paper item. --- Diffs of the changes: (+7 -6) Index: llvm-www/pubs/index.html diff -u llvm-www/pubs/index.html:1.13 llvm-www/pubs/index.html:1.14 --- llvm-www/pubs/index.html:1.13 Thu Nov 4 06:17:12 2004 +++ llvm-www/pubs/index.html Thu Nov 4 06:20:40 2004 @@ -13,7 +13,13 @@ Lifelong Program Analysis & Transformation"
    Chris Lattner and Vikram Adve. Proc. of the 2004 International Symposium on Code Generation and Optimization (CGO'04), Palo Alto, California, Mar. -2004.
  • +2004. + +
    A previous version is available as:
    +"LLVM: A Compilation +Framework for Lifelong Program Analysis & Transformation"
    Chris +Lattner & Vikram Adve. Technical Report #UIUCDCS-R-2003-2380, Computer +Science Dept., Univ. of Illinois, Sep. 2003.
  • "LLVA: A Low-level Virtual Instruction Set Architecture"
    Vikram Adve, Chris Lattner, Michael Brukman, Anand Shukla, @@ -21,11 +27,6 @@ 36th annual ACM/IEEE international symposium on Microarchitecture (MICRO-36)
    , San Diego, CA, December 2003.
  • -
  • "LLVM: A Compilation -Framework for Lifelong Program Analysis & Transformation"
    Chris -Lattner & Vikram Adve. Technical Report #UIUCDCS-R-2003-2380, Computer -Science Dept., Univ. of Illinois, Sep. 2003.
  • -
  • "Lightweight, Cross-Procedure Tracing for Runtime Optimization"
    Anand Shukla. Masters Thesis, Computer Science Dept., University of Illinois at Urbana-Champaign, From criswell at cs.uiuc.edu Thu Nov 4 09:37:16 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Thu, 4 Nov 2004 09:37:16 -0600 Subject: [llvm-commits] CVS: llvm-test/External/FPGrowth/input Makefile Message-ID: <200411041537.JAA04090@choi.cs.uiuc.edu> Changes in directory llvm-test/External/FPGrowth: input added (r1.1) Makefile updated: 1.3 -> 1.4 --- Log message: Add an input file that inputs 100 into the program. This should get fpgrowth to work. --- Diffs of the changes: (+3 -0) Index: llvm-test/External/FPGrowth/input diff -c /dev/null llvm-test/External/FPGrowth/input:1.1 *** /dev/null Thu Nov 4 09:37:03 2004 --- llvm-test/External/FPGrowth/input Thu Nov 4 09:36:53 2004 *************** *** 0 **** --- 1,2 ---- + 100 + Index: llvm-test/External/FPGrowth/Makefile diff -u llvm-test/External/FPGrowth/Makefile:1.3 llvm-test/External/FPGrowth/Makefile:1.4 --- llvm-test/External/FPGrowth/Makefile:1.3 Wed Nov 3 12:25:10 2004 +++ llvm-test/External/FPGrowth/Makefile Thu Nov 4 09:36:53 2004 @@ -5,5 +5,6 @@ PROG = fpgrowth SourceDir := $(FPGROWTH_ROOT) +STDIN_FILENAME := $(BUILD_SRC_DIR)/input RUN_OPTIONS = $(FPGROWTH_ROOT)/mushroom.dat include $(LEVEL)/MultiSource/Makefile.multisrc From criswell at cs.uiuc.edu Thu Nov 4 10:54:29 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Thu, 4 Nov 2004 10:54:29 -0600 Subject: [llvm-commits] CVS: llvm-test/configure Makefile.config.in Message-ID: <200411041654.KAA17175@choi.cs.uiuc.edu> Changes in directory llvm-test: configure updated: 1.13 -> 1.14 Makefile.config.in updated: 1.7 -> 1.8 --- Log message: Added options for the (currently external) boxed-sim benchmark. --- Diffs of the changes: (+83 -36) Index: llvm-test/configure diff -u llvm-test/configure:1.13 llvm-test/configure:1.14 --- llvm-test/configure:1.13 Thu Oct 21 10:29:45 2004 +++ llvm-test/configure Thu Nov 4 10:54:14 2004 @@ -465,7 +465,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LLVM_SRC LLVM_OBJ CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT CC CFLAGS ac_ct_CC CPP ifGNUmake LEX LEXLIB LEX_OUTPUT_ROOT FLEX YACC BISON build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PYTHON SPEC95_ROOT USE_SPEC95 SPEC2000_ROOT USE_SPEC2000 POVRAY_ROOT USE_POVRAY NAMD_ROOT USE_NAMD SWEEP3D_ROOT USE_SWEEP3D FPGROWTH_ROOT USE_FPGROWTH F2C F2C_INC F2C_LIB USE_F2C DISABLE_LLC_DIFFS LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LLVM_SRC LLVM_OBJ CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT CC CFLAGS ac_ct_CC CPP ifGNUmake LEX LEXLIB LEX_OUTPUT_ROOT FLEX YACC BISON build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PYTHON SPEC95_ROOT USE_SPEC95 SPEC2000_ROOT USE_SPEC2000 POVRAY_ROOT USE_POVRAY NAMD_ROOT USE_NAMD SWEEP3D_ROOT USE_SWEEP3D FPGROWTH_ROOT USE_FPGROWTH BOXEDSIM_ROOT USE_BOXEDSIM F2C F2C_INC F2C_LIB USE_F2C DISABLE_LLC_DIFFS LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -1035,6 +1035,7 @@ --enable-namd=ARG Use namd as a benchmark (srcs in DIR) --enable-sweep3d=ARG Use sweep3d as a benchmark (srcs in DIR) --enable-fpgrowth=ARG Use fpgrowth as a benchmark (srcs in DIR) + --enable-boxedsim=ARG Use boxedsim as a benchmark (srcs in DIR) --enable-llc_diffs Enable LLC Diffs when testing (default is YES) Optional Packages: @@ -2971,13 +2972,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1` -if test "$gccmajor" -lt "3" -then - { { echo "$as_me:$LINENO: error: gcc 3.x required, but you have a lower version" >&5 -echo "$as_me: error: gcc 3.x required, but you have a lower version" >&2;} - { (exit 1); exit 1; }; } -fi echo "$as_me:$LINENO: checking for GNU make" >&5 echo $ECHO_N "checking for GNU make... $ECHO_C" >&6 @@ -3969,7 +3963,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 3972 "configure"' > conftest.$ac_ext + echo '#line 3966 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -4843,7 +4837,7 @@ # Provide some information about the compiler. -echo "$as_me:4846:" \ +echo "$as_me:4840:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 @@ -5900,11 +5894,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:5903: $lt_compile\"" >&5) + (eval echo "\"\$as_me:5897: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:5907: \$? = $ac_status" >&5 + echo "$as_me:5901: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -6143,11 +6137,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6146: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6140: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6150: \$? = $ac_status" >&5 + echo "$as_me:6144: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -6203,11 +6197,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6206: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6200: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:6210: \$? = $ac_status" >&5 + echo "$as_me:6204: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -8388,7 +8382,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"\$as_me:10676: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:10686: \$? = $ac_status" >&5 + echo "$as_me:10680: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -10739,11 +10733,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10742: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10736: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:10746: \$? = $ac_status" >&5 + echo "$as_me:10740: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12100,7 +12094,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"\$as_me:13032: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13042: \$? = $ac_status" >&5 + echo "$as_me:13036: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -13095,11 +13089,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13098: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13092: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13102: \$? = $ac_status" >&5 + echo "$as_me:13096: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15134,11 +15128,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15137: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15131: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15141: \$? = $ac_status" >&5 + echo "$as_me:15135: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -15377,11 +15371,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15380: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15374: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15384: \$? = $ac_status" >&5 + echo "$as_me:15378: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -15437,11 +15431,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15440: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15434: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15444: \$? = $ac_status" >&5 + echo "$as_me:15438: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17622,7 +17616,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5 +echo $ECHO_N "checking for boxedsim benchmark sources... $ECHO_C" >&6 +case "$checkresult" in +auto|yes) + defaultdir=/home/vadve/shared/benchmarks/boxed-sim + if test -d "$defaultdir" + then + BOXEDSIM_ROOT=$defaultdir + + USE_BOXEDSIM=USE_BOXEDSIM=1 + + checkresult="yes, found in $defaultdir" + else + checkresult=no + fi + ;; +no) + + + checkresult=no + ;; +*) if test -d "$checkresult" + then + BOXEDSIM_ROOT="$checkresult" + + USE_BOXEDSIM=USE_BOXEDSIM=1 + + checkresult="yes, in $checkresult" + else + + + checkresult="no, not found in $checkresult" + fi + ;; +esac +echo "$as_me:$LINENO: result: $checkresult" >&5 +echo "${ECHO_T}$checkresult" >&6 + + + # Check whether --with-f2c or --without-f2c was given. if test "${with_f2c+set}" = set; then @@ -20373,6 +20414,8 @@ s, at USE_SWEEP3D@,$USE_SWEEP3D,;t t s, at FPGROWTH_ROOT@,$FPGROWTH_ROOT,;t t s, at USE_FPGROWTH@,$USE_FPGROWTH,;t t +s, at BOXEDSIM_ROOT@,$BOXEDSIM_ROOT,;t t +s, at USE_BOXEDSIM@,$USE_BOXEDSIM,;t t s, at F2C@,$F2C,;t t s, at F2C_INC@,$F2C_INC,;t t s, at F2C_LIB@,$F2C_LIB,;t t Index: llvm-test/Makefile.config.in diff -u llvm-test/Makefile.config.in:1.7 llvm-test/Makefile.config.in:1.8 --- llvm-test/Makefile.config.in:1.7 Fri Oct 22 10:58:13 2004 +++ llvm-test/Makefile.config.in Thu Nov 4 10:54:15 2004 @@ -62,5 +62,9 @@ @USE_FPGROWTH@ FPGROWTH_ROOT := @FPGROWTH_ROOT@ +# Path to the boxed-sim source code + at USE_BOXEDSIM@ +BOXEDSIM_ROOT := @BOXEDSIM_ROOT@ + # Disable LLC diffs for testing. @DISABLE_LLC_DIFFS@ From criswell at cs.uiuc.edu Thu Nov 4 10:54:31 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Thu, 4 Nov 2004 10:54:31 -0600 Subject: [llvm-commits] CVS: llvm-test/autoconf/configure.ac Message-ID: <200411041654.KAA17182@choi.cs.uiuc.edu> Changes in directory llvm-test/autoconf: configure.ac updated: 1.12 -> 1.13 --- Log message: Added options for the (currently external) boxed-sim benchmark. --- Diffs of the changes: (+1 -5) Index: llvm-test/autoconf/configure.ac diff -u llvm-test/autoconf/configure.ac:1.12 llvm-test/autoconf/configure.ac:1.13 --- llvm-test/autoconf/configure.ac:1.12 Thu Oct 21 10:29:47 2004 +++ llvm-test/autoconf/configure.ac Thu Nov 4 10:54:19 2004 @@ -62,11 +62,6 @@ AC_PROG_CPP dnl Verify that GCC is version 3.0 or higher -gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1` -if test "$gccmajor" -lt "3" -then - AC_MSG_ERROR([gcc 3.x required, but you have a lower version]) -fi dnl Check for GNU Make. We use its extensions too, so don't build without it AC_CHECK_GNU_MAKE @@ -119,6 +114,7 @@ EXTERNAL_BENCHMARK(namd,/home/vadve/shared/benchmarks/spec_namd) EXTERNAL_BENCHMARK(sweep3d,/home/vadve/criswell/umt2k) EXTERNAL_BENCHMARK(fpgrowth,/home/vadve/shared/benchmarks/fpgrowth) +EXTERNAL_BENCHMARK(boxedsim,/home/vadve/shared/benchmarks/boxed-sim) dnl Check for f2c CHECK_F2C_ALL() From criswell at cs.uiuc.edu Thu Nov 4 10:57:25 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Thu, 4 Nov 2004 10:57:25 -0600 Subject: [llvm-commits] CVS: llvm-test/External/BoxedSim/ Message-ID: <200411041657.KAA21769@choi.cs.uiuc.edu> Changes in directory llvm-test/External/BoxedSim: --- Log message: Directory /home/vadve/shared/PublicCVS/llvm-test/External/BoxedSim added to the repository --- Diffs of the changes: (+0 -0) From criswell at cs.uiuc.edu Thu Nov 4 10:57:55 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Thu, 4 Nov 2004 10:57:55 -0600 Subject: [llvm-commits] CVS: llvm-test/External/Makefile Message-ID: <200411041657.KAA22137@choi.cs.uiuc.edu> Changes in directory llvm-test/External: Makefile updated: 1.21 -> 1.22 --- Log message: Add the boxed-sim benchmark as an external benchmark. --- Diffs of the changes: (+5 -1) Index: llvm-test/External/Makefile diff -u llvm-test/External/Makefile:1.21 llvm-test/External/Makefile:1.22 --- llvm-test/External/Makefile:1.21 Wed Nov 3 11:34:12 2004 +++ llvm-test/External/Makefile Thu Nov 4 10:57:42 2004 @@ -8,7 +8,7 @@ # # Create the list of directories to compile # -PARALLEL_DIRS := SPEC Povray Namd FPGrowth +PARALLEL_DIRS := SPEC Povray Namd FPGrowth BoxedSim ifndef USE_POVRAY PARALLEL_DIRS := $(filter-out Povray, $(PARALLEL_DIRS)) @@ -22,6 +22,10 @@ PARALLEL_DIRS := $(filter-out FPGrowth, $(PARALLEL_DIRS)) endif +ifndef USE_BOXEDSIM +PARALLEL_DIRS := $(filter-out BoxedSim, $(PARALLEL_DIRS)) +endif + # Sparc can't handle Namd: infinite loop, cause unknown ifeq ($(ARCH),Sparc) PARALLEL_DIRS := $(filter-out Namd, $(PARALLEL_DIRS)) From criswell at cs.uiuc.edu Thu Nov 4 10:57:56 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Thu, 4 Nov 2004 10:57:56 -0600 Subject: [llvm-commits] CVS: llvm-test/External/BoxedSim/Makefile Message-ID: <200411041657.KAA22306@choi.cs.uiuc.edu> Changes in directory llvm-test/External/BoxedSim: Makefile added (r1.1) --- Log message: Add the boxed-sim benchmark as an external benchmark. --- Diffs of the changes: (+13 -0) Index: llvm-test/External/BoxedSim/Makefile diff -c /dev/null llvm-test/External/BoxedSim/Makefile:1.1 *** /dev/null Thu Nov 4 10:57:54 2004 --- llvm-test/External/BoxedSim/Makefile Thu Nov 4 10:57:44 2004 *************** *** 0 **** --- 1,13 ---- + LEVEL = ../.. + + include $(LEVEL)/Makefile.config + + PROG = bsim + SourceDir := $(BOXEDSIM_ROOT) + CFLAGS += -I$(BOXEDSIM_ROOT) -DBASENAME="\"boxed-async\"" + LIBS += -lm + LDFLAGS += -lm + + RUN_OPTIONS = -n 15 -s 10 + include $(LEVEL)/MultiSource/Makefile.multisrc + From natebegeman at mac.com Thu Nov 4 13:43:29 2004 From: natebegeman at mac.com (Nate Begeman) Date: Thu, 4 Nov 2004 13:43:29 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp Message-ID: <200411041943.NAA17958@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/PowerPC: PPC32ISelSimple.cpp updated: 1.99 -> 1.100 --- Log message: Thanks to sabre for pointing out that we were incorrectly codegen'ing int test(int x) { return 32768 - x; } Fixed by teaching the function that checks a constant's validity to be used as an immediate argument about subtract-from instructions. --- Diffs of the changes: (+4 -1) Index: llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp diff -u llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp:1.99 llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp:1.100 --- llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp:1.99 Mon Oct 25 22:48:25 2004 +++ llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp Thu Nov 4 13:43:18 2004 @@ -536,8 +536,11 @@ else return false; } + + // Treat subfic like addi for the purposes of constant validation + if (Opcode == 5) Opcode = 0; - // ADDI, Compare, and non-indexed Load take SIMM + // addi, subfic, compare, and non-indexed load take SIMM bool cond1 = (Opcode < 2) && ((int32_t)CI->getRawValue() <= 32767) && ((int32_t)CI->getRawValue() >= -32768); From lattner at cs.uiuc.edu Thu Nov 4 14:13:10 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Nov 2004 14:13:10 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp PoolAllocate.h TransformFunctionBody.cpp Message-ID: <200411042013.iA4KDAQv021564@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.80 -> 1.81 PoolAllocate.h updated: 1.26 -> 1.27 TransformFunctionBody.cpp updated: 1.31 -> 1.32 --- Log message: Add missing headers --- Diffs of the changes: (+21 -0) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.80 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.81 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.80 Thu Nov 4 00:10:26 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Thu Nov 4 14:13:00 2004 @@ -1,4 +1,11 @@ //===-- PoolAllocate.cpp - Pool Allocation Pass ---------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by the LLVM research group and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// // // This transform changes programs so that disjoint data structures are // allocated out of different pools of memory, increasing locality. Index: poolalloc/lib/PoolAllocate/PoolAllocate.h diff -u poolalloc/lib/PoolAllocate/PoolAllocate.h:1.26 poolalloc/lib/PoolAllocate/PoolAllocate.h:1.27 --- poolalloc/lib/PoolAllocate/PoolAllocate.h:1.26 Tue Nov 2 00:39:22 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.h Thu Nov 4 14:13:00 2004 @@ -1,4 +1,11 @@ //===-- PoolAllocate.h - Pool allocation pass -------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by the LLVM research group and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// // // This transform changes programs so that disjoint data structures are // allocated out of different pools of memory, increasing locality. This header Index: poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp diff -u poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp:1.31 poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp:1.32 --- poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp:1.31 Tue Nov 2 00:42:21 2004 +++ poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp Thu Nov 4 14:13:00 2004 @@ -1,4 +1,11 @@ //===-- TransformFunctionBody.cpp - Pool Function Transformer -------------===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by the LLVM research group and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// // // This file defines the PoolAllocate::TransformBody method. // From brukman at cs.uiuc.edu Thu Nov 4 22:11:51 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Thu, 4 Nov 2004 22:11:51 -0600 Subject: [llvm-commits] CVS: llvm/examples/Fibonacci/fibonacci.cpp Message-ID: <200411050411.WAA24785@zion.cs.uiuc.edu> Changes in directory llvm/examples/Fibonacci: fibonacci.cpp updated: 1.4 -> 1.5 --- Log message: Clean up code layout, delete extra blank line, say `fibonacci' instead of `foo' --- Diffs of the changes: (+2 -4) Index: llvm/examples/Fibonacci/fibonacci.cpp diff -u llvm/examples/Fibonacci/fibonacci.cpp:1.4 llvm/examples/Fibonacci/fibonacci.cpp:1.5 --- llvm/examples/Fibonacci/fibonacci.cpp:1.4 Wed Nov 3 23:00:18 2004 +++ llvm/examples/Fibonacci/fibonacci.cpp Thu Nov 4 22:11:40 2004 @@ -50,7 +50,6 @@ Argument *ArgX = FibF->abegin(); // Get the arg. ArgX->setName("AnArg"); // Give it a nice symbolic name for fun. - // Create the true_block. BasicBlock *RetBB = new BasicBlock("return", FibF); // Create an exit block. @@ -103,10 +102,9 @@ std::cerr << "OK\n"; std::cerr << "We just constructed this LLVM module:\n\n---------\n" << *M; - std::cerr << "---------\nstarting fibonacci(" - << n << ") with JIT...\n"; + std::cerr << "---------\nstarting fibonacci(" << n << ") with JIT...\n"; - // Call the `foo' function with argument n: + // Call the Fibonacci function with argument n: std::vector Args(1); Args[0].IntVal = n; GenericValue GV = EE->runFunction(FibF, Args); From lattner at cs.uiuc.edu Thu Nov 4 22:15:45 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Nov 2004 22:15:45 -0600 Subject: [llvm-commits] CVS: llvm/win32/TableGen/TableGen.vcproj Message-ID: <200411050415.iA54FiQU003148@apoc.cs.uiuc.edu> Changes in directory llvm/win32/TableGen: TableGen.vcproj updated: 1.1 -> 1.2 --- Log message: Fix project file, patch contributed by Jeff Cohen --- Diffs of the changes: (+0 -1) Index: llvm/win32/TableGen/TableGen.vcproj diff -u llvm/win32/TableGen/TableGen.vcproj:1.1 llvm/win32/TableGen/TableGen.vcproj:1.2 --- llvm/win32/TableGen/TableGen.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/TableGen/TableGen.vcproj Thu Nov 4 22:15:30 2004 @@ -35,7 +35,6 @@ Name="VCCustomBuildTool"/> Changes in directory llvm/win32: llvm.suo (r1.1) removed --- Log message: Remove this file as suggested by Jeff Cohen --- Diffs of the changes: (+0 -0) From lattner at persephone.cs.uiuc.edu Thu Nov 4 22:46:07 2004 From: lattner at persephone.cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Nov 2004 22:46:07 -0600 (CST) Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp Message-ID: <20041105044607.2D008680947@persephone.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.278 -> 1.279 --- Log message: Fix some warnings on VC++ --- Diffs of the changes: (+1 -3) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.278 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.279 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.278 Mon Nov 1 21:50:32 2004 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Thu Nov 4 22:45:43 2004 @@ -572,7 +572,7 @@ if (ConstantInt *CI = dyn_cast(RHSC)) { unsigned NumBits = CI->getType()->getPrimitiveSize()*8; uint64_t Val = CI->getRawValue() & (1ULL << NumBits)-1; - if (Val == (1ULL << NumBits-1)) + if (Val == (1ULL << (NumBits-1))) return BinaryOperator::createXor(LHS, RHS); } @@ -3457,7 +3457,6 @@ InstCombiner *IC) { unsigned PS = IC->getTargetData().getPointerSize(); const Type *VTy = V->getType(); - Instruction *Cast; if (!VTy->isSigned() && VTy->getPrimitiveSize() < PS) // We must insert a cast to ensure we sign-extend. V = IC->InsertNewInstBefore(new CastInst(V, VTy->getSignedVersion(), @@ -3591,7 +3590,6 @@ GO1 = ConstantExpr::getCast(GO1C, SO1->getType()); } else { unsigned PS = TD->getPointerSize(); - Instruction *Cast; if (SO1->getType()->getPrimitiveSize() == PS) { // Convert GO1 to SO1's type. GO1 = InsertSignExtendToPtrTy(GO1, SO1->getType(), &GEP, this); From lattner at persephone.cs.uiuc.edu Thu Nov 4 22:46:38 2004 From: lattner at persephone.cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Nov 2004 22:46:38 -0600 (CST) Subject: [llvm-commits] CVS: llvm/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp RetracePath.cpp Message-ID: <20041105044638.8C9EC680968@persephone.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Instrumentation/ProfilePaths: ProfilePaths.cpp updated: 1.39 -> 1.40 RetracePath.cpp updated: 1.10 -> 1.11 --- Log message: Remove dead vars --- Diffs of the changes: (+0 -2) Index: llvm/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp diff -u llvm/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp:1.39 llvm/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp:1.40 --- llvm/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp:1.39 Thu Jul 29 12:26:53 2004 +++ llvm/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp Thu Nov 4 22:46:22 2004 @@ -85,7 +85,6 @@ std::vector nodes; std::vector edges; - Node *tmp; Node *exitNode = 0, *startNode = 0; // The nodes must be uniquely identified: Index: llvm/lib/Transforms/Instrumentation/ProfilePaths/RetracePath.cpp diff -u llvm/lib/Transforms/Instrumentation/ProfilePaths/RetracePath.cpp:1.10 llvm/lib/Transforms/Instrumentation/ProfilePaths/RetracePath.cpp:1.11 --- llvm/lib/Transforms/Instrumentation/ProfilePaths/RetracePath.cpp:1.10 Thu Jul 29 12:26:53 2004 +++ llvm/lib/Transforms/Instrumentation/ProfilePaths/RetracePath.cpp Thu Nov 4 22:46:22 2004 @@ -134,7 +134,6 @@ std::vector nodes; std::vector edges; - Node *tmp; Node *exitNode=0, *startNode=0; //Creat cfg just once for each function! From lattner at persephone.cs.uiuc.edu Thu Nov 4 22:47:53 2004 From: lattner at persephone.cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Nov 2004 22:47:53 -0600 (CST) Subject: [llvm-commits] CVS: llvm/lib/CodeGen/RegAllocLinearScan.cpp Message-ID: <20041105044753.1E23468097F@persephone.cs.uiuc.edu> Changes in directory llvm/lib/CodeGen: RegAllocLinearScan.cpp updated: 1.96 -> 1.97 --- Log message: Do not make i have bigger scope that we need --- Diffs of the changes: (+2 -2) Index: llvm/lib/CodeGen/RegAllocLinearScan.cpp diff -u llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.96 llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.97 --- llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.96 Wed Sep 29 21:02:33 2004 +++ llvm/lib/CodeGen/RegAllocLinearScan.cpp Thu Nov 4 22:47:37 2004 @@ -503,8 +503,8 @@ // scan the rest and undo each interval that expired after t and // insert it in active (the next iteration of the algorithm will // put it in inactive if required) - IntervalPtrs::iterator i = handled_.begin(), e = handled_.end(); - for (; i != e; ++i) { + for (IntervalPtrs::iterator i = handled_.begin(), e = handled_.end(); + i != e; ++i) { if (!(*i)->expiredAt(earliestStart) && (*i)->expiredAt(cur->start())) { DEBUG(std::cerr << "\t\t\tundo changes for: " << **i << '\n'); active_.push_back(*i); From lattner at persephone.cs.uiuc.edu Thu Nov 4 22:48:53 2004 From: lattner at persephone.cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Nov 2004 22:48:53 -0600 (CST) Subject: [llvm-commits] CVS: llvm/utils/TableGen/InstrSelectorEmitter.cpp Record.cpp Message-ID: <20041105044853.F03C46809A1@persephone.cs.uiuc.edu> Changes in directory llvm/utils/TableGen: InstrSelectorEmitter.cpp updated: 1.42 -> 1.43 Record.cpp updated: 1.37 -> 1.38 --- Log message: Quiet VC++ warnings --- Diffs of the changes: (+2 -2) Index: llvm/utils/TableGen/InstrSelectorEmitter.cpp diff -u llvm/utils/TableGen/InstrSelectorEmitter.cpp:1.42 llvm/utils/TableGen/InstrSelectorEmitter.cpp:1.43 --- llvm/utils/TableGen/InstrSelectorEmitter.cpp:1.42 Wed Sep 1 17:55:40 2004 +++ llvm/utils/TableGen/InstrSelectorEmitter.cpp Thu Nov 4 22:48:38 2004 @@ -344,7 +344,7 @@ break; } - return AnyUnset | N->getType() == MVT::Other; + return AnyUnset | (N->getType() == MVT::Other); } /// clone - This method is used to make an exact copy of the current pattern, Index: llvm/utils/TableGen/Record.cpp diff -u llvm/utils/TableGen/Record.cpp:1.37 llvm/utils/TableGen/Record.cpp:1.38 --- llvm/utils/TableGen/Record.cpp:1.37 Fri Oct 8 09:59:05 2004 +++ llvm/utils/TableGen/Record.cpp Thu Nov 4 22:48:38 2004 @@ -67,7 +67,7 @@ if (Value & ~((1LL << Size)-1)) return 0; } else { - if ((Value >> Size) != -1 || ((Value & (1 << Size-1)) == 0)) + if ((Value >> Size) != -1 || ((Value & (1 << (Size-1))) == 0)) return 0; } From lattner at persephone.cs.uiuc.edu Thu Nov 4 22:51:15 2004 From: lattner at persephone.cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Nov 2004 22:51:15 -0600 (CST) Subject: [llvm-commits] CVS: llvm/lib/Target/X86/X86CodeEmitter.cpp Message-ID: <20041105045115.57A056809CB@persephone.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: X86CodeEmitter.cpp updated: 1.68 -> 1.69 --- Log message: Quiet VC++ warnings --- Diffs of the changes: (+2 -2) Index: llvm/lib/Target/X86/X86CodeEmitter.cpp diff -u llvm/lib/Target/X86/X86CodeEmitter.cpp:1.68 llvm/lib/Target/X86/X86CodeEmitter.cpp:1.69 --- llvm/lib/Target/X86/X86CodeEmitter.cpp:1.68 Mon Oct 18 10:54:17 2004 +++ llvm/lib/Target/X86/X86CodeEmitter.cpp Thu Nov 4 22:50:59 2004 @@ -61,11 +61,11 @@ void *X86JITInfo::getJITStubForFunction(Function *F, MachineCodeEmitter &MCE) { - return (void*)((unsigned long)getResolver(MCE).getLazyResolver(F)); + return (void*)(intptr_t)getResolver(MCE).getLazyResolver(F); } void X86JITInfo::replaceMachineCodeForFunction (void *Old, void *New) { - char *OldByte = (char *) Old; + unsigned char *OldByte = (char *) Old; *OldByte++ = 0xE9; // Emit JMP opcode. int32_t *OldWord = (int32_t *) OldByte; int32_t NewAddr = (intptr_t) New; From lattner at persephone.cs.uiuc.edu Thu Nov 4 22:52:24 2004 From: lattner at persephone.cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Nov 2004 22:52:24 -0600 (CST) Subject: [llvm-commits] CVS: llvm/lib/Analysis/AliasSetTracker.cpp Message-ID: <20041105045224.77FEA6809E7@persephone.cs.uiuc.edu> Changes in directory llvm/lib/Analysis: AliasSetTracker.cpp updated: 1.28 -> 1.29 --- Log message: Remove dead var --- Diffs of the changes: (+0 -1) Index: llvm/lib/Analysis/AliasSetTracker.cpp diff -u llvm/lib/Analysis/AliasSetTracker.cpp:1.28 llvm/lib/Analysis/AliasSetTracker.cpp:1.29 --- llvm/lib/Analysis/AliasSetTracker.cpp:1.28 Wed Sep 15 11:59:47 2004 +++ llvm/lib/Analysis/AliasSetTracker.cpp Thu Nov 4 22:52:08 2004 @@ -265,7 +265,6 @@ bool AliasSetTracker::add(CallSite CS) { - bool NewPtr; if (Function *F = CS.getCalledFunction()) if (AA.doesNotAccessMemory(F)) return true; // doesn't alias anything From lattner at cs.uiuc.edu Fri Nov 5 01:18:53 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri, 5 Nov 2004 01:18:53 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Message-ID: <200411050718.iA57Irgu007718@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.16 -> 1.17 --- Log message: Add a more systematic way of getting traces from the pool allocator. Give each dynamic pool a unique ID # --- Diffs of the changes: (+92 -26) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.16 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.17 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.16 Tue Nov 2 00:06:47 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Fri Nov 5 01:18:42 2004 @@ -18,26 +18,83 @@ #include #include -//#define DEBUG(X) X +// Configuration macros. +//#define PRINT_POOL_TRACE +//#define PRINT_NUM_POOLS -#ifndef DEBUG -#define DEBUG(X) -#endif -//#define PRINT_NUM_POOLS +//===----------------------------------------------------------------------===// +// Pool Debugging stuff. +//===----------------------------------------------------------------------===// + +#ifdef PRINT_POOL_TRACE +#define PRINT_NUM_POOLS + +struct PoolID { + PoolTy *PD; + unsigned ID; +}; + +struct PoolID *PoolIDs = 0; +static unsigned NumLivePools = 0; +static unsigned NumPoolIDsAllocated = 0; +static unsigned CurPoolID = 0; + +static unsigned addPoolNumber(PoolTy *PD) { + if (NumLivePools == NumPoolIDsAllocated) { + NumPoolIDsAllocated = (10+NumPoolIDsAllocated)*2; + PoolIDs = (PoolID*)realloc(PoolIDs, sizeof(PoolID)*NumPoolIDsAllocated); + } + + PoolIDs[NumLivePools].PD = PD; + PoolIDs[NumLivePools].ID = ++CurPoolID; + NumLivePools++; + return CurPoolID; +} + +static unsigned getPoolNumber(PoolTy *PD) { + if (PD == 0) return 1234567; + for (unsigned i = 0; i != NumLivePools; ++i) + if (PoolIDs[i].PD == PD) + return PoolIDs[i].ID; + fprintf(stderr, "INVALID/UNKNOWN POOL DESCRIPTOR: 0x%X\n", (unsigned)PD); + return 0; +} + +static unsigned removePoolNumber(PoolTy *PD) { + for (unsigned i = 0; i != NumLivePools; ++i) + if (PoolIDs[i].PD == PD) { + unsigned PN = PoolIDs[i].ID; + memmove(&PoolIDs[i], &PoolIDs[i+1], sizeof(PoolID)*(NumLivePools-i-1)); + --NumLivePools; + return PN; + } + fprintf(stderr, "INVALID/UNKNOWN POOL DESCRIPTOR: 0x%X\n", (unsigned)PD); + return 0; +} + +#define DO_IF_TRACE(X) X +#else +#define DO_IF_TRACE(X) +#endif #ifdef PRINT_NUM_POOLS static unsigned PoolCounter = 0; +static unsigned PoolsInited = 0; static void PoolCountPrinter() { - fprintf(stderr, "\n\n*** %d DYNAMIC POOLS ***\n\n", PoolCounter); + fprintf(stderr, "\n\n" + "*** %d DYNAMIC POOLS INITIALIZED ***\n\n" + "*** %d DYNAMIC POOLS ALLOCATED FROM ***\n\n", + PoolsInited, PoolCounter); } +#define DO_IF_PNP(X) X +#else +#define DO_IF_PNP(X) #endif //===----------------------------------------------------------------------===// -// // PoolSlab implementation -// //===----------------------------------------------------------------------===// #define PageSize (4*1024U) @@ -121,17 +178,18 @@ memset(Pool, 0, sizeof(PoolTy)); Pool->AllocSize = PageSize; Pool->DeclaredSize = DeclaredSize; - DEBUG(printf("init pool 0x%X\n", Pool)); + DO_IF_TRACE(fprintf(stderr, "[%d] poolinit(0x%X, %d)\n", addPoolNumber(Pool), + Pool, DeclaredSize)); + DO_IF_PNP(++PoolsInited); // Track # pools initialized + +#ifdef PRINT_NUM_POOLS static bool Initialized = 0; if (!Initialized) { Initialized = 1; - -#ifdef PRINT_NUM_POOLS atexit(PoolCountPrinter); -#endif } - +#endif } // pooldestroy - Release all memory allocated for a pool @@ -139,9 +197,12 @@ void pooldestroy(PoolTy *Pool) { assert(Pool && "Null pool pointer passed in to pooldestroy!\n"); - DEBUG(printf("destroy pool 0x%X NextAllocSize = %d AvgObjSize = %d\n", Pool, - Pool->AllocSize, - Pool->NumObjects ? Pool->BytesAllocated/Pool->NumObjects : 0)); + DO_IF_TRACE(fprintf(stderr, "[%d] pooldestroy(0x%X) BytesAlloc=%d NumObjs=%d" + " AvgObjSize=%d NextAllocSize=%d\n", + removePoolNumber(Pool), Pool, Pool->BytesAllocated, + Pool->NumObjects, + Pool->NumObjects ? Pool->BytesAllocated/Pool->NumObjects : 0, + Pool->AllocSize)); // Free all allocated slabs. PoolSlab *PS = Pool->Slabs; @@ -161,6 +222,9 @@ } void *poolalloc(PoolTy *Pool, unsigned NumBytes) { + DO_IF_TRACE(fprintf(stderr, "[%d] poolalloc(%d) -> ", + getPoolNumber(Pool), NumBytes)); + // If a null pool descriptor is passed in, this is not a pool allocated data // structure. Hand off to the system malloc. if (Pool == 0) return malloc(NumBytes); @@ -173,9 +237,8 @@ if (NumBytes < (sizeof(FreedNodeHeader)-sizeof(NodeHeader))) NumBytes = sizeof(FreedNodeHeader)-sizeof(NodeHeader); -#ifdef PRINT_NUM_POOLS - if (Pool->NumObjects == 0) ++PoolCounter; // Track # pools. -#endif + DO_IF_PNP(if (Pool->NumObjects == 0) ++PoolCounter); // Track # pools. + ++Pool->NumObjects; Pool->BytesAllocated += NumBytes; @@ -207,8 +270,7 @@ NumBytes = FirstNodeSize; } FirstNode->Header.Size = NumBytes|1; // Mark as allocated - DEBUG(printf("alloc Pool:0x%X Bytes:%d -> 0x%X\n", Pool, NumBytes, - &FirstNode->Header+1)); + DO_IF_TRACE(fprintf(stderr, "0x%X\n", &FirstNode->Header+1)); return &FirstNode->Header+1; } } @@ -241,8 +303,7 @@ NumBytes = FNN->Header.Size; } FNN->Header.Size = NumBytes|1; // Mark as allocated - DEBUG(printf("alloc Pool:0x%X Bytes:%d -> 0x%X\n", Pool, NumBytes, - &FNN->Header+1)); + DO_IF_TRACE(fprintf(stderr, "0x%X\n", &FNN->Header+1)); return &FNN->Header+1; } @@ -267,12 +328,14 @@ LAH->Prev = &Pool->LargeArrays; LAH->Size = NumBytes; LAH->Marker = ~0U; - DEBUG(printf("alloc large Pool:0x%X NumBytes:%d -> 0x%X\n", Pool, - NumBytes, LAH+1)); + DO_IF_TRACE(fprintf(stderr, "0x%X [large]\n", LAH+1)); return LAH+1; } void poolfree(PoolTy *Pool, void *Node) { + DO_IF_TRACE(fprintf(stderr, "[%d] poolfree(0x%X) ", + getPoolNumber(Pool), Node)); + // If a null pool descriptor is passed in, this is not a pool allocated data // structure. Hand off to the system free. if (Pool == 0) { free(Node); return; } @@ -282,7 +345,7 @@ FreedNodeHeader *FNH = (FreedNodeHeader*)((char*)Node-sizeof(NodeHeader)); assert((FNH->Header.Size & 1) && "Node not allocated!"); unsigned Size = FNH->Header.Size & ~1; - DEBUG(printf("free Pool:0x%X <- 0x%X Size:%d\n", Pool, Node, Size)); + DO_IF_TRACE(fprintf(stderr, "%d bytes\n", Size)); if (Size == ~1U) goto LargeArrayCase; @@ -325,6 +388,9 @@ } void *poolrealloc(PoolTy *Pool, void *Node, unsigned NumBytes) { + DO_IF_TRACE(fprintf(stderr, "[%d] poolrealloc(0x%X, %d)\n", + getPoolNumber(Pool), Node, NumBytes)); + // If a null pool descriptor is passed in, this is not a pool allocated data // structure. Hand off to the system realloc. if (Pool == 0) return realloc(Node, NumBytes); From reid at x10sys.com Fri Nov 5 03:19:28 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 03:19:28 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Bytecode/Archive.h Message-ID: <200411050919.DAA14495@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Bytecode: Archive.h added (r1.1) --- Log message: First version of the interface to Archive files. This introduces the llvm::Archive class to provide for reading, writing, indexing and search functions on standard ar(1) format files that contain bytecode modules. Implementation to follow. --- Diffs of the changes: (+261 -0) Index: llvm/include/llvm/Bytecode/Archive.h diff -c /dev/null llvm/include/llvm/Bytecode/Archive.h:1.1 *** /dev/null Fri Nov 5 03:19:27 2004 --- llvm/include/llvm/Bytecode/Archive.h Fri Nov 5 03:19:17 2004 *************** *** 0 **** --- 1,261 ---- + //===-- llvm/Bytecode/Archive.h - LLVM Bytecode Archive ---------*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by Reid Spencer and is distributed under the + // University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + // + // This header file defines the interface to LLVM Archive files. The interface + // is provided by the Archive class implemented by the lib/Bytecode/Archive + // library. This library is used to read and write archive (*.a) files that + // contain LLVM bytecode files (or others). It provides rudimentary capabilities + // to construct an archive file from a set of files, read the archive members + // into memory, search the archive for member files that fulfill unresolved + // symbols, and extract the archive back to the file system. Full + // symbol table support is provided for loading only those files that resolve + // symbols. Note that read performance of this library is _crucial_ for + // performance of JIT type applications and the linkers. Consequently, the + // library is optimized for reading. + // + //===----------------------------------------------------------------------===// + + #ifndef LLVM_BYTECODE_ARCHIVER_H + #define LLVM_BYTECODE_ARCHIVER_H + + #include "llvm/System/Path.h" + #include + + namespace llvm { + + class ModuleProvider; + class Module; + + /// This class represents an archive file. It abstracts away the file format, + /// and logical operations that can be done on an archive file. It also provides + /// utilities for controlling the runtime loading/reading of the archive file + /// to provide efficient access mechanisms for JIT systems and linkers. + class Archive { + + /// @name Types + /// @{ + public: + /// The user's interface to the archive symbol table. This multimap allows + /// symbols to be looked up and modules to be instantiated from the file + /// lazily via the ModuleProvider::materializeModule method. + typedef std::map SymTab; + + /// This typedef is just shorthand for a vector of Path names + typedef std::vector PathList; + + /// This typedef is just shorthand for a vector of Modules + typedef std::vector ModuleList; + + /// This typedef is just shorthand for a vector of ModuleProvider + typedef std::vector ModuleProviderList; + + /// This typedef is just shorthand for a vector of strings + typedef std::vector StringList; + + /// @} + /// @name Constructors + /// @{ + public: + /// Create an empty archive file, \p Filename. The returned Archive object + /// will have no file members and an empty symbol table. The actual archive + /// file is not created until either the flush() method is called or the + /// returned Archive object is destructed. + /// @throws std::string if an error occurs + /// @returns An Archive* that represents the new archive file. + /// @brief Create an empty archive file. + static Archive* CreateEmpty( + const sys::Path& Filename ///< Name of archive file + ); + + /// Create a new archive file, \p Filename, from the LLVM modules \p Modules. + /// The module's externally visible linkage symbols will be added to the + /// archive's symbol table. The names of the file members will be obtained + /// from the Module::getModuleId() method. If that name is not unique, it will + /// be made unique by appending a monotonically increasng integer to it. If + /// \p StripName is non-empty, it specifies a prefix to be stripped from the + /// name of the file members. This allows archives with relative path names + /// to be created. The actual archive file is not created until either the + /// flush() method is called or the returned Archive object is destructed. + /// @returns An Archive* that that represents the newly created archive file. + /// @throws std::string if an error occurs + /// @brief Create an archive file from modules. + static Archive* CreateFromModules( + const sys::Path& Filename, ///< Name of archive file + const ModuleList& Modules, ///< Modules to be put in archive + const std::string& StripName="" ///< Prefix to strip from member names + ); + + /// Create a new archive file, \p Filename, from a set of existing \p Files. + /// Each entry in \p Files will be added to the archive. If any file is an + /// llvm bytecode file, its externally visible linkage symbols will be added + /// to the archive's symbol table. If any of the paths in \p Files refer to + /// directories, those directories will be ignored. Full path names to + /// files must be provided. However, if \p StripName is non-empty, it + /// specifies a prefix string to be removed from each path before it is + /// written as the name of the file member. Any path names that do not have + /// the \p StripName as a prefix will be saved with the full path name + /// provided in \p Files. This permits archives relative to a top level + /// directory to be created. + /// @throws std::string if an error occurs + /// @brief Create an archive file from files. + static Archive* CreateFromFiles( + const sys::Path& Filename, ///< Name of archive file + const PathList& Files, ///< File paths to be put in archive + const std::string& StripName="" ///< Prefix path name to strip from names + ); + + /// Open an existing archive file from \p Filename. The necessary + /// arrangements to read the file are made, but nothing much is actually + /// read from the file. Use the Accessor methods below to lazily obtain + /// those portions of the file that are of interest. + /// @throws std::string if an error occurs + /// @brief Open an existing archive. + static Archive* Open( + const sys::Path& Filename ///< Name of the archive file + ); + + /// This destructor "finalizes" the archive. Regardless of whether the + /// archive was created or opened, all memory associated with the archive + /// is released, including any SymTab* returned by the getSymbolTable() + /// method, any ModuleProviders and their associated Modules returned by + /// any interface method, etc. Additionally, if the archive was created + /// using one of the Create* methods, the archive is written to disk in + /// its final format. After this method exits, none of the memory + /// associated with the archive is valid. It is the user's responsibility + /// to ensure that all references to such memory is removed before the + /// Archive is destructed. + /// @throws std::string if an error occurs + /// @brief Destruct in-memory archive + ~Archive(); + + /// @} + /// @name Accessors + /// @{ + public: + /// This accessor looks up the \p symbol in the archive's symbol table and + /// returns the associated module that defines that symbol. This method can + /// be called as many times as necessary. This is handy for linking the + /// archive into another module based on unresolved symbols. Note that the + /// ModuleProvider returned by this accessor is constant and it may refer + /// to the same ModuleProvider object returned by this accessor in a + /// previous call (because the associated module defines both symbols). To + /// use the returned ModuleProvider* you must make a copy and call the + /// materializeModule method on the copy. + /// @throws std::string if an error occurs + /// @returns The ModuleProvider* found or null if the archive does not + /// contain a module that defines the \p symbol. + /// @brief Look up a module by symbol name. + const ModuleProvider* findModuleContainingSymbol( + const std::string& symbol ///< Symbol to be sought + ) const; + + /// Return the list of all the paths for the file members in the archive. + /// This is handy for generating the table of contents of the archive. Note + /// that the PathList object is cleared before it is populated. Any previous + /// contents will be lost. + /// @throw std::string if an error occurs + /// @returns nothing + /// @brief Get all the paths in the archive + void getAllPaths( + PathList& Paths ///< The list of paths returned + ); + + /// This method returns a caller readable SymTab object which is a std::map + /// of symbol names to ModuleProviders. Callers can traverse this symbol + /// table, look up specific symbols, etc. and materialize any Modules they + /// want with the associated ModuleProviders. It is unnecessary to call + /// this accessor more than once as the same object is alway returned, even + /// if changes have been made. + /// @returns a constant SymTab* that is the same for every invocation. The + /// caller should not attempt to free or modify this SymTab object, just use + /// it. + /// @brief Get the archive's symbol table. + const SymTab* getSymbolTable(); + + /// Extract the contents of the archive back to the file system using \p + /// RootDir as the directory at the root of the extraction. Each file + /// member is written back as a separate file. If \p flat is false, then + /// directories are created as necessary to restore the files to the correct + /// sub-directory of \p root as specified in the full path of the file + /// member. Otherwise, paths are ignored and all file members will be + /// extracted to the \p root directory using only the filename portion of + /// the path (directories ignored). If \p symtab is true, the archive's + /// symbol table will also be extracted to a file named __SYMTAB. + /// @returns nothing + /// @throws std::string if an error occurs + /// @brief Extract archive contents to a file. + void extractAllToDirectory( + const sys::Path& RootDir, ///< The root directory for extraction + bool Flat = true, ///< false = recreate directory structure + bool Symtab = false ///< true = extract symbol table too + ); + + /// Extract one file in the archive back to the file system using \p RootDir + /// as the directory at the root of the extraction. The file \p name is + /// extracted and placed into \p RootDir. If \p Flat is false, then any + /// intermediate directory names in the file member's path will also be + /// created. Otherwise, the member's file is created in RootDir ignoring + /// the leading path and using only the member's file name. + /// @throws std::string if an error occurs. + /// @returns nothing + /// @brief Extract a single archive file. + void extractOneFileToDirectory( + const sys::Path& RootDir, ///< The root directory for extraction + const sys::Path& name, ///< Name of file to extract + bool Flat = true ///< false = recreate directories + ); + + /// @} + /// @name Mutators + /// @{ + public: + /// Each entry in \p Files will be added to the archive. If any file is an + /// llvm bytecode file, its externally visible linkage symbols will be added + /// to the archive's symbol table. If any of the paths in \p Files refer to + /// directories, those directories will be ignored. Full path names to + /// files must be provided. However, if \p StripName is non-empty, it + /// specifies a prefix string to be removed from each path before it is + /// written as the name of the file member. Any path names that do not have + /// the \p StripName as a prefix will be saved with the full path name + /// provided. This permits archives relative to a top level directory + /// to be created. + /// @throws std::string if an error occurs + /// @returns nothing + /// @brief Add a set of files to the archive. + void addFiles( + const PathList& Files, ///< The names of files to add to archive + const std::string& StripName="" ///< Prefix path to strip from names + ); + + /// Add a set of Modules to the archive. Names of member files will + /// be taken from the Module identifier (Module::getModuleIdentifier) if it + /// is unique. Non-unique member names will be made unique by appending a + /// number. The symbol table will be augmented with the global symbols of + /// all the modules provided. If \p StripName is non-empty, it + /// specifies a prefix string to be removed from each moduleId before it is + /// written as the name of the file member. Any path names that do not have + /// the \p StripName as a prefix will be saved with the full path name + /// provided. This permits archives relative to a top level directory to + /// be created. + /// @throws std::string if an error occurs + /// @returns nothing + /// @brief Add a set of modules to the archive. + void addModules( + const ModuleList& Modules, ///< The modules to add to the archive + const std::string& StripName="" ///< Prefix path to strip from names + ); + + + /// @} + }; + + } // End llvm namespace + + // vim: sw=2 ai + #endif From llvm at cs.uiuc.edu Fri Nov 5 03:19:50 2004 From: llvm at cs.uiuc.edu (LLVM) Date: Fri, 5 Nov 2004 03:19:50 -0600 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Archive/ Message-ID: <200411050919.DAA14509@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Archive: --- Log message: Directory /var/cvs/llvm/llvm/lib/Bytecode/Archive added to the repository --- Diffs of the changes: (+0 -0) From criswell at cs.uiuc.edu Fri Nov 5 10:17:21 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Fri, 5 Nov 2004 10:17:21 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/X86CodeEmitter.cpp Message-ID: <200411051617.KAA03647@choi.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: X86CodeEmitter.cpp updated: 1.69 -> 1.70 --- Log message: Fix compilation problem; make the cast and the LHS be the same type. --- Diffs of the changes: (+1 -1) Index: llvm/lib/Target/X86/X86CodeEmitter.cpp diff -u llvm/lib/Target/X86/X86CodeEmitter.cpp:1.69 llvm/lib/Target/X86/X86CodeEmitter.cpp:1.70 --- llvm/lib/Target/X86/X86CodeEmitter.cpp:1.69 Thu Nov 4 22:50:59 2004 +++ llvm/lib/Target/X86/X86CodeEmitter.cpp Fri Nov 5 10:17:06 2004 @@ -65,7 +65,7 @@ } void X86JITInfo::replaceMachineCodeForFunction (void *Old, void *New) { - unsigned char *OldByte = (char *) Old; + unsigned char *OldByte = (unsigned char *) Old; *OldByte++ = 0xE9; // Emit JMP opcode. int32_t *OldWord = (int32_t *) OldByte; int32_t NewAddr = (intptr_t) New; From reid at x10sys.com Fri Nov 5 11:44:37 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 11:44:37 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Bytecode/Archive.h Message-ID: <200411051744.LAA18647@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Bytecode: Archive.h updated: 1.1 -> 1.2 --- Log message: * Documentation corrections (thanks to Chris for nit-picking) * Remove dead typedefs. * Redefine how getAllPaths treats its argument. --- Diffs of the changes: (+11 -18) Index: llvm/include/llvm/Bytecode/Archive.h diff -u llvm/include/llvm/Bytecode/Archive.h:1.1 llvm/include/llvm/Bytecode/Archive.h:1.2 --- llvm/include/llvm/Bytecode/Archive.h:1.1 Fri Nov 5 03:19:17 2004 +++ llvm/include/llvm/Bytecode/Archive.h Fri Nov 5 11:44:26 2004 @@ -21,8 +21,8 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_BYTECODE_ARCHIVER_H -#define LLVM_BYTECODE_ARCHIVER_H +#ifndef LLVM_BYTECODE_ARCHIVE_H +#define LLVM_BYTECODE_ARCHIVE_H #include "llvm/System/Path.h" #include @@ -52,20 +52,13 @@ /// This typedef is just shorthand for a vector of Modules typedef std::vector ModuleList; - /// This typedef is just shorthand for a vector of ModuleProvider - typedef std::vector ModuleProviderList; - - /// This typedef is just shorthand for a vector of strings - typedef std::vector StringList; - /// @} /// @name Constructors /// @{ public: /// Create an empty archive file, \p Filename. The returned Archive object /// will have no file members and an empty symbol table. The actual archive - /// file is not created until either the flush() method is called or the - /// returned Archive object is destructed. + /// file is not created until the returned Archive object is destructed. /// @throws std::string if an error occurs /// @returns An Archive* that represents the new archive file. /// @brief Create an empty archive file. @@ -77,11 +70,11 @@ /// The module's externally visible linkage symbols will be added to the /// archive's symbol table. The names of the file members will be obtained /// from the Module::getModuleId() method. If that name is not unique, it will - /// be made unique by appending a monotonically increasng integer to it. If + /// be made unique by appending a monotonically increasing integer to it. If /// \p StripName is non-empty, it specifies a prefix to be stripped from the /// name of the file members. This allows archives with relative path names - /// to be created. The actual archive file is not created until either the - /// flush() method is called or the returned Archive object is destructed. + /// to be created. The actual archive file is not created until the + /// returned Archive object is destructed. /// @returns An Archive* that that represents the newly created archive file. /// @throws std::string if an error occurs /// @brief Create an archive file from modules. @@ -155,10 +148,10 @@ const std::string& symbol ///< Symbol to be sought ) const; - /// Return the list of all the paths for the file members in the archive. + /// Return the list of all the \p Paths for the file members in the archive. /// This is handy for generating the table of contents of the archive. Note - /// that the PathList object is cleared before it is populated. Any previous - /// contents will be lost. + /// that \p Paths is *not* cleared before it is populated. New entries are + /// appended to the end of the PathList. /// @throw std::string if an error occurs /// @returns nothing /// @brief Get all the paths in the archive @@ -166,7 +159,7 @@ PathList& Paths ///< The list of paths returned ); - /// This method returns a caller readable SymTab object which is a std::map + /// This method returns a caller readable SymTab object which is a map /// of symbol names to ModuleProviders. Callers can traverse this symbol /// table, look up specific symbols, etc. and materialize any Modules they /// want with the associated ModuleProviders. It is unnecessary to call @@ -251,11 +244,11 @@ const std::string& StripName="" ///< Prefix path to strip from names ); - /// @} }; } // End llvm namespace // vim: sw=2 ai + #endif From criswell at cs.uiuc.edu Fri Nov 5 12:09:01 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Fri, 5 Nov 2004 12:09:01 -0600 (CST) Subject: [llvm-commits] CVS: poolalloc/test/TEST.cputrack.Makefile TEST.p4perf.Makefile TEST.pavtl.Makefile TEST.perf.Makefile TEST.poolalloc.Makefile TEST.strace.Makefile Message-ID: <200411051809.MAA21673@kain.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.cputrack.Makefile updated: 1.6 -> 1.7 TEST.p4perf.Makefile updated: 1.6 -> 1.7 TEST.pavtl.Makefile updated: 1.10 -> 1.11 TEST.perf.Makefile updated: 1.10 -> 1.11 TEST.poolalloc.Makefile updated: 1.26 -> 1.27 TEST.strace.Makefile updated: 1.6 -> 1.7 --- Log message: Switch PROGDIR to point to the source tree instead of the object tree (as Makefile.programs in the LLVM test suite now does). This allows Makefiles within llvm-test to find programs like Sandbox.sh relative to PROGDIR. Add another entry for which pool allocation runtime to use. Currently disabled by default. --- Diffs of the changes: (+7 -6) Index: poolalloc/test/TEST.cputrack.Makefile diff -u poolalloc/test/TEST.cputrack.Makefile:1.6 poolalloc/test/TEST.cputrack.Makefile:1.7 --- poolalloc/test/TEST.cputrack.Makefile:1.6 Wed Nov 3 13:10:42 2004 +++ poolalloc/test/TEST.cputrack.Makefile Fri Nov 5 12:08:50 2004 @@ -6,7 +6,7 @@ TESTNAME = $* CURDIR := $(shell cd .; pwd) -PROGDIR := $(shell cd $(LLVM_OBJ_ROOT)/projects/llvm-test; pwd)/ +PROGDIR := $(shell cd $(LLVM_SRC_ROOT)/projects/llvm-test; pwd)/ RELDIR := $(subst $(PROGDIR),,$(CURDIR)) Index: poolalloc/test/TEST.p4perf.Makefile diff -u poolalloc/test/TEST.p4perf.Makefile:1.6 poolalloc/test/TEST.p4perf.Makefile:1.7 --- poolalloc/test/TEST.p4perf.Makefile:1.6 Thu Oct 28 13:17:37 2004 +++ poolalloc/test/TEST.p4perf.Makefile Fri Nov 5 12:08:50 2004 @@ -6,7 +6,7 @@ TESTNAME = $* CURDIR := $(shell cd .; pwd) -PROGDIR := $(shell cd $(LLVM_OBJ_ROOT)/projects/llvm-test; pwd)/ +PROGDIR := $(shell cd $(LLVM_SRC_ROOT)/projects/llvm-test; pwd)/ RELDIR := $(subst $(PROGDIR),,$(CURDIR)) PERFEX := /home/vadve/criswell/local/Linux/bin/perfex Index: poolalloc/test/TEST.pavtl.Makefile diff -u poolalloc/test/TEST.pavtl.Makefile:1.10 poolalloc/test/TEST.pavtl.Makefile:1.11 --- poolalloc/test/TEST.pavtl.Makefile:1.10 Thu Oct 28 13:17:37 2004 +++ poolalloc/test/TEST.pavtl.Makefile Fri Nov 5 12:08:50 2004 @@ -6,7 +6,7 @@ TESTNAME = $* CURDIR := $(shell cd .; pwd) -PROGDIR := $(shell cd $(LLVM_OBJ_ROOT)/projects/llvm-test; pwd)/ +PROGDIR := $(shell cd $(LLVM_SRC_ROOT)/projects/llvm-test; pwd)/ RELDIR := $(subst $(PROGDIR),,$(CURDIR)) VTL := /opt/intel/vtune/bin/vtl Index: poolalloc/test/TEST.perf.Makefile diff -u poolalloc/test/TEST.perf.Makefile:1.10 poolalloc/test/TEST.perf.Makefile:1.11 --- poolalloc/test/TEST.perf.Makefile:1.10 Thu Oct 28 13:17:37 2004 +++ poolalloc/test/TEST.perf.Makefile Fri Nov 5 12:08:50 2004 @@ -6,7 +6,7 @@ TESTNAME = $* CURDIR := $(shell cd .; pwd) -PROGDIR := $(shell cd $(LLVM_OBJ_ROOT)/projects/llvm-test; pwd)/ +PROGDIR := $(shell cd $(LLVM_SRC_ROOT)/projects/llvm-test; pwd)/ RELDIR := $(subst $(PROGDIR),,$(CURDIR)) PERFEX := /home/vadve/criswell/local/Linux/bin/perfex Index: poolalloc/test/TEST.poolalloc.Makefile diff -u poolalloc/test/TEST.poolalloc.Makefile:1.26 poolalloc/test/TEST.poolalloc.Makefile:1.27 --- poolalloc/test/TEST.poolalloc.Makefile:1.26 Wed Nov 3 23:07:29 2004 +++ poolalloc/test/TEST.poolalloc.Makefile Fri Nov 5 12:08:50 2004 @@ -17,7 +17,7 @@ CURDIR := $(shell cd .; pwd) -PROGDIR := $(shell cd $(LLVM_OBJ_ROOT)/projects/llvm-test; pwd)/ +PROGDIR := $(shell cd $(LLVM_SRC_ROOT)/projects/llvm-test; pwd)/ RELDIR := $(subst $(PROGDIR),,$(CURDIR)) # Pool allocator pass shared object @@ -25,6 +25,7 @@ # Pool allocator runtime library #PA_RT := $(PROJECT_DIR)/lib/Bytecode/libpoolalloc_fl_rt.bc +#PA_RT_O := $(PROJECT_DIR)/lib/$(CONFIGURATION)/poolalloc_rt.o PA_RT_O := $(PROJECT_DIR)/lib/Release/poolalloc_rt.o #PA_RT_O := $(PROJECT_DIR)/lib/Release/poolalloc_fl_rt.o Index: poolalloc/test/TEST.strace.Makefile diff -u poolalloc/test/TEST.strace.Makefile:1.6 poolalloc/test/TEST.strace.Makefile:1.7 --- poolalloc/test/TEST.strace.Makefile:1.6 Thu Oct 28 16:11:48 2004 +++ poolalloc/test/TEST.strace.Makefile Fri Nov 5 12:08:50 2004 @@ -6,7 +6,7 @@ TESTNAME = $* CURDIR := $(shell cd .; pwd) -PROGDIR := $(shell cd $(LLVM_OBJ_ROOT)/projects/llvm-test; pwd)/ +PROGDIR := $(shell cd $(LLVM_SRC_ROOT)/projects/llvm-test; pwd)/ RELDIR := $(subst $(PROGDIR),,$(CURDIR)) STRACE := strace -c -f From reid at x10sys.com Fri Nov 5 12:48:13 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 12:48:13 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Bytecode/Archive.h Message-ID: <200411051848.MAA19324@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Bytecode: Archive.h updated: 1.2 -> 1.3 --- Log message: Go ahead and trust the client not to mess with the ModuleProvider* returned by the findModuleContainingSymbol method. --- Diffs of the changes: (+11 -6) Index: llvm/include/llvm/Bytecode/Archive.h diff -u llvm/include/llvm/Bytecode/Archive.h:1.2 llvm/include/llvm/Bytecode/Archive.h:1.3 --- llvm/include/llvm/Bytecode/Archive.h:1.2 Fri Nov 5 11:44:26 2004 +++ llvm/include/llvm/Bytecode/Archive.h Fri Nov 5 12:48:02 2004 @@ -135,16 +135,15 @@ /// returns the associated module that defines that symbol. This method can /// be called as many times as necessary. This is handy for linking the /// archive into another module based on unresolved symbols. Note that the - /// ModuleProvider returned by this accessor is constant and it may refer - /// to the same ModuleProvider object returned by this accessor in a - /// previous call (because the associated module defines both symbols). To - /// use the returned ModuleProvider* you must make a copy and call the - /// materializeModule method on the copy. + /// ModuleProvider returned by this accessor should not be deleted by the + /// caller. It is managed internally by the Archive class. It is possible + /// that multiple calls to this accessor will return the same ModuleProvider + /// instance because the associated module defines multiple symbols. /// @throws std::string if an error occurs /// @returns The ModuleProvider* found or null if the archive does not /// contain a module that defines the \p symbol. /// @brief Look up a module by symbol name. - const ModuleProvider* findModuleContainingSymbol( + ModuleProvider* findModuleContainingSymbol( const std::string& symbol ///< Symbol to be sought ) const; @@ -245,6 +244,12 @@ ); /// @} + /// @name Data + /// @{ + private: + class ArchiveInternals; + ArchiveInternals* impl; ///< Implementation class + /// @} }; } // End llvm namespace From lattner at cs.uiuc.edu Fri Nov 5 15:02:37 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri, 5 Nov 2004 15:02:37 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp Message-ID: <200411052102.iA5L2bxK028777@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.81 -> 1.82 --- Log message: Hack in a "fix" for the 20x slowdown we used to induce in povray and the 4x slowdown in eon --- Diffs of the changes: (+176 -161) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.81 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.82 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.81 Thu Nov 4 14:13:00 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Fri Nov 5 15:02:26 2004 @@ -205,7 +205,7 @@ } } - // Marked the returned node as alive... + // Marked the returned node as needing to be passed in. if (DSNode *RetNode = G.getReturnNodeFor(F).getNode()) RetNode->markReachableNodes(MarkedNodes); @@ -754,176 +754,191 @@ std::set AllocasHandled; - // Insert all of the poolalloc calls in the start of the function. + // Insert all of the poolinit/destroy calls into the function. for (unsigned i = 0, e = NodesToPA.size(); i != e; ++i) { DSNode *Node = NodesToPA[i]; - if (AllocaInst *PD = dyn_cast(PoolDescriptors[Node])) - if (AllocasHandled.insert(PD).second) { - // Convert the PoolUses/PoolFrees sets into something specific to this - // pool. - std::set UsingBlocks; + assert(isa(PoolDescriptors[Node]) && "Why pool allocate this?"); + AllocaInst *PD = cast(PoolDescriptors[Node]); + + bool HasUse = false; + std::set >::iterator XUI = + PoolUses.lower_bound(std::make_pair(PD, (Instruction*)0)); + HasUse |= XUI != PoolUses.end() && XUI->first == PD; + + std::set >::iterator XUI2 = + PoolFrees.lower_bound(std::make_pair(PD, (CallInst*)0)); + HasUse |= XUI2 != PoolFrees.end() && XUI2->first == PD; + + // FIXME: Turn this into an assert and fix the problem!! + //assert(HasUse && "Pool is not used, but is marked heap?!"); + if (!HasUse) continue; + + if (!AllocasHandled.insert(PD).second) continue; + + // Convert the PoolUses/PoolFrees sets into something specific to this + // pool. + std::set UsingBlocks; + + std::set >::iterator PUI = + PoolUses.lower_bound(std::make_pair(PD, (Instruction*)0)); + if (PUI != PoolUses.end() && PUI->first < PD) ++PUI; + for (; PUI != PoolUses.end() && PUI->first == PD; ++PUI) + UsingBlocks.insert(PUI->second->getParent()); + + // To calculate all of the basic blocks which require the pool to be + // initialized before, do a depth first search on the CFG from the using + // blocks. + std::set InitializedBefore; + std::set DestroyedAfter; + for (std::set::iterator I = UsingBlocks.begin(), + E = UsingBlocks.end(); I != E; ++I) { + for (df_ext_iterator > + DI = df_ext_begin(*I, InitializedBefore), + DE = df_ext_end(*I, InitializedBefore); DI != DE; ++DI) + /* empty */; - std::set >::iterator PUI = - PoolUses.lower_bound(std::make_pair(PD, (Instruction*)0)); - if (PUI != PoolUses.end() && PUI->first < PD) ++PUI; - for (; PUI != PoolUses.end() && PUI->first == PD; ++PUI) - UsingBlocks.insert(PUI->second->getParent()); - - // To calculate all of the basic blocks which require the pool to be - // initialized before, do a depth first search on the CFG from the using - // blocks. - std::set InitializedBefore; - std::set DestroyedAfter; - for (std::set::iterator I = UsingBlocks.begin(), - E = UsingBlocks.end(); I != E; ++I) { - for (df_ext_iterator > - DI = df_ext_begin(*I, InitializedBefore), - DE = df_ext_end(*I, InitializedBefore); DI != DE; ++DI) - /* empty */; - - for (idf_ext_iterator > - DI = idf_ext_begin(*I, DestroyedAfter), - DE = idf_ext_end(*I, DestroyedAfter); DI != DE; ++DI) - /* empty */; - } - // Now that we have created the sets, intersect them. - std::set LiveBlocks; - std::set_intersection(InitializedBefore.begin(),InitializedBefore.end(), - DestroyedAfter.begin(), DestroyedAfter.end(), - std::inserter(LiveBlocks, LiveBlocks.end())); - InitializedBefore.clear(); - DestroyedAfter.clear(); - - // Keep track of the blocks we have inserted poolinit/destroy in - std::set PoolInitInsertedBlocks, PoolDestroyInsertedBlocks; - - DEBUG(std::cerr << "POOL: " << PD->getName() << " information:\n"); - DEBUG(std::cerr << " Live in blocks: "); - for (std::set::iterator I = LiveBlocks.begin(), - E = LiveBlocks.end(); I != E; ++I) { - BasicBlock *BB = *I; - TerminatorInst *Term = BB->getTerminator(); - DEBUG(std::cerr << BB->getName() << " "); + for (idf_ext_iterator > + DI = idf_ext_begin(*I, DestroyedAfter), + DE = idf_ext_end(*I, DestroyedAfter); DI != DE; ++DI) + /* empty */; + } + // Now that we have created the sets, intersect them. + std::set LiveBlocks; + std::set_intersection(InitializedBefore.begin(),InitializedBefore.end(), + DestroyedAfter.begin(), DestroyedAfter.end(), + std::inserter(LiveBlocks, LiveBlocks.end())); + InitializedBefore.clear(); + DestroyedAfter.clear(); + + // Keep track of the blocks we have inserted poolinit/destroy in + std::set PoolInitInsertedBlocks, PoolDestroyInsertedBlocks; + + DEBUG(std::cerr << "POOL: " << PD->getName() << " information:\n"); + DEBUG(std::cerr << " Live in blocks: "); + for (std::set::iterator I = LiveBlocks.begin(), + E = LiveBlocks.end(); I != E; ++I) { + BasicBlock *BB = *I; + TerminatorInst *Term = BB->getTerminator(); + DEBUG(std::cerr << BB->getName() << " "); - // Check the predecessors of this block. If any preds are not in the - // set, or if there are no preds, insert a pool init. - bool AllIn, NoneIn; - AllOrNoneInSet(pred_begin(BB), pred_end(BB), LiveBlocks, AllIn, - NoneIn); - - if (NoneIn) { - if (!PoolInitInsertedBlocks.count(BB)) { - BasicBlock::iterator It = BB->begin(); - // Move through all of the instructions not in the pool - while (!PoolUses.count(std::make_pair(PD, It))) - // Advance past non-users deleting any pool frees that we run - // across. - DeleteIfIsPoolFree(It++, PD, PoolFrees); - if (!DisableInitDestroyOpt) - PoolInitPoints.push_back(It); - PoolInitInsertedBlocks.insert(BB); - } - } else if (!AllIn) { - TryAgainPred: - for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; - ++PI) - if (!LiveBlocks.count(*PI) && !PoolInitInsertedBlocks.count(*PI)){ - if (SplitCriticalEdge(BB, PI)) - // If the critical edge was split, *PI was invalidated - goto TryAgainPred; - - // Insert at the end of the predecessor, before the terminator. - if (!DisableInitDestroyOpt) - PoolInitPoints.push_back((*PI)->getTerminator()); - PoolInitInsertedBlocks.insert(*PI); - } + // Check the predecessors of this block. If any preds are not in the + // set, or if there are no preds, insert a pool init. + bool AllIn, NoneIn; + AllOrNoneInSet(pred_begin(BB), pred_end(BB), LiveBlocks, AllIn, + NoneIn); + + if (NoneIn) { + if (!PoolInitInsertedBlocks.count(BB)) { + BasicBlock::iterator It = BB->begin(); + // Move through all of the instructions not in the pool + while (!PoolUses.count(std::make_pair(PD, It))) + // Advance past non-users deleting any pool frees that we run + // across. + DeleteIfIsPoolFree(It++, PD, PoolFrees); + if (!DisableInitDestroyOpt) + PoolInitPoints.push_back(It); + PoolInitInsertedBlocks.insert(BB); + } + } else if (!AllIn) { + TryAgainPred: + for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; + ++PI) + if (!LiveBlocks.count(*PI) && !PoolInitInsertedBlocks.count(*PI)){ + if (SplitCriticalEdge(BB, PI)) + // If the critical edge was split, *PI was invalidated + goto TryAgainPred; + + // Insert at the end of the predecessor, before the terminator. + if (!DisableInitDestroyOpt) + PoolInitPoints.push_back((*PI)->getTerminator()); + PoolInitInsertedBlocks.insert(*PI); } - // Check the successors of this block. If some succs are not in the - // set, insert destroys on those successor edges. If all succs are - // not in the set, insert a destroy in this block. - AllOrNoneInSet(succ_begin(BB), succ_end(BB), LiveBlocks, - AllIn, NoneIn); - - if (NoneIn) { - // Insert before the terminator. - if (!PoolDestroyInsertedBlocks.count(BB)) { - BasicBlock::iterator It = Term; + } + // Check the successors of this block. If some succs are not in the + // set, insert destroys on those successor edges. If all succs are + // not in the set, insert a destroy in this block. + AllOrNoneInSet(succ_begin(BB), succ_end(BB), LiveBlocks, + AllIn, NoneIn); + + if (NoneIn) { + // Insert before the terminator. + if (!PoolDestroyInsertedBlocks.count(BB)) { + BasicBlock::iterator It = Term; - // Rewind to the first using insruction - while (!PoolUses.count(std::make_pair(PD, It))) - DeleteIfIsPoolFree(It--, PD, PoolFrees); - - // Insert after the first using instruction - if (!DisableInitDestroyOpt) - PoolDestroyPoints.push_back(++It); - PoolDestroyInsertedBlocks.insert(BB); - } - } else if (!AllIn) { - for (succ_iterator SI = succ_begin(BB), E = succ_end(BB); - SI != E; ++SI) - if (!LiveBlocks.count(*SI) && - !PoolDestroyInsertedBlocks.count(*SI)) { - // If this edge is critical, split it. - SplitCriticalEdge(BB, SI); - - // Insert at entry to the successor, but after any PHI nodes. - BasicBlock::iterator It = (*SI)->begin(); - while (isa(It)) ++It; - if (!DisableInitDestroyOpt) - PoolDestroyPoints.push_back(It); - PoolDestroyInsertedBlocks.insert(*SI); - } - } + // Rewind to the first using insruction + while (!PoolUses.count(std::make_pair(PD, It))) + DeleteIfIsPoolFree(It--, PD, PoolFrees); + + // Insert after the first using instruction + if (!DisableInitDestroyOpt) + PoolDestroyPoints.push_back(++It); + PoolDestroyInsertedBlocks.insert(BB); } - DEBUG(std::cerr << "\n Init in blocks: "); + } else if (!AllIn) { + for (succ_iterator SI = succ_begin(BB), E = succ_end(BB); + SI != E; ++SI) + if (!LiveBlocks.count(*SI) && + !PoolDestroyInsertedBlocks.count(*SI)) { + // If this edge is critical, split it. + SplitCriticalEdge(BB, SI); + + // Insert at entry to the successor, but after any PHI nodes. + BasicBlock::iterator It = (*SI)->begin(); + while (isa(It)) ++It; + if (!DisableInitDestroyOpt) + PoolDestroyPoints.push_back(It); + PoolDestroyInsertedBlocks.insert(*SI); + } + } + } + DEBUG(std::cerr << "\n Init in blocks: "); - // Insert the calls to initialize the pool. - unsigned ElSizeV = 0; - if (Node->getType()->isSized()) - ElSizeV = TD.getTypeSize(Node->getType()); - Value *ElSize = ConstantUInt::get(Type::UIntTy, ElSizeV); - - for (unsigned i = 0, e = PoolInitPoints.size(); i != e; ++i) { - new CallInst(PoolInit, make_vector((Value*)PD, ElSize, 0), "", - PoolInitPoints[i]); - DEBUG(std::cerr << PoolInitPoints[i]->getParent()->getName() << " "); - } - if (!DisableInitDestroyOpt) - PoolInitPoints.clear(); + // Insert the calls to initialize the pool. + unsigned ElSizeV = 0; + if (Node->getType()->isSized()) + ElSizeV = TD.getTypeSize(Node->getType()); + Value *ElSize = ConstantUInt::get(Type::UIntTy, ElSizeV); + + for (unsigned i = 0, e = PoolInitPoints.size(); i != e; ++i) { + new CallInst(PoolInit, make_vector((Value*)PD, ElSize, 0), "", + PoolInitPoints[i]); + DEBUG(std::cerr << PoolInitPoints[i]->getParent()->getName() << " "); + } + if (!DisableInitDestroyOpt) + PoolInitPoints.clear(); - DEBUG(std::cerr << "\n Destroy in blocks: "); + DEBUG(std::cerr << "\n Destroy in blocks: "); - // Loop over all of the places to insert pooldestroy's... - for (unsigned i = 0, e = PoolDestroyPoints.size(); i != e; ++i) { - // Insert the pooldestroy call for this pool. - new CallInst(PoolDestroy, make_vector((Value*)PD, 0), "", - PoolDestroyPoints[i]); - DEBUG(std::cerr << PoolDestroyPoints[i]->getParent()->getName()<<" "); - } - DEBUG(std::cerr << "\n\n"); + // Loop over all of the places to insert pooldestroy's... + for (unsigned i = 0, e = PoolDestroyPoints.size(); i != e; ++i) { + // Insert the pooldestroy call for this pool. + new CallInst(PoolDestroy, make_vector((Value*)PD, 0), "", + PoolDestroyPoints[i]); + DEBUG(std::cerr << PoolDestroyPoints[i]->getParent()->getName()<<" "); + } + DEBUG(std::cerr << "\n\n"); - // We are allowed to delete any poolfree's which occur between the last - // call to poolalloc, and the call to pooldestroy. Figure out which - // basic blocks have this property for this pool. - std::set PoolFreeLiveBlocks; - if (!DisablePoolFreeOpt) - CalculateLivePoolFreeBlocks(PoolFreeLiveBlocks, PD); - else - PoolFreeLiveBlocks = LiveBlocks; - - if (!DisableInitDestroyOpt) - PoolDestroyPoints.clear(); - - // Delete any pool frees which are not in live blocks, for correctness. - std::set >::iterator PFI = - PoolFrees.lower_bound(std::make_pair(PD, (CallInst*)0)); - if (PFI != PoolFrees.end() && PFI->first < PD) ++PFI; - for (; PFI != PoolFrees.end() && PFI->first == PD; ) { - CallInst *PoolFree = (PFI++)->second; - if (!LiveBlocks.count(PoolFree->getParent()) || - !PoolFreeLiveBlocks.count(PoolFree->getParent())) - DeleteIfIsPoolFree(PoolFree, PD, PoolFrees); - } - } + // We are allowed to delete any poolfree's which occur between the last + // call to poolalloc, and the call to pooldestroy. Figure out which + // basic blocks have this property for this pool. + std::set PoolFreeLiveBlocks; + if (!DisablePoolFreeOpt) + CalculateLivePoolFreeBlocks(PoolFreeLiveBlocks, PD); + else + PoolFreeLiveBlocks = LiveBlocks; + + if (!DisableInitDestroyOpt) + PoolDestroyPoints.clear(); + + // Delete any pool frees which are not in live blocks, for correctness. + std::set >::iterator PFI = + PoolFrees.lower_bound(std::make_pair(PD, (CallInst*)0)); + if (PFI != PoolFrees.end() && PFI->first < PD) ++PFI; + for (; PFI != PoolFrees.end() && PFI->first == PD; ) { + CallInst *PoolFree = (PFI++)->second; + if (!LiveBlocks.count(PoolFree->getParent()) || + !PoolFreeLiveBlocks.count(PoolFree->getParent())) + DeleteIfIsPoolFree(PoolFree, PD, PoolFrees); + } } } From criswell at cs.uiuc.edu Fri Nov 5 15:24:13 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Fri, 5 Nov 2004 15:24:13 -0600 Subject: [llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/Ptrdist/ks/Makefile Message-ID: <200411052124.PAA06679@choi.cs.uiuc.edu> Changes in directory llvm-test/MultiSource/Benchmarks/Ptrdist/ks: Makefile updated: 1.8 -> 1.9 --- Log message: Tell ks that the input file is inside the test suite source tree, which is not necessairly the current directory. --- Diffs of the changes: (+1 -1) Index: llvm-test/MultiSource/Benchmarks/Ptrdist/ks/Makefile diff -u llvm-test/MultiSource/Benchmarks/Ptrdist/ks/Makefile:1.8 llvm-test/MultiSource/Benchmarks/Ptrdist/ks/Makefile:1.9 --- llvm-test/MultiSource/Benchmarks/Ptrdist/ks/Makefile:1.8 Wed Sep 1 09:33:26 2004 +++ llvm-test/MultiSource/Benchmarks/Ptrdist/ks/Makefile Fri Nov 5 15:23:59 2004 @@ -1,7 +1,7 @@ LEVEL = ../../../.. PROG = ks #OBJS = KS-1.o KS-2.o -RUN_OPTIONS += KL-4.in +RUN_OPTIONS += $(BUILD_SRC_DIR)/KL-4.in include $(LEVEL)/MultiSource/Makefile.multisrc From criswell at cs.uiuc.edu Fri Nov 5 15:27:58 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Fri, 5 Nov 2004 15:27:58 -0600 Subject: [llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/Ptrdist/yacr2/Makefile Message-ID: <200411052127.PAA07143@choi.cs.uiuc.edu> Changes in directory llvm-test/MultiSource/Benchmarks/Ptrdist/yacr2: Makefile updated: 1.4 -> 1.5 --- Log message: Specify the absolute path to the input filename, as it may not always be in the current directory. --- Diffs of the changes: (+1 -1) Index: llvm-test/MultiSource/Benchmarks/Ptrdist/yacr2/Makefile diff -u llvm-test/MultiSource/Benchmarks/Ptrdist/yacr2/Makefile:1.4 llvm-test/MultiSource/Benchmarks/Ptrdist/yacr2/Makefile:1.5 --- llvm-test/MultiSource/Benchmarks/Ptrdist/yacr2/Makefile:1.4 Wed Sep 1 09:33:26 2004 +++ llvm-test/MultiSource/Benchmarks/Ptrdist/yacr2/Makefile Fri Nov 5 15:27:46 2004 @@ -1,7 +1,7 @@ LEVEL = ../../../.. PROG = yacr2 CPPFLAGS = -DTODD -RUN_OPTIONS += input2.in +RUN_OPTIONS += $(BUILD_SRC_DIR)/input2.in include $(LEVEL)/MultiSource/Makefile.multisrc From criswell at cs.uiuc.edu Fri Nov 5 15:48:07 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Fri, 5 Nov 2004 15:48:07 -0600 Subject: [llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/Ptrdist/anagram/Makefile Message-ID: <200411052148.PAA09648@choi.cs.uiuc.edu> Changes in directory llvm-test/MultiSource/Benchmarks/Ptrdist/anagram: Makefile updated: 1.7 -> 1.8 --- Log message: Use an absolute pathname to the input filename. --- Diffs of the changes: (+1 -1) Index: llvm-test/MultiSource/Benchmarks/Ptrdist/anagram/Makefile diff -u llvm-test/MultiSource/Benchmarks/Ptrdist/anagram/Makefile:1.7 llvm-test/MultiSource/Benchmarks/Ptrdist/anagram/Makefile:1.8 --- llvm-test/MultiSource/Benchmarks/Ptrdist/anagram/Makefile:1.7 Wed Sep 1 09:33:25 2004 +++ llvm-test/MultiSource/Benchmarks/Ptrdist/anagram/Makefile Fri Nov 5 15:47:55 2004 @@ -4,7 +4,7 @@ PROG = anagram #OBJS = anagram.o -RUN_OPTIONS = words +RUN_OPTIONS = $(BUILD_SRC_DIR)/words STDIN_FILENAME = $(BUILD_SRC_DIR)/input.OUT include $(LEVEL)/MultiSource/Makefile.multisrc From criswell at cs.uiuc.edu Fri Nov 5 15:56:32 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Fri, 5 Nov 2004 15:56:32 -0600 Subject: [llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/FreeBench/distray/Makefile Message-ID: <200411052156.PAA13764@choi.cs.uiuc.edu> Changes in directory llvm-test/MultiSource/Benchmarks/FreeBench/distray: Makefile updated: 1.2 -> 1.3 --- Log message: Use an absolute pathname to the input file. --- Diffs of the changes: (+2 -2) Index: llvm-test/MultiSource/Benchmarks/FreeBench/distray/Makefile diff -u llvm-test/MultiSource/Benchmarks/FreeBench/distray/Makefile:1.2 llvm-test/MultiSource/Benchmarks/FreeBench/distray/Makefile:1.3 --- llvm-test/MultiSource/Benchmarks/FreeBench/distray/Makefile:1.2 Wed Sep 1 09:33:23 2004 +++ llvm-test/MultiSource/Benchmarks/FreeBench/distray/Makefile Fri Nov 5 15:56:21 2004 @@ -4,9 +4,9 @@ CPPFLAGS = -DVERSION='"1.00"' -DCOMPDATE="\"today\"" -DCFLAGS='""' -DHOSTNAME="\"thishost\"" LDFLAGS = -lm ifdef LARGE_PROBLEM_SIZE -RUN_OPTIONS = ref.in +RUN_OPTIONS = $(BUILD_SRC_DIR)/ref.in else -RUN_OPTIONS = test.in +RUN_OPTIONS = $(BUILD_SRC_DIR)/test.in endif include $(LEVEL)/MultiSource/Makefile.multisrc From criswell at cs.uiuc.edu Fri Nov 5 15:58:14 2004 From: criswell at cs.uiuc.edu (John Criswell) Date: Fri, 5 Nov 2004 15:58:14 -0600 Subject: [llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/FreeBench/mason/Makefile Message-ID: <200411052158.PAA13876@choi.cs.uiuc.edu> Changes in directory llvm-test/MultiSource/Benchmarks/FreeBench/mason: Makefile updated: 1.2 -> 1.3 --- Log message: Use absolute path to the input file. --- Diffs of the changes: (+2 -2) Index: llvm-test/MultiSource/Benchmarks/FreeBench/mason/Makefile diff -u llvm-test/MultiSource/Benchmarks/FreeBench/mason/Makefile:1.2 llvm-test/MultiSource/Benchmarks/FreeBench/mason/Makefile:1.3 --- llvm-test/MultiSource/Benchmarks/FreeBench/mason/Makefile:1.2 Wed Sep 1 09:33:23 2004 +++ llvm-test/MultiSource/Benchmarks/FreeBench/mason/Makefile Fri Nov 5 15:58:02 2004 @@ -4,9 +4,9 @@ CPPFLAGS = -DVERSION='"1.00"' -DCOMPDATE="\"today\"" -DCFLAGS='""' -DHOSTNAME="\"thishost\"" #LDFLAGS = -lm ifdef LARGE_PROBLEM_SIZE -RUN_OPTIONS = ref.in +RUN_OPTIONS = $(BUILD_SRC_DIR)/ref.in else -RUN_OPTIONS = test.in +RUN_OPTIONS = $(BUILD_SRC_DIR)/test.in endif include $(LEVEL)/MultiSource/Makefile.multisrc From reid at x10sys.com Fri Nov 5 16:15:48 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:48 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-ld/Linker.cpp Message-ID: <200411052215.QAA25401@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-ld: Linker.cpp updated: 1.3 -> 1.4 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+1 -1) Index: llvm/tools/llvm-ld/Linker.cpp diff -u llvm/tools/llvm-ld/Linker.cpp:1.3 llvm/tools/llvm-ld/Linker.cpp:1.4 --- llvm/tools/llvm-ld/Linker.cpp:1.3 Wed Oct 27 18:18:45 2004 +++ llvm/tools/llvm-ld/Linker.cpp Fri Nov 5 16:15:36 2004 @@ -45,7 +45,7 @@ bool SharedObjectOnly) { // Determine if the pathname can be found as it stands. sys::Path FilePath; - if (FilePath.set_file(Filename) && FilePath.readable()) + if (FilePath.setFile(Filename) && FilePath.readable()) return Filename; // Ask the System Path object to locate the library. This ensures that From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/Interix/Path.cpp Message-ID: <200411052215.QAA25438@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/Interix: Path.cpp updated: 1.2 -> 1.3 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+3 -3) Index: llvm/lib/System/Interix/Path.cpp diff -u llvm/lib/System/Interix/Path.cpp:1.2 llvm/lib/System/Interix/Path.cpp:1.3 --- llvm/lib/System/Interix/Path.cpp:1.2 Fri Sep 10 23:59:30 2004 +++ llvm/lib/System/Interix/Path.cpp Fri Nov 5 16:15:35 2004 @@ -23,7 +23,7 @@ using namespace sys; bool -Path::is_valid() const { +Path::isValid() const { if (path.empty()) return false; char pathname[MAXPATHLEN]; @@ -40,8 +40,8 @@ if (0 == mkdtemp(pathname)) ThrowErrno(std::string(pathname) + ": Can't create temporary directory"); Path result; - result.set_directory(pathname); - assert(result.is_valid() && "mkdtemp didn't create a valid pathname!"); + result.setDirectory(pathname); + assert(result.isValid() && "mkdtemp didn't create a valid pathname!"); return result; } From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/SunOS/Path.cpp Message-ID: <200411052215.QAA25428@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/SunOS: Path.cpp updated: 1.3 -> 1.4 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+3 -3) Index: llvm/lib/System/SunOS/Path.cpp diff -u llvm/lib/System/SunOS/Path.cpp:1.3 llvm/lib/System/SunOS/Path.cpp:1.4 --- llvm/lib/System/SunOS/Path.cpp:1.3 Fri Sep 10 23:59:30 2004 +++ llvm/lib/System/SunOS/Path.cpp Fri Nov 5 16:15:35 2004 @@ -23,7 +23,7 @@ using namespace sys; bool -Path::is_valid() const { +Path::isValid() const { if (path.empty()) return false; char pathname[MAXPATHLEN]; @@ -39,9 +39,9 @@ if (0 == pathname) ThrowErrno(std::string("Can't create temporary directory name")); Path result; - result.set_directory(pathname); + result.setDirectory(pathname); free(pathname); - assert(result.is_valid() && "tempnam didn't create a valid pathname!"); + assert(result.isValid() && "tempnam didn't create a valid pathname!"); if (0 != mkdir(result.c_str(), S_IRWXU)) ThrowErrno(result.get() + ": Can't create temporary directory"); return result; From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-link/llvm-link.cpp Message-ID: <200411052215.QAA25427@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-link: llvm-link.cpp updated: 1.45 -> 1.46 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+1 -1) Index: llvm/tools/llvm-link/llvm-link.cpp diff -u llvm/tools/llvm-link/llvm-link.cpp:1.45 llvm/tools/llvm-link/llvm-link.cpp:1.46 --- llvm/tools/llvm-link/llvm-link.cpp:1.45 Mon Sep 27 11:41:01 2004 +++ llvm/tools/llvm-link/llvm-link.cpp Fri Nov 5 16:15:36 2004 @@ -47,7 +47,7 @@ // static inline std::auto_ptr LoadFile(const std::string &FN) { sys::Path Filename; - if (!Filename.set_file(FN)) { + if (!Filename.setFile(FN)) { std::cerr << "Invalid file name: '" << FN << "'\n"; return std::auto_ptr(); } From reid at x10sys.com Fri Nov 5 16:15:48 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:48 -0600 Subject: [llvm-commits] CVS: llvm/lib/VMCore/Linker.cpp Message-ID: <200411052215.QAA25404@zion.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: Linker.cpp updated: 1.87 -> 1.88 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+3 -3) Index: llvm/lib/VMCore/Linker.cpp diff -u llvm/lib/VMCore/Linker.cpp:1.87 llvm/lib/VMCore/Linker.cpp:1.88 --- llvm/lib/VMCore/Linker.cpp:1.87 Sat Oct 16 13:08:06 2004 +++ llvm/lib/VMCore/Linker.cpp Fri Nov 5 16:15:36 2004 @@ -946,9 +946,9 @@ // If the source library's module id is in the dependent library list of the // destination library, remove it since that module is now linked in. sys::Path modId; - modId.set_file(Src->getModuleIdentifier()); - if (!modId.is_empty()) - Dest->removeLibrary(modId.get_basename()); + modId.setFile(Src->getModuleIdentifier()); + if (!modId.isEmpty()) + Dest->removeLibrary(modId.getBasename()); return false; } From reid at x10sys.com Fri Nov 5 16:15:48 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:48 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/System/Path.h Message-ID: <200411052215.QAA25408@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/System: Path.h updated: 1.6 -> 1.7 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+37 -37) Index: llvm/include/llvm/System/Path.h diff -u llvm/include/llvm/System/Path.h:1.6 llvm/include/llvm/System/Path.h:1.7 --- llvm/include/llvm/System/Path.h:1.6 Mon Sep 13 18:46:23 2004 +++ llvm/include/llvm/System/Path.h Fri Nov 5 16:15:35 2004 @@ -34,8 +34,8 @@ /// one invalid Path which is the empty path. The class should never allow any /// other syntactically invalid non-empty path name to be assigned. Empty /// paths are required in order to indicate an error result. If the path is - /// empty, the is_valid operation will return false. All operations will fail - /// if is_valid is false. Operations that change the path will either return + /// empty, the isValid operation will return false. All operations will fail + /// if isValid is false. Operations that change the path will either return /// false if it would cause a syntactically invalid path name (in which case /// the Path object is left unchanged) or throw an std::string exception /// indicating the error. @@ -138,7 +138,7 @@ /// the program. However, if the path is not valid, the Path object will /// be set to an empty string and an exception will be thrown. /// @throws std::string if the path string is not legal. - /// @param unvalidated_path The path to verify and assign. + /// @param unverified_path The path to verify and assign. /// @brief Construct a Path from a string. explicit Path(std::string unverified_path); @@ -193,13 +193,13 @@ /// @returns true iff the path name is syntactically legal for the /// host operating system. /// @brief Determine if a path is syntactically valid or not. - bool is_valid() const; + bool isValid() const; /// This function determines if the contents of the path name are /// empty. That is, the path has a zero length. /// @returns true iff the path is empty. /// @brief Determines if the path name is empty (invalid). - bool is_empty() const { return path.empty(); } + bool isEmpty() const { return path.empty(); } /// This function determines if the path name in this object is intended /// to reference a legal file name (as opposed to a directory name). This @@ -207,7 +207,7 @@ /// determines if the syntax of the path represents a file name or not. /// @returns true if this path name references a file. /// @brief Determines if the path name references a file. - bool is_file() const; + bool isFile() const; /// This function determines if the path name in this object is intended /// to reference a legal directory name (as opposed to a file name). This @@ -216,7 +216,7 @@ /// not. /// @returns true if the path name references a directory /// @brief Determines if the path name references a directory. - bool is_directory() const; + bool isDirectory() const; /// This function determines if the path name in this object references /// the root (top level directory) of the file system. The details of what @@ -224,7 +224,7 @@ /// will do the necessary checking. /// @returns true iff the path name references the root directory. /// @brief Determines if the path references the root directory. - bool is_root_directory() const; + bool isRootDirectory() const; /// This function opens the file associated with the path name provided by /// the Path object and reads its magic number. If the magic number at the @@ -232,24 +232,24 @@ /// cases (file not found, file not accessible, etc.) it returns false. /// @returns true if the magic number of the file matches \p magic. /// @brief Determine if file has a specific magic number - bool has_magic_number(const std::string& magic) const; + bool hasMagicNumber(const std::string& magic) const; /// This function determines if the path name in the object references an /// archive file by looking at its magic number. /// @returns true if the file starts with the magic number for an archive /// file. /// @brief Determine if the path references an archive file. - bool is_archive() const; + bool isArchive() const; /// This function determines if the path name in the object references an /// LLVM Bytecode file by looking at its magic number. /// @returns true if the file starts with the magic number for LLVM /// bytecode files. /// @brief Determine if the path references a bytecode file. - bool is_bytecode_file() const; + bool isBytecodeFile() const; /// This function determines if the path name references an existing file - /// or directory in the file system. Unlike is_file and is_directory, this + /// or directory in the file system. Unlike isFile and isDirectory, this /// function actually checks for the existence of the file or directory. /// @returns true if the pathname references an existing file. /// @brief Determines if the path is a file or directory in @@ -257,7 +257,7 @@ bool exists() const; /// This function determines if the path name references a readable file - /// or directory in the file system. Unlike is_file and is_directory, this + /// or directory in the file system. Unlike isFile and isDirectory, this /// function actually checks for the existence and readability (by the /// current program) of the file or directory. /// @returns true if the pathname references a readable file. @@ -266,7 +266,7 @@ bool readable() const; /// This function determines if the path name references a writable file - /// or directory in the file system. Unlike is_file and is_directory, this + /// or directory in the file system. Unlike isFile and isDirectory, this /// function actually checks for the existence and writability (by the /// current program) of the file or directory. /// @returns true if the pathname references a writable file. @@ -275,7 +275,7 @@ bool writable() const; /// This function determines if the path name references an executable - /// file in the file system. Unlike is_file and is_directory, this + /// file in the file system. Unlike isFile and isDirectory, this /// function actually checks for the existence and executability (by /// the current program) of the file. /// @returns true if the pathname references an executable file. @@ -291,8 +291,8 @@ std::string get() const { return path; } /// This function returns the last component of the path name. If the - /// is_directory() function would return true then this returns the name - /// of the last directory in the path. If the is_file() function would + /// isDirectory() function would return true then this returns the name + /// of the last directory in the path. If the isFile() function would /// return true then this function returns the name of the file without /// any of the preceding directories. /// @returns std::string containing the last component of the path name. @@ -304,7 +304,7 @@ /// @returns std::string containing the basename of the path /// @throws nothing /// @brief Get the base name of the path - std::string get_basename() const; + std::string getBasename() const; /// @returns a c string containing the path name. /// @brief Returns the path as a C string. @@ -329,7 +329,7 @@ /// @param unverified_path The path to be set in Path object. /// @throws nothing /// @brief Set a full path from a std::string - bool set_directory(const std::string& unverified_path); + bool setDirectory(const std::string& unverified_path); /// This method attempts to set the Path object to \p unverified_path /// and interpret the name as a file name. The \p unverified_path @@ -340,54 +340,54 @@ /// @param unverified_path The path to be set in Path object. /// @throws nothing /// @brief Set a full path from a std::string - bool set_file(const std::string& unverified_path); + bool setFile(const std::string& unverified_path); /// The \p dirname is added to the end of the Path if it is a legal /// directory name for the operating system. The precondition for this /// function is that the Path must reference a directory name (i.e. - /// is_directory() returns true). + /// isDirectory() returns true). /// @param dirname A string providing the directory name to /// be added to the end of the path. /// @returns false if the directory name could not be added /// @throws nothing /// @brief Adds the name of a directory to a Path. - bool append_directory( const std::string& dirname ); + bool appendDirectory( const std::string& dirname ); /// One directory component is removed from the Path name. The Path must - /// refer to a non-root directory name (i.e. is_directory() returns true - /// but is_root_directory() returns false). Upon exit, the Path will + /// refer to a non-root directory name (i.e. isDirectory() returns true + /// but isRootDirectory() returns false). Upon exit, the Path will /// refer to the directory above it. /// @throws nothing /// @returns false if the directory name could not be removed. /// @brief Removes the last directory component of the Path. - bool elide_directory(); + bool elideDirectory(); /// The \p filename is added to the end of the Path if it is a legal /// directory name for the operating system. The precondition for this /// function is that the Path reference a directory name (i.e. - /// is_directory() returns true). + /// isDirectory() returns true). /// @throws nothing /// @returns false if the file name could not be added. /// @brief Appends the name of a file. - bool append_file( const std::string& filename ); + bool appendFile( const std::string& filename ); /// One file component is removed from the Path name. The Path must - /// refer to a file (i.e. is_file() returns true). Upon exit, + /// refer to a file (i.e. isFile() returns true). Upon exit, /// the Path will refer to the directory above it. /// @throws nothing /// @returns false if the file name could not be removed /// @brief Removes the last file component of the path. - bool elide_file(); + bool elideFile(); /// A period and the \p suffix are appended to the end of the pathname. /// The precondition for this function is that the Path reference a file - /// name (i.e. is_file() returns true). If the Path is not a file, no + /// name (i.e. isFile() returns true). If the Path is not a file, no /// action is taken and the function returns false. If the path would /// become invalid for the host operating system, false is returned. /// @returns false if the suffix could not be added, true if it was. /// @throws nothing /// @brief Adds a period and the \p suffix to the end of the pathname. - bool append_suffix(const std::string& suffix); + bool appendSuffix(const std::string& suffix); /// The suffix of the filename is removed. The suffix begins with and /// includes the last . character in the filename after the last directory @@ -398,7 +398,7 @@ /// @returns false if there was no suffix to remove, true otherwise. /// @throws nothing /// @brief Remove the suffix from a path name. - bool elide_suffix(); + bool elideSuffix(); /// This method attempts to create a directory in the file system with the /// same name as the Path object. The \p create_parents parameter controls @@ -413,17 +413,17 @@ /// components other than the last one (the "parents") are created or not. /// @throws std::string if an error occurs. /// @brief Create the directory this Path refers to. - bool create_directory( bool create_parents = false ); + bool createDirectory( bool create_parents = false ); /// This method attempts to create a file in the file system with the same /// name as the Path object. The intermediate directories must all exist - /// at the time this method is called. Use create_directories to + /// at the time this method is called. Use createDirectories to /// accomplish that. The created file will be empty upon return from this /// function. /// @returns false if the Path does not reference a file, true otherwise. /// @throws std::string if an error occurs. /// @brief Create the file this Path refers to. - bool create_file(); + bool createFile(); /// This method attempts to destroy the directory named by the last in /// the Path name. If \p remove_contents is false, an attempt will be @@ -437,14 +437,14 @@ /// otherwise. /// @throws std::string if there is an error. /// @brief Removes the file or directory from the filesystem. - bool destroy_directory( bool destroy_contents = false ); + bool destroyDirectory( bool destroy_contents = false ); /// This method attempts to destroy the file named by the last item in the /// Path name. /// @returns false if the Path does not refer to a file, true otherwise. /// @throws std::string if there is an error. /// @brief Destroy the file this Path refers to. - bool destroy_file(); + bool destroyFile(); /// @} /// @name Data From reid at x10sys.com Fri Nov 5 16:15:48 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:48 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/Cygwin/Path.cpp Message-ID: <200411052215.QAA25407@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/Cygwin: Path.cpp updated: 1.3 -> 1.4 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+3 -3) Index: llvm/lib/System/Cygwin/Path.cpp diff -u llvm/lib/System/Cygwin/Path.cpp:1.3 llvm/lib/System/Cygwin/Path.cpp:1.4 --- llvm/lib/System/Cygwin/Path.cpp:1.3 Fri Sep 10 23:59:30 2004 +++ llvm/lib/System/Cygwin/Path.cpp Fri Nov 5 16:15:35 2004 @@ -23,7 +23,7 @@ using namespace sys; bool -Path::is_valid() const { +Path::isValid() const { if (path.empty()) return false; char pathname[MAXPATHLEN]; @@ -39,9 +39,9 @@ if (0 == pathname) ThrowErrno(std::string("Can't create temporary directory name")); Path result; - result.set_directory(pathname); + result.setDirectory(pathname); free(pathname); - assert(result.is_valid() && "tempnam didn't create a valid pathname!"); + assert(result.isValid() && "tempnam didn't create a valid pathname!"); if (0 != mkdir(result.c_str(), S_IRWXU)) ThrowErrno(result.get() + ": Can't create temporary directory"); return result; From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/Win32/Path.cpp Program.cpp Signals.cpp Message-ID: <200411052215.QAA25417@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/Win32: Path.cpp updated: 1.4 -> 1.5 Program.cpp updated: 1.2 -> 1.3 Signals.cpp updated: 1.9 -> 1.10 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+63 -63) Index: llvm/lib/System/Win32/Path.cpp diff -u llvm/lib/System/Win32/Path.cpp:1.4 llvm/lib/System/Win32/Path.cpp:1.5 --- llvm/lib/System/Win32/Path.cpp:1.4 Tue Sep 28 19:01:17 2004 +++ llvm/lib/System/Win32/Path.cpp Fri Nov 5 16:15:36 2004 @@ -34,7 +34,7 @@ namespace sys { bool -Path::is_valid() const { +Path::isValid() const { if (path.empty()) return false; @@ -81,19 +81,19 @@ throw std::string("Can't determine temporary directory"); Path result; - result.set_directory(pathname); + result.setDirectory(pathname); // Append a subdirectory passed on our process id so multiple LLVMs don't // step on each other's toes. sprintf(pathname, "LLVM_%u", GetCurrentProcessId()); - result.append_directory(pathname); + result.appendDirectory(pathname); // If there's a directory left over from a previous LLVM execution that // happened to have the same process id, get rid of it. - result.destroy_directory(true); + result.destroyDirectory(true); // And finally (re-)create the empty directory. - result.create_directory(false); + result.createDirectory(false); TempDirectory = new Path(result); return *TempDirectory; } @@ -104,7 +104,7 @@ FlipBackSlashes(path); if (unverified_path.empty()) return; - if (this->is_valid()) + if (this->isValid()) return; // oops, not valid. path.clear(); @@ -115,7 +115,7 @@ Path Path::GetRootDirectory() { Path result; - result.set_directory("/"); + result.setDirectory("/"); return result; } @@ -125,23 +125,23 @@ } static inline bool IsLibrary(Path& path, const std::string& basename) { - if (path.append_file(std::string("lib") + basename)) { - if (path.append_suffix(Path::GetDLLSuffix()) && path.readable()) + if (path.appendFile(std::string("lib") + basename)) { + if (path.appendSuffix(Path::GetDLLSuffix()) && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("a") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("a") && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("o") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("o") && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("bc") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("bc") && path.readable()) return true; - } else if (path.elide_file() && path.append_file(basename)) { - if (path.append_suffix(Path::GetDLLSuffix()) && path.readable()) + } else if (path.elideFile() && path.appendFile(basename)) { + if (path.appendSuffix(Path::GetDLLSuffix()) && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("a") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("a") && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("o") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("o") && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("bc") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("bc") && path.readable()) return true; } path.clear(); @@ -156,20 +156,20 @@ // Try the paths provided for (std::vector::const_iterator I = LibPaths.begin(), E = LibPaths.end(); I != E; ++I ) { - if (result.set_directory(*I) && IsLibrary(result,basename)) + if (result.setDirectory(*I) && IsLibrary(result,basename)) return result; } // Try the LLVM lib directory in the LLVM install area - //if (result.set_directory(LLVM_LIBDIR) && IsLibrary(result,basename)) + //if (result.setDirectory(LLVM_LIBDIR) && IsLibrary(result,basename)) // return result; // Try /usr/lib - if (result.set_directory("/usr/lib/") && IsLibrary(result,basename)) + if (result.setDirectory("/usr/lib/") && IsLibrary(result,basename)) return result; // Try /lib - if (result.set_directory("/lib/") && IsLibrary(result,basename)) + if (result.setDirectory("/lib/") && IsLibrary(result,basename)) return result; // Can't find it, give up and return invalid path. @@ -202,7 +202,7 @@ const char* home = getenv("HOME"); if (home) { Path result; - if (result.set_directory(home)) + if (result.setDirectory(home)) return result; } return GetRootDirectory(); @@ -210,17 +210,17 @@ // FIXME: the above set of functions don't map to Windows very well. bool -Path::is_file() const { - return (is_valid() && path[path.length()-1] != '/'); +Path::isFile() const { + return (isValid() && path[path.length()-1] != '/'); } bool -Path::is_directory() const { - return (is_valid() && path[path.length()-1] == '/'); +Path::isDirectory() const { + return (isValid() && path[path.length()-1] == '/'); } std::string -Path::get_basename() const { +Path::getBasename() const { // Find the last slash size_t slash = path.rfind('/'); if (slash == std::string::npos) @@ -231,7 +231,7 @@ return path.substr(slash, path.rfind('.')); } -bool Path::has_magic_number(const std::string &Magic) const { +bool Path::hasMagicNumber(const std::string &Magic) const { size_t len = Magic.size(); char *buf = reinterpret_cast(_alloca(len+1)); std::ifstream f(path.c_str()); @@ -241,17 +241,17 @@ } bool -Path::is_bytecode_file() const { +Path::isBytecodeFile() const { if (readable()) { - return has_magic_number("llvm"); + return hasMagicNumber("llvm"); } return false; } bool -Path::is_archive() const { +Path::isArchive() const { if (readable()) { - return has_magic_number("!\012"); + return hasMagicNumber("!\012"); } return false; } @@ -306,7 +306,7 @@ } bool -Path::set_directory(const std::string& a_path) { +Path::setDirectory(const std::string& a_path) { if (a_path.size() == 0) return false; Path save(*this); @@ -315,7 +315,7 @@ size_t last = a_path.size() -1; if (last != 0 && a_path[last] != '/') path += '/'; - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -323,7 +323,7 @@ } bool -Path::set_file(const std::string& a_path) { +Path::setFile(const std::string& a_path) { if (a_path.size() == 0) return false; Path save(*this); @@ -333,7 +333,7 @@ while (last > 0 && a_path[last] == '/') last--; path.erase(last+1); - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -341,13 +341,13 @@ } bool -Path::append_directory(const std::string& dir) { - if (is_file()) +Path::appendDirectory(const std::string& dir) { + if (isFile()) return false; Path save(*this); path += dir; path += "/"; - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -355,8 +355,8 @@ } bool -Path::elide_directory() { - if (is_file()) +Path::elideDirectory() { + if (isFile()) return false; size_t slashpos = path.rfind('/',path.size()); if (slashpos == 0 || slashpos == std::string::npos) @@ -370,12 +370,12 @@ } bool -Path::append_file(const std::string& file) { - if (!is_directory()) +Path::appendFile(const std::string& file) { + if (!isDirectory()) return false; Path save(*this); path += file; - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -383,8 +383,8 @@ } bool -Path::elide_file() { - if (is_directory()) +Path::elideFile() { + if (isDirectory()) return false; size_t slashpos = path.rfind('/',path.size()); if (slashpos == std::string::npos) @@ -394,13 +394,13 @@ } bool -Path::append_suffix(const std::string& suffix) { - if (is_directory()) +Path::appendSuffix(const std::string& suffix) { + if (isDirectory()) return false; Path save(*this); path.append("."); path.append(suffix); - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -408,8 +408,8 @@ } bool -Path::elide_suffix() { - if (is_directory()) return false; +Path::elideSuffix() { + if (isDirectory()) return false; size_t dotpos = path.rfind('.',path.size()); size_t slashpos = path.rfind('/',path.size()); if (slashpos != std::string::npos && dotpos != std::string::npos && @@ -422,9 +422,9 @@ bool -Path::create_directory( bool create_parents) { +Path::createDirectory( bool create_parents) { // Make sure we're dealing with a directory - if (!is_directory()) return false; + if (!isDirectory()) return false; // Get a writeable copy of the path name char *pathname = reinterpret_cast(_alloca(path.length()+1)); @@ -473,9 +473,9 @@ } bool -Path::create_file() { +Path::createFile() { // Make sure we're dealing with a file - if (!is_file()) return false; + if (!isFile()) return false; // Create the file HANDLE h = CreateFile(path.c_str(), GENERIC_WRITE, 0, NULL, CREATE_NEW, @@ -488,9 +488,9 @@ } bool -Path::destroy_directory(bool remove_contents) { +Path::destroyDirectory(bool remove_contents) { // Make sure we're dealing with a directory - if (!is_directory()) return false; + if (!isDirectory()) return false; // If it doesn't exist, we're done. if (!exists()) return true; @@ -517,8 +517,8 @@ } bool -Path::destroy_file() { - if (!is_file()) return false; +Path::destroyFile() { + if (!isFile()) return false; DWORD attr = GetFileAttributes(path.c_str()); Index: llvm/lib/System/Win32/Program.cpp diff -u llvm/lib/System/Win32/Program.cpp:1.2 llvm/lib/System/Win32/Program.cpp:1.3 --- llvm/lib/System/Win32/Program.cpp:1.2 Wed Sep 15 00:49:50 2004 +++ llvm/lib/System/Win32/Program.cpp Fri Nov 5 16:15:36 2004 @@ -32,7 +32,7 @@ if (progName.length() == 0) // no program return Path(); Path temp; - if (!temp.set_file(progName)) // invalid name + if (!temp.setFile(progName)) // invalid name return Path(); if (temp.executable()) // already executable as is return temp; Index: llvm/lib/System/Win32/Signals.cpp diff -u llvm/lib/System/Win32/Signals.cpp:1.9 llvm/lib/System/Win32/Signals.cpp:1.10 --- llvm/lib/System/Win32/Signals.cpp:1.9 Wed Oct 13 22:09:02 2004 +++ llvm/lib/System/Win32/Signals.cpp Fri Nov 5 16:15:36 2004 @@ -93,7 +93,7 @@ if (CleanupExecuted) throw std::string("Process terminating -- cannot register for removal"); - if (path.is_directory()) { + if (path.isDirectory()) { if (DirectoriesToRemove == NULL) DirectoriesToRemove = new std::vector; @@ -124,7 +124,7 @@ if (FilesToRemove != NULL) while (!FilesToRemove->empty()) { try { - FilesToRemove->back().destroy_file(); + FilesToRemove->back().destroyFile(); } catch (...) { } FilesToRemove->pop_back(); @@ -133,7 +133,7 @@ if (DirectoriesToRemove != NULL) while (!DirectoriesToRemove->empty()) { try { - DirectoriesToRemove->back().destroy_directory(true); + DirectoriesToRemove->back().destroyDirectory(true); } catch (...) { } DirectoriesToRemove->pop_back(); From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/Unix/Path.cpp Program.cpp Signals.cpp Message-ID: <200411052215.QAA25425@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/Unix: Path.cpp updated: 1.8 -> 1.9 Program.cpp updated: 1.4 -> 1.5 Signals.cpp updated: 1.1 -> 1.2 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+60 -60) Index: llvm/lib/System/Unix/Path.cpp diff -u llvm/lib/System/Unix/Path.cpp:1.8 llvm/lib/System/Unix/Path.cpp:1.9 --- llvm/lib/System/Unix/Path.cpp:1.8 Sat Sep 18 14:25:11 2004 +++ llvm/lib/System/Unix/Path.cpp Fri Nov 5 16:15:36 2004 @@ -30,7 +30,7 @@ { if (unverified_path.empty()) return; - if (this->is_valid()) + if (this->isValid()) return; // oops, not valid. path.clear(); @@ -40,28 +40,28 @@ Path Path::GetRootDirectory() { Path result; - result.set_directory("/"); + result.setDirectory("/"); return result; } static inline bool IsLibrary(Path& path, const std::string& basename) { - if (path.append_file(std::string("lib") + basename)) { - if (path.append_suffix(Path::GetDLLSuffix()) && path.readable()) + if (path.appendFile(std::string("lib") + basename)) { + if (path.appendSuffix(Path::GetDLLSuffix()) && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("a") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("a") && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("o") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("o") && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("bc") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("bc") && path.readable()) return true; - } else if (path.elide_file() && path.append_file(basename)) { - if (path.append_suffix(Path::GetDLLSuffix()) && path.readable()) + } else if (path.elideFile() && path.appendFile(basename)) { + if (path.appendSuffix(Path::GetDLLSuffix()) && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("a") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("a") && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("o") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("o") && path.readable()) return true; - else if (path.elide_suffix() && path.append_suffix("bc") && path.readable()) + else if (path.elideSuffix() && path.appendSuffix("bc") && path.readable()) return true; } path.clear(); @@ -76,20 +76,20 @@ // Try the paths provided for (std::vector::const_iterator I = LibPaths.begin(), E = LibPaths.end(); I != E; ++I ) { - if (result.set_directory(*I) && IsLibrary(result,basename)) + if (result.setDirectory(*I) && IsLibrary(result,basename)) return result; } // Try the LLVM lib directory in the LLVM install area - if (result.set_directory(LLVM_LIBDIR) && IsLibrary(result,basename)) + if (result.setDirectory(LLVM_LIBDIR) && IsLibrary(result,basename)) return result; // Try /usr/lib - if (result.set_directory("/usr/lib/") && IsLibrary(result,basename)) + if (result.setDirectory("/usr/lib/") && IsLibrary(result,basename)) return result; // Try /lib - if (result.set_directory("/lib/") && IsLibrary(result,basename)) + if (result.setDirectory("/lib/") && IsLibrary(result,basename)) return result; // Can't find it, give up and return invalid path. @@ -115,7 +115,7 @@ Path Path::GetLLVMConfigDir() { Path result; - if (result.set_directory(LLVM_ETCDIR)) + if (result.setDirectory(LLVM_ETCDIR)) return result; return GetLLVMDefaultConfigDir(); } @@ -125,24 +125,24 @@ const char* home = getenv("HOME"); if (home) { Path result; - if (result.set_directory(home)) + if (result.setDirectory(home)) return result; } return GetRootDirectory(); } bool -Path::is_file() const { - return (is_valid() && path[path.length()-1] != '/'); +Path::isFile() const { + return (isValid() && path[path.length()-1] != '/'); } bool -Path::is_directory() const { - return (is_valid() && path[path.length()-1] == '/'); +Path::isDirectory() const { + return (isValid() && path[path.length()-1] == '/'); } std::string -Path::get_basename() const { +Path::getBasename() const { // Find the last slash size_t slash = path.rfind('/'); if (slash == std::string::npos) @@ -153,7 +153,7 @@ return path.substr(slash, path.rfind('.')); } -bool Path::has_magic_number(const std::string &Magic) const { +bool Path::hasMagicNumber(const std::string &Magic) const { size_t len = Magic.size(); char buf[ 1 + len]; std::ifstream f(path.c_str()); @@ -163,17 +163,17 @@ } bool -Path::is_bytecode_file() const { +Path::isBytecodeFile() const { if (readable()) { - return has_magic_number("llvm"); + return hasMagicNumber("llvm"); } return false; } bool -Path::is_archive() const { +Path::isArchive() const { if (readable()) { - return has_magic_number("!\012"); + return hasMagicNumber("!\012"); } return false; } @@ -221,7 +221,7 @@ } bool -Path::set_directory(const std::string& a_path) { +Path::setDirectory(const std::string& a_path) { if (a_path.size() == 0) return false; Path save(*this); @@ -229,7 +229,7 @@ size_t last = a_path.size() -1; if (last != 0 && a_path[last] != '/') path += '/'; - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -237,7 +237,7 @@ } bool -Path::set_file(const std::string& a_path) { +Path::setFile(const std::string& a_path) { if (a_path.size() == 0) return false; Path save(*this); @@ -246,7 +246,7 @@ while (last > 0 && a_path[last] == '/') last--; path.erase(last+1); - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -254,13 +254,13 @@ } bool -Path::append_directory(const std::string& dir) { - if (is_file()) +Path::appendDirectory(const std::string& dir) { + if (isFile()) return false; Path save(*this); path += dir; path += "/"; - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -268,8 +268,8 @@ } bool -Path::elide_directory() { - if (is_file()) +Path::elideDirectory() { + if (isFile()) return false; size_t slashpos = path.rfind('/',path.size()); if (slashpos == 0 || slashpos == std::string::npos) @@ -283,12 +283,12 @@ } bool -Path::append_file(const std::string& file) { - if (!is_directory()) +Path::appendFile(const std::string& file) { + if (!isDirectory()) return false; Path save(*this); path += file; - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -296,8 +296,8 @@ } bool -Path::elide_file() { - if (is_directory()) +Path::elideFile() { + if (isDirectory()) return false; size_t slashpos = path.rfind('/',path.size()); if (slashpos == std::string::npos) @@ -307,13 +307,13 @@ } bool -Path::append_suffix(const std::string& suffix) { - if (is_directory()) +Path::appendSuffix(const std::string& suffix) { + if (isDirectory()) return false; Path save(*this); path.append("."); path.append(suffix); - if (!is_valid()) { + if (!isValid()) { path = save.path; return false; } @@ -321,8 +321,8 @@ } bool -Path::elide_suffix() { - if (is_directory()) return false; +Path::elideSuffix() { + if (isDirectory()) return false; size_t dotpos = path.rfind('.',path.size()); size_t slashpos = path.rfind('/',path.size()); if (slashpos != std::string::npos && dotpos != std::string::npos && @@ -335,9 +335,9 @@ bool -Path::create_directory( bool create_parents) { +Path::createDirectory( bool create_parents) { // Make sure we're dealing with a directory - if (!is_directory()) return false; + if (!isDirectory()) return false; // Get a writeable copy of the path name char pathname[MAXPATHLEN]; @@ -372,9 +372,9 @@ } bool -Path::create_file() { +Path::createFile() { // Make sure we're dealing with a file - if (!is_file()) return false; + if (!isFile()) return false; // Create the file int fd = ::creat(path.c_str(), S_IRUSR | S_IWUSR); @@ -386,9 +386,9 @@ } bool -Path::destroy_directory(bool remove_contents) { +Path::destroyDirectory(bool remove_contents) { // Make sure we're dealing with a directory - if (!is_directory()) return false; + if (!isDirectory()) return false; // If it doesn't exist, we're done. if (!exists()) return true; @@ -412,8 +412,8 @@ } bool -Path::destroy_file() { - if (!is_file()) return false; +Path::destroyFile() { + if (!isFile()) return false; if (0 != unlink(path.c_str())) ThrowErrno(std::string(path.c_str()) + ": Can't destroy file"); return true; Index: llvm/lib/System/Unix/Program.cpp diff -u llvm/lib/System/Unix/Program.cpp:1.4 llvm/lib/System/Unix/Program.cpp:1.5 --- llvm/lib/System/Unix/Program.cpp:1.4 Mon Sep 13 16:48:44 2004 +++ llvm/lib/System/Unix/Program.cpp Fri Nov 5 16:15:36 2004 @@ -37,7 +37,7 @@ if (progName.length() == 0) // no program return Path(); Path temp; - if (!temp.set_file(progName)) // invalid name + if (!temp.setFile(progName)) // invalid name return Path(); if (temp.executable()) // already executable as is return temp; @@ -57,8 +57,8 @@ // Check to see if this first directory contains the executable... Path FilePath; - if (FilePath.set_directory(std::string(PathStr,Colon))) { - FilePath.append_file(progName); + if (FilePath.setDirectory(std::string(PathStr,Colon))) { + FilePath.appendFile(progName); if (FilePath.executable()) return FilePath; // Found the executable! } Index: llvm/lib/System/Unix/Signals.cpp diff -u llvm/lib/System/Unix/Signals.cpp:1.1 llvm/lib/System/Unix/Signals.cpp:1.2 --- llvm/lib/System/Unix/Signals.cpp:1.1 Sun Aug 29 14:22:48 2004 +++ llvm/lib/System/Unix/Signals.cpp Fri Nov 5 16:15:36 2004 @@ -111,7 +111,7 @@ if (DirectoriesToRemove != 0) while (!DirectoriesToRemove->empty()) { - DirectoriesToRemove->back().destroy_directory(true); + DirectoriesToRemove->back().destroyDirectory(true); DirectoriesToRemove->pop_back(); } @@ -146,7 +146,7 @@ // RemoveDirectoryOnSignal - The public API void sys::RemoveDirectoryOnSignal(const llvm::sys::Path& path) { - if (!path.is_directory()) + if (!path.isDirectory()) return; if (DirectoriesToRemove == 0) From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/FreeBSD/Path.cpp Message-ID: <200411052215.QAA25426@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/FreeBSD: Path.cpp updated: 1.2 -> 1.3 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+3 -3) Index: llvm/lib/System/FreeBSD/Path.cpp diff -u llvm/lib/System/FreeBSD/Path.cpp:1.2 llvm/lib/System/FreeBSD/Path.cpp:1.3 --- llvm/lib/System/FreeBSD/Path.cpp:1.2 Fri Sep 10 23:59:30 2004 +++ llvm/lib/System/FreeBSD/Path.cpp Fri Nov 5 16:15:35 2004 @@ -23,7 +23,7 @@ using namespace sys; bool -Path::is_valid() const { +Path::isvalid() const { if (path.empty()) return false; char pathname[MAXPATHLEN]; @@ -40,8 +40,8 @@ if (0 == mkdtemp(pathname)) ThrowErrno(std::string(pathname) + ": Can't create temporary directory"); Path result; - result.set_directory(pathname); - assert(result.is_valid() && "mkdtemp didn't create a valid pathname!"); + result.setDirectory(pathname); + assert(result.isValid() && "mkdtemp didn't create a valid pathname!"); return result; } From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/Darwin/Path.cpp Message-ID: <200411052215.QAA25437@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/Darwin: Path.cpp updated: 1.4 -> 1.5 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+3 -3) Index: llvm/lib/System/Darwin/Path.cpp diff -u llvm/lib/System/Darwin/Path.cpp:1.4 llvm/lib/System/Darwin/Path.cpp:1.5 --- llvm/lib/System/Darwin/Path.cpp:1.4 Sat Sep 11 02:35:01 2004 +++ llvm/lib/System/Darwin/Path.cpp Fri Nov 5 16:15:35 2004 @@ -23,7 +23,7 @@ using namespace sys; bool -Path::is_valid() const { +Path::isValid() const { if (path.empty()) return false; if (path.length() >= MAXPATHLEN) @@ -38,8 +38,8 @@ if (0 == mkdtemp(pathname)) ThrowErrno(std::string(pathname) + ": Can't create temporary directory"); Path result; - result.set_directory(pathname); - assert(result.is_valid() && "mkdtemp didn't create a valid pathname!"); + result.setDirectory(pathname); + assert(result.isValid() && "mkdtemp didn't create a valid pathname!"); return result; } From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/Linux/Path.cpp Message-ID: <200411052215.QAA25436@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/Linux: Path.cpp updated: 1.4 -> 1.5 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+3 -3) Index: llvm/lib/System/Linux/Path.cpp diff -u llvm/lib/System/Linux/Path.cpp:1.4 llvm/lib/System/Linux/Path.cpp:1.5 --- llvm/lib/System/Linux/Path.cpp:1.4 Fri Sep 10 23:59:30 2004 +++ llvm/lib/System/Linux/Path.cpp Fri Nov 5 16:15:35 2004 @@ -23,7 +23,7 @@ using namespace sys; bool -Path::is_valid() const { +Path::isValid() const { if (path.empty()) return false; char pathname[MAXPATHLEN]; @@ -40,8 +40,8 @@ if (0 == mkdtemp(pathname)) ThrowErrno(std::string(pathname) + ": Can't create temporary directory"); Path result; - result.set_directory(pathname); - assert(result.is_valid() && "mkdtemp didn't create a valid pathname!"); + result.setDirectory(pathname); + assert(result.isValid() && "mkdtemp didn't create a valid pathname!"); return result; } From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/AIX/Path.cpp Message-ID: <200411052215.QAA25424@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/AIX: Path.cpp updated: 1.5 -> 1.6 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+3 -3) Index: llvm/lib/System/AIX/Path.cpp diff -u llvm/lib/System/AIX/Path.cpp:1.5 llvm/lib/System/AIX/Path.cpp:1.6 --- llvm/lib/System/AIX/Path.cpp:1.5 Mon Oct 18 12:39:45 2004 +++ llvm/lib/System/AIX/Path.cpp Fri Nov 5 16:15:35 2004 @@ -24,7 +24,7 @@ //===----------------------------------------------------------------------===// bool -Path::is_valid() const { +Path::isValid() const { if (path.empty()) return false; if (path.length() >= MAXPATHLEN) @@ -43,8 +43,8 @@ if (!mkdir(TmpName, S_IRWXU)) ThrowErrno(std::string(TmpName) + ": Can't create temporary directory"); Path result; - result.set_directory(TmpName); - assert(result.is_valid() && "mkdtemp didn't create a valid pathname!"); + result.setDirectory(TmpName); + assert(result.isValid() && "mkdtemp didn't create a valid pathname!"); return result; } From reid at x10sys.com Fri Nov 5 16:15:49 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri, 5 Nov 2004 16:15:49 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvmc/CompilerDriver.cpp CompilerDriver.h Configuration.cpp llvmc.cpp Message-ID: <200411052215.QAA25435@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvmc: CompilerDriver.cpp updated: 1.16 -> 1.17 CompilerDriver.h updated: 1.13 -> 1.14 Configuration.cpp updated: 1.14 -> 1.15 llvmc.cpp updated: 1.17 -> 1.18 --- Log message: Stop propagating method names that violate the coding standard --- Diffs of the changes: (+66 -55) Index: llvm/tools/llvmc/CompilerDriver.cpp diff -u llvm/tools/llvmc/CompilerDriver.cpp:1.16 llvm/tools/llvmc/CompilerDriver.cpp:1.17 --- llvm/tools/llvmc/CompilerDriver.cpp:1.16 Wed Oct 27 23:05:06 2004 +++ llvm/tools/llvmc/CompilerDriver.cpp Fri Nov 5 16:15:36 2004 @@ -134,7 +134,7 @@ StringVector::const_iterator E = paths.end(); while (I != E) { sys::Path tmp; - tmp.set_directory(*I); + tmp.setDirectory(*I); IncludePaths.push_back(tmp); ++I; } @@ -149,7 +149,7 @@ StringVector::const_iterator E = paths.end(); while (I != E) { sys::Path tmp; - tmp.set_directory(*I); + tmp.setDirectory(*I); LibraryPaths.push_back(tmp); ++I; } @@ -159,6 +159,10 @@ LibraryPaths.push_back(libPath); } + virtual void addToolPath( const sys::Path& toolPath ) { + ToolPaths.push_back(toolPath); + } + virtual void setfPassThrough(const StringVector& fOpts) { fOptions = fOpts; } @@ -182,8 +186,8 @@ void cleanup() { if (!isSet(KEEP_TEMPS_FLAG)) { - if (TempDir.is_directory() && TempDir.writable()) - TempDir.destroy_directory(/*remove_contents=*/true); + if (TempDir.isDirectory() && TempDir.writable()) + TempDir.destroyDirectory(/*remove_contents=*/true); } else { std::cout << "Temporary files are in " << TempDir.get() << "\n"; } @@ -192,9 +196,9 @@ sys::Path MakeTempFile(const std::string& basename, const std::string& suffix ) { sys::Path result(TempDir); - if (!result.append_file(basename)) + if (!result.appendFile(basename)) throw basename + ": can't use this file name"; - if (!result.append_suffix(suffix)) + if (!result.appendSuffix(suffix)) throw suffix + ": can't use this file suffix"; return result; } @@ -373,7 +377,7 @@ if (!isSet(DRY_RUN_FLAG)) { sys::Path progpath = sys::Program::FindProgramByName( action->program.get()); - if (progpath.is_empty()) + if (progpath.isEmpty()) throw std::string("Can't find program '"+progpath.get()+"'"); else if (progpath.executable()) action->program = progpath; @@ -404,24 +408,24 @@ const sys::Path& dir, bool native = false) { sys::Path fullpath(dir); - fullpath.append_file(link_item); + fullpath.appendFile(link_item); if (native) { - fullpath.append_suffix("a"); + fullpath.appendSuffix("a"); } else { - fullpath.append_suffix("bc"); + fullpath.appendSuffix("bc"); if (fullpath.readable()) return fullpath; - fullpath.elide_suffix(); - fullpath.append_suffix("o"); + fullpath.elideSuffix(); + fullpath.appendSuffix("o"); if (fullpath.readable()) return fullpath; fullpath = dir; - fullpath.append_file(std::string("lib") + link_item); - fullpath.append_suffix("a"); + fullpath.appendFile(std::string("lib") + link_item); + fullpath.appendSuffix("a"); if (fullpath.readable()) return fullpath; - fullpath.elide_suffix(); - fullpath.append_suffix("so"); + fullpath.elideSuffix(); + fullpath.appendSuffix("so"); if (fullpath.readable()) return fullpath; } @@ -446,14 +450,14 @@ // on the command line. PathVector::iterator PI = LibraryPaths.begin(); PathVector::iterator PE = LibraryPaths.end(); - while (PI != PE && fullpath.is_empty()) { + while (PI != PE && fullpath.isEmpty()) { fullpath = GetPathForLinkageItem(link_item.get(),*PI); ++PI; } // If we didn't find the file in any of the library search paths // so we have to bail. No where else to look. - if (fullpath.is_empty()) { + if (fullpath.isEmpty()) { err = std::string("Can't find linkage item '") + link_item.get() + "'"; return false; @@ -466,7 +470,7 @@ set.insert(fullpath); // If its an LLVM bytecode file ... - if (fullpath.is_bytecode_file()) { + if (fullpath.isBytecodeFile()) { // Process the dependent libraries recursively Module::LibraryListType modlibs; if (GetBytecodeDependentLibraries(fullpath.get(),modlibs)) { @@ -530,13 +534,13 @@ // If they are asking for linking and didn't provide an output // file then its an error (no way for us to "make up" a meaningful // file name based on the various linker input files). - if (finalPhase == LINKING && Output.is_empty()) + if (finalPhase == LINKING && Output.isEmpty()) throw std::string( "An output file name must be specified for linker output"); // If they are not asking for linking, provided an output file and // there is more than one input file, its an error - if (finalPhase != LINKING && !Output.is_empty() && InpList.size() > 1) + if (finalPhase != LINKING && !Output.isEmpty() && InpList.size() > 1) throw std::string("An output file name cannot be specified ") + "with more than one input file name when not linking"; @@ -581,19 +585,19 @@ // Initialize the input and output files sys::Path InFile(I->first); - sys::Path OutFile(I->first.get_basename()); + sys::Path OutFile(I->first.getBasename()); // PRE-PROCESSING PHASE Action& action = cd->PreProcessor; // Get the preprocessing action, if needed, or error if appropriate - if (!action.program.is_empty()) { + if (!action.program.isEmpty()) { if (action.isSet(REQUIRED_FLAG) || finalPhase == PREPROCESSING) { if (finalPhase == PREPROCESSING) { - OutFile.append_suffix("E"); + OutFile.appendSuffix("E"); actions.push_back(GetAction(cd,InFile,OutFile,PREPROCESSING)); } else { - sys::Path TempFile(MakeTempFile(I->first.get_basename(),"E")); + sys::Path TempFile(MakeTempFile(I->first.getBasename(),"E")); actions.push_back(GetAction(cd,InFile,TempFile, PREPROCESSING)); InFile = TempFile; @@ -614,13 +618,13 @@ action = cd->Translator; // Get the translation action, if needed, or error if appropriate - if (!action.program.is_empty()) { + if (!action.program.isEmpty()) { if (action.isSet(REQUIRED_FLAG) || finalPhase == TRANSLATION) { if (finalPhase == TRANSLATION) { - OutFile.append_suffix("o"); + OutFile.appendSuffix("o"); actions.push_back(GetAction(cd,InFile,OutFile,TRANSLATION)); } else { - sys::Path TempFile(MakeTempFile(I->first.get_basename(),"trans")); + sys::Path TempFile(MakeTempFile(I->first.getBasename(),"trans")); actions.push_back(GetAction(cd,InFile,TempFile,TRANSLATION)); InFile = TempFile; } @@ -630,10 +634,10 @@ /// The output of the translator is an LLVM Assembly program /// We need to translate it to bytecode Action* action = new Action(); - action->program.set_file("llvm-as"); + action->program.setFile("llvm-as"); action->args.push_back(InFile.get()); action->args.push_back("-o"); - InFile.append_suffix("bc"); + InFile.appendSuffix("bc"); action->args.push_back(InFile.get()); actions.push_back(action); } @@ -653,13 +657,13 @@ // Get the optimization action, if needed, or error if appropriate if (!isSet(EMIT_RAW_FLAG)) { - if (!action.program.is_empty()) { + if (!action.program.isEmpty()) { if (action.isSet(REQUIRED_FLAG) || finalPhase == OPTIMIZATION) { if (finalPhase == OPTIMIZATION) { - OutFile.append_suffix("o"); + OutFile.appendSuffix("o"); actions.push_back(GetAction(cd,InFile,OutFile,OPTIMIZATION)); } else { - sys::Path TempFile(MakeTempFile(I->first.get_basename(),"opt")); + sys::Path TempFile(MakeTempFile(I->first.getBasename(),"opt")); actions.push_back(GetAction(cd,InFile,TempFile,OPTIMIZATION)); InFile = TempFile; } @@ -668,11 +672,11 @@ /// The output of the optimizer is an LLVM Assembly program /// We need to translate it to bytecode with llvm-as Action* action = new Action(); - action->program.set_file("llvm-as"); + action->program.setFile("llvm-as"); action->args.push_back(InFile.get()); action->args.push_back("-f"); action->args.push_back("-o"); - InFile.append_suffix("bc"); + InFile.appendSuffix("bc"); action->args.push_back(InFile.get()); actions.push_back(action); } @@ -695,20 +699,20 @@ if (isSet(EMIT_NATIVE_FLAG)) { // Use llc to get the native assembly file Action* action = new Action(); - action->program.set_file("llc"); + action->program.setFile("llc"); action->args.push_back(InFile.get()); action->args.push_back("-f"); action->args.push_back("-o"); - OutFile.append_suffix("s"); + OutFile.appendSuffix("s"); action->args.push_back(OutFile.get()); } else { // Just convert back to llvm assembly with llvm-dis Action* action = new Action(); - action->program.set_file("llvm-dis"); + action->program.setFile("llvm-dis"); action->args.push_back(InFile.get()); action->args.push_back("-f"); action->args.push_back("-o"); - OutFile.append_suffix("ll"); + OutFile.appendSuffix("ll"); action->args.push_back(OutFile.get()); actions.push_back(action); } @@ -743,7 +747,7 @@ // Set up the linking action with llvm-ld Action* link = new Action(); - link->program.set_file("llvm-ld"); + link->program.setFile("llvm-ld"); // Add in the optimization level requested switch (optLevel) { @@ -834,6 +838,7 @@ std::string machine; ///< Target machine name PathVector LibraryPaths; ///< -L options PathVector IncludePaths; ///< -I options + PathVector ToolPaths; ///< -B options StringVector Defines; ///< -D options sys::Path TempDir; ///< Name of the temporary directory. StringTable AdditionalArgs; ///< The -Txyz options Index: llvm/tools/llvmc/CompilerDriver.h diff -u llvm/tools/llvmc/CompilerDriver.h:1.13 llvm/tools/llvmc/CompilerDriver.h:1.14 --- llvm/tools/llvmc/CompilerDriver.h:1.13 Wed Oct 27 23:04:38 2004 +++ llvm/tools/llvmc/CompilerDriver.h Fri Nov 5 16:15:36 2004 @@ -161,7 +161,7 @@ /// @brief Set the output machine name. virtual void setOutputMachine(const std::string& machineName) = 0; - /// @brief Set Preprocessor specific options + /// @brief Set the options for a given phase. virtual void setPhaseArgs(Phases phase, const StringVector& opts) = 0; /// @brief Set Library Paths @@ -173,10 +173,12 @@ /// @brief Set Library Paths virtual void setLibraryPaths(const StringVector& paths) = 0; - /// @brief Set the list of library paths to be searched for - /// libraries. + /// @brief Add a path to the list of library paths virtual void addLibraryPath( const sys::Path& libPath ) = 0; + /// @brief Add a path to the list of paths in which to find tools + virtual void addToolPath( const sys::Path& toolPath) = 0; + /// @brief Set the list of -f options to be passed through virtual void setfPassThrough(const StringVector& fOpts) = 0; Index: llvm/tools/llvmc/Configuration.cpp diff -u llvm/tools/llvmc/Configuration.cpp:1.14 llvm/tools/llvmc/Configuration.cpp:1.15 --- llvm/tools/llvmc/Configuration.cpp:1.14 Wed Oct 27 23:04:38 2004 +++ llvm/tools/llvmc/Configuration.cpp Fri Nov 5 16:15:36 2004 @@ -233,7 +233,7 @@ action.args.clear(); } else { if (token == STRING || token == OPTION) { - action.program.set_file(ConfigLexerState.StringVal); + action.program.setFile(ConfigLexerState.StringVal); } else { error("Expecting a program name"); } @@ -421,33 +421,33 @@ LLVMC_ConfigDataProvider::ReadConfigData(const std::string& ftype) { CompilerDriver::ConfigData* result = 0; sys::Path confFile; - if (configDir.is_empty()) { + if (configDir.isEmpty()) { // Try the environment variable const char* conf = getenv("LLVM_CONFIG_DIR"); if (conf) { - confFile.set_directory(conf); - confFile.append_file(ftype); + confFile.setDirectory(conf); + confFile.appendFile(ftype); if (!confFile.readable()) throw std::string("Configuration file for '") + ftype + "' is not available."; } else { // Try the user's home directory confFile = sys::Path::GetUserHomeDirectory(); - if (!confFile.is_empty()) { - confFile.append_directory(".llvm"); - confFile.append_directory("etc"); - confFile.append_file(ftype); + if (!confFile.isEmpty()) { + confFile.appendDirectory(".llvm"); + confFile.appendDirectory("etc"); + confFile.appendFile(ftype); if (!confFile.readable()) confFile.clear(); } - if (!confFile.is_empty()) { + if (!confFile.isEmpty()) { // Okay, try the LLVM installation directory confFile = sys::Path::GetLLVMConfigDir(); - confFile.append_file(ftype); + confFile.appendFile(ftype); if (!confFile.readable()) { // Okay, try the "standard" place confFile = sys::Path::GetLLVMDefaultConfigDir(); - confFile.append_file(ftype); + confFile.appendFile(ftype); if (!confFile.readable()) { throw std::string("Configuration file for '") + ftype + "' is not available."; @@ -457,7 +457,7 @@ } } else { confFile = configDir; - confFile.append_file(ftype); + confFile.appendFile(ftype); if (!confFile.readable()) throw std::string("Configuration file for '") + ftype + "' is not available."; Index: llvm/tools/llvmc/llvmc.cpp diff -u llvm/tools/llvmc/llvmc.cpp:1.17 llvm/tools/llvmc/llvmc.cpp:1.18 --- llvm/tools/llvmc/llvmc.cpp:1.17 Wed Oct 27 22:56:16 2004 +++ llvm/tools/llvmc/llvmc.cpp Fri Nov 5 16:15:36 2004 @@ -111,6 +111,10 @@ cl::desc("Pass through -W options to compiler tools"), cl::value_desc("warnings category")); +cl::list BOpt("B", cl::ZeroOrMore, cl::Prefix, + cl::desc("Indicate where llvmc sub-tools are installed"), + cl::value_desc("directory path containing bin and lib directories")); + //===------------------------------------------------------------------------=== //=== INPUT OPTIONS //===------------------------------------------------------------------------=== From reid at x10sys.com Sat Nov 6 02:51:56 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 02:51:56 -0600 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Archive/Archive.cpp ArchiveInternals.h ArchiveWriter.cpp Message-ID: <200411060851.CAA30459@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Archive: Archive.cpp added (r1.1) ArchiveInternals.h added (r1.1) ArchiveWriter.cpp added (r1.1) --- Log message: First kinda/sorta working version of the Archive library. Reading is not yet supported but writing works. Way too early to review this. More to come --- Diffs of the changes: (+466 -0) Index: llvm/lib/Bytecode/Archive/Archive.cpp diff -c /dev/null llvm/lib/Bytecode/Archive/Archive.cpp:1.1 *** /dev/null Sat Nov 6 02:51:55 2004 --- llvm/lib/Bytecode/Archive/Archive.cpp Sat Nov 6 02:51:45 2004 *************** *** 0 **** --- 1,24 ---- + //===-- Archive.cpp - Generic LLVM archive functions ------------*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by Reid Spencer and is distributed under the + // University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + // + // Builds up standard unix archive files (.a) containing LLVM bytecode. + // + //===----------------------------------------------------------------------===// + + #include "ArchiveInternals.h" + + using namespace llvm; + + Archive::Archive() { + } + + Archive::~Archive() { + } + + // vim: sw=2 ai Index: llvm/lib/Bytecode/Archive/ArchiveInternals.h diff -c /dev/null llvm/lib/Bytecode/Archive/ArchiveInternals.h:1.1 *** /dev/null Sat Nov 6 02:51:56 2004 --- llvm/lib/Bytecode/Archive/ArchiveInternals.h Sat Nov 6 02:51:45 2004 *************** *** 0 **** --- 1,158 ---- + //===-- lib/Bytecode/ArchiveInternals.h -------------------------*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by Reid Spencer and is distributed under the + // University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + // + // Internal implementation header for LLVM Archive files. + // + //===----------------------------------------------------------------------===// + + #ifndef LIB_BYTECODE_ARCHIVEINTERNALS_H + #define LIB_BYTECODE_ARCHIVEINTERNALS_H + + #include "llvm/Bytecode/Archive.h" + #include "llvm/System/TimeValue.h" + + #define ARFILE_MAGIC "!\n" ///< magic string + #define ARFILE_MAGIC_LEN (sizeof(ARFILE_MAGIC)-1) ///< length of magic string + #define ARFILE_SYMTAB_NAME "/" ///< name of symtab entry + #define ARFILE_STRTAB_NAME "//" ///< name of strtab entry + #define ARFILE_PAD '\n' ///< inter-file align padding + + namespace llvm { + + /// The ArchiveMemberHeader structure is used internally for bytecode archives. + /// The header precedes each file member in the archive. This structure is + /// defined using character arrays for direct and correct interpretation + /// regardless of the endianess of the machine that produced it. + /// @brief Archive File Member Header + class ArchiveMemberHeader { + public: + void init() { + memset(name,' ',16); + memset(date,' ',12); + memset(uid,' ',6); + memset(gid,' ',6); + memset(mode,' ',8); + memset(size,' ',10); + fmag[0] = '`'; + fmag[1] = '\n'; + } + void setDate( int secondsSinceEpoch = 0 ) { + if (secondsSinceEpoch == 0) { + sys::TimeValue tv = sys::TimeValue::now(); + uint64_t secs; uint32_t nanos; + tv.GetTimespecTime(secs,nanos); + secondsSinceEpoch = (int) secs; + } + char buffer[20]; + sprintf(buffer,"%d", secondsSinceEpoch); + memcpy(date,buffer,strlen(buffer)); + } + + void setSize(size_t sz) { + char buffer[20]; + sprintf(buffer, "%u", (unsigned)sz); + memcpy(size,buffer,strlen(buffer)); + } + + void setMode(int m) { + char buffer[20]; + sprintf(buffer, "%o", m); + memcpy(mode,buffer,strlen(buffer)); + } + + void setUid(unsigned u) { + char buffer[20]; + sprintf(buffer, "%u", u); + memcpy(uid,buffer,strlen(buffer)); + } + + void setGid(unsigned g) { + char buffer[20]; + sprintf(buffer, "%u", g); + memcpy(gid,buffer,strlen(buffer)); + } + + bool setName(const std::string& nm) { + if (nm.length() > 0 && nm.length() <= 16) { + memcpy(name,nm.c_str(),nm.length()); + for (int i = nm.length()+1; i < 16; i++ ) name[i] = ' '; + return true; + } + return false; + } + + private: + char name[16]; ///< Name of the file member. The filename is terminated with '/' + ///< and blanks. The empty name (/ and 15 blanks) is for the + ///< symbol table. The special name "//" and 15 blanks is for + ///< the string table, used for long file names. It must be + ///< first in the archive. + char date[12]; ///< File date, decimal seconds since Epoch + char uid[6]; ///< user id in ASCII decimal + char gid[6]; ///< group id in ASCII decimal + char mode[8]; ///< file mode in ASCII octal + char size[10]; ///< file size in ASCII decimal + char fmag[2]; ///< Always contains ARFILE_MAGIC_TERMINATOR + + }; + + /// The ArchiveInternals class is used to hold the content of the archive + /// while it is in memory. It also provides the bulk of the implementation for + /// the llvm:Archive class's interface. + class Archive::ArchiveInternals { + /// @name Types + /// @{ + public: + typedef std::vector StrTab; + + /// This structure holds information for one member in the archive. It is + /// used temporarily while the contents of the archive are being + /// determined. + struct MemberInfo { + MemberInfo() {} + sys::Path path; + std::string name; + sys::Path::StatusInfo status; + StrTab symbols; + unsigned offset; + }; + + /// @} + /// @name Methods + /// @{ + public: + /// @brief Add a file member to the archive. + void addFileMember( + const sys::Path& path, ///< The path to the file to be added + const std::string& name, ///< The name for the member + const StrTab* syms = 0 ///< The symbol table of the member + ); + + /// @brief Write the accumulated archive information to an archive file + void writeArchive(); + void writeMember(const MemberInfo& member,std::ofstream& ARFile); + void writeSymbolTable(std::ofstream& ARFile); + void writeInteger(int num, std::ofstream& ARFile); + + /// @} + /// @name Data + /// @{ + private: + friend class Archive; ///< Parent class is a friend + sys::Path fname; ///< Path to the archive file + std::vector members; ///< Info about member files + Archive::SymTab* symtab; ///< User's symbol table + + /// @} + }; + } + + #endif + + // vim: sw=2 ai Index: llvm/lib/Bytecode/Archive/ArchiveWriter.cpp diff -c /dev/null llvm/lib/Bytecode/Archive/ArchiveWriter.cpp:1.1 *** /dev/null Sat Nov 6 02:51:56 2004 --- llvm/lib/Bytecode/Archive/ArchiveWriter.cpp Sat Nov 6 02:51:45 2004 *************** *** 0 **** --- 1,284 ---- + //===-- ArchiveWriter.cpp - LLVM archive writing --------------------------===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by Reid Spencerand is distributed under the + // University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + // + // Builds up standard unix archive files (.a) containing LLVM bytecode. + // + //===----------------------------------------------------------------------===// + + #include "ArchiveInternals.h" + #include "llvm/Module.h" + #include "llvm/Bytecode/Reader.h" + #include "llvm/Support/FileUtilities.h" + #include "llvm/ADT/StringExtras.h" + #include "llvm/System/MappedFile.h" + #include + #include + + using namespace llvm; + + Archive* + Archive::CreateEmpty(const sys::Path& Filename) { + Archive* result = new Archive; + Archive::ArchiveInternals* impl = result->impl = new Archive::ArchiveInternals; + impl->fname = Filename; + return result; + } + + Archive* + Archive::CreateFromFiles( + const sys::Path& Filename, + const PathList& Files, + const std::string& StripName + ) { + Archive* result = new Archive; + Archive::ArchiveInternals* impl = result->impl = new Archive::ArchiveInternals; + impl->fname = Filename; + + try { + size_t strip_len = StripName.length(); + for (PathList::const_iterator P = Files.begin(), E = Files.end(); P != E ;++P) + { + if (P->readable()) { + std::string name(P->get()); + if (strip_len > 0 && StripName == name.substr(0,strip_len)) { + name.erase(0,strip_len); + } + if (P->isBytecodeFile()) { + std::vector syms; + if (!GetBytecodeSymbols(*P, syms)) + throw std::string("Can not get symbols from: ") + P->get(); + impl->addFileMember(*P, name, &syms); + } else { + impl->addFileMember(*P, name); + } + } + else + throw std::string("Can not read: ") + P->get(); + } + + // Now that we've collected everything, write the archive + impl->writeArchive(); + + } catch(...) { + delete impl; + result->impl = 0; + delete result; + throw; + } + + return result; + } + + void + Archive::ArchiveInternals::addFileMember( + const sys::Path& filePath, + const std::string& memberName, + const StrTab* symbols + ) { + MemberInfo info; + info.path = filePath; + info.name = memberName; + filePath.getStatusInfo(info.status); + if (symbols) + info.symbols = *symbols; + info.offset = 0; + members.push_back(info); + } + + void + Archive::ArchiveInternals::writeInteger(int num, std::ofstream& ARFile) { + char buff[4]; + buff[0] = (num >> 24) & 255; + buff[1] = (num >> 16) & 255; + buff[2] = (num >> 8) & 255; + buff[3] = num & 255; + ARFile.write(buff, sizeof(buff)); + } + + void + Archive::ArchiveInternals::writeSymbolTable( std::ofstream& ARFile ) { + + // Compute the number of symbols in the symbol table and the + // total byte size of the string pool. While we're traversing, + // build the string pool for supporting long file names. Also, + // build the table of file offsets for the symbol table and + // the + typedef std::map SymbolMap; + StrTab stringPool; + SymbolMap symbolTable; + std::vector fileOffsets; + std::string symTabStrings; + unsigned fileOffset = 0; + unsigned spOffset = 0; + unsigned numSymbols = 0; + unsigned numSymBytes = 0; + for (unsigned i = 0; i < members.size(); i++ ) { + MemberInfo& mi = members[i]; + StrTab& syms = mi.symbols; + size_t numSym = syms.size(); + numSymbols += numSym; + for (unsigned j = 0; j < numSym; j++ ) { + numSymBytes += syms[j].size() + 1; + symbolTable[syms[i]] = i; + } + if (mi.name.length() > 15 || std::string::npos != mi.name.find('/')) { + stringPool.push_back(mi.name + "/\n"); + mi.name = std::string("/") + utostr(spOffset); + spOffset += mi.name.length() + 2; + } else if (mi.name[mi.name.length()-1] != '/') { + mi.name += "/"; + } + fileOffsets.push_back(fileOffset); + fileOffset += sizeof(ArchiveMemberHeader) + mi.status.fileSize; + } + + + // Compute the size of the symbol table file member + unsigned symTabSize = 0; + if (numSymbols != 0) + symTabSize = + sizeof(ArchiveMemberHeader) + // Size of the file header + 4 + // Size of "number of entries" + (4 * numSymbols) + // Size of member file indices + numSymBytes; // Size of the string table + + // Compute the size of the string pool + unsigned strPoolSize = 0; + if (spOffset != 0 ) + strPoolSize = + sizeof(ArchiveMemberHeader) + // Size of the file header + spOffset; // Number of bytes in the string pool + + // Compute the byte index offset created by symbol table and string pool + unsigned firstFileOffset = symTabSize + strPoolSize; + + // Create header for symbol table. This must be first if there is + // a symbol table and must have a special name. + if ( symTabSize > 0 ) { + ArchiveMemberHeader Hdr; + Hdr.init(); + + // Name of symbol table is '/ ' but "" is passed in + // because the setName method always terminates with a / + Hdr.setName(ARFILE_SYMTAB_NAME); + Hdr.setDate(); + Hdr.setSize(symTabSize - sizeof(ArchiveMemberHeader)); + Hdr.setMode(0); + Hdr.setUid(0); + Hdr.setGid(0); + + // Write header to archive file + ARFile.write((char*)&Hdr, sizeof(Hdr)); + + // Write the number of entries in the symbol table + this->writeInteger(numSymbols, ARFile); + + // Write the file offset indices for each symbol and build the + // symbol table string pool + std::string symTabStrPool; + symTabStrPool.reserve(256 * 1024); // Reserve 256KBytes for symbols + for (SymbolMap::iterator I = symbolTable.begin(), E = symbolTable.end(); + I != E; ++I ) { + this->writeInteger(firstFileOffset + fileOffsets[I->second], ARFile); + symTabStrPool += I->first; + symTabStrPool += "\0"; + } + + // Write the symbol table's string pool + ARFile.write(symTabStrPool.data(), symTabStrPool.size()); + } + + //============== DONE WITH SYMBOL TABLE + + if (strPoolSize > 0) { + // Initialize the header for the string pool + ArchiveMemberHeader Hdr; + Hdr.init(); + Hdr.setName(ARFILE_STRTAB_NAME); + Hdr.setDate(); + Hdr.setSize(spOffset); + Hdr.setMode(0); + Hdr.setUid(0); + Hdr.setGid(0); + + // Write the string pool header + ARFile.write((char*)&Hdr, sizeof(Hdr)); + + // Write the string pool + for (unsigned i = 0; i < stringPool.size(); i++) { + ARFile.write(stringPool[i].data(), stringPool[i].size()); + } + } + } + + void + Archive::ArchiveInternals::writeMember( + const MemberInfo& member, + std::ofstream& ARFile + ) { + + // Map the file into memory. We do this early for two reasons. First, + // if there's any kind of error, we want to know about it. Second, we + // want to ensure we're using the most recent size for this file. + sys::MappedFile mFile(member.path); + mFile.map(); + + // Header for the archive member + ArchiveMemberHeader Hdr; + Hdr.init(); + + // Set the name. If its longer than 15 chars, it will have already + // been reduced by the writeSymbolTable. + Hdr.setName(member.name); + + // Set the other header members + Hdr.setSize( mFile.size() ); + Hdr.setMode( member.status.mode); + Hdr.setUid ( member.status.user); + Hdr.setGid ( member.status.group); + Hdr.setDate( member.status.modTime.ToPosixTime() ); + + // Write header to archive file + ARFile.write((char*)&Hdr, sizeof(Hdr)); + + //write to archive file + ARFile.write(mFile.charBase(),mFile.size()); + + mFile.unmap(); + } + + void + Archive::ArchiveInternals::writeArchive() { + + // Create archive file for output. + std::ofstream ArchiveFile(fname.get().c_str()); + + // Check for errors opening or creating archive file. + if ( !ArchiveFile.is_open() || ArchiveFile.bad() ) { + throw std::string("Error opening archive file: ") + fname.get(); + } + + // Write magic string to archive. + ArchiveFile << ARFILE_MAGIC; + + // Write the symbol table and string pool + writeSymbolTable(ArchiveFile); + + //Loop over all member files, and add to the archive. + for ( unsigned i = 0; i < members.size(); ++i) { + if(ArchiveFile.tellp() % 2 != 0) + ArchiveFile << ARFILE_PAD; + writeMember(members[i],ArchiveFile); + } + + //Close archive file. + ArchiveFile.close(); + } + + // vim: sw=2 ai From reid at x10sys.com Sat Nov 6 02:52:46 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 02:52:46 -0600 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Archive/Makefile Message-ID: <200411060852.CAA30487@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Archive: Makefile added (r1.1) --- Log message: Makefile for the LLVMArchive library. --- Diffs of the changes: (+18 -0) Index: llvm/lib/Bytecode/Archive/Makefile diff -c /dev/null llvm/lib/Bytecode/Archive/Makefile:1.1 *** /dev/null Sat Nov 6 02:52:46 2004 --- llvm/lib/Bytecode/Archive/Makefile Sat Nov 6 02:52:36 2004 *************** *** 0 **** --- 1,18 ---- + ##===- lib/Bytecode/Archive/Makefile -----------------------*- Makefile -*-===## + # + # The LLVM Compiler Infrastructure + # + # This file was developed by Reid Spencer and is distributed under the + # University of Illinois Open Source License. See LICENSE.TXT for details. + # + ##===----------------------------------------------------------------------===## + + LEVEL = ../../.. + LIBRARYNAME = LLVMArchive + + # We only want an archive so only those modules actually used by a tool are + # included. + BUILD_ARCHIVE = 1 + DONT_BUILD_RELINKED = 1 + + include $(LEVEL)/Makefile.common From reid at x10sys.com Sat Nov 6 02:54:10 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 02:54:10 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Bytecode/Archive.h Message-ID: <200411060854.CAA30516@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Bytecode: Archive.h updated: 1.3 -> 1.4 --- Log message: Deprecate constructors we don't want users to use. Temporarily comment out two interface methods we might not implement. --- Diffs of the changes: (+23 -0) Index: llvm/include/llvm/Bytecode/Archive.h diff -u llvm/include/llvm/Bytecode/Archive.h:1.3 llvm/include/llvm/Bytecode/Archive.h:1.4 --- llvm/include/llvm/Bytecode/Archive.h:1.3 Fri Nov 5 12:48:02 2004 +++ llvm/include/llvm/Bytecode/Archive.h Sat Nov 6 02:53:59 2004 @@ -66,6 +66,13 @@ const sys::Path& Filename ///< Name of archive file ); +#if 0 + +This interface severely complicates the +Archive class. Its commented out until +a final determination is made of whether +we will support adding modules or not. + /// Create a new archive file, \p Filename, from the LLVM modules \p Modules. /// The module's externally visible linkage symbols will be added to the /// archive's symbol table. The names of the file members will be obtained @@ -83,6 +90,7 @@ const ModuleList& Modules, ///< Modules to be put in archive const std::string& StripName="" ///< Prefix to strip from member names ); +#endif /// Create a new archive file, \p Filename, from a set of existing \p Files. /// Each entry in \p Files will be added to the archive. If any file is an @@ -225,6 +233,13 @@ const std::string& StripName="" ///< Prefix path to strip from names ); +#if 0 + +This interface severely complicates the +Archive class. Its commented out until +a final determination is made of whether +we will support adding modules or not. + /// Add a set of Modules to the archive. Names of member files will /// be taken from the Module identifier (Module::getModuleIdentifier) if it /// is unique. Non-unique member names will be made unique by appending a @@ -242,6 +257,7 @@ const ModuleList& Modules, ///< The modules to add to the archive const std::string& StripName="" ///< Prefix path to strip from names ); +#endif /// @} /// @name Data @@ -250,6 +266,13 @@ class ArchiveInternals; ArchiveInternals* impl; ///< Implementation class /// @} + /// @name Hidden + /// @{ + private: + Archive(); ///< Do not implement + Archive(const Archive&); ///< Do not implement + Archive& operator=(const Archive&); ///< Do not implement + /// @} }; } // End llvm namespace From reid at x10sys.com Sat Nov 6 02:54:57 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 02:54:57 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Bytecode/Reader.h Message-ID: <200411060854.CAA30545@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Bytecode: Reader.h updated: 1.19 -> 1.20 --- Log message: Provide an interface for getting just the external symbols from a Bytecode file. --- Diffs of the changes: (+10 -0) Index: llvm/include/llvm/Bytecode/Reader.h diff -u llvm/include/llvm/Bytecode/Reader.h:1.19 llvm/include/llvm/Bytecode/Reader.h:1.20 --- llvm/include/llvm/Bytecode/Reader.h:1.19 Fri Sep 10 23:29:13 2004 +++ llvm/include/llvm/Bytecode/Reader.h Sat Nov 6 02:54:47 2004 @@ -19,6 +19,7 @@ #ifndef LLVM_BYTECODE_READER_H #define LLVM_BYTECODE_READER_H +#include "llvm/System/Path.h" #include "llvm/ModuleProvider.h" #include "llvm/Module.h" #include @@ -62,6 +63,15 @@ bool GetBytecodeDependentLibraries(const std::string &fileName, Module::LibraryListType& deplibs); +/// This function will read only the necessary parts of a bytecode file in order +/// to obtain a list of externally visible global symbols that the bytecode +/// module defines. This is used for archiving and linking when only the list +/// of symbols the module defines is needed. +/// @returns true on success, false otherwise +/// @brief Get a bytecode file's externally visibile defined global symbols. +bool GetBytecodeSymbols(const sys::Path& fileName, + std::vector& syms); + /// Read bytecode files from the specfied archive (.a) file, convert them /// to Module* and provide them in the \p Objects argument. If an error /// occurs, ErrorStr (if non-null) will be set to a string explaining From reid at x10sys.com Sat Nov 6 02:56:51 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 02:56:51 -0600 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Reader/ReaderWrappers.cpp Message-ID: <200411060856.CAA30581@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Reader: ReaderWrappers.cpp updated: 1.32 -> 1.33 --- Log message: Implement the GetBytecodeSymbols interface function to extract just the externally visible defined symbols from a bytecode file. --- Diffs of the changes: (+39 -0) Index: llvm/lib/Bytecode/Reader/ReaderWrappers.cpp diff -u llvm/lib/Bytecode/Reader/ReaderWrappers.cpp:1.32 llvm/lib/Bytecode/Reader/ReaderWrappers.cpp:1.33 --- llvm/lib/Bytecode/Reader/ReaderWrappers.cpp:1.32 Sun Sep 12 15:56:38 2004 +++ llvm/lib/Bytecode/Reader/ReaderWrappers.cpp Sat Nov 6 02:56:40 2004 @@ -336,6 +336,7 @@ try { std::auto_ptr AMP( getBytecodeModuleProvider(fname)); Module* M = AMP->releaseModule(); + deplibs = M->getLibraries(); delete M; return true; @@ -345,4 +346,42 @@ } } +// Get just the externally visible defined symbols from the bytecode +bool llvm::GetBytecodeSymbols(const sys::Path& fName, + std::vector& symbols) { + try { + std::auto_ptr AMP( getBytecodeModuleProvider(fName.get())); + + // Get the module from the provider + Module* M = AMP->releaseModule(); + + // Loop over global variables + for (Module::giterator GI = M->gbegin(), GE=M->gend(); GI != GE; ++GI) { + if (GI->hasInitializer()) { + std::string name ( GI->getName() ); + if (!name.empty()) { + symbols.push_back(name); + } + } + } + + //Loop over functions + for (Module::iterator FI = M->begin(), FE=M->end(); FI != FE; ++FI) { + if (!FI->isExternal()) { + std::string name ( FI->getName() ); + if (!name.empty()) { + symbols.push_back(name); + } + } + } + + // Done with the module + delete M; + return true; + + } catch (...) { + return false; + } +} + // vim: sw=2 ai From lattner at cs.uiuc.edu Sat Nov 6 11:07:47 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:47 -0600 Subject: [llvm-commits] CVS: llvm/win32/llvm.sln Message-ID: <200411061707.iA6H7lM0017527@apoc.cs.uiuc.edu> Changes in directory llvm/win32: llvm.sln updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+134 -134) Index: llvm/win32/llvm.sln diff -u llvm/win32/llvm.sln:1.1 llvm/win32/llvm.sln:1.2 --- llvm/win32/llvm.sln:1.1 Wed Nov 3 10:14:40 2004 +++ llvm/win32/llvm.sln Sat Nov 6 11:07:32 2004 @@ -1,134 +1,134 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Support", "Support\Support.vcproj", "{28AA9146-3482-4F41-9CC6-407B1D258508}" - ProjectSection(ProjectDependencies) = postProject - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TableGen", "TableGen\TableGen.vcproj", "{339C2249-26B6-4172-B484-85653029AF57}" - ProjectSection(ProjectDependencies) = postProject - {28AA9146-3482-4F41-9CC6-407B1D258508} = {28AA9146-3482-4F41-9CC6-407B1D258508} - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} = {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Fibonacci", "Fibonacci\Fibonacci.vcproj", "{48FB551D-E37E-42EC-BC97-FF7219774867}" - ProjectSection(ProjectDependencies) = postProject - {0622E827-8464-489D-8B1C-B0B496F35C08} = {0622E827-8464-489D-8B1C-B0B496F35C08} - {28AA9146-3482-4F41-9CC6-407B1D258508} = {28AA9146-3482-4F41-9CC6-407B1D258508} - {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4} = {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4} - {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} = {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} - {C59374C1-9FC0-4147-B836-327DFDC52D99} = {C59374C1-9FC0-4147-B836-327DFDC52D99} - {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB} = {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB} - {76295AE8-A083-460E-9F80-6F2B8923264A} = {76295AE8-A083-460E-9F80-6F2B8923264A} - {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} = {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} - {144EEBF6-8C9B-4473-B715-2C821666AF6C} = {144EEBF6-8C9B-4473-B715-2C821666AF6C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExecutionEngine", "ExecutionEngine\ExecutionEngine.vcproj", "{76295AE8-A083-460E-9F80-6F2B8923264A}" - ProjectSection(ProjectDependencies) = postProject - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VMCore", "VMCore\VMCore.vcproj", "{45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}" - ProjectSection(ProjectDependencies) = postProject - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Target", "Target\Target.vcproj", "{059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}" - ProjectSection(ProjectDependencies) = postProject - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - {144EEBF6-8C9B-4473-B715-2C821666AF6C} = {144EEBF6-8C9B-4473-B715-2C821666AF6C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CodeGen", "CodeGen\CodeGen.vcproj", "{08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}" - ProjectSection(ProjectDependencies) = postProject - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System", "System\System.vcproj", "{0F8407F3-FA23-4CF1-83A9-DCBE0B361489}" - ProjectSection(ProjectDependencies) = postProject - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Analysis", "Analysis\Analysis.vcproj", "{0622E827-8464-489D-8B1C-B0B496F35C08}" - ProjectSection(ProjectDependencies) = postProject - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x86", "x86\x86.vcproj", "{144EEBF6-8C9B-4473-B715-2C821666AF6C}" - ProjectSection(ProjectDependencies) = postProject - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - {339C2249-26B6-4172-B484-85653029AF57} = {339C2249-26B6-4172-B484-85653029AF57} - {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} = {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} - {C59374C1-9FC0-4147-B836-327DFDC52D99} = {C59374C1-9FC0-4147-B836-327DFDC52D99} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Transforms", "Transforms\Transforms.vcproj", "{C59374C1-9FC0-4147-B836-327DFDC52D99}" - ProjectSection(ProjectDependencies) = postProject - {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Configure", "Configure\Configure.vcproj", "{19514E48-456C-4B9D-8637-F2285476461E}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {28AA9146-3482-4F41-9CC6-407B1D258508}.Debug.ActiveCfg = Debug|Win32 - {28AA9146-3482-4F41-9CC6-407B1D258508}.Debug.Build.0 = Debug|Win32 - {28AA9146-3482-4F41-9CC6-407B1D258508}.Release.ActiveCfg = Release|Win32 - {28AA9146-3482-4F41-9CC6-407B1D258508}.Release.Build.0 = Release|Win32 - {339C2249-26B6-4172-B484-85653029AF57}.Debug.ActiveCfg = Debug|Win32 - {339C2249-26B6-4172-B484-85653029AF57}.Debug.Build.0 = Debug|Win32 - {339C2249-26B6-4172-B484-85653029AF57}.Release.ActiveCfg = Release|Win32 - {339C2249-26B6-4172-B484-85653029AF57}.Release.Build.0 = Release|Win32 - {48FB551D-E37E-42EC-BC97-FF7219774867}.Debug.ActiveCfg = Debug|Win32 - {48FB551D-E37E-42EC-BC97-FF7219774867}.Debug.Build.0 = Debug|Win32 - {48FB551D-E37E-42EC-BC97-FF7219774867}.Release.ActiveCfg = Release|Win32 - {48FB551D-E37E-42EC-BC97-FF7219774867}.Release.Build.0 = Release|Win32 - {76295AE8-A083-460E-9F80-6F2B8923264A}.Debug.ActiveCfg = Debug|Win32 - {76295AE8-A083-460E-9F80-6F2B8923264A}.Debug.Build.0 = Debug|Win32 - {76295AE8-A083-460E-9F80-6F2B8923264A}.Release.ActiveCfg = Release|Win32 - {76295AE8-A083-460E-9F80-6F2B8923264A}.Release.Build.0 = Release|Win32 - {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Debug.ActiveCfg = Debug|Win32 - {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Debug.Build.0 = Debug|Win32 - {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Release.ActiveCfg = Release|Win32 - {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Release.Build.0 = Release|Win32 - {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Debug.ActiveCfg = Debug|Win32 - {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Debug.Build.0 = Debug|Win32 - {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Release.ActiveCfg = Release|Win32 - {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Release.Build.0 = Release|Win32 - {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Debug.ActiveCfg = Debug|Win32 - {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Debug.Build.0 = Debug|Win32 - {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Release.ActiveCfg = Release|Win32 - {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Release.Build.0 = Release|Win32 - {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Debug.ActiveCfg = Debug|Win32 - {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Debug.Build.0 = Debug|Win32 - {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Release.ActiveCfg = Release|Win32 - {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Release.Build.0 = Release|Win32 - {0622E827-8464-489D-8B1C-B0B496F35C08}.Debug.ActiveCfg = Debug|Win32 - {0622E827-8464-489D-8B1C-B0B496F35C08}.Debug.Build.0 = Debug|Win32 - {0622E827-8464-489D-8B1C-B0B496F35C08}.Release.ActiveCfg = Release|Win32 - {0622E827-8464-489D-8B1C-B0B496F35C08}.Release.Build.0 = Release|Win32 - {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Debug.ActiveCfg = Debug|Win32 - {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Debug.Build.0 = Debug|Win32 - {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Release.ActiveCfg = Release|Win32 - {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Release.Build.0 = Release|Win32 - {C59374C1-9FC0-4147-B836-327DFDC52D99}.Debug.ActiveCfg = Debug|Win32 - {C59374C1-9FC0-4147-B836-327DFDC52D99}.Debug.Build.0 = Debug|Win32 - {C59374C1-9FC0-4147-B836-327DFDC52D99}.Release.ActiveCfg = Release|Win32 - {C59374C1-9FC0-4147-B836-327DFDC52D99}.Release.Build.0 = Release|Win32 - {19514E48-456C-4B9D-8637-F2285476461E}.Debug.ActiveCfg = Configure|Win32 - {19514E48-456C-4B9D-8637-F2285476461E}.Debug.Build.0 = Configure|Win32 - {19514E48-456C-4B9D-8637-F2285476461E}.Release.ActiveCfg = Configure|Win32 - {19514E48-456C-4B9D-8637-F2285476461E}.Release.Build.0 = Configure|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Support", "Support\Support.vcproj", "{28AA9146-3482-4F41-9CC6-407B1D258508}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TableGen", "TableGen\TableGen.vcproj", "{339C2249-26B6-4172-B484-85653029AF57}" + ProjectSection(ProjectDependencies) = postProject + {28AA9146-3482-4F41-9CC6-407B1D258508} = {28AA9146-3482-4F41-9CC6-407B1D258508} + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} = {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Fibonacci", "Fibonacci\Fibonacci.vcproj", "{48FB551D-E37E-42EC-BC97-FF7219774867}" + ProjectSection(ProjectDependencies) = postProject + {0622E827-8464-489D-8B1C-B0B496F35C08} = {0622E827-8464-489D-8B1C-B0B496F35C08} + {28AA9146-3482-4F41-9CC6-407B1D258508} = {28AA9146-3482-4F41-9CC6-407B1D258508} + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4} = {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4} + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} = {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} + {C59374C1-9FC0-4147-B836-327DFDC52D99} = {C59374C1-9FC0-4147-B836-327DFDC52D99} + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB} = {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB} + {76295AE8-A083-460E-9F80-6F2B8923264A} = {76295AE8-A083-460E-9F80-6F2B8923264A} + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} = {0F8407F3-FA23-4CF1-83A9-DCBE0B361489} + {144EEBF6-8C9B-4473-B715-2C821666AF6C} = {144EEBF6-8C9B-4473-B715-2C821666AF6C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExecutionEngine", "ExecutionEngine\ExecutionEngine.vcproj", "{76295AE8-A083-460E-9F80-6F2B8923264A}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VMCore", "VMCore\VMCore.vcproj", "{45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Target", "Target\Target.vcproj", "{059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + {144EEBF6-8C9B-4473-B715-2C821666AF6C} = {144EEBF6-8C9B-4473-B715-2C821666AF6C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CodeGen", "CodeGen\CodeGen.vcproj", "{08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System", "System\System.vcproj", "{0F8407F3-FA23-4CF1-83A9-DCBE0B361489}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Analysis", "Analysis\Analysis.vcproj", "{0622E827-8464-489D-8B1C-B0B496F35C08}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x86", "x86\x86.vcproj", "{144EEBF6-8C9B-4473-B715-2C821666AF6C}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + {339C2249-26B6-4172-B484-85653029AF57} = {339C2249-26B6-4172-B484-85653029AF57} + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} = {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897} + {C59374C1-9FC0-4147-B836-327DFDC52D99} = {C59374C1-9FC0-4147-B836-327DFDC52D99} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Transforms", "Transforms\Transforms.vcproj", "{C59374C1-9FC0-4147-B836-327DFDC52D99}" + ProjectSection(ProjectDependencies) = postProject + {19514E48-456C-4B9D-8637-F2285476461E} = {19514E48-456C-4B9D-8637-F2285476461E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Configure", "Configure\Configure.vcproj", "{19514E48-456C-4B9D-8637-F2285476461E}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {28AA9146-3482-4F41-9CC6-407B1D258508}.Debug.ActiveCfg = Debug|Win32 + {28AA9146-3482-4F41-9CC6-407B1D258508}.Debug.Build.0 = Debug|Win32 + {28AA9146-3482-4F41-9CC6-407B1D258508}.Release.ActiveCfg = Release|Win32 + {28AA9146-3482-4F41-9CC6-407B1D258508}.Release.Build.0 = Release|Win32 + {339C2249-26B6-4172-B484-85653029AF57}.Debug.ActiveCfg = Debug|Win32 + {339C2249-26B6-4172-B484-85653029AF57}.Debug.Build.0 = Debug|Win32 + {339C2249-26B6-4172-B484-85653029AF57}.Release.ActiveCfg = Release|Win32 + {339C2249-26B6-4172-B484-85653029AF57}.Release.Build.0 = Release|Win32 + {48FB551D-E37E-42EC-BC97-FF7219774867}.Debug.ActiveCfg = Debug|Win32 + {48FB551D-E37E-42EC-BC97-FF7219774867}.Debug.Build.0 = Debug|Win32 + {48FB551D-E37E-42EC-BC97-FF7219774867}.Release.ActiveCfg = Release|Win32 + {48FB551D-E37E-42EC-BC97-FF7219774867}.Release.Build.0 = Release|Win32 + {76295AE8-A083-460E-9F80-6F2B8923264A}.Debug.ActiveCfg = Debug|Win32 + {76295AE8-A083-460E-9F80-6F2B8923264A}.Debug.Build.0 = Debug|Win32 + {76295AE8-A083-460E-9F80-6F2B8923264A}.Release.ActiveCfg = Release|Win32 + {76295AE8-A083-460E-9F80-6F2B8923264A}.Release.Build.0 = Release|Win32 + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Debug.ActiveCfg = Debug|Win32 + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Debug.Build.0 = Debug|Win32 + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Release.ActiveCfg = Release|Win32 + {45CD78D7-C5D9-47FE-AD12-F3251EEDAFFB}.Release.Build.0 = Release|Win32 + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Debug.ActiveCfg = Debug|Win32 + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Debug.Build.0 = Debug|Win32 + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Release.ActiveCfg = Release|Win32 + {059FBAB8-C76D-48A0-AA75-3C57BD3EAFE4}.Release.Build.0 = Release|Win32 + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Debug.ActiveCfg = Debug|Win32 + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Debug.Build.0 = Debug|Win32 + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Release.ActiveCfg = Release|Win32 + {08CEB1BB-C2A4-4587-B9A9-AEDB8FB44897}.Release.Build.0 = Release|Win32 + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Debug.ActiveCfg = Debug|Win32 + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Debug.Build.0 = Debug|Win32 + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Release.ActiveCfg = Release|Win32 + {0F8407F3-FA23-4CF1-83A9-DCBE0B361489}.Release.Build.0 = Release|Win32 + {0622E827-8464-489D-8B1C-B0B496F35C08}.Debug.ActiveCfg = Debug|Win32 + {0622E827-8464-489D-8B1C-B0B496F35C08}.Debug.Build.0 = Debug|Win32 + {0622E827-8464-489D-8B1C-B0B496F35C08}.Release.ActiveCfg = Release|Win32 + {0622E827-8464-489D-8B1C-B0B496F35C08}.Release.Build.0 = Release|Win32 + {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Debug.ActiveCfg = Debug|Win32 + {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Debug.Build.0 = Debug|Win32 + {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Release.ActiveCfg = Release|Win32 + {144EEBF6-8C9B-4473-B715-2C821666AF6C}.Release.Build.0 = Release|Win32 + {C59374C1-9FC0-4147-B836-327DFDC52D99}.Debug.ActiveCfg = Debug|Win32 + {C59374C1-9FC0-4147-B836-327DFDC52D99}.Debug.Build.0 = Debug|Win32 + {C59374C1-9FC0-4147-B836-327DFDC52D99}.Release.ActiveCfg = Release|Win32 + {C59374C1-9FC0-4147-B836-327DFDC52D99}.Release.Build.0 = Release|Win32 + {19514E48-456C-4B9D-8637-F2285476461E}.Debug.ActiveCfg = Configure|Win32 + {19514E48-456C-4B9D-8637-F2285476461E}.Debug.Build.0 = Configure|Win32 + {19514E48-456C-4B9D-8637-F2285476461E}.Release.ActiveCfg = Configure|Win32 + {19514E48-456C-4B9D-8637-F2285476461E}.Release.Build.0 = Configure|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal From lattner at cs.uiuc.edu Sat Nov 6 11:07:56 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:56 -0600 Subject: [llvm-commits] CVS: llvm/win32/Fibonacci/Fibonacci.vcproj Message-ID: <200411061707.iA6H7uxV017559@apoc.cs.uiuc.edu> Changes in directory llvm/win32/Fibonacci: Fibonacci.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+142 -142) Index: llvm/win32/Fibonacci/Fibonacci.vcproj diff -u llvm/win32/Fibonacci/Fibonacci.vcproj:1.1 llvm/win32/Fibonacci/Fibonacci.vcproj:1.2 --- llvm/win32/Fibonacci/Fibonacci.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/Fibonacci/Fibonacci.vcproj Sat Nov 6 11:07:36 2004 @@ -1,142 +1,142 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:55 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:55 -0600 Subject: [llvm-commits] CVS: llvm/win32/System/System.vcproj Message-ID: <200411061707.iA6H7tiw017542@apoc.cs.uiuc.edu> Changes in directory llvm/win32/System: System.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+285 -285) Index: llvm/win32/System/System.vcproj diff -u llvm/win32/System/System.vcproj:1.1 llvm/win32/System/System.vcproj:1.2 --- llvm/win32/System/System.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/System/System.vcproj Sat Nov 6 11:07:36 2004 @@ -1,285 +1,285 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:55 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:55 -0600 Subject: [llvm-commits] CVS: llvm/win32/Support/Support.vcproj Message-ID: <200411061707.iA6H7td0017541@apoc.cs.uiuc.edu> Changes in directory llvm/win32/Support: Support.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+190 -190) Index: llvm/win32/Support/Support.vcproj diff -u llvm/win32/Support/Support.vcproj:1.1 llvm/win32/Support/Support.vcproj:1.2 --- llvm/win32/Support/Support.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/Support/Support.vcproj Sat Nov 6 11:07:36 2004 @@ -1,190 +1,190 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:56 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:56 -0600 Subject: [llvm-commits] CVS: llvm/win32/x86/x86.vcproj Message-ID: <200411061707.iA6H7uWe017556@apoc.cs.uiuc.edu> Changes in directory llvm/win32/x86: x86.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+180 -180) Index: llvm/win32/x86/x86.vcproj diff -u llvm/win32/x86/x86.vcproj:1.1 llvm/win32/x86/x86.vcproj:1.2 --- llvm/win32/x86/x86.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/x86/x86.vcproj Sat Nov 6 11:07:36 2004 @@ -1,180 +1,180 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:55 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:55 -0600 Subject: [llvm-commits] CVS: llvm/win32/TableGen/TableGen.vcproj Message-ID: <200411061707.iA6H7tY7017546@apoc.cs.uiuc.edu> Changes in directory llvm/win32/TableGen: TableGen.vcproj updated: 1.2 -> 1.3 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+270 -270) Index: llvm/win32/TableGen/TableGen.vcproj diff -u llvm/win32/TableGen/TableGen.vcproj:1.2 llvm/win32/TableGen/TableGen.vcproj:1.3 --- llvm/win32/TableGen/TableGen.vcproj:1.2 Thu Nov 4 22:15:30 2004 +++ llvm/win32/TableGen/TableGen.vcproj Sat Nov 6 11:07:36 2004 @@ -1,270 +1,270 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:56 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:56 -0600 Subject: [llvm-commits] CVS: llvm/win32/Target/Target.vcproj Message-ID: <200411061707.iA6H7tUJ017550@apoc.cs.uiuc.edu> Changes in directory llvm/win32/Target: Target.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+138 -138) Index: llvm/win32/Target/Target.vcproj diff -u llvm/win32/Target/Target.vcproj:1.1 llvm/win32/Target/Target.vcproj:1.2 --- llvm/win32/Target/Target.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/Target/Target.vcproj Sat Nov 6 11:07:36 2004 @@ -1,138 +1,138 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:55 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:55 -0600 Subject: [llvm-commits] CVS: llvm/win32/ExecutionEngine/ExecutionEngine.vcproj Message-ID: <200411061707.iA6H7tVl017548@apoc.cs.uiuc.edu> Changes in directory llvm/win32/ExecutionEngine: ExecutionEngine.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+167 -167) Index: llvm/win32/ExecutionEngine/ExecutionEngine.vcproj diff -u llvm/win32/ExecutionEngine/ExecutionEngine.vcproj:1.1 llvm/win32/ExecutionEngine/ExecutionEngine.vcproj:1.2 --- llvm/win32/ExecutionEngine/ExecutionEngine.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/ExecutionEngine/ExecutionEngine.vcproj Sat Nov 6 11:07:36 2004 @@ -1,167 +1,167 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:56 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:56 -0600 Subject: [llvm-commits] CVS: llvm/win32/CodeGen/CodeGen.vcproj Message-ID: <200411061707.iA6H7uC4017555@apoc.cs.uiuc.edu> Changes in directory llvm/win32/CodeGen: CodeGen.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+189 -189) Index: llvm/win32/CodeGen/CodeGen.vcproj diff -u llvm/win32/CodeGen/CodeGen.vcproj:1.1 llvm/win32/CodeGen/CodeGen.vcproj:1.2 --- llvm/win32/CodeGen/CodeGen.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/CodeGen/CodeGen.vcproj Sat Nov 6 11:07:36 2004 @@ -1,189 +1,189 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:56 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:56 -0600 Subject: [llvm-commits] CVS: llvm/win32/Analysis/Analysis.vcproj Message-ID: <200411061707.iA6H7u7c017562@apoc.cs.uiuc.edu> Changes in directory llvm/win32/Analysis: Analysis.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+174 -174) Index: llvm/win32/Analysis/Analysis.vcproj diff -u llvm/win32/Analysis/Analysis.vcproj:1.1 llvm/win32/Analysis/Analysis.vcproj:1.2 --- llvm/win32/Analysis/Analysis.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/Analysis/Analysis.vcproj Sat Nov 6 11:07:36 2004 @@ -1,174 +1,174 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:57 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:57 -0600 Subject: [llvm-commits] CVS: llvm/win32/Transforms/Transforms.vcproj Message-ID: <200411061707.iA6H7vB6017575@apoc.cs.uiuc.edu> Changes in directory llvm/win32/Transforms: Transforms.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+397 -397) Index: llvm/win32/Transforms/Transforms.vcproj diff -u llvm/win32/Transforms/Transforms.vcproj:1.1 llvm/win32/Transforms/Transforms.vcproj:1.2 --- llvm/win32/Transforms/Transforms.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/Transforms/Transforms.vcproj Sat Nov 6 11:07:36 2004 @@ -1,397 +1,397 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:57 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:57 -0600 Subject: [llvm-commits] CVS: llvm/win32/VMCore/VMCore.vcproj Message-ID: <200411061707.iA6H7vCj017564@apoc.cs.uiuc.edu> Changes in directory llvm/win32/VMCore: VMCore.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+189 -189) Index: llvm/win32/VMCore/VMCore.vcproj diff -u llvm/win32/VMCore/VMCore.vcproj:1.1 llvm/win32/VMCore/VMCore.vcproj:1.2 --- llvm/win32/VMCore/VMCore.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/VMCore/VMCore.vcproj Sat Nov 6 11:07:36 2004 @@ -1,189 +1,189 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From lattner at cs.uiuc.edu Sat Nov 6 11:07:57 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 11:07:57 -0600 Subject: [llvm-commits] CVS: llvm/win32/Configure/Configure.vcproj Message-ID: <200411061707.iA6H7vx1017592@apoc.cs.uiuc.edu> Changes in directory llvm/win32/Configure: Configure.vcproj updated: 1.1 -> 1.2 --- Log message: >From Jeff Cohen: I checked out from cvs directly on Windows and I ran into another problem with the project files. Evidently, the files were initially checked in on Unix, and the files were transfered to Unix without converting the CR/LF line endings first. When checked out on Windows, cvs converts the files to DOS format, resulting in two CRs for each LF. --- Diffs of the changes: (+133 -133) Index: llvm/win32/Configure/Configure.vcproj diff -u llvm/win32/Configure/Configure.vcproj:1.1 llvm/win32/Configure/Configure.vcproj:1.2 --- llvm/win32/Configure/Configure.vcproj:1.1 Wed Nov 3 10:13:14 2004 +++ llvm/win32/Configure/Configure.vcproj Sat Nov 6 11:07:36 2004 @@ -1,133 +1,133 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From alkis at cs.uiuc.edu Sat Nov 6 11:52:55 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Sat, 6 Nov 2004 11:52:55 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp Message-ID: <200411061752.LAA23978@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: Compiler.cpp updated: 1.138 -> 1.139 --- Log message: When doing a checkcast, cast the checked reference to the specifed type. --- Diffs of the changes: (+22 -5) Index: llvm-java/lib/Compiler/Compiler.cpp diff -u llvm-java/lib/Compiler/Compiler.cpp:1.138 llvm-java/lib/Compiler/Compiler.cpp:1.139 --- llvm-java/lib/Compiler/Compiler.cpp:1.138 Thu Nov 4 03:09:50 2004 +++ llvm-java/lib/Compiler/Compiler.cpp Sat Nov 6 11:52:44 2004 @@ -2133,13 +2133,30 @@ } void do_checkcast(unsigned index) { - do_dup(); - do_instanceof(index); - Value* r = currentOpStack_->pop(currentBB_); + ConstantClass* classRef = cf_->getConstantClass(index); + + const ClassInfo* ci = NULL; + const VTableInfo* vi = NULL; + tie(ci, vi) = getInfo(classRef->getName()->str()); + + Value* objRef = currentOpStack_->pop(currentBB_); + Value* objBase = + new CastInst(objRef, ClassInfo::ObjectBaseTy, TMP, currentBB_); + Function* f = module_.getOrInsertFunction( + LLVM_JAVA_ISINSTANCEOF, Type::IntTy, + objBase->getType(), PointerType::get(VTableInfo::VTableTy), NULL); + Value* vtable = new CastInst(vi->vtable, + PointerType::get(VTableInfo::VTableTy), + TMP, currentBB_); + Value* r = new CallInst(f, objBase, vtable, TMP, currentBB_); + Value* b = new SetCondInst(Instruction::SetEQ, - r, ConstantSInt::get(Type::IntTy, 1), - TMP, currentBB_); + r, ConstantSInt::get(Type::IntTy, 1), + TMP, currentBB_); // FIXME: if b is false we must throw a ClassCast exception + Value* objCast = + new CastInst(objRef, PointerType::get(ci->type), TMP, currentBB_); + currentOpStack_->push(objCast, currentBB_); } void do_instanceof(unsigned index) { From alkis at cs.uiuc.edu Sat Nov 6 11:54:29 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Sat, 6 Nov 2004 11:54:29 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp Message-ID: <200411061754.LAA24009@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: Compiler.cpp updated: 1.139 -> 1.140 --- Log message: Lookup static fields in super classes as well. --- Diffs of the changes: (+21 -13) Index: llvm-java/lib/Compiler/Compiler.cpp diff -u llvm-java/lib/Compiler/Compiler.cpp:1.139 llvm-java/lib/Compiler/Compiler.cpp:1.140 --- llvm-java/lib/Compiler/Compiler.cpp:1.139 Sat Nov 6 11:52:44 2004 +++ llvm-java/lib/Compiler/Compiler.cpp Sat Nov 6 11:54:19 2004 @@ -1017,20 +1017,28 @@ ConstantFieldRef* fieldRef = cf_->getConstantFieldRef(index); ConstantNameAndType* nameAndType = fieldRef->getNameAndType(); - // Get ClassInfo for class owning the field - this will force - // the globals to be initialized. - getClassInfo(ClassFile::get(fieldRef->getClass()->getName()->str())); - - std::string globalName = - fieldRef->getClass()->getName()->str() + '/' + - nameAndType->getName()->str(); - - DEBUG(std::cerr << "Looking up global: " << globalName << '\n'); - GlobalVariable* global = module_.getGlobalVariable - (globalName, getType(nameAndType->getDescriptor())); - assert(global && "Got NULL global variable!"); + std::string className = fieldRef->getClass()->getName()->str(); - return global; + while (true) { + // Get ClassInfo for class owning the field - this will force + // the globals to be initialized. + ClassFile* cf = ClassFile::get(className); + getClassInfo(cf); + + std::string globalName = + className + '/' + nameAndType->getName()->str(); + + DEBUG(std::cerr << "Looking up global: " << globalName << '\n'); + GlobalVariable* global = module_.getGlobalVariable + (globalName, getType(nameAndType->getDescriptor())); + if (global) + return global; + + assert(cf->getSuperClass() && "Cannot find global for static field!"); + className = cf->getSuperClass()->getName()->str(); + } + + return NULL; // never reached } /// Emits the necessary code to get a field from the passed From alkis at cs.uiuc.edu Sat Nov 6 11:58:27 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Sat, 6 Nov 2004 11:58:27 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp Message-ID: <200411061758.LAA24141@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: Compiler.cpp updated: 1.140 -> 1.141 --- Log message: Remove tabs and cleanup whitespace. --- Diffs of the changes: (+459 -459) Index: llvm-java/lib/Compiler/Compiler.cpp diff -u llvm-java/lib/Compiler/Compiler.cpp:1.140 llvm-java/lib/Compiler/Compiler.cpp:1.141 --- llvm-java/lib/Compiler/Compiler.cpp:1.140 Sat Nov 6 11:54:19 2004 +++ llvm-java/lib/Compiler/Compiler.cpp Sat Nov 6 11:58:17 2004 @@ -129,20 +129,20 @@ /// Given a llvm::Java::Constant returns a llvm::Constant. llvm::Constant* getConstant(Constant* c) { if (dynamic_cast(c)) - // FIXME: should return a String object represeting this ConstantString - return ConstantPointerNull::get( - PointerType::get( - getClassInfo(ClassFile::get("java/lang/String")).type)); + // FIXME: should return a String object represeting this ConstantString + return ConstantPointerNull::get( + PointerType::get( + getClassInfo(ClassFile::get("java/lang/String")).type)); else if (ConstantInteger* i = dynamic_cast(c)) - return ConstantSInt::get(Type::IntTy, i->getValue()); + return ConstantSInt::get(Type::IntTy, i->getValue()); else if (ConstantFloat* f = dynamic_cast(c)) - return ConstantFP::get(Type::FloatTy, f->getValue()); + return ConstantFP::get(Type::FloatTy, f->getValue()); else if (ConstantLong* l = dynamic_cast(c)) - return ConstantSInt::get(Type::LongTy, l->getValue()); + return ConstantSInt::get(Type::LongTy, l->getValue()); else if (ConstantDouble* d = dynamic_cast(c)) - return ConstantFP::get(Type::DoubleTy, d->getValue()); + return ConstantFP::get(Type::DoubleTy, d->getValue()); else - assert(0 && "Unknown llvm::Java::Constant!"); + assert(0 && "Unknown llvm::Java::Constant!"); } /// Given a JType returns the appropriate llvm::Type. @@ -183,10 +183,10 @@ case 'Z': return Type::BoolTy; case 'V': return Type::VoidTy; case 'L': { - unsigned e = descr.find(';', i); - std::string className = descr.substr(i, e - i); - i = e + 1; - return PointerType::get(getClassInfo(ClassFile::get(className)).type); + unsigned e = descr.find(';', i); + std::string className = descr.substr(i, e - i); + i = e + 1; + return PointerType::get(getClassInfo(ClassFile::get(className)).type); } case '[': if (descr[i] == '[') { @@ -204,14 +204,14 @@ } break; case '(': { - std::vector params; - if (self) - params.push_back(PointerType::get(self)); - while (descr[i] != ')') - params.push_back(getTypeHelper(descr, i, NULL)); - return FunctionType::get(getTypeHelper(descr, ++i, NULL),params, false); + std::vector params; + if (self) + params.push_back(PointerType::get(self)); + while (descr[i] != ')') + params.push_back(getTypeHelper(descr, i, NULL)); + return FunctionType::get(getTypeHelper(descr, ++i, NULL),params, false); } - // FIXME: Throw something + // FIXME: Throw something default: return NULL; } } @@ -224,7 +224,7 @@ ClassInfo& ci = c2ciMap_[cf]; assert(!ci.type && ci.f2iMap.empty() && - "java/lang/Object ClassInfo should not be initialized!"); + "java/lang/Object ClassInfo should not be initialized!"); ci.type = OpaqueType::get(); std::vector elements; @@ -238,18 +238,18 @@ const Fields& fields = cf->getFields(); for (unsigned i = 0, e = fields.size(); i != e; ++i) { - Field* field = fields[i]; - if (!field->isStatic()) { - ci.f2iMap.insert( - std::make_pair(field->getName()->str(), elements.size())); - elements.push_back(getType(field->getDescriptor())); - } + Field* field = fields[i]; + if (!field->isStatic()) { + ci.f2iMap.insert( + std::make_pair(field->getName()->str(), elements.size())); + elements.push_back(getType(field->getDescriptor())); + } } PATypeHolder holder = ci.type; cast(ci.type)->refineAbstractTypeTo(StructType::get(elements)); ci.type = holder.get(); DEBUG(std::cerr << "Adding java/lang/Object = " - << *ci.type << " to type map\n"); + << *ci.type << " to type map\n"); module_.addTypeName("java/lang/Object", ci.type); assert(ci.type && "ClassInfo not initialized properly!"); @@ -265,7 +265,7 @@ VTableInfo& vi = c2viMap_[cf]; assert(!vi.vtable && vi.m2iMap.empty() && - "java/lang/Object VTableInfo should not be initialized!"); + "java/lang/Object VTableInfo should not be initialized!"); Type* VTtype = OpaqueType::get(); @@ -292,7 +292,7 @@ VTableInfo::TypeInfoTy = StructType::get(elements); module_.addTypeName(LLVM_JAVA_OBJECT_TYPEINFO, VTableInfo::TypeInfoTy); llvm::Constant* typeInfoInit = - ConstantStruct::get(VTableInfo::TypeInfoTy, init); + ConstantStruct::get(VTableInfo::TypeInfoTy, init); // Now that we have both the type and initializer for the // llvm_java_object_typeinfo struct we can start adding the @@ -311,30 +311,30 @@ // Add member functions to the vtable. for (unsigned i = 0, e = methods.size(); i != e; ++i) { - Method* method = methods[i]; - // The contructor is the only non-static method that is not - // dynamically dispatched so we skip it. - if (!method->isStatic() && method->getName()->str() != "") { - std::string methodDescr = - method->getName()->str() + - method->getDescriptor()->str(); - - std::string funcName = "java/lang/Object/" + methodDescr; - const FunctionType* funcTy = cast( - getType(method->getDescriptor(), ci.type)); - - Function* vfun = module_.getOrInsertFunction(funcName, funcTy); - toCompileFunctions_.insert(vfun); - - unsigned& index = vi.m2iMap[methodDescr]; - if (!index) { - index = elements.size(); - elements.resize(index + 1, NULL); - init.resize(index + 1, NULL); - } - elements[index] = vfun->getType(); - init[index] = vfun; - } + Method* method = methods[i]; + // The contructor is the only non-static method that is not + // dynamically dispatched so we skip it. + if (!method->isStatic() && method->getName()->str() != "") { + std::string methodDescr = + method->getName()->str() + + method->getDescriptor()->str(); + + std::string funcName = "java/lang/Object/" + methodDescr; + const FunctionType* funcTy = cast( + getType(method->getDescriptor(), ci.type)); + + Function* vfun = module_.getOrInsertFunction(funcName, funcTy); + toCompileFunctions_.insert(vfun); + + unsigned& index = vi.m2iMap[methodDescr]; + if (!index) { + index = elements.size(); + elements.resize(index + 1, NULL); + init.resize(index + 1, NULL); + } + elements[index] = vfun->getType(); + init[index] = vfun; + } } PATypeHolder holder = VTtype; @@ -344,10 +344,10 @@ module_.addTypeName("java/lang/Object", VTableInfo::VTableTy); vi.vtable = new GlobalVariable(VTableInfo::VTableTy, - true, GlobalVariable::ExternalLinkage, - ConstantStruct::get(init), - "java/lang/Object", - &module_); + true, GlobalVariable::ExternalLinkage, + ConstantStruct::get(init), + "java/lang/Object", + &module_); DEBUG(std::cerr << "Built VTableInfo for: java/lang/Object\n"); } @@ -355,18 +355,18 @@ const ClassInfo& getClassInfo(ClassFile* cf) { Class2ClassInfoMap::iterator it = c2ciMap_.lower_bound(cf); if (it != c2ciMap_.end() && it->first == cf) - return it->second; + return it->second; const std::string& className = cf->getThisClass()->getName()->str(); DEBUG(std::cerr << "Building ClassInfo for: " << className << '\n'); ClassInfo& ci = c2ciMap_[cf]; assert(!ci.type && ci.f2iMap.empty() && - "got already initialized ClassInfo!"); + "got already initialized ClassInfo!"); // Get the interface id. if (cf->isInterface()) - ci.interfaceIdx = ClassInfo::InterfaceCount++; + ci.interfaceIdx = ClassInfo::InterfaceCount++; ci.type = OpaqueType::get(); @@ -374,17 +374,17 @@ ConstantClass* super = cf->getSuperClass(); assert(super && "Class does not have superclass!"); const ClassInfo& superCI = - getClassInfo(ClassFile::get(super->getName()->str())); + getClassInfo(ClassFile::get(super->getName()->str())); elements.push_back(superCI.type); const Fields& fields = cf->getFields(); for (unsigned i = 0, e = fields.size(); i != e; ++i) { - Field* field = fields[i]; - if (!field->isStatic()) { - ci.f2iMap.insert( - std::make_pair(field->getName()->str(), elements.size())); - elements.push_back(getType(field->getDescriptor())); - } + Field* field = fields[i]; + if (!field->isStatic()) { + ci.f2iMap.insert( + std::make_pair(field->getName()->str(), elements.size())); + elements.push_back(getType(field->getDescriptor())); + } } PATypeHolder holder = ci.type; cast(ci.type)->refineAbstractTypeTo(StructType::get(elements)); @@ -392,7 +392,7 @@ assert(ci.type && "ClassInfo not initialized properly!"); DEBUG(std::cerr << "Adding " << className << " = " - << *ci.type << " to type map\n"); + << *ci.type << " to type map\n"); module_.addTypeName(className, ci.type); emitStaticInitializers(cf); DEBUG(std::cerr << "Built ClassInfo for: " << className << '\n'); @@ -434,36 +434,36 @@ const ClassInfo& getPrimitiveArrayInfo(JType type) { switch (type) { case BOOLEAN: { - static ClassInfo arrayInfo = buildArrayClassInfo(Type::BoolTy); - return arrayInfo; + static ClassInfo arrayInfo = buildArrayClassInfo(Type::BoolTy); + return arrayInfo; } case CHAR: { - static ClassInfo arrayInfo = buildArrayClassInfo(Type::UShortTy); - return arrayInfo; + static ClassInfo arrayInfo = buildArrayClassInfo(Type::UShortTy); + return arrayInfo; } case FLOAT: { - static ClassInfo arrayInfo = buildArrayClassInfo(Type::FloatTy); - return arrayInfo; + static ClassInfo arrayInfo = buildArrayClassInfo(Type::FloatTy); + return arrayInfo; } case DOUBLE: { - static ClassInfo arrayInfo = buildArrayClassInfo(Type::DoubleTy); - return arrayInfo; + static ClassInfo arrayInfo = buildArrayClassInfo(Type::DoubleTy); + return arrayInfo; } case BYTE: { - static ClassInfo arrayInfo = buildArrayClassInfo(Type::SByteTy); - return arrayInfo; + static ClassInfo arrayInfo = buildArrayClassInfo(Type::SByteTy); + return arrayInfo; } case SHORT: { - static ClassInfo arrayInfo = buildArrayClassInfo(Type::ShortTy); - return arrayInfo; + static ClassInfo arrayInfo = buildArrayClassInfo(Type::ShortTy); + return arrayInfo; } case INT: { - static ClassInfo arrayInfo = buildArrayClassInfo(Type::IntTy); - return arrayInfo; + static ClassInfo arrayInfo = buildArrayClassInfo(Type::IntTy); + return arrayInfo; } case LONG: { - static ClassInfo arrayInfo = buildArrayClassInfo(Type::LongTy); - return arrayInfo; + static ClassInfo arrayInfo = buildArrayClassInfo(Type::LongTy); + return arrayInfo; } } } @@ -472,7 +472,7 @@ /// specified element type. const ClassInfo& getObjectArrayInfo() { static ClassInfo arrayInfo = buildArrayClassInfo( - PointerType::get( + PointerType::get( getClassInfo(ClassFile::get("java/lang/Object")).type)); return arrayInfo; } @@ -483,22 +483,22 @@ std::pair buildSuperClassesVTables(ClassFile* cf, const VTableInfo& vi) const { ArrayType* vtablesArrayTy = - ArrayType::get(PointerType::get(VTableInfo::VTableTy), - vi.superVtables.size()); + ArrayType::get(PointerType::get(VTableInfo::VTableTy), + vi.superVtables.size()); GlobalVariable* vtablesArray = new GlobalVariable( - vtablesArrayTy, - true, - GlobalVariable::ExternalLinkage, - ConstantArray::get(vtablesArrayTy, vi.superVtables), - cf->getThisClass()->getName()->str() + "", - &module_); + vtablesArrayTy, + true, + GlobalVariable::ExternalLinkage, + ConstantArray::get(vtablesArrayTy, vi.superVtables), + cf->getThisClass()->getName()->str() + "", + &module_); return std::make_pair( - vi.superVtables.size(), - ConstantExpr::getGetElementPtr( - vtablesArray, - std::vector(2, ConstantUInt::get(Type::UIntTy, 0)))); + vi.superVtables.size(), + ConstantExpr::getGetElementPtr( + vtablesArray, + std::vector(2, ConstantUInt::get(Type::UIntTy, 0)))); } /// Builds an interface VTable for the specified @@ -519,32 +519,32 @@ // method in the class' VTable and add it to the appropriate // slot. for (VTableInfo::Method2IndexMap::const_iterator - i = interfaceVI.m2iMap.begin(), e = interfaceVI.m2iMap.end(); - i != e; ++i) { - std::vector indices; - indices.reserve(2); - indices.push_back(ConstantUInt::get(Type::UIntTy, 0)); - assert(classVI.m2iMap.find(i->first) != classVI.m2iMap.end() && - "Interface method not found in class definition!"); - unsigned classMethodIdx = classVI.m2iMap.find(i->first)->second; - indices.push_back(ConstantUInt::get(Type::UIntTy, classMethodIdx)); - init[i->second] = - ConstantExpr::getGetElementPtr(classVI.vtable, indices); + i = interfaceVI.m2iMap.begin(), e = interfaceVI.m2iMap.end(); + i != e; ++i) { + std::vector indices; + indices.reserve(2); + indices.push_back(ConstantUInt::get(Type::UIntTy, 0)); + assert(classVI.m2iMap.find(i->first) != classVI.m2iMap.end() && + "Interface method not found in class definition!"); + unsigned classMethodIdx = classVI.m2iMap.find(i->first)->second; + indices.push_back(ConstantUInt::get(Type::UIntTy, classMethodIdx)); + init[i->second] = + ConstantExpr::getGetElementPtr(classVI.vtable, indices); } llvm::Constant* vtable = ConstantStruct::get(init); const std::string& globalName = - cf->getThisClass()->getName()->str() + '+' + - interface->getThisClass()->getName()->str() + ""; + cf->getThisClass()->getName()->str() + '+' + + interface->getThisClass()->getName()->str() + ""; module_.addTypeName(globalName, vtable->getType()); return new GlobalVariable( - vtable->getType(), - true, - GlobalVariable::ExternalLinkage, - vtable, - globalName, - &module_); + vtable->getType(), + true, + GlobalVariable::ExternalLinkage, + vtable, + globalName, + &module_); } /// Builds the interfaces vtable array for this classfile and its @@ -557,11 +557,11 @@ // pointer to the array of interface vtables is an all-ones // value. if (cf->isInterface()) - return std::make_pair( - getClassInfo(cf).interfaceIdx, - ConstantExpr::getCast( - ConstantIntegral::getAllOnesValue(Type::LongTy), - PointerType::get(PointerType::get(VTableInfo::VTableTy)))); + return std::make_pair( + getClassInfo(cf).interfaceIdx, + ConstantExpr::getCast( + ConstantIntegral::getAllOnesValue(Type::LongTy), + PointerType::get(PointerType::get(VTableInfo::VTableTy)))); // Otherwise we must fill in the interfaces vtables array. For // each implemented vtable we insert a pointer to the @@ -571,38 +571,38 @@ std::vector vtables; const Classes& interfaces = cf->getInterfaces(); llvm::Constant* nullVTable = - llvm::Constant::getNullValue(PointerType::get(VTableInfo::VTableTy)); + llvm::Constant::getNullValue(PointerType::get(VTableInfo::VTableTy)); for (unsigned i = 0, e = interfaces.size(); i != e; ++i) { - ClassFile* interface = ClassFile::get(interfaces[i]->getName()->str()); - assert(interface->isInterface() && - "Class in interfaces list is not an interface!"); - const ClassInfo& interfaceCI = getClassInfo(interface); - if (interfaceCI.interfaceIdx >= vtables.size()) - vtables.resize(interfaceCI.interfaceIdx+1, nullVTable); - vtables[interfaceCI.interfaceIdx] = buildInterfaceVTable(cf, interface); + ClassFile* interface = ClassFile::get(interfaces[i]->getName()->str()); + assert(interface->isInterface() && + "Class in interfaces list is not an interface!"); + const ClassInfo& interfaceCI = getClassInfo(interface); + if (interfaceCI.interfaceIdx >= vtables.size()) + vtables.resize(interfaceCI.interfaceIdx+1, nullVTable); + vtables[interfaceCI.interfaceIdx] = buildInterfaceVTable(cf, interface); } ArrayType* interfacesArrayTy = - ArrayType::get(PointerType::get(VTableInfo::VTableTy), vtables.size()); + ArrayType::get(PointerType::get(VTableInfo::VTableTy), vtables.size()); const std::string& globalName = - cf->getThisClass()->getName()->str() + ""; + cf->getThisClass()->getName()->str() + ""; module_.addTypeName(globalName, interfacesArrayTy); GlobalVariable* interfacesArray = new GlobalVariable( - interfacesArrayTy, - true, - GlobalVariable::ExternalLinkage, - ConstantArray::get(interfacesArrayTy, vtables), - globalName, - &module_); + interfacesArrayTy, + true, + GlobalVariable::ExternalLinkage, + ConstantArray::get(interfacesArrayTy, vtables), + globalName, + &module_); return std::make_pair( - int(vtables.size())-1, - ConstantExpr::getGetElementPtr( - interfacesArray, - std::vector(2, ConstantUInt::get(Type::UIntTy, 0)))); + int(vtables.size())-1, + ConstantExpr::getGetElementPtr( + interfacesArray, + std::vector(2, ConstantUInt::get(Type::UIntTy, 0)))); } /// Given the classfile and its corresponding VTableInfo, @@ -636,69 +636,69 @@ const VTableInfo& getVTableInfo(ClassFile* cf) { Class2VTableInfoMap::iterator it = c2viMap_.lower_bound(cf); if (it != c2viMap_.end() && it->first == cf) - return it->second; + return it->second; const std::string& className = cf->getThisClass()->getName()->str(); DEBUG(std::cerr << "Building VTableInfo for: " << className << '\n'); VTableInfo& vi = c2viMap_[cf]; assert(!vi.vtable && vi.m2iMap.empty() && - "got already initialized VTableInfo!"); + "got already initialized VTableInfo!"); ConstantClass* super = cf->getSuperClass(); assert(super && "Class does not have superclass!"); const VTableInfo& superVI = - getVTableInfo(ClassFile::get(super->getName()->str())); + getVTableInfo(ClassFile::get(super->getName()->str())); // Copy the super vtables array. vi.superVtables.reserve(superVI.superVtables.size() + 1); vi.superVtables.push_back(superVI.vtable); std::copy(superVI.superVtables.begin(), superVI.superVtables.end(), - std::back_inserter(vi.superVtables)); + std::back_inserter(vi.superVtables)); // Copy all the constants from the super class' vtable. assert(superVI.vtable && "No vtable found for super class!"); ConstantStruct* superInit = - cast(superVI.vtable->getInitializer()); + cast(superVI.vtable->getInitializer()); std::vector init(superInit->getNumOperands()); // Use a null typeinfo struct for now. init[0] = llvm::Constant::getNullValue(VTableInfo::TypeInfoTy); // Fill in the function pointers as they are in the super // class. Overriden methods will be replaced later. for (unsigned i = 1, e = superInit->getNumOperands(); i != e; ++i) - init[i] = superInit->getOperand(i); + init[i] = superInit->getOperand(i); vi.m2iMap = superVI.m2iMap; // Add member functions to the vtable. const Methods& methods = cf->getMethods(); for (unsigned i = 0, e = methods.size(); i != e; ++i) { - Method* method = methods[i]; - // The contructor is the only non-static method that is not - // dynamically dispatched so we skip it. - if (!method->isStatic() && method->getName()->str() != "") { - const std::string& methodDescr = - method->getName()->str() + method->getDescriptor()->str(); - - std::string funcName = className + '/' + methodDescr; - - const FunctionType* funcTy = cast( - getType(method->getDescriptor(), getClassInfo(cf).type)); - Function* vfun = module_.getOrInsertFunction(funcName, funcTy); - toCompileFunctions_.insert(vfun); - - unsigned& index = vi.m2iMap[methodDescr]; - if (!index) { - index = init.size(); - init.resize(index + 1); - } - init[index] = vfun; - } + Method* method = methods[i]; + // The contructor is the only non-static method that is not + // dynamically dispatched so we skip it. + if (!method->isStatic() && method->getName()->str() != "") { + const std::string& methodDescr = + method->getName()->str() + method->getDescriptor()->str(); + + std::string funcName = className + '/' + methodDescr; + + const FunctionType* funcTy = cast( + getType(method->getDescriptor(), getClassInfo(cf).type)); + Function* vfun = module_.getOrInsertFunction(funcName, funcTy); + toCompileFunctions_.insert(vfun); + + unsigned& index = vi.m2iMap[methodDescr]; + if (!index) { + index = init.size(); + init.resize(index + 1); + } + init[index] = vfun; + } } #ifndef NDEBUG for (unsigned i = 0, e = init.size(); i != e; ++i) - assert(init[i] && "No elements in the initializer should be NULL!"); + assert(init[i] && "No elements in the initializer should be NULL!"); #endif const std::string& globalName = className + ""; @@ -706,11 +706,11 @@ llvm::Constant* vtable = ConstantStruct::get(init); module_.addTypeName(globalName, vtable->getType()); vi.vtable = new GlobalVariable(vtable->getType(), - true, - GlobalVariable::ExternalLinkage, - vtable, - globalName, - &module_); + true, + GlobalVariable::ExternalLinkage, + vtable, + globalName, + &module_); // Now the vtable is complete, install the new typeinfo block // for this class: we install it last because we need the vtable @@ -724,11 +724,11 @@ VTableInfo buildArrayVTableInfo(Type* elementTy) { assert(elementTy->isPrimitiveType() && - "This should not be called for arrays of non-primitive types"); + "This should not be called for arrays of non-primitive types"); VTableInfo vi; const VTableInfo& superVI = - getVTableInfo(ClassFile::get("java/lang/Object")); + getVTableInfo(ClassFile::get("java/lang/Object")); // Add java/lang/Object as its superclass. vi.superVtables.reserve(1); @@ -736,7 +736,7 @@ // Copy the constants from java/lang/Object vtable. ConstantStruct* superInit = - cast(superVI.vtable->getInitializer()); + cast(superVI.vtable->getInitializer()); std::vector init(superInit->getNumOperands()); // Use a null typeinfo struct for now. init[0] = llvm::Constant::getNullValue(VTableInfo::TypeInfoTy); @@ -744,50 +744,50 @@ // Fill in the function pointers as they are in // java/lang/Object. There are no overriden methods. for (unsigned i = 1, e = superInit->getNumOperands(); i != e; ++i) - init[i] = superInit->getOperand(i); + init[i] = superInit->getOperand(i); vi.m2iMap = superVI.m2iMap; #ifndef NDEBUG for (unsigned i = 0, e = init.size(); i != e; ++i) - assert(init[i] && "No elements in the initializer should be NULL!"); + assert(init[i] && "No elements in the initializer should be NULL!"); #endif const std::string& globalName = - elementTy->getDescription() + ""; + elementTy->getDescription() + ""; llvm::Constant* vtable = ConstantStruct::get(init); module_.addTypeName(globalName, vtable->getType()); vi.vtable = new GlobalVariable(vtable->getType(), - true, - GlobalVariable::ExternalLinkage, - vtable, - globalName, - &module_); + true, + GlobalVariable::ExternalLinkage, + vtable, + globalName, + &module_); // Construct the typeinfo now. std::vector typeInfoInit; typeInfoInit.push_back(ConstantSInt::get(Type::IntTy, 1)); // Build the super classes' vtable array. ArrayType* vtablesArrayTy = - ArrayType::get(PointerType::get(VTableInfo::VTableTy), - vi.superVtables.size()); + ArrayType::get(PointerType::get(VTableInfo::VTableTy), + vi.superVtables.size()); GlobalVariable* vtablesArray = new GlobalVariable( - vtablesArrayTy, - true, - GlobalVariable::ExternalLinkage, - ConstantArray::get(vtablesArrayTy, vi.superVtables), - elementTy->getDescription() + "", - &module_); + vtablesArrayTy, + true, + GlobalVariable::ExternalLinkage, + ConstantArray::get(vtablesArrayTy, vi.superVtables), + elementTy->getDescription() + "", + &module_); typeInfoInit.push_back( - ConstantExpr::getGetElementPtr( - vtablesArray, - std::vector(2, ConstantUInt::get(Type::UIntTy, 0)))); + ConstantExpr::getGetElementPtr( + vtablesArray, + std::vector(2, ConstantUInt::get(Type::UIntTy, 0)))); typeInfoInit.push_back(ConstantSInt::get(Type::IntTy, 0)); typeInfoInit.push_back( - llvm::Constant::getNullValue( - PointerType::get(PointerType::get(VTableInfo::VTableTy)))); + llvm::Constant::getNullValue( + PointerType::get(PointerType::get(VTableInfo::VTableTy)))); init[0] = ConstantStruct::get(VTableInfo::TypeInfoTy, typeInfoInit); vi.vtable->setInitializer(ConstantStruct::get(init)); @@ -812,36 +812,36 @@ const VTableInfo& getPrimitiveArrayVTableInfo(JType type) { switch (type) { case BOOLEAN: { - static VTableInfo arrayInfo = buildArrayVTableInfo(Type::BoolTy); - return arrayInfo; + static VTableInfo arrayInfo = buildArrayVTableInfo(Type::BoolTy); + return arrayInfo; } case CHAR: { - static VTableInfo arrayInfo = buildArrayVTableInfo(Type::UShortTy); - return arrayInfo; + static VTableInfo arrayInfo = buildArrayVTableInfo(Type::UShortTy); + return arrayInfo; } case FLOAT: { - static VTableInfo arrayInfo = buildArrayVTableInfo(Type::FloatTy); - return arrayInfo; + static VTableInfo arrayInfo = buildArrayVTableInfo(Type::FloatTy); + return arrayInfo; } case DOUBLE: { - static VTableInfo arrayInfo = buildArrayVTableInfo(Type::DoubleTy); - return arrayInfo; + static VTableInfo arrayInfo = buildArrayVTableInfo(Type::DoubleTy); + return arrayInfo; } case BYTE: { - static VTableInfo arrayInfo = buildArrayVTableInfo(Type::SByteTy); - return arrayInfo; + static VTableInfo arrayInfo = buildArrayVTableInfo(Type::SByteTy); + return arrayInfo; } case SHORT: { - static VTableInfo arrayInfo = buildArrayVTableInfo(Type::ShortTy); - return arrayInfo; + static VTableInfo arrayInfo = buildArrayVTableInfo(Type::ShortTy); + return arrayInfo; } case INT: { - static VTableInfo arrayInfo = buildArrayVTableInfo(Type::IntTy); - return arrayInfo; + static VTableInfo arrayInfo = buildArrayVTableInfo(Type::IntTy); + return arrayInfo; } case LONG: { - static VTableInfo arrayInfo = buildArrayVTableInfo(Type::LongTy); - return arrayInfo; + static VTableInfo arrayInfo = buildArrayVTableInfo(Type::LongTy); + return arrayInfo; } } } @@ -853,7 +853,7 @@ ClassFile* cf = ClassFile::get("java/lang/Object"); VTableInfo& vi = ac2viMap_[cf]; assert(!vi.vtable && vi.m2iMap.empty() && - "java/lang/Object[] VTableInfo should not be initialized!"); + "java/lang/Object[] VTableInfo should not be initialized!"); const VTableInfo& javaLangObjectVI = getVTableInfo(ClassFile::get("java/lang/Object")); @@ -869,15 +869,15 @@ init.push_back(llvm::ConstantSInt::get(Type::IntTy, 1)); // superclasses vtable pointers ArrayType* vtablesArrayTy = - ArrayType::get(PointerType::get(VTableInfo::VTableTy), 1); + ArrayType::get(PointerType::get(VTableInfo::VTableTy), 1); GlobalVariable* vtablesArray = new GlobalVariable( - vtablesArrayTy, - true, - GlobalVariable::ExternalLinkage, - ConstantArray::get(vtablesArrayTy, vi.superVtables), - "java/lang/Object[]", - &module_); + vtablesArrayTy, + true, + GlobalVariable::ExternalLinkage, + ConstantArray::get(vtablesArrayTy, vi.superVtables), + "java/lang/Object[]", + &module_); init.push_back(ConstantExpr::getGetElementPtr( vtablesArray, std::vector(2, ConstantUInt::get(Type::UIntTy, 0)))); @@ -890,13 +890,13 @@ PointerType::get(PointerType::get(VTableInfo::VTableTy)))); llvm::Constant* typeInfoInit = - ConstantStruct::get(VTableInfo::TypeInfoTy, init); + ConstantStruct::get(VTableInfo::TypeInfoTy, init); // Now that we have both the type and initializer for the // llvm_java_object_typeinfo struct we can start adding the // function pointers. ConstantStruct* superInit = - cast(javaLangObjectVI.vtable->getInitializer()); + cast(javaLangObjectVI.vtable->getInitializer()); init.clear(); init.resize(superInit->getNumOperands()); @@ -906,17 +906,17 @@ // Fill in the function pointers as they are in // java/lang/Object. There are no overriden methods. for (unsigned i = 1, e = superInit->getNumOperands(); i != e; ++i) - init[i] = superInit->getOperand(i); + init[i] = superInit->getOperand(i); vi.m2iMap = javaLangObjectVI.m2iMap; llvm::Constant* vtable = ConstantStruct::get(init); module_.addTypeName("java/lang/Object[]", vtable->getType()); vi.vtable = new GlobalVariable(VTableInfo::VTableTy, - true, GlobalVariable::ExternalLinkage, + true, GlobalVariable::ExternalLinkage, vtable, - "java/lang/Object[]", - &module_); + "java/lang/Object[]", + &module_); DEBUG(std::cerr << "Built VTableInfo for: java/lang/Object[]\n"); } @@ -930,35 +930,35 @@ VTableInfo& vi = ac2viMap_[cf]; assert(!vi.vtable && vi.m2iMap.empty() && - "got already initialized VTableInfo!"); + "got already initialized VTableInfo!"); ConstantClass* super = cf->getSuperClass(); assert(super && "Class does not have superclass!"); const VTableInfo& superVI = - getVTableInfo(ClassFile::get(super->getName()->str())); + getVTableInfo(ClassFile::get(super->getName()->str())); // Copy the super vtables array. vi.superVtables.reserve(superVI.superVtables.size() + 1); vi.superVtables.push_back(superVI.vtable); std::copy(superVI.superVtables.begin(), superVI.superVtables.end(), - std::back_inserter(vi.superVtables)); + std::back_inserter(vi.superVtables)); // Copy all the constants from the super class' vtable. assert(superVI.vtable && "No vtable found for super class!"); ConstantStruct* superInit = - cast(superVI.vtable->getInitializer()); + cast(superVI.vtable->getInitializer()); std::vector init(superInit->getNumOperands()); // Use a null typeinfo struct for now. init[0] = llvm::Constant::getNullValue(VTableInfo::TypeInfoTy); // Fill in the function pointers as they are in the super // class. There are no overriden methods. for (unsigned i = 0, e = superInit->getNumOperands(); i != e; ++i) - init[i] = superInit->getOperand(i); + init[i] = superInit->getOperand(i); vi.m2iMap = superVI.m2iMap; #ifndef NDEBUG for (unsigned i = 0, e = init.size(); i != e; ++i) - assert(init[i] && "No elements in the initializer should be NULL!"); + assert(init[i] && "No elements in the initializer should be NULL!"); #endif const std::string& globalName = className + "[]"; @@ -966,11 +966,11 @@ llvm::Constant* vtable = ConstantStruct::get(init); module_.addTypeName(globalName, vtable->getType()); vi.vtable = new GlobalVariable(vtable->getType(), - true, - GlobalVariable::ExternalLinkage, - vtable, - globalName, - &module_); + true, + GlobalVariable::ExternalLinkage, + vtable, + globalName, + &module_); // Now the vtable is complete, install the new typeinfo block // for this class: we install it last because we need the vtable @@ -982,16 +982,16 @@ llvm::ConstantSInt::get(Type::IntTy, vi.superVtables.size())); // superclasses vtable pointers ArrayType* vtablesArrayTy = - ArrayType::get(PointerType::get(VTableInfo::VTableTy), + ArrayType::get(PointerType::get(VTableInfo::VTableTy), vi.superVtables.size()); GlobalVariable* vtablesArray = new GlobalVariable( - vtablesArrayTy, - true, - GlobalVariable::ExternalLinkage, - ConstantArray::get(vtablesArrayTy, vi.superVtables), - className + "[]", - &module_); + vtablesArrayTy, + true, + GlobalVariable::ExternalLinkage, + ConstantArray::get(vtablesArrayTy, vi.superVtables), + className + "[]", + &module_); typeInfoInit.push_back(ConstantExpr::getGetElementPtr( vtablesArray, @@ -1022,7 +1022,7 @@ while (true) { // Get ClassInfo for class owning the field - this will force // the globals to be initialized. - ClassFile* cf = ClassFile::get(className); + ClassFile* cf = ClassFile::get(className); getClassInfo(cf); std::string globalName = @@ -1055,22 +1055,22 @@ Value* getField(ClassFile* cf, const std::string& fieldName, Value* ptr) { // Cast ptr to correct type. ptr = new CastInst(ptr, PointerType::get(getClassInfo(cf).type), - TMP, currentBB_); + TMP, currentBB_); // Deref pointer. std::vector indices(1, ConstantUInt::get(Type::UIntTy, 0)); while (true) { - const ClassInfo& info = getClassInfo(cf); - ClassInfo::Field2IndexMap::const_iterator it = - info.f2iMap.find(fieldName); - if (it == info.f2iMap.end()) { - cf = ClassFile::get(cf->getSuperClass()->getName()->str()); - indices.push_back(ConstantUInt::get(Type::UIntTy, 0)); - } - else { - indices.push_back(ConstantUInt::get(Type::UIntTy, it->second)); - break; - } + const ClassInfo& info = getClassInfo(cf); + ClassInfo::Field2IndexMap::const_iterator it = + info.f2iMap.find(fieldName); + if (it == info.f2iMap.end()) { + cf = ClassFile::get(cf->getSuperClass()->getName()->str()); + indices.push_back(ConstantUInt::get(Type::UIntTy, 0)); + } + else { + indices.push_back(ConstantUInt::get(Type::UIntTy, it->second)); + break; + } } return new GetElementPtrInst(ptr, indices, TMP, currentBB_); @@ -1085,14 +1085,14 @@ Function* function = getFunction(method); if (method->isNative()) { - DEBUG(std::cerr << "Ignoring native method: "; - std::cerr << classMethodDesc << '\n'); - return function; + DEBUG(std::cerr << "Ignoring native method: "; + std::cerr << classMethodDesc << '\n'); + return function; } else if (method->isAbstract()) { - DEBUG(std::cerr << "Ignoring abstract method: "; - std::cerr << classMethodDesc << '\n'); - return function; + DEBUG(std::cerr << "Ignoring abstract method: "; + std::cerr << classMethodDesc << '\n'); + return function; } DEBUG(std::cerr << "Compiling method: " << classMethodDesc << '\n'); @@ -1107,65 +1107,65 @@ unsigned index = 0; for (Function::aiterator - a = function->abegin(), ae = function->aend(); a != ae; ++a) { - locals.store(index, a, &function->getEntryBlock()); - index += isTwoSlotType(a->getType()) ? 2 : 1; + a = function->abegin(), ae = function->aend(); a != ae; ++a) { + locals.store(index, a, &function->getEntryBlock()); + index += isTwoSlotType(a->getType()) ? 2 : 1; } // For the entry block the operand stack is empty and the locals // contain the arguments to the function. bbInfoMap_.insert(std::make_pair(&function->getEntryBlock(), - std::make_pair(locals, OperandStack()))); + std::make_pair(locals, OperandStack()))); // Insert the entry block to the work list. bbWorkList_.push_back(&function->getEntryBlock()); // Process the work list until we compile the whole function. while (!bbWorkList_.empty()) { - currentBB_ = bbWorkList_.front(); - bbWorkList_.pop_front(); + currentBB_ = bbWorkList_.front(); + bbWorkList_.pop_front(); - BBInfoMap::iterator bbInfo = bbInfoMap_.find(currentBB_); - assert(bbInfo != bbInfoMap_.end() && - "Unknown entry operand stack and locals for basic block in " - "work list!"); - - currentLocals_ = &bbInfo->second.first; - currentOpStack_ = &bbInfo->second.second; - - unsigned start, end; - tie(start, end) = bbBuilder_->getBytecodeIndices(currentBB_); - - // Compile this basic block. - parse(codeAttr->getCode(), start, end); - - // If this basic block does not have a terminator, it should - // have an unconditional branch to the next basic block - // (fallthrough). - if (!currentBB_->getTerminator()) - new BranchInst(bbBuilder_->getBasicBlock(end), currentBB_); - - // For each successor of this basic block we can compute its - // entry operand stack and locals, do so, and add it to the - // work list. If a successor already has an entry operand - // stack and locals we assume the computation was correct and - // do not add it to the work list. - for (succ_iterator - SI = succ_begin(currentBB_), SE = succ_end(currentBB_); - SI != SE; ++SI) { - BasicBlock* Succ = *SI; - BBInfoMap::iterator bbSuccInfo = bbInfoMap_.lower_bound(Succ); - if (bbSuccInfo == bbInfoMap_.end() || bbSuccInfo->first != Succ) { - bbInfoMap_.insert(bbSuccInfo, - std::make_pair(Succ, - std::make_pair(*currentLocals_, - *currentOpStack_))); - bbWorkList_.push_back(Succ); - } - } + BBInfoMap::iterator bbInfo = bbInfoMap_.find(currentBB_); + assert(bbInfo != bbInfoMap_.end() && + "Unknown entry operand stack and locals for basic block in " + "work list!"); + + currentLocals_ = &bbInfo->second.first; + currentOpStack_ = &bbInfo->second.second; + + unsigned start, end; + tie(start, end) = bbBuilder_->getBytecodeIndices(currentBB_); + + // Compile this basic block. + parse(codeAttr->getCode(), start, end); + + // If this basic block does not have a terminator, it should + // have an unconditional branch to the next basic block + // (fallthrough). + if (!currentBB_->getTerminator()) + new BranchInst(bbBuilder_->getBasicBlock(end), currentBB_); + + // For each successor of this basic block we can compute its + // entry operand stack and locals, do so, and add it to the + // work list. If a successor already has an entry operand + // stack and locals we assume the computation was correct and + // do not add it to the work list. + for (succ_iterator + SI = succ_begin(currentBB_), SE = succ_end(currentBB_); + SI != SE; ++SI) { + BasicBlock* Succ = *SI; + BBInfoMap::iterator bbSuccInfo = bbInfoMap_.lower_bound(Succ); + if (bbSuccInfo == bbInfoMap_.end() || bbSuccInfo->first != Succ) { + bbInfoMap_.insert(bbSuccInfo, + std::make_pair(Succ, + std::make_pair(*currentLocals_, + *currentOpStack_))); + bbWorkList_.push_back(Succ); + } + } } DEBUG(std::cerr << "Finished compilation of method: " - << classMethodDesc << '\n'); + << classMethodDesc << '\n'); // DEBUG(function->dump()); return function; @@ -1231,16 +1231,16 @@ ClassFile* clazz = method->getParent(); FunctionType* funcTy = cast( - getType(method->getDescriptor(), - method->isStatic() ? NULL : getClassInfo(clazz).type)); + getType(method->getDescriptor(), + method->isStatic() ? NULL : getClassInfo(clazz).type)); std::string funcName = - clazz->getThisClass()->getName()->str() + '/' + - method->getName()->str() + method->getDescriptor()->str(); + clazz->getThisClass()->getName()->str() + '/' + + method->getName()->str() + method->getDescriptor()->str(); Function* function = module_.getOrInsertFunction(funcName, funcTy); function->setLinkage(method->isPrivate() ? - Function::InternalLinkage : - Function::ExternalLinkage); + Function::InternalLinkage : + Function::ExternalLinkage); return function; } @@ -1256,8 +1256,8 @@ Method* method = classfile->getMethod(methodNameAndDescr); if (!method) - throw InvocationTargetException("Method " + methodNameAndDescr + - " not found in class " + className); + throw InvocationTargetException("Method " + methodNameAndDescr + + " not found in class " + className); return method; } @@ -1269,7 +1269,7 @@ Function* compileMethod(const std::string& classMethodDesc) { // Initialize the static initializer function. Function* staticInit = - module_.getOrInsertFunction(LLVM_JAVA_STATIC_INIT, Type::VoidTy, 0); + module_.getOrInsertFunction(LLVM_JAVA_STATIC_INIT, Type::VoidTy, 0); BasicBlock* staticInitBB = new BasicBlock("entry", staticInit); new ReturnInst(NULL, staticInitBB); @@ -1283,8 +1283,8 @@ toCompileFunctions_.insert(function); // Compile the transitive closure of methods called by this method. for (unsigned i = 0; i != toCompileFunctions_.size(); ++i) { - Function* f = toCompileFunctions_[i]; - compileMethodOnly(f->getName()); + Function* f = toCompileFunctions_[i]; + compileMethodOnly(f->getName()); } return function; @@ -1293,8 +1293,8 @@ void do_aconst_null() { ClassFile* root = ClassFile::get("java/lang/Object"); currentOpStack_->push(llvm::Constant::getNullValue( - PointerType::get(getClassInfo(root).type)), - currentBB_); + PointerType::get(getClassInfo(root).type)), + currentBB_); } void do_iconst(int value) { @@ -1358,7 +1358,7 @@ indices.push_back(ConstantUInt::get(Type::UIntTy, 2)); indices.push_back(index); Value* elementPtr = - new GetElementPtrInst(arrayRef, indices, TMP, currentBB_); + new GetElementPtrInst(arrayRef, indices, TMP, currentBB_); Value* result = new LoadInst(elementPtr, TMP, currentBB_); currentOpStack_->push(result, currentBB_); } @@ -1401,7 +1401,7 @@ indices.push_back(ConstantUInt::get(Type::UIntTy, 2)); indices.push_back(index); Value* elementPtr = - new GetElementPtrInst(arrayRef, indices, TMP, currentBB_); + new GetElementPtrInst(arrayRef, indices, TMP, currentBB_); new StoreInst(value, elementPtr, currentBB_); } @@ -1412,7 +1412,7 @@ void do_pop2() { Value* v1 = currentOpStack_->pop(currentBB_); if (isOneSlotValue(v1)) - currentOpStack_->pop(currentBB_); + currentOpStack_->pop(currentBB_); } void do_dup() { @@ -1433,31 +1433,31 @@ Value* v1 = currentOpStack_->pop(currentBB_); Value* v2 = currentOpStack_->pop(currentBB_); if (isOneSlotValue(v2)) { - Value* v3 = currentOpStack_->pop(currentBB_); - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v3, currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); + Value* v3 = currentOpStack_->pop(currentBB_); + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v3, currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); } else { - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); } } void do_dup2() { Value* v1 = currentOpStack_->pop(currentBB_); if (isOneSlotValue(v1)) { - Value* v2 = currentOpStack_->pop(currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); + Value* v2 = currentOpStack_->pop(currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); } else { - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v1, currentBB_); } } @@ -1465,17 +1465,17 @@ Value* v1 = currentOpStack_->pop(currentBB_); Value* v2 = currentOpStack_->pop(currentBB_); if (isOneSlotValue(v1)) { - Value* v3 = currentOpStack_->pop(currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v3, currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); + Value* v3 = currentOpStack_->pop(currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v3, currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); } else { - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); } } @@ -1483,37 +1483,37 @@ Value* v1 = currentOpStack_->pop(currentBB_); Value* v2 = currentOpStack_->pop(currentBB_); if (isOneSlotValue(v1)) { - Value* v3 = currentOpStack_->pop(currentBB_); - if (isOneSlotValue(v3)) { - Value* v4 = currentOpStack_->pop(currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v4, currentBB_); - currentOpStack_->push(v3, currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); - } - else { - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v3, currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); - } + Value* v3 = currentOpStack_->pop(currentBB_); + if (isOneSlotValue(v3)) { + Value* v4 = currentOpStack_->pop(currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v4, currentBB_); + currentOpStack_->push(v3, currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); + } + else { + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v3, currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); + } } else { - if (isOneSlotValue(v2)) { - Value* v3 = currentOpStack_->pop(currentBB_); - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v3, currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); - } - else { - currentOpStack_->push(v1, currentBB_); - currentOpStack_->push(v2, currentBB_); - currentOpStack_->push(v1, currentBB_); - } + if (isOneSlotValue(v2)) { + Value* v3 = currentOpStack_->pop(currentBB_); + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v3, currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); + } + else { + currentOpStack_->push(v1, currentBB_); + currentOpStack_->push(v2, currentBB_); + currentOpStack_->push(v1, currentBB_); + } } } @@ -1647,11 +1647,11 @@ Value* v1 = currentOpStack_->pop(currentBB_); Value* c = BinaryOperator::createSetGT(v1, v2, TMP, currentBB_); Value* r = new SelectInst(c, ConstantSInt::get(Type::IntTy, 1), - ConstantSInt::get(Type::IntTy, 0), TMP, - currentBB_); + ConstantSInt::get(Type::IntTy, 0), TMP, + currentBB_); c = BinaryOperator::createSetLT(v1, v2, TMP, currentBB_); r = new SelectInst(c, ConstantSInt::get(Type::IntTy, -1), r, TMP, - currentBB_); + currentBB_); currentOpStack_->push(r, currentBB_); } @@ -1665,17 +1665,17 @@ Value* v1 = currentOpStack_->pop(currentBB_); Value* c = BinaryOperator::createSetGT(v1, v2, TMP, currentBB_); Value* r = new SelectInst(c, ConstantSInt::get(Type::IntTy, 1), - ConstantSInt::get(Type::IntTy, 0), TMP, - currentBB_); + ConstantSInt::get(Type::IntTy, 0), TMP, + currentBB_); c = BinaryOperator::createSetLT(v1, v2, TMP, currentBB_); r = new SelectInst(c, ConstantSInt::get(Type::IntTy, -1), r, TMP, - currentBB_); + currentBB_); c = new CallInst(module_.getOrInsertFunction - ("llvm.isunordered", - Type::BoolTy, v1->getType(), v2->getType(), 0), - v1, v2, TMP, currentBB_); + ("llvm.isunordered", + Type::BoolTy, v1->getType(), v2->getType(), 0), + v1, v2, TMP, currentBB_); r = new SelectInst(c, ConstantSInt::get(Type::IntTy, valueIfUnordered), - r, TMP, currentBB_); + r, TMP, currentBB_); currentOpStack_->push(r, currentBB_); } @@ -1740,11 +1740,11 @@ Value* v2 = currentOpStack_->pop(currentBB_); Value* v1 = currentOpStack_->pop(currentBB_); if (v1->getType() != v2->getType()) - v1 = new CastInst(v1, v2->getType(), TMP, currentBB_); + v1 = new CastInst(v1, v2->getType(), TMP, currentBB_); Value* c = new SetCondInst(cc, v1, v2, TMP, currentBB_); new BranchInst(bbBuilder_->getBasicBlock(t), - bbBuilder_->getBasicBlock(f), - c, currentBB_); + bbBuilder_->getBasicBlock(f), + c, currentBB_); } void do_goto(unsigned target) { @@ -1777,10 +1777,10 @@ void do_switch(unsigned defTarget, const SwitchCases& sw) { Value* v = currentOpStack_->pop(currentBB_); SwitchInst* in = - new SwitchInst(v, bbBuilder_->getBasicBlock(defTarget), currentBB_); + new SwitchInst(v, bbBuilder_->getBasicBlock(defTarget), currentBB_); for (unsigned i = 0, e = sw.size(); i != e; ++i) - in->addCase(ConstantSInt::get(Type::IntTy, sw[i].first), - bbBuilder_->getBasicBlock(sw[i].second)); + in->addCase(ConstantSInt::get(Type::IntTy, sw[i].first), + bbBuilder_->getBasicBlock(sw[i].second)); } void do_getstatic(unsigned index) { @@ -1793,7 +1793,7 @@ Value* ptr = getStaticField(index); const Type* fieldTy = cast(ptr->getType())->getElementType(); if (v->getType() != fieldTy) - v = new CastInst(v, fieldTy, TMP, currentBB_); + v = new CastInst(v, fieldTy, TMP, currentBB_); new StoreInst(v, ptr, currentBB_); } @@ -1815,13 +1815,13 @@ void makeCall(Value* fun, const std::vector params) { const PointerType* funPtrTy = cast(fun->getType()); const FunctionType* funTy = - cast(funPtrTy->getElementType()); + cast(funPtrTy->getElementType()); if (funTy->getReturnType() == Type::VoidTy) - new CallInst(fun, params, "", currentBB_); + new CallInst(fun, params, "", currentBB_); else { - Value* r = new CallInst(fun, params, TMP, currentBB_); - currentOpStack_->push(r, currentBB_); + Value* r = new CallInst(fun, params, TMP, currentBB_); + currentOpStack_->push(r, currentBB_); } } @@ -1829,11 +1829,11 @@ unsigned numParams = funTy->getNumParams(); std::vector params(numParams); while (numParams--) { - Value* p = currentOpStack_->pop(currentBB_); - params[numParams] = - p->getType() == funTy->getParamType(numParams) ? - p : - new CastInst(p, funTy->getParamType(numParams), TMP, currentBB_); + Value* p = currentOpStack_->pop(currentBB_); + params[numParams] = + p->getType() == funTy->getParamType(numParams) ? + p : + new CastInst(p, funTy->getParamType(numParams), TMP, currentBB_); } return params; @@ -1904,33 +1904,33 @@ tie(ci, vi) = getInfo(className); const std::string& methodDescr = - nameAndType->getName()->str() + - nameAndType->getDescriptor()->str(); + nameAndType->getName()->str() + + nameAndType->getDescriptor()->str(); FunctionType* funTy = - cast(getType(nameAndType->getDescriptor(), ci->type)); + cast(getType(nameAndType->getDescriptor(), ci->type)); std::vector params(getParams(funTy)); Value* objRef = params.front(); objRef = new CastInst(objRef, PointerType::get(ci->type), - "this", currentBB_); + "this", currentBB_); Value* objBase = new CastInst(objRef, ClassInfo::ObjectBaseTy, TMP, currentBB_); Function* f = module_.getOrInsertFunction( - LLVM_JAVA_GETOBJECTCLASS, PointerType::get(VTableInfo::VTableTy), - objBase->getType(), NULL); + LLVM_JAVA_GETOBJECTCLASS, PointerType::get(VTableInfo::VTableTy), + objBase->getType(), NULL); Value* vtable = new CallInst(f, objBase, TMP, currentBB_); vtable = new CastInst(vtable, PointerType::get(vi->vtable->getType()), - TMP, currentBB_); + TMP, currentBB_); vtable = new LoadInst(vtable, className + "", currentBB_); std::vector indices(1, ConstantUInt::get(Type::UIntTy, 0)); assert(vi->m2iMap.find(methodDescr) != vi->m2iMap.end() && - "could not find slot for virtual function!"); + "could not find slot for virtual function!"); unsigned vSlot = vi->m2iMap.find(methodDescr)->second; indices.push_back(ConstantUInt::get(Type::UIntTy, vSlot)); Value* vfunPtr = - new GetElementPtrInst(vtable, indices, TMP, currentBB_); + new GetElementPtrInst(vtable, indices, TMP, currentBB_); Value* vfun = new LoadInst(vfunPtr, methodDescr, currentBB_); makeCall(vfun, params); @@ -1943,12 +1943,12 @@ const std::string& className = methodRef->getClass()->getName()->str(); const std::string& methodName = nameAndType->getName()->str(); const std::string& methodDescr = - methodName + nameAndType->getDescriptor()->str(); + methodName + nameAndType->getDescriptor()->str(); std::string funcName = className + '/' + methodDescr; const ClassInfo& ci = getClassInfo(ClassFile::get(className)); FunctionType* funcTy = - cast(getType(nameAndType->getDescriptor(), ci.type)); + cast(getType(nameAndType->getDescriptor(), ci.type)); Function* function = module_.getOrInsertFunction(funcName, funcTy); toCompileFunctions_.insert(function); makeCall(function, getParams(funcTy)); @@ -1959,12 +1959,12 @@ ConstantNameAndType* nameAndType = methodRef->getNameAndType(); std::string funcName = - methodRef->getClass()->getName()->str() + '/' + - nameAndType->getName()->str() + - nameAndType->getDescriptor()->str(); + methodRef->getClass()->getName()->str() + '/' + + nameAndType->getName()->str() + + nameAndType->getDescriptor()->str(); FunctionType* funcTy = - cast(getType(nameAndType->getDescriptor())); + cast(getType(nameAndType->getDescriptor())); Function* function = module_.getOrInsertFunction(funcName, funcTy); toCompileFunctions_.insert(function); makeCall(function, getParams(funcTy)); @@ -1972,7 +1972,7 @@ void do_invokeinterface(unsigned index) { ConstantInterfaceMethodRef* methodRef = - cf_->getConstantInterfaceMethodRef(index); + cf_->getConstantInterfaceMethodRef(index); ConstantNameAndType* nameAndType = methodRef->getNameAndType(); const std::string& className = methodRef->getClass()->getName()->str(); @@ -1982,46 +1982,46 @@ tie(ci, vi) = getInfo(className); const std::string& methodDescr = - nameAndType->getName()->str() + - nameAndType->getDescriptor()->str(); + nameAndType->getName()->str() + + nameAndType->getDescriptor()->str(); FunctionType* funTy = - cast(getType(nameAndType->getDescriptor(), ci->type)); + cast(getType(nameAndType->getDescriptor(), ci->type)); std::vector params(getParams(funTy)); Value* objRef = params.front(); objRef = new CastInst(objRef, PointerType::get(ci->type), - "this", currentBB_); + "this", currentBB_); Value* objBase = new CastInst(objRef, ClassInfo::ObjectBaseTy, TMP, currentBB_); Function* f = module_.getOrInsertFunction( - LLVM_JAVA_GETOBJECTCLASS, PointerType::get(VTableInfo::VTableTy), - objBase->getType(), NULL); + LLVM_JAVA_GETOBJECTCLASS, PointerType::get(VTableInfo::VTableTy), + objBase->getType(), NULL); Value* vtable = new CallInst(f, objBase, TMP, currentBB_); // get the interfaces array of vtables std::vector indices(2, ConstantUInt::get(Type::UIntTy, 0)); indices.push_back(ConstantUInt::get(Type::UIntTy, 3)); Value* interfaceVTables = - new GetElementPtrInst(vtable, indices, TMP, currentBB_); + new GetElementPtrInst(vtable, indices, TMP, currentBB_); interfaceVTables = new LoadInst(interfaceVTables, TMP, currentBB_); // Get the actual interface vtable. indices.clear(); indices.push_back(ConstantUInt::get(Type::UIntTy, ci->interfaceIdx)); Value* interfaceVTable = - new GetElementPtrInst(interfaceVTables, indices, TMP, currentBB_); + new GetElementPtrInst(interfaceVTables, indices, TMP, currentBB_); interfaceVTable = - new LoadInst(interfaceVTable, className + "", currentBB_); + new LoadInst(interfaceVTable, className + "", currentBB_); interfaceVTable = - new CastInst(interfaceVTable, vi->vtable->getType(), TMP, currentBB_); + new CastInst(interfaceVTable, vi->vtable->getType(), TMP, currentBB_); // Get the function pointer. indices.resize(1); assert(vi->m2iMap.find(methodDescr) != vi->m2iMap.end() && - "could not find slot for virtual function!"); + "could not find slot for virtual function!"); unsigned vSlot = vi->m2iMap.find(methodDescr)->second; indices.push_back(ConstantUInt::get(Type::UIntTy, vSlot)); Value* vfunPtr = - new GetElementPtrInst(interfaceVTable, indices, TMP, currentBB_); + new GetElementPtrInst(interfaceVTable, indices, TMP, currentBB_); Value* vfun = new LoadInst(vfunPtr, methodDescr, currentBB_); makeCall(vfun, params); @@ -2034,15 +2034,15 @@ const VTableInfo& vi = getVTableInfo(cf); Value* objRef = new MallocInst(ci.type, - ConstantUInt::get(Type::UIntTy, 0), - TMP, currentBB_); + ConstantUInt::get(Type::UIntTy, 0), + TMP, currentBB_); Value* objBase = getField(cf, LLVM_JAVA_OBJECT_BASE, objRef); Value* vtable = new CastInst(vi.vtable, - PointerType::get(VTableInfo::VTableTy), - TMP, currentBB_); + PointerType::get(VTableInfo::VTableTy), + TMP, currentBB_); Function* f = module_.getOrInsertFunction( - LLVM_JAVA_SETOBJECTCLASS, Type::VoidTy, - objBase->getType(), PointerType::get(VTableInfo::VTableTy), NULL); + LLVM_JAVA_SETOBJECTCLASS, Type::VoidTy, + objBase->getType(), PointerType::get(VTableInfo::VTableTy), NULL); new CallInst(f, objBase, vtable, "", currentBB_); currentOpStack_->push(objRef, currentBB_); } @@ -2094,12 +2094,12 @@ Value* count) { // The size of the array part of the struct. Value* size = BinaryOperator::create( - Instruction::Mul, count, ConstantExpr::getSizeOf(elementTy), - TMP, currentBB_); + Instruction::Mul, count, ConstantExpr::getSizeOf(elementTy), + TMP, currentBB_); // Plus the size of the rest of the struct. size = BinaryOperator::create( - Instruction::Add, size, ConstantExpr::getSizeOf(ci.type), - TMP, currentBB_); + Instruction::Add, size, ConstantExpr::getSizeOf(ci.type), + TMP, currentBB_); // Allocate memory for the object. Value* objRef = new MallocInst(Type::SByteTy, size, TMP, currentBB_); objRef = new CastInst(objRef, PointerType::get(ci.type), TMP, currentBB_); @@ -2110,11 +2110,11 @@ // Install the vtable pointer. Value* objBase = getArrayObjectBasePtr(objRef); Value* vtable = new CastInst(vi.vtable, - PointerType::get(VTableInfo::VTableTy), - TMP, currentBB_); + PointerType::get(VTableInfo::VTableTy), + TMP, currentBB_); Function* f = module_.getOrInsertFunction( - LLVM_JAVA_SETOBJECTCLASS, Type::VoidTy, - objBase->getType(), PointerType::get(VTableInfo::VTableTy), NULL); + LLVM_JAVA_SETOBJECTCLASS, Type::VoidTy, + objBase->getType(), PointerType::get(VTableInfo::VTableTy), NULL); new CallInst(f, objBase, vtable, "", currentBB_); currentOpStack_->push(objRef, currentBB_); } @@ -2123,7 +2123,7 @@ Value* arrayRef = currentOpStack_->pop(currentBB_); const ClassInfo& ci = getObjectArrayInfo(); arrayRef = - new CastInst(arrayRef, PointerType::get(ci.type), TMP, currentBB_); + new CastInst(arrayRef, PointerType::get(ci.type), TMP, currentBB_); Value* lengthPtr = getArrayLengthPtr(arrayRef); Value* length = new LoadInst(lengthPtr, TMP, currentBB_); length = new CastInst(length, Type::IntTy, TMP, currentBB_); @@ -2133,9 +2133,9 @@ void do_athrow() { Value* objRef = currentOpStack_->pop(currentBB_); objRef = new CastInst(objRef, PointerType::get(ClassInfo::ObjectBaseTy), - TMP, currentBB_); + TMP, currentBB_); Function* f = module_.getOrInsertFunction( - LLVM_JAVA_THROW, Type::IntTy, objRef->getType(), NULL); + LLVM_JAVA_THROW, Type::IntTy, objRef->getType(), NULL); new CallInst(f, objRef, TMP, currentBB_); new UnreachableInst(currentBB_); } @@ -2178,11 +2178,11 @@ Value* objBase = new CastInst(objRef, ClassInfo::ObjectBaseTy, TMP, currentBB_); Function* f = module_.getOrInsertFunction( - LLVM_JAVA_ISINSTANCEOF, Type::IntTy, - objBase->getType(), PointerType::get(VTableInfo::VTableTy), NULL); + LLVM_JAVA_ISINSTANCEOF, Type::IntTy, + objBase->getType(), PointerType::get(VTableInfo::VTableTy), NULL); Value* vtable = new CastInst(vi->vtable, - PointerType::get(VTableInfo::VTableTy), - TMP, currentBB_); + PointerType::get(VTableInfo::VTableTy), + TMP, currentBB_); Value* r = new CallInst(f, objBase, vtable, TMP, currentBB_); currentOpStack_->push(r, currentBB_); } @@ -2222,10 +2222,10 @@ BasicBlock* bb = new BasicBlock("entry", javaMain); const FunctionType* mainTy = main->getFunctionType(); new CallInst(main, - // FIXME: Forward correct params from llvm_java_main - llvm::Constant::getNullValue(mainTy->getParamType(0)), - "", - bb); + // FIXME: Forward correct params from llvm_java_main + llvm::Constant::getNullValue(mainTy->getParamType(0)), + "", + bb); new ReturnInst(NULL, bb); return m; } From lattner at cs.uiuc.edu Sat Nov 6 12:07:19 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 12:07:19 -0600 Subject: [llvm-commits] CVS: llvm-test/RunSafely.sh Message-ID: <200411061807.iA6I7JhX017980@apoc.cs.uiuc.edu> Changes in directory llvm-test: RunSafely.sh updated: 1.13 -> 1.14 --- Log message: "optimize" runsafely. Only call shift once instead of 4 times, only execute 'uname' to compute $GDB if we will need it. --- Diffs of the changes: (+15 -20) Index: llvm-test/RunSafely.sh diff -u llvm-test/RunSafely.sh:1.13 llvm-test/RunSafely.sh:1.14 --- llvm-test/RunSafely.sh:1.13 Sat Jun 26 12:01:12 2004 +++ llvm-test/RunSafely.sh Sat Nov 6 12:07:06 2004 @@ -14,13 +14,10 @@ # Syntax: ./RunSafely.sh # ULIMIT=$1 -shift -INFILE=$1 -shift -OUTFILE=$1 -shift -PROGRAM=$1 -shift +INFILE=$2 +OUTFILE=$3 +PROGRAM=$4 +shift 4 ulimit -t $ULIMIT rm -f core core.* @@ -30,18 +27,6 @@ ulimit -f 10485760 # -# If we are on a sun4u machine (UltraSparc), then the code we're generating -# is 64 bit code. In that case, use gdb-64 instead of gdb. -# -myarch=`uname -m` -if [ "$myarch" = "sun4u" ] -then - GDB="gdb-64" -else - GDB=gdb -fi - -# # Run the command, timing its execution. # The standard output and standard error of $PROGRAM should go in $OUTFILE, # and the standard error of time should go in $OUTFILE.time. @@ -55,11 +40,21 @@ if test $? -eq 0 then - touch $OUTFILE.exitok + touch $OUTFILE.exitok fi if ls | egrep "^core" > /dev/null then + # If we are on a sun4u machine (UltraSparc), then the code we're generating + # is 64 bit code. In that case, use gdb-64 instead of gdb. + myarch=`uname -m` + if [ "$myarch" = "sun4u" ] + then + GDB="gdb-64" + else + GDB=gdb + fi + corefile=`ls core* | head -n 1` echo "where" > StackTrace.$$ $GDB -q -batch --command=StackTrace.$$ --core=$corefile $PROGRAM < /dev/null From lattner at cs.uiuc.edu Sat Nov 6 13:37:17 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 13:37:17 -0600 Subject: [llvm-commits] CVS: llvm-test/RunSafely.sh Message-ID: <200411061937.iA6JbHmu018125@apoc.cs.uiuc.edu> Changes in directory llvm-test: RunSafely.sh updated: 1.14 -> 1.15 --- Log message: Use Awk to add a "program" line to the output, which contains the user+system time. Thanks to Reid for actually doing all of the work :) --- Diffs of the changes: (+7 -1) Index: llvm-test/RunSafely.sh diff -u llvm-test/RunSafely.sh:1.14 llvm-test/RunSafely.sh:1.15 --- llvm-test/RunSafely.sh:1.14 Sat Nov 6 12:07:06 2004 +++ llvm-test/RunSafely.sh Sat Nov 6 13:37:04 2004 @@ -36,7 +36,13 @@ # we tell time to launch a shell which in turn executes $PROGRAM with the # necessary I/O redirection. # -(time -p sh -c "$PROGRAM $* > $OUTFILE 2>&1 < $INFILE") > $OUTFILE.time 2>&1 +(time -p sh -c "$PROGRAM $* > $OUTFILE 2>&1 < $INFILE") 2>&1 | awk -- '\ +BEGIN { cpu = 0.0; } +/^real/ { /* IGNORE */; print } +/^user/ { cpu += $2; print } +/^sys/ { cpu += $2; print } +!/^real/ && !/^user/ && !/^sys/ { print } +END { printf("program %f\n", cpu); }' > $OUTFILE.time if test $? -eq 0 then From lattner at cs.uiuc.edu Sat Nov 6 13:41:59 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 13:41:59 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp Message-ID: <200411061941.iA6JfxNB018149@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.82 -> 1.83 --- Log message: * Accurate count # pools * Add a new heuristic "OnlyOverhead" that adds all of teh overhead of pool allocation to the program but dynamically ends up sending everything through malloc and free (by making all PD's be null). This is useful to see how much overhead pool allocation incurs --- Diffs of the changes: (+49 -17) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.82 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.83 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.82 Fri Nov 5 15:02:26 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Sat Nov 6 13:41:49 2004 @@ -67,6 +67,7 @@ NoNodes, CyclicNodes, SmartCoallesceNodes, + OnlyOverhead, }; cl::opt Heuristic("poolalloc-heuristic", @@ -74,6 +75,7 @@ cl::values(clEnumVal(AllNodes, " Pool allocate all nodes"), clEnumVal(CyclicNodes, " Pool allocate nodes with cycles"), clEnumVal(SmartCoallesceNodes, " Use the smart node merging heuristic"), + clEnumVal(OnlyOverhead, " Do not pool allocate anything, but induce all overhead from it"), clEnumVal(NoNodes, " Do not pool allocate anything"), clEnumValEnd), cl::init(AllNodes)); @@ -332,6 +334,7 @@ // a heuristic to filter out nodes which are not profitable to pool allocate. switch (Heuristic) { default: + case OnlyOverhead: case AllNodes: return true; case NoNodes: return false; case CyclicNodes: // Pool allocate nodes that are cyclic and not arrays @@ -412,6 +415,7 @@ E = GlobalHeapNodes.end(); I != E; ++I) { bool ShouldPoolAlloc = true; switch (Heuristic) { + case OnlyOverhead: case AllNodes: break; case NoNodes: ShouldPoolAlloc = false; break; case SmartCoallesceNodes: @@ -469,6 +473,7 @@ case AllNodes: case NoNodes: case CyclicNodes: + case OnlyOverhead: for (unsigned i = 0, e = NodesToPA.size(); i != e; ++i) { DSNode *Node = NodesToPA[i]; if (ShouldPoolAllocate(Node)) { @@ -478,9 +483,6 @@ // Void types in DS graph are never used if (Node->getType() == Type::VoidTy) std::cerr << "Node collapsing in '" << F.getName() << "'\n"; - ++NumPools; - if (!Node->isNodeCompletelyFolded()) - ++NumTSPools; // Update the PoolDescriptors map PoolDescriptors.insert(std::make_pair(Node, AI)); @@ -491,6 +493,7 @@ } } break; + case SmartCoallesceNodes: { std::set NodesToPASet(NodesToPA.begin(), NodesToPA.end()); @@ -536,10 +539,6 @@ // Void types in DS graph are never used if (N->isNodeCompletelyFolded()) std::cerr << "Node collapsing in '" << F.getName() << "'\n"; - else - ++NumTSPools; - - ++NumPools; // Update the PoolDescriptors map PoolDescriptors.insert(std::make_pair(N, AI)); @@ -599,10 +598,7 @@ Value *AI = new AllocaInst(PoolDescType, 0, "PD", InsertPoint); if (N->isNodeCompletelyFolded()) std::cerr << "Node collapsing in '" << F.getName() << "'\n"; - else - ++NumTSPools; - - ++NumPools; + PoolDescriptors[N] = AI; } else { // If this node has no pool allocated predecessors, and there is no @@ -618,6 +614,25 @@ } // end switch } +/// getDynamicallyNullPool - Return a PoolDescriptor* that is always dynamically +/// null. Insert the code necessary to produce it before the specified +/// instruction. +static Value *getDynamicallyNullPool(BasicBlock::iterator I) { + // Arrange to dynamically pass null into all of the pool functions if we are + // only checking for overhead. + static Value *NullGlobal = 0; + if (!NullGlobal) { + Module *M = I->getParent()->getParent()->getParent(); + NullGlobal = new GlobalVariable(PoolAllocate::PoolDescPtrTy, false, + GlobalValue::ExternalLinkage, + Constant::getNullValue(PoolAllocate::PoolDescPtrTy), + "llvm-poolalloc-null-init", M); + } + while (isa(I)) ++I; + + return new LoadInst(NullGlobal, "nullpd", I); +} + // processFunction - Pool allocate any data structures which are contained in // the specified function. // @@ -642,6 +657,10 @@ DSGraph::computeNodeMapping(G.getNodeForValue(*I), GG.getNodeForValue(*I), GlobalsGraphNodeMapping); } + + Value *NullPD = 0; + if (Heuristic == OnlyOverhead) + NullPD = getDynamicallyNullPool(NewF.front().begin()); // Loop over all of the nodes which are non-escaping, adding pool-allocatable // ones to the NodesToPA vector. @@ -655,6 +674,8 @@ DSNode *GGN = GlobalsGraphNodeMapping[N].getNode(); assert(GGN && GlobalNodes[GGN] && "No global node found??"); FI.PoolDescriptors[N] = GlobalNodes[GGN]; + if (Heuristic == OnlyOverhead) + FI.PoolDescriptors[N] = NullPD; } else if (!MarkedNodes.count(N)) { // Otherwise, if it was not passed in from outside the function, it must // be a local pool! @@ -701,7 +722,7 @@ if (CallInst *CI = dyn_cast(I)) if (PoolFrees.count(std::make_pair(PD, CI))) { PoolFrees.erase(std::make_pair(PD, CI)); - I->getParent()->getInstList().erase(I); + I->eraseFromParent(); ++NumPoolFree; } } @@ -732,6 +753,10 @@ std::map &PoolDescriptors, std::set > &PoolUses, std::set > &PoolFrees) { + Value *NullPD = 0; + if (Heuristic == OnlyOverhead) + NullPD = getDynamicallyNullPool(F.front().begin()); + TargetData &TD = getAnalysis(); std::vector PoolInitPoints; @@ -760,21 +785,28 @@ assert(isa(PoolDescriptors[Node]) && "Why pool allocate this?"); AllocaInst *PD = cast(PoolDescriptors[Node]); - bool HasUse = false; std::set >::iterator XUI = PoolUses.lower_bound(std::make_pair(PD, (Instruction*)0)); - HasUse |= XUI != PoolUses.end() && XUI->first == PD; + bool HasUse = XUI != PoolUses.end() && XUI->first == PD; std::set >::iterator XUI2 = PoolFrees.lower_bound(std::make_pair(PD, (CallInst*)0)); - HasUse |= XUI2 != PoolFrees.end() && XUI2->first == PD; + bool HasFree = XUI2 != PoolFrees.end() && XUI2->first == PD; // FIXME: Turn this into an assert and fix the problem!! //assert(HasUse && "Pool is not used, but is marked heap?!"); - if (!HasUse) continue; - + if (!HasUse && !HasFree) continue; if (!AllocasHandled.insert(PD).second) continue; + // Arrange to dynamically pass null into all of the pool functions if we are + // only checking for overhead. + if (Heuristic == OnlyOverhead) + PD->replaceAllUsesWith(NullPD); + + ++NumPools; + if (!Node->isNodeCompletelyFolded()) + ++NumTSPools; + // Convert the PoolUses/PoolFrees sets into something specific to this // pool. std::set UsingBlocks; From lattner at cs.uiuc.edu Sat Nov 6 13:42:28 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 13:42:28 -0600 Subject: [llvm-commits] CVS: poolalloc/test/TEST.poolalloc.Makefile TEST.poolalloc.report Message-ID: <200411061942.iA6JgS50018166@apoc.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.poolalloc.Makefile updated: 1.27 -> 1.28 TEST.poolalloc.report updated: 1.16 -> 1.17 --- Log message: Add support for printing out the 'only overhead' numbers. --- Diffs of the changes: (+63 -10) Index: poolalloc/test/TEST.poolalloc.Makefile diff -u poolalloc/test/TEST.poolalloc.Makefile:1.27 poolalloc/test/TEST.poolalloc.Makefile:1.28 --- poolalloc/test/TEST.poolalloc.Makefile:1.27 Fri Nov 5 12:08:50 2004 +++ poolalloc/test/TEST.poolalloc.Makefile Sat Nov 6 13:42:18 2004 @@ -36,30 +36,43 @@ # output to a file. OPT_PA_STATS = $(OPT_PA) -info-output-file=$(CURDIR)/$@.info -stats -time-passes +OPTZN_PASSES := -globaldce -ipconstprop -deadargelim -adce -instcombine -simplifycfg + + # This rule runs the pool allocator on the .llvm.bc file to produce a new .bc # file -$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).transformed.bc): \ -Output/%.$(TEST).transformed.bc: Output/%.llvm.bc $(PA_SO) $(LOPT) +$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).poolalloc.bc): \ +Output/%.$(TEST).poolalloc.bc: Output/%.llvm.bc $(PA_SO) $(LOPT) - at rm -f $(CURDIR)/$@.info - -$(OPT_PA_STATS) -q -poolalloc $(EXTRA_PA_FLAGS) -globaldce -ipconstprop -deadargelim $< -o $@ -f 2>&1 > $@.out + -$(OPT_PA_STATS) -poolalloc $(EXTRA_PA_FLAGS) $(OPTZN_PASSES) $< -o $@ -f 2>&1 > $@.out $(PROGRAMS_TO_TEST:%=Output/%.$(TEST).allnodes.bc): \ Output/%.$(TEST).allnodes.bc: Output/%.llvm.bc $(PA_SO) $(LOPT) - at rm -f $(CURDIR)/$@.info - -$(OPT_PA_STATS) -q -poolalloc -poolalloc-heuristic=AllNodes -globaldce -ipconstprop -deadargelim $< -o $@ -f 2>&1 > $@.out + -$(OPT_PA_STATS) -poolalloc -poolalloc-heuristic=AllNodes $(OPTZN_PASSES) $< -o $@ -f 2>&1 > $@.out + +$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).onlyoverhead.bc): \ +Output/%.$(TEST).onlyoverhead.bc: Output/%.llvm.bc $(PA_SO) $(LOPT) + - at rm -f $(CURDIR)/$@.info + -$(OPT_PA_STATS) -poolalloc -poolalloc-heuristic=OnlyOverhead $(OPTZN_PASSES) $< -o $@ -f 2>&1 > $@.out + # This rule compiles the new .bc file into a .c file using CBE $(PROGRAMS_TO_TEST:%=Output/%.poolalloc.cbe.c): \ -Output/%.poolalloc.cbe.c: Output/%.$(TEST).transformed.bc $(LLC) +Output/%.poolalloc.cbe.c: Output/%.$(TEST).poolalloc.bc $(LLC) -$(LLC) -march=c -f $< -o $@ - # This rule compiles the new .bc file into a .c file using CBE $(PROGRAMS_TO_TEST:%=Output/%.allnodes.cbe.c): \ Output/%.allnodes.cbe.c: Output/%.$(TEST).allnodes.bc $(LLC) -$(LLC) -march=c -f $< -o $@ +# This rule compiles the new .bc file into a .c file using CBE +$(PROGRAMS_TO_TEST:%=Output/%.onlyoverhead.cbe.c): \ +Output/%.onlyoverhead.cbe.c: Output/%.$(TEST).onlyoverhead.bc $(LLC) + -$(LLC) -march=c -f $< -o $@ + # This rule compiles the .c file into an executable using $CC $(PROGRAMS_TO_TEST:%=Output/%.poolalloc.cbe): \ Output/%.poolalloc.cbe: Output/%.poolalloc.cbe.c $(PA_RT_O) @@ -70,10 +83,16 @@ Output/%.allnodes.cbe: Output/%.allnodes.cbe.c $(PA_RT_O) -$(CC) $(CFLAGS) $< $(PA_RT_O) $(LLCLIBS) $(LDFLAGS) -o $@ +# This rule compiles the .c file into an executable using $CC +$(PROGRAMS_TO_TEST:%=Output/%.onlyoverhead.cbe): \ +Output/%.onlyoverhead.cbe: Output/%.onlyoverhead.cbe.c $(PA_RT_O) + -$(CC) $(CFLAGS) $< $(PA_RT_O) $(LLCLIBS) $(LDFLAGS) -o $@ + + $(PROGRAMS_TO_TEST:%=Output/%.nonpa.bc): \ Output/%.nonpa.bc: Output/%.llvm.bc $(LOPT) - at rm -f $(CURDIR)/$@.info - -$(LOPT) -q -globaldce -ipconstprop -deadargelim $< -o $@ -f 2>&1 > $@.out + -$(LOPT) $(OPTZN_PASSES) $< -o $@ -f 2>&1 > $@.out $(PROGRAMS_TO_TEST:%=Output/%.nonpa.cbe.c): \ Output/%.nonpa.cbe.c: Output/%.nonpa.bc $(LLC) @@ -103,6 +122,13 @@ # This rule runs the generated executable, generating timing information, for # normal test programs +$(PROGRAMS_TO_TEST:%=Output/%.onlyoverhead.out-cbe): \ +Output/%.onlyoverhead.out-cbe: Output/%.onlyoverhead.cbe + -$(RUNSAFELY) $(STDIN_FILENAME) $@ $< $(RUN_OPTIONS) + + +# This rule runs the generated executable, generating timing information, for +# normal test programs $(PROGRAMS_TO_TEST:%=Output/%.nonpa.out-cbe): \ Output/%.nonpa.out-cbe: Output/%.nonpa.cbe -$(RUNSAFELY) $(STDIN_FILENAME) $@ $< $(RUN_OPTIONS) @@ -130,6 +156,16 @@ # This rule runs the generated executable, generating timing information, for # SPEC +$(PROGRAMS_TO_TEST:%=Output/%.onlyoverhead.out-cbe): \ +Output/%.onlyoverhead.out-cbe: Output/%.onlyoverhead.cbe + -$(SPEC_SANDBOX) onlyoverheadcbe-$(RUN_TYPE) $@ $(REF_IN_DIR) \ + $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \ + ../../$< $(RUN_OPTIONS) + -(cd Output/onlyoverheadcbe-$(RUN_TYPE); cat $(LOCAL_OUTPUTS)) > $@ + -cp Output/onlyoverheadcbe-$(RUN_TYPE)/$(STDOUT_FILENAME).time $@.time + +# This rule runs the generated executable, generating timing information, for +# SPEC $(PROGRAMS_TO_TEST:%=Output/%.nonpa.out-cbe): \ Output/%.nonpa.out-cbe: Output/%.nonpa.cbe -$(SPEC_SANDBOX) nonpacbe-$(RUN_TYPE) $@ $(REF_IN_DIR) \ @@ -155,6 +191,13 @@ @cp Output/$*.out-nat Output/$*.allnodes.out-nat -$(DIFFPROG) cbe $*.allnodes $(HIDEDIFF) +# This rule diffs the post-poolallocated version to make sure we didn't break +# the program! +$(PROGRAMS_TO_TEST:%=Output/%.onlyoverhead.diff-cbe): \ +Output/%.onlyoverhead.diff-cbe: Output/%.out-nat Output/%.onlyoverhead.out-cbe + @cp Output/$*.out-nat Output/$*.onlyoverhead.out-nat + -$(DIFFPROG) cbe $*.onlyoverhead $(HIDEDIFF) + # This rule diffs the post-nonpa version to make sure we didn't break the # program! $(PROGRAMS_TO_TEST:%=Output/%.nonpa.diff-cbe): \ @@ -166,10 +209,10 @@ # This rule wraps everything together to build the actual output the report is # generated from. $(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \ -Output/%.$(TEST).report.txt: Output/%.$(TEST).transformed.bc \ - Output/%.nonpa.diff-cbe \ +Output/%.$(TEST).report.txt: Output/%.nonpa.diff-cbe \ Output/%.poolalloc.diff-cbe \ - Output/%.allnodes.diff-cbe \ + Output/%.allnodes.diff-cbe \ + Output/%.onlyoverhead.diff-cbe \ Output/%.LOC.txt @echo > $@ @-if test -f Output/$*.poolalloc.diff-cbe; then \ @@ -183,6 +226,11 @@ printf "CBE-RUN-TIME-ALLNODES-SYS: " >> $@;\ grep "^sys" Output/$*.allnodes.out-cbe.time >> $@;\ \ + printf "CBE-RUN-TIME-ONLYOVERHEAD-USER: " >> $@;\ + grep "^user" Output/$*.onlyoverhead.out-cbe.time >> $@;\ + printf "CBE-RUN-TIME-ONLYOVERHEAD-SYS: " >> $@;\ + grep "^sys" Output/$*.onlyoverhead.out-cbe.time >> $@;\ + \ printf "CBE-RUN-TIME-POOLALLOC-USER: " >> $@;\ grep "^user" Output/$*.poolalloc.out-cbe.time >> $@;\ printf "CBE-RUN-TIME-POOLALLOC-SYS: " >> $@;\ Index: poolalloc/test/TEST.poolalloc.report diff -u poolalloc/test/TEST.poolalloc.report:1.16 poolalloc/test/TEST.poolalloc.report:1.17 --- poolalloc/test/TEST.poolalloc.report:1.16 Fri Mar 5 18:01:34 2004 +++ poolalloc/test/TEST.poolalloc.report Sat Nov 6 13:42:18 2004 @@ -93,6 +93,11 @@ ["AllNodesSum", \&Sum], ["AN Speedup", \&Ratio], + ["OnlyOHUser", 'CBE-RUN-TIME-ONLYOVERHEAD-USER: user\s*([.0-9m:]+)', \&FormatTime], + ["OnlyOHSys", 'CBE-RUN-TIME-ONLYOVERHEAD-SYS: sys\s*([.0-9m:]+)', \&FormatTime], + ["OnlyOHSum", \&Sum], + ["OO Speedup", \&Ratio], + ["PoolAllocUser", 'CBE-RUN-TIME-POOLALLOC-USER: user\s*([.0-9m:]+)', \&FormatTime], ["PoolAllocSys", 'CBE-RUN-TIME-POOLALLOC-SYS: sys\s*([.0-9m:]+)', \&FormatTime], ["PoolAllocSum", \&Sum], From lattner at cs.uiuc.edu Sat Nov 6 13:48:21 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 13:48:21 -0600 Subject: [llvm-commits] CVS: poolalloc/test/TEST.poolalloc.Makefile TEST.poolalloc.report Message-ID: <200411061948.iA6JmLUM019346@apoc.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.poolalloc.Makefile updated: 1.28 -> 1.29 TEST.poolalloc.report updated: 1.17 -> 1.18 --- Log message: Use the new user+sys time directly to allow us to remove many useless columns and complexity from this report. yaay! --- Diffs of the changes: (+17 -53) Index: poolalloc/test/TEST.poolalloc.Makefile diff -u poolalloc/test/TEST.poolalloc.Makefile:1.28 poolalloc/test/TEST.poolalloc.Makefile:1.29 --- poolalloc/test/TEST.poolalloc.Makefile:1.28 Sat Nov 6 13:42:18 2004 +++ poolalloc/test/TEST.poolalloc.Makefile Sat Nov 6 13:48:11 2004 @@ -216,25 +216,17 @@ Output/%.LOC.txt @echo > $@ @-if test -f Output/$*.poolalloc.diff-cbe; then \ - printf "CBE-RUN-TIME-NORMAL-USER: " >> $@;\ - grep "^user" Output/$*.nonpa.out-cbe.time >> $@;\ - printf "CBE-RUN-TIME-NORMAL-SYS: " >> $@;\ - grep "^sys" Output/$*.nonpa.out-cbe.time >> $@;\ + printf "CBE-RUN-TIME-NORMAL: " >> $@;\ + grep "^program" Output/$*.nonpa.out-cbe.time >> $@;\ \ - printf "CBE-RUN-TIME-ALLNODES-USER: " >> $@;\ - grep "^user" Output/$*.allnodes.out-cbe.time >> $@;\ - printf "CBE-RUN-TIME-ALLNODES-SYS: " >> $@;\ - grep "^sys" Output/$*.allnodes.out-cbe.time >> $@;\ + printf "CBE-RUN-TIME-ALLNODES: " >> $@;\ + grep "^program" Output/$*.allnodes.out-cbe.time >> $@;\ \ - printf "CBE-RUN-TIME-ONLYOVERHEAD-USER: " >> $@;\ - grep "^user" Output/$*.onlyoverhead.out-cbe.time >> $@;\ - printf "CBE-RUN-TIME-ONLYOVERHEAD-SYS: " >> $@;\ - grep "^sys" Output/$*.onlyoverhead.out-cbe.time >> $@;\ + printf "CBE-RUN-TIME-ONLYOVERHEAD: " >> $@;\ + grep "^program" Output/$*.onlyoverhead.out-cbe.time >> $@;\ \ - printf "CBE-RUN-TIME-POOLALLOC-USER: " >> $@;\ - grep "^user" Output/$*.poolalloc.out-cbe.time >> $@;\ - printf "CBE-RUN-TIME-POOLALLOC-SYS: " >> $@;\ - grep "^sys" Output/$*.poolalloc.out-cbe.time >> $@;\ + printf "CBE-RUN-TIME-POOLALLOC: " >> $@;\ + grep "^program" Output/$*.poolalloc.out-cbe.time >> $@;\ printf "LOC: " >> $@;\ cat Output/$*.LOC.txt >> $@;\ fi Index: poolalloc/test/TEST.poolalloc.report diff -u poolalloc/test/TEST.poolalloc.report:1.17 poolalloc/test/TEST.poolalloc.report:1.18 --- poolalloc/test/TEST.poolalloc.report:1.17 Sat Nov 6 13:42:18 2004 +++ poolalloc/test/TEST.poolalloc.report Sat Nov 6 13:48:11 2004 @@ -10,24 +10,14 @@ sub Ratio { my ($Cols, $Col) = @_; - if ($Cols->[$Col-1] ne "*" and $Cols->[5] ne "*" and + if ($Cols->[$Col-1] ne "*" and $Cols->[3] ne "*" and $Cols->[$Col-1] != "0") { - return sprintf "%1.3f", $Cols->[5]/$Cols->[$Col-1]; + return sprintf "%1.3f", $Cols->[3]/$Cols->[$Col-1]; } else { return "n/a"; } } -sub Sum { - my ($Cols, $Col) = @_; - if ($Cols->[$Col-1] ne "*" and $Cols->[$Col-2] ne "*") { - return sprintf "%1.3f", $Cols->[$Col-2]+$Cols->[$Col-1]; - } else { - return "n/a"; - } -} - - sub FormatTime { my $Time = shift; if ($Time =~ m/([0-9]+)[m:]([0-9.]+)/) { @@ -43,17 +33,6 @@ my $PTRDIST = 'MultiSource/Benchmarks/Ptrdist'; @LatexRowMapOrder = ( - "bh/bh" => 'bh', - "bisort/bisort" => 'bisort', - "em3d/em3d" => 'em3d', - "health/health" => 'health', - "mst/mst" => 'mst', - "perimeter/perimeter" => 'perimeter', - "power/power" => 'power', - "treeadd/treeadd" => 'treeadd', - "tsp/tsp" => 'tsp', - "voronoi/voronoi" => 'voronoi', - '-' => '-', "anagram/anagram" => 'anagram', "bc/bc" => 'bc', "ft/ft" => 'ft', @@ -84,24 +63,17 @@ ["LOC" , 'LOC:\s*([0-9]+)'], [], # Times - ["NormalUser", 'CBE-RUN-TIME-NORMAL-USER: user\s*([.0-9m:]+)', \&FormatTime], - ["NormalSys", 'CBE-RUN-TIME-NORMAL-SYS: sys\s*([.0-9m:]+)', \&FormatTime], - ["NormalSum", \&Sum], - - ["AllNodesUser", 'CBE-RUN-TIME-ALLNODES-USER: user\s*([.0-9m:]+)', \&FormatTime], - ["AllNodesSys", 'CBE-RUN-TIME-ALLNODES-SYS: sys\s*([.0-9m:]+)', \&FormatTime], - ["AllNodesSum", \&Sum], - ["AN Speedup", \&Ratio], + ["NormalTime", 'CBE-RUN-TIME-NORMAL: program\s*([.0-9m:]+)'], - ["OnlyOHUser", 'CBE-RUN-TIME-ONLYOVERHEAD-USER: user\s*([.0-9m:]+)', \&FormatTime], - ["OnlyOHSys", 'CBE-RUN-TIME-ONLYOVERHEAD-SYS: sys\s*([.0-9m:]+)', \&FormatTime], - ["OnlyOHSum", \&Sum], + ["OnlyOHTime", 'CBE-RUN-TIME-ONLYOVERHEAD: program\s*([.0-9m:]+)'], ["OO Speedup", \&Ratio], - ["PoolAllocUser", 'CBE-RUN-TIME-POOLALLOC-USER: user\s*([.0-9m:]+)', \&FormatTime], - ["PoolAllocSys", 'CBE-RUN-TIME-POOLALLOC-SYS: sys\s*([.0-9m:]+)', \&FormatTime], - ["PoolAllocSum", \&Sum], + ["AllNodesTime", 'CBE-RUN-TIME-ALLNODES: program\s*([.0-9m:]+)'], + ["AN Speedup", \&Ratio], + + ["PoolAllocTime", 'CBE-RUN-TIME-POOLALLOC: program\s*([.0-9m:]+)'], ["PA Speedup", \&Ratio], + ["AP NumPools", '([0-9]+).*Number of pools allocated'], ["AP Typesafe", '([0-9]+).*Number of typesafe pools'], ["NumArgs", '([0-9]+).*Number of function arguments added'], From lattner at cs.uiuc.edu Sat Nov 6 14:34:54 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 14:34:54 -0600 Subject: [llvm-commits] CVS: llvm-test/RunSafelyAndStable.sh Message-ID: <200411062034.iA6KYsuG020119@apoc.cs.uiuc.edu> Changes in directory llvm-test: RunSafelyAndStable.sh added (r1.1) --- Log message: New script which is just like RunSafely.sh, except that it runs the program three times and picks the shortest execution. --- Diffs of the changes: (+107 -0) Index: llvm-test/RunSafelyAndStable.sh diff -c /dev/null llvm-test/RunSafelyAndStable.sh:1.1 *** /dev/null Sat Nov 6 14:34:52 2004 --- llvm-test/RunSafelyAndStable.sh Sat Nov 6 14:34:42 2004 *************** *** 0 **** --- 1,107 ---- + #!/bin/sh + # + # Program: RunSafelyAndStable.sh + # + # Synopsis: This script runs another program three times. If the program works + # correctly, this script has no effect, otherwise it will do things + # like print a stack trace of a core dump. It always returns + # "successful" so that tests will continue to be run. + # + # This script funnels stdout and stderr from the program into the + # first argument specified, and outputs a .time file which + # contains timing information for the fastest of the three runs of the + # program. + # + # Syntax: + # ./RunSafelyAndStable.sh + # + ULIMIT=$1 + INFILE=$2 + OUTFILE=$3 + PROGRAM=$4 + shift 4 + + ulimit -t $ULIMIT + rm -f core core.* + ulimit -c unlimited + # To prevent infinite loops which fill up the disk, specify a limit on size of + # files being output by the tests. 10 MB should be enough for anybody. ;) + ulimit -f 10485760 + + # + # Run the command, timing its execution. + # The standard output and standard error of $PROGRAM should go in $OUTFILE, + # and the standard error of time should go in $OUTFILE.time. + # + # Ah, the joys of shell programming! + # To get the time program and the specified program different output filenames, + # we tell time to launch a shell which in turn executes $PROGRAM with the + # necessary I/O redirection. + # + (time -p sh -c "$PROGRAM $* > $OUTFILE 2>&1 < $INFILE") 2>&1 | awk -- '\ + BEGIN { cpu = 0.0; } + /^real/ { /* IGNORE */; print } + /^user/ { cpu += $2; print } + /^sys/ { cpu += $2; print } + !/^real/ && !/^user/ && !/^sys/ { print } + END { printf("program %f\n", cpu); }' > $OUTFILE.time1 + + if test $? -eq 0 + then + touch $OUTFILE.exitok + fi + + if ls | egrep "^core" > /dev/null + then + # If we are on a sun4u machine (UltraSparc), then the code we're generating + # is 64 bit code. In that case, use gdb-64 instead of gdb. + myarch=`uname -m` + if [ "$myarch" = "sun4u" ] + then + GDB="gdb-64" + else + GDB=gdb + fi + + corefile=`ls core* | head -n 1` + echo "where" > StackTrace.$$ + $GDB -q -batch --command=StackTrace.$$ --core=$corefile $PROGRAM < /dev/null + rm -f StackTrace.$$ $corefile + exit 0 + fi + + TIME1=`grep program $OUTFILE.time1 | sed 's/^program//'` + echo "Program $PROGRAM run #1 time: $TIME1" + + # Do the second and third runs now + + (time -p sh -c "$PROGRAM $* > $OUTFILE 2>&1 < $INFILE") 2>&1 | awk -- '\ + BEGIN { cpu = 0.0; } + /^real/ { /* IGNORE */; print } + /^user/ { cpu += $2; print } + /^sys/ { cpu += $2; print } + !/^real/ && !/^user/ && !/^sys/ { print } + END { printf("program %f\n", cpu); }' > $OUTFILE.time2 + + TIME2=`grep program $OUTFILE.time2 | sed 's/^program//'` + echo "Program $PROGRAM run #2 time: $TIME2" + + (time -p sh -c "$PROGRAM $* > $OUTFILE 2>&1 < $INFILE") 2>&1 | awk -- '\ + BEGIN { cpu = 0.0; } + /^real/ { /* IGNORE */; print } + /^user/ { cpu += $2; print } + /^sys/ { cpu += $2; print } + !/^real/ && !/^user/ && !/^sys/ { print } + END { printf("program %f\n", cpu); }' > $OUTFILE.time3 + + TIME3=`grep program $OUTFILE.time3 | sed 's/^program//'` + echo "Program $PROGRAM run #3 time: $TIME3" + + # Figure out which run had the smallest run time: + SHORTEST=`echo -e "$TIME1 time1\n$TIME2 time2\n$TIME3 time3" | sort | + head -1 | sed "s|.*time||"` + + echo "Program $PROGRAM run #$SHORTEST was fastest" + cp $OUTFILE.time$SHORTEST $OUTFILE.time + + exit 0 From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll BurgBadRegAlloc.ll Message-ID: <200411062038.OAA26121@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/LLC: 2003-07-29-BadConstSbyte.ll updated: 1.1 -> 1.2 BurgBadRegAlloc.ll updated: 1.2 -> 1.3 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+2 -0) Index: llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll diff -u llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll:1.1 llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll:1.2 --- llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll:1.1 Tue Jul 29 09:02:40 2003 +++ llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll Sat Nov 6 14:38:27 2004 @@ -9,6 +9,7 @@ ;; ;; Incorrect LLC Output for the array yy_ec was: ;; yy_ec_1094: +;; XFAIL: darwin ;; .ascii "\000\001\001\001\001\001\001\001\001\002\003\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\002\004\005\001\001\006\a\001\b\t\n\v\f\r\016\017\020\020\020\020\020\020\020\020\020\020\001\021\022\023\024\001\001\025\025\025\025\025\025\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\026\027\030\031\032\001\033\034\035\036\037 !\"#$%&'()*+,-./$0$1$234\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001" ;; Index: llvm/test/Regression/LLC/BurgBadRegAlloc.ll diff -u llvm/test/Regression/LLC/BurgBadRegAlloc.ll:1.2 llvm/test/Regression/LLC/BurgBadRegAlloc.ll:1.3 --- llvm/test/Regression/LLC/BurgBadRegAlloc.ll:1.2 Fri Oct 3 13:24:47 2003 +++ llvm/test/Regression/LLC/BurgBadRegAlloc.ll Sat Nov 6 14:38:27 2004 @@ -6,6 +6,7 @@ ;; -- outgoing args of some function calls have to be swapped, causing ;; another write/read from stack to do the exchange (use -dregalloc=y). ;; +;; XFAIL: darwin %Arity = type %struct.arity* %Binding = type %struct.binding* %DeltaCost = type [4 x short] From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:39 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:39 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/IndVarsSimplify/subtract.ll Message-ID: <200411062038.OAA26113@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/IndVarsSimplify: subtract.ll updated: 1.1 -> 1.2 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+1 -0) Index: llvm/test/Regression/Transforms/IndVarsSimplify/subtract.ll diff -u llvm/test/Regression/Transforms/IndVarsSimplify/subtract.ll:1.1 llvm/test/Regression/Transforms/IndVarsSimplify/subtract.ll:1.2 --- llvm/test/Regression/Transforms/IndVarsSimplify/subtract.ll:1.1 Sun Dec 21 23:24:45 2003 +++ llvm/test/Regression/Transforms/IndVarsSimplify/subtract.ll Sat Nov 6 14:38:27 2004 @@ -1,3 +1,4 @@ +; XFAIL: * ; RUN: llvm-as < %s | opt -indvars | llvm-dis | grep indvar %G = global long 0 From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp Message-ID: <200411062038.OAA26114@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/C++Frontend: 2003-08-28-ForwardType.cpp updated: 1.1 -> 1.2 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+1 -1) Index: llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp diff -u llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp:1.1 llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp:1.1 Thu Aug 28 19:29:55 2003 +++ llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp Sat Nov 6 14:38:27 2004 @@ -1,4 +1,4 @@ - +// XFAIL: darwin,sun // Default placement versions of operator new. inline void* operator new(unsigned, void* __p) throw(); From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/FunctionResolve/2002-11-09-ExternFn.ll 2003-08-23-ArgumentWarning.ll Message-ID: <200411062038.OAA26126@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/FunctionResolve: 2002-11-09-ExternFn.ll updated: 1.4 -> 1.5 2003-08-23-ArgumentWarning.ll updated: 1.2 -> 1.3 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+2 -0) Index: llvm/test/Regression/Transforms/FunctionResolve/2002-11-09-ExternFn.ll diff -u llvm/test/Regression/Transforms/FunctionResolve/2002-11-09-ExternFn.ll:1.4 llvm/test/Regression/Transforms/FunctionResolve/2002-11-09-ExternFn.ll:1.5 --- llvm/test/Regression/Transforms/FunctionResolve/2002-11-09-ExternFn.ll:1.4 Tue Sep 16 10:29:26 2003 +++ llvm/test/Regression/Transforms/FunctionResolve/2002-11-09-ExternFn.ll Sat Nov 6 14:38:27 2004 @@ -1,3 +1,4 @@ +; XFAIL: * ; ; RUN: llvm-as < %s | opt -funcresolve -instcombine | llvm-dis | not grep '\.\.\.' Index: llvm/test/Regression/Transforms/FunctionResolve/2003-08-23-ArgumentWarning.ll diff -u llvm/test/Regression/Transforms/FunctionResolve/2003-08-23-ArgumentWarning.ll:1.2 llvm/test/Regression/Transforms/FunctionResolve/2003-08-23-ArgumentWarning.ll:1.3 --- llvm/test/Regression/Transforms/FunctionResolve/2003-08-23-ArgumentWarning.ll:1.2 Tue Sep 16 10:29:26 2003 +++ llvm/test/Regression/Transforms/FunctionResolve/2003-08-23-ArgumentWarning.ll Sat Nov 6 14:38:27 2004 @@ -1,3 +1,4 @@ +; XFAIL: * ; RUN: llvm-as < %s | opt -funcresolve -disable-output 2>&1 | not grep WARNING declare int %foo(int *%X) From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Assembler/2002-05-02-ParseError.ll 2002-07-08-HugePerformanceProblem.llx Message-ID: <200411062038.OAA26144@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Assembler: 2002-05-02-ParseError.ll updated: 1.4 -> 1.5 2002-07-08-HugePerformanceProblem.llx updated: 1.3 -> 1.4 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+1 -2) Index: llvm/test/Regression/Assembler/2002-05-02-ParseError.ll diff -u llvm/test/Regression/Assembler/2002-05-02-ParseError.ll:1.4 llvm/test/Regression/Assembler/2002-05-02-ParseError.ll:1.5 --- llvm/test/Regression/Assembler/2002-05-02-ParseError.ll:1.4 Wed Feb 25 14:34:02 2004 +++ llvm/test/Regression/Assembler/2002-05-02-ParseError.ll Sat Nov 6 14:38:27 2004 @@ -1,6 +1,6 @@ ; This should parse correctly without an 'implementation', but our current YACC ; based parser doesn't have the required 2 token lookahead... -; XFAIL +; XFAIL: * %T = type int * Index: llvm/test/Regression/Assembler/2002-07-08-HugePerformanceProblem.llx diff -u llvm/test/Regression/Assembler/2002-07-08-HugePerformanceProblem.llx:1.3 llvm/test/Regression/Assembler/2002-07-08-HugePerformanceProblem.llx:1.4 --- llvm/test/Regression/Assembler/2002-07-08-HugePerformanceProblem.llx:1.3 Mon Sep 15 15:01:21 2003 +++ llvm/test/Regression/Assembler/2002-07-08-HugePerformanceProblem.llx Sat Nov 6 14:38:27 2004 @@ -1,6 +1,5 @@ ; This file takes about 48 __MINUTES__ to assemble using as. This is WAY too ; long. The type resolution code needs to be sped up a lot. - ; RUN: ulimit -t 20; llvm-as < %s %ALL_INTERSECTIONS_METHOD = type int (%OBJECT*, %RAY*, %ISTACK*)* From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Analysis/DSGraph/2003-07-16-ConstantExprCollapse.ll incompletenode.ll mustalias.ll Message-ID: <200411062038.OAA26150@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Analysis/DSGraph: 2003-07-16-ConstantExprCollapse.ll updated: 1.1 -> 1.2 incompletenode.ll updated: 1.3 -> 1.4 mustalias.ll updated: 1.3 -> 1.4 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+3 -3) Index: llvm/test/Regression/Analysis/DSGraph/2003-07-16-ConstantExprCollapse.ll diff -u llvm/test/Regression/Analysis/DSGraph/2003-07-16-ConstantExprCollapse.ll:1.1 llvm/test/Regression/Analysis/DSGraph/2003-07-16-ConstantExprCollapse.ll:1.2 --- llvm/test/Regression/Analysis/DSGraph/2003-07-16-ConstantExprCollapse.ll:1.1 Fri Jul 25 16:09:11 2003 +++ llvm/test/Regression/Analysis/DSGraph/2003-07-16-ConstantExprCollapse.ll Sat Nov 6 14:38:27 2004 @@ -1,5 +1,5 @@ ; This should cause the global node to collapse!! -; +; XFAIL: * ; RUN: analyze %s -datastructure-gc --dsgc-check-flags=test:GAU %Tree = type { int, %Tree*, %Tree* } Index: llvm/test/Regression/Analysis/DSGraph/incompletenode.ll diff -u llvm/test/Regression/Analysis/DSGraph/incompletenode.ll:1.3 llvm/test/Regression/Analysis/DSGraph/incompletenode.ll:1.4 --- llvm/test/Regression/Analysis/DSGraph/incompletenode.ll:1.3 Mon Sep 15 14:58:02 2003 +++ llvm/test/Regression/Analysis/DSGraph/incompletenode.ll Sat Nov 6 14:38:27 2004 @@ -1,6 +1,6 @@ ; This test was failing because the globals X and Y are marked incomplete ; in the TD graph for %test - +; XFAIL: * ; RUN: llvm-as < %s | opt -no-aa -ds-aa -load-vn -gcse -instcombine | llvm-dis | not grep seteq %X = internal global int 20 Index: llvm/test/Regression/Analysis/DSGraph/mustalias.ll diff -u llvm/test/Regression/Analysis/DSGraph/mustalias.ll:1.3 llvm/test/Regression/Analysis/DSGraph/mustalias.ll:1.4 --- llvm/test/Regression/Analysis/DSGraph/mustalias.ll:1.3 Mon Sep 15 14:58:02 2003 +++ llvm/test/Regression/Analysis/DSGraph/mustalias.ll Sat Nov 6 14:38:27 2004 @@ -1,5 +1,5 @@ ; Test that ds-aa is returning must-alias information when it can. - +; XFAIL: * ; RUN: llvm-as < %s | opt -no-aa -ds-aa -load-vn -gcse | llvm-dis | not grep load %X = internal global int 20 From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/Mem2Reg/DifferingTypes.ll Message-ID: <200411062038.OAA26175@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/Mem2Reg: DifferingTypes.ll updated: 1.3 -> 1.4 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+1 -1) Index: llvm/test/Regression/Transforms/Mem2Reg/DifferingTypes.ll diff -u llvm/test/Regression/Transforms/Mem2Reg/DifferingTypes.ll:1.3 llvm/test/Regression/Transforms/Mem2Reg/DifferingTypes.ll:1.4 --- llvm/test/Regression/Transforms/Mem2Reg/DifferingTypes.ll:1.3 Tue Sep 16 10:29:41 2003 +++ llvm/test/Regression/Transforms/Mem2Reg/DifferingTypes.ll Sat Nov 6 14:38:27 2004 @@ -1,7 +1,7 @@ ; This is a feature test. Hopefully one day this will be implemented. The ; generated code should perform the appropriate masking operations required ; depending on the endianness of the target... - +; XFAIL: * ; RUN: llvm-as < %s | opt -mem2reg | llvm-dis | not grep 'alloca' implementation From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll Message-ID: <200411062038.OAA26177@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/TailCallElim: tail_call_with_branch.ll updated: 1.1 -> 1.2 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+1 -1) Index: llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll diff -u llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll:1.1 llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll:1.2 --- llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll:1.1 Tue Dec 9 10:26:42 2003 +++ llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll Sat Nov 6 14:38:27 2004 @@ -1,7 +1,7 @@ ; This testcase is due to tail-duplication not wanting to copy the return ; instruction into the terminating blocks because there was other code ; optimized out of the function after the taildup happened. - +; XFAIL: linux,sun,darwin ; RUN: llvm-as < %s | opt -tailcallelim | llvm-dis | not grep call int %t4(int %a) { From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c 2003-02-12-NonlocalGoto.c 2003-06-29-MultipleFunctionDefinition.c 2003-08-30-AggregateInitializer.c 2003-08-30-LargeIntegerBitfieldMember.c 2004-01-01-UnknownInitSize.c 2004-02-13-StringInit.c.tr 2004-02-20-StaticRedeclare.c.tr 2004-03-07-BitfieldCrash.c Message-ID: <200411062038.OAA26176@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CFrontend: 2003-01-30-UnionInit.c updated: 1.1 -> 1.2 2003-02-12-NonlocalGoto.c updated: 1.2 -> 1.3 2003-06-29-MultipleFunctionDefinition.c updated: 1.2 -> 1.3 2003-08-30-AggregateInitializer.c updated: 1.1 -> 1.2 2003-08-30-LargeIntegerBitfieldMember.c updated: 1.1 -> 1.2 2004-01-01-UnknownInitSize.c updated: 1.1 -> 1.2 2004-02-13-StringInit.c.tr updated: 1.1 -> 1.2 2004-02-20-StaticRedeclare.c.tr updated: 1.1 -> 1.2 2004-03-07-BitfieldCrash.c updated: 1.1 -> 1.2 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+12 -7) Index: llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c diff -u llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c:1.1 llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c:1.2 --- llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c:1.1 Thu Jan 30 11:34:04 2003 +++ llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c Sat Nov 6 14:38:27 2004 @@ -1,4 +1,4 @@ - +// XFAIL: linux,sun,darwin union foo { struct { char A, B; } X; Index: llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c diff -u llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c:1.2 llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c:1.3 --- llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c:1.2 Fri Apr 25 13:44:30 2003 +++ llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c Sat Nov 6 14:38:27 2004 @@ -1,4 +1,4 @@ - +// XFAIL: * /* It is unlikely that LLVM will ever support nested functions, but if it does, here is a testcase. */ Index: llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c diff -u llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c:1.2 llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c:1.3 --- llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c:1.2 Mon Jun 30 10:33:47 2003 +++ llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c Sat Nov 6 14:38:27 2004 @@ -1,4 +1,5 @@ -/* This is apparently legal C. */ +/* This is apparently legal C. + */ extern __inline__ void test() { } void test() { Index: llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c diff -u llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c:1.1 llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c:1.1 Sat Aug 30 15:57:49 2003 +++ llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c Sat Nov 6 14:38:27 2004 @@ -1,4 +1,4 @@ - +// XFAIL: linux,sun,darwin struct istruct { unsigned char C; }; Index: llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c diff -u llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c:1.1 llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c:1.1 Sat Aug 30 16:00:36 2003 +++ llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c Sat Nov 6 14:38:27 2004 @@ -1,4 +1,3 @@ - struct foo { unsigned int I:1; unsigned char J[1][123]; Index: llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c diff -u llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c:1.1 llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c:1.2 --- llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c:1.1 Thu Jan 1 17:58:07 2004 +++ llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c Sat Nov 6 14:38:27 2004 @@ -1,7 +1,8 @@ /* * This regression test ensures that the C front end can compile initializers * even when it cannot determine the size (as below). - */ + * XFAIL: linux,darwin +*/ struct one { int a; Index: llvm/test/Regression/CFrontend/2004-02-13-StringInit.c.tr diff -u llvm/test/Regression/CFrontend/2004-02-13-StringInit.c.tr:1.1 llvm/test/Regression/CFrontend/2004-02-13-StringInit.c.tr:1.2 --- llvm/test/Regression/CFrontend/2004-02-13-StringInit.c.tr:1.1 Fri Feb 13 22:26:15 2004 +++ llvm/test/Regression/CFrontend/2004-02-13-StringInit.c.tr Sat Nov 6 14:38:27 2004 @@ -1,3 +1,4 @@ +// XFAIL: * // RUN: %llvmgcc -xc %s -c -o - | llvm-dis | grep llvm.memset char test(int X) { Index: llvm/test/Regression/CFrontend/2004-02-20-StaticRedeclare.c.tr diff -u llvm/test/Regression/CFrontend/2004-02-20-StaticRedeclare.c.tr:1.1 llvm/test/Regression/CFrontend/2004-02-20-StaticRedeclare.c.tr:1.2 --- llvm/test/Regression/CFrontend/2004-02-20-StaticRedeclare.c.tr:1.1 Fri Feb 20 11:32:24 2004 +++ llvm/test/Regression/CFrontend/2004-02-20-StaticRedeclare.c.tr Sat Nov 6 14:38:27 2004 @@ -1,3 +1,4 @@ +// XFAIL: * // RUN: %llvmgcc -xc %s -c -o - | llvm-dis | not grep declare int one (int a) { Index: llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c diff -u llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c:1.1 llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c:1.2 --- llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c:1.1 Sun Mar 7 23:35:12 2004 +++ llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c Sat Nov 6 14:38:27 2004 @@ -1,4 +1,6 @@ - +/* + * XFAIL: linux + */ struct s { unsigned long long u33: 33; unsigned long long u40: 40; From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/2003-08-03-ReservedWordFunction.llx Message-ID: <200411062038.OAA26195@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/X86: 2003-08-03-ReservedWordFunction.llx updated: 1.1 -> 1.2 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+1 -1) Index: llvm/test/Regression/CodeGen/X86/2003-08-03-ReservedWordFunction.llx diff -u llvm/test/Regression/CodeGen/X86/2003-08-03-ReservedWordFunction.llx:1.1 llvm/test/Regression/CodeGen/X86/2003-08-03-ReservedWordFunction.llx:1.2 --- llvm/test/Regression/CodeGen/X86/2003-08-03-ReservedWordFunction.llx:1.1 Mon Feb 9 16:52:25 2004 +++ llvm/test/Regression/CodeGen/X86/2003-08-03-ReservedWordFunction.llx Sat Nov 6 14:38:27 2004 @@ -1,6 +1,6 @@ ; This testcase ensures the code emitter does something about the fact that ; we can have collisions with keywords - +; XFAIL: linux,sun ; RUN: llvm-as < %s | llc | not grep '^byte:' void %byte() { From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LevelRaise/2002-02-11-ArrayShape.ll 2002-03-21-MissedRaise.ll 2002-03-21-MissedRaise2.ll 2002-03-21-MissedRaise3.ll 2002-04-16-MissedRaise.ll 2002-05-02-MissedRaise.ll 2002-05-23-MissedRaise.ll 2002-07-16-MissedRaise.ll 2002-07-18-MissedAllocaRaise.ll Message-ID: <200411062038.OAA26174@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/LevelRaise: 2002-02-11-ArrayShape.ll updated: 1.5 -> 1.6 2002-03-21-MissedRaise.ll updated: 1.4 -> 1.5 2002-03-21-MissedRaise2.ll updated: 1.5 -> 1.6 2002-03-21-MissedRaise3.ll updated: 1.3 -> 1.4 2002-04-16-MissedRaise.ll updated: 1.3 -> 1.4 2002-05-02-MissedRaise.ll updated: 1.4 -> 1.5 2002-05-23-MissedRaise.ll updated: 1.5 -> 1.6 2002-07-16-MissedRaise.ll updated: 1.4 -> 1.5 2002-07-18-MissedAllocaRaise.ll updated: 1.3 -> 1.4 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+9 -5) Index: llvm/test/Regression/Transforms/LevelRaise/2002-02-11-ArrayShape.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-02-11-ArrayShape.ll:1.5 llvm/test/Regression/Transforms/LevelRaise/2002-02-11-ArrayShape.ll:1.6 --- llvm/test/Regression/Transforms/LevelRaise/2002-02-11-ArrayShape.ll:1.5 Tue Sep 16 10:34:36 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-02-11-ArrayShape.ll Sat Nov 6 14:38:27 2004 @@ -17,6 +17,7 @@ ; The fix is to have the -raise pass correctly convert it to the second ; equivelent form. ; +; XFAIL: * ; RUN: llvm-as < %s | opt -q -raise > Output/%s.raised.bc ; RUN: lli -force-interpreter -array-checks < Output/%s.raised.bc ; Index: llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll:1.4 llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll:1.5 --- llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll:1.4 Tue Sep 16 10:29:36 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll Sat Nov 6 14:38:27 2004 @@ -1,7 +1,7 @@ ; This example should be raised to return a Hash directly without casting. To ; successful, all cast instructions should be eliminated from this testcase. ; - +; XFAIL: * ; RUN: llvm-as < %s | opt -raise | llvm-dis | not grep cast %Hash = type { { uint, sbyte *, \2 } * *, int (uint) *, int } * Index: llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise2.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise2.ll:1.5 llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise2.ll:1.6 --- llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise2.ll:1.5 Tue Sep 16 10:29:36 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise2.ll Sat Nov 6 14:38:27 2004 @@ -2,7 +2,7 @@ ; instructions to change type if they were 'array' allocations. This ; prevented reg115 from being able to change. ; - +; XFAIL: * ; RUN: llvm-as < %s | opt -raise | llvm-dis | grep '= cast' | not grep \* %Hash = type { { uint, sbyte *, \2 } * *, int (uint) *, int } * Index: llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise3.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise3.ll:1.3 llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise3.ll:1.4 --- llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise3.ll:1.3 Tue Sep 16 10:29:36 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise3.ll Sat Nov 6 14:38:27 2004 @@ -1,3 +1,4 @@ +; XFAIL: * ; RUN: llvm-as < %s | opt -raise | llvm-dis | grep '= cast' | not grep \* %Hash = type { { uint, sbyte *, \2 } * *, int (uint) *, int } * Index: llvm/test/Regression/Transforms/LevelRaise/2002-04-16-MissedRaise.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-04-16-MissedRaise.ll:1.3 llvm/test/Regression/Transforms/LevelRaise/2002-04-16-MissedRaise.ll:1.4 --- llvm/test/Regression/Transforms/LevelRaise/2002-04-16-MissedRaise.ll:1.3 Tue Sep 16 10:29:36 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-04-16-MissedRaise.ll Sat Nov 6 14:38:27 2004 @@ -1,3 +1,4 @@ +; XFAIL: * ; this testcase is distilled from this C source: ; int *foo(unsigned N, unsigned M) { ; unsigned i = (N+1)*sizeof(int); Index: llvm/test/Regression/Transforms/LevelRaise/2002-05-02-MissedRaise.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-05-02-MissedRaise.ll:1.4 llvm/test/Regression/Transforms/LevelRaise/2002-05-02-MissedRaise.ll:1.5 --- llvm/test/Regression/Transforms/LevelRaise/2002-05-02-MissedRaise.ll:1.4 Tue Sep 16 10:29:36 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-05-02-MissedRaise.ll Sat Nov 6 14:38:27 2004 @@ -1,5 +1,5 @@ ; This testcase is not level raised properly... -; +; XFAIL: * ; RUN: llvm-as < %s | opt -raise | llvm-dis | grep ' cast ' | not grep '*' %List = type { int, %List* } Index: llvm/test/Regression/Transforms/LevelRaise/2002-05-23-MissedRaise.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-05-23-MissedRaise.ll:1.5 llvm/test/Regression/Transforms/LevelRaise/2002-05-23-MissedRaise.ll:1.6 --- llvm/test/Regression/Transforms/LevelRaise/2002-05-23-MissedRaise.ll:1.5 Tue Sep 16 10:29:36 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-05-23-MissedRaise.ll Sat Nov 6 14:38:27 2004 @@ -1,3 +1,4 @@ +; XFAIL: * ; RUN: llvm-as < %s | opt -raise | llvm-dis | grep '= cast' | not grep \* %FILE = type { int, ubyte*, ubyte*, ubyte, ubyte, uint, uint, uint } Index: llvm/test/Regression/Transforms/LevelRaise/2002-07-16-MissedRaise.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-07-16-MissedRaise.ll:1.4 llvm/test/Regression/Transforms/LevelRaise/2002-07-16-MissedRaise.ll:1.5 --- llvm/test/Regression/Transforms/LevelRaise/2002-07-16-MissedRaise.ll:1.4 Tue Sep 16 10:29:36 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-07-16-MissedRaise.ll Sat Nov 6 14:38:27 2004 @@ -4,7 +4,7 @@ ; ; This could be fixed by making all stores add themselves to a list, and check ; their arguments are consistent AFTER all other values are propogated. - +; XFAIL: * ; RUN: llvm-as < %s | opt -raise | llvm-dis | not grep '= cast' %Tree = type %struct.tree* Index: llvm/test/Regression/Transforms/LevelRaise/2002-07-18-MissedAllocaRaise.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-07-18-MissedAllocaRaise.ll:1.3 llvm/test/Regression/Transforms/LevelRaise/2002-07-18-MissedAllocaRaise.ll:1.4 --- llvm/test/Regression/Transforms/LevelRaise/2002-07-18-MissedAllocaRaise.ll:1.3 Tue Sep 16 10:29:37 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-07-18-MissedAllocaRaise.ll Sat Nov 6 14:38:27 2004 @@ -1,5 +1,5 @@ ; Looks like we don't raise alloca's like we do mallocs -; +; XFAIL: * ; RUN: llvm-as < %s | opt -raise | llvm-dis | grep '= cast' | not grep \* implementation ; Functions: From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/CorrelatedExprs/looptest.ll nullpointer.ll Message-ID: <200411062038.OAA26184@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/CorrelatedExprs: looptest.ll updated: 1.3 -> 1.4 nullpointer.ll updated: 1.4 -> 1.5 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+3 -1) Index: llvm/test/Regression/Transforms/CorrelatedExprs/looptest.ll diff -u llvm/test/Regression/Transforms/CorrelatedExprs/looptest.ll:1.3 llvm/test/Regression/Transforms/CorrelatedExprs/looptest.ll:1.4 --- llvm/test/Regression/Transforms/CorrelatedExprs/looptest.ll:1.3 Tue Sep 16 10:29:23 2003 +++ llvm/test/Regression/Transforms/CorrelatedExprs/looptest.ll Sat Nov 6 14:38:27 2004 @@ -11,6 +11,7 @@ ; ; Note that this is a "feature" test, not a correctness test. ; +; XFAIL: * ; RUN: llvm-as < %s | opt -cee -simplifycfg | llvm-dis | not grep cond213 ; implementation ; Functions: Index: llvm/test/Regression/Transforms/CorrelatedExprs/nullpointer.ll diff -u llvm/test/Regression/Transforms/CorrelatedExprs/nullpointer.ll:1.4 llvm/test/Regression/Transforms/CorrelatedExprs/nullpointer.ll:1.5 --- llvm/test/Regression/Transforms/CorrelatedExprs/nullpointer.ll:1.4 Thu May 27 02:37:45 2004 +++ llvm/test/Regression/Transforms/CorrelatedExprs/nullpointer.ll Sat Nov 6 14:38:27 2004 @@ -1,6 +1,7 @@ ; a load or store of a pointer indicates that the pointer is not null. ; Any succeeding uses of the pointer should get this info - +; +; XFAIL: * ; RUN: llvm-as < %s | opt -cee -instcombine -simplifycfg | llvm-dis | not grep br implementation ; Functions: From tbrethou at cs.uiuc.edu Sat Nov 6 14:38:40 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 14:38:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/InstCombine/bit-tracking.ll pow.ll Message-ID: <200411062038.OAA26168@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/InstCombine: bit-tracking.ll updated: 1.2 -> 1.3 pow.ll updated: 1.5 -> 1.6 --- Log message: Adding XFAIL lines for dejagnu support. --- Diffs of the changes: (+2 -2) Index: llvm/test/Regression/Transforms/InstCombine/bit-tracking.ll diff -u llvm/test/Regression/Transforms/InstCombine/bit-tracking.ll:1.2 llvm/test/Regression/Transforms/InstCombine/bit-tracking.ll:1.3 --- llvm/test/Regression/Transforms/InstCombine/bit-tracking.ll:1.2 Sun Nov 2 23:42:50 2003 +++ llvm/test/Regression/Transforms/InstCombine/bit-tracking.ll Sat Nov 6 14:38:27 2004 @@ -1,6 +1,6 @@ ; This file contains various testcases that require tracking whether bits are ; set or cleared by various instructions. - +; XFAIL: * ; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep %ELIM ; test1 - Eliminating the casts in this testcase (by narrowing the AND Index: llvm/test/Regression/Transforms/InstCombine/pow.ll diff -u llvm/test/Regression/Transforms/InstCombine/pow.ll:1.5 llvm/test/Regression/Transforms/InstCombine/pow.ll:1.6 --- llvm/test/Regression/Transforms/InstCombine/pow.ll:1.5 Tue Sep 16 10:29:34 2003 +++ llvm/test/Regression/Transforms/InstCombine/pow.ll Sat Nov 6 14:38:27 2004 @@ -1,7 +1,7 @@ ; Testcase for calls to the standard C "pow" function ; ; Equivalent to: http://gcc.gnu.org/ml/gcc-patches/2003-02/msg01786.html - +; XFAIL: * ; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep 'call double %pow' declare double %pow(double, double) From lattner at cs.uiuc.edu Sat Nov 6 14:41:11 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 14:41:11 -0600 Subject: [llvm-commits] CVS: llvm-test/Makefile.programs Message-ID: <200411062041.iA6KfBSd021509@apoc.cs.uiuc.edu> Changes in directory llvm-test: Makefile.programs updated: 1.139 -> 1.140 --- Log message: If GET_STABLE_NUMBERS is set, get stable numbers :) --- Diffs of the changes: (+4 -0) Index: llvm-test/Makefile.programs diff -u llvm-test/Makefile.programs:1.139 llvm-test/Makefile.programs:1.140 --- llvm-test/Makefile.programs:1.139 Sat Oct 16 13:26:56 2004 +++ llvm-test/Makefile.programs Sat Nov 6 14:40:57 2004 @@ -77,7 +77,11 @@ # correctly, this script has no effect, otherwise it will do things like print a # stack trace of a core dump. It always returns "successful" so that tests will # continue to be run. +ifndef GET_STABLE_NUMBERS RUNSAFELY := $(PROGDIR)/RunSafely.sh $(RUNTIMELIMIT) +else +RUNSAFELY := $(PROGDIR)/RunSafelyAndStable.sh $(RUNTIMELIMIT) +endif ifndef STDIN_FILENAME STDIN_FILENAME := /dev/null From lattner at cs.uiuc.edu Sat Nov 6 14:50:30 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 14:50:30 -0600 Subject: [llvm-commits] CVS: poolalloc/test/TEST.poolalloc.report Message-ID: <200411062050.iA6KoUQ2021742@apoc.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.poolalloc.report updated: 1.18 -> 1.19 --- Log message: Vikram wants % runtime, not speedup ratio --- Diffs of the changes: (+5 -13) Index: poolalloc/test/TEST.poolalloc.report diff -u poolalloc/test/TEST.poolalloc.report:1.18 poolalloc/test/TEST.poolalloc.report:1.19 --- poolalloc/test/TEST.poolalloc.report:1.18 Sat Nov 6 13:48:11 2004 +++ poolalloc/test/TEST.poolalloc.report Sat Nov 6 14:50:20 2004 @@ -8,24 +8,16 @@ $SortCol = 0; $TrimRepeatedPrefix = 1; -sub Ratio { +sub RuntimePercent { my ($Cols, $Col) = @_; if ($Cols->[$Col-1] ne "*" and $Cols->[3] ne "*" and $Cols->[$Col-1] != "0") { - return sprintf "%1.3f", $Cols->[3]/$Cols->[$Col-1]; + return sprintf "%7.2f", 100*$Cols->[$Col-1]/$Cols->[3]; } else { return "n/a"; } } -sub FormatTime { - my $Time = shift; - if ($Time =~ m/([0-9]+)[m:]([0-9.]+)/) { - $Time = sprintf("%7.3f", $1*60.0+$2); - } - return $Time; -} - @LatexColumns = (1, 5, 8, 12, 9, 13, 14, 15, 2, 16); my $OLDEN = 'MultiSource/Benchmarks/Olden'; @@ -66,13 +58,13 @@ ["NormalTime", 'CBE-RUN-TIME-NORMAL: program\s*([.0-9m:]+)'], ["OnlyOHTime", 'CBE-RUN-TIME-ONLYOVERHEAD: program\s*([.0-9m:]+)'], - ["OO Speedup", \&Ratio], + ["OO run%", \&RuntimePercent], ["AllNodesTime", 'CBE-RUN-TIME-ALLNODES: program\s*([.0-9m:]+)'], - ["AN Speedup", \&Ratio], + ["AN run%", \&RuntimePercent], ["PoolAllocTime", 'CBE-RUN-TIME-POOLALLOC: program\s*([.0-9m:]+)'], - ["PA Speedup", \&Ratio], + ["PA run%", \&RuntimePercent], ["AP NumPools", '([0-9]+).*Number of pools allocated'], ["AP Typesafe", '([0-9]+).*Number of typesafe pools'], From lattner at cs.uiuc.edu Sat Nov 6 15:01:09 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:01:09 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Analysis/Andersens/basictest.ll Message-ID: <200411062101.iA6L19qq026637@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Analysis/Andersens: basictest.ll updated: 1.1 -> 1.2 --- Log message: Add a missing run line --- Diffs of the changes: (+1 -0) Index: llvm/test/Regression/Analysis/Andersens/basictest.ll diff -u llvm/test/Regression/Analysis/Andersens/basictest.ll:1.1 llvm/test/Regression/Analysis/Andersens/basictest.ll:1.2 --- llvm/test/Regression/Analysis/Andersens/basictest.ll:1.1 Sun May 23 16:31:00 2004 +++ llvm/test/Regression/Analysis/Andersens/basictest.ll Sat Nov 6 15:00:57 2004 @@ -1,3 +1,4 @@ +; RUN: llvm-as < %s | opt -anders-aa -aa-eval implementation From lattner at cs.uiuc.edu Sat Nov 6 15:01:57 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:01:57 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Analysis/DSGraph/HardBUCase.ll Message-ID: <200411062101.iA6L1v4A026677@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Analysis/DSGraph: HardBUCase.ll updated: 1.1 -> 1.2 --- Log message: Add missing run line --- Diffs of the changes: (+1 -0) Index: llvm/test/Regression/Analysis/DSGraph/HardBUCase.ll diff -u llvm/test/Regression/Analysis/DSGraph/HardBUCase.ll:1.1 llvm/test/Regression/Analysis/DSGraph/HardBUCase.ll:1.2 --- llvm/test/Regression/Analysis/DSGraph/HardBUCase.ll:1.1 Wed Jul 23 15:48:03 2003 +++ llvm/test/Regression/Analysis/DSGraph/HardBUCase.ll Sat Nov 6 15:01:45 2004 @@ -1,3 +1,4 @@ +; RUN: analyze %s -budatastructure -dont-print-ds %MidFnTy = type void (\2*) From tbrethou at cs.uiuc.edu Sat Nov 6 15:02:39 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 15:02:39 -0600 Subject: [llvm-commits] CVS: llvm/test/QMTest/llvmdb.py Message-ID: <200411062102.PAA26637@zion.cs.uiuc.edu> Changes in directory llvm/test/QMTest: llvmdb.py updated: 1.13 -> 1.14 --- Log message: Adding Output, lib, dg.exp, and site.exp as invalid directories/files. --- Diffs of the changes: (+2 -3) Index: llvm/test/QMTest/llvmdb.py diff -u llvm/test/QMTest/llvmdb.py:1.13 llvm/test/QMTest/llvmdb.py:1.14 --- llvm/test/QMTest/llvmdb.py:1.13 Thu Aug 5 14:00:53 2004 +++ llvm/test/QMTest/llvmdb.py Sat Nov 6 15:02:29 2004 @@ -164,10 +164,9 @@ # # Record names of invalid directories and files. # - invalid_dirs = ['CVS', 'QMTest', 'QMTestDB', 'Scripts', 'Programs', - 'Fragments', 'Reoptimizer', 'Debugger', 'tmp'] + invalid_dirs = ['lib', 'Output', 'CVS', 'QMTest', 'QMTestDB', 'Scripts', 'Programs','Fragments', 'Reoptimizer', 'Debugger', 'tmp'] - invalid_files = ['Makefile', 'README.txt', '.cvsignore', 'opaquetypes.ll', 'constexpr.ll.bc-13' ] + invalid_files = ['Makefile', 'README.txt', '.cvsignore', 'opaquetypes.ll', 'constexpr.ll.bc-13','dg.exp','site.exp' ] # # Start with an empty list of files and directories. From lattner at cs.uiuc.edu Sat Nov 6 15:02:40 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:02:40 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/PiNodeInserter/substitutetest.ll test.ll Message-ID: <200411062102.iA6L2eqx026750@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/PiNodeInserter: substitutetest.ll (r1.3) removed test.ll (r1.1) removed --- Log message: This pass has been removed from LLVM --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Sat Nov 6 15:03:54 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:03:54 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LevelRaise/2002-11-04-ConstantSharing.ll Message-ID: <200411062103.iA6L3sf1026834@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/LevelRaise: 2002-11-04-ConstantSharing.ll updated: 1.1 -> 1.2 --- Log message: Add a missing run line --- Diffs of the changes: (+1 -0) Index: llvm/test/Regression/Transforms/LevelRaise/2002-11-04-ConstantSharing.ll diff -u llvm/test/Regression/Transforms/LevelRaise/2002-11-04-ConstantSharing.ll:1.1 llvm/test/Regression/Transforms/LevelRaise/2002-11-04-ConstantSharing.ll:1.2 --- llvm/test/Regression/Transforms/LevelRaise/2002-11-04-ConstantSharing.ll:1.1 Sun May 11 17:46:23 2003 +++ llvm/test/Regression/Transforms/LevelRaise/2002-11-04-ConstantSharing.ll Sat Nov 6 15:03:41 2004 @@ -1,3 +1,4 @@ +; RUN: llvm-as < 2002-11-04-ConstantSharing.ll | opt -raise | llvm-dis | not grep cast implementation From tbrethou at cs.uiuc.edu Sat Nov 6 15:06:05 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 15:06:05 -0600 Subject: [llvm-commits] CVS: llvm/test/lib/ Message-ID: <200411062106.PAA26735@zion.cs.uiuc.edu> Changes in directory llvm/test/lib: --- Log message: Directory /home/vadve/shared/PublicCVS/llvm/test/lib added to the repository --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Sat Nov 6 15:07:45 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:07:45 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Debugger/funccall.ll Message-ID: <200411062107.iA6L7jIq028880@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Debugger: funccall.ll updated: 1.2 -> 1.3 --- Log message: Add a run line --- Diffs of the changes: (+4 -0) Index: llvm/test/Regression/Debugger/funccall.ll diff -u llvm/test/Regression/Debugger/funccall.ll:1.2 llvm/test/Regression/Debugger/funccall.ll:1.3 --- llvm/test/Regression/Debugger/funccall.ll:1.2 Mon Jan 5 23:37:45 2004 +++ llvm/test/Regression/Debugger/funccall.ll Sat Nov 6 15:07:31 2004 @@ -1,3 +1,7 @@ +;; RUN: llvm-as -f %s -o %s.bc +;; RUN: echo -e "create\ns\ns\nfinish\nbt\nq\ny" | llvm-db %s.bc + + ;; Debugger type declarations %lldb.compile_unit = type { uint, ushort, ushort, sbyte*, sbyte*, sbyte*, {}* } %lldb.global = type { uint, %lldb.compile_unit*, sbyte*, {}*, sbyte*, bool, bool } From tbrethou at cs.uiuc.edu Sat Nov 6 15:07:52 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 15:07:52 -0600 Subject: [llvm-commits] CVS: llvm/test/lib/llvm-dg.exp Message-ID: <200411062107.PAA26856@zion.cs.uiuc.edu> Changes in directory llvm/test/lib: llvm-dg.exp added (r1.1) --- Log message: First crack at support to run tests using dejagnu. This file contains a procedure to run a test like TestRunner.sh does. --- Diffs of the changes: (+103 -0) Index: llvm/test/lib/llvm-dg.exp diff -c /dev/null llvm/test/lib/llvm-dg.exp:1.1 *** /dev/null Sat Nov 6 15:07:51 2004 --- llvm/test/lib/llvm-dg.exp Sat Nov 6 15:07:41 2004 *************** *** 0 **** --- 1,103 ---- + proc llvm-runtest { programs srcdir subdir target_triplet} { + + set path [file join $srcdir $subdir] + + #Make Output Directory if it does not exist already + cd $path + + file mkdir Output + + foreach test $programs { + + set timeout 40 + set filename [file tail $test] + set output [file join Output $filename.out] + set script $output.script + set outcome PASS + set tmpFile testscript. + append tmpFile $filename .tmp + + #set hasRunline bool to check if testcase has a runline + set hasRunline 0 + + #check if script files exists, and delete if it does + if { [file exists $script] } { + file delete $script + } + + #create script file and write run line out to it + set scriptFileId [open $script w 0700] + set testFileId [ open $test r] + foreach line [split [read $testFileId] \n] { + + #see if this is our run line + if {[regexp {RUN:(.+)} $line match runline]} { + set runline + set hasRunline 1 + + #replace %s with filename + regsub -all {%s} $runline $filename new_runline + + regsub -all {%t} $new_runline [file join Output $tmpFile] new_runline + + puts $scriptFileId $new_runline + } elseif {[regexp {XFAIL:[ *](.+)} $line match targets]} { + set targets + + + #split up target if more then 1 specified + foreach target [split $targets ,] { + if { [regexp {\*} $target match] } { + set outcome XFAIL + } elseif { [regexp $target $target_triplet match] } { + set outcome XFAIL + } + + } + } + + } + + close $testFileId + close $scriptFileId + + + if { $hasRunline == 0 } { + fail "$test: \nDoes not have a RUN line\n" + } else { + + #run script and catch errors + set retval [ catch {exec /bin/sh $script >& $output} ] + + if { $retval == 1 } { + #Get output + set outputFile [open $output {RDONLY}] + set result [read $outputFile] + close $outputFile + file delete $outputFile + + switch $outcome { + PASS { + file delete $output + fail "$test: \n$result" + } + XFAIL { + xfail "$test: \n$result" + } + default { + file delete $output + fail "$test: $result" + } + } + } else { + switch $outcome { + XFAIL { + xpass "$test" + } + default { + pass "$test"} + } + } + } + } + } \ No newline at end of file From tbrethou at cs.uiuc.edu Sat Nov 6 15:09:38 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 15:09:38 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/dg.exp Message-ID: <200411062109.PAA27452@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression: dg.exp added (r1.1) --- Log message: First crack at dejagnu support. This file contains a procedure that will loop over all subdirectories and call llvm-runtest on all .ll files. This allows you to add a new subdirectory without having to create a .exp file for it. --- Diffs of the changes: (+26 -0) Index: llvm/test/Regression/dg.exp diff -c /dev/null llvm/test/Regression/dg.exp:1.1 *** /dev/null Sat Nov 6 15:09:38 2004 --- llvm/test/Regression/dg.exp Sat Nov 6 15:09:28 2004 *************** *** 0 **** --- 1,26 ---- + load_lib llvm-dg.exp + + #Recurse through all subdirectories without having to add to a .exp to each subdir + proc regression-runtest { directories srcdir subdir target_triplet} { + + foreach dir $directories { + + #skip Output and CVS directories + if { [string match "Output" $dir] || [string match "CVS" $dir] } { + continue + } else { + + set new_srcdir [file join $srcdir $subdir] + + set new_subdir $dir + cd [file join $new_srcdir/$new_subdir] + regression-runtest [lsort [glob -nocomplain -types {d} *]] $new_srcdir $new_subdir $target_triplet + } + } + + llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.ll]] $srcdir $subdir $target_triplet + } + + + cd [file join $srcdir/$subdir] + regression-runtest [lsort [glob -nocomplain -types {d} *]] $srcdir $subdir $target_triplet From lattner at cs.uiuc.edu Sat Nov 6 15:10:00 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:10:00 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/PowerPC/rlwimi.ll Message-ID: <200411062110.iA6LA0dr029000@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/PowerPC: rlwimi.ll updated: 1.1 -> 1.2 --- Log message: Add missing run line --- Diffs of the changes: (+2 -2) Index: llvm/test/Regression/CodeGen/PowerPC/rlwimi.ll diff -u llvm/test/Regression/CodeGen/PowerPC/rlwimi.ll:1.1 llvm/test/Regression/CodeGen/PowerPC/rlwimi.ll:1.2 --- llvm/test/Regression/CodeGen/PowerPC/rlwimi.ll:1.1 Sun Oct 24 05:30:22 2004 +++ llvm/test/Regression/CodeGen/PowerPC/rlwimi.ll Sat Nov 6 15:09:46 2004 @@ -1,5 +1,5 @@ -target endian = big -target pointersize = 32 +; All of these ands and shifts should be folded into rlwimi's +; RUN: llvm-as < rlwimi.ll | llc -march=ppc32 | not grep and implementation ; Functions: From lattner at cs.uiuc.edu Sat Nov 6 15:11:18 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:11:18 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/Generic/GC/alloc_loop.ll Message-ID: <200411062111.iA6LBIYe029219@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/Generic/GC: alloc_loop.ll updated: 1.3 -> 1.4 --- Log message: Add missing run line --- Diffs of the changes: (+2 -0) Index: llvm/test/Regression/CodeGen/Generic/GC/alloc_loop.ll diff -u llvm/test/Regression/CodeGen/Generic/GC/alloc_loop.ll:1.3 llvm/test/Regression/CodeGen/Generic/GC/alloc_loop.ll:1.4 --- llvm/test/Regression/CodeGen/Generic/GC/alloc_loop.ll:1.3 Thu Jul 22 00:48:38 2004 +++ llvm/test/Regression/CodeGen/Generic/GC/alloc_loop.ll Sat Nov 6 15:11:04 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + implementation declare sbyte* %llvm_gc_allocate(uint) From lattner at cs.uiuc.edu Sat Nov 6 15:25:28 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:25:28 -0600 Subject: [llvm-commits] CVS: poolalloc/test/TEST.poolalloc.report Message-ID: <200411062125.iA6LPSdY029478@apoc.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.poolalloc.report updated: 1.19 -> 1.20 --- Log message: Remember, only 'legal' divisions by zero are allowed, not illegal ones. Thanks perl --- Diffs of the changes: (+1 -1) Index: poolalloc/test/TEST.poolalloc.report diff -u poolalloc/test/TEST.poolalloc.report:1.19 poolalloc/test/TEST.poolalloc.report:1.20 --- poolalloc/test/TEST.poolalloc.report:1.19 Sat Nov 6 14:50:20 2004 +++ poolalloc/test/TEST.poolalloc.report Sat Nov 6 15:25:18 2004 @@ -11,7 +11,7 @@ sub RuntimePercent { my ($Cols, $Col) = @_; if ($Cols->[$Col-1] ne "*" and $Cols->[3] ne "*" and - $Cols->[$Col-1] != "0") { + $Cols->[3] != "0") { return sprintf "%7.2f", 100*$Cols->[$Col-1]/$Cols->[3]; } else { return "n/a"; From lattner at cs.uiuc.edu Sat Nov 6 15:34:49 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:34:49 -0600 Subject: [llvm-commits] CVS: llvm-test/TEST.nightly.Makefile TEST.nightly.report Message-ID: <200411062134.iA6LYnob030743@apoc.cs.uiuc.edu> Changes in directory llvm-test: TEST.nightly.Makefile updated: 1.33 -> 1.34 TEST.nightly.report updated: 1.27 -> 1.28 --- Log message: Make the nightly tester use user+system time, NOT 'real' time. This should provide substantially more stable numbers. --- Diffs of the changes: (+12 -12) Index: llvm-test/TEST.nightly.Makefile diff -u llvm-test/TEST.nightly.Makefile:1.33 llvm-test/TEST.nightly.Makefile:1.34 --- llvm-test/TEST.nightly.Makefile:1.33 Sun Sep 5 02:56:51 2004 +++ llvm-test/TEST.nightly.Makefile Sat Nov 6 15:34:36 2004 @@ -52,7 +52,7 @@ Output/%.nightly.nat.report.txt: Output/%.out-nat @echo > $@ printf "TEST-RESULT-nat-time: " >> $@ - -grep "^real" Output/$*.out-nat.time >> $@ + -grep "^program" Output/$*.out-nat.time >> $@ # LLC tests $(PROGRAMS_TO_TEST:%=Output/%.nightly.llc.report.txt): \ @@ -65,7 +65,7 @@ printf "TEST-RESULT-llc: " >> $@;\ grep "Total Execution Time" $@.info >> $@;\ printf "TEST-RESULT-llc-time: " >> $@;\ - grep "^real" Output/$*.out-llc.time >> $@;\ + grep "^program" Output/$*.out-llc.time >> $@;\ echo >> $@;\ else \ echo "TEST-FAIL: llc $(RELDIR)/$*" >> $@;\ @@ -82,7 +82,7 @@ printf "TEST-RESULT-llc-ls: " >> $@;\ grep "Total Execution Time" $@.info >> $@;\ printf "TEST-RESULT-llc-ls-time: " >> $@;\ - grep "^real" Output/$*.out-llc-ls.time >> $@;\ + grep "^program" Output/$*.out-llc-ls.time >> $@;\ echo >> $@;\ else \ echo "TEST-FAIL: llc-ls $(RELDIR)/$*" >> $@;\ @@ -98,7 +98,7 @@ @-if test -f Output/$*.exe-cbe; then \ echo "TEST-PASS: cbe $(RELDIR)/$*" >> $@;\ printf "TEST-RESULT-cbe-time: " >> $@;\ - grep "^real" Output/$*.out-cbe.time >> $@;\ + grep "^program" Output/$*.out-cbe.time >> $@;\ echo >> $@;\ else \ echo "TEST-FAIL: cbe $(RELDIR)/$*" >> $@;\ @@ -112,7 +112,7 @@ @-if test -f Output/$*.exe-jit; then \ echo "TEST-PASS: jit $(RELDIR)/$*" >> $@;\ printf "TEST-RESULT-jit-time: " >> $@;\ - grep "^real" Output/$*.out-jit.time >> $@;\ + grep "^program" Output/$*.out-jit.time >> $@;\ echo >> $@;\ printf "TEST-RESULT-jit-comptime: " >> $@;\ grep "Total Execution Time" Output/$*.out-jit.info >> $@;\ @@ -134,7 +134,7 @@ printf "TEST-RESULT-jit-ls: " >> $@;\ grep "Total Execution Time" $@.info >> $@;\ printf "TEST-RESULT-jit-ls-time: " >> $@;\ - grep "^real" Output/$*.out-jit-ls.time >> $@;\ + grep "^program" Output/$*.out-jit-ls.time >> $@;\ echo >> $@;\ else \ echo "TEST-FAIL: jit-ls $(RELDIR)/$*" >> $@;\ Index: llvm-test/TEST.nightly.report diff -u llvm-test/TEST.nightly.report:1.27 llvm-test/TEST.nightly.report:1.28 --- llvm-test/TEST.nightly.report:1.27 Sun Aug 8 19:04:33 2004 +++ llvm-test/TEST.nightly.report Sat Nov 6 15:34:36 2004 @@ -67,12 +67,12 @@ ["JIT
    codegen" , "TEST-RESULT-jit-comptime: $WallTimeRE"], ["Machine
    code", 'TEST-RESULT-jit-machcode: *([0-9]+).*bytes of machine code'], [], - ["GCC" , 'TEST-RESULT-nat-time: real\s*([.0-9m:]+)', \&FormatTime], - ["CBE" , 'TEST-RESULT-cbe-time: real\s*([.0-9m:]+)', \&FormatTime], - ["LLC" , 'TEST-RESULT-llc-time: real\s*([.0-9m:]+)', \&FormatTime], - ["LLC-BETA" , 'TEST-RESULT-llc-ls-time: real\s*([.0-9m:]+)', \&FormatTime], - ["JIT" , 'TEST-RESULT-jit-time: real\s*([.0-9m:]+)', \&FormatTime], - ["JIT-BETA" , 'TEST-RESULT-jit-ls-time: real\s*([.0-9m:]+)', \&FormatTime], + ["GCC" , 'TEST-RESULT-nat-time: program\s*([.0-9m:]+)', \&FormatTime], + ["CBE" , 'TEST-RESULT-cbe-time: program\s*([.0-9m:]+)', \&FormatTime], + ["LLC" , 'TEST-RESULT-llc-time: program\s*([.0-9m:]+)', \&FormatTime], + ["LLC-BETA" , 'TEST-RESULT-llc-ls-time: program\s*([.0-9m:]+)', \&FormatTime], + ["JIT" , 'TEST-RESULT-jit-time: program\s*([.0-9m:]+)', \&FormatTime], + ["JIT-BETA" , 'TEST-RESULT-jit-ls-time: program\s*([.0-9m:]+)', \&FormatTime], ["GCC/CBE" , \&GCCCBERatio], ["GCC/LLC" , \&GCCLLCRatio], ["GCC/LLC-BETA" , \&GCCLLC_BETARatio] From lattner at cs.uiuc.edu Sat Nov 6 15:35:54 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:35:54 -0600 Subject: [llvm-commits] CVS: llvm/utils/NightlyTest.pl Message-ID: <200411062135.iA6LZsD0031432@apoc.cs.uiuc.edu> Changes in directory llvm/utils: NightlyTest.pl updated: 1.67 -> 1.68 --- Log message: Adjust to printing user+system times instead of wall times. Run the olden numbers in 'stable' mode so that the numbers are more stable. --- Diffs of the changes: (+7 -6) Index: llvm/utils/NightlyTest.pl diff -u llvm/utils/NightlyTest.pl:1.67 llvm/utils/NightlyTest.pl:1.68 --- llvm/utils/NightlyTest.pl:1.67 Tue Sep 28 11:04:00 2004 +++ llvm/utils/NightlyTest.pl Sat Nov 6 15:35:40 2004 @@ -698,9 +698,10 @@ # Clean out previous results... system "$NICE gmake $MAKEOPTS clean > /dev/null 2>&1"; - # Run the nightly test in this directory, with LARGE_PROBLEM_SIZE enabled! + # Run the nightly test in this directory, with LARGE_PROBLEM_SIZE and + # GET_STABLE_NUMBERS enabled! system "gmake -k $MAKEOPTS $PROGTESTOPTS report.nightly.raw.out TEST=nightly " . - " LARGE_PROBLEM_SIZE=1 > /dev/null 2>&1"; + " LARGE_PROBLEM_SIZE=1 GET_STABLE_NUMBERS=1 > /dev/null 2>&1"; system "cp report.nightly.raw.out $OldenTestsLog"; } else { system "gunzip ${OldenTestsLog}.gz"; @@ -715,10 +716,10 @@ # totals file. my $WallTimeRE = "[A-Za-z0-9.: ]+\\(([0-9.]+) wall clock"; foreach $Rec (@Records) { - my $rNATTime = GetRegex 'TEST-RESULT-nat-time: real\s*([.0-9m]+)', $Rec; - my $rCBETime = GetRegex 'TEST-RESULT-cbe-time: real\s*([.0-9m]+)', $Rec; - my $rLLCTime = GetRegex 'TEST-RESULT-llc-time: real\s*([.0-9m]+)', $Rec; - my $rJITTime = GetRegex 'TEST-RESULT-jit-time: real\s*([.0-9m]+)', $Rec; + my $rNATTime = GetRegex 'TEST-RESULT-nat-time: program\s*([.0-9m]+)', $Rec; + my $rCBETime = GetRegex 'TEST-RESULT-cbe-time: program\s*([.0-9m]+)', $Rec; + my $rLLCTime = GetRegex 'TEST-RESULT-llc-time: program\s*([.0-9m]+)', $Rec; + my $rJITTime = GetRegex 'TEST-RESULT-jit-time: program\s*([.0-9m]+)', $Rec; my $rOptTime = GetRegex "TEST-RESULT-compile: $WallTimeRE", $Rec; my $rBytecodeSize = GetRegex 'TEST-RESULT-compile: *([0-9]+)', $Rec; my $rMachCodeSize = GetRegex 'TEST-RESULT-jit-machcode: *([0-9]+).*bytes of machine code', $Rec; From tbrethou at cs.uiuc.edu Sat Nov 6 15:40:37 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 15:40:37 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/CBackend/2002-05-16-NameCollide.ll 2002-05-21-MissingReturn.ll 2002-08-19-ConstPointerRef.ll 2002-08-19-ConstantExpr.ll 2002-08-19-DataPointer.ll 2002-08-19-FunctionPointer.ll 2002-08-19-HardConstantExpr.ll 2002-08-20-RecursiveTypes.ll 2002-08-20-UnnamedArgument.ll 2002-08-26-IndirectCallTest.ll 2002-08-30-StructureOrderingTest.ll 2002-09-20-ArrayTypeFailure.ll 2002-09-20-VarArgPrototypes.ll 2002-10-15-OpaqueTypeProblem.ll 2002-10-16-External.ll 2002-10-30-FunctionPointerAlloca.ll 2002-11-06-PrintEscaped.ll 2003-05-12-IntegerSizeWarning.ll 2003-05-13-VarArgFunction.ll 2003-05-31-MissingStructName.ll 2003-06-01-NullPointerType.ll 2003-06-11-HexConstant.ll 2003-06-11-LiteralStringProblem.ll 2003-06-28-InvokeSupport.ll 2003-10-12-NANGlobalInits.ll 2003-10-23-UnusedType.ll 2003-10-23-ZeroArgVarargs.ll 2003-10-28-CastToPtrToStruct.ll 2003-11-21-ConstantShiftExpr.ll 2004-08-09-va-end-null.ll Message-ID: <200411062140.PAA28471@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/CBackend: 2002-05-16-NameCollide.ll updated: 1.1 -> 1.2 2002-05-21-MissingReturn.ll updated: 1.1 -> 1.2 2002-08-19-ConstPointerRef.ll updated: 1.1 -> 1.2 2002-08-19-ConstantExpr.ll updated: 1.2 -> 1.3 2002-08-19-DataPointer.ll updated: 1.1 -> 1.2 2002-08-19-FunctionPointer.ll updated: 1.1 -> 1.2 2002-08-19-HardConstantExpr.ll updated: 1.2 -> 1.3 2002-08-20-RecursiveTypes.ll updated: 1.1 -> 1.2 2002-08-20-UnnamedArgument.ll updated: 1.1 -> 1.2 2002-08-26-IndirectCallTest.ll updated: 1.2 -> 1.3 2002-08-30-StructureOrderingTest.ll updated: 1.1 -> 1.2 2002-09-20-ArrayTypeFailure.ll updated: 1.1 -> 1.2 2002-09-20-VarArgPrototypes.ll updated: 1.1 -> 1.2 2002-10-15-OpaqueTypeProblem.ll updated: 1.2 -> 1.3 2002-10-16-External.ll updated: 1.1 -> 1.2 2002-10-30-FunctionPointerAlloca.ll updated: 1.1 -> 1.2 2002-11-06-PrintEscaped.ll updated: 1.1 -> 1.2 2003-05-12-IntegerSizeWarning.ll updated: 1.1 -> 1.2 2003-05-13-VarArgFunction.ll updated: 1.1 -> 1.2 2003-05-31-MissingStructName.ll updated: 1.1 -> 1.2 2003-06-01-NullPointerType.ll updated: 1.1 -> 1.2 2003-06-11-HexConstant.ll updated: 1.1 -> 1.2 2003-06-11-LiteralStringProblem.ll updated: 1.1 -> 1.2 2003-06-28-InvokeSupport.ll updated: 1.1 -> 1.2 2003-10-12-NANGlobalInits.ll updated: 1.2 -> 1.3 2003-10-23-UnusedType.ll updated: 1.2 -> 1.3 2003-10-23-ZeroArgVarargs.ll updated: 1.1 -> 1.2 2003-10-28-CastToPtrToStruct.ll updated: 1.1 -> 1.2 2003-11-21-ConstantShiftExpr.ll updated: 1.2 -> 1.3 2004-08-09-va-end-null.ll updated: 1.1 -> 1.2 --- Log message: Adding RUN lines. --- Diffs of the changes: (+60 -0) Index: llvm/test/Regression/CodeGen/CBackend/2002-05-16-NameCollide.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-05-16-NameCollide.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-05-16-NameCollide.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-05-16-NameCollide.ll:1.1 Thu May 16 23:53:51 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-05-16-NameCollide.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; Make sure that global variables do not collide if they have the same name, ; but different types. Index: llvm/test/Regression/CodeGen/CBackend/2002-05-21-MissingReturn.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-05-21-MissingReturn.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-05-21-MissingReturn.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-05-21-MissingReturn.ll:1.1 Tue May 21 13:04:58 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-05-21-MissingReturn.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; This case was emitting code that looked like this: ; ... ; llvm_BB1: /* no statement here */ Index: llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstPointerRef.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstPointerRef.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstPointerRef.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstPointerRef.ll:1.1 Mon Aug 19 18:09:29 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstPointerRef.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; Test const pointer refs & forward references %t3 = global int * %t1 ;; Forward reference Index: llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstantExpr.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstantExpr.ll:1.2 llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstantExpr.ll:1.3 --- llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstantExpr.ll:1.2 Fri May 2 22:08:54 2003 +++ llvm/test/Regression/CodeGen/CBackend/2002-08-19-ConstantExpr.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + global int* cast (float* %0 to int*) ;; Forward numeric reference global float* %0 ;; Duplicate forward numeric reference global float 0.0 Index: llvm/test/Regression/CodeGen/CBackend/2002-08-19-DataPointer.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-08-19-DataPointer.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-08-19-DataPointer.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-08-19-DataPointer.ll:1.1 Mon Aug 19 18:09:29 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-08-19-DataPointer.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %sptr1 = global [11x sbyte]* %somestr ;; Forward ref to a constant %somestr = constant [11x sbyte] c"hello world" Index: llvm/test/Regression/CodeGen/CBackend/2002-08-19-FunctionPointer.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-08-19-FunctionPointer.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-08-19-FunctionPointer.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-08-19-FunctionPointer.ll:1.1 Mon Aug 19 18:09:30 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-08-19-FunctionPointer.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %fptr = global void() * %f ;; Forward ref method defn declare void "f"() ;; External method Index: llvm/test/Regression/CodeGen/CBackend/2002-08-19-HardConstantExpr.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-08-19-HardConstantExpr.ll:1.2 llvm/test/Regression/CodeGen/CBackend/2002-08-19-HardConstantExpr.ll:1.3 --- llvm/test/Regression/CodeGen/CBackend/2002-08-19-HardConstantExpr.ll:1.2 Fri May 2 22:08:54 2003 +++ llvm/test/Regression/CodeGen/CBackend/2002-08-19-HardConstantExpr.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %array = constant [2 x int] [ int 12, int 52 ] ; <[2 x int]*> [#uses=1] %arrayPtr = global int* getelementptr ([2 x int]* %array, long 0, long 0) ; [#uses=1] Index: llvm/test/Regression/CodeGen/CBackend/2002-08-20-RecursiveTypes.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-08-20-RecursiveTypes.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-08-20-RecursiveTypes.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-08-20-RecursiveTypes.ll:1.1 Tue Aug 20 10:49:52 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-08-20-RecursiveTypes.ll Sat Nov 6 15:40:26 2004 @@ -1,2 +1,4 @@ +; RUN: llvm-as < %s | llc -march=c + %MyIntList = uninitialized global { \2 *, int } Index: llvm/test/Regression/CodeGen/CBackend/2002-08-20-UnnamedArgument.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-08-20-UnnamedArgument.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-08-20-UnnamedArgument.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-08-20-UnnamedArgument.ll:1.1 Tue Aug 20 11:01:23 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-08-20-UnnamedArgument.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; The C Writer bombs on this testcase because it tries the print the prototype ; for the test function, which tries to print the argument name. The function ; has not been incorporated into the slot calculator, so after it does the name Index: llvm/test/Regression/CodeGen/CBackend/2002-08-26-IndirectCallTest.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-08-26-IndirectCallTest.ll:1.2 llvm/test/Regression/CodeGen/CBackend/2002-08-26-IndirectCallTest.ll:1.3 --- llvm/test/Regression/CodeGen/CBackend/2002-08-26-IndirectCallTest.ll:1.2 Thu Oct 23 11:01:02 2003 +++ llvm/test/Regression/CodeGen/CBackend/2002-08-26-IndirectCallTest.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; Indirect function call test... found by Joel & Brian ; Index: llvm/test/Regression/CodeGen/CBackend/2002-08-30-StructureOrderingTest.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-08-30-StructureOrderingTest.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-08-30-StructureOrderingTest.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-08-30-StructureOrderingTest.ll:1.1 Fri Aug 30 19:24:54 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-08-30-StructureOrderingTest.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; This testcase fails because the C backend does not arrange to output the ; contents of a structure type before it outputs the structure type itself. Index: llvm/test/Regression/CodeGen/CBackend/2002-09-20-ArrayTypeFailure.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-09-20-ArrayTypeFailure.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-09-20-ArrayTypeFailure.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-09-20-ArrayTypeFailure.ll:1.1 Fri Sep 20 16:44:32 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-09-20-ArrayTypeFailure.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + implementation Index: llvm/test/Regression/CodeGen/CBackend/2002-09-20-VarArgPrototypes.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-09-20-VarArgPrototypes.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-09-20-VarArgPrototypes.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-09-20-VarArgPrototypes.ll:1.1 Fri Sep 20 17:28:03 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-09-20-VarArgPrototypes.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + declare void %foo(...) Index: llvm/test/Regression/CodeGen/CBackend/2002-10-15-OpaqueTypeProblem.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-10-15-OpaqueTypeProblem.ll:1.2 llvm/test/Regression/CodeGen/CBackend/2002-10-15-OpaqueTypeProblem.ll:1.3 --- llvm/test/Regression/CodeGen/CBackend/2002-10-15-OpaqueTypeProblem.ll:1.2 Sat Apr 26 12:44:17 2003 +++ llvm/test/Regression/CodeGen/CBackend/2002-10-15-OpaqueTypeProblem.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %MPI_Comm = type %struct.Comm* %struct.Comm = type opaque %thing = global %MPI_Comm* null ; <%MPI_Comm**> [#uses=0] Index: llvm/test/Regression/CodeGen/CBackend/2002-10-16-External.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-10-16-External.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-10-16-External.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-10-16-External.ll:1.1 Wed Oct 16 15:08:19 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-10-16-External.ll Sat Nov 6 15:40:26 2004 @@ -1,2 +1,4 @@ +; RUN: llvm-as < %s | llc -march=c + %bob = external global int ; [#uses=2] Index: llvm/test/Regression/CodeGen/CBackend/2002-10-30-FunctionPointerAlloca.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-10-30-FunctionPointerAlloca.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-10-30-FunctionPointerAlloca.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-10-30-FunctionPointerAlloca.ll:1.1 Thu Oct 31 12:23:09 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-10-30-FunctionPointerAlloca.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %BitField = type int %tokenptr = type %BitField* Index: llvm/test/Regression/CodeGen/CBackend/2002-11-06-PrintEscaped.ll diff -u llvm/test/Regression/CodeGen/CBackend/2002-11-06-PrintEscaped.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2002-11-06-PrintEscaped.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2002-11-06-PrintEscaped.ll:1.1 Wed Nov 6 15:38:39 2002 +++ llvm/test/Regression/CodeGen/CBackend/2002-11-06-PrintEscaped.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %testString = internal constant [18 x sbyte] c "Escaped newline\n\00" implementation Index: llvm/test/Regression/CodeGen/CBackend/2003-05-12-IntegerSizeWarning.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-05-12-IntegerSizeWarning.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2003-05-12-IntegerSizeWarning.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2003-05-12-IntegerSizeWarning.ll:1.1 Mon May 12 10:34:39 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-05-12-IntegerSizeWarning.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; Apparently this constant was unsigned in ISO C 90, but not in C 99. int %foo() { Index: llvm/test/Regression/CodeGen/CBackend/2003-05-13-VarArgFunction.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-05-13-VarArgFunction.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2003-05-13-VarArgFunction.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2003-05-13-VarArgFunction.ll:1.1 Tue May 13 15:11:21 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-05-13-VarArgFunction.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; This testcase breaks the C backend, because gcc doesn't like (...) functions ; with no arguments at all. Index: llvm/test/Regression/CodeGen/CBackend/2003-05-31-MissingStructName.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-05-31-MissingStructName.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2003-05-31-MissingStructName.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2003-05-31-MissingStructName.ll:1.1 Sat May 31 18:27:10 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-05-31-MissingStructName.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; The C backend was dying when there was no typename for a struct type! declare int %test(int,{ [32 x int] }*) Index: llvm/test/Regression/CodeGen/CBackend/2003-06-01-NullPointerType.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-06-01-NullPointerType.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2003-06-01-NullPointerType.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2003-06-01-NullPointerType.ll:1.1 Sun Jun 1 22:07:54 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-06-01-NullPointerType.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %X = type { int, float } Index: llvm/test/Regression/CodeGen/CBackend/2003-06-11-HexConstant.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-06-11-HexConstant.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2003-06-11-HexConstant.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2003-06-11-HexConstant.ll:1.1 Mon Jun 16 07:05:38 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-06-11-HexConstant.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; Make sure hex constant does not continue into a valid hexadecimal letter/number %version = global [3 x sbyte] c"\001\00" Index: llvm/test/Regression/CodeGen/CBackend/2003-06-11-LiteralStringProblem.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-06-11-LiteralStringProblem.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2003-06-11-LiteralStringProblem.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2003-06-11-LiteralStringProblem.ll:1.1 Mon Jun 16 07:05:38 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-06-11-LiteralStringProblem.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %version = global [3 x sbyte] c"1\00\00" Index: llvm/test/Regression/CodeGen/CBackend/2003-06-28-InvokeSupport.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-06-28-InvokeSupport.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2003-06-28-InvokeSupport.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2003-06-28-InvokeSupport.ll:1.1 Sat Jun 28 12:52:38 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-06-28-InvokeSupport.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + declare int %callee(int, int) Index: llvm/test/Regression/CodeGen/CBackend/2003-10-12-NANGlobalInits.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-10-12-NANGlobalInits.ll:1.2 llvm/test/Regression/CodeGen/CBackend/2003-10-12-NANGlobalInits.ll:1.3 --- llvm/test/Regression/CodeGen/CBackend/2003-10-12-NANGlobalInits.ll:1.2 Wed Aug 25 14:00:42 2004 +++ llvm/test/Regression/CodeGen/CBackend/2003-10-12-NANGlobalInits.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; This is a non-normal FP value: it's a nan. %NAN = global { float } { float 0x7FF8000000000000 } %NANs = global { float } { float 0x7FF4000000000000 } Index: llvm/test/Regression/CodeGen/CBackend/2003-10-23-UnusedType.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-10-23-UnusedType.ll:1.2 llvm/test/Regression/CodeGen/CBackend/2003-10-23-UnusedType.ll:1.3 --- llvm/test/Regression/CodeGen/CBackend/2003-10-23-UnusedType.ll:1.2 Wed May 26 12:14:49 2004 +++ llvm/test/Regression/CodeGen/CBackend/2003-10-23-UnusedType.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %A = type { uint, sbyte*, { uint, uint, uint, uint, uint, uint, uint, uint }*, ushort } Index: llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll:1.1 Thu Oct 23 12:31:33 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + declare sbyte* %llvm.va_start() declare void %llvm.va_end(sbyte*) Index: llvm/test/Regression/CodeGen/CBackend/2003-10-28-CastToPtrToStruct.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-10-28-CastToPtrToStruct.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2003-10-28-CastToPtrToStruct.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2003-10-28-CastToPtrToStruct.ll:1.1 Tue Oct 28 16:54:56 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-10-28-CastToPtrToStruct.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + ; reduced from DOOM. %union._XEvent = type { int } %.X_event_9 = global %union._XEvent zeroinitializer Index: llvm/test/Regression/CodeGen/CBackend/2003-11-21-ConstantShiftExpr.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-11-21-ConstantShiftExpr.ll:1.2 llvm/test/Regression/CodeGen/CBackend/2003-11-21-ConstantShiftExpr.ll:1.3 --- llvm/test/Regression/CodeGen/CBackend/2003-11-21-ConstantShiftExpr.ll:1.2 Fri Nov 21 23:01:57 2003 +++ llvm/test/Regression/CodeGen/CBackend/2003-11-21-ConstantShiftExpr.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + %y = weak global sbyte 0 implementation uint %testcaseshr() { Index: llvm/test/Regression/CodeGen/CBackend/2004-08-09-va-end-null.ll diff -u llvm/test/Regression/CodeGen/CBackend/2004-08-09-va-end-null.ll:1.1 llvm/test/Regression/CodeGen/CBackend/2004-08-09-va-end-null.ll:1.2 --- llvm/test/Regression/CodeGen/CBackend/2004-08-09-va-end-null.ll:1.1 Mon Aug 9 18:56:17 2004 +++ llvm/test/Regression/CodeGen/CBackend/2004-08-09-va-end-null.ll Sat Nov 6 15:40:26 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc -march=c + declare void %llvm.va_end(sbyte*) void %test() { From lattner at cs.uiuc.edu Sat Nov 6 15:41:00 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 15:41:00 -0600 Subject: [llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/Olden/perimeter/Makefile Message-ID: <200411062141.iA6Lf0WO032672@apoc.cs.uiuc.edu> Changes in directory llvm-test/MultiSource/Benchmarks/Olden/perimeter: Makefile updated: 1.11 -> 1.12 --- Log message: Do not run for 0.0 seconds --- Diffs of the changes: (+1 -1) Index: llvm-test/MultiSource/Benchmarks/Olden/perimeter/Makefile diff -u llvm-test/MultiSource/Benchmarks/Olden/perimeter/Makefile:1.11 llvm-test/MultiSource/Benchmarks/Olden/perimeter/Makefile:1.12 --- llvm-test/MultiSource/Benchmarks/Olden/perimeter/Makefile:1.11 Wed Sep 1 09:33:25 2004 +++ llvm-test/MultiSource/Benchmarks/Olden/perimeter/Makefile Sat Nov 6 15:40:46 2004 @@ -6,7 +6,7 @@ ifdef LARGE_PROBLEM_SIZE RUN_OPTIONS = 11 else -RUN_OPTIONS = 4 +RUN_OPTIONS = 10 endif include $(LEVEL)/MultiSource/Makefile.multisrc From tbrethou at cs.uiuc.edu Sat Nov 6 15:41:02 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 15:41:02 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/Generic/call-ret0.ll call-ret42.ll call-void.ll call2-ret0.ll cast-fp.ll global-ret0.ll hello.ll print-add.ll print-arith-fp.ll print-arith-int.ll print-int.ll print-mul-exp.ll print-mul.ll print-shift.ll ret0.ll ret42.ll Message-ID: <200411062141.PAA28538@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/Generic: call-ret0.ll updated: 1.1 -> 1.2 call-ret42.ll updated: 1.1 -> 1.2 call-void.ll updated: 1.1 -> 1.2 call2-ret0.ll updated: 1.1 -> 1.2 cast-fp.ll updated: 1.1 -> 1.2 global-ret0.ll updated: 1.1 -> 1.2 hello.ll updated: 1.1 -> 1.2 print-add.ll updated: 1.1 -> 1.2 print-arith-fp.ll updated: 1.1 -> 1.2 print-arith-int.ll updated: 1.1 -> 1.2 print-int.ll updated: 1.1 -> 1.2 print-mul-exp.ll updated: 1.1 -> 1.2 print-mul.ll updated: 1.1 -> 1.2 print-shift.ll updated: 1.1 -> 1.2 ret0.ll updated: 1.1 -> 1.2 ret42.ll updated: 1.1 -> 1.2 --- Log message: Adding RUN lines. --- Diffs of the changes: (+32 -0) Index: llvm/test/Regression/CodeGen/Generic/call-ret0.ll diff -u llvm/test/Regression/CodeGen/Generic/call-ret0.ll:1.1 llvm/test/Regression/CodeGen/Generic/call-ret0.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/call-ret0.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/call-ret0.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + int %foo(int %x) { ret int %x } Index: llvm/test/Regression/CodeGen/Generic/call-ret42.ll diff -u llvm/test/Regression/CodeGen/Generic/call-ret42.ll:1.1 llvm/test/Regression/CodeGen/Generic/call-ret42.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/call-ret42.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/call-ret42.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + int %foo(int %x) { ret int 42 } Index: llvm/test/Regression/CodeGen/Generic/call-void.ll diff -u llvm/test/Regression/CodeGen/Generic/call-void.ll:1.1 llvm/test/Regression/CodeGen/Generic/call-void.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/call-void.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/call-void.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + void %foo() { ret void } Index: llvm/test/Regression/CodeGen/Generic/call2-ret0.ll diff -u llvm/test/Regression/CodeGen/Generic/call2-ret0.ll:1.1 llvm/test/Regression/CodeGen/Generic/call2-ret0.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/call2-ret0.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/call2-ret0.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + int %bar(int %x) { ret int 0 } Index: llvm/test/Regression/CodeGen/Generic/cast-fp.ll diff -u llvm/test/Regression/CodeGen/Generic/cast-fp.ll:1.1 llvm/test/Regression/CodeGen/Generic/cast-fp.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/cast-fp.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/cast-fp.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %a_fstr = internal constant [8 x sbyte] c"a = %f\0A\00" %a_lstr = internal constant [10 x sbyte] c"a = %lld\0A\00" %a_dstr = internal constant [8 x sbyte] c"a = %d\0A\00" Index: llvm/test/Regression/CodeGen/Generic/global-ret0.ll diff -u llvm/test/Regression/CodeGen/Generic/global-ret0.ll:1.1 llvm/test/Regression/CodeGen/Generic/global-ret0.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/global-ret0.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/global-ret0.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %g = global int 0 int %main() { Index: llvm/test/Regression/CodeGen/Generic/hello.ll diff -u llvm/test/Regression/CodeGen/Generic/hello.ll:1.1 llvm/test/Regression/CodeGen/Generic/hello.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/hello.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/hello.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %.str_1 = internal constant [7 x sbyte] c"hello\0A\00" declare int %printf(sbyte*, ...) Index: llvm/test/Regression/CodeGen/Generic/print-add.ll diff -u llvm/test/Regression/CodeGen/Generic/print-add.ll:1.1 llvm/test/Regression/CodeGen/Generic/print-add.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/print-add.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/print-add.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %.str_1 = internal constant [4 x sbyte] c"%d\0A\00" declare int %printf(sbyte*, ...) Index: llvm/test/Regression/CodeGen/Generic/print-arith-fp.ll diff -u llvm/test/Regression/CodeGen/Generic/print-arith-fp.ll:1.1 llvm/test/Regression/CodeGen/Generic/print-arith-fp.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/print-arith-fp.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/print-arith-fp.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %a_str = internal constant [8 x sbyte] c"a = %f\0A\00" %b_str = internal constant [8 x sbyte] c"b = %f\0A\00" ;; binary ops: arith Index: llvm/test/Regression/CodeGen/Generic/print-arith-int.ll diff -u llvm/test/Regression/CodeGen/Generic/print-arith-int.ll:1.1 llvm/test/Regression/CodeGen/Generic/print-arith-int.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/print-arith-int.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/print-arith-int.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %a_str = internal constant [8 x sbyte] c"a = %d\0A\00" %b_str = internal constant [8 x sbyte] c"b = %d\0A\00" ;; binary ops: arith Index: llvm/test/Regression/CodeGen/Generic/print-int.ll diff -u llvm/test/Regression/CodeGen/Generic/print-int.ll:1.1 llvm/test/Regression/CodeGen/Generic/print-int.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/print-int.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/print-int.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %.str_1 = internal constant [4 x sbyte] c"%d\0A\00" declare int %printf(sbyte*, ...) Index: llvm/test/Regression/CodeGen/Generic/print-mul-exp.ll diff -u llvm/test/Regression/CodeGen/Generic/print-mul-exp.ll:1.1 llvm/test/Regression/CodeGen/Generic/print-mul-exp.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/print-mul-exp.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/print-mul-exp.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %a_str = internal constant [8 x sbyte] c"a = %d\0A\00" %a_mul_str = internal constant [13 x sbyte] c"a * %d = %d\0A\00" %A = global int 2 Index: llvm/test/Regression/CodeGen/Generic/print-mul.ll diff -u llvm/test/Regression/CodeGen/Generic/print-mul.ll:1.1 llvm/test/Regression/CodeGen/Generic/print-mul.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/print-mul.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/print-mul.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %a_str = internal constant [8 x sbyte] c"a = %d\0A\00" %b_str = internal constant [8 x sbyte] c"b = %d\0A\00" Index: llvm/test/Regression/CodeGen/Generic/print-shift.ll diff -u llvm/test/Regression/CodeGen/Generic/print-shift.ll:1.1 llvm/test/Regression/CodeGen/Generic/print-shift.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/print-shift.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/print-shift.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + %a_str = internal constant [8 x sbyte] c"a = %d\0A\00" %b_str = internal constant [8 x sbyte] c"b = %d\0A\00" Index: llvm/test/Regression/CodeGen/Generic/ret0.ll diff -u llvm/test/Regression/CodeGen/Generic/ret0.ll:1.1 llvm/test/Regression/CodeGen/Generic/ret0.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/ret0.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/ret0.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + int %main() { ret int 0 } Index: llvm/test/Regression/CodeGen/Generic/ret42.ll diff -u llvm/test/Regression/CodeGen/Generic/ret42.ll:1.1 llvm/test/Regression/CodeGen/Generic/ret42.ll:1.2 --- llvm/test/Regression/CodeGen/Generic/ret42.ll:1.1 Wed Aug 11 09:16:34 2004 +++ llvm/test/Regression/CodeGen/Generic/ret42.ll Sat Nov 6 15:40:51 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s | llc + int %main() { ret int 42 } From tbrethou at cs.uiuc.edu Sat Nov 6 16:07:19 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 16:07:19 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Assembler/2002-01-24-BadSymbolTableAssert.ll 2002-01-24-ValueRefineAbsType.ll 2002-02-19-TypeParsing.ll 2002-03-08-NameCollision.ll 2002-03-08-NameCollision2.ll 2002-04-04-PureVirtMethCall.ll 2002-04-04-PureVirtMethCall2.ll 2002-04-05-TypeParsing.ll 2002-05-02-InvalidForwardRef.ll 2002-05-02-ParseError.ll 2002-08-15-CastAmbiguity.ll 2002-08-15-ConstantExprProblem.ll 2002-08-15-UnresolvedGlobalReference.ll 2002-08-22-DominanceProblem.ll 2002-10-08-LargeArrayPerformance.ll 2002-10-15-NameClash.ll 2002-12-15-GlobalResolve.ll 2003-01-30-UnsignedString.ll 2003-02-02-ConstGlobal.ll 2003-04-25-UnresolvedGlobalReference.ll 2003-05-15-SwitchBug.ll 2003-05-21-ConstantShiftExpr.ll 2003-05-21-EmptyStructTest.ll 2003-06-30-RecursiveTypeProblem.ll 2003-10-04-NotMergingGlobalConstants.ll 2004-01-22-FloatNormalization.ll 2004-02-27-SelfUseAssertError.ll 2004-04-04-GetElementPtrIndexTypes.ll select.ll Message-ID: <200411062207.QAA29152@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Assembler: 2002-01-24-BadSymbolTableAssert.ll updated: 1.1 -> 1.2 2002-01-24-ValueRefineAbsType.ll updated: 1.2 -> 1.3 2002-02-19-TypeParsing.ll updated: 1.2 -> 1.3 2002-03-08-NameCollision.ll updated: 1.1 -> 1.2 2002-03-08-NameCollision2.ll updated: 1.1 -> 1.2 2002-04-04-PureVirtMethCall.ll updated: 1.1 -> 1.2 2002-04-04-PureVirtMethCall2.ll updated: 1.1 -> 1.2 2002-04-05-TypeParsing.ll updated: 1.1 -> 1.2 2002-05-02-InvalidForwardRef.ll updated: 1.1 -> 1.2 2002-05-02-ParseError.ll updated: 1.5 -> 1.6 2002-08-15-CastAmbiguity.ll updated: 1.1 -> 1.2 2002-08-15-ConstantExprProblem.ll updated: 1.2 -> 1.3 2002-08-15-UnresolvedGlobalReference.ll updated: 1.2 -> 1.3 2002-08-22-DominanceProblem.ll updated: 1.1 -> 1.2 2002-10-08-LargeArrayPerformance.ll updated: 1.1 -> 1.2 2002-10-15-NameClash.ll updated: 1.1 -> 1.2 2002-12-15-GlobalResolve.ll updated: 1.1 -> 1.2 2003-01-30-UnsignedString.ll updated: 1.1 -> 1.2 2003-02-02-ConstGlobal.ll updated: 1.1 -> 1.2 2003-04-25-UnresolvedGlobalReference.ll updated: 1.1 -> 1.2 2003-05-15-SwitchBug.ll updated: 1.1 -> 1.2 2003-05-21-ConstantShiftExpr.ll updated: 1.1 -> 1.2 2003-05-21-EmptyStructTest.ll updated: 1.1 -> 1.2 2003-06-30-RecursiveTypeProblem.ll updated: 1.1 -> 1.2 2003-10-04-NotMergingGlobalConstants.ll updated: 1.1 -> 1.2 2004-01-22-FloatNormalization.ll updated: 1.1 -> 1.2 2004-02-27-SelfUseAssertError.ll updated: 1.1 -> 1.2 2004-04-04-GetElementPtrIndexTypes.ll updated: 1.1 -> 1.2 select.ll updated: 1.1 -> 1.2 --- Log message: Adding RUN lines. --- Diffs of the changes: (+60 -2) Index: llvm/test/Regression/Assembler/2002-01-24-BadSymbolTableAssert.ll diff -u llvm/test/Regression/Assembler/2002-01-24-BadSymbolTableAssert.ll:1.1 llvm/test/Regression/Assembler/2002-01-24-BadSymbolTableAssert.ll:1.2 --- llvm/test/Regression/Assembler/2002-01-24-BadSymbolTableAssert.ll:1.1 Thu Jan 24 21:58:05 2002 +++ llvm/test/Regression/Assembler/2002-01-24-BadSymbolTableAssert.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; This testcase failed due to a bad assertion in SymbolTable.cpp, removed in the 1.20 revision ; Basically the symbol table assumed that if there was an abstract type in the symbol table, ; [in this case for the entry %foo of type void(opaque)* ], that there should have also been Index: llvm/test/Regression/Assembler/2002-01-24-ValueRefineAbsType.ll diff -u llvm/test/Regression/Assembler/2002-01-24-ValueRefineAbsType.ll:1.2 llvm/test/Regression/Assembler/2002-01-24-ValueRefineAbsType.ll:1.3 --- llvm/test/Regression/Assembler/2002-01-24-ValueRefineAbsType.ll:1.2 Fri May 3 13:32:40 2002 +++ llvm/test/Regression/Assembler/2002-01-24-ValueRefineAbsType.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; This testcase used to fail due to a lack of this diff in Value.cpp: ; diff -r1.16 Value.cpp ; 11c11 Index: llvm/test/Regression/Assembler/2002-02-19-TypeParsing.ll diff -u llvm/test/Regression/Assembler/2002-02-19-TypeParsing.ll:1.2 llvm/test/Regression/Assembler/2002-02-19-TypeParsing.ll:1.3 --- llvm/test/Regression/Assembler/2002-02-19-TypeParsing.ll:1.2 Fri Apr 5 17:00:02 2002 +++ llvm/test/Regression/Assembler/2002-02-19-TypeParsing.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + %Hosp = type { int, int, int, { \2 *, { int, int, int, { [4 x \3], \2, \5, \6, int, int } * } *, \2 * }, { \2 *, { int, int, int, { [4 x \3], \2, \5, \6, int, int } * } *, \2 * }, { \2 *, { int, int, int, { [4 x \3], \2, \5, \6, int, int Index: llvm/test/Regression/Assembler/2002-03-08-NameCollision.ll diff -u llvm/test/Regression/Assembler/2002-03-08-NameCollision.ll:1.1 llvm/test/Regression/Assembler/2002-03-08-NameCollision.ll:1.2 --- llvm/test/Regression/Assembler/2002-03-08-NameCollision.ll:1.1 Fri Mar 8 12:41:11 2002 +++ llvm/test/Regression/Assembler/2002-03-08-NameCollision.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; Method arguments were being checked for collisions at the global scope before ; the method object was created by the parser. Because of this, false collisions ; could occur that would cause the following error message to be produced: Index: llvm/test/Regression/Assembler/2002-03-08-NameCollision2.ll diff -u llvm/test/Regression/Assembler/2002-03-08-NameCollision2.ll:1.1 llvm/test/Regression/Assembler/2002-03-08-NameCollision2.ll:1.2 --- llvm/test/Regression/Assembler/2002-03-08-NameCollision2.ll:1.1 Fri Mar 8 13:10:09 2002 +++ llvm/test/Regression/Assembler/2002-03-08-NameCollision2.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; Another name collision problem. Here the problem was that if a forward ; declaration for a method was found, that this would cause spurious conflicts ; to be detected between locals and globals. Index: llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall.ll diff -u llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall.ll:1.1 llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall.ll:1.2 --- llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall.ll:1.1 Fri Apr 5 16:25:51 2002 +++ llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall.ll Sat Nov 6 16:07:09 2004 @@ -1,5 +1,7 @@ +; RUN: llvm-as < %s -o /dev/null -f + type { { \2 *, \4 ** }, { \2 *, \4 ** } } -implementation \ No newline at end of file +implementation Index: llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall2.ll diff -u llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall2.ll:1.1 llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall2.ll:1.2 --- llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall2.ll:1.1 Fri Apr 5 16:25:51 2002 +++ llvm/test/Regression/Assembler/2002-04-04-PureVirtMethCall2.ll Sat Nov 6 16:07:09 2004 @@ -1,5 +1,7 @@ +; RUN: llvm-as < %s -o /dev/null -f + %t = type { { \2*, \2 }, { \2*, \2 } } -implementation \ No newline at end of file +implementation Index: llvm/test/Regression/Assembler/2002-04-05-TypeParsing.ll diff -u llvm/test/Regression/Assembler/2002-04-05-TypeParsing.ll:1.1 llvm/test/Regression/Assembler/2002-04-05-TypeParsing.ll:1.2 --- llvm/test/Regression/Assembler/2002-04-05-TypeParsing.ll:1.1 Fri Apr 5 13:39:55 2002 +++ llvm/test/Regression/Assembler/2002-04-05-TypeParsing.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + %Hosp = type { { \2 *, { \2, \4 } * }, { \2 *, { \2, \4 } * } Index: llvm/test/Regression/Assembler/2002-05-02-InvalidForwardRef.ll diff -u llvm/test/Regression/Assembler/2002-05-02-InvalidForwardRef.ll:1.1 llvm/test/Regression/Assembler/2002-05-02-InvalidForwardRef.ll:1.2 --- llvm/test/Regression/Assembler/2002-05-02-InvalidForwardRef.ll:1.1 Thu May 2 14:12:21 2002 +++ llvm/test/Regression/Assembler/2002-05-02-InvalidForwardRef.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; It looks like the assembler is not forward resolving the function declaraion ; correctly. Index: llvm/test/Regression/Assembler/2002-05-02-ParseError.ll diff -u llvm/test/Regression/Assembler/2002-05-02-ParseError.ll:1.5 llvm/test/Regression/Assembler/2002-05-02-ParseError.ll:1.6 --- llvm/test/Regression/Assembler/2002-05-02-ParseError.ll:1.5 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/Assembler/2002-05-02-ParseError.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; This should parse correctly without an 'implementation', but our current YACC ; based parser doesn't have the required 2 token lookahead... ; XFAIL: * Index: llvm/test/Regression/Assembler/2002-08-15-CastAmbiguity.ll diff -u llvm/test/Regression/Assembler/2002-08-15-CastAmbiguity.ll:1.1 llvm/test/Regression/Assembler/2002-08-15-CastAmbiguity.ll:1.2 --- llvm/test/Regression/Assembler/2002-08-15-CastAmbiguity.ll:1.1 Thu Aug 15 16:08:38 2002 +++ llvm/test/Regression/Assembler/2002-08-15-CastAmbiguity.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + Index: llvm/test/Regression/Assembler/2002-08-15-ConstantExprProblem.ll diff -u llvm/test/Regression/Assembler/2002-08-15-ConstantExprProblem.ll:1.2 llvm/test/Regression/Assembler/2002-08-15-ConstantExprProblem.ll:1.3 --- llvm/test/Regression/Assembler/2002-08-15-ConstantExprProblem.ll:1.2 Thu Mar 6 13:59:08 2003 +++ llvm/test/Regression/Assembler/2002-08-15-ConstantExprProblem.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + %.LC0 = internal global [12 x sbyte] c"hello world\00" implementation ; Functions: Index: llvm/test/Regression/Assembler/2002-08-15-UnresolvedGlobalReference.ll diff -u llvm/test/Regression/Assembler/2002-08-15-UnresolvedGlobalReference.ll:1.2 llvm/test/Regression/Assembler/2002-08-15-UnresolvedGlobalReference.ll:1.3 --- llvm/test/Regression/Assembler/2002-08-15-UnresolvedGlobalReference.ll:1.2 Thu Mar 6 13:59:08 2003 +++ llvm/test/Regression/Assembler/2002-08-15-UnresolvedGlobalReference.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + %.LC0 = internal global [12 x sbyte] c"hello world\00" ; <[12 x sbyte]*> [#uses=1] implementation ; Functions: Index: llvm/test/Regression/Assembler/2002-08-22-DominanceProblem.ll diff -u llvm/test/Regression/Assembler/2002-08-22-DominanceProblem.ll:1.1 llvm/test/Regression/Assembler/2002-08-22-DominanceProblem.ll:1.2 --- llvm/test/Regression/Assembler/2002-08-22-DominanceProblem.ll:1.1 Thu Aug 22 15:30:06 2002 +++ llvm/test/Regression/Assembler/2002-08-22-DominanceProblem.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; Dominance relationships is not calculated correctly for unreachable blocks, ; which causes the verifier to barf on this input. Index: llvm/test/Regression/Assembler/2002-10-08-LargeArrayPerformance.ll diff -u llvm/test/Regression/Assembler/2002-10-08-LargeArrayPerformance.ll:1.1 llvm/test/Regression/Assembler/2002-10-08-LargeArrayPerformance.ll:1.2 --- llvm/test/Regression/Assembler/2002-10-08-LargeArrayPerformance.ll:1.1 Tue Oct 8 17:35:04 2002 +++ llvm/test/Regression/Assembler/2002-10-08-LargeArrayPerformance.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; This testcase comes from the following really simple c file: ; ; int foo[30000]; Index: llvm/test/Regression/Assembler/2002-10-15-NameClash.ll diff -u llvm/test/Regression/Assembler/2002-10-15-NameClash.ll:1.1 llvm/test/Regression/Assembler/2002-10-15-NameClash.ll:1.2 --- llvm/test/Regression/Assembler/2002-10-15-NameClash.ll:1.1 Tue Oct 15 16:18:03 2002 +++ llvm/test/Regression/Assembler/2002-10-15-NameClash.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + declare int "ArrayRef"([100 x int] * %Array) int "ArrayRef"([100 x int] * %Array) { Index: llvm/test/Regression/Assembler/2002-12-15-GlobalResolve.ll diff -u llvm/test/Regression/Assembler/2002-12-15-GlobalResolve.ll:1.1 llvm/test/Regression/Assembler/2002-12-15-GlobalResolve.ll:1.2 --- llvm/test/Regression/Assembler/2002-12-15-GlobalResolve.ll:1.1 Sun Dec 15 10:32:21 2002 +++ llvm/test/Regression/Assembler/2002-12-15-GlobalResolve.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + %X = external global %T* Index: llvm/test/Regression/Assembler/2003-01-30-UnsignedString.ll diff -u llvm/test/Regression/Assembler/2003-01-30-UnsignedString.ll:1.1 llvm/test/Regression/Assembler/2003-01-30-UnsignedString.ll:1.2 --- llvm/test/Regression/Assembler/2003-01-30-UnsignedString.ll:1.1 Thu Jan 30 16:24:14 2003 +++ llvm/test/Regression/Assembler/2003-01-30-UnsignedString.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + %spell_order = global [4 x ubyte] c"\FF\00\F7\00" Index: llvm/test/Regression/Assembler/2003-02-02-ConstGlobal.ll diff -u llvm/test/Regression/Assembler/2003-02-02-ConstGlobal.ll:1.1 llvm/test/Regression/Assembler/2003-02-02-ConstGlobal.ll:1.2 --- llvm/test/Regression/Assembler/2003-02-02-ConstGlobal.ll:1.1 Sun Feb 2 10:30:29 2003 +++ llvm/test/Regression/Assembler/2003-02-02-ConstGlobal.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + %X = external global int %X = constant int 7 Index: llvm/test/Regression/Assembler/2003-04-25-UnresolvedGlobalReference.ll diff -u llvm/test/Regression/Assembler/2003-04-25-UnresolvedGlobalReference.ll:1.1 llvm/test/Regression/Assembler/2003-04-25-UnresolvedGlobalReference.ll:1.2 --- llvm/test/Regression/Assembler/2003-04-25-UnresolvedGlobalReference.ll:1.1 Fri Apr 25 15:09:17 2003 +++ llvm/test/Regression/Assembler/2003-04-25-UnresolvedGlobalReference.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; There should be absolutely no problem with this testcase. implementation Index: llvm/test/Regression/Assembler/2003-05-15-SwitchBug.ll diff -u llvm/test/Regression/Assembler/2003-05-15-SwitchBug.ll:1.1 llvm/test/Regression/Assembler/2003-05-15-SwitchBug.ll:1.2 --- llvm/test/Regression/Assembler/2003-05-15-SwitchBug.ll:1.1 Thu May 15 16:02:11 2003 +++ llvm/test/Regression/Assembler/2003-05-15-SwitchBug.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + void %test(int %X) { Index: llvm/test/Regression/Assembler/2003-05-21-ConstantShiftExpr.ll diff -u llvm/test/Regression/Assembler/2003-05-21-ConstantShiftExpr.ll:1.1 llvm/test/Regression/Assembler/2003-05-21-ConstantShiftExpr.ll:1.2 --- llvm/test/Regression/Assembler/2003-05-21-ConstantShiftExpr.ll:1.1 Wed May 21 12:34:24 2003 +++ llvm/test/Regression/Assembler/2003-05-21-ConstantShiftExpr.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; Test that shift instructions can be used in constant expressions. global int shl (int 7, ubyte 19) Index: llvm/test/Regression/Assembler/2003-05-21-EmptyStructTest.ll diff -u llvm/test/Regression/Assembler/2003-05-21-EmptyStructTest.ll:1.1 llvm/test/Regression/Assembler/2003-05-21-EmptyStructTest.ll:1.2 --- llvm/test/Regression/Assembler/2003-05-21-EmptyStructTest.ll:1.1 Wed May 21 10:52:37 2003 +++ llvm/test/Regression/Assembler/2003-05-21-EmptyStructTest.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; The old C front-end never generated empty structures, now the new one ; can. For some reason we never handled them in the parser. Wierd. Index: llvm/test/Regression/Assembler/2003-06-30-RecursiveTypeProblem.ll diff -u llvm/test/Regression/Assembler/2003-06-30-RecursiveTypeProblem.ll:1.1 llvm/test/Regression/Assembler/2003-06-30-RecursiveTypeProblem.ll:1.2 --- llvm/test/Regression/Assembler/2003-06-30-RecursiveTypeProblem.ll:1.1 Mon Jun 30 17:03:21 2003 +++ llvm/test/Regression/Assembler/2003-06-30-RecursiveTypeProblem.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + %MidFnTy = type void (void (%MidFnTy* )*) Index: llvm/test/Regression/Assembler/2003-10-04-NotMergingGlobalConstants.ll diff -u llvm/test/Regression/Assembler/2003-10-04-NotMergingGlobalConstants.ll:1.1 llvm/test/Regression/Assembler/2003-10-04-NotMergingGlobalConstants.ll:1.2 --- llvm/test/Regression/Assembler/2003-10-04-NotMergingGlobalConstants.ll:1.1 Sat Oct 4 13:27:51 2003 +++ llvm/test/Regression/Assembler/2003-10-04-NotMergingGlobalConstants.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + %T = type opaque %X = global %T* null Index: llvm/test/Regression/Assembler/2004-01-22-FloatNormalization.ll diff -u llvm/test/Regression/Assembler/2004-01-22-FloatNormalization.ll:1.1 llvm/test/Regression/Assembler/2004-01-22-FloatNormalization.ll:1.2 --- llvm/test/Regression/Assembler/2004-01-22-FloatNormalization.ll:1.1 Thu Jan 22 18:54:26 2004 +++ llvm/test/Regression/Assembler/2004-01-22-FloatNormalization.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; make sure that 'float' values have their value properly truncated. global float 0x1 Index: llvm/test/Regression/Assembler/2004-02-27-SelfUseAssertError.ll diff -u llvm/test/Regression/Assembler/2004-02-27-SelfUseAssertError.ll:1.1 llvm/test/Regression/Assembler/2004-02-27-SelfUseAssertError.ll:1.2 --- llvm/test/Regression/Assembler/2004-02-27-SelfUseAssertError.ll:1.1 Fri Feb 27 11:26:08 2004 +++ llvm/test/Regression/Assembler/2004-02-27-SelfUseAssertError.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + ; %inc2 uses it's own value, but that's ok, as it's unreachable! void %test() { Index: llvm/test/Regression/Assembler/2004-04-04-GetElementPtrIndexTypes.ll diff -u llvm/test/Regression/Assembler/2004-04-04-GetElementPtrIndexTypes.ll:1.1 llvm/test/Regression/Assembler/2004-04-04-GetElementPtrIndexTypes.ll:1.2 --- llvm/test/Regression/Assembler/2004-04-04-GetElementPtrIndexTypes.ll:1.1 Thu Jul 8 10:41:08 2004 +++ llvm/test/Regression/Assembler/2004-04-04-GetElementPtrIndexTypes.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + Index: llvm/test/Regression/Assembler/select.ll diff -u llvm/test/Regression/Assembler/select.ll:1.1 llvm/test/Regression/Assembler/select.ll:1.2 --- llvm/test/Regression/Assembler/select.ll:1.1 Thu Mar 11 23:50:02 2004 +++ llvm/test/Regression/Assembler/select.ll Sat Nov 6 16:07:09 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as < %s -o /dev/null -f + int %test(bool %C, int %V1, int %V2) { From tbrethou at cs.uiuc.edu Sat Nov 6 16:30:07 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 16:30:07 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/C++Frontend/2003-08-20-ExceptionFail.cpp 2003-08-21-EmptyClass.cpp 2003-08-27-TypeNamespaces.cpp 2003-08-28-ForwardType.cpp 2003-08-28-SaveExprBug.cpp 2003-08-31-StructLayout.cpp 2003-09-22-CompositeExprValue.cpp 2003-09-29-ArgumentNumberMismatch.cpp 2003-09-30-CommaExprBug.cpp 2003-09-30-ForIncrementExprBug.cpp 2003-09-30-ForIncrementExprBug2.cpp 2003-09-30-NestedFunctionDecl.cpp 2003-10-17-BoolBitfields.cpp 2003-10-27-VirtualBaseClassCrash.cpp 2003-11-04-ArrayConstructors.cpp 2003-11-04-CatchLabelName.cpp 2003-11-18-EnumArray.cpp 2003-11-18-PtrMemConstantInitializer.cpp 2003-11-25-ReturningOpaqueByValue.cpp 2003-11-27-MultipleInheritanceThunk.cpp 2003-11-29-DuplicatedCleanupTest.cpp 2003-12-08-ArrayOfPtrToMemberFunc.cpp 2004-03-08-ReinterpretCastCopy.cpp 2004-03-15-CleanupsAndGotos.cpp 2004-06-08-LateTemplateInstantiation.cpp 2004-09-27-CompilerCrash.cpp Message-ID: <200411062230.QAA29680@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/C++Frontend: 2003-08-20-ExceptionFail.cpp updated: 1.2 -> 1.3 2003-08-21-EmptyClass.cpp updated: 1.3 -> 1.4 2003-08-27-TypeNamespaces.cpp updated: 1.1 -> 1.2 2003-08-28-ForwardType.cpp updated: 1.2 -> 1.3 2003-08-28-SaveExprBug.cpp updated: 1.1 -> 1.2 2003-08-31-StructLayout.cpp updated: 1.1 -> 1.2 2003-09-22-CompositeExprValue.cpp updated: 1.1 -> 1.2 2003-09-29-ArgumentNumberMismatch.cpp updated: 1.2 -> 1.3 2003-09-30-CommaExprBug.cpp updated: 1.1 -> 1.2 2003-09-30-ForIncrementExprBug.cpp updated: 1.1 -> 1.2 2003-09-30-ForIncrementExprBug2.cpp updated: 1.1 -> 1.2 2003-09-30-NestedFunctionDecl.cpp updated: 1.1 -> 1.2 2003-10-17-BoolBitfields.cpp updated: 1.1 -> 1.2 2003-10-27-VirtualBaseClassCrash.cpp updated: 1.1 -> 1.2 2003-11-04-ArrayConstructors.cpp updated: 1.2 -> 1.3 2003-11-04-CatchLabelName.cpp updated: 1.1 -> 1.2 2003-11-18-EnumArray.cpp updated: 1.1 -> 1.2 2003-11-18-PtrMemConstantInitializer.cpp updated: 1.1 -> 1.2 2003-11-25-ReturningOpaqueByValue.cpp updated: 1.1 -> 1.2 2003-11-27-MultipleInheritanceThunk.cpp updated: 1.1 -> 1.2 2003-11-29-DuplicatedCleanupTest.cpp updated: 1.1 -> 1.2 2003-12-08-ArrayOfPtrToMemberFunc.cpp updated: 1.1 -> 1.2 2004-03-08-ReinterpretCastCopy.cpp updated: 1.1 -> 1.2 2004-03-15-CleanupsAndGotos.cpp updated: 1.4 -> 1.5 2004-06-08-LateTemplateInstantiation.cpp updated: 1.1 -> 1.2 2004-09-27-CompilerCrash.cpp updated: 1.1 -> 1.2 --- Log message: Adding RUN lines. --- Diffs of the changes: (+52 -0) Index: llvm/test/Regression/C++Frontend/2003-08-20-ExceptionFail.cpp diff -u llvm/test/Regression/C++Frontend/2003-08-20-ExceptionFail.cpp:1.2 llvm/test/Regression/C++Frontend/2003-08-20-ExceptionFail.cpp:1.3 --- llvm/test/Regression/C++Frontend/2003-08-20-ExceptionFail.cpp:1.2 Wed Aug 20 15:36:09 2003 +++ llvm/test/Regression/C++Frontend/2003-08-20-ExceptionFail.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + void foo(); void bar() { Index: llvm/test/Regression/C++Frontend/2003-08-21-EmptyClass.cpp diff -u llvm/test/Regression/C++Frontend/2003-08-21-EmptyClass.cpp:1.3 llvm/test/Regression/C++Frontend/2003-08-21-EmptyClass.cpp:1.4 --- llvm/test/Regression/C++Frontend/2003-08-21-EmptyClass.cpp:1.3 Thu Aug 21 23:36:12 2003 +++ llvm/test/Regression/C++Frontend/2003-08-21-EmptyClass.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + // This tests compilation of EMPTY_CLASS_EXPR's struct empty {}; Index: llvm/test/Regression/C++Frontend/2003-08-27-TypeNamespaces.cpp diff -u llvm/test/Regression/C++Frontend/2003-08-27-TypeNamespaces.cpp:1.1 llvm/test/Regression/C++Frontend/2003-08-27-TypeNamespaces.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-08-27-TypeNamespaces.cpp:1.1 Wed Sep 17 00:00:56 2003 +++ llvm/test/Regression/C++Frontend/2003-08-27-TypeNamespaces.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + namespace foo { namespace bar { Index: llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp diff -u llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp:1.2 llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp:1.3 --- llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp:1.2 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/C++Frontend/2003-08-28-ForwardType.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + // XFAIL: darwin,sun // Default placement versions of operator new. inline void* operator new(unsigned, void* __p) throw(); Index: llvm/test/Regression/C++Frontend/2003-08-28-SaveExprBug.cpp diff -u llvm/test/Regression/C++Frontend/2003-08-28-SaveExprBug.cpp:1.1 llvm/test/Regression/C++Frontend/2003-08-28-SaveExprBug.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-08-28-SaveExprBug.cpp:1.1 Thu Aug 28 19:03:45 2003 +++ llvm/test/Regression/C++Frontend/2003-08-28-SaveExprBug.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + char* eback(); Index: llvm/test/Regression/C++Frontend/2003-08-31-StructLayout.cpp diff -u llvm/test/Regression/C++Frontend/2003-08-31-StructLayout.cpp:1.1 llvm/test/Regression/C++Frontend/2003-08-31-StructLayout.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-08-31-StructLayout.cpp:1.1 Sun Aug 31 01:53:05 2003 +++ llvm/test/Regression/C++Frontend/2003-08-31-StructLayout.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + // There is a HOLE in the derived2 object due to not wanting to place the two // baseclass instances at the same offset! Index: llvm/test/Regression/C++Frontend/2003-09-22-CompositeExprValue.cpp diff -u llvm/test/Regression/C++Frontend/2003-09-22-CompositeExprValue.cpp:1.1 llvm/test/Regression/C++Frontend/2003-09-22-CompositeExprValue.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-09-22-CompositeExprValue.cpp:1.1 Mon Sep 22 13:27:20 2003 +++ llvm/test/Regression/C++Frontend/2003-09-22-CompositeExprValue.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + struct duration { duration operator/=(int c) { return *this; Index: llvm/test/Regression/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp diff -u llvm/test/Regression/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp:1.2 llvm/test/Regression/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp:1.3 --- llvm/test/Regression/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp:1.2 Mon Sep 29 16:53:04 2003 +++ llvm/test/Regression/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + // Non-POD classes cannot be passed into a function by component, because their // dtors must be run. Instead, pass them in by reference. The C++ front-end // was mistakenly "thinking" that 'foo' took a structure by component. Index: llvm/test/Regression/C++Frontend/2003-09-30-CommaExprBug.cpp diff -u llvm/test/Regression/C++Frontend/2003-09-30-CommaExprBug.cpp:1.1 llvm/test/Regression/C++Frontend/2003-09-30-CommaExprBug.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-09-30-CommaExprBug.cpp:1.1 Tue Sep 30 16:46:23 2003 +++ llvm/test/Regression/C++Frontend/2003-09-30-CommaExprBug.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + class Empty {}; void foo(Empty E); Index: llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug.cpp diff -u llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug.cpp:1.1 llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug.cpp:1.1 Tue Sep 30 16:29:27 2003 +++ llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + struct C {}; C &foo(); Index: llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug2.cpp diff -u llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug2.cpp:1.1 llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug2.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug2.cpp:1.1 Tue Sep 30 16:31:25 2003 +++ llvm/test/Regression/C++Frontend/2003-09-30-ForIncrementExprBug2.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + // Test with an opaque type struct C; Index: llvm/test/Regression/C++Frontend/2003-09-30-NestedFunctionDecl.cpp diff -u llvm/test/Regression/C++Frontend/2003-09-30-NestedFunctionDecl.cpp:1.1 llvm/test/Regression/C++Frontend/2003-09-30-NestedFunctionDecl.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-09-30-NestedFunctionDecl.cpp:1.1 Tue Sep 30 10:40:25 2003 +++ llvm/test/Regression/C++Frontend/2003-09-30-NestedFunctionDecl.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + // The C++ front-end thinks the two foo's are different, the LLVM emitter // thinks they are the same. The disconnect causes problems. Index: llvm/test/Regression/C++Frontend/2003-10-17-BoolBitfields.cpp diff -u llvm/test/Regression/C++Frontend/2003-10-17-BoolBitfields.cpp:1.1 llvm/test/Regression/C++Frontend/2003-10-17-BoolBitfields.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-10-17-BoolBitfields.cpp:1.1 Fri Oct 17 00:20:51 2003 +++ llvm/test/Regression/C++Frontend/2003-10-17-BoolBitfields.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + struct test { bool A : 1; bool B : 1; Index: llvm/test/Regression/C++Frontend/2003-10-27-VirtualBaseClassCrash.cpp diff -u llvm/test/Regression/C++Frontend/2003-10-27-VirtualBaseClassCrash.cpp:1.1 llvm/test/Regression/C++Frontend/2003-10-27-VirtualBaseClassCrash.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-10-27-VirtualBaseClassCrash.cpp:1.1 Mon Oct 27 11:51:31 2003 +++ llvm/test/Regression/C++Frontend/2003-10-27-VirtualBaseClassCrash.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + template struct super { Index: llvm/test/Regression/C++Frontend/2003-11-04-ArrayConstructors.cpp diff -u llvm/test/Regression/C++Frontend/2003-11-04-ArrayConstructors.cpp:1.2 llvm/test/Regression/C++Frontend/2003-11-04-ArrayConstructors.cpp:1.3 --- llvm/test/Regression/C++Frontend/2003-11-04-ArrayConstructors.cpp:1.2 Tue Nov 4 23:31:24 2003 +++ llvm/test/Regression/C++Frontend/2003-11-04-ArrayConstructors.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + struct Foo { Foo(int); Index: llvm/test/Regression/C++Frontend/2003-11-04-CatchLabelName.cpp diff -u llvm/test/Regression/C++Frontend/2003-11-04-CatchLabelName.cpp:1.1 llvm/test/Regression/C++Frontend/2003-11-04-CatchLabelName.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-11-04-CatchLabelName.cpp:1.1 Tue Nov 4 19:36:49 2003 +++ llvm/test/Regression/C++Frontend/2003-11-04-CatchLabelName.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + #include void bar(); Index: llvm/test/Regression/C++Frontend/2003-11-18-EnumArray.cpp diff -u llvm/test/Regression/C++Frontend/2003-11-18-EnumArray.cpp:1.1 llvm/test/Regression/C++Frontend/2003-11-18-EnumArray.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-11-18-EnumArray.cpp:1.1 Tue Nov 18 14:30:00 2003 +++ llvm/test/Regression/C++Frontend/2003-11-18-EnumArray.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + enum TchkType { tchkNum, tchkString, tchkSCN, tchkNone }; Index: llvm/test/Regression/C++Frontend/2003-11-18-PtrMemConstantInitializer.cpp diff -u llvm/test/Regression/C++Frontend/2003-11-18-PtrMemConstantInitializer.cpp:1.1 llvm/test/Regression/C++Frontend/2003-11-18-PtrMemConstantInitializer.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-11-18-PtrMemConstantInitializer.cpp:1.1 Tue Nov 18 14:24:46 2003 +++ llvm/test/Regression/C++Frontend/2003-11-18-PtrMemConstantInitializer.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + struct Gfx { void opMoveSetShowText(); }; Index: llvm/test/Regression/C++Frontend/2003-11-25-ReturningOpaqueByValue.cpp diff -u llvm/test/Regression/C++Frontend/2003-11-25-ReturningOpaqueByValue.cpp:1.1 llvm/test/Regression/C++Frontend/2003-11-25-ReturningOpaqueByValue.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-11-25-ReturningOpaqueByValue.cpp:1.1 Tue Nov 25 02:45:38 2003 +++ llvm/test/Regression/C++Frontend/2003-11-25-ReturningOpaqueByValue.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + #include std::vector my_method (); Index: llvm/test/Regression/C++Frontend/2003-11-27-MultipleInheritanceThunk.cpp diff -u llvm/test/Regression/C++Frontend/2003-11-27-MultipleInheritanceThunk.cpp:1.1 llvm/test/Regression/C++Frontend/2003-11-27-MultipleInheritanceThunk.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-11-27-MultipleInheritanceThunk.cpp:1.1 Thu Nov 27 19:32:03 2003 +++ llvm/test/Regression/C++Frontend/2003-11-27-MultipleInheritanceThunk.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + struct CallSite { int X; Index: llvm/test/Regression/C++Frontend/2003-11-29-DuplicatedCleanupTest.cpp diff -u llvm/test/Regression/C++Frontend/2003-11-29-DuplicatedCleanupTest.cpp:1.1 llvm/test/Regression/C++Frontend/2003-11-29-DuplicatedCleanupTest.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-11-29-DuplicatedCleanupTest.cpp:1.1 Sat Nov 29 03:10:50 2003 +++ llvm/test/Regression/C++Frontend/2003-11-29-DuplicatedCleanupTest.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + void doesntThrow() throw(); struct F { Index: llvm/test/Regression/C++Frontend/2003-12-08-ArrayOfPtrToMemberFunc.cpp diff -u llvm/test/Regression/C++Frontend/2003-12-08-ArrayOfPtrToMemberFunc.cpp:1.1 llvm/test/Regression/C++Frontend/2003-12-08-ArrayOfPtrToMemberFunc.cpp:1.2 --- llvm/test/Regression/C++Frontend/2003-12-08-ArrayOfPtrToMemberFunc.cpp:1.1 Mon Dec 8 00:18:37 2003 +++ llvm/test/Regression/C++Frontend/2003-12-08-ArrayOfPtrToMemberFunc.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + struct Evil { void fun (); }; Index: llvm/test/Regression/C++Frontend/2004-03-08-ReinterpretCastCopy.cpp diff -u llvm/test/Regression/C++Frontend/2004-03-08-ReinterpretCastCopy.cpp:1.1 llvm/test/Regression/C++Frontend/2004-03-08-ReinterpretCastCopy.cpp:1.2 --- llvm/test/Regression/C++Frontend/2004-03-08-ReinterpretCastCopy.cpp:1.1 Mon Mar 8 18:55:58 2004 +++ llvm/test/Regression/C++Frontend/2004-03-08-ReinterpretCastCopy.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + struct A { virtual void Method() = 0; }; Index: llvm/test/Regression/C++Frontend/2004-03-15-CleanupsAndGotos.cpp diff -u llvm/test/Regression/C++Frontend/2004-03-15-CleanupsAndGotos.cpp:1.4 llvm/test/Regression/C++Frontend/2004-03-15-CleanupsAndGotos.cpp:1.5 --- llvm/test/Regression/C++Frontend/2004-03-15-CleanupsAndGotos.cpp:1.4 Mon Mar 15 23:18:24 2004 +++ llvm/test/Regression/C++Frontend/2004-03-15-CleanupsAndGotos.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + // Testcase from Bug 291 struct X { Index: llvm/test/Regression/C++Frontend/2004-06-08-LateTemplateInstantiation.cpp diff -u llvm/test/Regression/C++Frontend/2004-06-08-LateTemplateInstantiation.cpp:1.1 llvm/test/Regression/C++Frontend/2004-06-08-LateTemplateInstantiation.cpp:1.2 --- llvm/test/Regression/C++Frontend/2004-06-08-LateTemplateInstantiation.cpp:1.1 Tue Jun 8 02:11:14 2004 +++ llvm/test/Regression/C++Frontend/2004-06-08-LateTemplateInstantiation.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + template Index: llvm/test/Regression/C++Frontend/2004-09-27-CompilerCrash.cpp diff -u llvm/test/Regression/C++Frontend/2004-09-27-CompilerCrash.cpp:1.1 llvm/test/Regression/C++Frontend/2004-09-27-CompilerCrash.cpp:1.2 --- llvm/test/Regression/C++Frontend/2004-09-27-CompilerCrash.cpp:1.1 Mon Sep 27 21:29:40 2004 +++ llvm/test/Regression/C++Frontend/2004-09-27-CompilerCrash.cpp Sat Nov 6 16:29:57 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null + struct Pass {} ; From lattner at cs.uiuc.edu Sat Nov 6 16:33:26 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 16:33:26 -0600 Subject: [llvm-commits] CVS: poolalloc/test/Makefile Message-ID: <200411062233.iA6MXQea002680@apoc.cs.uiuc.edu> Changes in directory poolalloc/test: Makefile updated: 1.23 -> 1.24 --- Log message: Run the pool allocator with stable numbers --- Diffs of the changes: (+1 -1) Index: poolalloc/test/Makefile diff -u poolalloc/test/Makefile:1.23 poolalloc/test/Makefile:1.24 --- poolalloc/test/Makefile:1.23 Wed Nov 3 10:34:25 2004 +++ poolalloc/test/Makefile Sat Nov 6 16:33:14 2004 @@ -133,7 +133,7 @@ test:: (cd $(LLVM_OBJ_ROOT)/projects/llvm-test/$(SUBDIR); \ PROJECT_DIR=$(BUILD_OBJ_ROOT) $(MAKE) -j1 TEST=poolalloc \ - report report.html) + GET_STABLE_NUMBERS=1 report report.html) @printf "\a"; sleep 1; printf "\a"; sleep 1; printf "\a" vtl:: From lattner at cs.uiuc.edu Sat Nov 6 16:35:58 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 16:35:58 -0600 Subject: [llvm-commits] CVS: llvm-test/External/FPGrowth/input Message-ID: <200411062235.iA6MZw3K003013@apoc.cs.uiuc.edu> Changes in directory llvm-test/External/FPGrowth: input updated: 1.1 -> 1.2 --- Log message: Reduce the runtime of this program by about 4x --- Diffs of the changes: (+1 -2) Index: llvm-test/External/FPGrowth/input diff -u llvm-test/External/FPGrowth/input:1.1 llvm-test/External/FPGrowth/input:1.2 --- llvm-test/External/FPGrowth/input:1.1 Thu Nov 4 09:36:53 2004 +++ llvm-test/External/FPGrowth/input Sat Nov 6 16:35:45 2004 @@ -1,2 +1 @@ -100 - +200 From tbrethou at cs.uiuc.edu Sat Nov 6 16:41:11 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 16:41:11 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CFrontend/2002-01-23-LoadQISIReloadFailure.c 2002-01-24-ComplexSpaceInType.c 2002-01-24-HandleCallInsnSEGV.c 2002-02-13-ConditionalInCall.c 2002-02-13-ReloadProblem.c 2002-02-13-TypeVarNameCollision.c 2002-02-13-UnnamedLocal.c 2002-02-14-EntryNodePreds.c 2002-02-16-RenamingTest.c 2002-02-17-ArgumentAddress.c 2002-02-18-64bitConstant.c 2002-02-18-StaticData.c 2002-03-11-LargeCharInString.c 2002-03-12-ArrayInitialization.c 2002-03-12-StructInitialize.c 2002-03-12-StructInitializer.c 2002-03-14-BrokenPHINode.c 2002-03-14-BrokenSSA.c 2002-03-14-QuotesInStrConst.c 2002-04-07-SwitchStmt.c 2002-04-08-LocalArray.c 2002-04-09-StructRetVal.c 2002-04-10-StructParameters.c 2002-05-23-StaticValues.c 2002-05-23-TypeNameCollision.c 2002-05-24-Alloca.c 2002-06-25-FWriteInterfaceFailure.c 2002-07-14-MiscListTests.c 2002-07-14-MiscTests.c 2002-07-14-MiscTests2.c 2002-07-14-MiscTests3.c 2002-07-16-HardStringInit.c 2002-07-17-StringConstant.c 2002-07-29-Casts! .c 2002-07-30-SubregSetAssertion.c 2002-07-30-UnionTest.c 2002-07-30-VarArgsCallFailure.c 2002-07-31-BadAssert.c 2002-07-31-SubregFailure.c 2002-08-02-UnionTest.c 2002-08-19-RecursiveLocals.c 2002-09-08-PointerShifts.c 2002-09-18-UnionProblem.c 2002-09-19-StarInLabel.c 2002-10-12-TooManyArguments.c 2002-11-07-Redefinition.c 2002-12-15-GlobalBoolTest.c 2002-12-15-GlobalConstantTest.c 2002-12-15-GlobalRedefinition.c 2002-12-15-StructParameters.c 2003-01-30-UnionInit.c 2003-02-12-NonlocalGoto.c 2003-03-03-DeferredType.c 2003-06-22-UnionCrash.c 2003-06-23-GCC-fold-infinite-recursion.c 2003-06-26-CFECrash.c 2003-06-29-MultipleFunctionDefinition.c 2003-08-18-SigSetJmp.c 2003-08-18-StructAsValue.c 2003-08-20-BadBitfieldRef.c 2003-08-20-PrototypeMismatch.c 2003-08-20-vfork-bug.c 2003-08-21-BinOp-Type-Mismatch.c 2003-08-21-StmtExpr.c 2003-08-21-WideString.c 2003-08-23-LocalUnionTest.c 2003-08-29-BitFieldStruct.c 2003-08-29-HugeCharConst.c 2003-08-29-StructLayoutBug.c 2003-08-30-Aggr! egateInitializer.c 2003-08-30-LargeIntegerBitfieldMember.c 2003-09-18- Message-ID: <200411062241.QAA30207@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CFrontend: 2002-01-23-LoadQISIReloadFailure.c updated: 1.1 -> 1.2 2002-01-24-ComplexSpaceInType.c updated: 1.1 -> 1.2 2002-01-24-HandleCallInsnSEGV.c updated: 1.1 -> 1.2 2002-02-13-ConditionalInCall.c updated: 1.1 -> 1.2 2002-02-13-ReloadProblem.c updated: 1.2 -> 1.3 2002-02-13-TypeVarNameCollision.c updated: 1.1 -> 1.2 2002-02-13-UnnamedLocal.c updated: 1.1 -> 1.2 2002-02-14-EntryNodePreds.c updated: 1.1 -> 1.2 2002-02-16-RenamingTest.c updated: 1.1 -> 1.2 2002-02-17-ArgumentAddress.c updated: 1.1 -> 1.2 2002-02-18-64bitConstant.c updated: 1.1 -> 1.2 2002-02-18-StaticData.c updated: 1.1 -> 1.2 2002-03-11-LargeCharInString.c updated: 1.1 -> 1.2 2002-03-12-ArrayInitialization.c updated: 1.1 -> 1.2 2002-03-12-StructInitialize.c updated: 1.1 -> 1.2 2002-03-12-StructInitializer.c updated: 1.1 -> 1.2 2002-03-14-BrokenPHINode.c updated: 1.1 -> 1.2 2002-03-14-BrokenSSA.c updated: 1.1 -> 1.2 2002-03-14-QuotesInStrConst.c updated: 1.1 -> 1.2 2002-04-07-SwitchStmt.c updated: 1.1 -> 1.2 2002-04-08-LocalArray.c updated: 1.1 -> 1.2 2002-04-09-StructRetVal.c updated: 1.1 -> 1.2 2002-04-10-StructParameters.c updated: 1.1 -> 1.2 2002-05-23-StaticValues.c updated: 1.1 -> 1.2 2002-05-23-TypeNameCollision.c updated: 1.2 -> 1.3 2002-05-24-Alloca.c updated: 1.1 -> 1.2 2002-06-25-FWriteInterfaceFailure.c updated: 1.1 -> 1.2 2002-07-14-MiscListTests.c updated: 1.1 -> 1.2 2002-07-14-MiscTests.c updated: 1.1 -> 1.2 2002-07-14-MiscTests2.c updated: 1.1 -> 1.2 2002-07-14-MiscTests3.c updated: 1.1 -> 1.2 2002-07-16-HardStringInit.c updated: 1.1 -> 1.2 2002-07-17-StringConstant.c updated: 1.1 -> 1.2 2002-07-29-Casts.c updated: 1.3 -> 1.4 2002-07-30-SubregSetAssertion.c updated: 1.3 -> 1.4 2002-07-30-UnionTest.c updated: 1.1 -> 1.2 2002-07-30-VarArgsCallFailure.c updated: 1.2 -> 1.3 2002-07-31-BadAssert.c updated: 1.1 -> 1.2 2002-07-31-SubregFailure.c updated: 1.1 -> 1.2 2002-08-02-UnionTest.c updated: 1.1 -> 1.2 2002-08-19-RecursiveLocals.c updated: 1.1 -> 1.2 2002-09-08-PointerShifts.c updated: 1.1 -> 1.2 2002-09-18-UnionProblem.c updated: 1.1 -> 1.2 2002-09-19-StarInLabel.c updated: 1.1 -> 1.2 2002-10-12-TooManyArguments.c updated: 1.1 -> 1.2 2002-11-07-Redefinition.c updated: 1.1 -> 1.2 2002-12-15-GlobalBoolTest.c updated: 1.1 -> 1.2 2002-12-15-GlobalConstantTest.c updated: 1.1 -> 1.2 2002-12-15-GlobalRedefinition.c updated: 1.1 -> 1.2 2002-12-15-StructParameters.c updated: 1.1 -> 1.2 2003-01-30-UnionInit.c updated: 1.2 -> 1.3 2003-02-12-NonlocalGoto.c updated: 1.3 -> 1.4 2003-03-03-DeferredType.c updated: 1.1 -> 1.2 2003-06-22-UnionCrash.c updated: 1.1 -> 1.2 2003-06-23-GCC-fold-infinite-recursion.c updated: 1.1 -> 1.2 2003-06-26-CFECrash.c updated: 1.1 -> 1.2 2003-06-29-MultipleFunctionDefinition.c updated: 1.3 -> 1.4 2003-08-18-SigSetJmp.c updated: 1.1 -> 1.2 2003-08-18-StructAsValue.c updated: 1.2 -> 1.3 2003-08-20-BadBitfieldRef.c updated: 1.1 -> 1.2 2003-08-20-PrototypeMismatch.c updated: 1.1 -> 1.2 2003-08-20-vfork-bug.c updated: 1.1 -> 1.2 2003-08-21-BinOp-Type-Mismatch.c updated: 1.1 -> 1.2 2003-08-21-StmtExpr.c updated: 1.1 -> 1.2 2003-08-21-WideString.c updated: 1.1 -> 1.2 2003-08-23-LocalUnionTest.c updated: 1.1 -> 1.2 2003-08-29-BitFieldStruct.c updated: 1.2 -> 1.3 2003-08-29-HugeCharConst.c updated: 1.1 -> 1.2 2003-08-29-StructLayoutBug.c updated: 1.1 -> 1.2 2003-08-30-AggregateInitializer.c updated: 1.2 -> 1.3 2003-08-30-LargeIntegerBitfieldMember.c updated: 1.2 -> 1.3 2003-09-18-BitfieldTests.c updated: 1.1 -> 1.2 2003-09-30-StructLayout.c updated: 1.1 -> 1.2 2003-10-02-UnionLValueError.c updated: 1.1 -> 1.2 2003-10-06-NegateExprType.c updated: 1.1 -> 1.2 2003-10-09-UnionInitializerBug.c updated: 1.1 -> 1.2 2003-10-28-ident.c updated: 1.1 -> 1.2 2003-10-29-AsmRename.c updated: 1.1 -> 1.2 2003-11-01-C99-CompoundLiteral.c updated: 1.1 -> 1.2 2003-11-01-EmptyStructCrash.c updated: 1.1 -> 1.2 2003-11-01-GlobalUnionInit.c updated: 1.1 -> 1.2 2003-11-04-EmptyStruct.c updated: 1.2 -> 1.3 2003-11-04-OutOfMemory.c updated: 1.1 -> 1.2 2003-11-12-VoidString.c updated: 1.1 -> 1.2 2003-11-16-StaticArrayInit.c updated: 1.1 -> 1.2 2003-11-18-CondExprLValue.c updated: 1.1 -> 1.2 2003-11-19-BitFieldArray.c updated: 1.1 -> 1.2 2003-11-20-Bitfields.c updated: 1.1 -> 1.2 2003-11-20-ComplexDivision.c updated: 1.1 -> 1.2 2003-11-20-UnionBitfield.c updated: 1.1 -> 1.2 2003-11-26-PointerShift.c updated: 1.1 -> 1.2 2003-11-27-ConstructorCast.c updated: 1.1 -> 1.2 2003-11-27-UnionCtorInitialization.c updated: 1.1 -> 1.2 2004-01-01-UnknownInitSize.c updated: 1.2 -> 1.3 2004-01-08-ExternInlineRedefine.c updated: 1.1 -> 1.2 2004-03-07-BitfieldCrash.c updated: 1.2 -> 1.3 2004-03-07-ComplexDivEquals.c updated: 1.1 -> 1.2 2004-03-09-LargeArrayInitializers.c updated: 1.1 -> 1.2 2004-03-15-SimpleIndirectGoto.c updated: 1.1 -> 1.2 2004-03-16-AsmRegisterCrash.c updated: 1.1 -> 1.2 2004-05-07-VarArrays.c updated: 1.1 -> 1.2 2004-05-21-IncompleteEnum.c updated: 1.1 -> 1.2 2004-06-08-OpaqueStructArg.c updated: 1.1 -> 1.2 2004-06-17-UnorderedBuiltins.c updated: 1.1 -> 1.2 2004-06-18-VariableLengthArrayOfStructures.c updated: 1.1 -> 1.2 2004-07-06-FunctionCast.c updated: 1.1 -> 1.2 2004-08-06-LargeStructTest.c updated: 1.1 -> 1.2 --- Log message: Adding RUN lines. --- Diffs of the changes: (+214 -0) Index: llvm/test/Regression/CFrontend/2002-01-23-LoadQISIReloadFailure.c diff -u llvm/test/Regression/CFrontend/2002-01-23-LoadQISIReloadFailure.c:1.1 llvm/test/Regression/CFrontend/2002-01-23-LoadQISIReloadFailure.c:1.2 --- llvm/test/Regression/CFrontend/2002-01-23-LoadQISIReloadFailure.c:1.1 Wed Jan 23 15:40:57 2002 +++ llvm/test/Regression/CFrontend/2002-01-23-LoadQISIReloadFailure.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* Regression test. Just compile .c -> .ll to test */ int foo(void) { unsigned char *pp; Index: llvm/test/Regression/CFrontend/2002-01-24-ComplexSpaceInType.c diff -u llvm/test/Regression/CFrontend/2002-01-24-ComplexSpaceInType.c:1.1 llvm/test/Regression/CFrontend/2002-01-24-ComplexSpaceInType.c:1.2 --- llvm/test/Regression/CFrontend/2002-01-24-ComplexSpaceInType.c:1.1 Thu Jan 24 14:45:45 2002 +++ llvm/test/Regression/CFrontend/2002-01-24-ComplexSpaceInType.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + // This caused generation of the following type name: // %Array = uninitialized global [10 x %complex int] // Index: llvm/test/Regression/CFrontend/2002-01-24-HandleCallInsnSEGV.c diff -u llvm/test/Regression/CFrontend/2002-01-24-HandleCallInsnSEGV.c:1.1 llvm/test/Regression/CFrontend/2002-01-24-HandleCallInsnSEGV.c:1.2 --- llvm/test/Regression/CFrontend/2002-01-24-HandleCallInsnSEGV.c:1.1 Thu Jan 24 13:50:30 2002 +++ llvm/test/Regression/CFrontend/2002-01-24-HandleCallInsnSEGV.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void *dlclose(void*); void ap_os_dso_unload(void *handle) Index: llvm/test/Regression/CFrontend/2002-02-13-ConditionalInCall.c diff -u llvm/test/Regression/CFrontend/2002-02-13-ConditionalInCall.c:1.1 llvm/test/Regression/CFrontend/2002-02-13-ConditionalInCall.c:1.2 --- llvm/test/Regression/CFrontend/2002-02-13-ConditionalInCall.c:1.1 Wed Feb 13 14:25:16 2002 +++ llvm/test/Regression/CFrontend/2002-02-13-ConditionalInCall.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* Test problem where bad code was generated with a ?: statement was in a function call argument */ Index: llvm/test/Regression/CFrontend/2002-02-13-ReloadProblem.c diff -u llvm/test/Regression/CFrontend/2002-02-13-ReloadProblem.c:1.2 llvm/test/Regression/CFrontend/2002-02-13-ReloadProblem.c:1.3 --- llvm/test/Regression/CFrontend/2002-02-13-ReloadProblem.c:1.2 Mon Aug 18 09:37:09 2003 +++ llvm/test/Regression/CFrontend/2002-02-13-ReloadProblem.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* This triggered a problem in reload, fixed by disabling most of the * steps of compilation in GCC. Before this change, the code went through * the entire backend of GCC, even though it was unnecessary for LLVM output Index: llvm/test/Regression/CFrontend/2002-02-13-TypeVarNameCollision.c diff -u llvm/test/Regression/CFrontend/2002-02-13-TypeVarNameCollision.c:1.1 llvm/test/Regression/CFrontend/2002-02-13-TypeVarNameCollision.c:1.2 --- llvm/test/Regression/CFrontend/2002-02-13-TypeVarNameCollision.c:1.1 Wed Feb 13 23:41:15 2002 +++ llvm/test/Regression/CFrontend/2002-02-13-TypeVarNameCollision.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* This testcase causes a symbol table collision. Type names and variable * names should be in distinct namespaces */ Index: llvm/test/Regression/CFrontend/2002-02-13-UnnamedLocal.c diff -u llvm/test/Regression/CFrontend/2002-02-13-UnnamedLocal.c:1.1 llvm/test/Regression/CFrontend/2002-02-13-UnnamedLocal.c:1.2 --- llvm/test/Regression/CFrontend/2002-02-13-UnnamedLocal.c:1.1 Wed Feb 13 18:18:44 2002 +++ llvm/test/Regression/CFrontend/2002-02-13-UnnamedLocal.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* Testcase for a problem where GCC allocated xqic to a register, * and did not have a VAR_DECL that explained the stack slot to LLVM. * Now the LLVM code synthesizes a stack slot if one is presented that Index: llvm/test/Regression/CFrontend/2002-02-14-EntryNodePreds.c diff -u llvm/test/Regression/CFrontend/2002-02-14-EntryNodePreds.c:1.1 llvm/test/Regression/CFrontend/2002-02-14-EntryNodePreds.c:1.2 --- llvm/test/Regression/CFrontend/2002-02-14-EntryNodePreds.c:1.1 Thu Mar 14 13:31:32 2002 +++ llvm/test/Regression/CFrontend/2002-02-14-EntryNodePreds.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* GCC Used to generate code that contained a branch to the entry node of * the do_merge function. This is illegal LLVM code. To fix this, GCC now * inserts an entry node regardless of whether or not it has to insert allocas. Index: llvm/test/Regression/CFrontend/2002-02-16-RenamingTest.c diff -u llvm/test/Regression/CFrontend/2002-02-16-RenamingTest.c:1.1 llvm/test/Regression/CFrontend/2002-02-16-RenamingTest.c:1.2 --- llvm/test/Regression/CFrontend/2002-02-16-RenamingTest.c:1.1 Sun Feb 17 00:42:02 2002 +++ llvm/test/Regression/CFrontend/2002-02-16-RenamingTest.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* test that locals are renamed with . notation */ void abc(void *); Index: llvm/test/Regression/CFrontend/2002-02-17-ArgumentAddress.c diff -u llvm/test/Regression/CFrontend/2002-02-17-ArgumentAddress.c:1.1 llvm/test/Regression/CFrontend/2002-02-17-ArgumentAddress.c:1.2 --- llvm/test/Regression/CFrontend/2002-02-17-ArgumentAddress.c:1.1 Mon Apr 8 10:19:02 2002 +++ llvm/test/Regression/CFrontend/2002-02-17-ArgumentAddress.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + int test(int X) { return X; } Index: llvm/test/Regression/CFrontend/2002-02-18-64bitConstant.c diff -u llvm/test/Regression/CFrontend/2002-02-18-64bitConstant.c:1.1 llvm/test/Regression/CFrontend/2002-02-18-64bitConstant.c:1.2 --- llvm/test/Regression/CFrontend/2002-02-18-64bitConstant.c:1.1 Mon Feb 18 13:46:09 2002 +++ llvm/test/Regression/CFrontend/2002-02-18-64bitConstant.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* GCC wasn't handling 64 bit constants right fixed */ void main() { Index: llvm/test/Regression/CFrontend/2002-02-18-StaticData.c diff -u llvm/test/Regression/CFrontend/2002-02-18-StaticData.c:1.1 llvm/test/Regression/CFrontend/2002-02-18-StaticData.c:1.2 --- llvm/test/Regression/CFrontend/2002-02-18-StaticData.c:1.1 Tue Jul 23 13:25:38 2002 +++ llvm/test/Regression/CFrontend/2002-02-18-StaticData.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + double FOO = 17; double BAR = 12.0; Index: llvm/test/Regression/CFrontend/2002-03-11-LargeCharInString.c diff -u llvm/test/Regression/CFrontend/2002-03-11-LargeCharInString.c:1.1 llvm/test/Regression/CFrontend/2002-03-11-LargeCharInString.c:1.2 --- llvm/test/Regression/CFrontend/2002-03-11-LargeCharInString.c:1.1 Mon Mar 11 13:03:41 2002 +++ llvm/test/Regression/CFrontend/2002-03-11-LargeCharInString.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + #include int test(char *X) { Index: llvm/test/Regression/CFrontend/2002-03-12-ArrayInitialization.c diff -u llvm/test/Regression/CFrontend/2002-03-12-ArrayInitialization.c:1.1 llvm/test/Regression/CFrontend/2002-03-12-ArrayInitialization.c:1.2 --- llvm/test/Regression/CFrontend/2002-03-12-ArrayInitialization.c:1.1 Tue Mar 12 11:45:36 2002 +++ llvm/test/Regression/CFrontend/2002-03-12-ArrayInitialization.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* GCC would generate bad code if not enough initializers are specified for an array. */ Index: llvm/test/Regression/CFrontend/2002-03-12-StructInitialize.c diff -u llvm/test/Regression/CFrontend/2002-03-12-StructInitialize.c:1.1 llvm/test/Regression/CFrontend/2002-03-12-StructInitialize.c:1.2 --- llvm/test/Regression/CFrontend/2002-03-12-StructInitialize.c:1.1 Mon Apr 8 14:32:51 2002 +++ llvm/test/Regression/CFrontend/2002-03-12-StructInitialize.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct Connection_Type { long to; Index: llvm/test/Regression/CFrontend/2002-03-12-StructInitializer.c diff -u llvm/test/Regression/CFrontend/2002-03-12-StructInitializer.c:1.1 llvm/test/Regression/CFrontend/2002-03-12-StructInitializer.c:1.2 --- llvm/test/Regression/CFrontend/2002-03-12-StructInitializer.c:1.1 Tue Mar 12 12:56:45 2002 +++ llvm/test/Regression/CFrontend/2002-03-12-StructInitializer.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* GCC was not emitting string constants of the correct length when * embedded into a structure field like this. It thought the strlength * was -1. Index: llvm/test/Regression/CFrontend/2002-03-14-BrokenPHINode.c diff -u llvm/test/Regression/CFrontend/2002-03-14-BrokenPHINode.c:1.1 llvm/test/Regression/CFrontend/2002-03-14-BrokenPHINode.c:1.2 --- llvm/test/Regression/CFrontend/2002-03-14-BrokenPHINode.c:1.1 Thu Mar 14 13:40:44 2002 +++ llvm/test/Regression/CFrontend/2002-03-14-BrokenPHINode.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* GCC was generating PHI nodes with an arity < #pred of the basic block the * PHI node lived in. This was breaking LLVM because the number of entries * in a PHI node must equal the number of predecessors for a basic block. Index: llvm/test/Regression/CFrontend/2002-03-14-BrokenSSA.c diff -u llvm/test/Regression/CFrontend/2002-03-14-BrokenSSA.c:1.1 llvm/test/Regression/CFrontend/2002-03-14-BrokenSSA.c:1.2 --- llvm/test/Regression/CFrontend/2002-03-14-BrokenSSA.c:1.1 Thu Mar 14 13:27:43 2002 +++ llvm/test/Regression/CFrontend/2002-03-14-BrokenSSA.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* This code used to break GCC's SSA computation code. It would create uses of B & C that are not dominated by their definitions. See: http://gcc.gnu.org/ml/gcc/2002-03/msg00697.html Index: llvm/test/Regression/CFrontend/2002-03-14-QuotesInStrConst.c diff -u llvm/test/Regression/CFrontend/2002-03-14-QuotesInStrConst.c:1.1 llvm/test/Regression/CFrontend/2002-03-14-QuotesInStrConst.c:1.2 --- llvm/test/Regression/CFrontend/2002-03-14-QuotesInStrConst.c:1.1 Thu Mar 14 14:16:23 2002 +++ llvm/test/Regression/CFrontend/2002-03-14-QuotesInStrConst.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* GCC was not escaping quotes in string constants correctly, so this would * get emitted: * %.LC1 = internal global [32 x sbyte] c"*** Word "%s" on line %d is not\00" Index: llvm/test/Regression/CFrontend/2002-04-07-SwitchStmt.c diff -u llvm/test/Regression/CFrontend/2002-04-07-SwitchStmt.c:1.1 llvm/test/Regression/CFrontend/2002-04-07-SwitchStmt.c:1.2 --- llvm/test/Regression/CFrontend/2002-04-07-SwitchStmt.c:1.1 Mon Apr 8 13:48:27 2002 +++ llvm/test/Regression/CFrontend/2002-04-07-SwitchStmt.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + int printf(const char *, ...); int foo(); Index: llvm/test/Regression/CFrontend/2002-04-08-LocalArray.c diff -u llvm/test/Regression/CFrontend/2002-04-08-LocalArray.c:1.1 llvm/test/Regression/CFrontend/2002-04-08-LocalArray.c:1.2 --- llvm/test/Regression/CFrontend/2002-04-08-LocalArray.c:1.1 Mon Apr 8 13:48:47 2002 +++ llvm/test/Regression/CFrontend/2002-04-08-LocalArray.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* GCC is not outputting the static array to the LLVM backend, so bad things * happen. Note that if this is defined static, everything seems fine. */ Index: llvm/test/Regression/CFrontend/2002-04-09-StructRetVal.c diff -u llvm/test/Regression/CFrontend/2002-04-09-StructRetVal.c:1.1 llvm/test/Regression/CFrontend/2002-04-09-StructRetVal.c:1.2 --- llvm/test/Regression/CFrontend/2002-04-09-StructRetVal.c:1.1 Tue Jul 23 13:25:39 2002 +++ llvm/test/Regression/CFrontend/2002-04-09-StructRetVal.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct S { int i; short s1, s2; Index: llvm/test/Regression/CFrontend/2002-04-10-StructParameters.c diff -u llvm/test/Regression/CFrontend/2002-04-10-StructParameters.c:1.1 llvm/test/Regression/CFrontend/2002-04-10-StructParameters.c:1.2 --- llvm/test/Regression/CFrontend/2002-04-10-StructParameters.c:1.1 Wed Apr 10 12:43:40 2002 +++ llvm/test/Regression/CFrontend/2002-04-10-StructParameters.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct { char p; Index: llvm/test/Regression/CFrontend/2002-05-23-StaticValues.c diff -u llvm/test/Regression/CFrontend/2002-05-23-StaticValues.c:1.1 llvm/test/Regression/CFrontend/2002-05-23-StaticValues.c:1.2 --- llvm/test/Regression/CFrontend/2002-05-23-StaticValues.c:1.1 Thu May 23 15:58:45 2002 +++ llvm/test/Regression/CFrontend/2002-05-23-StaticValues.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* Make sure the frontend is correctly marking static stuff as internal! */ int X; Index: llvm/test/Regression/CFrontend/2002-05-23-TypeNameCollision.c diff -u llvm/test/Regression/CFrontend/2002-05-23-TypeNameCollision.c:1.2 llvm/test/Regression/CFrontend/2002-05-23-TypeNameCollision.c:1.3 --- llvm/test/Regression/CFrontend/2002-05-23-TypeNameCollision.c:1.2 Mon Jun 24 16:37:08 2002 +++ llvm/test/Regression/CFrontend/2002-05-23-TypeNameCollision.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* Testcase for when struct tag conflicts with typedef name... grr */ typedef struct foo { Index: llvm/test/Regression/CFrontend/2002-05-24-Alloca.c diff -u llvm/test/Regression/CFrontend/2002-05-24-Alloca.c:1.1 llvm/test/Regression/CFrontend/2002-05-24-Alloca.c:1.2 --- llvm/test/Regression/CFrontend/2002-05-24-Alloca.c:1.1 Tue Jul 23 13:25:39 2002 +++ llvm/test/Regression/CFrontend/2002-05-24-Alloca.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + #include #include #include Index: llvm/test/Regression/CFrontend/2002-06-25-FWriteInterfaceFailure.c diff -u llvm/test/Regression/CFrontend/2002-06-25-FWriteInterfaceFailure.c:1.1 llvm/test/Regression/CFrontend/2002-06-25-FWriteInterfaceFailure.c:1.2 --- llvm/test/Regression/CFrontend/2002-06-25-FWriteInterfaceFailure.c:1.1 Tue Jun 25 14:53:12 2002 +++ llvm/test/Regression/CFrontend/2002-06-25-FWriteInterfaceFailure.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + #include void test() { Index: llvm/test/Regression/CFrontend/2002-07-14-MiscListTests.c diff -u llvm/test/Regression/CFrontend/2002-07-14-MiscListTests.c:1.1 llvm/test/Regression/CFrontend/2002-07-14-MiscListTests.c:1.2 --- llvm/test/Regression/CFrontend/2002-07-14-MiscListTests.c:1.1 Sun Jul 14 18:48:41 2002 +++ llvm/test/Regression/CFrontend/2002-07-14-MiscListTests.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + // Test list stuff void *malloc(unsigned); Index: llvm/test/Regression/CFrontend/2002-07-14-MiscTests.c diff -u llvm/test/Regression/CFrontend/2002-07-14-MiscTests.c:1.1 llvm/test/Regression/CFrontend/2002-07-14-MiscTests.c:1.2 --- llvm/test/Regression/CFrontend/2002-07-14-MiscTests.c:1.1 Sun Jul 14 18:48:42 2002 +++ llvm/test/Regression/CFrontend/2002-07-14-MiscTests.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* These are random tests that I used when working on the GCC frontend originally. */ Index: llvm/test/Regression/CFrontend/2002-07-14-MiscTests2.c diff -u llvm/test/Regression/CFrontend/2002-07-14-MiscTests2.c:1.1 llvm/test/Regression/CFrontend/2002-07-14-MiscTests2.c:1.2 --- llvm/test/Regression/CFrontend/2002-07-14-MiscTests2.c:1.1 Sun Jul 14 18:48:42 2002 +++ llvm/test/Regression/CFrontend/2002-07-14-MiscTests2.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + // Test ?: in function calls extern fp(int, char*); Index: llvm/test/Regression/CFrontend/2002-07-14-MiscTests3.c diff -u llvm/test/Regression/CFrontend/2002-07-14-MiscTests3.c:1.1 llvm/test/Regression/CFrontend/2002-07-14-MiscTests3.c:1.2 --- llvm/test/Regression/CFrontend/2002-07-14-MiscTests3.c:1.1 Sun Jul 14 18:48:42 2002 +++ llvm/test/Regression/CFrontend/2002-07-14-MiscTests3.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void *malloc(unsigned); Index: llvm/test/Regression/CFrontend/2002-07-16-HardStringInit.c diff -u llvm/test/Regression/CFrontend/2002-07-16-HardStringInit.c:1.1 llvm/test/Regression/CFrontend/2002-07-16-HardStringInit.c:1.2 --- llvm/test/Regression/CFrontend/2002-07-16-HardStringInit.c:1.1 Tue Jul 16 00:38:33 2002 +++ llvm/test/Regression/CFrontend/2002-07-16-HardStringInit.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + char auto_kibitz_list[100][20] = { {"diepx"}, {"ferret"}, Index: llvm/test/Regression/CFrontend/2002-07-17-StringConstant.c diff -u llvm/test/Regression/CFrontend/2002-07-17-StringConstant.c:1.1 llvm/test/Regression/CFrontend/2002-07-17-StringConstant.c:1.2 --- llvm/test/Regression/CFrontend/2002-07-17-StringConstant.c:1.1 Wed Jul 17 17:19:30 2002 +++ llvm/test/Regression/CFrontend/2002-07-17-StringConstant.c Sat Nov 6 16:41:00 2004 @@ -1,2 +1,4 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + char * foo() { return "\\begin{"; } Index: llvm/test/Regression/CFrontend/2002-07-29-Casts.c diff -u llvm/test/Regression/CFrontend/2002-07-29-Casts.c:1.3 llvm/test/Regression/CFrontend/2002-07-29-Casts.c:1.4 --- llvm/test/Regression/CFrontend/2002-07-29-Casts.c:1.3 Tue Dec 9 23:06:38 2003 +++ llvm/test/Regression/CFrontend/2002-07-29-Casts.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + #include #include #include Index: llvm/test/Regression/CFrontend/2002-07-30-SubregSetAssertion.c diff -u llvm/test/Regression/CFrontend/2002-07-30-SubregSetAssertion.c:1.3 llvm/test/Regression/CFrontend/2002-07-30-SubregSetAssertion.c:1.4 --- llvm/test/Regression/CFrontend/2002-07-30-SubregSetAssertion.c:1.3 Wed Jul 31 12:54:24 2002 +++ llvm/test/Regression/CFrontend/2002-07-30-SubregSetAssertion.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + union X { void *B; Index: llvm/test/Regression/CFrontend/2002-07-30-UnionTest.c diff -u llvm/test/Regression/CFrontend/2002-07-30-UnionTest.c:1.1 llvm/test/Regression/CFrontend/2002-07-30-UnionTest.c:1.2 --- llvm/test/Regression/CFrontend/2002-07-30-UnionTest.c:1.1 Tue Jul 30 01:47:29 2002 +++ llvm/test/Regression/CFrontend/2002-07-30-UnionTest.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + union X; struct Empty {}; union F {}; Index: llvm/test/Regression/CFrontend/2002-07-30-VarArgsCallFailure.c diff -u llvm/test/Regression/CFrontend/2002-07-30-VarArgsCallFailure.c:1.2 llvm/test/Regression/CFrontend/2002-07-30-VarArgsCallFailure.c:1.3 --- llvm/test/Regression/CFrontend/2002-07-30-VarArgsCallFailure.c:1.2 Tue Jul 30 17:24:07 2002 +++ llvm/test/Regression/CFrontend/2002-07-30-VarArgsCallFailure.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + int tcount; void test(char *, const char*, int); void foo() { Index: llvm/test/Regression/CFrontend/2002-07-31-BadAssert.c diff -u llvm/test/Regression/CFrontend/2002-07-31-BadAssert.c:1.1 llvm/test/Regression/CFrontend/2002-07-31-BadAssert.c:1.2 --- llvm/test/Regression/CFrontend/2002-07-31-BadAssert.c:1.1 Wed Jul 31 12:39:38 2002 +++ llvm/test/Regression/CFrontend/2002-07-31-BadAssert.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct { unsigned char type; /* Indicates, NORMAL, SUBNORMAL, etc. */ Index: llvm/test/Regression/CFrontend/2002-07-31-SubregFailure.c diff -u llvm/test/Regression/CFrontend/2002-07-31-SubregFailure.c:1.1 llvm/test/Regression/CFrontend/2002-07-31-SubregFailure.c:1.2 --- llvm/test/Regression/CFrontend/2002-07-31-SubregFailure.c:1.1 Wed Jul 31 12:52:36 2002 +++ llvm/test/Regression/CFrontend/2002-07-31-SubregFailure.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef union { long (*ap)[4]; Index: llvm/test/Regression/CFrontend/2002-08-02-UnionTest.c diff -u llvm/test/Regression/CFrontend/2002-08-02-UnionTest.c:1.1 llvm/test/Regression/CFrontend/2002-08-02-UnionTest.c:1.2 --- llvm/test/Regression/CFrontend/2002-08-02-UnionTest.c:1.1 Fri Aug 2 11:26:08 2002 +++ llvm/test/Regression/CFrontend/2002-08-02-UnionTest.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* In this testcase, the return value of foo() is being promotedto a register * which breaks stuff */ Index: llvm/test/Regression/CFrontend/2002-08-19-RecursiveLocals.c diff -u llvm/test/Regression/CFrontend/2002-08-19-RecursiveLocals.c:1.1 llvm/test/Regression/CFrontend/2002-08-19-RecursiveLocals.c:1.2 --- llvm/test/Regression/CFrontend/2002-08-19-RecursiveLocals.c:1.1 Mon Aug 19 16:48:09 2002 +++ llvm/test/Regression/CFrontend/2002-08-19-RecursiveLocals.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* This testcase doesn't actually test a bug, it's just the result of me * figuring out the syntax for forward declaring a static variable. */ struct list { Index: llvm/test/Regression/CFrontend/2002-09-08-PointerShifts.c diff -u llvm/test/Regression/CFrontend/2002-09-08-PointerShifts.c:1.1 llvm/test/Regression/CFrontend/2002-09-08-PointerShifts.c:1.2 --- llvm/test/Regression/CFrontend/2002-09-08-PointerShifts.c:1.1 Fri Sep 20 09:37:03 2002 +++ llvm/test/Regression/CFrontend/2002-09-08-PointerShifts.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + int foo(int *A, unsigned X) { return A[X]; Index: llvm/test/Regression/CFrontend/2002-09-18-UnionProblem.c diff -u llvm/test/Regression/CFrontend/2002-09-18-UnionProblem.c:1.1 llvm/test/Regression/CFrontend/2002-09-18-UnionProblem.c:1.2 --- llvm/test/Regression/CFrontend/2002-09-18-UnionProblem.c:1.1 Wed Sep 18 23:23:59 2002 +++ llvm/test/Regression/CFrontend/2002-09-18-UnionProblem.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct DWstruct { char high, low; Index: llvm/test/Regression/CFrontend/2002-09-19-StarInLabel.c diff -u llvm/test/Regression/CFrontend/2002-09-19-StarInLabel.c:1.1 llvm/test/Regression/CFrontend/2002-09-19-StarInLabel.c:1.2 --- llvm/test/Regression/CFrontend/2002-09-19-StarInLabel.c:1.1 Thu Sep 19 11:54:57 2002 +++ llvm/test/Regression/CFrontend/2002-09-19-StarInLabel.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + extern void start() __asm__("start"); extern void _start() __asm__("_start"); extern void __start() __asm__("__start"); Index: llvm/test/Regression/CFrontend/2002-10-12-TooManyArguments.c diff -u llvm/test/Regression/CFrontend/2002-10-12-TooManyArguments.c:1.1 llvm/test/Regression/CFrontend/2002-10-12-TooManyArguments.c:1.2 --- llvm/test/Regression/CFrontend/2002-10-12-TooManyArguments.c:1.1 Sat Oct 12 18:37:34 2002 +++ llvm/test/Regression/CFrontend/2002-10-12-TooManyArguments.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void foo() {} Index: llvm/test/Regression/CFrontend/2002-11-07-Redefinition.c diff -u llvm/test/Regression/CFrontend/2002-11-07-Redefinition.c:1.1 llvm/test/Regression/CFrontend/2002-11-07-Redefinition.c:1.2 --- llvm/test/Regression/CFrontend/2002-11-07-Redefinition.c:1.1 Sat Dec 7 11:08:07 2002 +++ llvm/test/Regression/CFrontend/2002-11-07-Redefinition.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* Provide Declarations */ #ifndef NULL Index: llvm/test/Regression/CFrontend/2002-12-15-GlobalBoolTest.c diff -u llvm/test/Regression/CFrontend/2002-12-15-GlobalBoolTest.c:1.1 llvm/test/Regression/CFrontend/2002-12-15-GlobalBoolTest.c:1.2 --- llvm/test/Regression/CFrontend/2002-12-15-GlobalBoolTest.c:1.1 Sun Dec 15 09:52:03 2002 +++ llvm/test/Regression/CFrontend/2002-12-15-GlobalBoolTest.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + _Bool X = 0; Index: llvm/test/Regression/CFrontend/2002-12-15-GlobalConstantTest.c diff -u llvm/test/Regression/CFrontend/2002-12-15-GlobalConstantTest.c:1.1 llvm/test/Regression/CFrontend/2002-12-15-GlobalConstantTest.c:1.2 --- llvm/test/Regression/CFrontend/2002-12-15-GlobalConstantTest.c:1.1 Sun Dec 15 11:37:35 2002 +++ llvm/test/Regression/CFrontend/2002-12-15-GlobalConstantTest.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + const char *W = "foo"; const int X = 7; Index: llvm/test/Regression/CFrontend/2002-12-15-GlobalRedefinition.c diff -u llvm/test/Regression/CFrontend/2002-12-15-GlobalRedefinition.c:1.1 llvm/test/Regression/CFrontend/2002-12-15-GlobalRedefinition.c:1.2 --- llvm/test/Regression/CFrontend/2002-12-15-GlobalRedefinition.c:1.1 Sun Dec 15 11:14:32 2002 +++ llvm/test/Regression/CFrontend/2002-12-15-GlobalRedefinition.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + extern char algbrfile[9]; char algbrfile[9] = "abcdefgh"; Index: llvm/test/Regression/CFrontend/2002-12-15-StructParameters.c diff -u llvm/test/Regression/CFrontend/2002-12-15-StructParameters.c:1.1 llvm/test/Regression/CFrontend/2002-12-15-StructParameters.c:1.2 --- llvm/test/Regression/CFrontend/2002-12-15-StructParameters.c:1.1 Sun Dec 15 11:46:18 2002 +++ llvm/test/Regression/CFrontend/2002-12-15-StructParameters.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct { void *stack; Index: llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c diff -u llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c:1.2 llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c:1.3 --- llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c:1.2 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/CFrontend/2003-01-30-UnionInit.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + // XFAIL: linux,sun,darwin union foo { Index: llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c diff -u llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c:1.3 llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c:1.4 --- llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c:1.3 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/CFrontend/2003-02-12-NonlocalGoto.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + // XFAIL: * /* It is unlikely that LLVM will ever support nested functions, but if it does, here is a testcase. */ Index: llvm/test/Regression/CFrontend/2003-03-03-DeferredType.c diff -u llvm/test/Regression/CFrontend/2003-03-03-DeferredType.c:1.1 llvm/test/Regression/CFrontend/2003-03-03-DeferredType.c:1.2 --- llvm/test/Regression/CFrontend/2003-03-03-DeferredType.c:1.1 Mon Mar 3 14:28:42 2003 +++ llvm/test/Regression/CFrontend/2003-03-03-DeferredType.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + Index: llvm/test/Regression/CFrontend/2003-06-22-UnionCrash.c diff -u llvm/test/Regression/CFrontend/2003-06-22-UnionCrash.c:1.1 llvm/test/Regression/CFrontend/2003-06-22-UnionCrash.c:1.2 --- llvm/test/Regression/CFrontend/2003-06-22-UnionCrash.c:1.1 Sun Jun 22 16:40:38 2003 +++ llvm/test/Regression/CFrontend/2003-06-22-UnionCrash.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct Blend_Map_Entry { union { float Colour[5]; Index: llvm/test/Regression/CFrontend/2003-06-23-GCC-fold-infinite-recursion.c diff -u llvm/test/Regression/CFrontend/2003-06-23-GCC-fold-infinite-recursion.c:1.1 llvm/test/Regression/CFrontend/2003-06-23-GCC-fold-infinite-recursion.c:1.2 --- llvm/test/Regression/CFrontend/2003-06-23-GCC-fold-infinite-recursion.c:1.1 Mon Jun 23 13:06:21 2003 +++ llvm/test/Regression/CFrontend/2003-06-23-GCC-fold-infinite-recursion.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + double Test(double A, double B, double C, double D) { return -(A-B) - (C-D); } Index: llvm/test/Regression/CFrontend/2003-06-26-CFECrash.c diff -u llvm/test/Regression/CFrontend/2003-06-26-CFECrash.c:1.1 llvm/test/Regression/CFrontend/2003-06-26-CFECrash.c:1.2 --- llvm/test/Regression/CFrontend/2003-06-26-CFECrash.c:1.1 Thu Jun 26 21:37:53 2003 +++ llvm/test/Regression/CFrontend/2003-06-26-CFECrash.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct min_info { long offset; unsigned file_attr; Index: llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c diff -u llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c:1.3 llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c:1.4 --- llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c:1.3 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/CFrontend/2003-06-29-MultipleFunctionDefinition.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* This is apparently legal C. */ extern __inline__ void test() { } Index: llvm/test/Regression/CFrontend/2003-08-18-SigSetJmp.c diff -u llvm/test/Regression/CFrontend/2003-08-18-SigSetJmp.c:1.1 llvm/test/Regression/CFrontend/2003-08-18-SigSetJmp.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-18-SigSetJmp.c:1.1 Mon Aug 18 10:45:55 2003 +++ llvm/test/Regression/CFrontend/2003-08-18-SigSetJmp.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + #include Index: llvm/test/Regression/CFrontend/2003-08-18-StructAsValue.c diff -u llvm/test/Regression/CFrontend/2003-08-18-StructAsValue.c:1.2 llvm/test/Regression/CFrontend/2003-08-18-StructAsValue.c:1.3 --- llvm/test/Regression/CFrontend/2003-08-18-StructAsValue.c:1.2 Mon Aug 18 16:44:10 2003 +++ llvm/test/Regression/CFrontend/2003-08-18-StructAsValue.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct { int op; Index: llvm/test/Regression/CFrontend/2003-08-20-BadBitfieldRef.c diff -u llvm/test/Regression/CFrontend/2003-08-20-BadBitfieldRef.c:1.1 llvm/test/Regression/CFrontend/2003-08-20-BadBitfieldRef.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-20-BadBitfieldRef.c:1.1 Wed Aug 20 11:13:10 2003 +++ llvm/test/Regression/CFrontend/2003-08-20-BadBitfieldRef.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void foo() { char *ap; Index: llvm/test/Regression/CFrontend/2003-08-20-PrototypeMismatch.c diff -u llvm/test/Regression/CFrontend/2003-08-20-PrototypeMismatch.c:1.1 llvm/test/Regression/CFrontend/2003-08-20-PrototypeMismatch.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-20-PrototypeMismatch.c:1.1 Wed Aug 20 13:25:04 2003 +++ llvm/test/Regression/CFrontend/2003-08-20-PrototypeMismatch.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + static int foo(int); Index: llvm/test/Regression/CFrontend/2003-08-20-vfork-bug.c diff -u llvm/test/Regression/CFrontend/2003-08-20-vfork-bug.c:1.1 llvm/test/Regression/CFrontend/2003-08-20-vfork-bug.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-20-vfork-bug.c:1.1 Wed Aug 20 13:17:13 2003 +++ llvm/test/Regression/CFrontend/2003-08-20-vfork-bug.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + extern int vfork(void); test() { vfork(); Index: llvm/test/Regression/CFrontend/2003-08-21-BinOp-Type-Mismatch.c diff -u llvm/test/Regression/CFrontend/2003-08-21-BinOp-Type-Mismatch.c:1.1 llvm/test/Regression/CFrontend/2003-08-21-BinOp-Type-Mismatch.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-21-BinOp-Type-Mismatch.c:1.1 Thu Aug 21 12:56:32 2003 +++ llvm/test/Regression/CFrontend/2003-08-21-BinOp-Type-Mismatch.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct bar; void foo() Index: llvm/test/Regression/CFrontend/2003-08-21-StmtExpr.c diff -u llvm/test/Regression/CFrontend/2003-08-21-StmtExpr.c:1.1 llvm/test/Regression/CFrontend/2003-08-21-StmtExpr.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-21-StmtExpr.c:1.1 Thu Aug 21 13:25:37 2003 +++ llvm/test/Regression/CFrontend/2003-08-21-StmtExpr.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct { unsigned long val; Index: llvm/test/Regression/CFrontend/2003-08-21-WideString.c diff -u llvm/test/Regression/CFrontend/2003-08-21-WideString.c:1.1 llvm/test/Regression/CFrontend/2003-08-21-WideString.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-21-WideString.c:1.1 Thu Aug 21 13:59:56 2003 +++ llvm/test/Regression/CFrontend/2003-08-21-WideString.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct { int *name; } syms = { L"NUL" }; Index: llvm/test/Regression/CFrontend/2003-08-23-LocalUnionTest.c diff -u llvm/test/Regression/CFrontend/2003-08-23-LocalUnionTest.c:1.1 llvm/test/Regression/CFrontend/2003-08-23-LocalUnionTest.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-23-LocalUnionTest.c:1.1 Sat Aug 23 17:09:26 2003 +++ llvm/test/Regression/CFrontend/2003-08-23-LocalUnionTest.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + union foo { int X; }; Index: llvm/test/Regression/CFrontend/2003-08-29-BitFieldStruct.c diff -u llvm/test/Regression/CFrontend/2003-08-29-BitFieldStruct.c:1.2 llvm/test/Regression/CFrontend/2003-08-29-BitFieldStruct.c:1.3 --- llvm/test/Regression/CFrontend/2003-08-29-BitFieldStruct.c:1.2 Fri Aug 29 16:57:18 2003 +++ llvm/test/Regression/CFrontend/2003-08-29-BitFieldStruct.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct Word { short bar; short baz; Index: llvm/test/Regression/CFrontend/2003-08-29-HugeCharConst.c diff -u llvm/test/Regression/CFrontend/2003-08-29-HugeCharConst.c:1.1 llvm/test/Regression/CFrontend/2003-08-29-HugeCharConst.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-29-HugeCharConst.c:1.1 Fri Aug 29 16:28:47 2003 +++ llvm/test/Regression/CFrontend/2003-08-29-HugeCharConst.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void foo() { unsigned char int_latin1[] = "f\200\372b\200\343\200\340"; } Index: llvm/test/Regression/CFrontend/2003-08-29-StructLayoutBug.c diff -u llvm/test/Regression/CFrontend/2003-08-29-StructLayoutBug.c:1.1 llvm/test/Regression/CFrontend/2003-08-29-StructLayoutBug.c:1.2 --- llvm/test/Regression/CFrontend/2003-08-29-StructLayoutBug.c:1.1 Fri Aug 29 17:46:34 2003 +++ llvm/test/Regression/CFrontend/2003-08-29-StructLayoutBug.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct foo { unsigned int I:1; unsigned char J[1]; Index: llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c diff -u llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c:1.2 llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c:1.3 --- llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c:1.2 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/CFrontend/2003-08-30-AggregateInitializer.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + // XFAIL: linux,sun,darwin struct istruct { unsigned char C; Index: llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c diff -u llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c:1.2 llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c:1.3 --- llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c:1.2 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/CFrontend/2003-08-30-LargeIntegerBitfieldMember.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct foo { unsigned int I:1; unsigned char J[1][123]; Index: llvm/test/Regression/CFrontend/2003-09-18-BitfieldTests.c diff -u llvm/test/Regression/CFrontend/2003-09-18-BitfieldTests.c:1.1 llvm/test/Regression/CFrontend/2003-09-18-BitfieldTests.c:1.2 --- llvm/test/Regression/CFrontend/2003-09-18-BitfieldTests.c:1.1 Fri Sep 19 00:22:10 2003 +++ llvm/test/Regression/CFrontend/2003-09-18-BitfieldTests.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct BF { int A : 1; Index: llvm/test/Regression/CFrontend/2003-09-30-StructLayout.c diff -u llvm/test/Regression/CFrontend/2003-09-30-StructLayout.c:1.1 llvm/test/Regression/CFrontend/2003-09-30-StructLayout.c:1.2 --- llvm/test/Regression/CFrontend/2003-09-30-StructLayout.c:1.1 Tue Sep 30 12:13:34 2003 +++ llvm/test/Regression/CFrontend/2003-09-30-StructLayout.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + enum En { ENUM_VAL }; Index: llvm/test/Regression/CFrontend/2003-10-02-UnionLValueError.c diff -u llvm/test/Regression/CFrontend/2003-10-02-UnionLValueError.c:1.1 llvm/test/Regression/CFrontend/2003-10-02-UnionLValueError.c:1.2 --- llvm/test/Regression/CFrontend/2003-10-02-UnionLValueError.c:1.1 Thu Oct 2 13:26:11 2003 +++ llvm/test/Regression/CFrontend/2003-10-02-UnionLValueError.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + union U{ int i[8]; char s[80]; Index: llvm/test/Regression/CFrontend/2003-10-06-NegateExprType.c diff -u llvm/test/Regression/CFrontend/2003-10-06-NegateExprType.c:1.1 llvm/test/Regression/CFrontend/2003-10-06-NegateExprType.c:1.2 --- llvm/test/Regression/CFrontend/2003-10-06-NegateExprType.c:1.1 Mon Oct 6 21:57:51 2003 +++ llvm/test/Regression/CFrontend/2003-10-06-NegateExprType.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + extern int A[10]; void Func(int *B) { Index: llvm/test/Regression/CFrontend/2003-10-09-UnionInitializerBug.c diff -u llvm/test/Regression/CFrontend/2003-10-09-UnionInitializerBug.c:1.1 llvm/test/Regression/CFrontend/2003-10-09-UnionInitializerBug.c:1.2 --- llvm/test/Regression/CFrontend/2003-10-09-UnionInitializerBug.c:1.1 Thu Oct 9 23:05:29 2003 +++ llvm/test/Regression/CFrontend/2003-10-09-UnionInitializerBug.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct Foo { unsigned a; unsigned b; Index: llvm/test/Regression/CFrontend/2003-10-28-ident.c diff -u llvm/test/Regression/CFrontend/2003-10-28-ident.c:1.1 llvm/test/Regression/CFrontend/2003-10-28-ident.c:1.2 --- llvm/test/Regression/CFrontend/2003-10-28-ident.c:1.1 Tue Oct 28 19:23:01 2003 +++ llvm/test/Regression/CFrontend/2003-10-28-ident.c Sat Nov 6 16:41:00 2004 @@ -1,2 +1,4 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + #ident "foo" Index: llvm/test/Regression/CFrontend/2003-10-29-AsmRename.c diff -u llvm/test/Regression/CFrontend/2003-10-29-AsmRename.c:1.1 llvm/test/Regression/CFrontend/2003-10-29-AsmRename.c:1.2 --- llvm/test/Regression/CFrontend/2003-10-29-AsmRename.c:1.1 Wed Oct 29 13:18:48 2003 +++ llvm/test/Regression/CFrontend/2003-10-29-AsmRename.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct foo { int X; }; struct bar { int Y; }; Index: llvm/test/Regression/CFrontend/2003-11-01-C99-CompoundLiteral.c diff -u llvm/test/Regression/CFrontend/2003-11-01-C99-CompoundLiteral.c:1.1 llvm/test/Regression/CFrontend/2003-11-01-C99-CompoundLiteral.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-01-C99-CompoundLiteral.c:1.1 Sat Nov 1 18:22:27 2003 +++ llvm/test/Regression/CFrontend/2003-11-01-C99-CompoundLiteral.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct { int foo; } spinlock_t; typedef struct wait_queue_head_t { spinlock_t lock; } wait_queue_head_t; void call_usermodehelper(void) { Index: llvm/test/Regression/CFrontend/2003-11-01-EmptyStructCrash.c diff -u llvm/test/Regression/CFrontend/2003-11-01-EmptyStructCrash.c:1.1 llvm/test/Regression/CFrontend/2003-11-01-EmptyStructCrash.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-01-EmptyStructCrash.c:1.1 Sat Nov 1 17:42:08 2003 +++ llvm/test/Regression/CFrontend/2003-11-01-EmptyStructCrash.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct { } the_coolest_struct_in_the_world; extern the_coolest_struct_in_the_world xyzzy; void *foo() { return &xyzzy; } Index: llvm/test/Regression/CFrontend/2003-11-01-GlobalUnionInit.c diff -u llvm/test/Regression/CFrontend/2003-11-01-GlobalUnionInit.c:1.1 llvm/test/Regression/CFrontend/2003-11-01-GlobalUnionInit.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-01-GlobalUnionInit.c:1.1 Sat Nov 1 18:57:56 2003 +++ llvm/test/Regression/CFrontend/2003-11-01-GlobalUnionInit.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + union bdflush_param { struct { int x; } b_un; int y[1]; Index: llvm/test/Regression/CFrontend/2003-11-04-EmptyStruct.c diff -u llvm/test/Regression/CFrontend/2003-11-04-EmptyStruct.c:1.2 llvm/test/Regression/CFrontend/2003-11-04-EmptyStruct.c:1.3 --- llvm/test/Regression/CFrontend/2003-11-04-EmptyStruct.c:1.2 Sat Nov 8 18:23:05 2003 +++ llvm/test/Regression/CFrontend/2003-11-04-EmptyStruct.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct { } rwlock_t; struct fs_struct { rwlock_t lock; int umask; }; void __copy_fs_struct(struct fs_struct *fs) { fs->lock = (rwlock_t) { }; } Index: llvm/test/Regression/CFrontend/2003-11-04-OutOfMemory.c diff -u llvm/test/Regression/CFrontend/2003-11-04-OutOfMemory.c:1.1 llvm/test/Regression/CFrontend/2003-11-04-OutOfMemory.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-04-OutOfMemory.c:1.1 Tue Nov 4 12:34:05 2003 +++ llvm/test/Regression/CFrontend/2003-11-04-OutOfMemory.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void schedule_timeout(signed long timeout) { switch (timeout) Index: llvm/test/Regression/CFrontend/2003-11-12-VoidString.c diff -u llvm/test/Regression/CFrontend/2003-11-12-VoidString.c:1.1 llvm/test/Regression/CFrontend/2003-11-12-VoidString.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-12-VoidString.c:1.1 Wed Nov 12 16:15:55 2003 +++ llvm/test/Regression/CFrontend/2003-11-12-VoidString.c Sat Nov 6 16:41:00 2004 @@ -1,2 +1,4 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void query_newnamebuf(void) { ((void)"query_newnamebuf"); } Index: llvm/test/Regression/CFrontend/2003-11-16-StaticArrayInit.c diff -u llvm/test/Regression/CFrontend/2003-11-16-StaticArrayInit.c:1.1 llvm/test/Regression/CFrontend/2003-11-16-StaticArrayInit.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-16-StaticArrayInit.c:1.1 Sun Nov 16 14:47:05 2003 +++ llvm/test/Regression/CFrontend/2003-11-16-StaticArrayInit.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void bar () { static char x[10]; static char *xend = x + 10; Index: llvm/test/Regression/CFrontend/2003-11-18-CondExprLValue.c diff -u llvm/test/Regression/CFrontend/2003-11-18-CondExprLValue.c:1.1 llvm/test/Regression/CFrontend/2003-11-18-CondExprLValue.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-18-CondExprLValue.c:1.1 Tue Nov 18 17:46:07 2003 +++ llvm/test/Regression/CFrontend/2003-11-18-CondExprLValue.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + typedef struct { unsigned long pgprot; } pgprot_t; void split_large_page(unsigned long addr, pgprot_t prot) Index: llvm/test/Regression/CFrontend/2003-11-19-BitFieldArray.c diff -u llvm/test/Regression/CFrontend/2003-11-19-BitFieldArray.c:1.1 llvm/test/Regression/CFrontend/2003-11-19-BitFieldArray.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-19-BitFieldArray.c:1.1 Wed Nov 19 18:32:57 2003 +++ llvm/test/Regression/CFrontend/2003-11-19-BitFieldArray.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct _GIOChannel { int write_buf; char partial_write_buf[6]; Index: llvm/test/Regression/CFrontend/2003-11-20-Bitfields.c diff -u llvm/test/Regression/CFrontend/2003-11-20-Bitfields.c:1.1 llvm/test/Regression/CFrontend/2003-11-20-Bitfields.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-20-Bitfields.c:1.1 Thu Nov 20 13:05:21 2003 +++ llvm/test/Regression/CFrontend/2003-11-20-Bitfields.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct face_cachel { unsigned int reverse :1; unsigned char font_specified[1]; Index: llvm/test/Regression/CFrontend/2003-11-20-ComplexDivision.c diff -u llvm/test/Regression/CFrontend/2003-11-20-ComplexDivision.c:1.1 llvm/test/Regression/CFrontend/2003-11-20-ComplexDivision.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-20-ComplexDivision.c:1.1 Thu Nov 20 13:27:12 2003 +++ llvm/test/Regression/CFrontend/2003-11-20-ComplexDivision.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + int test() { __complex__ double C; double D; Index: llvm/test/Regression/CFrontend/2003-11-20-UnionBitfield.c diff -u llvm/test/Regression/CFrontend/2003-11-20-UnionBitfield.c:1.1 llvm/test/Regression/CFrontend/2003-11-20-UnionBitfield.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-20-UnionBitfield.c:1.1 Thu Nov 20 14:57:33 2003 +++ llvm/test/Regression/CFrontend/2003-11-20-UnionBitfield.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct printf_spec { unsigned int minus_flag:1; char converter; Index: llvm/test/Regression/CFrontend/2003-11-26-PointerShift.c diff -u llvm/test/Regression/CFrontend/2003-11-26-PointerShift.c:1.1 llvm/test/Regression/CFrontend/2003-11-26-PointerShift.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-26-PointerShift.c:1.1 Wed Nov 26 01:35:52 2003 +++ llvm/test/Regression/CFrontend/2003-11-26-PointerShift.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + unsigned long do_csum(const unsigned char *buff, int len, unsigned long result) { if (2 & (unsigned long) buff) result += 1; return result; Index: llvm/test/Regression/CFrontend/2003-11-27-ConstructorCast.c diff -u llvm/test/Regression/CFrontend/2003-11-27-ConstructorCast.c:1.1 llvm/test/Regression/CFrontend/2003-11-27-ConstructorCast.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-27-ConstructorCast.c:1.1 Thu Nov 27 14:47:16 2003 +++ llvm/test/Regression/CFrontend/2003-11-27-ConstructorCast.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct i387_soft_struct { long cwd; }; Index: llvm/test/Regression/CFrontend/2003-11-27-UnionCtorInitialization.c diff -u llvm/test/Regression/CFrontend/2003-11-27-UnionCtorInitialization.c:1.1 llvm/test/Regression/CFrontend/2003-11-27-UnionCtorInitialization.c:1.2 --- llvm/test/Regression/CFrontend/2003-11-27-UnionCtorInitialization.c:1.1 Thu Nov 27 15:25:07 2003 +++ llvm/test/Regression/CFrontend/2003-11-27-UnionCtorInitialization.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct i387_soft_struct { long cwd; long twd; Index: llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c diff -u llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c:1.2 llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c:1.3 --- llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c:1.2 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/CFrontend/2004-01-01-UnknownInitSize.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* * This regression test ensures that the C front end can compile initializers * even when it cannot determine the size (as below). Index: llvm/test/Regression/CFrontend/2004-01-08-ExternInlineRedefine.c diff -u llvm/test/Regression/CFrontend/2004-01-08-ExternInlineRedefine.c:1.1 llvm/test/Regression/CFrontend/2004-01-08-ExternInlineRedefine.c:1.2 --- llvm/test/Regression/CFrontend/2004-01-08-ExternInlineRedefine.c:1.1 Thu Jan 8 11:15:09 2004 +++ llvm/test/Regression/CFrontend/2004-01-08-ExternInlineRedefine.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + extern __inline long int __strtol_l (int a) Index: llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c diff -u llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c:1.2 llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c:1.3 --- llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c:1.2 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/CFrontend/2004-03-07-BitfieldCrash.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + /* * XFAIL: linux */ Index: llvm/test/Regression/CFrontend/2004-03-07-ComplexDivEquals.c diff -u llvm/test/Regression/CFrontend/2004-03-07-ComplexDivEquals.c:1.1 llvm/test/Regression/CFrontend/2004-03-07-ComplexDivEquals.c:1.2 --- llvm/test/Regression/CFrontend/2004-03-07-ComplexDivEquals.c:1.1 Sun Mar 7 22:41:32 2004 +++ llvm/test/Regression/CFrontend/2004-03-07-ComplexDivEquals.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void test(__complex__ double D, double X) { D /= X; Index: llvm/test/Regression/CFrontend/2004-03-09-LargeArrayInitializers.c diff -u llvm/test/Regression/CFrontend/2004-03-09-LargeArrayInitializers.c:1.1 llvm/test/Regression/CFrontend/2004-03-09-LargeArrayInitializers.c:1.2 --- llvm/test/Regression/CFrontend/2004-03-09-LargeArrayInitializers.c:1.1 Tue Mar 9 21:07:45 2004 +++ llvm/test/Regression/CFrontend/2004-03-09-LargeArrayInitializers.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + // Test that these initializers are handled efficiently int test(int x) { Index: llvm/test/Regression/CFrontend/2004-03-15-SimpleIndirectGoto.c diff -u llvm/test/Regression/CFrontend/2004-03-15-SimpleIndirectGoto.c:1.1 llvm/test/Regression/CFrontend/2004-03-15-SimpleIndirectGoto.c:1.2 --- llvm/test/Regression/CFrontend/2004-03-15-SimpleIndirectGoto.c:1.1 Tue Mar 16 02:49:48 2004 +++ llvm/test/Regression/CFrontend/2004-03-15-SimpleIndirectGoto.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + int code[]={0,0,0,0,1}; void foo(int x) { volatile int b; Index: llvm/test/Regression/CFrontend/2004-03-16-AsmRegisterCrash.c diff -u llvm/test/Regression/CFrontend/2004-03-16-AsmRegisterCrash.c:1.1 llvm/test/Regression/CFrontend/2004-03-16-AsmRegisterCrash.c:1.2 --- llvm/test/Regression/CFrontend/2004-03-16-AsmRegisterCrash.c:1.1 Tue Mar 16 15:52:24 2004 +++ llvm/test/Regression/CFrontend/2004-03-16-AsmRegisterCrash.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + int foo() { register int X __asm__("ebx"); return X; Index: llvm/test/Regression/CFrontend/2004-05-07-VarArrays.c diff -u llvm/test/Regression/CFrontend/2004-05-07-VarArrays.c:1.1 llvm/test/Regression/CFrontend/2004-05-07-VarArrays.c:1.2 --- llvm/test/Regression/CFrontend/2004-05-07-VarArrays.c:1.1 Fri May 7 13:38:59 2004 +++ llvm/test/Regression/CFrontend/2004-05-07-VarArrays.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + int foo(int len, char arr[][len], int X) { return arr[X][0]; } Index: llvm/test/Regression/CFrontend/2004-05-21-IncompleteEnum.c diff -u llvm/test/Regression/CFrontend/2004-05-21-IncompleteEnum.c:1.1 llvm/test/Regression/CFrontend/2004-05-21-IncompleteEnum.c:1.2 --- llvm/test/Regression/CFrontend/2004-05-21-IncompleteEnum.c:1.1 Wed Apr 21 13:49:35 2004 +++ llvm/test/Regression/CFrontend/2004-05-21-IncompleteEnum.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + void test(enum foo *X) { } Index: llvm/test/Regression/CFrontend/2004-06-08-OpaqueStructArg.c diff -u llvm/test/Regression/CFrontend/2004-06-08-OpaqueStructArg.c:1.1 llvm/test/Regression/CFrontend/2004-06-08-OpaqueStructArg.c:1.2 --- llvm/test/Regression/CFrontend/2004-06-08-OpaqueStructArg.c:1.1 Tue Jun 8 02:10:11 2004 +++ llvm/test/Regression/CFrontend/2004-06-08-OpaqueStructArg.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct fu; void foo(struct fu); void bar() { Index: llvm/test/Regression/CFrontend/2004-06-17-UnorderedBuiltins.c diff -u llvm/test/Regression/CFrontend/2004-06-17-UnorderedBuiltins.c:1.1 llvm/test/Regression/CFrontend/2004-06-17-UnorderedBuiltins.c:1.2 --- llvm/test/Regression/CFrontend/2004-06-17-UnorderedBuiltins.c:1.1 Thu Jun 17 22:39:56 2004 +++ llvm/test/Regression/CFrontend/2004-06-17-UnorderedBuiltins.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + _Bool A, B, C, D, E, F, G, H; void TestF(float X, float Y) { Index: llvm/test/Regression/CFrontend/2004-06-18-VariableLengthArrayOfStructures.c diff -u llvm/test/Regression/CFrontend/2004-06-18-VariableLengthArrayOfStructures.c:1.1 llvm/test/Regression/CFrontend/2004-06-18-VariableLengthArrayOfStructures.c:1.2 --- llvm/test/Regression/CFrontend/2004-06-18-VariableLengthArrayOfStructures.c:1.1 Fri Jun 18 20:08:12 2004 +++ llvm/test/Regression/CFrontend/2004-06-18-VariableLengthArrayOfStructures.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + struct S { }; Index: llvm/test/Regression/CFrontend/2004-07-06-FunctionCast.c diff -u llvm/test/Regression/CFrontend/2004-07-06-FunctionCast.c:1.1 llvm/test/Regression/CFrontend/2004-07-06-FunctionCast.c:1.2 --- llvm/test/Regression/CFrontend/2004-07-06-FunctionCast.c:1.1 Tue Jul 6 21:20:02 2004 +++ llvm/test/Regression/CFrontend/2004-07-06-FunctionCast.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + static int unused_func(void) { return 1; } Index: llvm/test/Regression/CFrontend/2004-08-06-LargeStructTest.c diff -u llvm/test/Regression/CFrontend/2004-08-06-LargeStructTest.c:1.1 llvm/test/Regression/CFrontend/2004-08-06-LargeStructTest.c:1.2 --- llvm/test/Regression/CFrontend/2004-08-06-LargeStructTest.c:1.1 Fri Aug 6 13:09:02 2004 +++ llvm/test/Regression/CFrontend/2004-08-06-LargeStructTest.c Sat Nov 6 16:41:00 2004 @@ -1,3 +1,5 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + #define A(X) int X; #define B(X) A(X##0) A(X##1) A(X##2) A(X##3) A(X##4) A(X##5) A(X##6) A(X##7) \ From tbrethou at cs.uiuc.edu Sat Nov 6 17:06:04 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 17:06:04 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/LLC/2002-04-14-UnexpectedUnsignedType.ll 2002-04-16-StackFrameSizeAlignment.ll 2003-05-27-phifcmpd.ll 2003-05-27-useboolinotherbb.ll 2003-05-27-usefsubasbool.ll 2003-05-28-ManyArgs.ll 2003-05-30-BadFoldGEP.ll 2003-05-30-BadPreselectPhi.ll 2003-07-06-BadIntCmp.ll 2003-07-07-BadLongConst.ll 2003-07-08-BadCastToBool.ll 2003-07-29-BadConstSbyte.ll BurgBadRegAlloc.ll badCallArgLRLLVM.ll badFoldGEP.ll badarg6.ll badlive.ll constindices.ll fwdtwice.ll negintconst.ll sched.ll select.ll spillccr.ll Message-ID: <200411062306.RAA30676@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/LLC: 2002-04-14-UnexpectedUnsignedType.ll updated: 1.1 -> 1.2 2002-04-16-StackFrameSizeAlignment.ll updated: 1.1 -> 1.2 2003-05-27-phifcmpd.ll updated: 1.1 -> 1.2 2003-05-27-useboolinotherbb.ll updated: 1.1 -> 1.2 2003-05-27-usefsubasbool.ll updated: 1.1 -> 1.2 2003-05-28-ManyArgs.ll updated: 1.1 -> 1.2 2003-05-30-BadFoldGEP.ll updated: 1.1 -> 1.2 2003-05-30-BadPreselectPhi.ll updated: 1.1 -> 1.2 2003-07-06-BadIntCmp.ll updated: 1.1 -> 1.2 2003-07-07-BadLongConst.ll updated: 1.1 -> 1.2 2003-07-08-BadCastToBool.ll updated: 1.2 -> 1.3 2003-07-29-BadConstSbyte.ll updated: 1.2 -> 1.3 BurgBadRegAlloc.ll updated: 1.3 -> 1.4 badCallArgLRLLVM.ll updated: 1.1 -> 1.2 badFoldGEP.ll updated: 1.2 -> 1.3 badarg6.ll updated: 1.1 -> 1.2 badlive.ll updated: 1.2 -> 1.3 constindices.ll updated: 1.4 -> 1.5 fwdtwice.ll updated: 1.1 -> 1.2 negintconst.ll updated: 1.2 -> 1.3 sched.ll updated: 1.2 -> 1.3 select.ll updated: 1.9 -> 1.10 spillccr.ll updated: 1.3 -> 1.4 --- Log message: Adding RUN lines. --- Diffs of the changes: (+46 -0) Index: llvm/test/Regression/LLC/2002-04-14-UnexpectedUnsignedType.ll diff -u llvm/test/Regression/LLC/2002-04-14-UnexpectedUnsignedType.ll:1.1 llvm/test/Regression/LLC/2002-04-14-UnexpectedUnsignedType.ll:1.2 --- llvm/test/Regression/LLC/2002-04-14-UnexpectedUnsignedType.ll:1.1 Sun Apr 14 01:22:59 2002 +++ llvm/test/Regression/LLC/2002-04-14-UnexpectedUnsignedType.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ; This causes the backend to assert out with: ; SparcInstrInfo.cpp:103: failed assertion `0 && "Unexpected unsigned type"' ; Index: llvm/test/Regression/LLC/2002-04-16-StackFrameSizeAlignment.ll diff -u llvm/test/Regression/LLC/2002-04-16-StackFrameSizeAlignment.ll:1.1 llvm/test/Regression/LLC/2002-04-16-StackFrameSizeAlignment.ll:1.2 --- llvm/test/Regression/LLC/2002-04-16-StackFrameSizeAlignment.ll:1.1 Tue Apr 16 00:58:24 2002 +++ llvm/test/Regression/LLC/2002-04-16-StackFrameSizeAlignment.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ; Compiling this file produces: ; Sparc.cpp:91: failed assertion `(offset - OFFSET) % getStackFrameSizeAlignment() == 0' ; Index: llvm/test/Regression/LLC/2003-05-27-phifcmpd.ll diff -u llvm/test/Regression/LLC/2003-05-27-phifcmpd.ll:1.1 llvm/test/Regression/LLC/2003-05-27-phifcmpd.ll:1.2 --- llvm/test/Regression/LLC/2003-05-27-phifcmpd.ll:1.1 Wed May 28 08:54:41 2003 +++ llvm/test/Regression/LLC/2003-05-27-phifcmpd.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Date: May 28, 2003. ;; From: test/Programs/MultiSource/McCat-05-eks/QRfact.c ;; Function: Matrix QRiterate(Matrix A, Matrix U) Index: llvm/test/Regression/LLC/2003-05-27-useboolinotherbb.ll diff -u llvm/test/Regression/LLC/2003-05-27-useboolinotherbb.ll:1.1 llvm/test/Regression/LLC/2003-05-27-useboolinotherbb.ll:1.2 --- llvm/test/Regression/LLC/2003-05-27-useboolinotherbb.ll:1.1 Wed May 28 08:54:41 2003 +++ llvm/test/Regression/LLC/2003-05-27-useboolinotherbb.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Date: May 27, 2003. ;; From: Variant of 2003-05-27-usefsubasbool.ll ;; Index: llvm/test/Regression/LLC/2003-05-27-usefsubasbool.ll diff -u llvm/test/Regression/LLC/2003-05-27-usefsubasbool.ll:1.1 llvm/test/Regression/LLC/2003-05-27-usefsubasbool.ll:1.2 --- llvm/test/Regression/LLC/2003-05-27-usefsubasbool.ll:1.1 Wed May 28 08:54:41 2003 +++ llvm/test/Regression/LLC/2003-05-27-usefsubasbool.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Date: May 27, 2003. ;; From: test/Programs/MultiSource/McCat-05-eks/QRfact.c ;; Function: Matrix QRiterate(Matrix A, Matrix U) Index: llvm/test/Regression/LLC/2003-05-28-ManyArgs.ll diff -u llvm/test/Regression/LLC/2003-05-28-ManyArgs.ll:1.1 llvm/test/Regression/LLC/2003-05-28-ManyArgs.ll:1.2 --- llvm/test/Regression/LLC/2003-05-28-ManyArgs.ll:1.1 Fri May 30 23:45:56 2003 +++ llvm/test/Regression/LLC/2003-05-28-ManyArgs.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Date: May 28, 2003. ;; From: test/Programs/External/SPEC/CINT2000/175.vpr.llvm.bc ;; Function: int %main(int %argc.1, sbyte** %argv.1) Index: llvm/test/Regression/LLC/2003-05-30-BadFoldGEP.ll diff -u llvm/test/Regression/LLC/2003-05-30-BadFoldGEP.ll:1.1 llvm/test/Regression/LLC/2003-05-30-BadFoldGEP.ll:1.2 --- llvm/test/Regression/LLC/2003-05-30-BadFoldGEP.ll:1.1 Fri May 30 23:45:56 2003 +++ llvm/test/Regression/LLC/2003-05-30-BadFoldGEP.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Date: May 28, 2003. ;; From: test/Programs/External/SPEC/CINT2000/254.gap.llvm.bc ;; Function: int %OpenOutput(sbyte* %filename.1) Index: llvm/test/Regression/LLC/2003-05-30-BadPreselectPhi.ll diff -u llvm/test/Regression/LLC/2003-05-30-BadPreselectPhi.ll:1.1 llvm/test/Regression/LLC/2003-05-30-BadPreselectPhi.ll:1.2 --- llvm/test/Regression/LLC/2003-05-30-BadPreselectPhi.ll:1.1 Fri May 30 23:45:56 2003 +++ llvm/test/Regression/LLC/2003-05-30-BadPreselectPhi.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Date: May 28, 2003. ;; From: test/Programs/SingleSource/richards_benchmark.c ;; Function: struct task *handlerfn(struct packet *pkt) Index: llvm/test/Regression/LLC/2003-07-06-BadIntCmp.ll diff -u llvm/test/Regression/LLC/2003-07-06-BadIntCmp.ll:1.1 llvm/test/Regression/LLC/2003-07-06-BadIntCmp.ll:1.2 --- llvm/test/Regression/LLC/2003-07-06-BadIntCmp.ll:1.1 Sun Jul 6 15:12:18 2003 +++ llvm/test/Regression/LLC/2003-07-06-BadIntCmp.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Date: May 28, 2003. ;; From: test/Programs/MultiSource/Olden-perimeter/maketree.c ;; Function: int CheckOutside(int x, int y) Index: llvm/test/Regression/LLC/2003-07-07-BadLongConst.ll diff -u llvm/test/Regression/LLC/2003-07-07-BadLongConst.ll:1.1 llvm/test/Regression/LLC/2003-07-07-BadLongConst.ll:1.2 --- llvm/test/Regression/LLC/2003-07-07-BadLongConst.ll:1.1 Thu Jul 10 14:32:38 2003 +++ llvm/test/Regression/LLC/2003-07-07-BadLongConst.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + target endian = big target pointersize = 64 Index: llvm/test/Regression/LLC/2003-07-08-BadCastToBool.ll diff -u llvm/test/Regression/LLC/2003-07-08-BadCastToBool.ll:1.2 llvm/test/Regression/LLC/2003-07-08-BadCastToBool.ll:1.3 --- llvm/test/Regression/LLC/2003-07-08-BadCastToBool.ll:1.2 Thu Jul 10 14:31:26 2003 +++ llvm/test/Regression/LLC/2003-07-08-BadCastToBool.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Date: Jul 8, 2003. ;; From: test/Programs/MultiSource/Olden-perimeter ;; Function: int %adj(uint %d.1, uint %ct.1) Index: llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll diff -u llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll:1.2 llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll:1.3 --- llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll:1.2 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/LLC/2003-07-29-BadConstSbyte.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Date: Jul 29, 2003. ;; From: test/Programs/MultiSource/Ptrdist-bc ;; Function: --- Index: llvm/test/Regression/LLC/BurgBadRegAlloc.ll diff -u llvm/test/Regression/LLC/BurgBadRegAlloc.ll:1.3 llvm/test/Regression/LLC/BurgBadRegAlloc.ll:1.4 --- llvm/test/Regression/LLC/BurgBadRegAlloc.ll:1.3 Sat Nov 6 14:38:27 2004 +++ llvm/test/Regression/LLC/BurgBadRegAlloc.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; Register allocation is doing a very poor job on this routine from yyparse ;; in Burg: ;; -- at least two long-lived values are being allocated to %o? registers Index: llvm/test/Regression/LLC/badCallArgLRLLVM.ll diff -u llvm/test/Regression/LLC/badCallArgLRLLVM.ll:1.1 llvm/test/Regression/LLC/badCallArgLRLLVM.ll:1.2 --- llvm/test/Regression/LLC/badCallArgLRLLVM.ll:1.1 Sat Sep 28 11:51:47 2002 +++ llvm/test/Regression/LLC/badCallArgLRLLVM.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ; This caused a problem because the argument of a call was defined by ; the return value of another call that appears later in the code. ; When processing the first call, the second call has not yet been processed Index: llvm/test/Regression/LLC/badFoldGEP.ll diff -u llvm/test/Regression/LLC/badFoldGEP.ll:1.2 llvm/test/Regression/LLC/badFoldGEP.ll:1.3 --- llvm/test/Regression/LLC/badFoldGEP.ll:1.2 Wed Jan 15 12:06:37 2003 +++ llvm/test/Regression/LLC/badFoldGEP.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; GetMemInstArgs() folded the two getElementPtr instructions together, ;; producing an illegal getElementPtr. That's because the type generated ;; by the last index for the first one is a structure field, not an array Index: llvm/test/Regression/LLC/badarg6.ll diff -u llvm/test/Regression/LLC/badarg6.ll:1.1 llvm/test/Regression/LLC/badarg6.ll:1.2 --- llvm/test/Regression/LLC/badarg6.ll:1.1 Mon Sep 30 11:14:14 2002 +++ llvm/test/Regression/LLC/badarg6.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ; On this code, llc did not pass the sixth argument (%reg321) to printf. ; It passed the first five in %o0 - %o4, but never initialized %o5. ; Fix in SparcInstrSelection.cpp: Index: llvm/test/Regression/LLC/badlive.ll diff -u llvm/test/Regression/LLC/badlive.ll:1.2 llvm/test/Regression/LLC/badlive.ll:1.3 --- llvm/test/Regression/LLC/badlive.ll:1.2 Wed Aug 21 17:45:23 2002 +++ llvm/test/Regression/LLC/badlive.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + implementation int "main"() Index: llvm/test/Regression/LLC/constindices.ll diff -u llvm/test/Regression/LLC/constindices.ll:1.4 llvm/test/Regression/LLC/constindices.ll:1.5 --- llvm/test/Regression/LLC/constindices.ll:1.4 Tue Sep 9 13:14:37 2003 +++ llvm/test/Regression/LLC/constindices.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ; Test that a sequence of constant indices are folded correctly ; into the equivalent offset at compile-time. Index: llvm/test/Regression/LLC/fwdtwice.ll diff -u llvm/test/Regression/LLC/fwdtwice.ll:1.1 llvm/test/Regression/LLC/fwdtwice.ll:1.2 --- llvm/test/Regression/LLC/fwdtwice.ll:1.1 Wed Jul 10 16:54:04 2002 +++ llvm/test/Regression/LLC/fwdtwice.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ;; ;; Test the sequence: ;; cast -> setle 0, %cast -> br %cond Index: llvm/test/Regression/LLC/negintconst.ll diff -u llvm/test/Regression/LLC/negintconst.ll:1.2 llvm/test/Regression/LLC/negintconst.ll:1.3 --- llvm/test/Regression/LLC/negintconst.ll:1.2 Tue Sep 9 13:14:37 2003 +++ llvm/test/Regression/LLC/negintconst.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ; Test that a negative constant smaller than 64 bits (e.g., int) ; is correctly implemented with sign-extension. ; In particular, the current code generated is: Index: llvm/test/Regression/LLC/sched.ll diff -u llvm/test/Regression/LLC/sched.ll:1.2 llvm/test/Regression/LLC/sched.ll:1.3 --- llvm/test/Regression/LLC/sched.ll:1.2 Wed Jul 10 17:31:09 2002 +++ llvm/test/Regression/LLC/sched.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + implementation declare int "printf"(sbyte*, int, float) Index: llvm/test/Regression/LLC/select.ll diff -u llvm/test/Regression/LLC/select.ll:1.9 llvm/test/Regression/LLC/select.ll:1.10 --- llvm/test/Regression/LLC/select.ll:1.9 Sat Nov 22 00:18:35 2003 +++ llvm/test/Regression/LLC/select.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + %AConst = constant int 123 %Domain = type { sbyte*, int, int*, int, int, int*, %Domain* } Index: llvm/test/Regression/LLC/spillccr.ll diff -u llvm/test/Regression/LLC/spillccr.ll:1.3 llvm/test/Regression/LLC/spillccr.ll:1.4 --- llvm/test/Regression/LLC/spillccr.ll:1.3 Wed Jan 15 12:06:37 2003 +++ llvm/test/Regression/LLC/spillccr.ll Sat Nov 6 17:05:53 2004 @@ -1,3 +1,5 @@ +; RUN: llvm-as -f %s -o - | llc + ; July 6, 2002 -- LLC Regression test ; This test case checks if the integer CC register %xcc (or %ccr) ; is correctly spilled. The code fragment came from function From tbrethou at cs.uiuc.edu Sat Nov 6 17:08:37 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 17:08:37 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Verifier/2002-04-13-RetTypes.ll 2002-11-05-GetelementptrPointers.ll 2003-11-21-FunctionReturningStructure.ll 2004-05-21-SwitchConstantMismatch.ll AmbiguousPhi.ll PhiGrouping.ll SelfReferential.ll Message-ID: <200411062308.RAA30785@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Verifier: 2002-04-13-RetTypes.ll updated: 1.1 -> 1.2 2002-11-05-GetelementptrPointers.ll updated: 1.1 -> 1.2 2003-11-21-FunctionReturningStructure.ll updated: 1.1 -> 1.2 2004-05-21-SwitchConstantMismatch.ll updated: 1.1 -> 1.2 AmbiguousPhi.ll updated: 1.1 -> 1.2 PhiGrouping.ll updated: 1.1 -> 1.2 SelfReferential.ll updated: 1.1 -> 1.2 --- Log message: Adding RUN lines. --- Diffs of the changes: (+14 -0) Index: llvm/test/Regression/Verifier/2002-04-13-RetTypes.ll diff -u llvm/test/Regression/Verifier/2002-04-13-RetTypes.ll:1.1 llvm/test/Regression/Verifier/2002-04-13-RetTypes.ll:1.2 --- llvm/test/Regression/Verifier/2002-04-13-RetTypes.ll:1.1 Sat Apr 13 17:46:23 2002 +++ llvm/test/Regression/Verifier/2002-04-13-RetTypes.ll Sat Nov 6 17:08:26 2004 @@ -1,3 +1,5 @@ +; RUN: not llvm-as -f %s -o /dev/null + ; Verify the the operand type of the ret instructions in a function match the ; delcared return type of the function they live in. ; Index: llvm/test/Regression/Verifier/2002-11-05-GetelementptrPointers.ll diff -u llvm/test/Regression/Verifier/2002-11-05-GetelementptrPointers.ll:1.1 llvm/test/Regression/Verifier/2002-11-05-GetelementptrPointers.ll:1.2 --- llvm/test/Regression/Verifier/2002-11-05-GetelementptrPointers.ll:1.1 Tue Nov 5 18:52:21 2002 +++ llvm/test/Regression/Verifier/2002-11-05-GetelementptrPointers.ll Sat Nov 6 17:08:26 2004 @@ -1,3 +1,5 @@ +; RUN: not llvm-as -f %s -o /dev/null + ; This testcase is invalid because we are indexing into a pointer that is ; contained WITHIN a structure. Index: llvm/test/Regression/Verifier/2003-11-21-FunctionReturningStructure.ll diff -u llvm/test/Regression/Verifier/2003-11-21-FunctionReturningStructure.ll:1.1 llvm/test/Regression/Verifier/2003-11-21-FunctionReturningStructure.ll:1.2 --- llvm/test/Regression/Verifier/2003-11-21-FunctionReturningStructure.ll:1.1 Fri Nov 21 16:28:49 2003 +++ llvm/test/Regression/Verifier/2003-11-21-FunctionReturningStructure.ll Sat Nov 6 17:08:26 2004 @@ -1,3 +1,5 @@ +; RUN: not llvm-as -f %s -o /dev/null + %T = type { int } Index: llvm/test/Regression/Verifier/2004-05-21-SwitchConstantMismatch.ll diff -u llvm/test/Regression/Verifier/2004-05-21-SwitchConstantMismatch.ll:1.1 llvm/test/Regression/Verifier/2004-05-21-SwitchConstantMismatch.ll:1.2 --- llvm/test/Regression/Verifier/2004-05-21-SwitchConstantMismatch.ll:1.1 Fri May 21 11:47:02 2004 +++ llvm/test/Regression/Verifier/2004-05-21-SwitchConstantMismatch.ll Sat Nov 6 17:08:26 2004 @@ -1,3 +1,5 @@ +; RUN: not llvm-as -f %s -o /dev/null + int %main() { Index: llvm/test/Regression/Verifier/AmbiguousPhi.ll diff -u llvm/test/Regression/Verifier/AmbiguousPhi.ll:1.1 llvm/test/Regression/Verifier/AmbiguousPhi.ll:1.2 --- llvm/test/Regression/Verifier/AmbiguousPhi.ll:1.1 Sat Jun 8 12:33:15 2002 +++ llvm/test/Regression/Verifier/AmbiguousPhi.ll Sat Nov 6 17:08:26 2004 @@ -1,3 +1,5 @@ +; RUN: not llvm-as -f %s -o /dev/null + int "test"(int %i, int %j, bool %c) { Index: llvm/test/Regression/Verifier/PhiGrouping.ll diff -u llvm/test/Regression/Verifier/PhiGrouping.ll:1.1 llvm/test/Regression/Verifier/PhiGrouping.ll:1.2 --- llvm/test/Regression/Verifier/PhiGrouping.ll:1.1 Sat Jun 8 12:33:16 2002 +++ llvm/test/Regression/Verifier/PhiGrouping.ll Sat Nov 6 17:08:26 2004 @@ -1,3 +1,5 @@ +; RUN: not llvm-as -f %s -o /dev/null + int "test"(int %i, int %j, bool %c) { Index: llvm/test/Regression/Verifier/SelfReferential.ll diff -u llvm/test/Regression/Verifier/SelfReferential.ll:1.1 llvm/test/Regression/Verifier/SelfReferential.ll:1.2 --- llvm/test/Regression/Verifier/SelfReferential.ll:1.1 Thu Apr 18 15:30:58 2002 +++ llvm/test/Regression/Verifier/SelfReferential.ll Sat Nov 6 17:08:26 2004 @@ -1,3 +1,5 @@ +; RUN: not llvm-as -f %s -o /dev/null + ; Test that self referential instructions are not allowed implementation From tbrethou at cs.uiuc.edu Sat Nov 6 17:17:01 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 17:17:01 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/IndVarsSimplify/2003-12-15-Crash.llx Message-ID: <200411062317.RAA31059@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/IndVarsSimplify: 2003-12-15-Crash.llx updated: 1.1 -> 1.2 --- Log message: Adding RUN line. --- Diffs of the changes: (+1 -0) Index: llvm/test/Regression/Transforms/IndVarsSimplify/2003-12-15-Crash.llx diff -u llvm/test/Regression/Transforms/IndVarsSimplify/2003-12-15-Crash.llx:1.1 llvm/test/Regression/Transforms/IndVarsSimplify/2003-12-15-Crash.llx:1.2 --- llvm/test/Regression/Transforms/IndVarsSimplify/2003-12-15-Crash.llx:1.1 Mon Dec 15 11:33:41 2003 +++ llvm/test/Regression/Transforms/IndVarsSimplify/2003-12-15-Crash.llx Sat Nov 6 17:16:51 2004 @@ -1,3 +1,4 @@ +; RUN: llvm-as < %s | opt -indvars -disable-output void %_ZN17CoinFactorization7cleanupEv() { entry: br bool false, label %loopexit.14, label %cond_continue.3 From reid at x10sys.com Sat Nov 6 17:17:34 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 17:17:34 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-as/llvm-as.cpp Message-ID: <200411062317.RAA31118@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-as: llvm-as.cpp updated: 1.34 -> 1.35 --- Log message: Add support for compressed bytecode --- Diffs of the changes: (+4 -1) Index: llvm/tools/llvm-as/llvm-as.cpp diff -u llvm/tools/llvm-as/llvm-as.cpp:1.34 llvm/tools/llvm-as/llvm-as.cpp:1.35 --- llvm/tools/llvm-as/llvm-as.cpp:1.34 Wed Sep 1 17:55:37 2004 +++ llvm/tools/llvm-as/llvm-as.cpp Sat Nov 6 17:17:23 2004 @@ -40,6 +40,9 @@ static cl::opt DumpAsm("d", cl::desc("Print assembly as parsed"), cl::Hidden); +static cl::opt Compress("compress", cl::Optional, + cl::desc("Compress the generated bytecode")); + static cl::opt DisableVerify("disable-verify", cl::Hidden, cl::desc("Do not run verifier on input LLVM (dangerous!)")); @@ -119,7 +122,7 @@ return 1; } - WriteBytecodeToFile(M.get(), *Out); + WriteBytecodeToFile(M.get(), *Out, Compress); } catch (const ParseException &E) { std::cerr << argv[0] << ": " << E.getMessage() << "\n"; return 1; From reid at x10sys.com Sat Nov 6 17:17:34 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 17:17:34 -0600 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Reader/Reader.cpp Reader.h Message-ID: <200411062317.RAA31123@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Reader: Reader.cpp updated: 1.135 -> 1.136 Reader.h updated: 1.15 -> 1.16 --- Log message: Add support for compressed bytecode --- Diffs of the changes: (+55 -5) Index: llvm/lib/Bytecode/Reader/Reader.cpp diff -u llvm/lib/Bytecode/Reader/Reader.cpp:1.135 llvm/lib/Bytecode/Reader/Reader.cpp:1.136 --- llvm/lib/Bytecode/Reader/Reader.cpp:1.135 Sat Oct 16 13:56:02 2004 +++ llvm/lib/Bytecode/Reader/Reader.cpp Sat Nov 6 17:17:23 2004 @@ -24,6 +24,7 @@ #include "llvm/SymbolTable.h" #include "llvm/Bytecode/Format.h" #include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/Support/Compressor.h" #include "llvm/ADT/StringExtras.h" #include #include @@ -2152,6 +2153,22 @@ error("Function declared, but bytecode stream ended before definition"); } +static unsigned GetUncompressionBuffer(char*&buff, unsigned& sz, void* ctxt){ + BytecodeReader::BufferInfo* bi = + reinterpret_cast(ctxt); + unsigned new_size = bi->size * 2; + if (bi->buff == 0 ) { + buff = bi->buff = (char*) malloc(new_size); + sz = new_size; + } else { + bi->buff = (char*) ::realloc(bi->buff, new_size); + buff = bi->buff + bi->size; + sz = bi->size; + } + bi->size = new_size; + return (bi->buff == 0 ? 1 : 0); +} + /// This function completely parses a bytecode buffer given by the \p Buf /// and \p Length parameters. void BytecodeReader::ParseBytecode(BufPtr Buf, unsigned Length, @@ -2167,9 +2184,25 @@ if (Handler) Handler->handleStart(TheModule, Length); // Read and check signature... - unsigned Sig = read_uint(); - if (Sig != ('l' | ('l' << 8) | ('v' << 16) | ('m' << 24))) { - error("Invalid bytecode signature: " + utostr(Sig)); + bool compressed = + (Buf[0] == 0xEC && Buf[1] == 0xEC && Buf[2] == 0xF6 && Buf[3] == 0xED); + + if (compressed) { + bi.size = Length * 2;; + // Bytecode is compressed, have to decompress it first. + unsigned uncompressedLength = Compressor::decompress((char*)Buf+4,Length-4, + GetUncompressionBuffer, (void*) &bi); + + At = MemStart = BlockStart = Buf = (BufPtr) bi.buff; + MemEnd = BlockEnd = Buf + uncompressedLength; + + } else { + if (!(Buf[0] == 'l' && Buf[1] == 'l' && Buf[2] == 'v' && Buf[3] == 'm')) + error("Invalid bytecode signature: " + + utohexstr(Buf[0]) + utohexstr(Buf[1]) + utohexstr(Buf[2]) + + utohexstr(Buf[3])); + else + At += 4; // skip the bytes } // Tell the handler we're starting a module @@ -2215,6 +2248,8 @@ freeState(); delete TheModule; TheModule = 0; + if (bi.buff != 0 ) + ::free(bi.buff); throw; } catch (...) { std::string msg("Unknown Exception Occurred"); @@ -2222,6 +2257,8 @@ freeState(); delete TheModule; TheModule = 0; + if (bi.buff != 0 ) + ::free(bi.buff); throw msg; } } Index: llvm/lib/Bytecode/Reader/Reader.h diff -u llvm/lib/Bytecode/Reader/Reader.h:1.15 llvm/lib/Bytecode/Reader/Reader.h:1.16 --- llvm/lib/Bytecode/Reader/Reader.h:1.15 Sat Oct 16 13:18:13 2004 +++ llvm/lib/Bytecode/Reader/Reader.h Sat Nov 6 17:17:23 2004 @@ -47,10 +47,14 @@ BytecodeReader( BytecodeHandler* h = 0 ) { - Handler = h; + Handler = h; } - ~BytecodeReader() { freeState(); } + ~BytecodeReader() { + freeState(); + if (bi.buff != 0) + ::free(bi.buff); + } /// @} /// @name Types @@ -63,6 +67,13 @@ /// @brief The type used for a vector of potentially abstract types typedef std::vector TypeListTy; + /// @brief An internal buffer object used for handling decompression + struct BufferInfo { + char* buff; + unsigned size; + BufferInfo() { buff = 0; size = 0; } + }; + /// This type provides a vector of Value* via the User class for /// storage of Values that have been constructed when reading the /// bytecode. Because of forward referencing, constant replacement @@ -235,6 +246,8 @@ /// @name Data /// @{ private: + BufferInfo bi; ///< Buffer info for decompression + BufPtr MemStart; ///< Start of the memory buffer BufPtr MemEnd; ///< End of the memory buffer BufPtr BlockStart; ///< Start of current block being parsed From reid at x10sys.com Sat Nov 6 17:17:34 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 17:17:34 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Bytecode/Writer.h Message-ID: <200411062317.RAA31112@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Bytecode: Writer.h updated: 1.6 -> 1.7 --- Log message: Add support for compressed bytecode --- Diffs of the changes: (+2 -1) Index: llvm/include/llvm/Bytecode/Writer.h diff -u llvm/include/llvm/Bytecode/Writer.h:1.6 llvm/include/llvm/Bytecode/Writer.h:1.7 --- llvm/include/llvm/Bytecode/Writer.h:1.6 Thu Jun 24 19:42:23 2004 +++ llvm/include/llvm/Bytecode/Writer.h Sat Nov 6 17:17:22 2004 @@ -28,7 +28,8 @@ namespace llvm { class Module; - void WriteBytecodeToFile(const Module *M, std::ostream &Out); + void WriteBytecodeToFile(const Module *M, std::ostream &Out, + bool compress = false); } // End llvm namespace #endif From reid at x10sys.com Sat Nov 6 17:17:34 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 17:17:34 -0600 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Writer/Writer.cpp Message-ID: <200411062317.RAA31113@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Writer: Writer.cpp updated: 1.84 -> 1.85 --- Log message: Add support for compressed bytecode --- Diffs of the changes: (+77 -20) Index: llvm/lib/Bytecode/Writer/Writer.cpp diff -u llvm/lib/Bytecode/Writer/Writer.cpp:1.84 llvm/lib/Bytecode/Writer/Writer.cpp:1.85 --- llvm/lib/Bytecode/Writer/Writer.cpp:1.84 Sat Oct 16 13:18:16 2004 +++ llvm/lib/Bytecode/Writer/Writer.cpp Sat Nov 6 17:17:23 2004 @@ -25,6 +25,7 @@ #include "llvm/Module.h" #include "llvm/SymbolTable.h" #include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/Support/Compressor.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/Statistic.h" #include @@ -1085,36 +1086,92 @@ } } -void llvm::WriteBytecodeToFile(const Module *M, std::ostream &Out) { +struct CompressionContext { + char* chunk; + unsigned sz; + unsigned written; + std::ostream* Out; +}; + +static unsigned WriteCompressedData(char*&buffer, unsigned& size, void* context) { + CompressionContext* ctxt = reinterpret_cast(context); + if (ctxt->chunk != 0 && ctxt->sz > 0 ) { + ctxt->Out->write(ctxt->chunk,ctxt->sz); + delete [] ctxt->chunk; + ctxt->written += ctxt->sz; + } + size = ctxt->sz = 1024*1024; + buffer = ctxt->chunk = new char [ctxt->sz]; + return (ctxt->chunk == 0 ? 1 : 0); +} + +void llvm::WriteBytecodeToFile(const Module *M, std::ostream &Out, + bool compress ) { assert(M && "You can't write a null module!!"); + // Create a vector of unsigned char for the bytecode output. We + // reserve 256KBytes of space in the vector so that we avoid doing + // lots of little allocations. 256KBytes is sufficient for a large + // proportion of the bytecode files we will encounter. Larger files + // will be automatically doubled in size as needed (std::vector + // behavior). std::vector Buffer; - Buffer.reserve(64 * 1024); // avoid lots of little reallocs + Buffer.reserve(256 * 1024); - // This object populates buffer for us... + // The BytecodeWriter populates Buffer for us. BytecodeWriter BCW(Buffer, M); - // Keep track of how much we've written... + // Keep track of how much we've written BytesWritten += Buffer.size(); - // Okay, write the deque out to the ostream now... the deque is not - // sequential in memory, however, so write out as much as possible in big - // chunks, until we're done. - // - for (std::vector::const_iterator I = Buffer.begin(), - E = Buffer.end(); I != E; ) { - // Scan to see how big this chunk is... - const unsigned char *ChunkPtr = &*I; - const unsigned char *LastPtr = ChunkPtr; - while (I != E) { - const unsigned char *ThisPtr = &*++I; - if (++LastPtr != ThisPtr) // Advanced by more than a byte of memory? - break; + // Determine start and end points of the Buffer + std::vector::iterator I = Buffer.begin(); + const unsigned char *FirstByte = &(*I); + const unsigned char *LastByte = FirstByte + Buffer.size(); + + // If we're supposed to compress this mess ... + if (compress) { + + // We signal compression by using an alternate magic number for the + // file. The compressed bytecode file's magic number is the same as + // the uncompressed one but with the high bits set. So, "llvm", which + // is 0x6C 0x6C 0x76 0x6D becomes 0xEC 0xEC 0xF6 0xED + unsigned char compressed_magic[4]; + compressed_magic[0] = 0xEC; // 'l' + 0x80 + compressed_magic[1] = 0xEC; // 'l' + 0x80 + compressed_magic[2] = 0xF6; // 'v' + 0x80 + compressed_magic[3] = 0xED; // 'm' + 0x80 + + Out.write((char*)compressed_magic,4); + + // Do the compression, writing as we go. + CompressionContext ctxt; + ctxt.chunk = 0; + ctxt.sz = 0; + ctxt.written = 0; + ctxt.Out = &Out; + + // Compress everything after the magic number (which we'll alter) + uint64_t zipSize = Compressor::compress( + (char*)(FirstByte+4), // Skip the magic number + Buffer.size()-4, // Skip the magic number + WriteCompressedData, // use this function to allocate / write + Compressor::COMP_TYPE_BZIP2, // Try bzip2 compression first + (void*)&ctxt // Keep track of allocated memory + ); + + if (ctxt.chunk && ctxt.sz > 0) { + Out.write(ctxt.chunk, zipSize - ctxt.written); + delete [] ctxt.chunk; } - - // Write out the chunk... - Out.write((char*)ChunkPtr, unsigned(LastPtr-ChunkPtr)); + } else { + + // We're not compressing, so just write the entire block. + Out.write((char*)FirstByte, LastByte-FirstByte); + } + + // make sure it hits disk now Out.flush(); } From tbrethou at cs.uiuc.edu Sat Nov 6 17:32:56 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 17:32:56 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/ExecutionEngine/2002-12-16-ArgTest.ll 2003-01-04-ArgumentBug.ll 2003-01-04-LoopTest.ll 2003-01-04-PhiTest.ll 2003-01-09-SARTest.ll 2003-01-10-FUCOM.ll 2003-01-15-AlignmentTest.ll 2003-05-11-PHIRegAllocBug.ll 2003-06-04-bzip2-bug.ll 2003-06-05-PHIBug.ll 2003-08-15-AllocaAssertion.ll 2003-08-21-EnvironmentTest.ll 2003-08-23-RegisterAllocatePhysReg.ll 2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll hello.ll hello2.ll simplesttest.ll simpletest.ll test-arith.ll test-branch.ll test-call.ll test-cast.ll test-constantexpr.ll test-fp.ll test-loadstore.ll test-logical.ll test-loop.ll test-malloc.ll test-phi.ll test-ret.ll test-setcond-fp.ll test-setcond-int.ll test-shift.ll Message-ID: <200411062332.RAA31686@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/ExecutionEngine: 2002-12-16-ArgTest.ll updated: 1.3 -> 1.4 2003-01-04-ArgumentBug.ll updated: 1.2 -> 1.3 2003-01-04-LoopTest.ll updated: 1.1 -> 1.2 2003-01-04-PhiTest.ll updated: 1.3 -> 1.4 2003-01-09-SARTest.ll updated: 1.1 -> 1.2 2003-01-10-FUCOM.ll updated: 1.1 -> 1.2 2003-01-15-AlignmentTest.ll updated: 1.1 -> 1.2 2003-05-11-PHIRegAllocBug.ll updated: 1.2 -> 1.3 2003-06-04-bzip2-bug.ll updated: 1.1 -> 1.2 2003-06-05-PHIBug.ll updated: 1.1 -> 1.2 2003-08-15-AllocaAssertion.ll updated: 1.1 -> 1.2 2003-08-21-EnvironmentTest.ll updated: 1.3 -> 1.4 2003-08-23-RegisterAllocatePhysReg.ll updated: 1.1 -> 1.2 2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll updated: 1.2 -> 1.3 hello.ll updated: 1.2 -> 1.3 hello2.ll updated: 1.1 -> 1.2 simplesttest.ll updated: 1.4 -> 1.5 simpletest.ll updated: 1.1 -> 1.2 test-arith.ll updated: 1.8 -> 1.9 test-branch.ll updated: 1.5 -> 1.6 test-call.ll updated: 1.5 -> 1.6 test-cast.ll updated: 1.7 -> 1.8 test-constantexpr.ll updated: 1.1 -> 1.2 test-fp.ll updated: 1.4 -> 1.5 test-loadstore.ll updated: 1.5 -> 1.6 test-logical.ll updated: 1.4 -> 1.5 test-loop.ll updated: 1.1 -> 1.2 test-malloc.ll updated: 1.1 -> 1.2 test-phi.ll updated: 1.4 -> 1.5 test-ret.ll updated: 1.4 -> 1.5 test-setcond-fp.ll updated: 1.2 -> 1.3 test-setcond-int.ll updated: 1.4 -> 1.5 test-shift.ll updated: 1.5 -> 1.6 --- Log message: Adding RUN lines. --- Diffs of the changes: (+99 -0) Index: llvm/test/Regression/ExecutionEngine/2002-12-16-ArgTest.ll diff -u llvm/test/Regression/ExecutionEngine/2002-12-16-ArgTest.ll:1.3 llvm/test/Regression/ExecutionEngine/2002-12-16-ArgTest.ll:1.4 --- llvm/test/Regression/ExecutionEngine/2002-12-16-ArgTest.ll:1.3 Tue Dec 17 20:07:21 2002 +++ llvm/test/Regression/ExecutionEngine/2002-12-16-ArgTest.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + %.LC0 = internal global [10 x sbyte] c"argc: %d\0A\00" implementation ; Functions: Index: llvm/test/Regression/ExecutionEngine/2003-01-04-ArgumentBug.ll diff -u llvm/test/Regression/ExecutionEngine/2003-01-04-ArgumentBug.ll:1.2 llvm/test/Regression/ExecutionEngine/2003-01-04-ArgumentBug.ll:1.3 --- llvm/test/Regression/ExecutionEngine/2003-01-04-ArgumentBug.ll:1.2 Fri Jun 6 01:50:43 2003 +++ llvm/test/Regression/ExecutionEngine/2003-01-04-ArgumentBug.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + implementation ; Functions: Index: llvm/test/Regression/ExecutionEngine/2003-01-04-LoopTest.ll diff -u llvm/test/Regression/ExecutionEngine/2003-01-04-LoopTest.ll:1.1 llvm/test/Regression/ExecutionEngine/2003-01-04-LoopTest.ll:1.2 --- llvm/test/Regression/ExecutionEngine/2003-01-04-LoopTest.ll:1.1 Sun Jan 12 19:03:16 2003 +++ llvm/test/Regression/ExecutionEngine/2003-01-04-LoopTest.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + implementation int %main() { Index: llvm/test/Regression/ExecutionEngine/2003-01-04-PhiTest.ll diff -u llvm/test/Regression/ExecutionEngine/2003-01-04-PhiTest.ll:1.3 llvm/test/Regression/ExecutionEngine/2003-01-04-PhiTest.ll:1.4 --- llvm/test/Regression/ExecutionEngine/2003-01-04-PhiTest.ll:1.3 Wed Nov 19 13:44:28 2003 +++ llvm/test/Regression/ExecutionEngine/2003-01-04-PhiTest.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %main() { br label %Loop Loop: Index: llvm/test/Regression/ExecutionEngine/2003-01-09-SARTest.ll diff -u llvm/test/Regression/ExecutionEngine/2003-01-09-SARTest.ll:1.1 llvm/test/Regression/ExecutionEngine/2003-01-09-SARTest.ll:1.2 --- llvm/test/Regression/ExecutionEngine/2003-01-09-SARTest.ll:1.1 Sun Jan 12 19:03:16 2003 +++ llvm/test/Regression/ExecutionEngine/2003-01-09-SARTest.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; We were accidentally inverting the signedness of right shifts. Whoops. int %main() { Index: llvm/test/Regression/ExecutionEngine/2003-01-10-FUCOM.ll diff -u llvm/test/Regression/ExecutionEngine/2003-01-10-FUCOM.ll:1.1 llvm/test/Regression/ExecutionEngine/2003-01-10-FUCOM.ll:1.2 --- llvm/test/Regression/ExecutionEngine/2003-01-10-FUCOM.ll:1.1 Sun Jan 12 19:03:16 2003 +++ llvm/test/Regression/ExecutionEngine/2003-01-10-FUCOM.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %main() { %X = add double 0.0, 1.0 Index: llvm/test/Regression/ExecutionEngine/2003-01-15-AlignmentTest.ll diff -u llvm/test/Regression/ExecutionEngine/2003-01-15-AlignmentTest.ll:1.1 llvm/test/Regression/ExecutionEngine/2003-01-15-AlignmentTest.ll:1.2 --- llvm/test/Regression/ExecutionEngine/2003-01-15-AlignmentTest.ll:1.1 Sun May 11 23:06:38 2003 +++ llvm/test/Regression/ExecutionEngine/2003-01-15-AlignmentTest.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %bar(sbyte* %X) { %P = alloca double ; pointer should be 4 byte aligned! Index: llvm/test/Regression/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll diff -u llvm/test/Regression/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll:1.2 llvm/test/Regression/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll:1.3 --- llvm/test/Regression/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll:1.2 Sun May 11 21:31:48 2003 +++ llvm/test/Regression/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + target endian = little target pointersize = 32 Index: llvm/test/Regression/ExecutionEngine/2003-06-04-bzip2-bug.ll diff -u llvm/test/Regression/ExecutionEngine/2003-06-04-bzip2-bug.ll:1.1 llvm/test/Regression/ExecutionEngine/2003-06-04-bzip2-bug.ll:1.2 --- llvm/test/Regression/ExecutionEngine/2003-06-04-bzip2-bug.ll:1.1 Thu Jun 5 00:38:30 2003 +++ llvm/test/Regression/ExecutionEngine/2003-06-04-bzip2-bug.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; Testcase distilled from 256.bzip2. target endian = little Index: llvm/test/Regression/ExecutionEngine/2003-06-05-PHIBug.ll diff -u llvm/test/Regression/ExecutionEngine/2003-06-05-PHIBug.ll:1.1 llvm/test/Regression/ExecutionEngine/2003-06-05-PHIBug.ll:1.2 --- llvm/test/Regression/ExecutionEngine/2003-06-05-PHIBug.ll:1.1 Thu Jun 5 11:57:55 2003 +++ llvm/test/Regression/ExecutionEngine/2003-06-05-PHIBug.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; Testcase distilled from 256.bzip2. target endian = little Index: llvm/test/Regression/ExecutionEngine/2003-08-15-AllocaAssertion.ll diff -u llvm/test/Regression/ExecutionEngine/2003-08-15-AllocaAssertion.ll:1.1 llvm/test/Regression/ExecutionEngine/2003-08-15-AllocaAssertion.ll:1.2 --- llvm/test/Regression/ExecutionEngine/2003-08-15-AllocaAssertion.ll:1.1 Fri Aug 15 17:36:55 2003 +++ llvm/test/Regression/ExecutionEngine/2003-08-15-AllocaAssertion.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; This testcase failed to work because two variable sized allocas confused the ; local register allocator. Index: llvm/test/Regression/ExecutionEngine/2003-08-21-EnvironmentTest.ll diff -u llvm/test/Regression/ExecutionEngine/2003-08-21-EnvironmentTest.ll:1.3 llvm/test/Regression/ExecutionEngine/2003-08-21-EnvironmentTest.ll:1.4 --- llvm/test/Regression/ExecutionEngine/2003-08-21-EnvironmentTest.ll:1.3 Wed Nov 19 13:42:12 2003 +++ llvm/test/Regression/ExecutionEngine/2003-08-21-EnvironmentTest.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; ; Regression Test: EnvironmentTest.ll ; Index: llvm/test/Regression/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll diff -u llvm/test/Regression/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll:1.1 llvm/test/Regression/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll:1.2 --- llvm/test/Regression/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll:1.1 Sat Aug 23 18:38:59 2003 +++ llvm/test/Regression/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; This testcase exposes a bug in the local register allocator where it runs out ; of registers (due to too many overlapping live ranges), but then attempts to ; use the ESP register (which is not allocatable) to hold a value. Index: llvm/test/Regression/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll diff -u llvm/test/Regression/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll:1.2 llvm/test/Regression/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll:1.3 --- llvm/test/Regression/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll:1.2 Wed Nov 19 13:47:36 2003 +++ llvm/test/Regression/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + %A = global int 0 int %main() { Index: llvm/test/Regression/ExecutionEngine/hello.ll diff -u llvm/test/Regression/ExecutionEngine/hello.ll:1.2 llvm/test/Regression/ExecutionEngine/hello.ll:1.3 --- llvm/test/Regression/ExecutionEngine/hello.ll:1.2 Fri Dec 13 00:57:24 2002 +++ llvm/test/Regression/ExecutionEngine/hello.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + %.LC0 = internal global [12 x sbyte] c"Hello World\00" implementation Index: llvm/test/Regression/ExecutionEngine/hello2.ll diff -u llvm/test/Regression/ExecutionEngine/hello2.ll:1.1 llvm/test/Regression/ExecutionEngine/hello2.ll:1.2 --- llvm/test/Regression/ExecutionEngine/hello2.ll:1.1 Sat Jul 26 19:28:10 2003 +++ llvm/test/Regression/ExecutionEngine/hello2.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + %X = global int 7 %msg = internal global [13 x sbyte] c"Hello World\0A\00" Index: llvm/test/Regression/ExecutionEngine/simplesttest.ll diff -u llvm/test/Regression/ExecutionEngine/simplesttest.ll:1.4 llvm/test/Regression/ExecutionEngine/simplesttest.ll:1.5 --- llvm/test/Regression/ExecutionEngine/simplesttest.ll:1.4 Sat Jul 26 19:28:10 2003 +++ llvm/test/Regression/ExecutionEngine/simplesttest.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + implementation Index: llvm/test/Regression/ExecutionEngine/simpletest.ll diff -u llvm/test/Regression/ExecutionEngine/simpletest.ll:1.1 llvm/test/Regression/ExecutionEngine/simpletest.ll:1.2 --- llvm/test/Regression/ExecutionEngine/simpletest.ll:1.1 Wed Dec 4 11:35:11 2002 +++ llvm/test/Regression/ExecutionEngine/simpletest.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + implementation int %bar() { ret int 0 } Index: llvm/test/Regression/ExecutionEngine/test-arith.ll diff -u llvm/test/Regression/ExecutionEngine/test-arith.ll:1.8 llvm/test/Regression/ExecutionEngine/test-arith.ll:1.9 --- llvm/test/Regression/ExecutionEngine/test-arith.ll:1.8 Wed Nov 26 08:45:37 2003 +++ llvm/test/Regression/ExecutionEngine/test-arith.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %main() { %A = add sbyte 0, 12 %B = sub sbyte %A, 1 Index: llvm/test/Regression/ExecutionEngine/test-branch.ll diff -u llvm/test/Regression/ExecutionEngine/test-branch.ll:1.5 llvm/test/Regression/ExecutionEngine/test-branch.ll:1.6 --- llvm/test/Regression/ExecutionEngine/test-branch.ll:1.5 Fri Jun 6 02:58:29 2003 +++ llvm/test/Regression/ExecutionEngine/test-branch.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; test unconditional branch int %main() { br label %Test Index: llvm/test/Regression/ExecutionEngine/test-call.ll diff -u llvm/test/Regression/ExecutionEngine/test-call.ll:1.5 llvm/test/Regression/ExecutionEngine/test-call.ll:1.6 --- llvm/test/Regression/ExecutionEngine/test-call.ll:1.5 Sat Dec 28 14:01:07 2002 +++ llvm/test/Regression/ExecutionEngine/test-call.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + declare void %exit(int) Index: llvm/test/Regression/ExecutionEngine/test-cast.ll diff -u llvm/test/Regression/ExecutionEngine/test-cast.ll:1.7 llvm/test/Regression/ExecutionEngine/test-cast.ll:1.8 --- llvm/test/Regression/ExecutionEngine/test-cast.ll:1.7 Fri May 7 16:10:28 2004 +++ llvm/test/Regression/ExecutionEngine/test-cast.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %foo() { Index: llvm/test/Regression/ExecutionEngine/test-constantexpr.ll diff -u llvm/test/Regression/ExecutionEngine/test-constantexpr.ll:1.1 llvm/test/Regression/ExecutionEngine/test-constantexpr.ll:1.2 --- llvm/test/Regression/ExecutionEngine/test-constantexpr.ll:1.1 Sun Aug 24 14:19:25 2003 +++ llvm/test/Regression/ExecutionEngine/test-constantexpr.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; This tests to make sure that we can evaluate wierd constant expressions %A = global int 5 %B = global int 6 Index: llvm/test/Regression/ExecutionEngine/test-fp.ll diff -u llvm/test/Regression/ExecutionEngine/test-fp.ll:1.4 llvm/test/Regression/ExecutionEngine/test-fp.ll:1.5 --- llvm/test/Regression/ExecutionEngine/test-fp.ll:1.4 Wed Nov 26 08:45:37 2003 +++ llvm/test/Regression/ExecutionEngine/test-fp.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + double %test(double* %DP, double %Arg) { %D = load double* %DP Index: llvm/test/Regression/ExecutionEngine/test-loadstore.ll diff -u llvm/test/Regression/ExecutionEngine/test-loadstore.ll:1.5 llvm/test/Regression/ExecutionEngine/test-loadstore.ll:1.6 --- llvm/test/Regression/ExecutionEngine/test-loadstore.ll:1.5 Sun Jan 12 18:57:04 2003 +++ llvm/test/Regression/ExecutionEngine/test-loadstore.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + void %test(sbyte* %P, short* %P, int* %P, long* %P) { %V = load sbyte* %P Index: llvm/test/Regression/ExecutionEngine/test-logical.ll diff -u llvm/test/Regression/ExecutionEngine/test-logical.ll:1.4 llvm/test/Regression/ExecutionEngine/test-logical.ll:1.5 --- llvm/test/Regression/ExecutionEngine/test-logical.ll:1.4 Sun Jan 12 18:57:11 2003 +++ llvm/test/Regression/ExecutionEngine/test-logical.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %main() { %A = and sbyte 4, 8 Index: llvm/test/Regression/ExecutionEngine/test-loop.ll diff -u llvm/test/Regression/ExecutionEngine/test-loop.ll:1.1 llvm/test/Regression/ExecutionEngine/test-loop.ll:1.2 --- llvm/test/Regression/ExecutionEngine/test-loop.ll:1.1 Fri Dec 13 06:10:16 2002 +++ llvm/test/Regression/ExecutionEngine/test-loop.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %main() { Index: llvm/test/Regression/ExecutionEngine/test-malloc.ll diff -u llvm/test/Regression/ExecutionEngine/test-malloc.ll:1.1 llvm/test/Regression/ExecutionEngine/test-malloc.ll:1.2 --- llvm/test/Regression/ExecutionEngine/test-malloc.ll:1.1 Sun Jan 12 19:03:16 2003 +++ llvm/test/Regression/ExecutionEngine/test-malloc.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %main() { %X = malloc int ; constant size Index: llvm/test/Regression/ExecutionEngine/test-phi.ll diff -u llvm/test/Regression/ExecutionEngine/test-phi.ll:1.4 llvm/test/Regression/ExecutionEngine/test-phi.ll:1.5 --- llvm/test/Regression/ExecutionEngine/test-phi.ll:1.4 Sun Dec 15 14:52:08 2002 +++ llvm/test/Regression/ExecutionEngine/test-phi.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; test phi node %Y = global int 6 Index: llvm/test/Regression/ExecutionEngine/test-ret.ll diff -u llvm/test/Regression/ExecutionEngine/test-ret.ll:1.4 llvm/test/Regression/ExecutionEngine/test-ret.ll:1.5 --- llvm/test/Regression/ExecutionEngine/test-ret.ll:1.4 Sun Jan 12 18:57:19 2003 +++ llvm/test/Regression/ExecutionEngine/test-ret.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; test return instructions void %test() { ret void } Index: llvm/test/Regression/ExecutionEngine/test-setcond-fp.ll diff -u llvm/test/Regression/ExecutionEngine/test-setcond-fp.ll:1.2 llvm/test/Regression/ExecutionEngine/test-setcond-fp.ll:1.3 --- llvm/test/Regression/ExecutionEngine/test-setcond-fp.ll:1.2 Fri Jun 6 03:00:40 2003 +++ llvm/test/Regression/ExecutionEngine/test-setcond-fp.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %main() { %double1 = add double 0.0, 0.0 Index: llvm/test/Regression/ExecutionEngine/test-setcond-int.ll diff -u llvm/test/Regression/ExecutionEngine/test-setcond-int.ll:1.4 llvm/test/Regression/ExecutionEngine/test-setcond-int.ll:1.5 --- llvm/test/Regression/ExecutionEngine/test-setcond-int.ll:1.4 Sun Jan 12 18:57:37 2003 +++ llvm/test/Regression/ExecutionEngine/test-setcond-int.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + int %main() { %int1 = add int 0, 0 Index: llvm/test/Regression/ExecutionEngine/test-shift.ll diff -u llvm/test/Regression/ExecutionEngine/test-shift.ll:1.5 llvm/test/Regression/ExecutionEngine/test-shift.ll:1.6 --- llvm/test/Regression/ExecutionEngine/test-shift.ll:1.5 Wed Nov 26 08:45:37 2003 +++ llvm/test/Regression/ExecutionEngine/test-shift.ll Sat Nov 6 17:32:43 2004 @@ -1,3 +1,6 @@ +; RUN: llvm-as -f %s -o %t.bc +; RUN: lli %t.bc > /dev/null + ; test shifts int %main() { %shamt = add ubyte 0, 1 From lattner at cs.uiuc.edu Sat Nov 6 17:42:46 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 17:42:46 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/FunctionResolve/2003-10-21-GlobalTypeDifference.ll Message-ID: <200411062342.iA6NgkCv006818@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/FunctionResolve: 2003-10-21-GlobalTypeDifference.ll (r1.2) removed --- Log message: This test is obsolete and incorrect --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Sat Nov 6 18:24:25 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:24:25 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/LLC/2002-04-14-UnexpectedUnsignedType.ll 2002-04-16-StackFrameSizeAlignment.ll 2003-05-27-phifcmpd.ll 2003-05-27-useboolinotherbb.ll 2003-05-27-usefsubasbool.ll 2003-05-28-ManyArgs.ll 2003-05-30-BadFoldGEP.ll 2003-05-30-BadPreselectPhi.ll 2003-07-06-BadIntCmp.ll 2003-07-07-BadLongConst.ll 2003-07-08-BadCastToBool.ll 2003-07-29-BadConstSbyte.ll BurgBadRegAlloc.ll badCallArgLRLLVM.ll badFoldGEP.ll badarg6.ll badlive.ll constindices.ll fwdtwice.ll negintconst.ll sched.ll select.ll spillccr.ll Message-ID: <200411070024.iA70OPu2008014@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/LLC: 2002-04-14-UnexpectedUnsignedType.ll (r1.2) removed 2002-04-16-StackFrameSizeAlignment.ll (r1.2) removed 2003-05-27-phifcmpd.ll (r1.2) removed 2003-05-27-useboolinotherbb.ll (r1.2) removed 2003-05-27-usefsubasbool.ll (r1.2) removed 2003-05-28-ManyArgs.ll (r1.2) removed 2003-05-30-BadFoldGEP.ll (r1.2) removed 2003-05-30-BadPreselectPhi.ll (r1.2) removed 2003-07-06-BadIntCmp.ll (r1.2) removed 2003-07-07-BadLongConst.ll (r1.2) removed 2003-07-08-BadCastToBool.ll (r1.3) removed 2003-07-29-BadConstSbyte.ll (r1.3) removed BurgBadRegAlloc.ll (r1.4) removed badCallArgLRLLVM.ll (r1.2) removed badFoldGEP.ll (r1.3) removed badarg6.ll (r1.2) removed badlive.ll (r1.3) removed constindices.ll (r1.5) removed fwdtwice.ll (r1.2) removed negintconst.ll (r1.3) removed sched.ll (r1.3) removed select.ll (r1.10) removed spillccr.ll (r1.4) removed --- Log message: These files are all moved to test/Regression/CodeGen/Generic --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Sat Nov 6 18:31:07 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:31:07 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Analysis/DSGraph/globalgraph.c globals.c Message-ID: <200411070031.iA70V7Qb008071@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Analysis/DSGraph: globalgraph.c (r1.2) removed globals.c (r1.2) removed --- Log message: Nuke useless testcases --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Sat Nov 6 18:33:26 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:33:26 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/Generic/BasicInstrs.c branch.c print-vals.c struct.c Message-ID: <200411070033.iA70XQaS008102@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/Generic: BasicInstrs.c updated: 1.2 -> 1.3 branch.c (r1.1) removed print-vals.c (r1.1) removed struct.c (r1.1) removed --- Log message: Fix a test. These other tests should be in test/Programs/SingleSource/UnitTests if anyone cares enough to save them --- Diffs of the changes: (+2 -1) Index: llvm/test/Regression/CodeGen/Generic/BasicInstrs.c diff -u llvm/test/Regression/CodeGen/Generic/BasicInstrs.c:1.2 llvm/test/Regression/CodeGen/Generic/BasicInstrs.c:1.3 --- llvm/test/Regression/CodeGen/Generic/BasicInstrs.c:1.2 Thu May 27 03:28:42 2004 +++ llvm/test/Regression/CodeGen/Generic/BasicInstrs.c Sat Nov 6 18:33:14 2004 @@ -1,7 +1,8 @@ // This file can be used to see what a native C compiler is generating for a // variety of interesting operations. // -// RUN: $LLVMGCCDIR/bin/gcc -c %s +// RUN: %llvmgcc -c %s -o - | llc + unsigned int udiv(unsigned int X, unsigned int Y) { return X/Y; } From lattner at cs.uiuc.edu Sat Nov 6 18:34:57 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:34:57 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Debugger/funccall.c Message-ID: <200411070034.iA70YvL0008133@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Debugger: funccall.c updated: 1.1 -> 1.2 --- Log message: This is not part of the test --- Diffs of the changes: (+3 -0) Index: llvm/test/Regression/Debugger/funccall.c diff -u llvm/test/Regression/Debugger/funccall.c:1.1 llvm/test/Regression/Debugger/funccall.c:1.2 --- llvm/test/Regression/Debugger/funccall.c:1.1 Sun Jan 4 23:32:40 2004 +++ llvm/test/Regression/Debugger/funccall.c Sat Nov 6 18:34:45 2004 @@ -12,3 +12,6 @@ return q; } + +// This is the source that corresponds to funccall.ll +// RUN: exit 0 From lattner at cs.uiuc.edu Sat Nov 6 18:36:44 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:36:44 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/DecomposeMultiDimRefs/mixedindices.c multidim.ll Message-ID: <200411070036.iA70aiZ0013103@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/DecomposeMultiDimRefs: mixedindices.c (r1.3) removed multidim.ll (r1.8) removed --- Log message: Remove dead tests --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Sat Nov 6 18:38:29 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:38:29 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/CodeExtractor/loops-no-output.c loops-outputs.c Message-ID: <200411070038.iA70cTfX019632@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/CodeExtractor: loops-no-output.c (r1.1) removed loops-outputs.c (r1.1) removed --- Log message: Tests for this xforms should be .ll files, and they should have run lines. --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Sat Nov 6 18:39:21 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:39:21 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp Message-ID: <200411070039.iA70dLRY019651@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Target/SparcV9: DecomposeMultiDimRefs.cpp added (r1.1) --- Log message: Move this file from lib/Transforms/Scalar --- Diffs of the changes: (+136 -0) Index: llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp diff -c /dev/null llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp:1.1 *** /dev/null Sat Nov 6 18:39:19 2004 --- llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp Sat Nov 6 18:39:09 2004 *************** *** 0 **** --- 1,136 ---- + //===- llvm/Transforms/DecomposeMultiDimRefs.cpp - Lower array refs to 1D -===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by the LLVM research group and is distributed under + // the University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + // + // DecomposeMultiDimRefs - Convert multi-dimensional references consisting of + // any combination of 2 or more array and structure indices into a sequence of + // instructions (using getelementpr and cast) so that each instruction has at + // most one index (except structure references, which need an extra leading + // index of [0]). + // + //===----------------------------------------------------------------------===// + + #include "llvm/Transforms/Scalar.h" + #include "llvm/DerivedTypes.h" + #include "llvm/Constants.h" + #include "llvm/Constant.h" + #include "llvm/Instructions.h" + #include "llvm/BasicBlock.h" + #include "llvm/Pass.h" + #include "llvm/ADT/Statistic.h" + #include "llvm/Support/Debug.h" + using namespace llvm; + + namespace { + Statistic<> NumAdded("lowerrefs", "# of getelementptr instructions added"); + + struct DecomposePass : public BasicBlockPass { + virtual bool runOnBasicBlock(BasicBlock &BB); + }; + RegisterOpt X("lowerrefs", "Decompose multi-dimensional " + "structure/array references"); + } + + // runOnBasicBlock - Entry point for array or structure references with multiple + // indices. + // + bool DecomposePass::runOnBasicBlock(BasicBlock &BB) { + bool changed = false; + for (BasicBlock::iterator II = BB.begin(); II != BB.end(); ) + if (GetElementPtrInst *gep = dyn_cast(II++)) // pre-inc + if (gep->getNumIndices() >= 2) + changed |= DecomposeArrayRef(gep); // always modifies II + return changed; + } + + FunctionPass *llvm::createDecomposeMultiDimRefsPass() { + return new DecomposePass(); + } + + static inline bool isZeroConst (Value *V) { + return isa (V) && (cast(V)->isNullValue()); + } + + // Function: DecomposeArrayRef() + // + // For any GetElementPtrInst with 2 or more array and structure indices: + // + // opCode CompositeType* P, [uint|ubyte] idx1, ..., [uint|ubyte] idxN + // + // this function generates the following sequence: + // + // ptr1 = getElementPtr P, idx1 + // ptr2 = getElementPtr ptr1, 0, idx2 + // ... + // ptrN-1 = getElementPtr ptrN-2, 0, idxN-1 + // opCode ptrN-1, 0, idxN // New-MAI + // + // Then it replaces the original instruction with this sequence, + // and replaces all uses of the original instruction with New-MAI. + // If idx1 is 0, we simply omit the first getElementPtr instruction. + // + // On return: BBI points to the instruction after the current one + // (whether or not *BBI was replaced). + // + // Return value: true if the instruction was replaced; false otherwise. + // + bool llvm::DecomposeArrayRef(GetElementPtrInst* GEP) { + if (GEP->getNumIndices() < 2 + || (GEP->getNumIndices() == 2 + && isZeroConst(GEP->getOperand(1)))) { + DEBUG (std::cerr << "DecomposeArrayRef: Skipping " << *GEP); + return false; + } else { + DEBUG (std::cerr << "DecomposeArrayRef: Decomposing " << *GEP); + } + + BasicBlock *BB = GEP->getParent(); + Value *LastPtr = GEP->getPointerOperand(); + Instruction *InsertPoint = GEP->getNext(); // Insert before the next insn + + // Process each index except the last one. + User::const_op_iterator OI = GEP->idx_begin(), OE = GEP->idx_end(); + for (; OI+1 != OE; ++OI) { + std::vector Indices; + + // If this is the first index and is 0, skip it and move on! + if (OI == GEP->idx_begin()) { + if (isZeroConst (*OI)) + continue; + } + else // Not the first index: include initial [0] to deref the last ptr + Indices.push_back(Constant::getNullValue(Type::LongTy)); + + Indices.push_back(*OI); + + // New Instruction: nextPtr1 = GetElementPtr LastPtr, Indices + LastPtr = new GetElementPtrInst(LastPtr, Indices, "ptr1", InsertPoint); + ++NumAdded; + } + + // Now create a new instruction to replace the original one + // + const PointerType *PtrTy = cast(LastPtr->getType()); + + // Get the final index vector, including an initial [0] as before. + std::vector Indices; + Indices.push_back(Constant::getNullValue(Type::LongTy)); + Indices.push_back(*OI); + + Value *NewVal = new GetElementPtrInst(LastPtr, Indices, GEP->getName(), + InsertPoint); + + // Replace all uses of the old instruction with the new + GEP->replaceAllUsesWith(NewVal); + + // Now remove and delete the old instruction... + BB->getInstList().erase(GEP); + + return true; + } + From lattner at cs.uiuc.edu Sat Nov 6 18:39:38 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:39:38 -0600 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/DecomposeMultiDimRefs.cpp Message-ID: <200411070039.iA70dctt019660@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: DecomposeMultiDimRefs.cpp (r1.36) removed --- Log message: This is V9 specific, move it there. --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Sat Nov 6 18:42:42 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:42:42 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Transforms/Scalar.h Message-ID: <200411070042.iA70ggml026967@apoc.cs.uiuc.edu> Changes in directory llvm/include/llvm/Transforms: Scalar.h updated: 1.47 -> 1.48 --- Log message: This is V9 specific stuff --- Diffs of the changes: (+0 -15) Index: llvm/include/llvm/Transforms/Scalar.h diff -u llvm/include/llvm/Transforms/Scalar.h:1.47 llvm/include/llvm/Transforms/Scalar.h:1.48 --- llvm/include/llvm/Transforms/Scalar.h:1.47 Mon Oct 18 16:08:12 2004 +++ llvm/include/llvm/Transforms/Scalar.h Sat Nov 6 18:42:29 2004 @@ -86,21 +86,6 @@ // FunctionPass *createScalarReplAggregatesPass(); -//===----------------------------------------------------------------------===// -// -// DecomposeMultiDimRefs - Convert multi-dimensional references consisting of -// any combination of 2 or more array and structure indices into a sequence of -// instructions (using getelementpr and cast) so that each instruction has at -// most one index (except structure references, which need an extra leading -// index of [0]). - -// This pass decomposes all multi-dimensional references in a function. -FunctionPass *createDecomposeMultiDimRefsPass(); - -// This function decomposes a single instance of such a reference. -// Return value: true if the instruction was replaced; false otherwise. -// -bool DecomposeArrayRef(GetElementPtrInst* GEP); //===----------------------------------------------------------------------===// // From lattner at cs.uiuc.edu Sat Nov 6 18:43:37 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 18:43:37 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp SparcV9Internals.h Message-ID: <200411070043.iA70hbrM027652@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Target/SparcV9: DecomposeMultiDimRefs.cpp updated: 1.1 -> 1.2 SparcV9Internals.h updated: 1.117 -> 1.118 --- Log message: Decompose* is V9 specific, make it internal --- Diffs of the changes: (+15 -1) Index: llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp diff -u llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp:1.1 llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp:1.2 --- llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp:1.1 Sat Nov 6 18:39:09 2004 +++ llvm/lib/Target/SparcV9/DecomposeMultiDimRefs.cpp Sat Nov 6 18:43:24 2004 @@ -15,7 +15,7 @@ // //===----------------------------------------------------------------------===// -#include "llvm/Transforms/Scalar.h" +#include "SparcV9Internals.h" #include "llvm/DerivedTypes.h" #include "llvm/Constants.h" #include "llvm/Constant.h" Index: llvm/lib/Target/SparcV9/SparcV9Internals.h diff -u llvm/lib/Target/SparcV9/SparcV9Internals.h:1.117 llvm/lib/Target/SparcV9/SparcV9Internals.h:1.118 --- llvm/lib/Target/SparcV9/SparcV9Internals.h:1.117 Sun Sep 19 23:46:39 2004 +++ llvm/lib/Target/SparcV9/SparcV9Internals.h Sat Nov 6 18:43:24 2004 @@ -29,6 +29,7 @@ class LiveRange; class SparcV9TargetMachine; class ModulePass; +class GetElementPtrInst; enum SparcV9InstrSchedClass { SPARC_NONE, /* Instructions with no scheduling restrictions */ @@ -97,6 +98,19 @@ /// FunctionPass *createPreSelectionPass(const TargetMachine &TM); +// DecomposeMultiDimRefs - Convert multi-dimensional references consisting of +// any combination of 2 or more array and structure indices into a sequence of +// instructions (using getelementpr and cast) so that each instruction has at +// most one index (except structure references, which need an extra leading +// index of [0]). +// This pass decomposes all multi-dimensional references in a function. +FunctionPass *createDecomposeMultiDimRefsPass(); + +// This function decomposes a single instance of such a reference. +// Return value: true if the instruction was replaced; false otherwise. +// +bool DecomposeArrayRef(GetElementPtrInst* GEP); + /// Peephole optimization pass operating on machine code /// FunctionPass *createPeepholeOptsPass(const TargetMachine &TM); From brukman at cs.uiuc.edu Sat Nov 6 18:58:31 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sat, 6 Nov 2004 18:58:31 -0600 Subject: [llvm-commits] CVS: llvm/lib/System/README.txt Message-ID: <200411070058.SAA03311@zion.cs.uiuc.edu> Changes in directory llvm/lib/System: README.txt updated: 1.4 -> 1.5 --- Log message: Consistently use llvm.cs.uiuc.edu instead of llvm.org --- Diffs of the changes: (+1 -1) Index: llvm/lib/System/README.txt diff -u llvm/lib/System/README.txt:1.4 llvm/lib/System/README.txt:1.5 --- llvm/lib/System/README.txt:1.4 Sun Aug 29 21:03:51 2004 +++ llvm/lib/System/README.txt Sat Nov 6 18:58:20 2004 @@ -15,7 +15,7 @@ Complete documentation for the library can be found in the file: llvm/docs/SystemLibrary.html or at this URL: - http://llvm.org/docs/SystemLibrary.html + http://llvm.cs.uiuc.edu/docs/SystemLibrary.html While we recommend that you read the more detailed documentation, for the impatient, here's a high level summary of the library's requirements. From brukman at cs.uiuc.edu Sat Nov 6 18:58:49 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sat, 6 Nov 2004 18:58:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/Support/CommandLine.cpp Message-ID: <200411070058.SAA03326@zion.cs.uiuc.edu> Changes in directory llvm/lib/Support: CommandLine.cpp updated: 1.50 -> 1.51 --- Log message: Replace uses of llvm.org with llvm.cs.uiuc.edu --- Diffs of the changes: (+1 -1) Index: llvm/lib/Support/CommandLine.cpp diff -u llvm/lib/Support/CommandLine.cpp:1.50 llvm/lib/Support/CommandLine.cpp:1.51 --- llvm/lib/Support/CommandLine.cpp:1.50 Wed Sep 1 17:55:35 2004 +++ llvm/lib/Support/CommandLine.cpp Sat Nov 6 18:58:38 2004 @@ -917,7 +917,7 @@ void operator=(bool OptionWasSpecified) { if (OptionWasSpecified) { std::cerr << "Low Level Virtual Machine (" << PACKAGE_NAME << ") " - << PACKAGE_VERSION << " (see http://llvm.org/)\n"; + << PACKAGE_VERSION << " (see http://llvm.cs.uiuc.edu/)\n"; exit(1); } } From brukman at cs.uiuc.edu Sat Nov 6 19:00:09 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sat, 6 Nov 2004 19:00:09 -0600 Subject: [llvm-commits] CVS: llvm/docs/BytecodeFormat.html Lexicon.html Message-ID: <200411070100.TAA03510@zion.cs.uiuc.edu> Changes in directory llvm/docs: BytecodeFormat.html updated: 1.33 -> 1.34 Lexicon.html updated: 1.9 -> 1.10 --- Log message: Replace llvm.org => llvm.cs.uiuc.edu --- Diffs of the changes: (+4 -4) Index: llvm/docs/BytecodeFormat.html diff -u llvm/docs/BytecodeFormat.html:1.33 llvm/docs/BytecodeFormat.html:1.34 --- llvm/docs/BytecodeFormat.html:1.33 Sat Oct 16 13:03:55 2004 +++ llvm/docs/BytecodeFormat.html Sat Nov 6 18:59:57 2004 @@ -1508,7 +1508,7 @@

    Instructions encode an opcode that identifies the kind of instruction. Opcodes are an enumerated integer value. The specific values used depend on the version of LLVM you're using. The opcode values are defined in the - + include/llvm/Instruction.def file. You should check there for the most recent definitions. The table below provides the opcodes defined as of the writing of this document. The table associates each opcode mnemonic with @@ -1865,7 +1865,7 @@ Reid Spencer and Chris Lattner
    The LLVM Compiler Infrastructure
    -Last modified: $Date: 2004/10/16 18:03:55 $ +Last modified: $Date: 2004/11/07 00:59:57 $ Index: llvm/docs/Lexicon.html diff -u llvm/docs/Lexicon.html:1.9 llvm/docs/Lexicon.html:1.10 --- llvm/docs/Lexicon.html:1.9 Mon Nov 1 02:19:36 2004 +++ llvm/docs/Lexicon.html Sat Nov 6 18:59:58 2004 @@ -160,9 +160,9 @@ src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!">Valid HTML 4.01!The LLVM Team
    + href="http://llvm.cs.uiuc.edu/">The LLVM Team
    The LLVM Compiler Infrastructure
    -Last modified: $Date: 2004/11/01 08:19:36 $ +Last modified: $Date: 2004/11/07 00:59:58 $ From brukman at cs.uiuc.edu Sat Nov 6 19:04:10 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sat, 6 Nov 2004 19:04:10 -0600 Subject: [llvm-commits] CVS: llvm/docs/OpenProjects.html Message-ID: <200411070104.TAA03676@zion.cs.uiuc.edu> Changes in directory llvm/docs: OpenProjects.html updated: 1.38 -> 1.39 --- Log message: * Add note about benchmarking programs and submitting reduced test cases * Replace llvm.org with llvm.cs.uiuc.edu --- Diffs of the changes: (+24 -2) Index: llvm/docs/OpenProjects.html diff -u llvm/docs/OpenProjects.html:1.38 llvm/docs/OpenProjects.html:1.39 --- llvm/docs/OpenProjects.html:1.38 Mon Nov 1 14:41:01 2004 +++ llvm/docs/OpenProjects.html Sat Nov 6 19:03:59 2004 @@ -19,6 +19,7 @@

  • Port glibc to LLVM
  • Compile programs with the LLVM Compiler
  • Extend the LLVM intermediate representation
  • +
  • Target backend improvements
  • Miscellaneous Improvements
  • @@ -155,6 +156,27 @@ + +
    + +
      +
    1. Find benchmarks either using our test results or on your own, + where LLVM code generators do not produce optimal code or simply where another + compiler produces better code. Try to minimize the test case that + demonstrates the issue. Then, either submit a bug with your testcase and + the code that LLVM produces vs. the code that it should produce, or + even better, see if you can improve the code generator and submit a + patch.
    2. +
    + +
    + + + @@ -204,7 +226,7 @@

    Many ideas for feature requests are stored in LLVM bugzilla. Just search for bugs with a "new-feature" keyword.

    + href="http://llvm.cs.uiuc.edu/bugs/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=new-feature&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&namedcmd=All+PRs&newqueryname=&order=Bug+Number&field0-0-0=noop&type0-0-0=noop&value0-0-0=">search for bugs with a "new-feature" keyword.

    @@ -370,7 +392,7 @@ Chris Lattner
    LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/11/01 20:41:01 $ + Last modified: $Date: 2004/11/07 01:03:59 $ From lattner at cs.uiuc.edu Sat Nov 6 19:46:30 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 19:46:30 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/2004-02-13-FrameReturnAddress.llx Message-ID: <200411070146.iA71kUGk005000@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/X86: 2004-02-13-FrameReturnAddress.llx updated: 1.2 -> 1.3 --- Log message: Update this to expect AT&T syntax --- Diffs of the changes: (+1 -1) Index: llvm/test/Regression/CodeGen/X86/2004-02-13-FrameReturnAddress.llx diff -u llvm/test/Regression/CodeGen/X86/2004-02-13-FrameReturnAddress.llx:1.2 llvm/test/Regression/CodeGen/X86/2004-02-13-FrameReturnAddress.llx:1.3 --- llvm/test/Regression/CodeGen/X86/2004-02-13-FrameReturnAddress.llx:1.2 Sat Feb 14 19:21:39 2004 +++ llvm/test/Regression/CodeGen/X86/2004-02-13-FrameReturnAddress.llx Sat Nov 6 19:46:16 2004 @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc -march=x86 | grep ESP | grep '\[' +; RUN: llvm-as < %s | llc -march=x86 | grep '(%esp' declare sbyte* %llvm.returnaddress(uint) declare sbyte* %llvm.frameaddress(uint) From lattner at cs.uiuc.edu Sat Nov 6 19:55:44 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 19:55:44 -0600 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200411070155.iA71tieG005398@apoc.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.247 -> 1.248 --- Log message: Add a section for PPC, though it's empty for now --- Diffs of the changes: (+15 -1) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.247 llvm/docs/ReleaseNotes.html:1.248 --- llvm/docs/ReleaseNotes.html:1.247 Wed Oct 27 11:28:17 2004 +++ llvm/docs/ReleaseNotes.html Sat Nov 6 19:55:32 2004 @@ -23,6 +23,7 @@
  • Known problems with the C++ Front-end
  • Known problems with the X86 Back-end
  • Known problems with the SparcV9 Back-end +
  • Known problems with the PowerPC Back-end
  • Known problems with the C back-end
  • Additional Information
  • @@ -574,6 +575,19 @@ + +
    + +
      +
    • none yet
    • +
    + +
    + + + @@ -629,7 +643,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/10/27 16:28:17 $ + Last modified: $Date: 2004/11/07 01:55:32 $ From tbrethou at cs.uiuc.edu Sat Nov 6 22:37:19 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 22:37:19 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll Message-ID: <200411070437.WAA05979@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/CBackend: 2003-10-23-ZeroArgVarargs.ll updated: 1.2 -> 1.3 --- Log message: Changed to XFAIL --- Diffs of the changes: (+1 -0) Index: llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll diff -u llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll:1.2 llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll:1.3 --- llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll:1.2 Sat Nov 6 15:40:26 2004 +++ llvm/test/Regression/CodeGen/CBackend/2003-10-23-ZeroArgVarargs.ll Sat Nov 6 22:37:08 2004 @@ -1,3 +1,4 @@ +; XFAIL: * ; RUN: llvm-as < %s | llc -march=c From reid at x10sys.com Sat Nov 6 23:00:04 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 23:00:04 -0600 Subject: [llvm-commits] CVS: llvm/Makefile Message-ID: <200411070500.XAA06164@zion.cs.uiuc.edu> Changes in directory llvm: Makefile updated: 1.34 -> 1.35 --- Log message: Added rough support for dejagnu testing. Changes need to be made to autoconf to provide the target_triplet and to check for 'grep -C' which would be used instead of the python script we have now. Eventually the python script should be converted to bash. The dejagnu-clean needs to be fixed to use find. --- Diffs of the changes: (+3 -0) Index: llvm/Makefile diff -u llvm/Makefile:1.34 llvm/Makefile:1.35 --- llvm/Makefile:1.34 Sat Oct 30 04:19:36 2004 +++ llvm/Makefile Sat Nov 6 22:59:52 2004 @@ -35,3 +35,6 @@ cd test; $(MAKE) tools-only: all + +check-dejagnu: + cd test; $(MAKE) check-dejagnu \ No newline at end of file From tbrethou at cs.uiuc.edu Sat Nov 6 23:00:04 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 23:00:04 -0600 Subject: [llvm-commits] CVS: llvm/test/Makefile Message-ID: <200411070500.XAA06167@zion.cs.uiuc.edu> Changes in directory llvm/test: Makefile updated: 1.57 -> 1.58 --- Log message: Added rough support for dejagnu testing. Changes need to be made to autoconf to provide the target_triplet and to check for 'grep -C' which would be used instead of the python script we have now. Eventually the python script should be converted to bash. The dejagnu-clean needs to be fixed to use find. --- Diffs of the changes: (+28 -0) Index: llvm/test/Makefile diff -u llvm/test/Makefile:1.57 llvm/test/Makefile:1.58 --- llvm/test/Makefile:1.57 Wed Nov 3 11:11:23 2004 +++ llvm/test/Makefile Sat Nov 6 22:59:52 2004 @@ -110,3 +110,31 @@ $(RM) -f $(LLVM_SRC_ROOT)/test/results.qmr \ $(LLVM_OBJ_ROOT)/test/results.qmr +EXPECT = expect +RUNTEST = runtest + +check-dejagnu: site.exp + $(RUNTEST) + +dejagnu-clean: + cd $(LLVM_OBJ_ROOT)/test/ + $(RM) -rf Regression/*/Output + $(RM) -rf Regression/*/*/Output + +site.exp: Makefile $(LLVM_OBJ_ROOT)/Makefile.config + @echo 'Making a new site.exp file...' + @echo '## these variables are automatically generated by make ##' >site.tmp + @echo '# Do not edit here. If you wish to override these values' >>site.tmp + @echo '# edit the last section' >>site.tmp + @echo "set target_triplet i686-pc-linux-gnu" >> site.tmp + @echo 'set prcontext $(LLVM_SRC_ROOT)/test/Scripts/prcontext.py' >> site.tmp + @echo 'set srcdir $(LLVM_SRC_ROOT)/test' >>site.tmp + @echo "set objdir $(LLVM_OBJ_ROOT)/test" >>site.tmp + @echo 'set llvmgcc $(LLVMGCCDIR)/bin/gcc' >> site.tmp + @echo 'set llvmgxx $(LLVMGCCDIR)/bin/g++' >> site.tmp + @echo '## All variables above are generated by configure. Do Not Edit ## ' >>site.tmp + @test ! -f site.exp || \ + sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp + @-rm -f site.bak + @test ! -f site.exp || mv site.exp site.bak + @mv site.tmp site.exp From tbrethou at cs.uiuc.edu Sat Nov 6 23:01:44 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 23:01:44 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Assembler/2004-10-22-BCWriterUndefBug.llx Message-ID: <200411070501.XAA06259@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Assembler: 2004-10-22-BCWriterUndefBug.llx updated: 1.1 -> 1.2 --- Log message: Added RUN line. --- Diffs of the changes: (+1 -1) Index: llvm/test/Regression/Assembler/2004-10-22-BCWriterUndefBug.llx diff -u llvm/test/Regression/Assembler/2004-10-22-BCWriterUndefBug.llx:1.1 llvm/test/Regression/Assembler/2004-10-22-BCWriterUndefBug.llx:1.2 --- llvm/test/Regression/Assembler/2004-10-22-BCWriterUndefBug.llx:1.1 Fri Oct 22 22:10:01 2004 +++ llvm/test/Regression/Assembler/2004-10-22-BCWriterUndefBug.llx Sat Nov 6 23:01:34 2004 @@ -1,5 +1,5 @@ ;; The bytecode writer was trying to treat undef values as ConstantArray's when ;; they looked like strings. - +;; RUN: llvm-as < %s -o /dev/null -f %G = internal global [8 x sbyte] undef From tbrethou at cs.uiuc.edu Sat Nov 6 23:03:07 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 23:03:07 -0600 Subject: [llvm-commits] CVS: llvm/test/lib/llvm-dg.exp Message-ID: <200411070503.XAA06299@zion.cs.uiuc.edu> Changes in directory llvm/test/lib: llvm-dg.exp updated: 1.1 -> 1.2 --- Log message: With the changes to these files, the Regression test suite should be tested by dejagnu without anyproblem. Some variables could be made global. --- Diffs of the changes: (+13 -3) Index: llvm/test/lib/llvm-dg.exp diff -u llvm/test/lib/llvm-dg.exp:1.1 llvm/test/lib/llvm-dg.exp:1.2 --- llvm/test/lib/llvm-dg.exp:1.1 Sat Nov 6 15:07:41 2004 +++ llvm/test/lib/llvm-dg.exp Sat Nov 6 23:02:56 2004 @@ -1,4 +1,4 @@ -proc llvm-runtest { programs srcdir subdir target_triplet} { +proc llvm-runtest { programs srcdir subdir target_triplet llvmgcc llvmgxx prcontext} { set path [file join $srcdir $subdir] @@ -37,9 +37,19 @@ #replace %s with filename regsub -all {%s} $runline $filename new_runline - + + #replace %t with temp filenames regsub -all {%t} $new_runline [file join Output $tmpFile] new_runline - + + #replace %llvmgcc with actual path to llvmgcc + regsub -all {%llvmgcc} $new_runline $llvmgcc new_runline + + #replace %llvmgxx with actual path to llvmg++ + regsub -all {%llvmgxx} $new_runline $llvmgxx new_runline + + #replace %prcontext with actual path to llvmg++ (Goes away when we remove qmtest) + regsub -all {%prcontext} $new_runline "python $prcontext" new_runline + puts $scriptFileId $new_runline } elseif {[regexp {XFAIL:[ *](.+)} $line match targets]} { set targets From tbrethou at cs.uiuc.edu Sat Nov 6 23:03:07 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 23:03:07 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/dg.exp Message-ID: <200411070503.XAA06302@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression: dg.exp updated: 1.1 -> 1.2 --- Log message: With the changes to these files, the Regression test suite should be tested by dejagnu without anyproblem. Some variables could be made global. --- Diffs of the changes: (+6 -4) Index: llvm/test/Regression/dg.exp diff -u llvm/test/Regression/dg.exp:1.1 llvm/test/Regression/dg.exp:1.2 --- llvm/test/Regression/dg.exp:1.1 Sat Nov 6 15:09:28 2004 +++ llvm/test/Regression/dg.exp Sat Nov 6 23:02:56 2004 @@ -1,7 +1,9 @@ load_lib llvm-dg.exp + #Recurse through all subdirectories without having to add to a .exp to each subdir -proc regression-runtest { directories srcdir subdir target_triplet} { +#Eventually make target_triplet,llvmgcc,llvmgxx to be globals +proc regression-runtest { directories srcdir subdir target_triplet llvmgcc llvmgxx prcontext} { foreach dir $directories { @@ -14,13 +16,13 @@ set new_subdir $dir cd [file join $new_srcdir/$new_subdir] - regression-runtest [lsort [glob -nocomplain -types {d} *]] $new_srcdir $new_subdir $target_triplet + regression-runtest [lsort [glob -nocomplain -types {d} *]] $new_srcdir $new_subdir $target_triplet $llvmgcc $llvmgxx $prcontext } } - llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.ll]] $srcdir $subdir $target_triplet + llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext } cd [file join $srcdir/$subdir] -regression-runtest [lsort [glob -nocomplain -types {d} *]] $srcdir $subdir $target_triplet +regression-runtest [lsort [glob -nocomplain -types {d} *]] $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext From tbrethou at cs.uiuc.edu Sat Nov 6 23:05:10 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sat, 6 Nov 2004 23:05:10 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/ModuloSched/arith-simple.c array-simple.c for-array.c Message-ID: <200411070505.XAA06388@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/ModuloSched: arith-simple.c (r1.1) removed array-simple.c (r1.1) removed for-array.c (r1.1) removed --- Log message: Removing old Modulosched tests since that version of modulosched does not exist anymore and llc does not support modulosched by default. --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Sat Nov 6 23:05:51 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 23:05:51 -0600 Subject: [llvm-commits] CVS: llvm/test/Makefile Message-ID: <200411070505.iA755pUf011802@apoc.cs.uiuc.edu> Changes in directory llvm/test: Makefile updated: 1.58 -> 1.59 --- Log message: Add missing file header Add some comments Switch to use 'find' to do the clean instead of globbing --- Diffs of the changes: (+15 -7) Index: llvm/test/Makefile diff -u llvm/test/Makefile:1.58 llvm/test/Makefile:1.59 --- llvm/test/Makefile:1.58 Sat Nov 6 22:59:52 2004 +++ llvm/test/Makefile Sat Nov 6 23:05:37 2004 @@ -1,3 +1,12 @@ +#===- test/Makefile ----------------------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file was developed by the LLVM research group and is distributed under +# the University of Illinois Open Source License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + LEVEL = .. DIRS = @@ -7,16 +16,12 @@ # all:: qmtest -# # Include other test rules -# include Makefile.tests -# # New QMTest functionality: # The test suite is being transitioned over to QMTest. Eventually, it # will use QMTest by default. -# # QMTest option specifying the location of the QMTest database. QMDB= -D $(LLVM_SRC_ROOT)/test @@ -110,6 +115,10 @@ $(RM) -f $(LLVM_SRC_ROOT)/test/results.qmr \ $(LLVM_OBJ_ROOT)/test/results.qmr +#===------------------------------------------------------------------------===# +# DejaGNU testing support +#===------------------------------------------------------------------------===# + EXPECT = expect RUNTEST = runtest @@ -117,9 +126,7 @@ $(RUNTEST) dejagnu-clean: - cd $(LLVM_OBJ_ROOT)/test/ - $(RM) -rf Regression/*/Output - $(RM) -rf Regression/*/*/Output + $(RM) -rf `find $(LLVM_OBJ_ROOT)/test/Regression -name Output -type d -print` site.exp: Makefile $(LLVM_OBJ_ROOT)/Makefile.config @echo 'Making a new site.exp file...' @@ -138,3 +145,4 @@ @-rm -f site.bak @test ! -f site.exp || mv site.exp site.bak @mv site.tmp site.exp + From lattner at cs.uiuc.edu Sat Nov 6 23:23:57 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 23:23:57 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp Message-ID: <200411070523.iA75Nvf9013634@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.83 -> 1.84 --- Log message: Add support for a new Heuristic, AllInOneGlobalPool. This heuristic allows us to quantify how much of a different our pool allocator runtime library makes over using the system malloc. --- Diffs of the changes: (+41 -3) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.83 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.84 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.83 Sat Nov 6 13:41:49 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Sat Nov 6 23:23:47 2004 @@ -67,6 +67,7 @@ NoNodes, CyclicNodes, SmartCoallesceNodes, + AllInOneGlobalPool, OnlyOverhead, }; cl::opt @@ -75,6 +76,7 @@ cl::values(clEnumVal(AllNodes, " Pool allocate all nodes"), clEnumVal(CyclicNodes, " Pool allocate nodes with cycles"), clEnumVal(SmartCoallesceNodes, " Use the smart node merging heuristic"), + clEnumVal(AllInOneGlobalPool, " Use pool library as replacement for malloc/free"), clEnumVal(OnlyOverhead, " Do not pool allocate anything, but induce all overhead from it"), clEnumVal(NoNodes, " Do not pool allocate anything"), clEnumValEnd), @@ -86,6 +88,11 @@ cl::opt DisablePoolFreeOpt("poolalloc-force-all-poolfrees", cl::desc("Do not try to elide poolfree's where possible")); + + + // TheGlobalPD - This global pool is the one and only one used when running + // with Heuristic=AllInOneGlobalPool. + GlobalVariable *TheGlobalPD = 0; } void PoolAllocate::getAnalysisUsage(AnalysisUsage &AU) const { @@ -334,6 +341,7 @@ // a heuristic to filter out nodes which are not profitable to pool allocate. switch (Heuristic) { default: + case AllInOneGlobalPool: case OnlyOverhead: case AllNodes: return true; case NoNodes: return false; @@ -359,8 +367,6 @@ Order.push_back(N); } - - // SetupGlobalPools - Create global pools for all DSNodes in the globals graph // which contain heap objects. If a global variable points to a piece of memory // allocated from the heap, this pool gets a global lifetime. This is @@ -389,7 +395,8 @@ } // If we don't need to create any global pools, exit now. - if (GlobalHeapNodes.empty()) return false; + if (GlobalHeapNodes.empty() || + Heuristic == AllInOneGlobalPool) return false; // Otherwise get the main function to insert the poolinit calls. Function *MainFunc = M.getMainFunction(); @@ -408,6 +415,28 @@ std::cerr << "Pool allocating " << GlobalHeapNodes.size() << " global nodes!\n"; + // If we are putting everything into a single global pool, create it now and + // put all globals pool descriptors into it. + if (Heuristic == AllInOneGlobalPool) { + // Create the global pool descriptor. + TheGlobalPD = + new GlobalVariable(PoolDescType, false, GlobalValue::InternalLinkage, + Constant::getNullValue(PoolDescType), "GlobalPool",&M); + + // Initialize it on entry to main. + Value *ElSize = ConstantUInt::get(Type::UIntTy, 0); + new CallInst(PoolInit, make_vector((Value*)TheGlobalPD, ElSize, 0), + "", InsertPt); + + for (hash_set::iterator I = GlobalHeapNodes.begin(), + E = GlobalHeapNodes.end(); I != E; ++I) + GlobalNodes[*I] = TheGlobalPD; + + ++NumPools; // We have one pool. + return false; + } + + // Loop over all of the pools, creating a new global pool descriptor, // inserting a new entry in GlobalNodes, and inserting a call to poolinit in // main. @@ -415,6 +444,7 @@ E = GlobalHeapNodes.end(); I != E; ++I) { bool ShouldPoolAlloc = true; switch (Heuristic) { + case AllInOneGlobalPool: assert(0 && "Case handled above!"); case OnlyOverhead: case AllNodes: break; case NoNodes: ShouldPoolAlloc = false; break; @@ -493,6 +523,10 @@ } } break; + case AllInOneGlobalPool: + for (unsigned i = 0, e = NodesToPA.size(); i != e; ++i) + PoolDescriptors[NodesToPA[i]] = TheGlobalPD; + break; case SmartCoallesceNodes: { std::set NodesToPASet(NodesToPA.begin(), NodesToPA.end()); @@ -782,6 +816,10 @@ // Insert all of the poolinit/destroy calls into the function. for (unsigned i = 0, e = NodesToPA.size(); i != e; ++i) { DSNode *Node = NodesToPA[i]; + + if (isa(PoolDescriptors[Node])) + continue; + assert(isa(PoolDescriptors[Node]) && "Why pool allocate this?"); AllocaInst *PD = cast(PoolDescriptors[Node]); From lattner at cs.uiuc.edu Sat Nov 6 23:24:33 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 23:24:33 -0600 Subject: [llvm-commits] CVS: poolalloc/test/TEST.poolalloc.Makefile TEST.poolalloc.report Message-ID: <200411070524.iA75OXdi013870@apoc.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.poolalloc.Makefile updated: 1.29 -> 1.30 TEST.poolalloc.report updated: 1.20 -> 1.21 --- Log message: Start reporting numbers for the new AllInOneGlobalPool heuristic. Do not report numbers twice for 'allnodes' --- Diffs of the changes: (+25 -25) Index: poolalloc/test/TEST.poolalloc.Makefile diff -u poolalloc/test/TEST.poolalloc.Makefile:1.29 poolalloc/test/TEST.poolalloc.Makefile:1.30 --- poolalloc/test/TEST.poolalloc.Makefile:1.29 Sat Nov 6 13:48:11 2004 +++ poolalloc/test/TEST.poolalloc.Makefile Sat Nov 6 23:24:22 2004 @@ -47,10 +47,10 @@ -$(OPT_PA_STATS) -poolalloc $(EXTRA_PA_FLAGS) $(OPTZN_PASSES) $< -o $@ -f 2>&1 > $@.out -$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).allnodes.bc): \ -Output/%.$(TEST).allnodes.bc: Output/%.llvm.bc $(PA_SO) $(LOPT) +$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).mallocrepl.bc): \ +Output/%.$(TEST).mallocrepl.bc: Output/%.llvm.bc $(PA_SO) $(LOPT) - at rm -f $(CURDIR)/$@.info - -$(OPT_PA_STATS) -poolalloc -poolalloc-heuristic=AllNodes $(OPTZN_PASSES) $< -o $@ -f 2>&1 > $@.out + -$(OPT_PA_STATS) -poolalloc -poolalloc-heuristic=AllInOneGlobalPool $(OPTZN_PASSES) $< -o $@ -f 2>&1 > $@.out $(PROGRAMS_TO_TEST:%=Output/%.$(TEST).onlyoverhead.bc): \ Output/%.$(TEST).onlyoverhead.bc: Output/%.llvm.bc $(PA_SO) $(LOPT) @@ -64,8 +64,8 @@ -$(LLC) -march=c -f $< -o $@ # This rule compiles the new .bc file into a .c file using CBE -$(PROGRAMS_TO_TEST:%=Output/%.allnodes.cbe.c): \ -Output/%.allnodes.cbe.c: Output/%.$(TEST).allnodes.bc $(LLC) +$(PROGRAMS_TO_TEST:%=Output/%.mallocrepl.cbe.c): \ +Output/%.mallocrepl.cbe.c: Output/%.$(TEST).mallocrepl.bc $(LLC) -$(LLC) -march=c -f $< -o $@ # This rule compiles the new .bc file into a .c file using CBE @@ -79,8 +79,8 @@ -$(CC) $(CFLAGS) $< $(PA_RT_O) $(LLCLIBS) $(LDFLAGS) -o $@ # This rule compiles the .c file into an executable using $CC -$(PROGRAMS_TO_TEST:%=Output/%.allnodes.cbe): \ -Output/%.allnodes.cbe: Output/%.allnodes.cbe.c $(PA_RT_O) +$(PROGRAMS_TO_TEST:%=Output/%.mallocrepl.cbe): \ +Output/%.mallocrepl.cbe: Output/%.mallocrepl.cbe.c $(PA_RT_O) -$(CC) $(CFLAGS) $< $(PA_RT_O) $(LLCLIBS) $(LDFLAGS) -o $@ # This rule compiles the .c file into an executable using $CC @@ -115,8 +115,8 @@ # This rule runs the generated executable, generating timing information, for # normal test programs -$(PROGRAMS_TO_TEST:%=Output/%.allnodes.out-cbe): \ -Output/%.allnodes.out-cbe: Output/%.allnodes.cbe +$(PROGRAMS_TO_TEST:%=Output/%.mallocrepl.out-cbe): \ +Output/%.mallocrepl.out-cbe: Output/%.mallocrepl.cbe -$(RUNSAFELY) $(STDIN_FILENAME) $@ $< $(RUN_OPTIONS) @@ -146,13 +146,13 @@ # This rule runs the generated executable, generating timing information, for # SPEC -$(PROGRAMS_TO_TEST:%=Output/%.allnodes.out-cbe): \ -Output/%.allnodes.out-cbe: Output/%.allnodes.cbe - -$(SPEC_SANDBOX) allnodescbe-$(RUN_TYPE) $@ $(REF_IN_DIR) \ +$(PROGRAMS_TO_TEST:%=Output/%.mallocrepl.out-cbe): \ +Output/%.mallocrepl.out-cbe: Output/%.mallocrepl.cbe + -$(SPEC_SANDBOX) mallocreplcbe-$(RUN_TYPE) $@ $(REF_IN_DIR) \ $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \ ../../$< $(RUN_OPTIONS) - -(cd Output/allnodescbe-$(RUN_TYPE); cat $(LOCAL_OUTPUTS)) > $@ - -cp Output/allnodescbe-$(RUN_TYPE)/$(STDOUT_FILENAME).time $@.time + -(cd Output/mallocreplcbe-$(RUN_TYPE); cat $(LOCAL_OUTPUTS)) > $@ + -cp Output/mallocreplcbe-$(RUN_TYPE)/$(STDOUT_FILENAME).time $@.time # This rule runs the generated executable, generating timing information, for # SPEC @@ -186,10 +186,10 @@ # This rule diffs the post-poolallocated version to make sure we didn't break # the program! -$(PROGRAMS_TO_TEST:%=Output/%.allnodes.diff-cbe): \ -Output/%.allnodes.diff-cbe: Output/%.out-nat Output/%.allnodes.out-cbe - @cp Output/$*.out-nat Output/$*.allnodes.out-nat - -$(DIFFPROG) cbe $*.allnodes $(HIDEDIFF) +$(PROGRAMS_TO_TEST:%=Output/%.mallocrepl.diff-cbe): \ +Output/%.mallocrepl.diff-cbe: Output/%.out-nat Output/%.mallocrepl.out-cbe + @cp Output/$*.out-nat Output/$*.mallocrepl.out-nat + -$(DIFFPROG) cbe $*.mallocrepl $(HIDEDIFF) # This rule diffs the post-poolallocated version to make sure we didn't break # the program! @@ -211,7 +211,7 @@ $(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \ Output/%.$(TEST).report.txt: Output/%.nonpa.diff-cbe \ Output/%.poolalloc.diff-cbe \ - Output/%.allnodes.diff-cbe \ + Output/%.mallocrepl.diff-cbe \ Output/%.onlyoverhead.diff-cbe \ Output/%.LOC.txt @echo > $@ @@ -219,8 +219,8 @@ printf "CBE-RUN-TIME-NORMAL: " >> $@;\ grep "^program" Output/$*.nonpa.out-cbe.time >> $@;\ \ - printf "CBE-RUN-TIME-ALLNODES: " >> $@;\ - grep "^program" Output/$*.allnodes.out-cbe.time >> $@;\ + printf "CBE-RUN-TIME-MALLOCREPL: " >> $@;\ + grep "^program" Output/$*.mallocrepl.out-cbe.time >> $@;\ \ printf "CBE-RUN-TIME-ONLYOVERHEAD: " >> $@;\ grep "^program" Output/$*.onlyoverhead.out-cbe.time >> $@;\ @@ -231,8 +231,8 @@ cat Output/$*.LOC.txt >> $@;\ fi - @cat Output/$*.$(TEST).allnodes.bc.info >> $@ - @#cat Output/$*.$(TEST).allnodes.bc.out >> $@ + @cat Output/$*.$(TEST).poolalloc.bc.info >> $@ + @#cat Output/$*.$(TEST).poolalloc.bc.out >> $@ $(PROGRAMS_TO_TEST:%=test.$(TEST).%): \ Index: poolalloc/test/TEST.poolalloc.report diff -u poolalloc/test/TEST.poolalloc.report:1.20 poolalloc/test/TEST.poolalloc.report:1.21 --- poolalloc/test/TEST.poolalloc.report:1.20 Sat Nov 6 15:25:18 2004 +++ poolalloc/test/TEST.poolalloc.report Sat Nov 6 23:24:22 2004 @@ -60,8 +60,8 @@ ["OnlyOHTime", 'CBE-RUN-TIME-ONLYOVERHEAD: program\s*([.0-9m:]+)'], ["OO run%", \&RuntimePercent], - ["AllNodesTime", 'CBE-RUN-TIME-ALLNODES: program\s*([.0-9m:]+)'], - ["AN run%", \&RuntimePercent], + ["MallocReplTime", 'CBE-RUN-TIME-MALLOCREPL: program\s*([.0-9m:]+)'], + ["MR run%", \&RuntimePercent], ["PoolAllocTime", 'CBE-RUN-TIME-POOLALLOC: program\s*([.0-9m:]+)'], ["PA run%", \&RuntimePercent], From lattner at cs.uiuc.edu Sat Nov 6 23:27:30 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat, 6 Nov 2004 23:27:30 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp Message-ID: <200411070527.iA75RUkx014903@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.84 -> 1.85 --- Log message: Whoops, I managed to get the logic perfectly wrong here. --- Diffs of the changes: (+2 -2) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.84 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.85 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.84 Sat Nov 6 23:23:47 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Sat Nov 6 23:27:19 2004 @@ -395,8 +395,8 @@ } // If we don't need to create any global pools, exit now. - if (GlobalHeapNodes.empty() || - Heuristic == AllInOneGlobalPool) return false; + if (GlobalHeapNodes.empty() && + Heuristic != AllInOneGlobalPool) return false; // Otherwise get the main function to insert the poolinit calls. Function *MainFunc = M.getMainFunction(); From reid at x10sys.com Sat Nov 6 23:30:53 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 23:30:53 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Bytecode/WriteBytecodePass.h Message-ID: <200411070530.XAA06528@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Bytecode: WriteBytecodePass.h updated: 1.11 -> 1.12 --- Log message: * Provide option for specifying bytecode compression * Enabled bytecode compression by default. --- Diffs of the changes: (+6 -5) Index: llvm/include/llvm/Bytecode/WriteBytecodePass.h diff -u llvm/include/llvm/Bytecode/WriteBytecodePass.h:1.11 llvm/include/llvm/Bytecode/WriteBytecodePass.h:1.12 --- llvm/include/llvm/Bytecode/WriteBytecodePass.h:1.11 Sun Sep 19 23:42:36 2004 +++ llvm/include/llvm/Bytecode/WriteBytecodePass.h Sat Nov 6 23:30:43 2004 @@ -24,18 +24,19 @@ class WriteBytecodePass : public ModulePass { std::ostream *Out; // ostream to print on bool DeleteStream; + bool CompressFile; public: - WriteBytecodePass() : Out(&std::cout), DeleteStream(false) {} - WriteBytecodePass(std::ostream *o, bool DS = false) - : Out(o), DeleteStream(DS) { - } + WriteBytecodePass() + : Out(&std::cout), DeleteStream(false), CompressFile(true) {} + WriteBytecodePass(std::ostream *o, bool DS = false, bool CF = false ) + : Out(o), DeleteStream(DS), CompressFile(CF) {} inline ~WriteBytecodePass() { if (DeleteStream) delete Out; } bool runOnModule(Module &M) { - WriteBytecodeToFile(&M, *Out); + WriteBytecodeToFile(&M, *Out, CompressFile ); return false; } }; From reid at x10sys.com Sat Nov 6 23:37:38 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 23:37:38 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-as/llvm-as.cpp Message-ID: <200411070537.XAA06584@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-as: llvm-as.cpp updated: 1.35 -> 1.36 --- Log message: Turn on compression by default. Change --compress to --no-compress so compression can be turned off. --- Diffs of the changes: (+3 -3) Index: llvm/tools/llvm-as/llvm-as.cpp diff -u llvm/tools/llvm-as/llvm-as.cpp:1.35 llvm/tools/llvm-as/llvm-as.cpp:1.36 --- llvm/tools/llvm-as/llvm-as.cpp:1.35 Sat Nov 6 17:17:23 2004 +++ llvm/tools/llvm-as/llvm-as.cpp Sat Nov 6 23:37:27 2004 @@ -40,8 +40,8 @@ static cl::opt DumpAsm("d", cl::desc("Print assembly as parsed"), cl::Hidden); -static cl::opt Compress("compress", cl::Optional, - cl::desc("Compress the generated bytecode")); +static cl::opt NoCompress("no-compress", cl::init(false), + cl::desc("Don't ompress the generated bytecode")); static cl::opt DisableVerify("disable-verify", cl::Hidden, @@ -122,7 +122,7 @@ return 1; } - WriteBytecodeToFile(M.get(), *Out, Compress); + WriteBytecodeToFile(M.get(), *Out, !NoCompress); } catch (const ParseException &E) { std::cerr << argv[0] << ": " << E.getMessage() << "\n"; return 1; From reid at x10sys.com Sat Nov 6 23:41:43 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 23:41:43 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-link/llvm-link.cpp Message-ID: <200411070541.XAA06619@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-link: llvm-link.cpp updated: 1.46 -> 1.47 --- Log message: * Enable bytecode compression by default * Provide a -no-compress option to defeat compression. --- Diffs of the changes: (+4 -1) Index: llvm/tools/llvm-link/llvm-link.cpp diff -u llvm/tools/llvm-link/llvm-link.cpp:1.46 llvm/tools/llvm-link/llvm-link.cpp:1.47 --- llvm/tools/llvm-link/llvm-link.cpp:1.46 Fri Nov 5 16:15:36 2004 +++ llvm/tools/llvm-link/llvm-link.cpp Sat Nov 6 23:41:32 2004 @@ -42,6 +42,9 @@ static cl::opt DumpAsm("d", cl::desc("Print assembly as linked"), cl::Hidden); +static cl::opt NoCompress("no-compress", cl::init(false), + cl::desc("Don't ompress the generated bytecode")); + // LoadFile - Read the specified bytecode file in and return it. This routine // searches the link path for the specified file to try to find it... // @@ -134,7 +137,7 @@ } if (Verbose) std::cerr << "Writing bytecode...\n"; - WriteBytecodeToFile(Composite.get(), *Out); + WriteBytecodeToFile(Composite.get(), *Out, !NoCompress); if (Out != &std::cout) delete Out; return 0; From reid at x10sys.com Sat Nov 6 23:44:02 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 23:44:02 -0600 Subject: [llvm-commits] CVS: llvm/tools/bugpoint/OptimizerDriver.cpp Message-ID: <200411070544.XAA06645@zion.cs.uiuc.edu> Changes in directory llvm/tools/bugpoint: OptimizerDriver.cpp updated: 1.23 -> 1.24 --- Log message: Enable compression by default. --- Diffs of the changes: (+1 -1) Index: llvm/tools/bugpoint/OptimizerDriver.cpp diff -u llvm/tools/bugpoint/OptimizerDriver.cpp:1.23 llvm/tools/bugpoint/OptimizerDriver.cpp:1.24 --- llvm/tools/bugpoint/OptimizerDriver.cpp:1.23 Wed Sep 1 17:55:37 2004 +++ llvm/tools/bugpoint/OptimizerDriver.cpp Sat Nov 6 23:43:51 2004 @@ -35,7 +35,7 @@ Module *M) const { std::ofstream Out(Filename.c_str()); if (!Out.good()) return true; - WriteBytecodeToFile(M ? M : Program, Out); + WriteBytecodeToFile(M ? M : Program, Out, /*compression=*/true); return false; } From reid at x10sys.com Sat Nov 6 23:50:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 23:50:27 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-as/llvm-as.cpp Message-ID: <200411070550.XAA06695@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-as: llvm-as.cpp updated: 1.36 -> 1.37 --- Log message: Rename the option for defeating compression to be a little more specific. --- Diffs of the changes: (+1 -1) Index: llvm/tools/llvm-as/llvm-as.cpp diff -u llvm/tools/llvm-as/llvm-as.cpp:1.36 llvm/tools/llvm-as/llvm-as.cpp:1.37 --- llvm/tools/llvm-as/llvm-as.cpp:1.36 Sat Nov 6 23:37:27 2004 +++ llvm/tools/llvm-as/llvm-as.cpp Sat Nov 6 23:50:16 2004 @@ -40,7 +40,7 @@ static cl::opt DumpAsm("d", cl::desc("Print assembly as parsed"), cl::Hidden); -static cl::opt NoCompress("no-compress", cl::init(false), +static cl::opt NoCompress("disable-compression", cl::init(false), cl::desc("Don't ompress the generated bytecode")); static cl::opt From reid at x10sys.com Sat Nov 6 23:50:27 2004 From: reid at x10sys.com (Reid Spencer) Date: Sat, 6 Nov 2004 23:50:27 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-link/llvm-link.cpp Message-ID: <200411070550.XAA06698@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-link: llvm-link.cpp updated: 1.47 -> 1.48 --- Log message: Rename the option for defeating compression to be a little more specific. --- Diffs of the changes: (+1 -1) Index: llvm/tools/llvm-link/llvm-link.cpp diff -u llvm/tools/llvm-link/llvm-link.cpp:1.47 llvm/tools/llvm-link/llvm-link.cpp:1.48 --- llvm/tools/llvm-link/llvm-link.cpp:1.47 Sat Nov 6 23:41:32 2004 +++ llvm/tools/llvm-link/llvm-link.cpp Sat Nov 6 23:50:16 2004 @@ -42,7 +42,7 @@ static cl::opt DumpAsm("d", cl::desc("Print assembly as linked"), cl::Hidden); -static cl::opt NoCompress("no-compress", cl::init(false), +static cl::opt NoCompress("disable-compression", cl::init(false), cl::desc("Don't ompress the generated bytecode")); // LoadFile - Read the specified bytecode file in and return it. This routine From tbrethou at cs.uiuc.edu Sun Nov 7 00:08:54 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 00:08:54 -0600 Subject: [llvm-commits] CVS: llvm/test/Feature/dg.exp basictest.ll calltest.ll casttest.ll cfgstructures.ll constexpr.ll constexprbad.ll constpointer.ll forwardreftest.ll globalredefinition.ll globalvars.ll indirectcall.ll indirectcall2.ll intrinsics.ll opaquetypes.ll packed.ll properties.ll prototype.ll recursivetype.ll simplecalltest.ll small.ll smallest.ll testalloca.ll testconstants.ll testlogical.ll testmemory.ll testswitch.ll testvarargs.ll undefined.ll unreachable.ll varargs.ll weirdnames.ll Message-ID: <200411070608.AAA06977@zion.cs.uiuc.edu> Changes in directory llvm/test/Feature: dg.exp added (r1.1) basictest.ll updated: 1.6 -> 1.7 calltest.ll updated: 1.3 -> 1.4 casttest.ll updated: 1.1 -> 1.2 cfgstructures.ll updated: 1.1 -> 1.2 constexpr.ll updated: 1.7 -> 1.8 constexprbad.ll updated: 1.2 -> 1.3 constpointer.ll updated: 1.2 -> 1.3 forwardreftest.ll updated: 1.6 -> 1.7 globalredefinition.ll updated: 1.1 -> 1.2 globalvars.ll updated: 1.7 -> 1.8 indirectcall.ll updated: 1.1 -> 1.2 indirectcall2.ll updated: 1.1 -> 1.2 intrinsics.ll updated: 1.5 -> 1.6 opaquetypes.ll updated: 1.2 -> 1.3 packed.ll updated: 1.1 -> 1.2 properties.ll updated: 1.2 -> 1.3 prototype.ll updated: 1.2 -> 1.3 recursivetype.ll updated: 1.4 -> 1.5 simplecalltest.ll updated: 1.1 -> 1.2 small.ll updated: 1.2 -> 1.3 smallest.ll updated: 1.1.1.1 -> 1.2 testalloca.ll updated: 1.5 -> 1.6 testconstants.ll updated: 1.5 -> 1.6 testlogical.ll updated: 1.1 -> 1.2 testmemory.ll updated: 1.6 -> 1.7 testswitch.ll updated: 1.1.1.1 -> 1.2 testvarargs.ll updated: 1.3 -> 1.4 undefined.ll updated: 1.1 -> 1.2 unreachable.ll updated: 1.1 -> 1.2 varargs.ll updated: 1.3 -> 1.4 weirdnames.ll updated: 1.1 -> 1.2 --- Log message: Added RUN lines and dejagnu support for Feature dir. --- Diffs of the changes: (+128 -0) Index: llvm/test/Feature/dg.exp diff -c /dev/null llvm/test/Feature/dg.exp:1.1 *** /dev/null Sun Nov 7 00:08:53 2004 --- llvm/test/Feature/dg.exp Sun Nov 7 00:08:43 2004 *************** *** 0 **** --- 1,4 ---- + load_lib llvm-dg.exp + + llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext + Index: llvm/test/Feature/basictest.ll diff -u llvm/test/Feature/basictest.ll:1.6 llvm/test/Feature/basictest.ll:1.7 --- llvm/test/Feature/basictest.ll:1.6 Thu May 2 16:52:35 2002 +++ llvm/test/Feature/basictest.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation ; Test "stripped" format where nothing is symbolic... this is how the bytecode Index: llvm/test/Feature/calltest.ll diff -u llvm/test/Feature/calltest.ll:1.3 llvm/test/Feature/calltest.ll:1.4 --- llvm/test/Feature/calltest.ll:1.3 Sat Oct 13 02:05:07 2001 +++ llvm/test/Feature/calltest.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %FunTy = type int(int) declare int "test"(...) ; Test differences of prototype Index: llvm/test/Feature/casttest.ll diff -u llvm/test/Feature/casttest.ll:1.1 llvm/test/Feature/casttest.ll:1.2 --- llvm/test/Feature/casttest.ll:1.1 Sat Jul 7 23:57:15 2001 +++ llvm/test/Feature/casttest.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation short "FunFunc"(long %x, sbyte %z) Index: llvm/test/Feature/cfgstructures.ll diff -u llvm/test/Feature/cfgstructures.ll:1.1 llvm/test/Feature/cfgstructures.ll:1.2 --- llvm/test/Feature/cfgstructures.ll:1.1 Mon Nov 26 13:16:37 2001 +++ llvm/test/Feature/cfgstructures.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation ;; This is an irreducible flow graph Index: llvm/test/Feature/constexpr.ll diff -u llvm/test/Feature/constexpr.ll:1.7 llvm/test/Feature/constexpr.ll:1.8 --- llvm/test/Feature/constexpr.ll:1.7 Thu Apr 17 17:19:23 2003 +++ llvm/test/Feature/constexpr.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; This testcase is for testing expressions constructed from ; constant values, including constant pointers to globals. ; Index: llvm/test/Feature/constexprbad.ll diff -u llvm/test/Feature/constexprbad.ll:1.2 llvm/test/Feature/constexprbad.ll:1.3 --- llvm/test/Feature/constexprbad.ll:1.2 Sun Oct 6 17:43:49 2002 +++ llvm/test/Feature/constexprbad.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; This testcase is for testing illegal constant expressions. ; Uncomment any code line below to test that the error is caught ; See constexpr.ll in this directory for legal ones. Index: llvm/test/Feature/constpointer.ll diff -u llvm/test/Feature/constpointer.ll:1.2 llvm/test/Feature/constpointer.ll:1.3 --- llvm/test/Feature/constpointer.ll:1.2 Sun Jul 14 18:18:33 2002 +++ llvm/test/Feature/constpointer.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; This testcase is primarily used for testing that global values can be used as ; constant pointer initializers. This is tricky because they can be forward ; declared and involves an icky bytecode encoding. There is no meaningful Index: llvm/test/Feature/forwardreftest.ll diff -u llvm/test/Feature/forwardreftest.ll:1.6 llvm/test/Feature/forwardreftest.ll:1.7 --- llvm/test/Feature/forwardreftest.ll:1.6 Wed Jul 14 18:14:07 2004 +++ llvm/test/Feature/forwardreftest.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %myty = type int %myfn = type float (int,double,uint,short) type int(%myfn*) Index: llvm/test/Feature/globalredefinition.ll diff -u llvm/test/Feature/globalredefinition.ll:1.1 llvm/test/Feature/globalredefinition.ll:1.2 --- llvm/test/Feature/globalredefinition.ll:1.1 Wed Jul 14 17:59:47 2004 +++ llvm/test/Feature/globalredefinition.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; Test forward references and redefinitions of globals %Y = global void()* %X Index: llvm/test/Feature/globalvars.ll diff -u llvm/test/Feature/globalvars.ll:1.7 llvm/test/Feature/globalvars.ll:1.8 --- llvm/test/Feature/globalvars.ll:1.7 Sat Jun 28 15:01:03 2003 +++ llvm/test/Feature/globalvars.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %MyVar = uninitialized global int %MyIntList = uninitialized global { \2 *, int } Index: llvm/test/Feature/indirectcall.ll diff -u llvm/test/Feature/indirectcall.ll:1.1 llvm/test/Feature/indirectcall.ll:1.2 --- llvm/test/Feature/indirectcall.ll:1.1 Sun Oct 28 15:16:34 2001 +++ llvm/test/Feature/indirectcall.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation declare int "atoi"(sbyte *) Index: llvm/test/Feature/indirectcall2.ll diff -u llvm/test/Feature/indirectcall2.ll:1.1 llvm/test/Feature/indirectcall2.ll:1.2 --- llvm/test/Feature/indirectcall2.ll:1.1 Tue Jul 23 13:21:12 2002 +++ llvm/test/Feature/indirectcall2.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation ulong "test"(ulong %X) Index: llvm/test/Feature/intrinsics.ll diff -u llvm/test/Feature/intrinsics.ll:1.5 llvm/test/Feature/intrinsics.ll:1.6 --- llvm/test/Feature/intrinsics.ll:1.5 Tue Jun 15 16:29:40 2004 +++ llvm/test/Feature/intrinsics.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + declare bool %llvm.isunordered(float, float) declare bool %llvm.isunordered(double, double) Index: llvm/test/Feature/opaquetypes.ll diff -u llvm/test/Feature/opaquetypes.ll:1.2 llvm/test/Feature/opaquetypes.ll:1.3 --- llvm/test/Feature/opaquetypes.ll:1.2 Fri Dec 14 10:46:52 2001 +++ llvm/test/Feature/opaquetypes.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; This test case is used to test opaque type processing, forward references, ; and recursive types. Oh my. ; Index: llvm/test/Feature/packed.ll diff -u llvm/test/Feature/packed.ll:1.1 llvm/test/Feature/packed.ll:1.2 --- llvm/test/Feature/packed.ll:1.1 Fri Aug 20 01:02:24 2004 +++ llvm/test/Feature/packed.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; RUN: llvm-as < %s | llvm-dis %foo1 = uninitialized global <4 x float>; Index: llvm/test/Feature/properties.ll diff -u llvm/test/Feature/properties.ll:1.2 llvm/test/Feature/properties.ll:1.3 --- llvm/test/Feature/properties.ll:1.2 Sun Jul 25 13:09:47 2004 +++ llvm/test/Feature/properties.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + target endian = little target pointersize = 32 Index: llvm/test/Feature/prototype.ll diff -u llvm/test/Feature/prototype.ll:1.2 llvm/test/Feature/prototype.ll:1.3 --- llvm/test/Feature/prototype.ll:1.2 Wed Oct 3 09:50:12 2001 +++ llvm/test/Feature/prototype.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation declare int "bar"(int %in) Index: llvm/test/Feature/recursivetype.ll diff -u llvm/test/Feature/recursivetype.ll:1.4 llvm/test/Feature/recursivetype.ll:1.5 --- llvm/test/Feature/recursivetype.ll:1.4 Sun Oct 6 17:43:49 2002 +++ llvm/test/Feature/recursivetype.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; This file contains the output from the following compiled C code: ; typedef struct list { ; struct list *Next; Index: llvm/test/Feature/simplecalltest.ll diff -u llvm/test/Feature/simplecalltest.ll:1.1 llvm/test/Feature/simplecalltest.ll:1.2 --- llvm/test/Feature/simplecalltest.ll:1.1 Wed May 22 17:17:54 2002 +++ llvm/test/Feature/simplecalltest.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %FunTy = type int(int) implementation Index: llvm/test/Feature/small.ll diff -u llvm/test/Feature/small.ll:1.2 llvm/test/Feature/small.ll:1.3 --- llvm/test/Feature/small.ll:1.2 Tue Apr 16 16:31:08 2002 +++ llvm/test/Feature/small.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %x = type int implementation Index: llvm/test/Feature/smallest.ll diff -u llvm/test/Feature/smallest.ll:1.1.1.1 llvm/test/Feature/smallest.ll:1.2 --- llvm/test/Feature/smallest.ll:1.1.1.1 Wed Jun 6 15:29:03 2001 +++ llvm/test/Feature/smallest.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation Index: llvm/test/Feature/testalloca.ll diff -u llvm/test/Feature/testalloca.ll:1.5 llvm/test/Feature/testalloca.ll:1.6 --- llvm/test/Feature/testalloca.ll:1.5 Sun Oct 6 17:43:49 2002 +++ llvm/test/Feature/testalloca.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %inners = type {float, {ubyte } } %struct = type { int , {float, {ubyte } } , ulong } Index: llvm/test/Feature/testconstants.ll diff -u llvm/test/Feature/testconstants.ll:1.5 llvm/test/Feature/testconstants.ll:1.6 --- llvm/test/Feature/testconstants.ll:1.5 Sun Oct 6 17:43:49 2002 +++ llvm/test/Feature/testconstants.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %somestr = constant [11x sbyte] c"hello world" %array = constant [2 x int] [ int 12, int 52 ] constant { int, int } { int 4, int 3 } Index: llvm/test/Feature/testlogical.ll diff -u llvm/test/Feature/testlogical.ll:1.1 llvm/test/Feature/testlogical.ll:1.2 --- llvm/test/Feature/testlogical.ll:1.1 Mon Oct 29 07:56:42 2001 +++ llvm/test/Feature/testlogical.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation int "simpleAdd"(int %i0, int %j0) Index: llvm/test/Feature/testmemory.ll diff -u llvm/test/Feature/testmemory.ll:1.6 llvm/test/Feature/testmemory.ll:1.7 --- llvm/test/Feature/testmemory.ll:1.6 Sun Oct 6 17:43:49 2002 +++ llvm/test/Feature/testmemory.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %struct = type { int , {float, {ubyte } } , ulong } %complexty = type {int, {[4 x sbyte *], float}, double} Index: llvm/test/Feature/testswitch.ll diff -u llvm/test/Feature/testswitch.ll:1.1.1.1 llvm/test/Feature/testswitch.ll:1.2 --- llvm/test/Feature/testswitch.ll:1.1.1.1 Wed Jun 6 15:29:03 2001 +++ llvm/test/Feature/testswitch.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %int = type int implementation Index: llvm/test/Feature/testvarargs.ll diff -u llvm/test/Feature/testvarargs.ll:1.3 llvm/test/Feature/testvarargs.ll:1.4 --- llvm/test/Feature/testvarargs.ll:1.3 Sat Oct 13 02:05:51 2001 +++ llvm/test/Feature/testvarargs.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation declare int "printf"(sbyte*, ...) ;; Prototype for: int __builtin_printf(const char*, ...) Index: llvm/test/Feature/undefined.ll diff -u llvm/test/Feature/undefined.ll:1.1 llvm/test/Feature/undefined.ll:1.2 --- llvm/test/Feature/undefined.ll:1.1 Sat Oct 16 13:24:11 2004 +++ llvm/test/Feature/undefined.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + %X = global int undef Index: llvm/test/Feature/unreachable.ll diff -u llvm/test/Feature/unreachable.ll:1.1 llvm/test/Feature/unreachable.ll:1.2 --- llvm/test/Feature/unreachable.ll:1.1 Sat Oct 16 13:24:11 2004 +++ llvm/test/Feature/unreachable.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + implementation Index: llvm/test/Feature/varargs.ll diff -u llvm/test/Feature/varargs.ll:1.3 llvm/test/Feature/varargs.ll:1.4 --- llvm/test/Feature/varargs.ll:1.3 Tue Oct 21 10:36:21 2003 +++ llvm/test/Feature/varargs.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; Demonstrate all of the variable argument handling intrinsic functions plus ; the va_arg instruction. Index: llvm/test/Feature/weirdnames.ll diff -u llvm/test/Feature/weirdnames.ll:1.1 llvm/test/Feature/weirdnames.ll:1.2 --- llvm/test/Feature/weirdnames.ll:1.1 Thu Sep 25 12:44:32 2003 +++ llvm/test/Feature/weirdnames.ll Sun Nov 7 00:08:43 2004 @@ -1,3 +1,7 @@ +; RUN: llvm-as %s -o - | llvm-dis > %t1.ll +; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll +; RUN: diff %t1.ll %t2.ll + ; Test using double quotes to form names that are not legal in the % form "&^ " = type { int } From lattner at cs.uiuc.edu Sun Nov 7 00:44:19 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 00:44:19 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Message-ID: <200411070644.iA76iJEf027162@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.17 -> 1.18 --- Log message: The page size is really used for two parameters, neither of which have anything to do with memory pages. Also, fix a bug in rounding allocations. --- Diffs of the changes: (+9 -6) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.17 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.18 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.17 Fri Nov 5 01:18:42 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Sun Nov 7 00:44:08 2004 @@ -23,6 +23,10 @@ //#define PRINT_NUM_POOLS +#define INITIAL_SLAB_SIZE 4096 +#define LARGE_SLAB_SIZE 4096 + + //===----------------------------------------------------------------------===// // Pool Debugging stuff. //===----------------------------------------------------------------------===// @@ -97,8 +101,6 @@ // PoolSlab implementation //===----------------------------------------------------------------------===// -#define PageSize (4*1024U) - static inline unsigned getSizeClass(unsigned NumBytes) { if (NumBytes <= FreeListOneSize) return NumBytes > FreeListZeroSize; @@ -141,8 +143,9 @@ void PoolSlab::create(PoolTy *Pool, unsigned SizeHint) { unsigned Size = Pool->AllocSize; Pool->AllocSize <<= 1; - Size = Size / SizeHint * SizeHint; - PoolSlab *PS = (PoolSlab*)malloc(Size+sizeof(PoolSlab)+ 2*sizeof(NodeHeader)); + Size = (Size+SizeHint-1) / SizeHint * SizeHint; + PoolSlab *PS = (PoolSlab*)malloc(Size+sizeof(PoolSlab) + sizeof(NodeHeader) + + sizeof(FreedNodeHeader)); // Add the body of the slab to the free list... FreedNodeHeader *SlabBody = (FreedNodeHeader*)(PS+1); @@ -176,7 +179,7 @@ void poolinit(PoolTy *Pool, unsigned DeclaredSize) { assert(Pool && "Null pool pointer passed into poolinit!\n"); memset(Pool, 0, sizeof(PoolTy)); - Pool->AllocSize = PageSize; + Pool->AllocSize = INITIAL_SLAB_SIZE; Pool->DeclaredSize = DeclaredSize; DO_IF_TRACE(fprintf(stderr, "[%d] poolinit(0x%X, %d)\n", addPoolNumber(Pool), @@ -277,7 +280,7 @@ // Perform a search of the free list, taking the front of the first free chunk // that is big enough. - if (NumBytes <= PageSize-sizeof(PoolSlab)-sizeof(NodeHeader)) { + if (NumBytes <= LARGE_SLAB_SIZE-sizeof(PoolSlab)-sizeof(NodeHeader)) { do { FreedNodeHeader **FN = &Pool->FreeNodeLists[SizeClass]; FreedNodeHeader *FNN = *FN; From lattner at cs.uiuc.edu Sun Nov 7 01:41:47 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 01:41:47 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx Message-ID: <200411070741.iA77flaB010562@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Assembler: 2004-01-20-MaxLongLong.llx updated: 1.1 -> 1.2 --- Log message: Add new (old) testcase --- Diffs of the changes: (+3 -2) Index: llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx diff -u llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx:1.1 llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx:1.2 --- llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx:1.1 Tue Jan 20 13:00:12 2004 +++ llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx Sun Nov 7 01:41:32 2004 @@ -1,4 +1,5 @@ -; RUN: llvm-as < %s | llvm-dis | grep 9223372036854775808 +; RUN: llvm-as < %s -o /dev/null -f -global long -9223372036854775808 +global long -9223372036854775808 ; :0 [#uses=0] +implementation ; Functions: From lattner at cs.uiuc.edu Sun Nov 7 01:46:27 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 01:46:27 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx Message-ID: <200411070746.iA77kRM3010618@apoc.cs.uiuc.edu> Changes in directory llvm/test/Regression/Assembler: 2004-01-20-MaxLongLong.llx updated: 1.2 -> 1.3 --- Log message: Revert back to r1.1, I'm just thoroughly confused :) --- Diffs of the changes: (+2 -3) Index: llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx diff -u llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx:1.2 llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx:1.3 --- llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx:1.2 Sun Nov 7 01:41:32 2004 +++ llvm/test/Regression/Assembler/2004-01-20-MaxLongLong.llx Sun Nov 7 01:46:15 2004 @@ -1,5 +1,4 @@ -; RUN: llvm-as < %s -o /dev/null -f +; RUN: llvm-as < %s | llvm-dis | grep 9223372036854775808 -global long -9223372036854775808 ; :0 [#uses=0] +global long -9223372036854775808 -implementation ; Functions: From tbrethou at cs.uiuc.edu Sun Nov 7 02:25:10 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 02:25:10 -0600 Subject: [llvm-commits] CVS: llvm/test/Makefile Message-ID: <200411070825.CAA29240@zion.cs.uiuc.edu> Changes in directory llvm/test: Makefile updated: 1.59 -> 1.60 --- Log message: Added support to specify which test suite dejagnu should run (Feature or Regression). Use TEST=suite --- Diffs of the changes: (+1 -1) Index: llvm/test/Makefile diff -u llvm/test/Makefile:1.59 llvm/test/Makefile:1.60 --- llvm/test/Makefile:1.59 Sat Nov 6 23:05:37 2004 +++ llvm/test/Makefile Sun Nov 7 02:24:59 2004 @@ -123,7 +123,7 @@ RUNTEST = runtest check-dejagnu: site.exp - $(RUNTEST) + $(RUNTEST) --tool $(TEST) dejagnu-clean: $(RM) -rf `find $(LLVM_OBJ_ROOT)/test/Regression -name Output -type d -print` From reid at x10sys.com Sun Nov 7 02:25:10 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 02:25:10 -0600 Subject: [llvm-commits] CVS: llvm/Makefile Message-ID: <200411070825.CAA29237@zion.cs.uiuc.edu> Changes in directory llvm: Makefile updated: 1.35 -> 1.36 --- Log message: Added support to specify which test suite dejagnu should run (Feature or Regression). Use TEST=suite --- Diffs of the changes: (+1 -1) Index: llvm/Makefile diff -u llvm/Makefile:1.35 llvm/Makefile:1.36 --- llvm/Makefile:1.35 Sat Nov 6 22:59:52 2004 +++ llvm/Makefile Sun Nov 7 02:24:59 2004 @@ -37,4 +37,4 @@ tools-only: all check-dejagnu: - cd test; $(MAKE) check-dejagnu \ No newline at end of file + cd test; $(MAKE) check-dejagnu $(TEST) From tbrethou at cs.uiuc.edu Sun Nov 7 02:29:13 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 02:29:13 -0600 Subject: [llvm-commits] CVS: llvm/Makefile Message-ID: <200411070829.CAA29290@zion.cs.uiuc.edu> Changes in directory llvm: Makefile updated: 1.36 -> 1.37 --- Log message: Minor error. --- Diffs of the changes: (+1 -1) Index: llvm/Makefile diff -u llvm/Makefile:1.36 llvm/Makefile:1.37 --- llvm/Makefile:1.36 Sun Nov 7 02:24:59 2004 +++ llvm/Makefile Sun Nov 7 02:29:03 2004 @@ -37,4 +37,4 @@ tools-only: all check-dejagnu: - cd test; $(MAKE) check-dejagnu $(TEST) + cd test; $(MAKE) check-dejagnu TEST=$(TEST) From alkis at cs.uiuc.edu Sun Nov 7 03:42:57 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Sun, 7 Nov 2004 03:42:57 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/OperandStack.cpp Message-ID: <200411070942.DAA10036@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: OperandStack.cpp updated: 1.2 -> 1.3 --- Log message: Automatically convert jbool, jchar, jbyte and jshort to a jint when pushing it on the operand stack. --- Diffs of the changes: (+9 -0) Index: llvm-java/lib/Compiler/OperandStack.cpp diff -u llvm-java/lib/Compiler/OperandStack.cpp:1.2 llvm-java/lib/Compiler/OperandStack.cpp:1.3 --- llvm-java/lib/Compiler/OperandStack.cpp:1.2 Thu Oct 28 14:37:24 2004 +++ llvm-java/lib/Compiler/OperandStack.cpp Sun Nov 7 03:42:46 2004 @@ -21,6 +21,15 @@ void OperandStack::push(Value* value, BasicBlock* insertAtEnd) { + const Type* valueTy = value->getType(); + // Values of jboolean, jbyte, jchar and jshort are extended to a + // jint when pushed on the operand stack. + if (valueTy == Type::BoolTy || + valueTy == Type::SByteTy || + valueTy == Type::UShortTy || + valueTy == Type::ShortTy) + value = new CastInst(value, Type::IntTy, "int-extend", insertAtEnd); + TheStack.push(new AllocaInst(value->getType(), NULL, "opStack" + utostr(TheStack.size()), From alkis at cs.uiuc.edu Sun Nov 7 03:47:13 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Sun, 7 Nov 2004 03:47:13 -0600 Subject: [llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp Message-ID: <200411070947.DAA10567@zion.cs.uiuc.edu> Changes in directory llvm-java/lib/Compiler: Compiler.cpp updated: 1.141 -> 1.142 --- Log message: Make arrays of bools arrays of bytes since the same opcode is used to load/store to them. Remove some code used before the operand stack was converting jboolean, jchar, jbyte and jshort to jint when pushed on the operand stack. Ignore jsr and ret bytecodes. --- Diffs of the changes: (+25 -21) Index: llvm-java/lib/Compiler/Compiler.cpp diff -u llvm-java/lib/Compiler/Compiler.cpp:1.141 llvm-java/lib/Compiler/Compiler.cpp:1.142 --- llvm-java/lib/Compiler/Compiler.cpp:1.141 Sat Nov 6 11:58:17 2004 +++ llvm-java/lib/Compiler/Compiler.cpp Sun Nov 7 03:47:03 2004 @@ -434,7 +434,10 @@ const ClassInfo& getPrimitiveArrayInfo(JType type) { switch (type) { case BOOLEAN: { - static ClassInfo arrayInfo = buildArrayClassInfo(Type::BoolTy); + // Because baload/bastore is used to load/store to both byte + // arrays and boolean arrays we use sbyte for java boolean + // arrays as well. + static ClassInfo arrayInfo = buildArrayClassInfo(Type::SByteTy); return arrayInfo; } case CHAR: { @@ -812,7 +815,10 @@ const VTableInfo& getPrimitiveArrayVTableInfo(JType type) { switch (type) { case BOOLEAN: { - static VTableInfo arrayInfo = buildArrayVTableInfo(Type::BoolTy); + // Because baload/bastore is used to load/store to both byte + // arrays and boolean arrays we use sbyte for java boolean + // arrays as well. + static VTableInfo arrayInfo = buildArrayVTableInfo(Type::SByteTy); return arrayInfo; } case CHAR: { @@ -1285,6 +1291,8 @@ for (unsigned i = 0; i != toCompileFunctions_.size(); ++i) { Function* f = toCompileFunctions_[i]; compileMethodOnly(f->getName()); + DEBUG(std::cerr << i << '/' << toCompileFunctions_.size() + << " functions compiled\n"); } return function; @@ -1338,15 +1346,10 @@ void do_laload() { do_aload_common(); } void do_faload() { do_aload_common(); } void do_daload() { do_aload_common(); } - void do_aaload() { - do_aload_common(); - do_cast_common( - PointerType::get( - getClassInfo(ClassFile::get("java/lang/Object")).type)); - } - void do_baload() { do_aload_common(); do_cast_common(Type::IntTy); } - void do_caload() { do_aload_common(); do_cast_common(Type::IntTy); } - void do_saload() { do_aload_common(); do_cast_common(Type::IntTy); } + void do_aaload() { do_aload_common(); } + void do_baload() { do_aload_common(); } + void do_caload() { do_aload_common(); } + void do_saload() { do_aload_common(); } void do_aload_common() { Value* index = currentOpStack_->pop(currentBB_); @@ -1379,22 +1382,21 @@ void do_fastore() { do_astore_common(); } void do_dastore() { do_astore_common(); } void do_aastore() { - do_cast_common( + do_astore_common( PointerType::get( getClassInfo(ClassFile::get("java/lang/Object")).type)); - do_astore_common(); } - void do_bastore() { do_cast_common(Type::SByteTy); do_astore_common(); } - void do_castore() { do_cast_common(Type::UShortTy); do_astore_common(); } - void do_sastore() { do_cast_common(Type::ShortTy); do_astore_common(); } + void do_bastore() { do_astore_common(Type::SByteTy); } + void do_castore() { do_astore_common(Type::UShortTy); } + void do_sastore() { do_astore_common(Type::ShortTy); } - void do_astore_common() { + void do_astore_common(Type* castTo = NULL) { Value* value = currentOpStack_->pop(currentBB_); + if (castTo) + value = new CastInst(value, castTo, TMP, currentBB_); Value* index = currentOpStack_->pop(currentBB_); Value* arrayRef = currentOpStack_->pop(currentBB_); - arrayRef->dump(); - std::vector indices; indices.reserve(3); indices.push_back(ConstantUInt::get(Type::UIntTy, 0)); @@ -1767,11 +1769,13 @@ } void do_jsr(unsigned target) { - assert(0 && "not implemented"); + // assert(0 && "not implemented"); + std::cerr << "WARNING: jsr is not implemented and ignored!\n"; } void do_ret(unsigned index) { - assert(0 && "not implemented"); + // assert(0 && "not implemented"); + std::cerr << "WARNING: ret is not implemented and ignored!\n"; } void do_switch(unsigned defTarget, const SwitchCases& sw) { From reid at x10sys.com Sun Nov 7 12:17:48 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 12:17:48 -0600 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Writer/Writer.cpp Message-ID: <200411071817.MAA31068@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Writer: Writer.cpp updated: 1.85 -> 1.86 --- Log message: * Add comments and cleanup per CL code review * Make signature for compressed bytecode llvc instead of unreadable * Make the CompressionContext have a constructor and destructor. --- Diffs of the changes: (+65 -31) Index: llvm/lib/Bytecode/Writer/Writer.cpp diff -u llvm/lib/Bytecode/Writer/Writer.cpp:1.85 llvm/lib/Bytecode/Writer/Writer.cpp:1.86 --- llvm/lib/Bytecode/Writer/Writer.cpp:1.85 Sat Nov 6 17:17:23 2004 +++ llvm/lib/Bytecode/Writer/Writer.cpp Sun Nov 7 12:17:38 2004 @@ -1086,22 +1086,65 @@ } } +// This structure retains the context when compressing the bytecode file. The +// WriteCompressedData function below uses it to keep track of the previously +// filled chunk of memory (which it writes) and how many bytes have been +// written. struct CompressionContext { - char* chunk; - unsigned sz; - unsigned written; - std::ostream* Out; + // Initialize the context + CompressionContext(std::ostream*OS, unsigned CS) + : chunk(0), sz(0), written(0), compSize(CS), Out(OS) {} + + // Make sure we clean up memory + ~CompressionContext() { + if (chunk) + delete [] chunk; + } + + // Write the chunk + void write(unsigned size = 0) { + unsigned write_size = (size == 0 ? sz : size); + Out->write(chunk,write_size); + written += write_size; + delete [] chunk; + chunk = 0; + sz = 0; + } + + char* chunk; // pointer to the chunk of memory filled by compression + unsigned sz; // size of chunk + unsigned written; // aggregate total of bytes written in all chunks + unsigned compSize; // size of the uncompressed buffer + std::ostream* Out; // The stream we write the data to. }; +// This function is a callback used by the Compressor::compress function to +// allocate memory for the compression buffer. This function fulfills that +// responsibility but also writes the previous (now filled) buffer out to the +// stream. static unsigned WriteCompressedData(char*&buffer, unsigned& size, void* context) { + // Cast the context to the structure it must point to. CompressionContext* ctxt = reinterpret_cast(context); + + // If there's a previously allocated chunk, it must now be filled with + // compressed data, so we write it out and deallocate it. if (ctxt->chunk != 0 && ctxt->sz > 0 ) { - ctxt->Out->write(ctxt->chunk,ctxt->sz); - delete [] ctxt->chunk; - ctxt->written += ctxt->sz; + ctxt->write(); } - size = ctxt->sz = 1024*1024; - buffer = ctxt->chunk = new char [ctxt->sz]; + + // Compute the size of the next chunk to allocate. We attempt to allocate + // enough memory to handle the compression in a single memory allocation. In + // general, the worst we do on compression of bytecode is about 50% so we + // conservatively estimate compSize / 2 as the size needed for the + // compression buffer. compSize is the size of the compressed data, provided + // by WriteBytecodeToFile. + size = ctxt->sz = ctxt->compSize / 2; + + // Allocate the chunks + buffer = ctxt->chunk = new char [size]; + + // We must return 1 if the allocation failed so that the Compressor knows + // not to use the buffer pointer. return (ctxt->chunk == 0 ? 1 : 0); } @@ -1125,31 +1168,24 @@ BytesWritten += Buffer.size(); // Determine start and end points of the Buffer - std::vector::iterator I = Buffer.begin(); - const unsigned char *FirstByte = &(*I); - const unsigned char *LastByte = FirstByte + Buffer.size(); + const unsigned char *FirstByte = &Buffer.front(); // If we're supposed to compress this mess ... if (compress) { // We signal compression by using an alternate magic number for the - // file. The compressed bytecode file's magic number is the same as - // the uncompressed one but with the high bits set. So, "llvm", which - // is 0x6C 0x6C 0x76 0x6D becomes 0xEC 0xEC 0xF6 0xED - unsigned char compressed_magic[4]; - compressed_magic[0] = 0xEC; // 'l' + 0x80 - compressed_magic[1] = 0xEC; // 'l' + 0x80 - compressed_magic[2] = 0xF6; // 'v' + 0x80 - compressed_magic[3] = 0xED; // 'm' + 0x80 + // file. The compressed bytecode file's magic number is "llvc" instead + // of "llvm". + char compressed_magic[4]; + compressed_magic[0] = 'l'; + compressed_magic[1] = 'l'; + compressed_magic[2] = 'v'; + compressed_magic[3] = 'c'; - Out.write((char*)compressed_magic,4); + Out.write(compressed_magic,4); // Do the compression, writing as we go. - CompressionContext ctxt; - ctxt.chunk = 0; - ctxt.sz = 0; - ctxt.written = 0; - ctxt.Out = &Out; + CompressionContext ctxt(&Out,Buffer.size()); // Compress everything after the magic number (which we'll alter) uint64_t zipSize = Compressor::compress( @@ -1160,15 +1196,13 @@ (void*)&ctxt // Keep track of allocated memory ); - if (ctxt.chunk && ctxt.sz > 0) { - Out.write(ctxt.chunk, zipSize - ctxt.written); - delete [] ctxt.chunk; + if (ctxt.chunk) { + ctxt.write(zipSize - ctxt.written); } } else { // We're not compressing, so just write the entire block. - Out.write((char*)FirstByte, LastByte-FirstByte); - + Out.write((char*)FirstByte, Buffer.size()); } // make sure it hits disk now From reid at x10sys.com Sun Nov 7 12:18:22 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 12:18:22 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Bytecode/Writer.h Message-ID: <200411071818.MAA31107@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Bytecode: Writer.h updated: 1.7 -> 1.8 --- Log message: Make compression the default on writing. --- Diffs of the changes: (+1 -1) Index: llvm/include/llvm/Bytecode/Writer.h diff -u llvm/include/llvm/Bytecode/Writer.h:1.7 llvm/include/llvm/Bytecode/Writer.h:1.8 --- llvm/include/llvm/Bytecode/Writer.h:1.7 Sat Nov 6 17:17:22 2004 +++ llvm/include/llvm/Bytecode/Writer.h Sun Nov 7 12:18:11 2004 @@ -29,7 +29,7 @@ namespace llvm { class Module; void WriteBytecodeToFile(const Module *M, std::ostream &Out, - bool compress = false); + bool compress = true); } // End llvm namespace #endif From reid at x10sys.com Sun Nov 7 12:19:11 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 12:19:11 -0600 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Reader/Reader.h Message-ID: <200411071819.MAA31160@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Reader: Reader.h updated: 1.16 -> 1.17 --- Log message: Add comments per CL code review. --- Diffs of the changes: (+6 -2) Index: llvm/lib/Bytecode/Reader/Reader.h diff -u llvm/lib/Bytecode/Reader/Reader.h:1.16 llvm/lib/Bytecode/Reader/Reader.h:1.17 --- llvm/lib/Bytecode/Reader/Reader.h:1.16 Sat Nov 6 17:17:23 2004 +++ llvm/lib/Bytecode/Reader/Reader.h Sun Nov 7 12:19:00 2004 @@ -67,6 +67,11 @@ /// @brief The type used for a vector of potentially abstract types typedef std::vector TypeListTy; + /// This structure is only used when a bytecode file is compressed. + /// As bytecode is being decompressed, the memory buffer might need + /// to be reallocated. The buffer allocation is handled in a callback + /// and this structure is needed to retain information across calls + /// to the callback. /// @brief An internal buffer object used for handling decompression struct BufferInfo { char* buff; @@ -246,8 +251,7 @@ /// @name Data /// @{ private: - BufferInfo bi; ///< Buffer info for decompression - + BufferInfo bi; ///< Buffer info for decompression BufPtr MemStart; ///< Start of the memory buffer BufPtr MemEnd; ///< End of the memory buffer BufPtr BlockStart; ///< Start of current block being parsed From reid at x10sys.com Sun Nov 7 12:21:06 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 12:21:06 -0600 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Reader/Reader.cpp Message-ID: <200411071821.MAA31258@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Reader: Reader.cpp updated: 1.136 -> 1.137 --- Log message: * Comments & cleanup per CL code review. * Accept 'llvc' as signature for compressed bytecode --- Diffs of the changes: (+55 -21) Index: llvm/lib/Bytecode/Reader/Reader.cpp diff -u llvm/lib/Bytecode/Reader/Reader.cpp:1.136 llvm/lib/Bytecode/Reader/Reader.cpp:1.137 --- llvm/lib/Bytecode/Reader/Reader.cpp:1.136 Sat Nov 6 17:17:23 2004 +++ llvm/lib/Bytecode/Reader/Reader.cpp Sun Nov 7 12:20:55 2004 @@ -2153,19 +2153,40 @@ error("Function declared, but bytecode stream ended before definition"); } -static unsigned GetUncompressionBuffer(char*&buff, unsigned& sz, void* ctxt){ +/// This function handles allocation of the buffer used for decompression of +/// compressed bytecode files. It is called by Compressor::decompress which is +/// called by BytecodeReader::ParseBytecode. +static unsigned GetDecompressionBuffer(char*&buff, unsigned& sz, void* ctxt){ + // Case the context variable to our BufferInfo BytecodeReader::BufferInfo* bi = reinterpret_cast(ctxt); + + // Compute the new, doubled, size of the block unsigned new_size = bi->size * 2; + + // Extend or allocate the block (realloc(0,n) == malloc(n)) + char* new_buff = (char*) ::realloc(bi->buff, new_size); + + // Figure out what to return to the Compressor. If this is the first call, + // then bi->buff will be null. In this case we want to return the entire + // buffer because there was no previous allocation. Otherwise, when the + // buffer is reallocated, we save the new base pointer in the BufferInfo.buff + // field but return the address of only the extension, mid-way through the + // buffer (since its size was doubled). Furthermore, the sz result must be + // 1/2 the total size of the buffer. if (bi->buff == 0 ) { - buff = bi->buff = (char*) malloc(new_size); + buff = bi->buff = new_buff; sz = new_size; } else { - bi->buff = (char*) ::realloc(bi->buff, new_size); - buff = bi->buff + bi->size; + bi->buff = new_buff; + buff = new_buff + bi->size; sz = bi->size; } + + // Retain the size of the allocated block bi->size = new_size; + + // Make sure we fail (return 1) if we didn't get any memory. return (bi->buff == 0 ? 1 : 0); } @@ -2183,26 +2204,39 @@ if (Handler) Handler->handleStart(TheModule, Length); - // Read and check signature... - bool compressed = - (Buf[0] == 0xEC && Buf[1] == 0xEC && Buf[2] == 0xF6 && Buf[3] == 0xED); - - if (compressed) { - bi.size = Length * 2;; - // Bytecode is compressed, have to decompress it first. - unsigned uncompressedLength = Compressor::decompress((char*)Buf+4,Length-4, - GetUncompressionBuffer, (void*) &bi); + // Read the four bytes of the signature. + unsigned Sig = read_uint(); + + // If this is a compressed file + if (Sig == ('l' | ('l' << 8) | ('v' << 16) | ('c' << 24))) { + // Compute the initial length of the uncompression buffer. Note that this + // is twice the length of the compressed buffer and will be doubled again + // in GetDecompressionBuffer for an initial allocation of 4xLength. This + // calculation is based on the typical compression ratio of bzip2 on LLVM + // bytecode files which typically ranges in the 50%-75% range. Since we + // tyipcally get at least 50%, doubling is insufficient. By using a 4x + // multiplier on the first allocation, we minimize the impact of having to + // copy the buffer on reallocation. + bi.size = Length * 2; + + // Invoke the decompression of the bytecode. Note that we have to skip the + // file's magic number which is not part of the compressed block. Hence, + // the Buf+4 and Length-4. + unsigned decompressedLength = Compressor::decompress((char*)Buf+4,Length-4, + GetDecompressionBuffer, (void*) &bi); + + // We must adjust the buffer pointers used by the bytecode reader to point + // into the new decompressed block. After decompression, the BufferInfo + // structure (member bi), will point to a contiguous memory area that has + // the decompressed data. At = MemStart = BlockStart = Buf = (BufPtr) bi.buff; - MemEnd = BlockEnd = Buf + uncompressedLength; + MemEnd = BlockEnd = Buf + decompressedLength; - } else { - if (!(Buf[0] == 'l' && Buf[1] == 'l' && Buf[2] == 'v' && Buf[3] == 'm')) - error("Invalid bytecode signature: " + - utohexstr(Buf[0]) + utohexstr(Buf[1]) + utohexstr(Buf[2]) + - utohexstr(Buf[3])); - else - At += 4; // skip the bytes + // else if this isn't a regular (uncompressed) bytecode file, then its + // and error, generate that now. + } else if (Sig != ('l' | ('l' << 8) | ('v' << 16) | ('m' << 24))) { + error("Invalid bytecode signature: " + utohexstr(Sig)); } // Tell the handler we're starting a module From reid at x10sys.com Sun Nov 7 13:07:17 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 13:07:17 -0600 Subject: [llvm-commits] CVS: llvm/docs/RequiredSoftware.html Message-ID: <200411071907.NAA00691@zion.cs.uiuc.edu> Changes in directory llvm/docs: RequiredSoftware.html added (r1.1) --- Log message: First version of this document listing the required software. Might need to be made platform specific. Contents reflect my Linux build environment. --- Diffs of the changes: (+94 -0) Index: llvm/docs/RequiredSoftware.html diff -c /dev/null llvm/docs/RequiredSoftware.html:1.1 *** /dev/null Sun Nov 7 13:07:16 2004 --- llvm/docs/RequiredSoftware.html Sun Nov 7 13:07:06 2004 *************** *** 0 **** --- 1,94 ---- + + + + + Software LLVM Requires + + + + + + + +
    Software LLVM Requires
    +
    +

    Written by Reid Spencer

    +
    + +
    +

    This document provides a list of the software packages that LLVM depends on + in order to be built successfully from CVS sources. The requirements for + building from a distribution are fewer. Items only needed for building from a + distribution are noted with an asterisk (*).

    +

    The table below shows the required software packages. Package is the usual + name for a given software package that LLVM depends on. Version is a list of + "known to work" versions of the package. Usage describes how LLVM uses the + package.

    + + + + + + + + + + + + + + +
    PackageVersionUsage
    autoconf*2.59Configuration script builder
    bison1.35YACC compiler for various languages
    cvs*1.11Obtaining latest CVS versions
    deja-gnu1.4.2Automated test suite
    flex2.5.4LEX compiler for various languages
    expect5.38.0Automated test suite
    perl>5.6.0Nightly tester, utilities
    GCC3.4.2C/C++ compiler
    GNU Make3.79, 3.79.1Makefile/build + processor
    libtool*1.5.10Shared library manager
    qmtest2.0.3Automated test suite
    tcl8.3Automated test suite
    +

    Additionally, your compilation host is expected to have the usual plethora of + Unix utilities. Specifically:

    +
      +
    • ar - archive library builder
    • +
    • bzip2* - bzip2 command for distribution generation
    • +
    • bunzip2* - bunzip2 command for distribution checking
    • +
    • chmod - change permissions on a file
    • +
    • cat - output concatentation utility
    • +
    • cp - copy files
    • +
    • date - print the current date/time
    • +
    • echo - print to standard output
    • +
    • egrep - extended regular expression search utility
    • +
    • etags - C/C++ tag file creator for vim/emacs
    • +
    • find - find files/dirs in a file system
    • +
    • grep - regular expression search utility
    • +
    • gzip* - gzip command for distribution generation
    • +
    • gunzip* - gunzip command for distribution checking
    • +
    • install - install directories/files
    • +
    • mkdir - create a directory
    • +
    • mv - move (rename) files
    • +
    • ranlib - symbol table builder for archive libraries
    • +
    • sed - stream editor for transforming output
    • +
    • sh - Bourne shell for make build scripts
    • +
    • tar - tape archive for distribution generation
    • +
    • test - test things in file system
    • +
    • unzip* - unzip command for distribution checking
    • +
    • zip* - zip command for distribution generation
    • +
    +
    + + +
    +
    Valid CSS!Valid HTML 4.01!The LLVM Team
    + The LLVM Compiler Infrastructure
    + Last modified: $Date: 2004/11/07 19:07:06 $ +
    + + + From reid at x10sys.com Sun Nov 7 13:13:03 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 13:13:03 -0600 Subject: [llvm-commits] CVS: llvm/Makefile.config.in Message-ID: <200411071913.NAA00937@zion.cs.uiuc.edu> Changes in directory llvm: Makefile.config.in updated: 1.36 -> 1.37 --- Log message: Add TARGET_TRIPLE --- Diffs of the changes: (+3 -0) Index: llvm/Makefile.config.in diff -u llvm/Makefile.config.in:1.36 llvm/Makefile.config.in:1.37 --- llvm/Makefile.config.in:1.36 Sat Oct 30 04:19:36 2004 +++ llvm/Makefile.config.in Sun Nov 7 13:12:53 2004 @@ -18,6 +18,9 @@ # Target hardware architecture ARCH=@ARCH@ +# Target triple (cpu-vendor-os) for which we should generate code +TARGET_TRIPLE=@target@ + # Endian-ness of the target ENDIAN=@ENDIAN@ From lattner at cs.uiuc.edu Sun Nov 7 14:14:39 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 14:14:39 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Message-ID: <200411072014.iA7KEdS2028323@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.18 -> 1.19 --- Log message: Add a new PRINT_POOLDESTROY_STATS macro --- Diffs of the changes: (+24 -13) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.18 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.19 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.18 Sun Nov 7 00:44:08 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Sun Nov 7 14:14:29 2004 @@ -18,21 +18,23 @@ #include #include -// Configuration macros. -//#define PRINT_POOL_TRACE -//#define PRINT_NUM_POOLS - - +// Performance tweaking macros. #define INITIAL_SLAB_SIZE 4096 #define LARGE_SLAB_SIZE 4096 +// Configuration macros. Define up to one of these. +//#define PRINT_NUM_POOLS // Print use dynamic # pools info +//#define PRINT_POOLDESTROY_STATS // When pools are destroyed, print stats +//#define PRINT_POOL_TRACE // Print a full trace + + //===----------------------------------------------------------------------===// // Pool Debugging stuff. //===----------------------------------------------------------------------===// #ifdef PRINT_POOL_TRACE -#define PRINT_NUM_POOLS +#define DO_IF_POOLDESTROY_STATS struct PoolID { PoolTy *PD; @@ -82,6 +84,13 @@ #define DO_IF_TRACE(X) #endif +#ifdef PRINT_POOLDESTROY_STATS +#define DO_IF_POOLDESTROY_STATS(X) X +#define PRINT_NUM_POOLS +#else +#define DO_IF_POOLDESTROY_STATS(X) +#endif + #ifdef PRINT_NUM_POOLS static unsigned PoolCounter = 0; static unsigned PoolsInited = 0; @@ -200,12 +209,14 @@ void pooldestroy(PoolTy *Pool) { assert(Pool && "Null pool pointer passed in to pooldestroy!\n"); - DO_IF_TRACE(fprintf(stderr, "[%d] pooldestroy(0x%X) BytesAlloc=%d NumObjs=%d" - " AvgObjSize=%d NextAllocSize=%d\n", - removePoolNumber(Pool), Pool, Pool->BytesAllocated, - Pool->NumObjects, - Pool->NumObjects ? Pool->BytesAllocated/Pool->NumObjects : 0, - Pool->AllocSize)); + DO_IF_TRACE(fprintf(stderr, "[%d] ", removePoolNumber(Pool))); + DO_IF_POOLDESTROY_STATS(fprintf(stderr, + "pooldestroy(0x%X) BytesAlloc=%d NumObjs=%d" + " AvgObjSize=%d NextAllocSize=%d\n", + Pool, Pool->BytesAllocated, Pool->NumObjects, + Pool->NumObjects ? Pool->BytesAllocated/Pool->NumObjects : 0, + Pool->AllocSize)); + // Free all allocated slabs. PoolSlab *PS = Pool->Slabs; @@ -231,7 +242,7 @@ // If a null pool descriptor is passed in, this is not a pool allocated data // structure. Hand off to the system malloc. if (Pool == 0) return malloc(NumBytes); - if (NumBytes == 0) return 0; + if (NumBytes == 0) NumBytes = 1; unsigned PtrSize = sizeof(int*); NumBytes = (NumBytes+(PtrSize-1)) & ~(PtrSize-1); // Round up to 4/8 bytes... From natebegeman at mac.com Sun Nov 7 14:23:52 2004 From: natebegeman at mac.com (Nate Begeman) Date: Sun, 7 Nov 2004 14:23:52 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp Message-ID: <200411072023.OAA04156@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/PowerPC: PPC32ISelSimple.cpp updated: 1.100 -> 1.101 --- Log message: Disable bogus cast elimination when the cast is used by a setcc instruction. --- Diffs of the changes: (+4 -4) Index: llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp diff -u llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp:1.100 llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp:1.101 --- llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp:1.100 Thu Nov 4 13:43:18 2004 +++ llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp Sun Nov 7 14:23:42 2004 @@ -3163,15 +3163,15 @@ // emit them, as the store instruction will implicitly not store the zero or // sign extended bytes. if (SrcClass <= cInt && SrcClass >= DestClass) { - bool AllUsesAreStoresOrSetCC = true; + bool AllUsesAreStores = true; for (Value::use_iterator I = CI.use_begin(), E = CI.use_end(); I != E; ++I) - if (!isa(*I) && !isa(*I)) { - AllUsesAreStoresOrSetCC = false; + if (!isa(*I)) { + AllUsesAreStores = false; break; } // Turn this cast directly into a move instruction, which the register // allocator will deal with. - if (AllUsesAreStoresOrSetCC) { + if (AllUsesAreStores) { unsigned SrcReg = getReg(Op, BB, MI); BuildMI(*BB, MI, PPC::OR, 2, DestReg).addReg(SrcReg).addReg(SrcReg); return; From lattner at cs.uiuc.edu Sun Nov 7 14:45:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 14:45:01 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Message-ID: <200411072045.iA7Kj19d029265@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.19 -> 1.20 --- Log message: fix typeo --- Diffs of the changes: (+1 -1) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.19 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.20 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.19 Sun Nov 7 14:14:29 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Sun Nov 7 14:44:50 2004 @@ -34,7 +34,7 @@ //===----------------------------------------------------------------------===// #ifdef PRINT_POOL_TRACE -#define DO_IF_POOLDESTROY_STATS +#define PRINT_POOLDESTROY_STATS struct PoolID { PoolTy *PD; From lattner at cs.uiuc.edu Sun Nov 7 15:28:45 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 15:28:45 -0600 Subject: [llvm-commits] CVS: llvm-test/RunSafelyAndStable.sh RunSafely.sh Message-ID: <200411072128.iA7LSj7b031566@apoc.cs.uiuc.edu> Changes in directory llvm-test: RunSafelyAndStable.sh updated: 1.1 -> 1.2 RunSafely.sh updated: 1.15 -> 1.16 --- Log message: Darwin awk doesn't like /**/ comments --- Diffs of the changes: (+2 -4) Index: llvm-test/RunSafelyAndStable.sh diff -u llvm-test/RunSafelyAndStable.sh:1.1 llvm-test/RunSafelyAndStable.sh:1.2 --- llvm-test/RunSafelyAndStable.sh:1.1 Sat Nov 6 14:34:42 2004 +++ llvm-test/RunSafelyAndStable.sh Sun Nov 7 15:28:32 2004 @@ -40,10 +40,9 @@ # (time -p sh -c "$PROGRAM $* > $OUTFILE 2>&1 < $INFILE") 2>&1 | awk -- '\ BEGIN { cpu = 0.0; } -/^real/ { /* IGNORE */; print } /^user/ { cpu += $2; print } /^sys/ { cpu += $2; print } -!/^real/ && !/^user/ && !/^sys/ { print } +!/^user/ && !/^sys/ { print } END { printf("program %f\n", cpu); }' > $OUTFILE.time1 if test $? -eq 0 Index: llvm-test/RunSafely.sh diff -u llvm-test/RunSafely.sh:1.15 llvm-test/RunSafely.sh:1.16 --- llvm-test/RunSafely.sh:1.15 Sat Nov 6 13:37:04 2004 +++ llvm-test/RunSafely.sh Sun Nov 7 15:28:32 2004 @@ -38,10 +38,9 @@ # (time -p sh -c "$PROGRAM $* > $OUTFILE 2>&1 < $INFILE") 2>&1 | awk -- '\ BEGIN { cpu = 0.0; } -/^real/ { /* IGNORE */; print } /^user/ { cpu += $2; print } /^sys/ { cpu += $2; print } -!/^real/ && !/^user/ && !/^sys/ { print } +!/^user/ && !/^sys/ { print } END { printf("program %f\n", cpu); }' > $OUTFILE.time if test $? -eq 0 From tbrethou at cs.uiuc.edu Sun Nov 7 15:39:52 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 15:39:52 -0600 Subject: [llvm-commits] CVS: llvm/Makefile Message-ID: <200411072139.PAA06836@zion.cs.uiuc.edu> Changes in directory llvm: Makefile updated: 1.37 -> 1.38 --- Log message: Changed check-dejagnu to take TESTSUITE as its args instead of TEST in order to not conflict with other stuff. Added path for test/Scripts. Also added a check to deal with TESTSUITE and runtest flags. --- Diffs of the changes: (+1 -1) Index: llvm/Makefile diff -u llvm/Makefile:1.37 llvm/Makefile:1.38 --- llvm/Makefile:1.37 Sun Nov 7 02:29:03 2004 +++ llvm/Makefile Sun Nov 7 15:39:41 2004 @@ -37,4 +37,4 @@ tools-only: all check-dejagnu: - cd test; $(MAKE) check-dejagnu TEST=$(TEST) + cd test; $(MAKE) check-dejagnu TESTSUITE=$(TESTSUITE) TARGET=$(TARGET_TRIPLE) From tbrethou at cs.uiuc.edu Sun Nov 7 15:39:52 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 15:39:52 -0600 Subject: [llvm-commits] CVS: llvm/test/Makefile Message-ID: <200411072139.PAA06837@zion.cs.uiuc.edu> Changes in directory llvm/test: Makefile updated: 1.60 -> 1.61 --- Log message: Changed check-dejagnu to take TESTSUITE as its args instead of TEST in order to not conflict with other stuff. Added path for test/Scripts. Also added a check to deal with TESTSUITE and runtest flags. --- Diffs of the changes: (+7 -3) Index: llvm/test/Makefile diff -u llvm/test/Makefile:1.60 llvm/test/Makefile:1.61 --- llvm/test/Makefile:1.60 Sun Nov 7 02:24:59 2004 +++ llvm/test/Makefile Sun Nov 7 15:39:41 2004 @@ -119,11 +119,15 @@ # DejaGNU testing support #===------------------------------------------------------------------------===# -EXPECT = expect RUNTEST = runtest +ifdef TESTSUITE +RUNTESTFLAGS := --tool $(TEST) +endif + check-dejagnu: site.exp - $(RUNTEST) --tool $(TEST) + PATH=$(LLVM_SRC_ROOT)/test/Scripts:$(PATH) $(RUNTEST) $(RUNTESTFLAGS) + dejagnu-clean: $(RM) -rf `find $(LLVM_OBJ_ROOT)/test/Regression -name Output -type d -print` @@ -133,7 +137,7 @@ @echo '## these variables are automatically generated by make ##' >site.tmp @echo '# Do not edit here. If you wish to override these values' >>site.tmp @echo '# edit the last section' >>site.tmp - @echo "set target_triplet i686-pc-linux-gnu" >> site.tmp + @echo "set target_triplet $(TARGET_TRIPLE)" >> site.tmp @echo 'set prcontext $(LLVM_SRC_ROOT)/test/Scripts/prcontext.py' >> site.tmp @echo 'set srcdir $(LLVM_SRC_ROOT)/test' >>site.tmp @echo "set objdir $(LLVM_OBJ_ROOT)/test" >>site.tmp From tbrethou at cs.uiuc.edu Sun Nov 7 15:44:07 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 15:44:07 -0600 Subject: [llvm-commits] CVS: llvm/Makefile Message-ID: <200411072144.PAA07044@zion.cs.uiuc.edu> Changes in directory llvm: Makefile updated: 1.38 -> 1.39 --- Log message: Removed passing TARGET. --- Diffs of the changes: (+1 -1) Index: llvm/Makefile diff -u llvm/Makefile:1.38 llvm/Makefile:1.39 --- llvm/Makefile:1.38 Sun Nov 7 15:39:41 2004 +++ llvm/Makefile Sun Nov 7 15:43:57 2004 @@ -37,4 +37,4 @@ tools-only: all check-dejagnu: - cd test; $(MAKE) check-dejagnu TESTSUITE=$(TESTSUITE) TARGET=$(TARGET_TRIPLE) + cd test; $(MAKE) check-dejagnu TESTSUITE=$(TESTSUITE) From lattner at cs.uiuc.edu Sun Nov 7 15:47:00 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 15:47:00 -0600 Subject: [llvm-commits] CVS: llvm/lib/Transforms/IPO/InlineSimple.cpp Message-ID: <200411072147.iA7Ll0bQ032352@apoc.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/IPO: InlineSimple.cpp updated: 1.65 -> 1.66 --- Log message: VERY large functions that are only called from one place are not really exciting to inline. Only inline medium or small sized functions with a single call site. --- Diffs of the changes: (+1 -1) Index: llvm/lib/Transforms/IPO/InlineSimple.cpp diff -u llvm/lib/Transforms/IPO/InlineSimple.cpp:1.65 llvm/lib/Transforms/IPO/InlineSimple.cpp:1.66 --- llvm/lib/Transforms/IPO/InlineSimple.cpp:1.65 Sun Sep 19 23:43:34 2004 +++ llvm/lib/Transforms/IPO/InlineSimple.cpp Sun Nov 7 15:46:47 2004 @@ -193,7 +193,7 @@ // make it almost guaranteed to be inlined. // if (Callee->hasInternalLinkage() && Callee->hasOneUse()) - InlineCost -= 30000; + InlineCost -= 5000; // Get information about the callee... FunctionInfo &CalleeFI = CachedFunctionInfo[Callee]; From lattner at cs.uiuc.edu Sun Nov 7 15:47:54 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 15:47:54 -0600 Subject: [llvm-commits] CVS: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Message-ID: <200411072147.iA7LlsXY032370@apoc.cs.uiuc.edu> Changes in directory poolalloc/runtime/FL2Allocator: FreeListAllocator.cpp updated: 1.20 -> 1.21 --- Log message: Cleanup trace output --- Diffs of the changes: (+10 -3) Index: poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp diff -u poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.20 poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.21 --- poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp:1.20 Sun Nov 7 14:44:50 2004 +++ poolalloc/runtime/FL2Allocator/FreeListAllocator.cpp Sun Nov 7 15:47:43 2004 @@ -359,9 +359,9 @@ FreedNodeHeader *FNH = (FreedNodeHeader*)((char*)Node-sizeof(NodeHeader)); assert((FNH->Header.Size & 1) && "Node not allocated!"); unsigned Size = FNH->Header.Size & ~1; - DO_IF_TRACE(fprintf(stderr, "%d bytes\n", Size)); if (Size == ~1U) goto LargeArrayCase; + DO_IF_TRACE(fprintf(stderr, "%d bytes\n", Size)); // If the node immediately after this one is also free, merge it into node. FreedNodeHeader *NextFNH; @@ -393,6 +393,7 @@ LargeArrayCase: LargeArrayHeader *LAH = ((LargeArrayHeader*)Node)-1; + DO_IF_TRACE(fprintf(stderr, "%d bytes [large]\n", LAH->Size)); // Unlink it from the list of large arrays... *LAH->Prev = LAH->Next; @@ -402,15 +403,20 @@ } void *poolrealloc(PoolTy *Pool, void *Node, unsigned NumBytes) { - DO_IF_TRACE(fprintf(stderr, "[%d] poolrealloc(0x%X, %d)\n", + DO_IF_TRACE(fprintf(stderr, "[%d] poolrealloc(0x%X, %d) -> ", getPoolNumber(Pool), Node, NumBytes)); // If a null pool descriptor is passed in, this is not a pool allocated data // structure. Hand off to the system realloc. - if (Pool == 0) return realloc(Node, NumBytes); + if (Pool == 0) { + void *Result = realloc(Node, NumBytes); + DO_IF_TRACE(fprintf(stderr, "0x%X (system realloc)\n", Result)); + return Result; + } if (Node == 0) return poolalloc(Pool, NumBytes); if (NumBytes == 0) { poolfree(Pool, Node); + DO_IF_TRACE(fprintf(stderr, "freed\n")); return 0; } @@ -423,6 +429,7 @@ unsigned Size = poolobjsize(Pool, Node); memcpy(New, Node, Size < NumBytes ? Size : NumBytes); poolfree(Pool, Node); + DO_IF_TRACE(fprintf(stderr, "0x%X (moved)\n", New)); return New; } From tbrethou at cs.uiuc.edu Sun Nov 7 16:04:32 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 16:04:32 -0600 Subject: [llvm-commits] CVS: llvm/test/lib/llvm-dg.exp Message-ID: <200411072204.QAA22215@zion.cs.uiuc.edu> Changes in directory llvm/test/lib: llvm-dg.exp updated: 1.2 -> 1.3 --- Log message: Made changes to support objdir!=srcdir. --- Diffs of the changes: (+6 -4) Index: llvm/test/lib/llvm-dg.exp diff -u llvm/test/lib/llvm-dg.exp:1.2 llvm/test/lib/llvm-dg.exp:1.3 --- llvm/test/lib/llvm-dg.exp:1.2 Sat Nov 6 23:02:56 2004 +++ llvm/test/lib/llvm-dg.exp Sun Nov 7 16:04:21 2004 @@ -1,6 +1,6 @@ -proc llvm-runtest { programs srcdir subdir target_triplet llvmgcc llvmgxx prcontext} { +proc llvm-runtest { programs objdir subdir target_triplet llvmgcc llvmgxx prcontext} { - set path [file join $srcdir $subdir] + set path [file join $objdir $subdir] #Make Output Directory if it does not exist already cd $path @@ -36,7 +36,7 @@ set hasRunline 1 #replace %s with filename - regsub -all {%s} $runline $filename new_runline + regsub -all {%s} $runline $test new_runline #replace %t with temp filenames regsub -all {%t} $new_runline [file join Output $tmpFile] new_runline @@ -110,4 +110,6 @@ } } } -} \ No newline at end of file +} + + From tbrethou at cs.uiuc.edu Sun Nov 7 16:04:32 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 16:04:32 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/dg.exp Message-ID: <200411072204.QAA22218@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression: dg.exp updated: 1.2 -> 1.3 --- Log message: Made changes to support objdir!=srcdir. --- Diffs of the changes: (+5 -5) Index: llvm/test/Regression/dg.exp diff -u llvm/test/Regression/dg.exp:1.2 llvm/test/Regression/dg.exp:1.3 --- llvm/test/Regression/dg.exp:1.2 Sat Nov 6 23:02:56 2004 +++ llvm/test/Regression/dg.exp Sun Nov 7 16:04:21 2004 @@ -3,7 +3,7 @@ #Recurse through all subdirectories without having to add to a .exp to each subdir #Eventually make target_triplet,llvmgcc,llvmgxx to be globals -proc regression-runtest { directories srcdir subdir target_triplet llvmgcc llvmgxx prcontext} { +proc regression-runtest { directories objdir srcdir subdir target_triplet llvmgcc llvmgxx prcontext} { foreach dir $directories { @@ -13,16 +13,16 @@ } else { set new_srcdir [file join $srcdir $subdir] - + set new_objdir [file join $objdir $subdir] set new_subdir $dir cd [file join $new_srcdir/$new_subdir] - regression-runtest [lsort [glob -nocomplain -types {d} *]] $new_srcdir $new_subdir $target_triplet $llvmgcc $llvmgxx $prcontext + regression-runtest [lsort [glob -nocomplain -types {d} *]] $new_objdir $new_srcdir $new_subdir $target_triplet $llvmgcc $llvmgxx $prcontext } } - llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext + llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $objdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext } cd [file join $srcdir/$subdir] -regression-runtest [lsort [glob -nocomplain -types {d} *]] $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext +regression-runtest [lsort [glob -nocomplain -types {d} *]] $objdir $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext From lattner at cs.uiuc.edu Sun Nov 7 16:13:43 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 16:13:43 -0600 Subject: [llvm-commits] CVS: llvm-test/TEST.nightly.report Message-ID: <200411072213.iA7MDhxN001980@apoc.cs.uiuc.edu> Changes in directory llvm-test: TEST.nightly.report updated: 1.28 -> 1.29 --- Log message: Remove extra zeros at the end of times. --- Diffs of the changes: (+3 -2) Index: llvm-test/TEST.nightly.report diff -u llvm-test/TEST.nightly.report:1.28 llvm-test/TEST.nightly.report:1.29 --- llvm-test/TEST.nightly.report:1.28 Sat Nov 6 15:34:36 2004 +++ llvm-test/TEST.nightly.report Sun Nov 7 16:13:29 2004 @@ -14,9 +14,10 @@ sub FormatTime { my $Time = shift; if ($Time =~ m/([0-9]+)[m:]([0-9.]+)/) { - $Time = sprintf("%7.3f", $1*60.0+$2); + return sprintf("%7.3f", $1*60.0+$2); } - return $Time; + + return sprintf("%7.2f", $Time); } sub GCCCBERatio { From lattner at cs.uiuc.edu Sun Nov 7 16:14:10 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 16:14:10 -0600 Subject: [llvm-commits] CVS: poolalloc/test/TEST.poolalloc.report Message-ID: <200411072214.iA7MEASH001995@apoc.cs.uiuc.edu> Changes in directory poolalloc/test: TEST.poolalloc.report updated: 1.21 -> 1.22 --- Log message: Tidy up the pa report substantially --- Diffs of the changes: (+26 -15) Index: poolalloc/test/TEST.poolalloc.report diff -u poolalloc/test/TEST.poolalloc.report:1.21 poolalloc/test/TEST.poolalloc.report:1.22 --- poolalloc/test/TEST.poolalloc.report:1.21 Sat Nov 6 23:24:22 2004 +++ poolalloc/test/TEST.poolalloc.report Sun Nov 7 16:14:00 2004 @@ -8,6 +8,17 @@ $SortCol = 0; $TrimRepeatedPrefix = 1; +# FormatTime - Convert a time from 1m23.45 into 83.45 +sub FormatTime { + my $Time = shift; + if ($Time =~ m/([0-9]+)[m:]([0-9.]+)/) { + return sprintf("%7.3f", $1*60.0+$2); + } + + return sprintf("%7.2f", $Time); +} + + sub RuntimePercent { my ($Cols, $Col) = @_; if ($Cols->[$Col-1] ne "*" and $Cols->[3] ne "*" and @@ -55,21 +66,21 @@ ["LOC" , 'LOC:\s*([0-9]+)'], [], # Times - ["NormalTime", 'CBE-RUN-TIME-NORMAL: program\s*([.0-9m:]+)'], - - ["OnlyOHTime", 'CBE-RUN-TIME-ONLYOVERHEAD: program\s*([.0-9m:]+)'], - ["OO run%", \&RuntimePercent], - - ["MallocReplTime", 'CBE-RUN-TIME-MALLOCREPL: program\s*([.0-9m:]+)'], - ["MR run%", \&RuntimePercent], - - ["PoolAllocTime", 'CBE-RUN-TIME-POOLALLOC: program\s*([.0-9m:]+)'], - ["PA run%", \&RuntimePercent], - - ["AP NumPools", '([0-9]+).*Number of pools allocated'], - ["AP Typesafe", '([0-9]+).*Number of typesafe pools'], - ["NumArgs", '([0-9]+).*Number of function arguments added'], -# ["Nonprofit", '([0-9]+).*Number of DSNodes not profitable'], + ["NormalTime", 'CBE-RUN-TIME-NORMAL: program\s*([.0-9m:]+)', \&FormatTime], + [], + ["OnlyOHTime", 'CBE-RUN-TIME-ONLYOVERHEAD: program\s*([.0-9m:]+)', \&FormatTime], + ["OO run%", \&RuntimePercent], + [], + ["ReplTime", 'CBE-RUN-TIME-MALLOCREPL: program\s*([.0-9m:]+)', \&FormatTime], + ["MR run%", \&RuntimePercent], + [], + ["PA Time", 'CBE-RUN-TIME-POOLALLOC: program\s*([.0-9m:]+)', \&FormatTime], + ["PA run%", \&RuntimePercent], + [], + ["NumPools", '([0-9]+).*Number of pools allocated'], + ["Typesafe", '([0-9]+).*Number of typesafe pools'], + ["NumArgs", '([0-9]+).*Number of function arguments added'], +#["Nonprofit", '([0-9]+).*Number of DSNodes not profitable'], [] ); From lattner at cs.uiuc.edu Sun Nov 7 16:20:09 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun, 7 Nov 2004 16:20:09 -0600 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp PoolAllocate.h Message-ID: <200411072220.iA7MK9EW002064@apoc.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.85 -> 1.86 PoolAllocate.h updated: 1.27 -> 1.28 --- Log message: Add a place to add some trivial microoptimizations --- Diffs of the changes: (+76 -11) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.85 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.86 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.85 Sat Nov 6 23:27:19 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Sun Nov 7 16:19:59 2004 @@ -63,12 +63,12 @@ const Type *PoolDescType; enum PoolAllocHeuristic { - AllNodes, NoNodes, - CyclicNodes, - SmartCoallesceNodes, - AllInOneGlobalPool, OnlyOverhead, + AllInOneGlobalPool, + SmartCoallesceNodes, + CyclicNodes, + AllNodes, }; cl::opt Heuristic("poolalloc-heuristic", @@ -146,14 +146,11 @@ Function *F = I->first; F->replaceAllUsesWith(ConstantExpr::getCast(I->second, F->getType())); } - return true; -} -static void GetNodesReachableFromGlobals(DSGraph &G, - hash_set &NodesFromGlobals) { - for (DSScalarMap::global_iterator I = G.getScalarMap().global_begin(), - E = G.getScalarMap().global_end(); I != E; ++I) - G.getNodeForValue(*I).getNode()->markReachableNodes(NodesFromGlobals); + if (Heuristic != NoNodes && Heuristic != OnlyOverhead && + Heuristic != AllInOneGlobalPool) + MicroOptimizePoolCalls(); + return true; } // AddPoolPrototypes - Add prototypes for the pool functions to the specified @@ -191,6 +188,70 @@ PoolDescPtrTy, VoidPtrTy, 0); } +static void getCallsOf(Function *F, std::vector &Calls) { + Calls.clear(); + for (Value::use_iterator UI = F->use_begin(), E = F->use_end(); UI != E; ++UI) + Calls.push_back(cast(*UI)); +} + +static void OptimizePointerNotNull(Value *V) { + for (Value::use_iterator I = V->use_begin(), E = V->use_end(); I != E; ++I) { + Instruction *User = cast(*I); + if (User->getOpcode() == Instruction::SetEQ || + User->getOpcode() == Instruction::SetNE) { + if (isa(User->getOperand(1)) && + cast(User->getOperand(1))->isNullValue()) { + bool CondIsTrue = User->getOpcode() == Instruction::SetNE; + User->replaceAllUsesWith(ConstantBool::get(CondIsTrue)); + } + } else if (User->getOpcode() == Instruction::Cast) { + // Casted pointers are also not null. + if (isa(User->getType())) + OptimizePointerNotNull(User); + } else if (User->getOpcode() == Instruction::GetElementPtr) { + // GEP'd pointers are also not null. + OptimizePointerNotNull(User); + } + } +} + +/// MicroOptimizePoolCalls - Apply any microoptimizations to calls to pool +/// allocation function calls that we can. This runs after the whole program +/// has been transformed. +void PoolAllocate::MicroOptimizePoolCalls() { + // Optimize poolalloc + std::vector Calls; + getCallsOf(PoolAlloc, Calls); + for (unsigned i = 0, e = Calls.size(); i != e; ++i) { + CallInst *CI = Calls[i]; + // poolalloc never returns null. Loop over all uses of the call looking for + // set(eq|ne) X, null. + OptimizePointerNotNull(CI); + + // poolalloc(null, X) -> malloc(X) + if (isa(CI->getOperand(0)) && + cast(CI->getOperand(0))->isNullValue()) + std::cerr << "Could turn into malloc: " << *CI; + } + + // TODO: poolfree accepts a null pointer, so remove any check above it, like + // 'if (P) poolfree(P)' + + // poolfree(null) -> noop + + // poolrealloc(null, X) -> malloc(X) + +} + + + + +static void GetNodesReachableFromGlobals(DSGraph &G, + hash_set &NodesFromGlobals) { + for (DSScalarMap::global_iterator I = G.getScalarMap().global_begin(), + E = G.getScalarMap().global_end(); I != E; ++I) + G.getNodeForValue(*I).getNode()->markReachableNodes(NodesFromGlobals); +} static void printNTOMap(std::map &NTOM) { std::cerr << "NTOM MAP\n"; Index: poolalloc/lib/PoolAllocate/PoolAllocate.h diff -u poolalloc/lib/PoolAllocate/PoolAllocate.h:1.27 poolalloc/lib/PoolAllocate/PoolAllocate.h:1.28 --- poolalloc/lib/PoolAllocate/PoolAllocate.h:1.27 Thu Nov 4 14:13:00 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.h Sun Nov 7 16:19:59 2004 @@ -139,6 +139,10 @@ /// them. /// void AddPoolPrototypes(); + + /// MicroOptimizePoolCalls - Apply any microoptimizations to calls to pool + /// allocation function calls that we can. + void MicroOptimizePoolCalls(); /// BuildIndirectFunctionSets - Iterate over the module looking for indirect /// calls to functions From brukman at cs.uiuc.edu Sun Nov 7 16:26:53 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sun, 7 Nov 2004 16:26:53 -0600 Subject: [llvm-commits] CVS: llvm/tools/llee/Makefile Message-ID: <200411072226.QAA24411@zion.cs.uiuc.edu> Changes in directory llvm/tools/llee: Makefile updated: 1.13 -> 1.14 --- Log message: Use LLVMToolDir instead of ToolDir because the latter is no longer set (?) --- Diffs of the changes: (+3 -3) Index: llvm/tools/llee/Makefile diff -u llvm/tools/llee/Makefile:1.13 llvm/tools/llee/Makefile:1.14 --- llvm/tools/llee/Makefile:1.13 Sun Oct 31 11:30:52 2004 +++ llvm/tools/llee/Makefile Sun Nov 7 16:26:43 2004 @@ -14,12 +14,12 @@ all:: llee -llee: $(ToolDir)/llee +llee: $(LLVMToolDir)/llee -$(ToolDir)/llee: Makefile +$(LLVMToolDir)/llee: Makefile $(Echo) Constructing llee shell script $(Verb) echo exec env LD_PRELOAD=$(LibDir)/libLLVMexecve$(SHLIBEXT) $$\* > $@ $(Verb) chmod u+x $@ clean:: - $(Verb) rm -f $(ToolDir)/llee + $(Verb) rm -f $(LLVMToolDir)/llee From brukman at cs.uiuc.edu Sun Nov 7 16:42:47 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sun, 7 Nov 2004 16:42:47 -0600 Subject: [llvm-commits] CVS: llvm/docs/MakefileGuide.html Message-ID: <200411072242.QAA25232@zion.cs.uiuc.edu> Changes in directory llvm/docs: MakefileGuide.html updated: 1.10 -> 1.11 --- Log message: * Fix file-relative links: they need '#' prepended to the target name * Balance an open parenthesis --- Diffs of the changes: (+9 -9) Index: llvm/docs/MakefileGuide.html diff -u llvm/docs/MakefileGuide.html:1.10 llvm/docs/MakefileGuide.html:1.11 --- llvm/docs/MakefileGuide.html:1.10 Mon Nov 1 01:53:17 2004 +++ llvm/docs/MakefileGuide.html Sun Nov 7 16:42:37 2004 @@ -136,11 +136,11 @@ Makefile. This is the file first read by make. It has three sections:

      -
    1. Settable Variables - Required that must be set +
    2. Settable Variables - Required that must be set first.
    3. -
    4. include $(LEVEL)/Makefile.common +
    5. include $(LEVEL)/Makefile.common - include the LLVM Makefile system. -
    6. Override Variables - Override variables set by +
    7. Override Variables - Override variables set by the LLVM Makefile system.
    @@ -154,12 +154,12 @@
    1. It includes the project's configuration makefile to obtain values determined by the configure script. This is done by including the - $(LEVEL)/Makefile.config file.
    2. + $(LEVEL)/Makefile.config file.
    3. It specifies any other (static) values that are needed throughout the project. Only values that are used in all or a large proportion of the project's directories should be placed here.
    4. It includes the standard rules for the LLVM Makefile system, - $(LLVM_SRC_ROOT)/Makefile.rules. + $(LLVM_SRC_ROOT)/Makefile.rules. This file is the "guts" of the LLVM Makefile system.
    @@ -184,7 +184,7 @@

    This file, located at $(LLVM_SRC_ROOT)/Makefile.rules is the heart of the LLVM Makefile System. It provides all the logic, dependencies, and rules for building the targets supported by the system. What it does largely - depends on the values of make variables that + depends on the values of make variables that have been set before Makefile.rules is included. @@ -469,7 +469,7 @@

    Variables listed in the table below should be set before the - inclusion of $(LEVEL)/Makefile.common. + inclusion of $(LEVEL)/Makefile.common. These variables provide input to the LLVM make system that tell it what to do for the current directory.

    @@ -583,7 +583,7 @@
  • On the make command line -- recommended.
  • On the configure command line
  • In the Makefile (only after the inclusion of $(LEVEL)/Makefile.common.
  • + href="#Makefile.common">$(LEVEL)/Makefile.common).

    The overridable variables are given below:

    @@ -847,7 +847,7 @@ Reid Spencer
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/11/01 07:53:17 $ + Last modified: $Date: 2004/11/07 22:42:37 $ From tbrethou at cs.uiuc.edu Sun Nov 7 17:22:01 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 17:22:01 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/dg.exp Message-ID: <200411072322.RAA25920@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression: dg.exp updated: 1.3 -> 1.4 --- Log message: More srcdir != objdir changes. --- Diffs of the changes: (+3 -1) Index: llvm/test/Regression/dg.exp diff -u llvm/test/Regression/dg.exp:1.3 llvm/test/Regression/dg.exp:1.4 --- llvm/test/Regression/dg.exp:1.3 Sun Nov 7 16:04:21 2004 +++ llvm/test/Regression/dg.exp Sun Nov 7 17:21:50 2004 @@ -4,6 +4,8 @@ #Recurse through all subdirectories without having to add to a .exp to each subdir #Eventually make target_triplet,llvmgcc,llvmgxx to be globals proc regression-runtest { directories objdir srcdir subdir target_triplet llvmgcc llvmgxx prcontext} { + + llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $objdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext foreach dir $directories { @@ -20,7 +22,7 @@ } } - llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $objdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext + } From tbrethou at cs.uiuc.edu Sun Nov 7 17:22:01 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 17:22:01 -0600 Subject: [llvm-commits] CVS: llvm/test/lib/llvm-dg.exp Message-ID: <200411072322.RAA25921@zion.cs.uiuc.edu> Changes in directory llvm/test/lib: llvm-dg.exp updated: 1.3 -> 1.4 --- Log message: More srcdir != objdir changes. --- Diffs of the changes: (+6 -1) Index: llvm/test/lib/llvm-dg.exp diff -u llvm/test/lib/llvm-dg.exp:1.3 llvm/test/lib/llvm-dg.exp:1.4 --- llvm/test/lib/llvm-dg.exp:1.3 Sun Nov 7 16:04:21 2004 +++ llvm/test/lib/llvm-dg.exp Sun Nov 7 17:21:50 2004 @@ -3,7 +3,12 @@ set path [file join $objdir $subdir] #Make Output Directory if it does not exist already - cd $path + if { [file exists path] } { + cd $path + } else { + file mkdir $path + cd $path + } file mkdir Output From tbrethou at cs.uiuc.edu Sun Nov 7 17:24:31 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 17:24:31 -0600 Subject: [llvm-commits] CVS: llvm/test/Feature/dg.exp Message-ID: <200411072324.RAA25968@zion.cs.uiuc.edu> Changes in directory llvm/test/Feature: dg.exp updated: 1.1 -> 1.2 --- Log message: Fix for objdir != srcdir. --- Diffs of the changes: (+1 -1) Index: llvm/test/Feature/dg.exp diff -u llvm/test/Feature/dg.exp:1.1 llvm/test/Feature/dg.exp:1.2 --- llvm/test/Feature/dg.exp:1.1 Sun Nov 7 00:08:43 2004 +++ llvm/test/Feature/dg.exp Sun Nov 7 17:24:21 2004 @@ -1,4 +1,4 @@ load_lib llvm-dg.exp -llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext +llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $objdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext From tbrethou at cs.uiuc.edu Sun Nov 7 17:26:24 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 17:26:24 -0600 Subject: [llvm-commits] CVS: llvm/test/Makefile Message-ID: <200411072326.RAA26023@zion.cs.uiuc.edu> Changes in directory llvm/test: Makefile updated: 1.61 -> 1.62 --- Log message: Changed TEST to TESTSUITE --- Diffs of the changes: (+1 -1) Index: llvm/test/Makefile diff -u llvm/test/Makefile:1.61 llvm/test/Makefile:1.62 --- llvm/test/Makefile:1.61 Sun Nov 7 15:39:41 2004 +++ llvm/test/Makefile Sun Nov 7 17:26:13 2004 @@ -122,7 +122,7 @@ RUNTEST = runtest ifdef TESTSUITE -RUNTESTFLAGS := --tool $(TEST) +RUNTESTFLAGS := --tool $(TESTSUITE) endif check-dejagnu: site.exp From reid at x10sys.com Sun Nov 7 17:29:50 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 17:29:50 -0600 Subject: [llvm-commits] CVS: llvm/test/Makefile Message-ID: <200411072329.RAA26090@zion.cs.uiuc.edu> Changes in directory llvm/test: Makefile updated: 1.62 -> 1.63 --- Log message: Add the RUNTEST autoconf onfiguration variable for Deja-gnu support. This tool runs Deja-gnu test suites. The 'make' variable RUNTEST is now set automatically in the Makefile.config file. --- Diffs of the changes: (+0 -2) Index: llvm/test/Makefile diff -u llvm/test/Makefile:1.62 llvm/test/Makefile:1.63 --- llvm/test/Makefile:1.62 Sun Nov 7 17:26:13 2004 +++ llvm/test/Makefile Sun Nov 7 17:29:39 2004 @@ -119,8 +119,6 @@ # DejaGNU testing support #===------------------------------------------------------------------------===# -RUNTEST = runtest - ifdef TESTSUITE RUNTESTFLAGS := --tool $(TESTSUITE) endif From reid at x10sys.com Sun Nov 7 17:29:50 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 17:29:50 -0600 Subject: [llvm-commits] CVS: llvm/autoconf/configure.ac Message-ID: <200411072329.RAA26096@zion.cs.uiuc.edu> Changes in directory llvm/autoconf: configure.ac updated: 1.127 -> 1.128 --- Log message: Add the RUNTEST autoconf onfiguration variable for Deja-gnu support. This tool runs Deja-gnu test suites. The 'make' variable RUNTEST is now set automatically in the Makefile.config file. --- Diffs of the changes: (+6 -4) Index: llvm/autoconf/configure.ac diff -u llvm/autoconf/configure.ac:1.127 llvm/autoconf/configure.ac:1.128 --- llvm/autoconf/configure.ac:1.127 Thu Oct 28 08:35:00 2004 +++ llvm/autoconf/configure.ac Sun Nov 7 17:29:39 2004 @@ -218,15 +218,17 @@ esac AC_SUBST(ETAGSFLAGS,$ETAGSFLAGS) AC_PATH_PROG(PYTHON,[python],[true python]) -if test "$PYTHON" = "false" -then +if test "$PYTHON" = "false" ; then AC_MSG_WARN([Python is required for the test suite, but it was not found]) fi AC_PATH_PROG(QMTEST,[qmtest],[true qmtest]) -if test "$QMTEST" = "false" -then +if test "$QMTEST" = "false" ; then AC_MSG_WARN([QMTest is required for the test suite, but it was not found]) fi +AC_PATH_PROG(RUNTEST,[runtest],[true runtest]) +if test "$RUNTEST" = "false" ; then + AC_MSG_WARN([runtest (Deja-Gnu) is required for the test sute, but it was not found]) +fi dnl Verify that the version of python available is high enough for qmtest pyversion=`$PYTHON -V 2>&1 | cut -d\ -f2` From reid at x10sys.com Sun Nov 7 17:29:50 2004 From: reid at x10sys.com (Reid Spencer) Date: Sun, 7 Nov 2004 17:29:50 -0600 Subject: [llvm-commits] CVS: llvm/Makefile.config.in configure Message-ID: <200411072329.RAA26095@zion.cs.uiuc.edu> Changes in directory llvm: Makefile.config.in updated: 1.37 -> 1.38 configure updated: 1.134 -> 1.135 --- Log message: Add the RUNTEST autoconf onfiguration variable for Deja-gnu support. This tool runs Deja-gnu test suites. The 'make' variable RUNTEST is now set automatically in the Makefile.config file. --- Diffs of the changes: (+51 -5) Index: llvm/Makefile.config.in diff -u llvm/Makefile.config.in:1.37 llvm/Makefile.config.in:1.38 --- llvm/Makefile.config.in:1.37 Sun Nov 7 13:12:53 2004 +++ llvm/Makefile.config.in Sun Nov 7 17:29:39 2004 @@ -34,6 +34,9 @@ # Path to the Python interpreter PYTHON := @PYTHON@ +# Path to the Deja-Gnu runtest program +RUNTEST := @RUNTEST@ + # Linker flags. LDFLAGS+=@LDFLAGS@ Index: llvm/configure diff -u llvm/configure:1.134 llvm/configure:1.135 --- llvm/configure:1.134 Thu Oct 28 08:34:58 2004 +++ llvm/configure Sun Nov 7 17:29:39 2004 @@ -474,7 +474,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS subdirs INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os OS LLVMGCCDIR ARCH CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT CC CFLAGS ac_ct_CC CPP ifGNUmake LEX LEXLIB LEX_OUTPUT_ROOT FLEX YACC BISON EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL TAR DOT ETAGS ETAGSFLAGS PYTHON QMTEST HAVE_ZLIB HAVE_BZIP2 ENDIAN ALLOCA MMAP_FILE ENABLE_OPTIMIZED JIT LLVMCC1 LLVMCC1PLUS SHLIBEXT LLVM_PREFIX LLVM_BINDIR LLVM_LIBDIR LLVM_DATADIR LLVM_DOCSDIR LLVM_ETCDIR LLVM_INCLUDEDIR LLV! M_INFODIR LLVM_MANDIR LLVM_CONFIGTIME LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS subdirs INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os OS LLVMGCCDIR ARCH CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT CC CFLAGS ac_ct_CC CPP ifGNUmake LEX LEXLIB LEX_OUTPUT_ROOT FLEX YACC BISON EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL TAR DOT ETAGS ETAGSFLAGS PYTHON QMTEST RUNTEST HAVE_ZLIB HAVE_BZIP2 ENDIAN ALLOCA MMAP_FILE ENABLE_OPTIMIZED JIT LLVMCC1 LLVMCC1PLUS SHLIBEXT LLVM_PREFIX LLVM_BINDIR LLVM_LIBDIR LLVM_DATADIR LLVM_DOCSDIR LLVM_ETCDIR LLVM_INCLUD! EDIR LLVM_INFODIR LLVM_MANDIR LLVM_CONFIGTIME LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -19126,8 +19126,7 @@ echo "${ECHO_T}no" >&6 fi -if test "$PYTHON" = "false" -then +if test "$PYTHON" = "false" ; then { echo "$as_me:$LINENO: WARNING: Python is required for the test suite, but it was not found" >&5 echo "$as_me: WARNING: Python is required for the test suite, but it was not found" >&2;} fi @@ -19171,11 +19170,54 @@ echo "${ECHO_T}no" >&6 fi -if test "$QMTEST" = "false" -then +if test "$QMTEST" = "false" ; then { echo "$as_me:$LINENO: WARNING: QMTest is required for the test suite, but it was not found" >&5 echo "$as_me: WARNING: QMTest is required for the test suite, but it was not found" >&2;} fi +# Extract the first word of "runtest", so it can be a program name with args. +set dummy runtest; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_RUNTEST+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $RUNTEST in + [\\/]* | ?:[\\/]*) + ac_cv_path_RUNTEST="$RUNTEST" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_RUNTEST="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_RUNTEST" && ac_cv_path_RUNTEST="true runtest" + ;; +esac +fi +RUNTEST=$ac_cv_path_RUNTEST + +if test -n "$RUNTEST"; then + echo "$as_me:$LINENO: result: $RUNTEST" >&5 +echo "${ECHO_T}$RUNTEST" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$RUNTEST" = "false" ; then + { echo "$as_me:$LINENO: WARNING: runtest (Deja-Gnu) is required for the test sute, but it was not found" >&5 +echo "$as_me: WARNING: runtest (Deja-Gnu) is required for the test sute, but it was not found" >&2;} +fi pyversion=`$PYTHON -V 2>&1 | cut -d\ -f2` pymajor=`echo $pyversion | cut -d. -f1` @@ -25356,6 +25398,7 @@ s, at ETAGSFLAGS@,$ETAGSFLAGS,;t t s, at PYTHON@,$PYTHON,;t t s, at QMTEST@,$QMTEST,;t t +s, at RUNTEST@,$RUNTEST,;t t s, at HAVE_ZLIB@,$HAVE_ZLIB,;t t s, at HAVE_BZIP2@,$HAVE_BZIP2,;t t s, at ENDIAN@,$ENDIAN,;t t From brukman at cs.uiuc.edu Sun Nov 7 17:58:12 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sun, 7 Nov 2004 17:58:12 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/ExecutionEngine/ExecutionEngine.h Message-ID: <200411072358.RAA28147@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/ExecutionEngine: ExecutionEngine.h updated: 1.27 -> 1.28 --- Log message: Add method to delete machine code generated for a Function --- Diffs of the changes: (+6 -0) Index: llvm/include/llvm/ExecutionEngine/ExecutionEngine.h diff -u llvm/include/llvm/ExecutionEngine/ExecutionEngine.h:1.27 llvm/include/llvm/ExecutionEngine/ExecutionEngine.h:1.28 --- llvm/include/llvm/ExecutionEngine/ExecutionEngine.h:1.27 Fri Sep 3 13:19:51 2004 +++ llvm/include/llvm/ExecutionEngine/ExecutionEngine.h Sun Nov 7 17:58:02 2004 @@ -138,6 +138,12 @@ /// virtual void *recompileAndRelinkFunction(Function *F) = 0; + /// freeMachineCodeForFunction - Release memory in the ExecutionEngine + /// corresponding to the machine code emitted to execute this function, useful + /// for garbage-collecting generated code. + /// + virtual void freeMachineCodeForFunction(Function *F) = 0; + /// getOrEmitGlobalVariable - Return the address of the specified global /// variable, possibly emitting it to memory if needed. This is used by the /// Emitter. From brukman at cs.uiuc.edu Sun Nov 7 17:58:55 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sun, 7 Nov 2004 17:58:55 -0600 Subject: [llvm-commits] CVS: llvm/lib/ExecutionEngine/Interpreter/Interpreter.h Message-ID: <200411072358.RAA28169@zion.cs.uiuc.edu> Changes in directory llvm/lib/ExecutionEngine/Interpreter: Interpreter.h updated: 1.67 -> 1.68 --- Log message: Implement ExecutionEngine::freeMachineCodeForFunction() --- Diffs of the changes: (+4 -0) Index: llvm/lib/ExecutionEngine/Interpreter/Interpreter.h diff -u llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.67 llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.68 --- llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.67 Sat Oct 16 13:21:33 2004 +++ llvm/lib/ExecutionEngine/Interpreter/Interpreter.h Sun Nov 7 17:58:44 2004 @@ -120,6 +120,10 @@ return getPointerToFunction(F); } + /// freeMachineCodeForFunction - The interpreter does not generate any code. + /// + void freeMachineCodeForFunction(Function *F) { } + // Methods used to execute code: // Place a call on the stack void callFunction(Function *F, const std::vector &ArgVals); From brukman at cs.uiuc.edu Sun Nov 7 17:58:56 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sun, 7 Nov 2004 17:58:56 -0600 Subject: [llvm-commits] CVS: llvm/lib/ExecutionEngine/JIT/JIT.cpp JIT.h Message-ID: <200411072358.RAA28177@zion.cs.uiuc.edu> Changes in directory llvm/lib/ExecutionEngine/JIT: JIT.cpp updated: 1.45 -> 1.46 JIT.h updated: 1.23 -> 1.24 --- Log message: Implement ExecutionEngine::freeMachineCodeForFunction() --- Diffs of the changes: (+11 -0) Index: llvm/lib/ExecutionEngine/JIT/JIT.cpp diff -u llvm/lib/ExecutionEngine/JIT/JIT.cpp:1.45 llvm/lib/ExecutionEngine/JIT/JIT.cpp:1.46 --- llvm/lib/ExecutionEngine/JIT/JIT.cpp:1.45 Fri Oct 22 18:35:57 2004 +++ llvm/lib/ExecutionEngine/JIT/JIT.cpp Sun Nov 7 17:58:46 2004 @@ -330,3 +330,9 @@ TJI.replaceMachineCodeForFunction(OldAddr, Addr); return Addr; } + +/// freeMachineCodeForFunction - release machine code memory for given Function +/// +void JIT::freeMachineCodeForFunction(Function *F) { + // currently a no-op +} Index: llvm/lib/ExecutionEngine/JIT/JIT.h diff -u llvm/lib/ExecutionEngine/JIT/JIT.h:1.23 llvm/lib/ExecutionEngine/JIT/JIT.h:1.24 --- llvm/lib/ExecutionEngine/JIT/JIT.h:1.23 Sun Dec 28 03:44:37 2003 +++ llvm/lib/ExecutionEngine/JIT/JIT.h Sun Nov 7 17:58:46 2004 @@ -90,6 +90,11 @@ /// void *recompileAndRelinkFunction(Function *F); + /// freeMachineCodeForFunction - deallocate memory used to code-generate this + /// Function. + /// + void freeMachineCodeForFunction(Function *F); + private: static MachineCodeEmitter *createEmitter(JIT &J); void runJITOnFunction (Function *F); From brukman at cs.uiuc.edu Sun Nov 7 18:22:33 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sun, 7 Nov 2004 18:22:33 -0600 Subject: [llvm-commits] CVS: llvm/docs/UsingLibraries.html Message-ID: <200411080022.SAA28594@zion.cs.uiuc.edu> Changes in directory llvm/docs: UsingLibraries.html updated: 1.11 -> 1.12 --- Log message: Fix grammar: use commas in a list of entities --- Diffs of the changes: (+3 -3) Index: llvm/docs/UsingLibraries.html diff -u llvm/docs/UsingLibraries.html:1.11 llvm/docs/UsingLibraries.html:1.12 --- llvm/docs/UsingLibraries.html:1.11 Mon Nov 1 03:22:49 2004 +++ llvm/docs/UsingLibraries.html Sun Nov 7 18:22:22 2004 @@ -155,8 +155,8 @@ should link into your programs.

    - +

    No matter what you do with LLVM, the last three entries in your linke line should always be: LLVMCore LLVMSupport.a LLVMSystem.a.

    @@ -182,7 +182,7 @@ Reid Spencer The LLVM Compiler Infrastructure -
    Last modified: $Date: 2004/11/01 09:22:49 $
    +
    Last modified: $Date: 2004/11/08 00:22:22 $ @@ -182,7 +182,7 @@ Reid Spencer The LLVM Compiler Infrastructure -
    Last modified: $Date: 2004/11/08 00:22:22 $ +
    Last modified: $Date: 2004/11/08 00:24:43 $ +
    Last modified: $Date: 2004/11/08 00:26:32 $ + + + + + + + +
    ARM - Official manuals and docs
    + + + + + + + +
    MIPS - Official manuals and docs
    + + + + + + + +
    IBM - Official manuals and docs
    + + + + +
    Other documents, collections, notes
    + + + + + + + +
    Official manuals and docs
    + + + + + + + +
    AMD - Official manuals and docs
    + + + + +
    Intel - Official manuals and docs
    + + + + +
    Other x86-specific information
    + + + + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + Valid CSS! + Valid HTML 4.01! + + Misha Brukman
    + LLVM Compiler Infrastructure
    + Last modified: $Date: 2004/11/08 02:47:08 $ +
    + + + From tbrethou at cs.uiuc.edu Sun Nov 7 21:27:10 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 21:27:10 -0600 Subject: [llvm-commits] CVS: llvm/test/Makefile Message-ID: <200411080327.VAA30411@zion.cs.uiuc.edu> Changes in directory llvm/test: Makefile updated: 1.63 -> 1.64 --- Log message: Now using path to python found by configure. --- Diffs of the changes: (+1 -1) Index: llvm/test/Makefile diff -u llvm/test/Makefile:1.63 llvm/test/Makefile:1.64 --- llvm/test/Makefile:1.63 Sun Nov 7 17:29:39 2004 +++ llvm/test/Makefile Sun Nov 7 21:26:59 2004 @@ -136,7 +136,7 @@ @echo '# Do not edit here. If you wish to override these values' >>site.tmp @echo '# edit the last section' >>site.tmp @echo "set target_triplet $(TARGET_TRIPLE)" >> site.tmp - @echo 'set prcontext $(LLVM_SRC_ROOT)/test/Scripts/prcontext.py' >> site.tmp + @echo 'set prcontext "$(PYTHON) $(LLVM_SRC_ROOT)/test/Scripts/prcontext.py"' >> site.tmp @echo 'set srcdir $(LLVM_SRC_ROOT)/test' >>site.tmp @echo "set objdir $(LLVM_OBJ_ROOT)/test" >>site.tmp @echo 'set llvmgcc $(LLVMGCCDIR)/bin/gcc' >> site.tmp From tbrethou at cs.uiuc.edu Sun Nov 7 21:27:10 2004 From: tbrethou at cs.uiuc.edu (Tanya Brethour) Date: Sun, 7 Nov 2004 21:27:10 -0600 Subject: [llvm-commits] CVS: llvm/test/lib/llvm-dg.exp Message-ID: <200411080327.VAA30414@zion.cs.uiuc.edu> Changes in directory llvm/test/lib: llvm-dg.exp updated: 1.4 -> 1.5 --- Log message: Now using path to python found by configure. --- Diffs of the changes: (+1 -1) Index: llvm/test/lib/llvm-dg.exp diff -u llvm/test/lib/llvm-dg.exp:1.4 llvm/test/lib/llvm-dg.exp:1.5 --- llvm/test/lib/llvm-dg.exp:1.4 Sun Nov 7 17:21:50 2004 +++ llvm/test/lib/llvm-dg.exp Sun Nov 7 21:26:59 2004 @@ -53,7 +53,7 @@ regsub -all {%llvmgxx} $new_runline $llvmgxx new_runline #replace %prcontext with actual path to llvmg++ (Goes away when we remove qmtest) - regsub -all {%prcontext} $new_runline "python $prcontext" new_runline + regsub -all {%prcontext} $new_runline "$prcontext" new_runline puts $scriptFileId $new_runline } elseif {[regexp {XFAIL:[ *](.+)} $line match targets]} { From brukman at cs.uiuc.edu Sun Nov 7 21:28:38 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Sun, 7 Nov 2004 21:28:38 -0600 Subject: [llvm-commits] CVS: llvm/utils/NightlyTest.pl Message-ID: <200411080328.VAA30445@zion.cs.uiuc.edu> Changes in directory llvm/utils: NightlyTest.pl updated: 1.68 -> 1.69 --- Log message: * Add support for f2c and the -f2c switch to enable Fortran benchmarks * Remove spurious spaces between variable names and `=' (they're not lined up anyway and there's no hope of doing that) --- Diffs of the changes: (+18 -12) Index: llvm/utils/NightlyTest.pl diff -u llvm/utils/NightlyTest.pl:1.68 llvm/utils/NightlyTest.pl:1.69 --- llvm/utils/NightlyTest.pl:1.68 Sat Nov 6 15:35:40 2004 +++ llvm/utils/NightlyTest.pl Sun Nov 7 21:28:27 2004 @@ -31,6 +31,7 @@ # -debug Print information useful only to maintainers of this script. # -nice Checkout/Configure/Build with "nice" to reduce impact # on busy servers. +# -f2c Next argument specifies path to F2C utility # -gnuplotscript Next argument specifies gnuplot script to use # -templatefile Next argument specifies template file to use # -gccpath Path to gcc/g++ used to build LLVM @@ -69,15 +70,15 @@ # Command line argument settings... my $NOCHECKOUT = 0; -my $NOREMOVE = 0; +my $NOREMOVE = 0; my $NOFEATURES = 0; my $NOREGRESSIONS = 0; -my $NOTEST = 0; +my $NOTEST = 0; my $NORUNNINGTESTS = 0; my $NOEXTERNALS = 0; -my $MAKEOPTS = ""; +my $MAKEOPTS = ""; my $PROGTESTOPTS = ""; -my $VERBOSE = 0; +my $VERBOSE = 0; my $DEBUG = 0; my $CONFIGUREARGS = ""; my $NICE = ""; @@ -262,13 +263,13 @@ # List command line options here... if (/^-nocheckout$/) { $NOCHECKOUT = 1; next; } - if (/^-noremove$/) { $NOREMOVE = 1; next; } + if (/^-noremove$/) { $NOREMOVE = 1; next; } if (/^-nofeaturetests$/) { $NOFEATURES = 1; next; } if (/^-noregressiontests$/){ $NOREGRESSIONS = 1; next; } - if (/^-notest$/) { $NOTEST = 1; $NORUNNINGTESTS = 1; next; } + if (/^-notest$/) { $NOTEST = 1; $NORUNNINGTESTS = 1; next; } if (/^-norunningtests$/) { $NORUNNINGTESTS = 1; next; } - if (/^-parallel$/) { $MAKEOPTS = "$MAKEOPTS -j2 -l3.0"; next; } - if (/^-release$/) { $MAKEOPTS = "$MAKEOPTS ENABLE_OPTIMIZED=1"; next; } + if (/^-parallel$/) { $MAKEOPTS = "$MAKEOPTS -j2 -l3.0"; next; } + if (/^-release$/) { $MAKEOPTS = "$MAKEOPTS ENABLE_OPTIMIZED=1"; next; } if (/^-pedantic$/) { $MAKEOPTS = "$MAKEOPTS CompileOptimizeOpts='-O3 -DNDEBUG -finline-functions -Wpointer-arith -Wcast-align -Wno-deprecated -Wold-style-cast -Wabi -Woverloaded-virtual -ffor-scope'"; next; @@ -278,12 +279,17 @@ $CONFIGUREARGS .= " --disable-llc_diffs"; next; } if (/^-disable-jit$/) { $PROGTESTOPTS .= " DISABLE_JIT=1"; $CONFIGUREARGS .= " --disable-jit"; next; } - if (/^-verbose$/) { $VERBOSE = 1; next; } - if (/^-debug$/) { $DEBUG = 1; next; } - if (/^-nice$/) { $NICE = "nice "; next; } + if (/^-verbose$/) { $VERBOSE = 1; next; } + if (/^-debug$/) { $DEBUG = 1; next; } + if (/^-nice$/) { $NICE = "nice "; next; } + if (/^-f2c$/) { + $CONFIGUREARGS .= " --with-f2c=$ARGV[0]"; shift; next; + } if (/^-gnuplotscript$/) { $PlotScriptFilename = $ARGV[0]; shift; next; } if (/^-templatefile$/) { $Template = $ARGV[0]; shift; next; } - if (/^-gccpath/) { $CONFIGUREARGS=" CC=$ARGV[0]/gcc CXX=$ARGV[0]/g++"; shift; next; } + if (/^-gccpath/) { + $CONFIGUREARGS .= " CC=$ARGV[0]/gcc CXX=$ARGV[0]/g++"; shift; next; + } if (/^-noexternals$/) { $NOEXTERNALS = 1; next; } print "Unknown option: $_ : ignoring!\n"; From alkis at cs.uiuc.edu Sun Nov 7 23:35:14 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Sun, 7 Nov 2004 23:35:14 -0600 Subject: [llvm-commits] CVS: llvm/Makefile Message-ID: <200411080535.XAA26242@zion.cs.uiuc.edu> Changes in directory llvm: Makefile updated: 1.39 -> 1.40 --- Log message: Override PATH to submake so that all tools are found if the PATH is not set up properly (it also avoids using different tools that happen to be in the path). --- Diffs of the changes: (+1 -1) Index: llvm/Makefile diff -u llvm/Makefile:1.39 llvm/Makefile:1.40 --- llvm/Makefile:1.39 Sun Nov 7 15:43:57 2004 +++ llvm/Makefile Sun Nov 7 23:35:03 2004 @@ -37,4 +37,4 @@ tools-only: all check-dejagnu: - cd test; $(MAKE) check-dejagnu TESTSUITE=$(TESTSUITE) + PATH=$(LLVMToolDir):$(PATH) $(MAKE) -C test check-dejagnu TESTSUITE=$(TESTSUITE) From alkis at cs.uiuc.edu Sun Nov 7 23:44:15 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Sun, 7 Nov 2004 23:44:15 -0600 Subject: [llvm-commits] CVS: llvm/test/Makefile Message-ID: <200411080544.XAA26416@zion.cs.uiuc.edu> Changes in directory llvm/test: Makefile updated: 1.64 -> 1.65 --- Log message: Move path override in test/Makefile. --- Diffs of the changes: (+2 -1) Index: llvm/test/Makefile diff -u llvm/test/Makefile:1.64 llvm/test/Makefile:1.65 --- llvm/test/Makefile:1.64 Sun Nov 7 21:26:59 2004 +++ llvm/test/Makefile Sun Nov 7 23:44:05 2004 @@ -124,7 +124,8 @@ endif check-dejagnu: site.exp - PATH=$(LLVM_SRC_ROOT)/test/Scripts:$(PATH) $(RUNTEST) $(RUNTESTFLAGS) + PATH=$(LLVMToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH) \ + $(RUNTEST) $(RUNTESTFLAGS) dejagnu-clean: From alkis at cs.uiuc.edu Sun Nov 7 23:44:15 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Sun, 7 Nov 2004 23:44:15 -0600 Subject: [llvm-commits] CVS: llvm/Makefile Message-ID: <200411080544.XAA26419@zion.cs.uiuc.edu> Changes in directory llvm: Makefile updated: 1.40 -> 1.41 --- Log message: Move path override in test/Makefile. --- Diffs of the changes: (+1 -1) Index: llvm/Makefile diff -u llvm/Makefile:1.40 llvm/Makefile:1.41 --- llvm/Makefile:1.40 Sun Nov 7 23:35:03 2004 +++ llvm/Makefile Sun Nov 7 23:44:05 2004 @@ -37,4 +37,4 @@ tools-only: all check-dejagnu: - PATH=$(LLVMToolDir):$(PATH) $(MAKE) -C test check-dejagnu TESTSUITE=$(TESTSUITE) + $(MAKE) -C test check-dejagnu TESTSUITE=$(TESTSUITE)