[llvm-commits] CVS: llvm/tools/llvm-ld/llvm-ld.cpp

2006-11-11 Thread Reid Spencer


Changes in directory llvm/tools/llvm-ld:

llvm-ld.cpp updated: 1.40 - 1.41
---
Log message:

For PR998: http://llvm.org/PR998 :
Fix an infinite loop in the Linker and a few other assorted link problems.

Patch contributed by Scott Michel. Thanks, Scott!


---
Diffs of the changes:  (+18 -12)

 llvm-ld.cpp |   30 ++
 1 files changed, 18 insertions(+), 12 deletions(-)


Index: llvm/tools/llvm-ld/llvm-ld.cpp
diff -u llvm/tools/llvm-ld/llvm-ld.cpp:1.40 llvm/tools/llvm-ld/llvm-ld.cpp:1.41
--- llvm/tools/llvm-ld/llvm-ld.cpp:1.40 Sun Nov  5 13:53:08 2006
+++ llvm/tools/llvm-ld/llvm-ld.cpp  Sat Nov 11 05:54:25 2006
@@ -264,7 +264,7 @@
 /// Inputs:
 ///  InputFilename  - The name of the input bytecode file.
 ///  OutputFilename - The name of the file to generate.
-///  Libraries  - The list of libraries with which to link.
+///  LinkItems  - The native libraries, files, code with which to link
 ///  LibPaths   - The list of directories in which to find libraries.
 ///  gcc- The pathname to use for GGC.
 ///  envp   - A copy of the process's current environment.
@@ -276,7 +276,7 @@
 ///
 static int GenerateNative(const std::string OutputFilename,
   const std::string InputFilename,
-  const std::vectorstd::string Libraries,
+  const Linker::ItemList LinkItems,
   const sys::Path gcc, char ** const envp,
   std::string ErrMsg) {
   // Remove these environment variables from the environment of the
@@ -323,10 +323,13 @@
   }
 
   // Add in the libraries to link.
-  for (unsigned index = 0; index  Libraries.size(); index++)
-if (Libraries[index] != crtend) {
-  args.push_back(-l);
-  args.push_back(Libraries[index].c_str());
+  for (unsigned index = 0; index  LinkItems.size(); index++)
+if (LinkItems[index].first != crtend) {
+  if (LinkItems[index].second) {
+   std::string lib_name = -l + LinkItems[index].first;
+   args.push_back(lib_name.c_str());
+  } else
+   args.push_back(LinkItems[index].first.c_str());
 }
 
   args.push_back(0);
@@ -433,13 +436,17 @@
   try {
 // Initial global variable above for convenience printing of program name.
 progname = sys::Path(argv[0]).getBasename();
-Linker TheLinker(progname, OutputFilename, Verbose);
 
 // Parse the command line options
 cl::ParseCommandLineOptions(argc, argv,  llvm linker\n);
 sys::PrintStackTraceOnErrorSignal();
 
-// Set up the library paths for the Linker
+// Construct a Linker (now that Verbose is set)
+Linker TheLinker(progname, OutputFilename, Verbose);
+// Keep track of the native link items (vice the bytecode items)
+Linker::ItemList LinkItems;
+
+// Add library paths to the linker
 TheLinker.addPaths(LibPaths);
 TheLinker.addSystemPaths();
 
@@ -463,11 +470,10 @@
 } else {
   // Build a list of the items from our command line
   Linker::ItemList Items;
-  Linker::ItemList NativeItems;
   BuildLinkItems(Items, InputFilenames, Libraries);
 
   // Link all the items together
-  if (TheLinker.LinkInItems(Items,NativeItems) )
+  if (TheLinker.LinkInItems(Items,LinkItems) )
 return 1;
 }
 
@@ -558,7 +564,7 @@
 
 if (Verbose) std::cout  Generating Native Code\n;
 if (0 != GenerateNative(OutputFilename, AssemblyFile.toString(),
-Libraries,gcc,envp,ErrMsg)) {
+LinkItems,gcc,envp,ErrMsg)) {
   std::cerr  argv[0]  :   ErrMsg  \n;
   return 1;
 }
@@ -592,7 +598,7 @@
 }
 
 if (Verbose) std::cout  Generating Native Code\n;
-if (0 != GenerateNative(OutputFilename, CFile.toString(), Libraries, 
+if (0 != GenerateNative(OutputFilename, CFile.toString(), LinkItems, 
 gcc, envp, ErrMsg)) {
   std::cerr  argv[0]  :   ErrMsg  \n;
   return 1;



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Linker/LinkArchives.cpp LinkItems.cpp

2006-11-11 Thread Reid Spencer


Changes in directory llvm/lib/Linker:

LinkArchives.cpp updated: 1.52 - 1.53
LinkItems.cpp updated: 1.8 - 1.9
---
Log message:

For PR998: http://llvm.org/PR998 :
Fix an infinite loop in the Linker and a few other assorted link problems.

Patch contributed by Scott Michel. Thanks, Scott!


---
Diffs of the changes:  (+30 -16)

 LinkArchives.cpp |   33 +++--
 LinkItems.cpp|   13 +++--
 2 files changed, 30 insertions(+), 16 deletions(-)


Index: llvm/lib/Linker/LinkArchives.cpp
diff -u llvm/lib/Linker/LinkArchives.cpp:1.52 
llvm/lib/Linker/LinkArchives.cpp:1.53
--- llvm/lib/Linker/LinkArchives.cpp:1.52   Thu Nov  2 14:25:49 2006
+++ llvm/lib/Linker/LinkArchives.cppSat Nov 11 05:54:25 2006
@@ -124,8 +124,12 @@
   // variable is used to set_subtract from the set of undefined symbols.
   std::setstd::string NotDefinedByArchive;
 
-  // While we are linking in object files, loop.
-  while (true) {
+  // Save the current set of undefined symbols, because we may have to make
+  // multiple passes over the archive:
+  std::setstd::string CurrentlyUndefinedSymbols;
+
+  do {
+CurrentlyUndefinedSymbols = UndefinedSymbols;
 
 // Find the modules we need to link into the target module
 std::setModuleProvider* Modules;
@@ -149,17 +153,26 @@
  I != E; ++I) {
 
   // Get the module we must link in.
-  std::auto_ptrModule AutoModule( (*I)-releaseModule() );
+  std::string moduleErrorMsg;
+  std::auto_ptrModule AutoModule((*I)-releaseModule( moduleErrorMsg ));
   Module* aModule = AutoModule.get();
 
-  verbose(  Linking in module:  + aModule-getModuleIdentifier());
+  if (aModule != NULL) {
+verbose(  Linking in module:  + aModule-getModuleIdentifier());
 
-  // Link it in
-  if (LinkInModule(aModule))
-return error(Cannot link in module ' +
- aModule-getModuleIdentifier() + ':  + Error);
+// Link it in
+if (LinkInModule(aModule, moduleErrorMsg)) {
+  return error(Cannot link in module ' +
+   aModule-getModuleIdentifier() + ':  + 
moduleErrorMsg);
+}
+  } else {
+   // (scottm) NOTE: For some reason, Modules.empty() isn't entirely 
+// accurrate, least with gcc 4.1.2 on Debian and doesn't return true 
+// when it ought.  Consequently, aModule can be NULL -- ignore it for 
+// the time being, since it seems relatively benign.
+  }
 }
-
+
 // Get the undefined symbols from the aggregate module. This recomputes the
 // symbols we still need after the new modules have been linked in.
 GetAllUndefinedSymbols(Composite, UndefinedSymbols);
@@ -175,7 +188,7 @@
 // archive.
 if (UndefinedSymbols.empty())
   break;
-  }
+  } while (CurrentlyUndefinedSymbols != UndefinedSymbols);
 
   return false;
 }


Index: llvm/lib/Linker/LinkItems.cpp
diff -u llvm/lib/Linker/LinkItems.cpp:1.8 llvm/lib/Linker/LinkItems.cpp:1.9
--- llvm/lib/Linker/LinkItems.cpp:1.8   Mon Jan  9 21:14:40 2006
+++ llvm/lib/Linker/LinkItems.cpp   Sat Nov 11 05:54:25 2006
@@ -32,10 +32,10 @@
I != E; ++I) {
 if (I-second) {
   // Link in the library suggested.
-  bool is_file = true;
-  if (LinkInLibrary(I-first,is_file))
+  bool is_bytecode = true;
+  if (LinkInLibrary(I-first,is_bytecode))
 return true;
-  if (!is_file)
+  if (!is_bytecode)
 NativeItems.push_back(*I);
 } else {
   // Link in the file suggested
@@ -61,8 +61,8 @@
 
 /// LinkInLibrary - links one library into the HeadModule.
 ///
-bool Linker::LinkInLibrary(const std::string Lib, bool is_file) {
-  is_file = false;
+bool Linker::LinkInLibrary(const std::string Lib, bool is_bytecode) {
+  is_bytecode = false;
   // Determine where this library lives.
   sys::Path Pathname = FindLib(Lib);
   if (Pathname.isEmpty())
@@ -77,11 +77,12 @@
   // LLVM .so file.
   if (LinkInFile(Pathname))
 return error(Cannot link file ' + Pathname.toString() + ');
-  is_file = true;
+  is_bytecode = true;
   break;
 case sys::ArchiveFileType:
   if (LinkInArchive(Pathname))
 return error(Cannot link archive ' + Pathname.toString() + ');
+  is_bytecode = true;
   break;
 default:
   return warning(Supposed library ' + Lib + ' isn't a library.);



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm-test/SingleSource/Regression/C/casts.c

2006-11-11 Thread Reid Spencer


Changes in directory llvm-test/SingleSource/Regression/C:

casts.c updated: 1.4 - 1.5
---
Log message:

Silence a macro redef warning.


---
Diffs of the changes:  (+2 -0)

 casts.c |2 ++
 1 files changed, 2 insertions(+)


Index: llvm-test/SingleSource/Regression/C/casts.c
diff -u llvm-test/SingleSource/Regression/C/casts.c:1.4 
llvm-test/SingleSource/Regression/C/casts.c:1.5
--- llvm-test/SingleSource/Regression/C/casts.c:1.4 Sun Feb 22 21:09:02 2004
+++ llvm-test/SingleSource/Regression/C/casts.c Sat Nov 11 08:31:54 2006
@@ -1,7 +1,9 @@
 #include stdlib.h
 #include stdio.h
 
+#ifndef __STDC_LIMIT_MACROS
 #define __STDC_LIMIT_MACROS 1
+#endif
 #include inttypes.h
 
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/McCat/18-imp/pgm.c

2006-11-11 Thread Reid Spencer


Changes in directory llvm-test/MultiSource/Benchmarks/McCat/18-imp:

pgm.c updated: 1.2 - 1.3
---
Log message:

Make this test *NOT* depend on uninitialized memory contents.


---
Diffs of the changes:  (+2 -0)

 pgm.c |2 ++
 1 files changed, 2 insertions(+)


Index: llvm-test/MultiSource/Benchmarks/McCat/18-imp/pgm.c
diff -u llvm-test/MultiSource/Benchmarks/McCat/18-imp/pgm.c:1.2 
llvm-test/MultiSource/Benchmarks/McCat/18-imp/pgm.c:1.3
--- llvm-test/MultiSource/Benchmarks/McCat/18-imp/pgm.c:1.2 Sun Nov 16 
13:39:28 2003
+++ llvm-test/MultiSource/Benchmarks/McCat/18-imp/pgm.c Sat Nov 11 11:13:53 2006
@@ -56,6 +56,7 @@
 
   /* Clear valid bit. */
   img-valid = 0;
+  img-var = 0;
 }
 
 /*
@@ -196,6 +197,7 @@
   img-data = (char *) malloc((img-width * img-height) * sizeof(char));
   img-hist = (int *) calloc(img-maxgray + 1, sizeof(int));
   img-p = (double *) calloc(img-maxgray + 1, sizeof(double));
+  img-var = NULL;
 
   /* Skip comments. */
   fscanf(img-fp, #%n, n);



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/bugpoint/Miscompilation.cpp

2006-11-11 Thread Reid Spencer


Changes in directory llvm/tools/bugpoint:

Miscompilation.cpp updated: 1.78 - 1.79
---
Log message:

Add a -disable-loop-extraction option to bugpoint.


---
Diffs of the changes:  (+9 -2)

 Miscompilation.cpp |   11 +--
 1 files changed, 9 insertions(+), 2 deletions(-)


Index: llvm/tools/bugpoint/Miscompilation.cpp
diff -u llvm/tools/bugpoint/Miscompilation.cpp:1.78 
llvm/tools/bugpoint/Miscompilation.cpp:1.79
--- llvm/tools/bugpoint/Miscompilation.cpp:1.78 Thu Nov  2 14:25:50 2006
+++ llvm/tools/bugpoint/Miscompilation.cpp  Sat Nov 11 13:05:02 2006
@@ -33,6 +33,11 @@
 }
 
 namespace {
+  static llvm::cl::optbool 
+DisableLoopExtraction(disable-loop-extraction, 
+cl::desc(Don't extract loops when searching for miscompilations),
+cl::init(false));
+
   class ReduceMiscompilingPasses : public ListReducerconst PassInfo* {
 BugDriver BD;
   public:
@@ -512,8 +517,10 @@
 
   // See if we can rip any loops out of the miscompiled functions and still
   // trigger the problem.
-  if (!BugpointIsInterrupted  
-  ExtractLoops(BD, TestFn, MiscompiledFunctions)) {
+
+  if (!DisableLoopExtraction)
+if (!BugpointIsInterrupted  
+ExtractLoops(BD, TestFn, MiscompiledFunctions)) {
 // Okay, we extracted some loops and the problem still appears.  See if we
 // can eliminate some of the created functions from being candidates.
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td PPCRegisterInfo.cpp

2006-11-11 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.24 - 1.25
PPCRegisterInfo.cpp updated: 1.78 - 1.79
---
Log message:

implement proper PPC64 prolog/epilog codegen.



---
Diffs of the changes:  (+81 -30)

 PPCInstr64Bit.td|5 ++
 PPCRegisterInfo.cpp |  106 +---
 2 files changed, 81 insertions(+), 30 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.24 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.25
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.24   Fri Nov 10 22:51:36 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdSat Nov 11 13:05:28 2006
@@ -322,6 +322,10 @@
stdx $rS, $dst, LdStSTD,
[(store G8RC:$rS, xaddr:$dst)], isPPC64,
PPC970_DGroup_Cracked;
+
+def STDU : DSForm_162, 1, (ops G8RC:$rS, memrix:$dst),
+stdu $rS, $dst, LdStSTD,
+[], isPPC64;
 def STDUX : XForm_831, 181, (ops G8RC:$rS, memrr:$dst),
stdux $rS, $dst, LdStSTD,
[], isPPC64;
@@ -335,6 +339,7 @@
[(PPCstd_32  GPRC:$rT, xaddr:$dst)], isPPC64,
PPC970_DGroup_Cracked;
 
+
 // Truncating stores.   
 def STB8 : DForm_338, (ops G8RC:$rS, memri:$src),
stb $rS, $src, LdStGeneral,


Index: llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
diff -u llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.78 
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.79
--- llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.78Sat Nov 11 04:21:58 2006
+++ llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp Sat Nov 11 13:05:28 2006
@@ -636,7 +636,7 @@
   // Add the size of R1 to  NumBytes size for the store of R1 to the bottom
   // of the stack and round the size to a multiple of the alignment.
   unsigned Align = std::max(TargetAlign, MaxAlign);
-  unsigned GPRSize = 4;
+  unsigned GPRSize = Subtarget.isPPC64() ? 8 : 4;
   unsigned Size = HasFP ? GPRSize + GPRSize : GPRSize;
   NumBytes = (NumBytes+Size+Align-1)/Align*Align;
 
@@ -646,24 +646,47 @@
 
   // Adjust stack pointer: r1 -= numbytes.
   // If there is a preferred stack alignment, align R1 now
-  if (MaxAlign  TargetAlign) {
-assert(isPowerOf2_32(MaxAlign)  MaxAlign  32767  Invalid 
alignment!);
-assert(isInt16(0-NumBytes)  Unhandled stack size and alignment!);
-BuildMI(MBB, MBBI, PPC::RLWINM, 4, PPC::R0)
-  .addReg(PPC::R1).addImm(0).addImm(32-Log2_32(MaxAlign)).addImm(31);
-BuildMI(MBB, MBBI, PPC::SUBFIC,2,PPC::R0).addReg(PPC::R0)
-  .addImm(0-NumBytes);
-BuildMI(MBB, MBBI, PPC::STWUX, 3)
-  .addReg(PPC::R1).addReg(PPC::R1).addReg(PPC::R0);
-  } else if (NumBytes = 32768) {
-BuildMI(MBB, MBBI, PPC::STWU, 3).addReg(PPC::R1).addImm(NegNumbytes)
-  .addReg(PPC::R1);
-  } else {
-BuildMI(MBB, MBBI, PPC::LIS, 1, PPC::R0).addImm(NegNumbytes  16);
-BuildMI(MBB, MBBI, PPC::ORI, 2, PPC::R0).addReg(PPC::R0)
-  .addImm(NegNumbytes  0x);
-BuildMI(MBB, MBBI, PPC::STWUX, 3).addReg(PPC::R1).addReg(PPC::R1)
-  .addReg(PPC::R0);
+  if (!Subtarget.isPPC64()) {
+// PPC32.
+if (MaxAlign  TargetAlign) {
+  assert(isPowerOf2_32(MaxAlign)  MaxAlign  32767Invalid 
alignment!);
+  assert(isInt16(0-NumBytes)  Unhandled stack size and alignment!);
+  BuildMI(MBB, MBBI, PPC::RLWINM, 4, PPC::R0)
+.addReg(PPC::R1).addImm(0).addImm(32-Log2_32(MaxAlign)).addImm(31);
+  BuildMI(MBB, MBBI, PPC::SUBFIC,2,PPC::R0).addReg(PPC::R0)
+.addImm(0-NumBytes);
+  BuildMI(MBB, MBBI, PPC::STWUX, 3)
+.addReg(PPC::R1).addReg(PPC::R1).addReg(PPC::R0);
+} else if (NumBytes = 32768) {
+  BuildMI(MBB, MBBI, PPC::STWU, 3).addReg(PPC::R1).addImm(NegNumbytes)
+.addReg(PPC::R1);
+} else {
+  BuildMI(MBB, MBBI, PPC::LIS, 1, PPC::R0).addImm(NegNumbytes  16);
+  BuildMI(MBB, MBBI, PPC::ORI, 2, PPC::R0).addReg(PPC::R0)
+.addImm(NegNumbytes  0x);
+  BuildMI(MBB, MBBI, PPC::STWUX, 3).addReg(PPC::R1).addReg(PPC::R1)
+.addReg(PPC::R0);
+}
+  } else {// PPC64.
+if (MaxAlign  TargetAlign) {
+  assert(isPowerOf2_32(MaxAlign)  MaxAlign  32767Invalid 
alignment!);
+  assert(isInt16(0-NumBytes)  Unhandled stack size and alignment!);
+  BuildMI(MBB, MBBI, PPC::RLDICL, 3, PPC::X0)
+.addReg(PPC::X1).addImm(0).addImm(64-Log2_32(MaxAlign));
+  BuildMI(MBB, MBBI, PPC::SUBFIC8, 2, PPC::X0).addReg(PPC::X0)
+.addImm(0-NumBytes);
+  BuildMI(MBB, MBBI, PPC::STDUX, 3)
+.addReg(PPC::X1).addReg(PPC::X1).addReg(PPC::X0);
+} else if (NumBytes = 32768*4) {
+  BuildMI(MBB, MBBI, PPC::STDU, 3).addReg(PPC::X1).addImm(NegNumbytes/4)
+ .addReg(PPC::X1);
+} else {
+  BuildMI(MBB, MBBI, PPC::LIS8, 1, PPC::X0).addImm(NegNumbytes  16);
+  BuildMI(MBB, MBBI, PPC::ORI8, 2, PPC::X0).addReg(PPC::X0)
+  

[llvm-commits] CVS: llvm/tools/llvm-ld/llvm-ld.cpp

2006-11-11 Thread Reid Spencer


Changes in directory llvm/tools/llvm-ld:

llvm-ld.cpp updated: 1.41 - 1.42
---
Log message:

Minor style fixes from review.


---
Diffs of the changes:  (+3 -3)

 llvm-ld.cpp |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)


Index: llvm/tools/llvm-ld/llvm-ld.cpp
diff -u llvm/tools/llvm-ld/llvm-ld.cpp:1.41 llvm/tools/llvm-ld/llvm-ld.cpp:1.42
--- llvm/tools/llvm-ld/llvm-ld.cpp:1.41 Sat Nov 11 05:54:25 2006
+++ llvm/tools/llvm-ld/llvm-ld.cpp  Sat Nov 11 13:59:25 2006
@@ -326,10 +326,10 @@
   for (unsigned index = 0; index  LinkItems.size(); index++)
 if (LinkItems[index].first != crtend) {
   if (LinkItems[index].second) {
-   std::string lib_name = -l + LinkItems[index].first;
-   args.push_back(lib_name.c_str());
+std::string lib_name = -l + LinkItems[index].first;
+args.push_back(lib_name.c_str());
   } else
-   args.push_back(LinkItems[index].first.c_str());
+args.push_back(LinkItems[index].first.c_str());
 }
 
   args.push_back(0);



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/bugpoint/Miscompilation.cpp

2006-11-11 Thread Reid Spencer


Changes in directory llvm/tools/bugpoint:

Miscompilation.cpp updated: 1.79 - 1.80
---
Log message:

Minor style fixes from review.


---
Diffs of the changes:  (+2 -3)

 Miscompilation.cpp |5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)


Index: llvm/tools/bugpoint/Miscompilation.cpp
diff -u llvm/tools/bugpoint/Miscompilation.cpp:1.79 
llvm/tools/bugpoint/Miscompilation.cpp:1.80
--- llvm/tools/bugpoint/Miscompilation.cpp:1.79 Sat Nov 11 13:05:02 2006
+++ llvm/tools/bugpoint/Miscompilation.cpp  Sat Nov 11 13:59:25 2006
@@ -518,9 +518,8 @@
   // See if we can rip any loops out of the miscompiled functions and still
   // trigger the problem.
 
-  if (!DisableLoopExtraction)
-if (!BugpointIsInterrupted  
-ExtractLoops(BD, TestFn, MiscompiledFunctions)) {
+  if (!BugpointIsInterrupted  !DisableLoopExtraction 
+  ExtractLoops(BD, TestFn, MiscompiledFunctions)) {
 // Okay, we extracted some loops and the problem still appears.  See if we
 // can eliminate some of the created functions from being candidates.
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/Linker.h

2006-11-11 Thread Reid Spencer


Changes in directory llvm/include/llvm:

Linker.h updated: 1.20 - 1.21
---
Log message:

Minor style fixes from review.


---
Diffs of the changes:  (+3 -1)

 Linker.h |4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)


Index: llvm/include/llvm/Linker.h
diff -u llvm/include/llvm/Linker.h:1.20 llvm/include/llvm/Linker.h:1.21
--- llvm/include/llvm/Linker.h:1.20 Sat Nov 11 05:54:25 2006
+++ llvm/include/llvm/Linker.h  Sat Nov 11 13:59:25 2006
@@ -241,7 +241,9 @@
 bool LinkInModule(
   Module* Src,  /// Module linked into \p Dest
   std::string* ErrorMsg = 0 /// Error/diagnostic string
-) { return LinkModules(Composite, Src, ErrorMsg ); }
+) { 
+  return LinkModules(Composite, Src, ErrorMsg ); 
+}
 
 /// This is the heart of the linker. This method will take unconditional
 /// control of the \p Src module and link it into the \p Dest module. The



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

2006-11-11 Thread Reid Spencer


Changes in directory llvm/lib/CodeGen/SelectionDAG:

SelectionDAG.cpp updated: 1.372 - 1.373
---
Log message:

Make an assert comment match the tested assertion.


---
Diffs of the changes:  (+1 -1)

 SelectionDAG.cpp |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.372 
llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.373
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.372Thu Nov  9 
11:54:19 2006
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp  Sat Nov 11 14:07:59 2006
@@ -1130,7 +1130,7 @@
   case ISD::BIT_CONVERT:
 // Basic sanity checking.
 assert(MVT::getSizeInBits(VT) == MVT::getSizeInBits(Operand.getValueType())
-Cannot BIT_CONVERT between two different types!);
+Cannot BIT_CONVERT between types of different sizes!);
 if (VT == Operand.getValueType()) return Operand;  // noop conversion.
 if (OpOpcode == ISD::BIT_CONVERT)  // bitconv(bitconv(x)) - bitconv(x)
   return getNode(ISD::BIT_CONVERT, VT, Operand.getOperand(0));



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Linker/LinkArchives.cpp

2006-11-11 Thread Reid Spencer


Changes in directory llvm/lib/Linker:

LinkArchives.cpp updated: 1.53 - 1.54
---
Log message:

Remvoe a do-nothing else block.


---
Diffs of the changes:  (+1 -6)

 LinkArchives.cpp |7 +--
 1 files changed, 1 insertion(+), 6 deletions(-)


Index: llvm/lib/Linker/LinkArchives.cpp
diff -u llvm/lib/Linker/LinkArchives.cpp:1.53 
llvm/lib/Linker/LinkArchives.cpp:1.54
--- llvm/lib/Linker/LinkArchives.cpp:1.53   Sat Nov 11 05:54:25 2006
+++ llvm/lib/Linker/LinkArchives.cppSat Nov 11 14:27:49 2006
@@ -165,12 +165,7 @@
   return error(Cannot link in module ' +
aModule-getModuleIdentifier() + ':  + 
moduleErrorMsg);
 }
-  } else {
-   // (scottm) NOTE: For some reason, Modules.empty() isn't entirely 
-// accurrate, least with gcc 4.1.2 on Debian and doesn't return true 
-// when it ought.  Consequently, aModule can be NULL -- ignore it for 
-// the time being, since it seems relatively benign.
-  }
+  } 
 }
 
 // Get the undefined symbols from the aggregate module. This recomputes the



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/docs/LangRef.html

2006-11-11 Thread Reid Spencer


Changes in directory llvm/docs:

LangRef.html updated: 1.168 - 1.169
---
Log message:

Add a preview of two new conversion operators: ptrtoint and inttoptr. Update
the defintion of bitconvert correspondingly.


---
Diffs of the changes:  (+80 -5)

 LangRef.html |   85 +++
 1 files changed, 80 insertions(+), 5 deletions(-)


Index: llvm/docs/LangRef.html
diff -u llvm/docs/LangRef.html:1.168 llvm/docs/LangRef.html:1.169
--- llvm/docs/LangRef.html:1.168Thu Nov  9 17:03:26 2006
+++ llvm/docs/LangRef.html  Sat Nov 11 15:00:47 2006
@@ -124,6 +124,8 @@
   lia href=#i_fptosi'ttfptosi .. to/tt' Instruction/a/li
   lia href=#i_uitofp'ttuitofp .. to/tt' Instruction/a/li
   lia href=#i_sitofp'ttsitofp .. to/tt' Instruction/a/li
+  lia href=#i_ptrtoint'ttptrtoint .. to/tt' 
Instruction/a/li
+  lia href=#i_inttoptr'ttinttoptr .. to/tt' 
Instruction/a/li
   lia href=#i_bitconvert'ttbitconvert .. to/tt' 
Instruction/a/li
 /ol
   lia href=#otheropsOther Operations/a
@@ -2955,6 +2957,77 @@
 
 !-- ___ 
--
 div class=doc_subsubsection
+   a name=i_ptrtoint'ttptrtoint .. to/tt' Instruction/a
+/div
+div class=doc_text
+
+h5Syntax:/h5
+pre
+  lt;resultgt; = ptrtoint lt;tygt; lt;valuegt; to lt;ty2gt;
 i; yields ty2/i
+/pre
+
+h5Overview:/h5
+pThe 'ttptrtoint/tt' instruction converts the pointer ttvalue/tt to 
+the integer type ttty2/tt./p
+
+h5Arguments:/h5
+pThe 'ttptrtoint/tt' instruction takes a ttvalue/tt to cast, which 
+must be a a href=t_pointerpointer/a value, and a type to cast it to
+ttty2/tt, which must be an a href=#t_integerinteger/a type. 
+
+h5Semantics:/h5
+pThe 'ttptrtoint/tt' instruction converts ttvalue/tt to integer type
+ttty2/tt by interpreting the pointer value as an integer and either 
+truncating or zero extending that value to the size of the integer type. If
+ttvalue/tt is smaller than ttty2/tt then a zero extension is done. If
+ttvalue/tt is larger than ttty2/tt then a truncation is done. If they
+are the same size, then nothing is done (ino-op cast/i)./p
+
+h5Example:/h5
+pre
+  %X = ptrtoint int* %X to sbyte  i; yields truncation on 32-bit/i
+  %Y = ptrtoint int* %x to ulong  i; yields zero extend on 32-bit/i
+/pre
+/div
+
+!-- ___ 
--
+div class=doc_subsubsection
+   a name=i_inttoptr'ttinttoptr .. to/tt' Instruction/a
+/div
+div class=doc_text
+
+h5Syntax:/h5
+pre
+  lt;resultgt; = inttoptr lt;tygt; lt;valuegt; to lt;ty2gt;
 i; yields ty2/i
+/pre
+
+h5Overview:/h5
+pThe 'ttinttoptr/tt' instruction converts an integer ttvalue/tt to 
+a pointer type, ttty2/tt./p
+
+h5Arguments:/h5
+pThe 'ttinttoptr/tt' instruction takes an a href=i_integerinteger/a
+value to cast, and a type to cast it to, which must be a 
+a href=#t_pointerpointer/a type. /tt
+
+h5Semantics:/h5
+pThe 'ttinttoptr/tt' instruction converts ttvalue/tt to type
+ttty2/tt by applying either a zero extension or a truncation depending on
+the size of the integer ttvalue/tt. If ttvalue/tt is larger than the
+size of a pointer then a truncation is done. If ttvalue/tt is smaller than
+the size of a pointer then a zero extension is done. If they are the same size,
+nothing is done (ino-op cast/i)./p
+
+h5Example:/h5
+pre
+  %X = inttoptr int 255 to int*i; yields zero extend on 
64-bit/i
+  %X = inttoptr int 255 to int*i; yields no-op on 32-bit /i
+  %Y = inttoptr short 0 to int*i; yields zero extend on 
32-bit/i
+/pre
+/div
+
+!-- ___ 
--
+div class=doc_subsubsection
a name=i_bitconvert'ttbitconvert .. to/tt' Instruction/a
 /div
 div class=doc_text
@@ -2976,10 +3049,12 @@
 
 h5Semantics:/h5
 pThe 'ttbitconvert/tt' instruction converts ttvalue/tt to type
-ttty2/tt as if the value had been stored to memory and read back as type
-ttty2/tt. That is, no bits are changed during the conversion. The
-ttbitconvert/tt instruction is the only conversion instruction that permits
-ino-op casts/i to be constructed./p
+ttty2/tt. It is always a ino-op cast/i because no bits change with 
+this conversion.  The conversion is done as if the ttvalue/tt had been 
+stored to memory and read back as type ttty2/tt. Pointer types may only be
+converted to other pointer types with this instruction. To convert pointers to 
+other types, use the a href=#i_inttoptrinttoptr/a or 
+a href=#i_ptrtointptrtoint/a instructions first./p
 
 h5Example:/h5
 pre
@@ -4224,7 +4299,7 @@
 
   a href=mailto:[EMAIL PROTECTED]Chris Lattner/abr
   a href=http://llvm.org;The LLVM Compiler Infrastructure/abr
-  Last modified: $Date: 2006/11/09 23:03:26 $
+  Last modified: $Date: 2006/11/11 21:00:47 $
 /address
 /body
 /html



___
llvm-commits 

[llvm-commits] CVS: llvm/test/Regression/DebugInfo/2006-11-06-StackTrace.cpp

2006-11-11 Thread Jim Laskey


Changes in directory llvm/test/Regression/DebugInfo:

2006-11-06-StackTrace.cpp updated: 1.8 - 1.9
---
Log message:

XFAIL All but powerpc

---
Diffs of the changes:  (+1 -1)

 2006-11-06-StackTrace.cpp |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm/test/Regression/DebugInfo/2006-11-06-StackTrace.cpp
diff -u llvm/test/Regression/DebugInfo/2006-11-06-StackTrace.cpp:1.8 
llvm/test/Regression/DebugInfo/2006-11-06-StackTrace.cpp:1.9
--- llvm/test/Regression/DebugInfo/2006-11-06-StackTrace.cpp:1.8Sat Nov 
11 04:22:56 2006
+++ llvm/test/Regression/DebugInfo/2006-11-06-StackTrace.cppSat Nov 11 
16:14:46 2006
@@ -6,7 +6,7 @@
 // RUN: ( echo break DeepStack::deepest; echo run 17 ; echo where )  
Output/StackTrace.gdbin 
 // RUN: gdb -q -batch -n -x Output/StackTrace.gdbin Output/StackTrace.exe | 
tee Output/StackTrace.out | grep '#0  DeepStack::deepest.*(this=.*,.*x=33)'
 // RUN: gdb -q -batch -n -x Output/StackTrace.gdbin Output/StackTrace.exe | 
grep '#7  0x.* in main.*(argc=[12],.*argv=.*)'
-// XFAIL: i[1-9]86
+// XFAIL: i[1-9]86|alpha|ia64|arm
 
 #include stdlib.h
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp

2006-11-11 Thread Jim Laskey


Changes in directory llvm/lib/Target/PowerPC:

PPCRegisterInfo.cpp updated: 1.79 - 1.80
---
Log message:

Make sure stack link is set in 64-bit.

---
Diffs of the changes:  (+9 -3)

 PPCRegisterInfo.cpp |   12 +---
 1 files changed, 9 insertions(+), 3 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
diff -u llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.79 
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.80
--- llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.79Sat Nov 11 13:05:28 2006
+++ llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp Sat Nov 11 16:22:07 2006
@@ -396,9 +396,15 @@
 
   // Replace the pseudo instruction with a new instruction...
   if (Old-getOpcode() == PPC::ADJCALLSTACKDOWN) {
-BuildMI(MBB, I, PPC::LWZ, 2, PPC::R0).addImm(0).addReg(PPC::R31);
-BuildMI(MBB, I, PPC::STWU, 3)
-   
.addReg(PPC::R0).addImm(-Amount).addReg(PPC::R1);
+if (!Subtarget.isPPC64()) {
+  BuildMI(MBB, I, PPC::LWZ, 2, PPC::R0).addImm(0).addReg(PPC::R31);
+  BuildMI(MBB, I, PPC::STWU, 3)
+  .addReg(PPC::R0).addImm(-Amount).addReg(PPC::R1);
+} else {
+  BuildMI(MBB, I, PPC::LD, 2, PPC::X0).addImm(0).addReg(PPC::X31);
+  BuildMI(MBB, I, PPC::STDU, 3)
+  .addReg(PPC::X0).addImm(-Amount/4).addReg(PPC::X1);
+}
   } else {
 assert(Old-getOpcode() == PPC::ADJCALLSTACKUP);
 BuildMI(MBB, I, PPC::ADDI, 2, PPC::R1).addReg(PPC::R1).addImm(Amount);



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/Instruction.def

2006-11-11 Thread Reid Spencer


Changes in directory llvm/include/llvm:

Instruction.def updated: 1.22 - 1.23
---
Log message:

Document new constant expr operators, rename bitconvert as bitcast.


---
Diffs of the changes:  (+49 -15)

 Instruction.def |   64 ++--
 1 files changed, 49 insertions(+), 15 deletions(-)


Index: llvm/include/llvm/Instruction.def
diff -u llvm/include/llvm/Instruction.def:1.22 
llvm/include/llvm/Instruction.def:1.23
--- llvm/include/llvm/Instruction.def:1.22  Wed Nov  8 00:47:32 2006
+++ llvm/include/llvm/Instruction.def   Sat Nov 11 16:34:59 2006
@@ -60,6 +60,20 @@
 #define LAST_MEMORY_INST(num)
 #endif
 
+#ifndef FIRST_CONVERT_INST
+#define FIRST_CONVERT_INST(num)
+#endif
+#ifndef HANDLE_CONVERT_INST
+#ifndef HANDLE_INST
+#define HANDLE_CONVERT_INST(num, opcode, Class)
+#else
+#define HANDLE_CONVERT_INST(num, opcode, Class) HANDLE_INST(num, opcode, Class)
+#endif
+#endif
+#ifndef LAST_CONVERT_INST
+#define LAST_CONVERT_INST(num)
+#endif
+
 #ifndef FIRST_OTHER_INST
 #define FIRST_OTHER_INST(num)
 #endif
@@ -124,22 +138,38 @@
 HANDLE_MEMORY_INST(30, GetElementPtr, GetElementPtrInst)
   LAST_MEMORY_INST(30)
 
+// Conversion operators ...
+// NOTE: The order matters here, see InstCombine (isEliminableCastOfCast)
+ FIRST_CONVERT_INST(31)
+HANDLE_CONVERT_INST(31, Trunc   , ConvertInst )  // Truncate integers
+HANDLE_CONVERT_INST(32, ZExt, ConvertInst )  // Zero extend integers
+HANDLE_CONVERT_INST(33, SExt, ConvertInst )  // Sign extend integers
+HANDLE_CONVERT_INST(34, FPToUI  , ConvertInst )  // floating point - UInt
+HANDLE_CONVERT_INST(35, FPToSI  , ConvertInst )  // floating point - SInt
+HANDLE_CONVERT_INST(36, UIToFP  , ConvertInst )  // UInt - floating point
+HANDLE_CONVERT_INST(37, SIToFP  , ConvertInst )  // SInt - floating point
+HANDLE_CONVERT_INST(38, FPTrunc , ConvertInst )  // Truncate floating point
+HANDLE_CONVERT_INST(39, FPExt   , ConvertInst )  // Extend floating point
+HANDLE_CONVERT_INST(40, IntToPtr, ConvertInst )  // Integer - Pointer
+HANDLE_CONVERT_INST(41, PtrToInt, ConvertInst )  // Pointer - Integer
+HANDLE_CONVERT_INST(42, BitCast , ConvertInst )  // Type cast
+  LAST_CONVERT_INST(42)
+
 // Other operators...
- FIRST_OTHER_INST(31)
-HANDLE_OTHER_INST(31, PHI, PHINode)  // PHI node instruction
-HANDLE_OTHER_INST(32, Cast   , CastInst   )  // Type cast
-HANDLE_OTHER_INST(33, Call   , CallInst   )  // Call a function
-HANDLE_OTHER_INST(34, Shl, ShiftInst  )  // Shift Left operations (logical)
-HANDLE_OTHER_INST(35, LShr   , ShiftInst  )  // Logical Shift right (unsigned) 
-HANDLE_OTHER_INST(36, AShr   , ShiftInst  )  // Arithmetic shift right (signed)
-HANDLE_OTHER_INST(37, Select , SelectInst )  // select instruction
-HANDLE_OTHER_INST(38, UserOp1, Instruction)  // May be used internally in a 
pass
-HANDLE_OTHER_INST(39, UserOp2, Instruction)  // Internal to passes only
-HANDLE_OTHER_INST(40, VAArg  , VAArgInst  )  // vaarg instruction
-HANDLE_OTHER_INST(41, ExtractElement, ExtractElementInst)// extract from 
vector.
-HANDLE_OTHER_INST(42, InsertElement, InsertElementInst)  // insert into vector
-HANDLE_OTHER_INST(43, ShuffleVector, ShuffleVectorInst)  // shuffle two 
vectors.
-  LAST_OTHER_INST(43)
+ FIRST_OTHER_INST(43)
+HANDLE_OTHER_INST(43, PHI, PHINode)  // PHI node instruction
+HANDLE_OTHER_INST(44, Call   , CallInst   )  // Call a function
+HANDLE_OTHER_INST(45, Shl, ShiftInst  )  // Shift Left operations (logical)
+HANDLE_OTHER_INST(46, LShr   , ShiftInst  )  // Logical Shift right (unsigned) 
+HANDLE_OTHER_INST(47, AShr   , ShiftInst  )  // Arithmetic shift right (signed)
+HANDLE_OTHER_INST(48, Select , SelectInst )  // select instruction
+HANDLE_OTHER_INST(49, UserOp1, Instruction)  // May be used internally in a 
pass
+HANDLE_OTHER_INST(50, UserOp2, Instruction)  // Internal to passes only
+HANDLE_OTHER_INST(51, VAArg  , VAArgInst  )  // vaarg instruction
+HANDLE_OTHER_INST(52, ExtractElement, ExtractElementInst)// extract from 
vector.
+HANDLE_OTHER_INST(53, InsertElement, InsertElementInst)  // insert into vector
+HANDLE_OTHER_INST(54, ShuffleVector, ShuffleVectorInst)  // shuffle two 
vectors.
+  LAST_OTHER_INST(54)
 
 #undef  FIRST_TERM_INST
 #undef HANDLE_TERM_INST
@@ -153,6 +183,10 @@
 #undef HANDLE_MEMORY_INST
 #undef   LAST_MEMORY_INST
 
+#undef  FIRST_CONVERT_INST
+#undef HANDLE_CONVERT_INST
+#undef   LAST_CONVERT_INST
+
 #undef  FIRST_OTHER_INST
 #undef HANDLE_OTHER_INST
 #undef   LAST_OTHER_INST



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/docs/LangRef.html

2006-11-11 Thread Reid Spencer


Changes in directory llvm/docs:

LangRef.html updated: 1.169 - 1.170
---
Log message:

Document new constant expr operators, rename bitconvert as bitcast.


---
Diffs of the changes:  (+30 -16)

 LangRef.html |   46 ++
 1 files changed, 30 insertions(+), 16 deletions(-)


Index: llvm/docs/LangRef.html
diff -u llvm/docs/LangRef.html:1.169 llvm/docs/LangRef.html:1.170
--- llvm/docs/LangRef.html:1.169Sat Nov 11 15:00:47 2006
+++ llvm/docs/LangRef.html  Sat Nov 11 17:08:07 2006
@@ -126,7 +126,7 @@
   lia href=#i_sitofp'ttsitofp .. to/tt' Instruction/a/li
   lia href=#i_ptrtoint'ttptrtoint .. to/tt' 
Instruction/a/li
   lia href=#i_inttoptr'ttinttoptr .. to/tt' 
Instruction/a/li
-  lia href=#i_bitconvert'ttbitconvert .. to/tt' 
Instruction/a/li
+  lia href=#i_bitcast'ttbitcast .. to/tt' 
Instruction/a/li
 /ol
   lia href=#otheropsOther Operations/a
 ol
@@ -290,9 +290,10 @@
 variable without having to avoid symbol table conflicts./p
 
 pReserved words in LLVM are very similar to reserved words in other
-languages. There are keywords for different opcodes ('tta
-href=#i_addadd/a/tt', 'tta href=#i_castcast/a/tt', 'tta
-href=#i_retret/a/tt', etc...), for primitive type names ('tta
+languages. There are keywords for different opcodes 
+('tta href=#i_addadd/a/tt', 
+ 'tta href=#i_bitcastbitcast/a/tt', 
+ 'tta href=#i_retret/a/tt', etc...), for primitive type names 
('tta
 href=#t_voidvoid/a/tt', 'tta href=#t_uintuint/a/tt', etc...),
 and others.  These reserved words cannot conflict with variable names, because
 none of them start with a '%' character./p
@@ -1223,12 +1224,24 @@
   constant. TYPE must be floating point. CST must be of integer type. If the
   value won't fit in the floating point type, the results are undefined./dd
 
-  dtbttbitconvert ( CST to TYPE )/tt/b/dt
+  dtbttptrtoint ( CST to TYPE )/tt/b/dt
+  ddConvert a pointer typed constant to the corresponding integer constant
+  TYPE must be an integer type. CST must be of pointer type. The CST value is
+  zero extended, truncated, or unchanged to make it fit in TYPE./dd
+
+  dtbttinttoptr ( CST to TYPE )/tt/b/dt
+  ddConvert a integer constant to a pointer constant.  TYPE must be a
+  pointer type.  CST must be of integer type. The CST value is zero extended, 
+  truncated, or unchanged to make it fit in a pointer size. This one is 
+  ireally/i dangerous!/dd
+
+  dtbttbitcast ( CST to TYPE )/tt/b/dt
   ddConvert a constant, CST, to another TYPE. The size of CST and TYPE must 
be
   identical (same number of bits). The conversion is done as if the CST value
   was stored to memory and read back as TYPE. In other words, no bits change 
-  with this operator, just the type.  This can be used for conversion of 
pointer
-  and packed types to any other type, as long as they have the same bit width.
+  with this operator, just the type.  This can be used for conversion of
+  packed types to any other type, as long as they have the same bit width. For
+  pointers it is only valid to cast to another pointer type.
   /dd
 
   dtbttgetelementptr ( CSTPTR, IDX0, IDX1, ... )/tt/b/dt
@@ -2801,7 +2814,7 @@
 a href=t_floatingfloating point/a type to a larger 
 a href=t_floatingfloating point/a type. The ttfpext/tt cannot be 
 used to make a ino-op cast/i because it always changes bits. Use 
-ttbitconvert/tt to make a ino-op cast/i for a floating point cast./p
+ttbitcast/tt to make a ino-op cast/i for a floating point cast./p
 
 h5Example:/h5
 pre
@@ -3028,27 +3041,27 @@
 
 !-- ___ 
--
 div class=doc_subsubsection
-   a name=i_bitconvert'ttbitconvert .. to/tt' Instruction/a
+   a name=i_bitcast'ttbitcast .. to/tt' Instruction/a
 /div
 div class=doc_text
 
 h5Syntax:/h5
 pre
-  lt;resultgt; = bitconvert lt;tygt; lt;valuegt; to lt;ty2gt;  
   i; yields ty2/i
+  lt;resultgt; = bitcast lt;tygt; lt;valuegt; to lt;ty2gt; 
i; yields ty2/i
 /pre
 
 h5Overview:/h5
-pThe 'ttbitconvert/tt' instruction converts ttvalue/tt to type
+pThe 'ttbitcast/tt' instruction converts ttvalue/tt to type
 ttty2/tt without changing any bits./p
 
 h5Arguments:/h5
-pThe 'ttbitconvert/tt' instruction takes a value to cast, which must be 
+pThe 'ttbitcast/tt' instruction takes a value to cast, which must be 
 a first class value, and a type to cast it to, which must also be a a
   href=#t_firstclassfirst class/a type. The bit sizes of ttvalue/tt
 and the destination type, ttty2/tt, must be identical./p
 
 h5Semantics:/h5
-pThe 'ttbitconvert/tt' instruction converts ttvalue/tt to type
+pThe 'ttbitcast/tt' instruction converts ttvalue/tt to type
 ttty2/tt. It is always a ino-op cast/i because no bits change with 
 this conversion.  The conversion is done as if the ttvalue/tt had been 
 stored to memory and read back as type ttty2/tt. Pointer types may only be
@@ -3058,8 +3071,9 @@
 
 h5Example:/h5