Store the source range of a CXXOperatorCallExpr in the Expr object instead of
calculating it recursively. boost::assign::tuple_list_of uses the trick of chaining call operator expressions in order to declare a "list of tuples", e.g: std::vector<tuple> v = boost::assign::tuple_list_of(1, "foo")(2, "bar")(3, "qqq"); Due to CXXOperatorCallExpr calculating its source range recursively we would get significant slowdowns with a large number of chained call operator expressions and the potential for stack overflow. rdar://11350116 llvm-svn: 155848
Showing
- clang/include/clang/AST/ExprCXX.h 9 additions, 3 deletionsclang/include/clang/AST/ExprCXX.h
- clang/lib/AST/ExprCXX.cpp 2 additions, 2 deletionsclang/lib/AST/ExprCXX.cpp
- clang/lib/Serialization/ASTReaderStmt.cpp 2 additions, 1 deletionclang/lib/Serialization/ASTReaderStmt.cpp
- clang/lib/Serialization/ASTWriterStmt.cpp 1 addition, 0 deletionsclang/lib/Serialization/ASTWriterStmt.cpp
Loading
Please register or sign in to comment