Revert "Eliminate bitfield enum members."
This reverts commit 56702e6d60883f2d1e33641b907680a852cdb15a.
diff --git a/src/compiler/Intermediate.cpp b/src/compiler/Intermediate.cpp
index a25fc08..21098f0 100644
--- a/src/compiler/Intermediate.cpp
+++ b/src/compiler/Intermediate.cpp
@@ -1262,12 +1262,12 @@
return 0;
}
- const char leftCols = getCols();
- const char leftRows = getRows();
- const char rightCols = constantNode->getType().getCols();
- const char rightRows = constantNode->getType().getRows();
- const char resultCols = rightCols;
- const char resultRows = leftRows;
+ const int leftCols = getCols();
+ const int leftRows = getRows();
+ const int rightCols = constantNode->getType().getCols();
+ const int rightRows = constantNode->getType().getRows();
+ const int resultCols = rightCols;
+ const int resultRows = leftRows;
tempConstArray = new ConstantUnion[resultCols*resultRows];
for (int row = 0; row < resultRows; row++)
@@ -1347,8 +1347,8 @@
return 0;
}
- const char matrixCols = getCols();
- const char matrixRows = getRows();
+ const int matrixCols = getCols();
+ const int matrixRows = getRows();
tempConstArray = new ConstantUnion[matrixRows];
@@ -1378,8 +1378,8 @@
return 0;
}
- const char matrixCols = constantNode->getType().getCols();
- const char matrixRows = constantNode->getType().getRows();
+ const int matrixCols = constantNode->getType().getCols();
+ const int matrixRows = constantNode->getType().getRows();
tempConstArray = new ConstantUnion[matrixCols];
diff --git a/src/compiler/Types.h b/src/compiler/Types.h
index c0eccbf..c71a053 100644
--- a/src/compiler/Types.h
+++ b/src/compiler/Types.h
@@ -140,7 +140,7 @@
public:
POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
TType() {}
- TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary, char ps = 1, char ss = 1, bool a = false) :
+ TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary, int ps = 1, int ss = 1, bool a = false) :
type(t), precision(p), qualifier(q), primarySize(ps), secondarySize(ss), array(a), layoutQualifier(TLayoutQualifier::create()), arraySize(0),
interfaceBlock(0), structure(0)
{
@@ -169,12 +169,12 @@
TLayoutQualifier getLayoutQualifier() const { return layoutQualifier; }
void setLayoutQualifier(TLayoutQualifier lq) { layoutQualifier = lq; }
- char getNominalSize() const { return primarySize; }
- char getSecondarySize() const { return secondarySize; }
- char getCols() const { ASSERT(isMatrix()); return primarySize; }
- char getRows() const { ASSERT(isMatrix()); return secondarySize; }
- void setPrimarySize(char ps) { primarySize = ps; }
- void setSecondarySize(char ss) { secondarySize = ss; }
+ int getNominalSize() const { return primarySize; }
+ int getSecondarySize() const { return secondarySize; }
+ int getCols() const { ASSERT(isMatrix()); return primarySize; }
+ int getRows() const { ASSERT(isMatrix()); return secondarySize; }
+ void setPrimarySize(int ps) { primarySize = ps; }
+ void setSecondarySize(int ss) { secondarySize = ss; }
// Full size of single instance of type
size_t getObjectSize() const;
@@ -258,18 +258,18 @@
return structure ? structure->containsArrays() : false;
}
-private:
+protected:
TString buildMangledName() const;
size_t getStructSize() const;
void computeDeepestStructNesting();
- TBasicType type;
- TPrecision precision;
- TQualifier qualifier;
+ TBasicType type : 6;
+ TPrecision precision : 4;
+ TQualifier qualifier : 7;
+ unsigned int array : 1;
TLayoutQualifier layoutQualifier;
- char primarySize; // size of vector or cols matrix
- char secondarySize; // rows of a matrix
- bool array;
+ int primarySize; // size of vector or cols matrix
+ int secondarySize; // rows of a matrix
int arraySize;
// 0 unless this is an interface block, or interface block member variable
@@ -296,8 +296,8 @@
TLayoutQualifier layoutQualifier;
TQualifier qualifier;
TPrecision precision;
- char primarySize; // size of vector or cols of matrix
- char secondarySize; // rows of matrix
+ int primarySize; // size of vector or cols of matrix
+ int secondarySize; // rows of matrix
bool array;
int arraySize;
TType* userDef;
@@ -317,12 +317,12 @@
line = ln;
}
- void setAggregate(char size)
+ void setAggregate(int size)
{
primarySize = size;
}
- void setMatrix(char c, char r)
+ void setMatrix(int c, int r)
{
ASSERT(c > 1 && r > 1 && c <= 4 && r <= 4);
primarySize = c;
@@ -355,19 +355,19 @@
return primarySize > 1 && secondarySize == 1;
}
- char getCols() const
+ int getCols() const
{
ASSERT(isMatrix());
return primarySize;
}
- char getRows() const
+ int getRows() const
{
ASSERT(isMatrix());
return secondarySize;
}
- char getNominalSize() const
+ int getNominalSize() const
{
return primarySize;
}
diff --git a/src/compiler/intermediate.h b/src/compiler/intermediate.h
index fa5256a..17571bd 100644
--- a/src/compiler/intermediate.h
+++ b/src/compiler/intermediate.h
@@ -266,10 +266,10 @@
TBasicType getBasicType() const { return type.getBasicType(); }
TQualifier getQualifier() const { return type.getQualifier(); }
TPrecision getPrecision() const { return type.getPrecision(); }
- char getCols() const { return type.getCols(); }
- char getRows() const { return type.getRows(); }
- char getNominalSize() const { return type.getNominalSize(); }
- char getSecondarySize() const { return type.getSecondarySize(); }
+ int getCols() const { return type.getCols(); }
+ int getRows() const { return type.getRows(); }
+ int getNominalSize() const { return type.getNominalSize(); }
+ int getSecondarySize() const { return type.getSecondarySize(); }
bool isInterfaceBlock() const { return type.isInterfaceBlock(); }
bool isMatrix() const { return type.isMatrix(); }