OSDN Git Service

This giant patch speeds up Type::isSized(). Before, this would have to search
authorChris Lattner <sabre@nondot.org>
Mon, 24 Jan 2005 02:08:34 +0000 (02:08 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 24 Jan 2005 02:08:34 +0000 (02:08 +0000)
large nested types over and over again to determine if they are sized or not.
Now, isSized() is able to make snap decisions about all concrete types, which
are a common occurance (and includes all primitives).

On 177.mesa, this speeds up DSE from 39.5s -> 21.3s and GCSE from
13.2s -> 11.3s, reducing gccas time from 80s -> 61s (this is a debug build).

DSE and GCSE are still too slow on this testcase, but this is a simple
improvement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19800 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Type.h

index 20a3d6d..2aac381 100644 (file)
@@ -201,8 +201,7 @@ public:
   /// TargetData subsystem to do this.
   ///
   bool isSized() const {
-    return (ID >= BoolTyID && ID <= DoubleTyID) || ID == PointerTyID || 
-           isSizedDerivedType();
+    return !isAbstract() || ID == PointerTyID || isSizedDerivedType();
   }
 
   /// getPrimitiveSize - Return the basic size of this type if it is a primitive