diff options
| author | Douglas Gregor <dgregor@apple.com> | 2008-11-14 16:09:21 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2008-11-14 16:09:21 +0000 |
| commit | 993603d80db194627969b3be96ef64e9635d4ab7 (patch) | |
| tree | c938a0b3f2aff91cce84b89ffee09da4984d1ef5 /clang/lib/CodeGen/CGDecl.cpp | |
| parent | 5fe593390948b8a133bbabb6237e28f5eec55512 (diff) | |
| download | bcm5719-llvm-993603d80db194627969b3be96ef64e9635d4ab7.tar.gz bcm5719-llvm-993603d80db194627969b3be96ef64e9635d4ab7.zip | |
Add a new expression node, CXXOperatorCallExpr, which expresses a
function call created in response to the use of operator syntax that
resolves to an overloaded operator in C++, e.g., "str1 +
str2" that resolves to std::operator+(str1, str2)". We now build a
CXXOperatorCallExpr in C++ when we pick an overloaded operator. (But
only for binary operators, where we actually implement overloading)
I decided *not* to refactor the current CallExpr to make it abstract
(with FunctionCallExpr and CXXOperatorCallExpr as derived
classes). Doing so would allow us to make CXXOperatorCallExpr a little
bit smaller, at the cost of making the argument and callee accessors
virtual. We won't know if this is going to be a win until we can parse
lots of C++ code to determine how much memory we'll save by making
this change vs. the performance penalty due to the extra virtual
calls.
llvm-svn: 59306
Diffstat (limited to 'clang/lib/CodeGen/CGDecl.cpp')
0 files changed, 0 insertions, 0 deletions

