Modified cast so that it converts the int to a long before casting to
[oota-llvm.git] / lib / Target / TargetMachine.cpp
index 2d0d330d8db38c4e0259ea7a3ee11ab6264ae4e3..e7630b4ab34660320601ba92ad2a373c8f397730 100644 (file)
@@ -1,14 +1,23 @@
 //===-- TargetMachine.cpp - General Target Information ---------------------==//
+// 
+//                     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 describes the general parts of a Target machine.
-// This file also implements MachineCacheInfo.
+// This file also implements TargetCacheInfo.
 //
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/MachineCacheInfo.h"
+#include "llvm/Target/TargetCacheInfo.h"
 #include "llvm/Type.h"
 
+namespace llvm {
+
 //---------------------------------------------------------------------------
 // class TargetMachine
 // 
 
 // function TargetMachine::findOptimalStorageSize 
 // 
-// Purpose:
-//   This default implementation assumes that all sub-word data items use
-//   space equal to optSizeForSubWordData, and all other primitive data
-//   items use space according to the type.
-//   
-unsigned int
-TargetMachine::findOptimalStorageSize(const Type* ty) const
-{
-  switch(ty->getPrimitiveID())
-    {
-    case Type::BoolTyID:
-    case Type::UByteTyID:
-    case Type::SByteTyID:     
-    case Type::UShortTyID:
-    case Type::ShortTyID:     
-      return optSizeForSubWordData;
-    
-    default:
-      return DataLayout.getTypeSize(ty);
-    }
+unsigned TargetMachine::findOptimalStorageSize(const Type *Ty) const {
+  // All integer types smaller than ints promote to 4 byte integers.
+  if (Ty->isIntegral() && Ty->getPrimitiveSize() < 4)
+    return 4;
+
+  return DataLayout.getTypeSize(Ty);
 }
 
 
 //---------------------------------------------------------------------------
-// class MachineCacheInfo 
+// class TargetCacheInfo 
 // 
 // Purpose:
 //   Describes properties of the target cache architecture.
 //---------------------------------------------------------------------------
 
-void MachineCacheInfo::Initialize() {
+void TargetCacheInfo::Initialize() {
   numLevels = 2;
   cacheLineSizes.push_back(16);  cacheLineSizes.push_back(32); 
   cacheSizes.push_back(1 << 15); cacheSizes.push_back(1 << 20);
   cacheAssoc.push_back(1);       cacheAssoc.push_back(4);
 }
+
+} // End llvm namespace