diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2019-06-14 17:46:39 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2019-06-14 17:46:39 +0000 |
commit | 14059d2a13667409ccf2860ff7d1c56f6c8c70a6 (patch) | |
tree | 34cb371d45c13006243be661a8b0053ac60bb8e4 | |
parent | 27252a1f9546ba379b76176d6f6707a1ae8d05cd (diff) | |
download | bcm5719-llvm-14059d2a13667409ccf2860ff7d1c56f6c8c70a6.tar.gz bcm5719-llvm-14059d2a13667409ccf2860ff7d1c56f6c8c70a6.zip |
Remove unused SK_LValueToRValue initialization step.
In addition to being unused and duplicating code, this was also wrong
(it didn't properly mark the operand as being potentially not odr-used).
This reinstates r363340, reverted in r363352.
llvm-svn: 363430
-rw-r--r-- | clang/include/clang/Sema/Initialization.h | 9 | ||||
-rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 27 |
2 files changed, 0 insertions, 36 deletions
diff --git a/clang/include/clang/Sema/Initialization.h b/clang/include/clang/Sema/Initialization.h index 1c522e49bc6..f726f383630 100644 --- a/clang/include/clang/Sema/Initialization.h +++ b/clang/include/clang/Sema/Initialization.h @@ -821,9 +821,6 @@ public: /// Perform a conversion adding _Atomic to a type. SK_AtomicConversion, - /// Perform a load from a glvalue, producing an rvalue. - SK_LValueToRValue, - /// Perform an implicit conversion sequence. SK_ConversionSequence, @@ -1270,12 +1267,6 @@ public: /// type. void AddAtomicConversionStep(QualType Ty); - /// Add a new step that performs a load of the given type. - /// - /// Although the term "LValueToRValue" is conventional, this applies to both - /// lvalues and xvalues. - void AddLValueToRValueStep(QualType Ty); - /// Add a new step that applies an implicit conversion sequence. void AddConversionSequenceStep(const ImplicitConversionSequence &ICS, QualType T, bool TopLevelOfInitList = false); diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 1301de4b111..d5ef5eddf3e 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -3282,7 +3282,6 @@ void InitializationSequence::Step::Destroy() { case SK_QualificationConversionXValue: case SK_QualificationConversionLValue: case SK_AtomicConversion: - case SK_LValueToRValue: case SK_ListInitialization: case SK_UnwrapInitList: case SK_RewrapInitList: @@ -3466,15 +3465,6 @@ void InitializationSequence::AddAtomicConversionStep(QualType Ty) { Steps.push_back(S); } -void InitializationSequence::AddLValueToRValueStep(QualType Ty) { - assert(!Ty.hasQualifiers() && "rvalues may not have qualifiers"); - - Step S; - S.Kind = SK_LValueToRValue; - S.Type = Ty; - Steps.push_back(S); -} - void InitializationSequence::AddConversionSequenceStep( const ImplicitConversionSequence &ICS, QualType T, bool TopLevelOfInitList) { @@ -7505,7 +7495,6 @@ ExprResult InitializationSequence::Perform(Sema &S, case SK_QualificationConversionXValue: case SK_QualificationConversionRValue: case SK_AtomicConversion: - case SK_LValueToRValue: case SK_ConversionSequence: case SK_ConversionSequenceNoNarrowing: case SK_ListInitialization: @@ -7777,18 +7766,6 @@ ExprResult InitializationSequence::Perform(Sema &S, break; } - case SK_LValueToRValue: { - assert(CurInit.get()->isGLValue() && "cannot load from a prvalue"); - // C++ [conv.lval]p3: - // If T is cv std::nullptr_t, the result is a null pointer constant. - CastKind CK = - Step->Type->isNullPtrType() ? CK_NullToPointer : CK_LValueToRValue; - CurInit = - ImplicitCastExpr::Create(S.Context, Step->Type, CK, CurInit.get(), - /*BasePath=*/nullptr, VK_RValue); - break; - } - case SK_ConversionSequence: case SK_ConversionSequenceNoNarrowing: { if (const auto *FromPtrType = @@ -9010,10 +8987,6 @@ void InitializationSequence::dump(raw_ostream &OS) const { OS << "non-atomic-to-atomic conversion"; break; - case SK_LValueToRValue: - OS << "load (lvalue to rvalue)"; - break; - case SK_ConversionSequence: OS << "implicit conversion sequence ("; S->ICS->dump(); // FIXME: use OS |