forked from OSchip/llvm-project
0683c0e68d
Summary: This patch tackles long hanging fruit for the builtin operator<=> expressions. It is currently needs some cleanup before landing, but I want to get some initial feedback. The main changes are: * Lookup, build, and store the required standard library types and expressions in `ASTContext`. By storing them in ASTContext we don't need to store (and duplicate) the required expressions in the BinaryOperator AST nodes. * Implement [expr.spaceship] checking, including diagnosing narrowing conversions. * Implement `ExprConstant` for builtin spaceship operators. * Implement builitin operator<=> support in `CodeGenAgg`. Initially I emitted the required comparisons using `ScalarExprEmitter::VisitBinaryOperator`, but this caused the operand expressions to be emitted once for every required cmp. * Implement [builtin.over] with modifications to support the intent of P0946R0. See the note on `BuiltinOperatorOverloadBuilder::addThreeWayArithmeticOverloads` for more information about the workaround. Reviewers: rsmith, aaron.ballman, majnemer, rnk, compnerd, rjmccall Reviewed By: rjmccall Subscribers: rjmccall, rsmith, aaron.ballman, junbuml, mgorny, cfe-commits Differential Revision: https://reviews.llvm.org/D45476 llvm-svn: 331677 |
||
---|---|---|
.. | ||
badpch-dir.h.gch | ||
libroot/usr/include | ||
modules | ||
__va_list_tag-typedef.h | ||
__va_list_tag.h | ||
arc.h | ||
badpch-empty.h.gch | ||
case-insensitive-include.h | ||
chain-decls1.h | ||
chain-decls2.h | ||
chain-ext_vector1.h | ||
chain-ext_vector2.h | ||
chain-external-defs1.h | ||
chain-external-defs2.h | ||
chain-macro-override1.h | ||
chain-macro-override2.h | ||
chain-macro1.h | ||
chain-macro2.h | ||
chain-remap-types1.h | ||
chain-remap-types2.h | ||
chain-selectors1.h | ||
chain-selectors2.h | ||
chain-trivial1.h | ||
chain-trivial2.h | ||
cuda.h | ||
cxx-method.h | ||
cxx11-statement-attributes.h | ||
namespaces.h | ||
pr27445.h | ||
pragma-once.h | ||
pragma-once2-pch.h | ||
pragma-once2.h | ||
preamble.h | ||
std-compare.h | ||
typo.h | ||
typo.hpp | ||
va_arg.h | ||
working-directory-1.h |