Author: brunoricci Date: Tue Nov 13 13:33:22 2018 New Revision: 346801 URL: http://llvm.org/viewvc/llvm-project?rev=346801&view=rev Log: [AST] Revert r346793 and r346781
This somehow breaks the msan bots. Revert while I figure it out. Modified: cfe/trunk/include/clang/AST/Expr.h cfe/trunk/include/clang/AST/Stmt.h cfe/trunk/lib/AST/Expr.cpp Modified: cfe/trunk/include/clang/AST/Expr.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Expr.h?rev=346801&r1=346800&r2=346801&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/Expr.h (original) +++ cfe/trunk/include/clang/AST/Expr.h Tue Nov 13 13:33:22 2018 @@ -1876,27 +1876,27 @@ private: unsigned Opc : 5; unsigned CanOverflow : 1; SourceLocation Loc; - Stmt *Operand; - + Stmt *Val; public: - UnaryOperator(Expr *Operand, Opcode Opc, QualType Ty, ExprValueKind VK, - ExprObjectKind OK, SourceLocation Loc, bool CanOverflow) - : Expr(UnaryOperatorClass, Ty, VK, OK, - Operand->isTypeDependent() || Ty->isDependentType(), - Operand->isValueDependent(), - (Operand->isInstantiationDependent() || - Ty->isInstantiationDependentType()), - Operand->containsUnexpandedParameterPack()), - Opc(Opc), CanOverflow(CanOverflow), Loc(Loc), Operand(Operand) {} + UnaryOperator(Expr *input, Opcode opc, QualType type, ExprValueKind VK, + ExprObjectKind OK, SourceLocation l, bool CanOverflow) + : Expr(UnaryOperatorClass, type, VK, OK, + input->isTypeDependent() || type->isDependentType(), + input->isValueDependent(), + (input->isInstantiationDependent() || + type->isInstantiationDependentType()), + input->containsUnexpandedParameterPack()), + Opc(opc), CanOverflow(CanOverflow), Loc(l), Val(input) {} /// Build an empty unary operator. - explicit UnaryOperator(EmptyShell Empty) : Expr(UnaryOperatorClass, Empty) {} + explicit UnaryOperator(EmptyShell Empty) + : Expr(UnaryOperatorClass, Empty), Opc(UO_AddrOf) { } Opcode getOpcode() const { return static_cast<Opcode>(Opc); } void setOpcode(Opcode O) { Opc = O; } - Expr *getSubExpr() const { return cast<Expr>(Operand); } - void setSubExpr(Expr *E) { Operand = E; } + Expr *getSubExpr() const { return cast<Expr>(Val); } + void setSubExpr(Expr *E) { Val = E; } /// getOperatorLoc - Return the location of the operator. SourceLocation getOperatorLoc() const { return Loc; } @@ -1912,41 +1912,45 @@ public: void setCanOverflow(bool C) { CanOverflow = C; } /// isPostfix - Return true if this is a postfix operation, like x++. - static bool isPostfix(Opcode Opc) { - return Opc == UO_PostInc || Opc == UO_PostDec; + static bool isPostfix(Opcode Op) { + return Op == UO_PostInc || Op == UO_PostDec; } /// isPrefix - Return true if this is a prefix operation, like --x. - static bool isPrefix(Opcode Opc) { - return Opc == UO_PreInc || Opc == UO_PreDec; + static bool isPrefix(Opcode Op) { + return Op == UO_PreInc || Op == UO_PreDec; } bool isPrefix() const { return isPrefix(getOpcode()); } bool isPostfix() const { return isPostfix(getOpcode()); } - static bool isIncrementOp(Opcode Opc) { - return Opc == UO_PreInc || Opc == UO_PostInc; + static bool isIncrementOp(Opcode Op) { + return Op == UO_PreInc || Op == UO_PostInc; + } + bool isIncrementOp() const { + return isIncrementOp(getOpcode()); } - bool isIncrementOp() const { return isIncrementOp(getOpcode()); } - static bool isDecrementOp(Opcode Opc) { - return Opc == UO_PreDec || Opc == UO_PostDec; + static bool isDecrementOp(Opcode Op) { + return Op == UO_PreDec || Op == UO_PostDec; + } + bool isDecrementOp() const { + return isDecrementOp(getOpcode()); } - bool isDecrementOp() const { return isDecrementOp(getOpcode()); } - static bool isIncrementDecrementOp(Opcode Opc) { return Opc <= UO_PreDec; } + static bool isIncrementDecrementOp(Opcode Op) { return Op <= UO_PreDec; } bool isIncrementDecrementOp() const { return isIncrementDecrementOp(getOpcode()); } - static bool isArithmeticOp(Opcode Opc) { - return Opc >= UO_Plus && Opc <= UO_LNot; + static bool isArithmeticOp(Opcode Op) { + return Op >= UO_Plus && Op <= UO_LNot; } bool isArithmeticOp() const { return isArithmeticOp(getOpcode()); } /// getOpcodeStr - Turn an Opcode enum value into the punctuation char it /// corresponds to, e.g. "sizeof" or "[pre]++" - static StringRef getOpcodeStr(Opcode Opc); + static StringRef getOpcodeStr(Opcode Op); /// Retrieve the unary opcode that corresponds to the given /// overloaded operator. @@ -1957,21 +1961,21 @@ public: static OverloadedOperatorKind getOverloadedOperator(Opcode Opc); SourceLocation getBeginLoc() const LLVM_READONLY { - return isPostfix() ? Operand->getBeginLoc() : getOperatorLoc(); + return isPostfix() ? Val->getBeginLoc() : Loc; } SourceLocation getEndLoc() const LLVM_READONLY { - return isPostfix() ? getOperatorLoc() : Operand->getEndLoc(); + return isPostfix() ? Loc : Val->getEndLoc(); } - SourceLocation getExprLoc() const { return getOperatorLoc(); } + SourceLocation getExprLoc() const LLVM_READONLY { return Loc; } static bool classof(const Stmt *T) { return T->getStmtClass() == UnaryOperatorClass; } // Iterators - child_range children() { return child_range(&Operand, &Operand + 1); } + child_range children() { return child_range(&Val, &Val+1); } const_child_range children() const { - return const_child_range(&Operand, &Operand + 1); + return const_child_range(&Val, &Val + 1); } }; Modified: cfe/trunk/include/clang/AST/Stmt.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Stmt.h?rev=346801&r1=346800&r2=346801&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/Stmt.h (original) +++ cfe/trunk/include/clang/AST/Stmt.h Tue Nov 13 13:33:22 2018 @@ -332,20 +332,12 @@ protected: SourceLocation Loc; }; - class DeclRefExprBitfields { - friend class ASTStmtReader; // deserialization - friend class DeclRefExpr; + class CharacterLiteralBitfields { + friend class CharacterLiteral; unsigned : NumExprBits; - unsigned HasQualifier : 1; - unsigned HasTemplateKWAndArgsInfo : 1; - unsigned HasFoundDecl : 1; - unsigned HadMultipleCandidates : 1; - unsigned RefersToEnclosingVariableOrCapture : 1; - - /// The location of the declaration name itself. - SourceLocation Loc; + unsigned Kind : 3; }; enum APFloatSemantics { @@ -366,14 +358,6 @@ protected: unsigned IsExact : 1; }; - class CharacterLiteralBitfields { - friend class CharacterLiteral; - - unsigned : NumExprBits; - - unsigned Kind : 3; - }; - class UnaryExprOrTypeTraitExprBitfields { friend class UnaryExprOrTypeTraitExpr; @@ -383,12 +367,20 @@ protected: unsigned IsType : 1; // true if operand is a type, false if an expression. }; - class CallExprBitfields { - friend class CallExpr; + class DeclRefExprBitfields { + friend class ASTStmtReader; // deserialization + friend class DeclRefExpr; unsigned : NumExprBits; - unsigned NumPreArgs : 1; + unsigned HasQualifier : 1; + unsigned HasTemplateKWAndArgsInfo : 1; + unsigned HasFoundDecl : 1; + unsigned HadMultipleCandidates : 1; + unsigned RefersToEnclosingVariableOrCapture : 1; + + /// The location of the declaration name itself. + SourceLocation Loc; }; class CastExprBitfields { @@ -402,14 +394,24 @@ protected: unsigned BasePathIsEmpty : 1; }; - class InitListExprBitfields { - friend class InitListExpr; + class CallExprBitfields { + friend class CallExpr; unsigned : NumExprBits; - /// Whether this initializer list originally had a GNU array-range - /// designator in it. This is a temporary marker used by CodeGen. - unsigned HadArrayRangeDesignator : 1; + unsigned NumPreArgs : 1; + }; + + class ExprWithCleanupsBitfields { + friend class ASTStmtReader; // deserialization + friend class ExprWithCleanups; + + unsigned : NumExprBits; + + // When false, it must not have side effects. + unsigned CleanupsHaveSideEffects : 1; + + unsigned NumObjects : 32 - 1 - NumExprBits; }; class PseudoObjectExprBitfields { @@ -424,7 +426,33 @@ protected: unsigned ResultIndex : 32 - 8 - NumExprBits; }; - //===--- C++ Expression bitfields classes ---===// + class OpaqueValueExprBitfields { + friend class OpaqueValueExpr; + + unsigned : NumExprBits; + + /// The OVE is a unique semantic reference to its source expressio if this + /// bit is set to true. + unsigned IsUnique : 1; + }; + + class ObjCIndirectCopyRestoreExprBitfields { + friend class ObjCIndirectCopyRestoreExpr; + + unsigned : NumExprBits; + + unsigned ShouldCopy : 1; + }; + + class InitListExprBitfields { + friend class InitListExpr; + + unsigned : NumExprBits; + + /// Whether this initializer list originally had a GNU array-range + /// designator in it. This is a temporary marker used by CodeGen. + unsigned HadArrayRangeDesignator : 1; + }; class TypeTraitExprBitfields { friend class ASTStmtReader; @@ -444,20 +472,6 @@ protected: unsigned NumArgs : 32 - 8 - 1 - NumExprBits; }; - class ExprWithCleanupsBitfields { - friend class ASTStmtReader; // deserialization - friend class ExprWithCleanups; - - unsigned : NumExprBits; - - // When false, it must not have side effects. - unsigned CleanupsHaveSideEffects : 1; - - unsigned NumObjects : 32 - 1 - NumExprBits; - }; - - //===--- C++ Coroutines TS bitfields classes ---===// - class CoawaitExprBitfields { friend class CoawaitExpr; @@ -466,30 +480,7 @@ protected: unsigned IsImplicit : 1; }; - //===--- Obj-C Expression bitfields classes ---===// - - class ObjCIndirectCopyRestoreExprBitfields { - friend class ObjCIndirectCopyRestoreExpr; - - unsigned : NumExprBits; - - unsigned ShouldCopy : 1; - }; - - //===--- Clang Extensions bitfields classes ---===// - - class OpaqueValueExprBitfields { - friend class OpaqueValueExpr; - - unsigned : NumExprBits; - - /// The OVE is a unique semantic reference to its source expressio if this - /// bit is set to true. - unsigned IsUnique : 1; - }; - union { - // Same order as in StmtNodes.td. // Statements StmtBitfields StmtBits; NullStmtBitfields NullStmtBits; @@ -510,27 +501,19 @@ protected: // Expressions ExprBitfields ExprBits; PredefinedExprBitfields PredefinedExprBits; - DeclRefExprBitfields DeclRefExprBits; - FloatingLiteralBitfields FloatingLiteralBits; CharacterLiteralBitfields CharacterLiteralBits; + FloatingLiteralBitfields FloatingLiteralBits; UnaryExprOrTypeTraitExprBitfields UnaryExprOrTypeTraitExprBits; - CallExprBitfields CallExprBits; + DeclRefExprBitfields DeclRefExprBits; CastExprBitfields CastExprBits; - InitListExprBitfields InitListExprBits; + CallExprBitfields CallExprBits; + ExprWithCleanupsBitfields ExprWithCleanupsBits; PseudoObjectExprBitfields PseudoObjectExprBits; - - // C++ Expressions + OpaqueValueExprBitfields OpaqueValueExprBits; + ObjCIndirectCopyRestoreExprBitfields ObjCIndirectCopyRestoreExprBits; + InitListExprBitfields InitListExprBits; TypeTraitExprBitfields TypeTraitExprBits; - ExprWithCleanupsBitfields ExprWithCleanupsBits; - - // C++ Coroutines TS expressions CoawaitExprBitfields CoawaitBits; - - // Obj-C Expressions - ObjCIndirectCopyRestoreExprBitfields ObjCIndirectCopyRestoreExprBits; - - // Clang Extensions - OpaqueValueExprBitfields OpaqueValueExprBits; }; public: Modified: cfe/trunk/lib/AST/Expr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=346801&r1=346800&r2=346801&view=diff ============================================================================== --- cfe/trunk/lib/AST/Expr.cpp (original) +++ cfe/trunk/lib/AST/Expr.cpp Tue Nov 13 13:33:22 2018 @@ -1174,8 +1174,8 @@ StringLiteral::getLocationOfByte(unsigne /// getOpcodeStr - Turn an Opcode enum value into the punctuation char it /// corresponds to, e.g. "sizeof" or "[pre]++". -StringRef UnaryOperator::getOpcodeStr(Opcode Opc) { - switch (Opc) { +StringRef UnaryOperator::getOpcodeStr(Opcode Op) { + switch (Op) { #define UNARY_OPERATION(Name, Spelling) case UO_##Name: return Spelling; #include "clang/AST/OperationKinds.def" } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits