Added operator overloading for unary operators, post-increment, and
post-decrement, including support for generating all of the built-in
operator candidates for these operators. 

C++ and C have different rules for the arguments to the builtin unary
'+' and '-'. Implemented both variants in Sema::ActOnUnaryOp.

In C++, pre-increment and pre-decrement return lvalues. Update
Expr::isLvalue accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59638 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/www/cxx_status.html b/www/cxx_status.html
index c8b8d57..7c51fb3 100644
--- a/www/cxx_status.html
+++ b/www/cxx_status.html
@@ -826,8 +826,8 @@
 <tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.3.1.2 [over.match.oper]</td>

   <td class="complete" align="center">&#x2713;</td>  

-  <td class="broken" align="center"></td>

-  <td class="broken" align="center"></td>

+  <td class="medium" align="center"></td>

+  <td class="medium" align="center"></td>

   <td class="broken" align="center"></td>  

   <td></td>

 </tr>

@@ -943,27 +943,27 @@
   <td class="advanced" align="center"></td>

   <td class="medium" align="center"></td>

   <td class="broken" align="center"></td>  

-  <td>Most overloaded operators can only be called with function syntax, e.g., <code>operator+(x)</code>.</td>

+  <td>Some overloaded operators can only be called with function syntax, e.g., <code>operator[](x)</code>.</td>

 </tr>

 <tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.1 [over.unary]</td>

-  <td class="advanced" align="center"></td>  

+  <td class="na" align="center">N/A</td>  

   <td class="advanced" align="center"></td>

-  <td class="basic" align="center"></td>

+  <td class="advanced" align="center"></td>

   <td class="broken" align="center"></td>  

   <td></td>

 </tr>

 <tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.2 [over.binary]</td>

-  <td class="advanced" align="center"></td>  

+  <td class="na" align="center">N/A</td>  

   <td class="advanced" align="center"></td>

-  <td class="medium" align="center"></td>

+  <td class="advanced" align="center"></td>

   <td class="broken" align="center"></td>  

   <td></td>

 </tr>

 <tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.3 [over.ass]</td>

-  <td class="advanced" align="center"></td>  

+  <td class="na" align="center">N/A</td>  

   <td class="advanced" align="center"></td>

   <td class="basic" align="center"></td>

   <td class="broken" align="center"></td>  

@@ -971,7 +971,7 @@
 </tr>

 <tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.4 [over.call]</td>

-  <td class="advanced" align="center"></td>  

+  <td class="na" align="center">N/A</td>  

   <td class="advanced" align="center"></td>

   <td class="basic" align="center"></td>

   <td class="broken" align="center"></td>  

@@ -979,7 +979,7 @@
 </tr>

 <tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.5 [over.sub]</td>

-  <td class="advanced" align="center"></td>  

+  <td class="na" align="center">N/A</td>  

   <td class="advanced" align="center"></td>

   <td class="basic" align="center"></td>

   <td class="broken" align="center"></td>  

@@ -987,21 +987,29 @@
 </tr>

 <tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.6 [over.ref]</td>

-  <td class="advanced" align="center"></td>  

+  <td class="na" align="center">N/A</td>  

   <td class="advanced" align="center"></td>

-  <td class="basic" align="center"></td>

+  <td class="advanced" align="center"></td>

   <td class="broken" align="center"></td>  

   <td></td>

 </tr>

 <tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;13.5.7 [over.inc]</td>

-  <td class="advanced" align="center"></td>  

+  <td class="na" align="center">N/A</td>  

   <td class="advanced" align="center"></td>

-  <td class="basic" align="center"></td>

+  <td class="advanced" align="center"></td>

   <td class="broken" align="center"></td>  

   <td></td>

 </tr>

-<tr><td>&nbsp;&nbsp;13.6 [over.built]</td><td></td><td></td><td></td><td></td><td></td></tr>

+<tr>

+  <td>&nbsp;&nbsp;13.6 [over.built]</td>

+  <td class="na" align="center">N/A</td>  

+  <td class="advanced" align="center"></td>

+  <td class="medium" align="center"></td>

+  <td class="broken" align="center"></td>  

+  <td>Missing pointer-to-member versions (p11, p16) and support for

+  the ternary operator (p24, p25).</td>

+</tr>

 <tr><td>14 [temp]</td><td></td><td></td><td></td><td></td><td></td></tr>

 <tr><td>&nbsp;&nbsp;14.1 [temp.param]</td><td></td><td></td><td></td><td></td><td></td></tr>

 <tr><td>&nbsp;&nbsp;14.2 [temp.names]</td><td></td><td></td><td></td><td></td><td></td></tr>