Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: lib/Analysis/NaCl/PNaClABITypeChecker.cpp

Issue 14569012: PNaCl ABI: Promote illegal integer types (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: use upper-clear invariant rather than sign-extend Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===- PNaClABICheckTypes.h - Verify PNaCl ABI rules --------===// 1 //===- PNaClABICheckTypes.h - Verify PNaCl ABI rules --------===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // Common type-checking code for module and function-level passes 10 // Common type-checking code for module and function-level passes
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 // Derived types 46 // Derived types
47 case Type::VectorTyID: 47 case Type::VectorTyID:
48 Valid = false; 48 Valid = false;
49 break; 49 break;
50 case Type::IntegerTyID: 50 case Type::IntegerTyID:
51 // The check for integer sizes below currently does not pass on 51 // The check for integer sizes below currently does not pass on
52 // all NaCl tests because some LLVM passes introduce unusual 52 // all NaCl tests because some LLVM passes introduce unusual
53 // integer sizes. 53 // integer sizes.
54 // TODO(mseaborn): Re-enable the check when it passes. 54 // TODO(mseaborn): Re-enable the check when it passes.
55 // See https://code.google.com/p/nativeclient/issues/detail?id=3360 55 // See https://code.google.com/p/nativeclient/issues/detail?id=3360
56 Valid = true; 56 //Valid = true;
Mark Seaborn 2013/05/06 17:04:06 You'll need to undo this before committing since t
57 // Width = cast<const IntegerType>(Ty)->getBitWidth(); 57 Width = cast<const IntegerType>(Ty)->getBitWidth();
58 // Valid = (Width == 1 || Width == 8 || Width == 16 || 58 Valid = (Width == 1 || Width == 8 || Width == 16 ||
59 // Width == 32 || Width == 64); 59 Width == 32 || Width == 64);
60 break; 60 break;
61 case Type::FunctionTyID: 61 case Type::FunctionTyID:
62 case Type::StructTyID: 62 case Type::StructTyID:
63 case Type::ArrayTyID: 63 case Type::ArrayTyID:
64 case Type::PointerTyID: 64 case Type::PointerTyID:
65 // These types are valid if their contained or pointed-to types are 65 // These types are valid if their contained or pointed-to types are
66 // valid. Since struct/pointer subtype relationships may be circular, 66 // valid. Since struct/pointer subtype relationships may be circular,
67 // mark the current type as valid to avoid infinite recursion 67 // mark the current type as valid to avoid infinite recursion
68 Valid = true; 68 Valid = true;
69 VisitedTypes[Ty] = true; 69 VisitedTypes[Ty] = true;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 for (unsigned i = 0, e = N->getNumOperands(); i != e; i++) { 127 for (unsigned i = 0, e = N->getNumOperands(); i != e; i++) {
128 if (Value *Op = N->getOperand(i)) { 128 if (Value *Op = N->getOperand(i)) {
129 if (Type *Invalid = checkTypesInConstant(dyn_cast<Constant>(Op))) { 129 if (Type *Invalid = checkTypesInConstant(dyn_cast<Constant>(Op))) {
130 VisitedConstants[N] = Invalid; 130 VisitedConstants[N] = Invalid;
131 return Invalid; 131 return Invalid;
132 } 132 }
133 } 133 }
134 } 134 }
135 return NULL; 135 return NULL;
136 } 136 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698