[www-releases] r225843 - Add documentation for 3.5.1

Tom Stellard thomas.stellard at amd.com
Tue Jan 13 14:55:45 PST 2015


Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaObjCProperty_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaObjCProperty_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaObjCProperty_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaObjCProperty_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,2275 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: SemaObjCProperty.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_0c3cadfa2fbef89a3b8f57073e8a31f9.html">Sema</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SemaObjCProperty.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SemaObjCProperty_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- SemaObjCProperty.cpp - Semantic Analysis for ObjC @property ------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file implements semantic analysis for Objective C @property and</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  @synthesize declarations.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="SemaInternal_8h.html">clang/Sema/SemaInternal.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="ASTMutationListener_8h.html">clang/AST/ASTMutationListener.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="ExprCXX_8h.html" title="Defines the clang::Expr interface and subclasses for C++ expressions.">clang/AST/ExprCXX.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="ExprObjC_8h.html">clang/AST/ExprObjC.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="Lexer_8h.html">clang/Lex/Lexer.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="Preprocessor_8h.html">clang/Lex/Preprocessor.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="Initialization_8h.html">clang/Sema/Initialization.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/ADT/DenseSet.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/ADT/SmallString.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">// Grammar actions.</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">/// getImpliedARCOwnership - Given a set of property attributes and a</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">/// type, infer an expected lifetime.  The type's ownership qualification</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">/// is not considered.</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/// Returns OCL_None if the attributes as stated do not imply an ownership.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">/// Never returns OCL_Autoreleasing.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a7042dd0a227864d08af3126e4f671ee0">   39</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> <a class="code" href="SemaObjCProperty_8cpp.html#a7042dd0a227864d08af3126e4f671ee0">getImpliedARCOwnership</a>(</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>                                <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08">ObjCPropertyDecl::PropertyAttributeKind</a> attrs,</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>                                                 <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>) {</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="comment">// retain, strong, copy, weak, and unsafe_unretained are only legal</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="comment">// on properties of retainable pointer type.</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordflow">if</span> (attrs & (<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ab0393d37874d5dad992cab46cfc2c41d">ObjCPropertyDecl::OBJC_PR_retain</a> |</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>                <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a> |</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>                <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a48da21f81d458dd0c8567edfeb203024">ObjCPropertyDecl::OBJC_PR_copy</a>)) {</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (attrs & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af015fdde1c948c8276c880434ef5dc0f">ObjCPropertyDecl::OBJC_PR_weak</a>) {</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300ad62a7a19d7027c37d407d2ca7638a89c" title="Reading or writing from this object requires a barrier call.">Qualifiers::OCL_Weak</a>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (attrs & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af5b0cc87b394e28d14b705c8be54ca72">ObjCPropertyDecl::OBJC_PR_unsafe_unretained</a>) {</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   }</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="comment">// assign can appear on other types, so we have to check the</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="comment">// property type.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordflow">if</span> (attrs & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af775b1b5ade4436b6791b54377a44735">ObjCPropertyDecl::OBJC_PR_assign</a> &&</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>       type-><a class="code" href="classclang_1_1Type.html#aefead70d5348015b03c14f274621789c">isObjCRetainableType</a>()) {</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>;</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   }</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a29b319bca942e44bf183ca2749b072b3" title="There is no lifetime qualification on this type.">Qualifiers::OCL_None</a>;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> }</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">/// Check the internal consistency of a property declaration.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#aaddc753b36fbf33f25a029ff5a09d99b">   65</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaObjCProperty_8cpp.html#aaddc753b36fbf33f25a029ff5a09d99b" title="Check the internal consistency of a property declaration.">checkARCPropertyDecl</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *property) {</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keywordflow">if</span> (property-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08">ObjCPropertyDecl::PropertyAttributeKind</a> propertyKind</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     = <span class="keyword">property</span>->getPropertyAttributes();</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> propertyLifetime</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     = <span class="keyword">property</span>->getType().getObjCLifetime();</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="comment">// Nothing to do if we don't have a lifetime.</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordflow">if</span> (propertyLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a29b319bca942e44bf183ca2749b072b3" title="There is no lifetime qualification on this type.">Qualifiers::OCL_None</a>) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> expectedLifetime</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     = <a class="code" href="SemaObjCProperty_8cpp.html#a7042dd0a227864d08af3126e4f671ee0">getImpliedARCOwnership</a>(propertyKind, property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>());</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="keywordflow">if</span> (!expectedLifetime) {</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="comment">// We have a lifetime qualifier but no dominating property</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="comment">// attribute.  That's okay, but restore reasonable invariants by</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="comment">// setting the property attribute according to the lifetime</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="comment">// qualifier.</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08">ObjCPropertyDecl::PropertyAttributeKind</a> attr;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="keywordflow">if</span> (propertyLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>) {</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>       attr = <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>;</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (propertyLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300ad62a7a19d7027c37d407d2ca7638a89c" title="Reading or writing from this object requires a barrier call.">Qualifiers::OCL_Weak</a>) {</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>       attr = <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af015fdde1c948c8276c880434ef5dc0f">ObjCPropertyDecl::OBJC_PR_weak</a>;</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>       assert(propertyLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>);</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>       attr = <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af5b0cc87b394e28d14b705c8be54ca72">ObjCPropertyDecl::OBJC_PR_unsafe_unretained</a>;</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     }</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keyword">property</span>->setPropertyAttributes(attr);</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   }</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordflow">if</span> (propertyLifetime == expectedLifetime) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keyword">property</span>->setInvalidDecl();</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>          diag::err_arc_inconsistent_property_ownership)</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     << property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     << expectedLifetime</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     << propertyLifetime;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> }</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a734ea89e3bcfa15b80a61015b2425fe6">  106</a></span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="SemaObjCProperty_8cpp.html#a734ea89e3bcfa15b80a61015b2425fe6">deduceWeakPropertyFromType</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keywordflow">if</span> ((S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a> && </div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>        T.<a class="code" href="classclang_1_1QualType.html#aa3531092d44c1ecacc18c3f88f213d52" title="isObjCGCWeak true when Type is objc's weak.">isObjCGCWeak</a>()) ||</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>       (S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>        T.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>() == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300ad62a7a19d7027c37d407d2ca7638a89c" title="Reading or writing from this object requires a barrier call.">Qualifiers::OCL_Weak</a>))</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>;</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> }</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment"></span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">/// \brief Check this Objective-C property against a property declared in the</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">/// given protocol.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a33faba4b94ffca41d9771863b6088762">  118</a></span> <a class="code" href="SemaObjCProperty_8cpp.html#a33faba4b94ffca41d9771863b6088762" title="Check this Objective-C property against a property declared in the given protocol.">CheckPropertyAgainstProtocol</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Prop,</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>                              <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *Proto,</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>                              llvm::SmallPtrSet<ObjCProtocolDecl *, 16> &Known) {</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="comment">// Have we seen this protocol before?</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keywordflow">if</span> (!Known.insert(Proto))</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="comment">// Look for a property with the same name.</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">DeclContext::lookup_result</a> R = Proto-><a class="code" href="classclang_1_1DeclContext.html#a0916b364472e2acc42122885e087222b">lookup</a>(Prop-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>());</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = R.size(); I != N; ++I) {</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *ProtoProp = dyn_cast<ObjCPropertyDecl>(R[I])) {</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>       S.<a class="code" href="classclang_1_1Sema.html#a88fde93592d702fdabb1ea17f6a658e8">DiagnosePropertyMismatch</a>(Prop, ProtoProp, Proto-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>(), <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     }</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   }</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="comment">// Check this property against any protocols we inherit.</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html#adbd4b44a478f573a24072123f93b2fe9">ObjCProtocolDecl::protocol_iterator</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = Proto-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a199069b3da6c86cd72a6b8fe9f8feec0">protocol_begin</a>(),</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>                                         PEnd = Proto-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a681da3dbfa474479f44d59eee31d0e1e">protocol_end</a>();</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>        <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != PEnd; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <a class="code" href="SemaObjCProperty_8cpp.html#a33faba4b94ffca41d9771863b6088762" title="Check this Objective-C property against a property declared in the given protocol.">CheckPropertyAgainstProtocol</a>(S, Prop, *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>, Known);</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   }</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> }</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a7bc25a9295252e9fc9478d232b55e064">  142</a></span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Sema.html#a7bc25a9295252e9fc9478d232b55e064">Sema::ActOnProperty</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtLoc,</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>                           <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LParenLoc,</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>                           <a class="code" href="structclang_1_1FieldDeclarator.html" title="This little struct is used to capture information about structure field declarators, which is basically just a bitfield size.">FieldDeclarator</a> &FD,</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>                           <a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a> &ODS,</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>                           <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> GetterSel,</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>                           <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> SetterSel,</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>                           <span class="keywordtype">bool</span> *isOverridingProperty,</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>                           <a class="code" href="namespaceclang_1_1tok.html#a8bd1e86849bee8ef3fed043919c0a0e8" title="Provides a namespace for Objective-C keywords which start with an '@'.">tok::ObjCKeywordKind</a> MethodImplKind,</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>                           <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *lexicalDC) {</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a> = ODS.<a class="code" href="classclang_1_1ObjCDeclSpec.html#a9eb817fc04b06ef3e618d42709d27334">getPropertyAttributes</a>();</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TSI = <a class="code" href="classclang_1_1Sema.html#ae638d8ee5bc39d3d063e6f5e5a26cd14">GetTypeForDeclarator</a>(FD.<a class="code" href="structclang_1_1FieldDeclarator.html#a53db54883a89e3dfc2f024ad7c8a836d">D</a>, S);</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T = TSI-><a class="code" href="classclang_1_1TypeSourceInfo.html#affbab53588a16a2bc948f2493d93a4e2" title="Return the type wrapped by this type source info.">getType</a>();</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   Attributes |= <a class="code" href="SemaObjCProperty_8cpp.html#a734ea89e3bcfa15b80a61015b2425fe6">deduceWeakPropertyFromType</a>(*<span class="keyword">this</span>, T);</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   </div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordtype">bool</span> isReadWrite = ((Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eadd3236c931b1c11d2e301902133420a4">ObjCDeclSpec::DQ_PR_readwrite</a>) ||</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>                       <span class="comment">// default is readwrite!</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>                       !(Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea6670cb1eb4fdf3be1fb8b2a4b50a9469">ObjCDeclSpec::DQ_PR_readonly</a>));</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="comment">// property is defaulted to 'assign' if it is readwrite and is</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="comment">// not retain or copy</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordtype">bool</span> isAssign = ((Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea21e6ab8ff00919ac24fbbef723b1f221">ObjCDeclSpec::DQ_PR_assign</a>) ||</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>                    (isReadWrite &&</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                     !(Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a>) &&</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>                     !(Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>) &&</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>                     !(Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a>) &&</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>                     !(Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea628b0bb8dec9bc465ec2670ab322fa66">ObjCDeclSpec::DQ_PR_unsafe_unretained</a>) &&</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>                     !(Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>)));</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="comment">// Proceed with constructing the ObjCPropertyDecls.</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *ClassDecl = cast<ObjCContainerDecl>(<a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>);</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Res = 0;</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CDecl = dyn_cast<ObjCCategoryDecl>(ClassDecl)) {</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="keywordflow">if</span> (CDecl->IsClassExtension()) {</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>       Res = <a class="code" href="classclang_1_1Sema.html#a6d8718f44510e6228e99ec77a9c3061c">HandlePropertyInClassExtension</a>(S, AtLoc, LParenLoc,</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>                                            FD, GetterSel, SetterSel,</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>                                            isAssign, isReadWrite,</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>                                            Attributes,</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>                                            ODS.<a class="code" href="classclang_1_1ObjCDeclSpec.html#a9eb817fc04b06ef3e618d42709d27334">getPropertyAttributes</a>(),</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>                                            isOverridingProperty, TSI,</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>                                            MethodImplKind);</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">if</span> (!Res)</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     }</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   }</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordflow">if</span> (!Res) {</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     Res = <a class="code" href="classclang_1_1Sema.html#a4c436c782eabaed9a5f86186de3ecb9d">CreatePropertyDecl</a>(S, ClassDecl, AtLoc, LParenLoc, FD,</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>                              GetterSel, SetterSel, isAssign, isReadWrite,</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>                              Attributes, ODS.<a class="code" href="classclang_1_1ObjCDeclSpec.html#a9eb817fc04b06ef3e618d42709d27334">getPropertyAttributes</a>(),</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>                              TSI, MethodImplKind);</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordflow">if</span> (lexicalDC)</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       Res-><a class="code" href="classclang_1_1Decl.html#ae9774d70804bdaa706bd2ba7c5ccb47f">setLexicalDeclContext</a>(lexicalDC);</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   }</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="comment">// Validate the attributes on the @property.</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <a class="code" href="classclang_1_1Sema.html#a63fe4a795eb20d77e8780ecb796b2dfc">CheckObjCPropertyAttributes</a>(Res, AtLoc, Attributes, </div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>                               (isa<ObjCInterfaceDecl>(ClassDecl) ||</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>                                isa<ObjCProtocolDecl>(ClassDecl)));</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount)</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <a class="code" href="SemaObjCProperty_8cpp.html#aaddc753b36fbf33f25a029ff5a09d99b" title="Check the internal consistency of a property declaration.">checkARCPropertyDecl</a>(*<span class="keyword">this</span>, Res);</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   llvm::SmallPtrSet<ObjCProtocolDecl *, 16> KnownProtos;</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IFace = dyn_cast<ObjCInterfaceDecl>(ClassDecl)) {</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="comment">// For a class, compare the property against a property in our superclass.</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     <span class="keywordtype">bool</span> FoundInSuper = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Super = IFace-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a5f23eb5cda9e27622e71382d1dc4b95d">getSuperClass</a>()) {</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>       <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">DeclContext::lookup_result</a> R = Super->lookup(Res->getDeclName());</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = R.size(); I != N; ++I) {</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *SuperProp = dyn_cast<ObjCPropertyDecl>(R[I])) {</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>           <a class="code" href="classclang_1_1Sema.html#a88fde93592d702fdabb1ea17f6a658e8">DiagnosePropertyMismatch</a>(Res, SuperProp, Super->getIdentifier(), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>           FoundInSuper = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         }</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       }</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     }</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     <span class="keywordflow">if</span> (FoundInSuper) {</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>       <span class="comment">// Also compare the property against a property in our protocols.</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a0a01af30c26a569976214a2e4159abe0">ObjCInterfaceDecl::protocol_iterator</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = IFace->protocol_begin(),</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>                                              PEnd = IFace->protocol_end();</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>            <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != PEnd; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         <a class="code" href="SemaObjCProperty_8cpp.html#a33faba4b94ffca41d9771863b6088762" title="Check this Objective-C property against a property declared in the given protocol.">CheckPropertyAgainstProtocol</a>(*<span class="keyword">this</span>, Res, *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>, KnownProtos);</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>       }</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       <span class="comment">// Slower path: look in all protocols we referenced.</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a9da2d6646fb8c8dd1793f81688b6c0f0">ObjCInterfaceDecl::all_protocol_iterator</a></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>              <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = IFace->all_referenced_protocol_begin(),</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>              PEnd = IFace->all_referenced_protocol_end();</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>            <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != PEnd; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         <a class="code" href="SemaObjCProperty_8cpp.html#a33faba4b94ffca41d9771863b6088762" title="Check this Objective-C property against a property declared in the given protocol.">CheckPropertyAgainstProtocol</a>(*<span class="keyword">this</span>, Res, *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>, KnownProtos);</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       }</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     }</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *Cat = dyn_cast<ObjCCategoryDecl>(ClassDecl)) {</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html#a2838849e5805ca4bce587a4d9c68acb8">ObjCCategoryDecl::protocol_iterator</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = Cat->protocol_begin(),</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>                                           PEnd = Cat->protocol_end();</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>          <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != PEnd; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <a class="code" href="SemaObjCProperty_8cpp.html#a33faba4b94ffca41d9771863b6088762" title="Check this Objective-C property against a property declared in the given protocol.">CheckPropertyAgainstProtocol</a>(*<span class="keyword">this</span>, Res, *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>, KnownProtos);</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     }</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *Proto = cast<ObjCProtocolDecl>(ClassDecl);</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html#adbd4b44a478f573a24072123f93b2fe9">ObjCProtocolDecl::protocol_iterator</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = Proto-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a199069b3da6c86cd72a6b8fe9f8feec0">protocol_begin</a>(),</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>                                           PEnd = Proto-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a681da3dbfa474479f44d59eee31d0e1e">protocol_end</a>();</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>          <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != PEnd; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <a class="code" href="SemaObjCProperty_8cpp.html#a33faba4b94ffca41d9771863b6088762" title="Check this Objective-C property against a property declared in the given protocol.">CheckPropertyAgainstProtocol</a>(*<span class="keyword">this</span>, Res, *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>, KnownProtos);</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     }</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   }</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   <a class="code" href="classclang_1_1Sema.html#a933cebf415880df2ca3b5b2bb88bf12e">ActOnDocumentableDecl</a>(Res);</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> }</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> <span class="keyword">static</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08">ObjCPropertyDecl::PropertyAttributeKind</a></div>
+<div class="line"><a name="l00254"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a2e00870a2b333dc4ea3ae2655693aee9">  254</a></span> <a class="code" href="SemaObjCProperty_8cpp.html#a2e00870a2b333dc4ea3ae2655693aee9">makePropertyAttributesAsWritten</a>(<span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a>) {</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <span class="keywordtype">unsigned</span> attributesAsWritten = 0;</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea6670cb1eb4fdf3be1fb8b2a4b50a9469">ObjCDeclSpec::DQ_PR_readonly</a>)</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>;</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eadd3236c931b1c11d2e301902133420a4">ObjCDeclSpec::DQ_PR_readwrite</a>)</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ac8b256d777df2a2a0e4895cb3bcf2ef0">ObjCPropertyDecl::OBJC_PR_readwrite</a>;</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea169831cad04669fed7359d7ec9b8fd12">ObjCDeclSpec::DQ_PR_getter</a>)</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a5edee39a57a4303f10c29a44b852d326">ObjCPropertyDecl::OBJC_PR_getter</a>;</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea75d33da549161c49b9c68bac97e48e08">ObjCDeclSpec::DQ_PR_setter</a>)</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a27ef6bda1ec8442c7e5c700c62f61284">ObjCPropertyDecl::OBJC_PR_setter</a>;</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea21e6ab8ff00919ac24fbbef723b1f221">ObjCDeclSpec::DQ_PR_assign</a>)</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af775b1b5ade4436b6791b54377a44735">ObjCPropertyDecl::OBJC_PR_assign</a>;</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a>)</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ab0393d37874d5dad992cab46cfc2c41d">ObjCPropertyDecl::OBJC_PR_retain</a>;</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>)</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>;</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>)</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af015fdde1c948c8276c880434ef5dc0f">ObjCPropertyDecl::OBJC_PR_weak</a>;</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a>)</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a48da21f81d458dd0c8567edfeb203024">ObjCPropertyDecl::OBJC_PR_copy</a>;</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea628b0bb8dec9bc465ec2670ab322fa66">ObjCDeclSpec::DQ_PR_unsafe_unretained</a>)</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af5b0cc87b394e28d14b705c8be54ca72">ObjCPropertyDecl::OBJC_PR_unsafe_unretained</a>;</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea66eb92a2e80a59b98098f1d3a1018a46">ObjCDeclSpec::DQ_PR_nonatomic</a>)</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a9bc182e9e33edf812dd5e9000ad6d5ce">ObjCPropertyDecl::OBJC_PR_nonatomic</a>;</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaf7065dbbffb902f735039acdc27c5e27">ObjCDeclSpec::DQ_PR_atomic</a>)</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     attributesAsWritten |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08acc3f6599e0d52d6f6fa52f2e07588b10">ObjCPropertyDecl::OBJC_PR_atomic</a>;</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   </div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="keywordflow">return</span> (<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08">ObjCPropertyDecl::PropertyAttributeKind</a>)attributesAsWritten;</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> }</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
+<div class="line"><a name="l00284"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a3e3b5a0bd05ce452cd76a0d2ce264043">  284</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaObjCProperty_8cpp.html#a3e3b5a0bd05ce452cd76a0d2ce264043">LocPropertyAttribute</a>( <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *attrName, </div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>                                  <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LParenLoc, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> &Loc) {</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   <span class="keywordflow">if</span> (LParenLoc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>())</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   </div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#afe4356a77609114d8df0bfc9c2b8701f">SM</a> = Context.<a class="code" href="classclang_1_1ASTContext.html#a091e2575135f7f9f1aeb25ba0090bfde">getSourceManager</a>();</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   std::pair<FileID, unsigned> locInfo = SM.<a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(LParenLoc);</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="comment">// Try to load the file buffer.</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="keywordtype">bool</span> invalidTemp = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   StringRef file = SM.<a class="code" href="classclang_1_1SourceManager.html#a57e483ae7710c8b23eeb4f119026d662" title="Return a StringRef to the source buffer data for the specified FileID.">getBufferData</a>(locInfo.first, &invalidTemp);</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="keywordflow">if</span> (invalidTemp)</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *tokenBegin = file.data() + locInfo.second;</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="comment">// Lex from the start of the given location.</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <a class="code" href="classclang_1_1Lexer.html">Lexer</a> lexer(SM.<a class="code" href="classclang_1_1SourceManager.html#ae1f1d6c242c1db7b224a7a6dd35cb82e" title="Return the source location corresponding to the first byte of the specified file.">getLocForStartOfFile</a>(locInfo.first),</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>               Context.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>(),</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>               file.begin(), tokenBegin, file.end());</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <a class="code" href="classclang_1_1Token.html">Token</a> Tok;</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     lexer.LexFromRawLexer(Tok);</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="keywordflow">if</span> (Tok.is(tok::raw_identifier) &&</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         StringRef(Tok.getRawIdentifierData(), Tok.getLength()) == attrName) {</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       Loc = Tok.getLocation();</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     }</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   } <span class="keywordflow">while</span> (Tok.isNot(tok::r_paren));</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   </div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> }</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
+<div class="line"><a name="l00315"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a645a2f511fa2eb7806920bd4f209f96d">  315</a></span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="SemaObjCProperty_8cpp.html#a645a2f511fa2eb7806920bd4f209f96d">getOwnershipRule</a>(<span class="keywordtype">unsigned</span> attr) {</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   <span class="keywordflow">return</span> attr & (<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af775b1b5ade4436b6791b54377a44735">ObjCPropertyDecl::OBJC_PR_assign</a> |</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>                  <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ab0393d37874d5dad992cab46cfc2c41d">ObjCPropertyDecl::OBJC_PR_retain</a> |</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>                  <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a48da21f81d458dd0c8567edfeb203024">ObjCPropertyDecl::OBJC_PR_copy</a>   |</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>                  <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af015fdde1c948c8276c880434ef5dc0f">ObjCPropertyDecl::OBJC_PR_weak</a>   |</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>                  <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a> |</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>                  <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af5b0cc87b394e28d14b705c8be54ca72">ObjCPropertyDecl::OBJC_PR_unsafe_unretained</a>);</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> }</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#af6edb721f6dfa880195937d90dec8a26">  324</a></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="SemaObjCProperty_8cpp.html#af6edb721f6dfa880195937d90dec8a26">NameOfOwnershipAttribute</a>(<span class="keywordtype">unsigned</span> attr) {</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <span class="keywordflow">if</span> (attr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af775b1b5ade4436b6791b54377a44735">ObjCPropertyDecl::OBJC_PR_assign</a>)</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordflow">return</span> <span class="stringliteral">"assign"</span>;</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="keywordflow">if</span> (attr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ab0393d37874d5dad992cab46cfc2c41d">ObjCPropertyDecl::OBJC_PR_retain</a> )</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="keywordflow">return</span> <span class="stringliteral">"retain"</span>;</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="keywordflow">if</span> (attr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a48da21f81d458dd0c8567edfeb203024">ObjCPropertyDecl::OBJC_PR_copy</a>)</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     <span class="keywordflow">return</span> <span class="stringliteral">"copy"</span>;</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="keywordflow">if</span> (attr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af015fdde1c948c8276c880434ef5dc0f">ObjCPropertyDecl::OBJC_PR_weak</a>)</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     <span class="keywordflow">return</span> <span class="stringliteral">"weak"</span>;</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="keywordflow">if</span> (attr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>)</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <span class="keywordflow">return</span> <span class="stringliteral">"strong"</span>;</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   assert(attr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af5b0cc87b394e28d14b705c8be54ca72">ObjCPropertyDecl::OBJC_PR_unsafe_unretained</a>);</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keywordflow">return</span> <span class="stringliteral">"unsafe_unretained"</span>;</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> }</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *</div>
+<div class="line"><a name="l00340"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a6d8718f44510e6228e99ec77a9c3061c">  340</a></span> <a class="code" href="classclang_1_1Sema.html#a6d8718f44510e6228e99ec77a9c3061c">Sema::HandlePropertyInClassExtension</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>                                      <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtLoc,</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>                                      <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LParenLoc,</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>                                      <a class="code" href="structclang_1_1FieldDeclarator.html" title="This little struct is used to capture information about structure field declarators, which is basically just a bitfield size.">FieldDeclarator</a> &FD,</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>                                      <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> GetterSel, <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> SetterSel,</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>                                      <span class="keyword">const</span> <span class="keywordtype">bool</span> isAssign,</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>                                      <span class="keyword">const</span> <span class="keywordtype">bool</span> isReadWrite,</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>                                      <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a>,</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>                                      <span class="keyword">const</span> <span class="keywordtype">unsigned</span> AttributesAsWritten,</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>                                      <span class="keywordtype">bool</span> *isOverridingProperty,</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>                                      <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *T,</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>                                      <a class="code" href="namespaceclang_1_1tok.html#a8bd1e86849bee8ef3fed043919c0a0e8" title="Provides a namespace for Objective-C keywords which start with an '@'.">tok::ObjCKeywordKind</a> MethodImplKind) {</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CDecl = cast<ObjCCategoryDecl>(<a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>);</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   <span class="comment">// Diagnose if this property is already in continuation class.</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC = <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>;</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *PropertyId = FD.<a class="code" href="structclang_1_1FieldDeclarator.html#a53db54883a89e3dfc2f024ad7c8a836d">D</a>.<a class="code" href="classclang_1_1Declarator.html#ac1465e02d2f6c8fa2a8aa69d8bdcec51">getIdentifier</a>();</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *CCPrimary = CDecl-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#acdb14eeca277cfa745a4e8e842312008">getClassInterface</a>();</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   <span class="keywordflow">if</span> (CCPrimary) {</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     <span class="comment">// Check for duplicate declaration of this property in current and</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <span class="comment">// other class extensions.</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl_1_1filtered__category__iterator.html" title="Iterator that walks over the list of categories, filtering out those that do not meet specific criter...">ObjCInterfaceDecl::known_extensions_iterator</a></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>            Ext = CCPrimary-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#ae8a5db36f5cc75890b386c2f9fe3e71d" title="Retrieve an iterator to the beginning of the known-extensions list.">known_extensions_begin</a>(),</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>            ExtEnd = CCPrimary-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a6c3d90b10af9218ad5f190df9a7db0b5" title="Retrieve an iterator to the end of the known-extensions list.">known_extensions_end</a>();</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>          Ext != ExtEnd; ++Ext) {</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *prevDecl</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>             = <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a38e441c64b246d28f5970128f7517870" title="Lookup a property by name in the specified DeclContext.">ObjCPropertyDecl::findPropertyDecl</a>(*Ext, PropertyId)) {</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::err_duplicate_property);</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(prevDecl->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       }</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     }</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   }</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   <span class="comment">// Create a new ObjCPropertyDecl with the DeclContext being</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   <span class="comment">// the class extension.</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   <span class="comment">// FIXME. We should really be using CreatePropertyDecl for this.</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PDecl =</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html#ad7a63568ff585c972bec7d18065d832e">ObjCPropertyDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, DC, FD.<a class="code" href="structclang_1_1FieldDeclarator.html#a53db54883a89e3dfc2f024ad7c8a836d">D</a>.<a class="code" href="classclang_1_1Declarator.html#a9399027da6026803450f7ffb7957adac">getIdentifierLoc</a>(),</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>                              PropertyId, AtLoc, LParenLoc, T);</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#afa6be9739c36c4dc73bc2c9c6685bf0b">setPropertyAttributesAsWritten</a>(</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>                           <a class="code" href="SemaObjCProperty_8cpp.html#a2e00870a2b333dc4ea3ae2655693aee9">makePropertyAttributesAsWritten</a>(AttributesAsWritten));</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea6670cb1eb4fdf3be1fb8b2a4b50a9469">ObjCDeclSpec::DQ_PR_readonly</a>)</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7cda0703ffb6b55a12fe2a2d9c18e90">setPropertyAttributes</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>);</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eadd3236c931b1c11d2e301902133420a4">ObjCDeclSpec::DQ_PR_readwrite</a>)</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7cda0703ffb6b55a12fe2a2d9c18e90">setPropertyAttributes</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ac8b256d777df2a2a0e4895cb3bcf2ef0">ObjCPropertyDecl::OBJC_PR_readwrite</a>);</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea66eb92a2e80a59b98098f1d3a1018a46">ObjCDeclSpec::DQ_PR_nonatomic</a>)</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7cda0703ffb6b55a12fe2a2d9c18e90">setPropertyAttributes</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a9bc182e9e33edf812dd5e9000ad6d5ce">ObjCPropertyDecl::OBJC_PR_nonatomic</a>);</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaf7065dbbffb902f735039acdc27c5e27">ObjCDeclSpec::DQ_PR_atomic</a>)</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7cda0703ffb6b55a12fe2a2d9c18e90">setPropertyAttributes</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08acc3f6599e0d52d6f6fa52f2e07588b10">ObjCPropertyDecl::OBJC_PR_atomic</a>);</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="comment">// Set setter/getter selector name. Needed later.</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a945e137d3c674e985ec44d4ccec3a4e2">setGetterName</a>(GetterSel);</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#accbdb0d5b1763be80f71b21c7cb92c9a">setSetterName</a>(SetterSel);</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <a class="code" href="classclang_1_1Sema.html#ad7f317d35ff7e665f3a01dd93a22076d">ProcessDeclAttributes</a>(S, PDecl, FD.<a class="code" href="structclang_1_1FieldDeclarator.html#a53db54883a89e3dfc2f024ad7c8a836d">D</a>);</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   DC->addDecl(PDecl);</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   <span class="comment">// We need to look in the @interface to see if the @property was</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   <span class="comment">// already declared.</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="keywordflow">if</span> (!CCPrimary) {</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(CDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_continuation_class);</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     *isOverridingProperty = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   }</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span> </div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   <span class="comment">// Find the property in continuation class's primary class only.</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PIDecl =</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     CCPrimary-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#acd5cea5fa437e0b29c138ae5a514174f">FindPropertyVisibleInPrimaryClass</a>(PropertyId);</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   <span class="keywordflow">if</span> (!PIDecl) {</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     <span class="comment">// No matching property found in the primary class. Just fall thru</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     <span class="comment">// and add property to continuation class's primary class.</span></div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PrimaryPDecl =</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       <a class="code" href="classclang_1_1Sema.html#a4c436c782eabaed9a5f86186de3ecb9d">CreatePropertyDecl</a>(S, CCPrimary, AtLoc, LParenLoc,</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>                          FD, GetterSel, SetterSel, isAssign, isReadWrite,</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>                          Attributes,AttributesAsWritten, T, MethodImplKind, DC);</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> </div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <span class="comment">// A case of continuation class adding a new property in the class. This</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     <span class="comment">// is not what it was meant for. However, gcc supports it and so should we.</span></div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <span class="comment">// Make sure setter/getters are declared here.</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     <a class="code" href="classclang_1_1Sema.html#a171970a77b05346b320021d6d97dafc3">ProcessPropertyDecl</a>(PrimaryPDecl, CCPrimary, <span class="comment">/* redeclaredProperty = */</span> 0,</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>                         <span class="comment">/* lexicalDC = */</span> CDecl);</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af80219de1244ec08c9c3e3afdd3b16b1">setGetterMethodDecl</a>(PrimaryPDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7f00c5e70f112c0c7863f93c1872545">getGetterMethodDecl</a>());</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ad585a45817746ff31d5273a95e5ea8c1">setSetterMethodDecl</a>(PrimaryPDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a0deedcad9deaf37c5964646a16a6ef36">getSetterMethodDecl</a>());</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ASTMutationListener.html" title="An abstract interface that should be implemented by listeners that want to be notified when an AST en...">ASTMutationListener</a> *L = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ac066d895464e282e1f610a97eb6effd5" title="Retrieve a pointer to the AST mutation listener associated with this AST context, if any...">getASTMutationListener</a>())</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       L->AddedObjCPropertyInClassExtension(PrimaryPDecl, <span class="comment">/*OrigProp=*/</span>0, CDecl);</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     <span class="keywordflow">return</span> PrimaryPDecl;</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   }</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>(), PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>())) {</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     <span class="keywordtype">bool</span> IncompatibleObjC = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ConvertedType;</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     <span class="comment">// Relax the strict type matching for property type in continuation class.</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     <span class="comment">// Allow property object type of continuation class to be different as long</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     <span class="comment">// as it narrows the object type in its primary class property. Note that</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     <span class="comment">// this conversion is safe only because the wider type is for a 'readonly'</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     <span class="comment">// property in primary class and 'narrowed' type for a 'readwrite' property</span></div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     <span class="comment">// in continuation class.</span></div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     <span class="keywordflow">if</span> (!isa<ObjCObjectPointerType>(PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>()) ||</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         !isa<ObjCObjectPointerType>(PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>()) ||</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         (!<a class="code" href="classclang_1_1Sema.html#a6e114e48e852552fa5e157a79f1923a8">isObjCPointerConversion</a>(PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>(), PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>(), </div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>                                   ConvertedType, IncompatibleObjC))</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         || IncompatibleObjC) {</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>           diag::err_type_mismatch_continuation_class) << PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>();</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PIDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     }</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   }</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     </div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>   <span class="comment">// The property 'PIDecl's readonly attribute will be over-ridden</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   <span class="comment">// with continuation class's readwrite property attribute!</span></div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keywordtype">unsigned</span> PIkind = PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#abea5ac9eeb1d4c9d7db14d2c3c38714f">getPropertyAttributesAsWritten</a>();</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>   <span class="keywordflow">if</span> (isReadWrite && (PIkind & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>)) {</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     PIkind &= ~<a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a>::OBJC_PR_readonly;</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     PIkind |= <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ac8b256d777df2a2a0e4895cb3bcf2ef0">ObjCPropertyDecl::OBJC_PR_readwrite</a>;</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     PIkind |= <a class="code" href="SemaObjCProperty_8cpp.html#a734ea89e3bcfa15b80a61015b2425fe6">deduceWeakPropertyFromType</a>(*<span class="keyword">this</span>, PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>());</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     <span class="keywordtype">unsigned</span> ClassExtensionMemoryModel = <a class="code" href="SemaObjCProperty_8cpp.html#a645a2f511fa2eb7806920bd4f209f96d">getOwnershipRule</a>(Attributes);</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     <span class="keywordtype">unsigned</span> PrimaryClassMemoryModel = <a class="code" href="SemaObjCProperty_8cpp.html#a645a2f511fa2eb7806920bd4f209f96d">getOwnershipRule</a>(PIkind);</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <span class="keywordflow">if</span> (PrimaryClassMemoryModel && ClassExtensionMemoryModel &&</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         (PrimaryClassMemoryModel != ClassExtensionMemoryModel)) {</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::warn_property_attr_mismatch);</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PIDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     }</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount) {</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> PrimaryPropertyQT =</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>()).getUnqualifiedType();</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       <span class="keywordflow">if</span> (isa<ObjCObjectPointerType>(PrimaryPropertyQT)) {</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         <span class="keywordtype">bool</span> PropertyIsWeak = ((PIkind & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af015fdde1c948c8276c880434ef5dc0f">ObjCPropertyDecl::OBJC_PR_weak</a>) != 0);</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>         <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> PrimaryPropertyLifeTime =</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>           PrimaryPropertyQT.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>();</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>         <span class="keywordflow">if</span> (PrimaryPropertyLifeTime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a29b319bca942e44bf183ca2749b072b3" title="There is no lifetime qualification on this type.">Qualifiers::OCL_None</a> &&</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>             (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>) &&</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>             !PropertyIsWeak) {</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>               <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::warn_property_implicitly_mismatched);</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>               <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PIDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>             }</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         }</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     }</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     </div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC = cast<DeclContext>(CCPrimary);</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a38e441c64b246d28f5970128f7517870" title="Lookup a property by name in the specified DeclContext.">ObjCPropertyDecl::findPropertyDecl</a>(DC,</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>                                  PIDecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>().<a class="code" href="classclang_1_1DeclarationName.html#a1ac2d6e470af6bb6313c390760a1e155">getAsIdentifierInfo</a>())) {</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       <span class="comment">// Protocol is not in the primary class. Must build one for it.</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>       <a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a> ProtocolPropertyODS;</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       <span class="comment">// FIXME. Assuming that ObjCDeclSpec::ObjCPropertyAttributeKind</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       <span class="comment">// and ObjCPropertyDecl::PropertyAttributeKind have identical</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       <span class="comment">// values.  Should consolidate both into one enum type.</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>       ProtocolPropertyODS.</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       setPropertyAttributes((<a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076e" title="PropertyAttributeKind - list of property attributes.">ObjCDeclSpec::ObjCPropertyAttributeKind</a>)</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>                             PIkind);</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       <span class="comment">// Must re-establish the context from class extension to primary</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>       <span class="comment">// class context.</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>       <a class="code" href="classclang_1_1Sema_1_1ContextRAII.html" title="A RAII object to temporarily push a declaration context.">ContextRAII</a> SavedContext(*<span class="keyword">this</span>, CCPrimary);</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>       </div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>       <a class="code" href="classclang_1_1Decl.html">Decl</a> *ProtocolPtrTy =</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         <a class="code" href="classclang_1_1Sema.html#a7bc25a9295252e9fc9478d232b55e064">ActOnProperty</a>(S, AtLoc, LParenLoc, FD, ProtocolPropertyODS,</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>                       PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>(),</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>                       PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>(),</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>                       isOverridingProperty,</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>                       MethodImplKind,</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>                       <span class="comment">/* lexicalDC = */</span> CDecl);</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       PIDecl = cast<ObjCPropertyDecl>(ProtocolPtrTy);</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     }</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>     PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a993a10ad233e6ed6c1679a77becbebb5">makeitReadWriteAttribute</a>();</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a>)</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>       PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7cda0703ffb6b55a12fe2a2d9c18e90">setPropertyAttributes</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ab0393d37874d5dad992cab46cfc2c41d">ObjCPropertyDecl::OBJC_PR_retain</a>);</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>)</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>       PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7cda0703ffb6b55a12fe2a2d9c18e90">setPropertyAttributes</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>);</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a>)</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>       PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7cda0703ffb6b55a12fe2a2d9c18e90">setPropertyAttributes</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a48da21f81d458dd0c8567edfeb203024">ObjCPropertyDecl::OBJC_PR_copy</a>);</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#accbdb0d5b1763be80f71b21c7cb92c9a">setSetterName</a>(SetterSel);</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     <span class="comment">// Tailor the diagnostics for the common case where a readwrite</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     <span class="comment">// property is declared both in the @interface and the continuation.</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     <span class="comment">// This is a common error where the user often intended the original</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     <span class="comment">// declaration to be readonly.</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="keywordtype">unsigned</span> diag =</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eadd3236c931b1c11d2e301902133420a4">ObjCDeclSpec::DQ_PR_readwrite</a>) &&</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       (PIkind & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ac8b256d777df2a2a0e4895cb3bcf2ef0">ObjCPropertyDecl::OBJC_PR_readwrite</a>)</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>       ? diag::err_use_continuation_class_redeclaration_readwrite</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>       : diag::err_use_continuation_class;</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag)</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>       << CCPrimary-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PIDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   }</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   *isOverridingProperty = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   <span class="comment">// Make sure setter decl is synthesized, and added to primary class's list.</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   <a class="code" href="classclang_1_1Sema.html#a171970a77b05346b320021d6d97dafc3">ProcessPropertyDecl</a>(PIDecl, CCPrimary, PDecl, CDecl);</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>   PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af80219de1244ec08c9c3e3afdd3b16b1">setGetterMethodDecl</a>(PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7f00c5e70f112c0c7863f93c1872545">getGetterMethodDecl</a>());</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   PDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ad585a45817746ff31d5273a95e5ea8c1">setSetterMethodDecl</a>(PIDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a0deedcad9deaf37c5964646a16a6ef36">getSetterMethodDecl</a>());</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ASTMutationListener.html" title="An abstract interface that should be implemented by listeners that want to be notified when an AST en...">ASTMutationListener</a> *L = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ac066d895464e282e1f610a97eb6effd5" title="Retrieve a pointer to the AST mutation listener associated with this AST context, if any...">getASTMutationListener</a>())</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     L->AddedObjCPropertyInClassExtension(PDecl, PIDecl, CDecl);</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>   <span class="keywordflow">return</span> PDecl;</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> }</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> </div>
+<div class="line"><a name="l00535"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a4c436c782eabaed9a5f86186de3ecb9d">  535</a></span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *<a class="code" href="classclang_1_1Sema.html#a4c436c782eabaed9a5f86186de3ecb9d">Sema::CreatePropertyDecl</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>                                            <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *CDecl,</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>                                            <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtLoc,</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>                                            <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LParenLoc,</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>                                            <a class="code" href="structclang_1_1FieldDeclarator.html" title="This little struct is used to capture information about structure field declarators, which is basically just a bitfield size.">FieldDeclarator</a> &FD,</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>                                            <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> GetterSel,</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>                                            <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> SetterSel,</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>                                            <span class="keyword">const</span> <span class="keywordtype">bool</span> isAssign,</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>                                            <span class="keyword">const</span> <span class="keywordtype">bool</span> isReadWrite,</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>                                            <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a>,</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>                                            <span class="keyword">const</span> <span class="keywordtype">unsigned</span> AttributesAsWritten,</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>                                            <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo,</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>                                            <a class="code" href="namespaceclang_1_1tok.html#a8bd1e86849bee8ef3fed043919c0a0e8" title="Provides a namespace for Objective-C keywords which start with an '@'.">tok::ObjCKeywordKind</a> MethodImplKind,</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>                                            <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *lexicalDC){</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *PropertyId = FD.<a class="code" href="structclang_1_1FieldDeclarator.html#a53db54883a89e3dfc2f024ad7c8a836d">D</a>.<a class="code" href="classclang_1_1Declarator.html#ac1465e02d2f6c8fa2a8aa69d8bdcec51">getIdentifier</a>();</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T = TInfo-><a class="code" href="classclang_1_1TypeSourceInfo.html#affbab53588a16a2bc948f2493d93a4e2" title="Return the type wrapped by this type source info.">getType</a>();</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   <span class="comment">// Issue a warning if property is 'assign' as default and its object, which is</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>   <span class="comment">// gc'able conforms to NSCopying protocol</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a> &&</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>       isAssign && !(Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea21e6ab8ff00919ac24fbbef723b1f221">ObjCDeclSpec::DQ_PR_assign</a>))</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *ObjPtrTy =</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>           T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()) {</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl = ObjPtrTy->getObjectType()->getInterface();</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       <span class="keywordflow">if</span> (IDecl)</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a>* PNSCopying =</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>             <a class="code" href="classclang_1_1Sema.html#a99744fb16551075377767439ed06a2d6" title="Find the protocol with the given name, if any.">LookupProtocol</a>(&<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"NSCopying"</span>), AtLoc))</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>           <span class="keywordflow">if</span> (IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aa4e3807c44d54dec48c427351cf4e5de">ClassImplementsProtocol</a>(PNSCopying, <span class="keyword">true</span>))</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::warn_implements_nscopying) << PropertyId;</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>     }</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span> </div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a044e6e3fc98266ba0e065860aa6f7305">isObjCObjectType</a>()) {</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> StarLoc = TInfo-><a class="code" href="classclang_1_1TypeSourceInfo.html#a51bc61879d5926193a3bb3ee1a280fee" title="Return the TypeLoc wrapper for the type source info.">getTypeLoc</a>().<a class="code" href="classclang_1_1TypeLoc.html#a401abb72f55abc05fa83c19b522f310d">getLocEnd</a>();</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     StarLoc = <a class="code" href="classclang_1_1Sema.html#a6829f2b169c74ad544c53a8b1415061b">PP</a>.<a class="code" href="classclang_1_1Preprocessor.html#aef7193e9d262ea6852d666beb28dc1a0" title="Computes the source location just past the end of the token at this source location.">getLocForEndOfToken</a>(StarLoc);</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(FD.<a class="code" href="structclang_1_1FieldDeclarator.html#a53db54883a89e3dfc2f024ad7c8a836d">D</a>.<a class="code" href="classclang_1_1Declarator.html#a9399027da6026803450f7ffb7957adac">getIdentifierLoc</a>(), diag::err_statically_allocated_object)</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>       << <a class="code" href="classclang_1_1FixItHint.html#afd481d826e9ddaa39fc82a698a810246" title="Create a code modification hint that inserts the given code string at a specific location.">FixItHint::CreateInsertion</a>(StarLoc, <span class="stringliteral">"*"</span>);</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     T = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a5c1abc77f994ace61ebfd7c864b64244" title="Return a ObjCObjectPointerType type for the given ObjCObjectType.">getObjCObjectPointerType</a>(T);</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> TLoc = TInfo-><a class="code" href="classclang_1_1TypeSourceInfo.html#a51bc61879d5926193a3bb3ee1a280fee" title="Return the TypeLoc wrapper for the type source info.">getTypeLoc</a>().<a class="code" href="classclang_1_1TypeLoc.html#afa4ab3b74c89a0e3e45071e63049cf28">getLocStart</a>();</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     TInfo = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ab52efd4ef8c5cd4f78dbba824615caa2" title="Allocate a TypeSourceInfo where all locations have been initialized to a given location, which defaults to the empty location.">getTrivialTypeSourceInfo</a>(T, TLoc);</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>   }</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> </div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>   <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC = cast<DeclContext>(CDecl);</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PDecl = <a class="code" href="classclang_1_1ObjCPropertyDecl.html#ad7a63568ff585c972bec7d18065d832e">ObjCPropertyDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, DC,</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>                                                      FD.<a class="code" href="structclang_1_1FieldDeclarator.html#a53db54883a89e3dfc2f024ad7c8a836d">D</a>.<a class="code" href="classclang_1_1Declarator.html#a9399027da6026803450f7ffb7957adac">getIdentifierLoc</a>(),</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>                                                      PropertyId, AtLoc, LParenLoc, TInfo);</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> </div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *prevDecl =</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a38e441c64b246d28f5970128f7517870" title="Lookup a property by name in the specified DeclContext.">ObjCPropertyDecl::findPropertyDecl</a>(DC, PropertyId)) {</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PDecl->getLocation(), diag::err_duplicate_property);</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(prevDecl->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>     PDecl->setInvalidDecl();</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   }</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>     DC-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(PDecl);</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>     <span class="keywordflow">if</span> (lexicalDC)</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       PDecl->setLexicalDeclContext(lexicalDC);</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>   }</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span> </div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>   <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>() || T-><a class="code" href="classclang_1_1Type.html#af0ae1f40cbbc07fabfefc86af91072e3">isFunctionType</a>()) {</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::err_property_type) << T;</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>     PDecl->setInvalidDecl();</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   }</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span> </div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   <a class="code" href="classclang_1_1Sema.html#ad7f317d35ff7e665f3a01dd93a22076d">ProcessDeclAttributes</a>(S, PDecl, FD.<a class="code" href="structclang_1_1FieldDeclarator.html#a53db54883a89e3dfc2f024ad7c8a836d">D</a>);</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span> </div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>   <span class="comment">// Regardless of setter/getter attribute, we save the default getter/setter</span></div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   <span class="comment">// selector names in anticipation of declaration of setter/getter methods.</span></div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>   PDecl->setGetterName(GetterSel);</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   PDecl->setSetterName(SetterSel);</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   PDecl->setPropertyAttributesAsWritten(</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>                           <a class="code" href="SemaObjCProperty_8cpp.html#a2e00870a2b333dc4ea3ae2655693aee9">makePropertyAttributesAsWritten</a>(AttributesAsWritten));</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span> </div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea6670cb1eb4fdf3be1fb8b2a4b50a9469">ObjCDeclSpec::DQ_PR_readonly</a>)</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>);</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span> </div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea169831cad04669fed7359d7ec9b8fd12">ObjCDeclSpec::DQ_PR_getter</a>)</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a5edee39a57a4303f10c29a44b852d326">ObjCPropertyDecl::OBJC_PR_getter</a>);</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span> </div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea75d33da549161c49b9c68bac97e48e08">ObjCDeclSpec::DQ_PR_setter</a>)</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a27ef6bda1ec8442c7e5c700c62f61284">ObjCPropertyDecl::OBJC_PR_setter</a>);</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> </div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>   <span class="keywordflow">if</span> (isReadWrite)</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ac8b256d777df2a2a0e4895cb3bcf2ef0">ObjCPropertyDecl::OBJC_PR_readwrite</a>);</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span> </div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a>)</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ab0393d37874d5dad992cab46cfc2c41d">ObjCPropertyDecl::OBJC_PR_retain</a>);</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span> </div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>)</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>);</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span> </div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>)</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af015fdde1c948c8276c880434ef5dc0f">ObjCPropertyDecl::OBJC_PR_weak</a>);</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span> </div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a>)</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a48da21f81d458dd0c8567edfeb203024">ObjCPropertyDecl::OBJC_PR_copy</a>);</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span> </div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea628b0bb8dec9bc465ec2670ab322fa66">ObjCDeclSpec::DQ_PR_unsafe_unretained</a>)</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af5b0cc87b394e28d14b705c8be54ca72">ObjCPropertyDecl::OBJC_PR_unsafe_unretained</a>);</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span> </div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>   <span class="keywordflow">if</span> (isAssign)</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af775b1b5ade4436b6791b54377a44735">ObjCPropertyDecl::OBJC_PR_assign</a>);</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span> </div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>   <span class="comment">// In the semantic attributes, one of nonatomic or atomic is always set.</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea66eb92a2e80a59b98098f1d3a1018a46">ObjCDeclSpec::DQ_PR_nonatomic</a>)</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a9bc182e9e33edf812dd5e9000ad6d5ce">ObjCPropertyDecl::OBJC_PR_nonatomic</a>);</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08acc3f6599e0d52d6f6fa52f2e07588b10">ObjCPropertyDecl::OBJC_PR_atomic</a>);</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span> </div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>   <span class="comment">// 'unsafe_unretained' is alias for 'assign'.</span></div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>   <span class="keywordflow">if</span> (Attributes & ObjCDeclSpec::DQ_PR_unsafe_unretained)</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af775b1b5ade4436b6791b54377a44735">ObjCPropertyDecl::OBJC_PR_assign</a>);</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>   <span class="keywordflow">if</span> (isAssign)</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     PDecl->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af5b0cc87b394e28d14b705c8be54ca72">ObjCPropertyDecl::OBJC_PR_unsafe_unretained</a>);</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span> </div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   <span class="keywordflow">if</span> (MethodImplKind == tok::objc_required)</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     PDecl->setPropertyImplementation(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a79a227c96a7b7d27c72c069e1e3d88aeaedfa4cb172485f520eac99af81d95123">ObjCPropertyDecl::Required</a>);</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (MethodImplKind == tok::objc_optional)</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     PDecl->setPropertyImplementation(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a79a227c96a7b7d27c72c069e1e3d88aead71875caeec7ce6b43a8be66b3644edc">ObjCPropertyDecl::Optional</a>);</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span> </div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <span class="keywordflow">return</span> PDecl;</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span> }</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span> </div>
+<div class="line"><a name="l00657"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a3a737267fa458320f727f4768b9c756d">  657</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaObjCProperty_8cpp.html#a3a737267fa458320f727f4768b9c756d">checkARCPropertyImpl</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> propertyImplLoc,</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>                                  <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *property,</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>                                  <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar) {</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   <span class="keywordflow">if</span> (property-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>() || ivar-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span> </div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ivarType = ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> ivarLifetime = ivarType.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>();</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span> </div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="comment">// The lifetime implied by the property's attributes.</span></div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> propertyLifetime =</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     <a class="code" href="SemaObjCProperty_8cpp.html#a7042dd0a227864d08af3126e4f671ee0">getImpliedARCOwnership</a>(property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>(),</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>                            <span class="keyword">property</span>->getType());</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span> </div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   <span class="comment">// We're fine if they match.</span></div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   <span class="keywordflow">if</span> (propertyLifetime == ivarLifetime) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span> </div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>   <span class="comment">// These aren't valid lifetimes for object ivars;  don't diagnose twice.</span></div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>   <span class="keywordflow">if</span> (ivarLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a29b319bca942e44bf183ca2749b072b3" title="There is no lifetime qualification on this type.">Qualifiers::OCL_None</a> ||</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>       ivarLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300afd7d211973aef2cc5945b96a963f0e4f" title="Assigning into this object requires a lifetime extension.">Qualifiers::OCL_Autoreleasing</a>)</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span> </div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   <span class="comment">// If the ivar is private, and it's implicitly __unsafe_unretained</span></div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   <span class="comment">// becaues of its type, then pretend it was actually implicitly</span></div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="comment">// __strong.  This is only sound because we're processing the</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   <span class="comment">// property implementation before parsing any method bodies.</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="keywordflow">if</span> (ivarLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a> &&</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>       propertyLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a> &&</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>       ivar-><a class="code" href="classclang_1_1ObjCIvarDecl.html#a7f30051db17903f55c3519750886277a">getAccessControl</a>() == <a class="code" href="classclang_1_1ObjCIvarDecl.html#a6a902654b0b06d4a7392ab64a8ca3a9da8f6f25fa365a12828014e00b885acd8e">ObjCIvarDecl::Private</a>) {</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     <a class="code" href="structclang_1_1SplitQualType.html">SplitQualType</a> split = ivarType.<a class="code" href="classclang_1_1QualType.html#ac57032f53bd8e552879318a1f377c7b0">split</a>();</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     <span class="keywordflow">if</span> (split.<a class="code" href="structclang_1_1SplitQualType.html#ae72870b2d6460e848856998c1e3573f9" title="The local qualifiers.">Quals</a>.<a class="code" href="classclang_1_1Qualifiers.html#aeb4f70f6bf4f8248170b71a5eebd2df1">hasObjCLifetime</a>()) {</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>       assert(ivarType-><a class="code" href="classclang_1_1Type.html#ab43ca2fc1fad7fe8e1126f6e75e46c95">isObjCARCImplicitlyUnretainedType</a>());</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       split.<a class="code" href="structclang_1_1SplitQualType.html#ae72870b2d6460e848856998c1e3573f9" title="The local qualifiers.">Quals</a>.<a class="code" href="classclang_1_1Qualifiers.html#afb1dbfbf558d4ef07b70fa1cc43cef07">setObjCLifetime</a>(<a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>);</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>       ivarType = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1995e62dee79876059ef940d76a38983" title="Un-split a SplitQualType.">getQualifiedType</a>(split);</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>       ivar-><a class="code" href="classclang_1_1ValueDecl.html#a3a82ca5762f3fb1c2d25d9cf63728cd2">setType</a>(ivarType);</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     }</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   }</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span> </div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <span class="keywordflow">switch</span> (propertyLifetime) {</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>:</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_arc_strong_property_ownership)</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>       << property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>       << ivar-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>       << ivarLifetime;</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span> </div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300ad62a7a19d7027c37d407d2ca7638a89c" title="Reading or writing from this object requires a barrier call.">Qualifiers::OCL_Weak</a>:</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::error_weak_property)</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       << property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       << ivar-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span> </div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>:</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_arc_assign_property_ownership)</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>       << property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>       << ivar-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       << ((<span class="keyword">property</span>->getPropertyAttributesAsWritten() </div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>            & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af775b1b5ade4436b6791b54377a44735">ObjCPropertyDecl::OBJC_PR_assign</a>) != 0);</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span> </div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300afd7d211973aef2cc5945b96a963f0e4f" title="Assigning into this object requires a lifetime extension.">Qualifiers::OCL_Autoreleasing</a>:</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     llvm_unreachable(<span class="stringliteral">"properties cannot be autoreleasing"</span>);</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span> </div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a29b319bca942e44bf183ca2749b072b3" title="There is no lifetime qualification on this type.">Qualifiers::OCL_None</a>:</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>     <span class="comment">// Any other property should be ignored.</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>   }</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span> </div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>   S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <span class="keywordflow">if</span> (propertyImplLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>())</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(propertyImplLoc, diag::note_property_synthesize);</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span> }</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span> <span class="comment"></span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span> <span class="comment">/// setImpliedPropertyAttributeForReadOnlyProperty -</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span> <span class="comment">/// This routine evaludates life-time attributes for a 'readonly'</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span> <span class="comment">/// property with no known lifetime of its own, using backing</span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span> <span class="comment">/// 'ivar's attribute, if any. If no backing 'ivar', property's</span></div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> <span class="comment">/// life-time is assumed 'strong'.</span></div>
+<div class="line"><a name="l00735"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a53be9c620b612ae96c82c3ee59d46dad">  735</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaObjCProperty_8cpp.html#a53be9c620b612ae96c82c3ee59d46dad">setImpliedPropertyAttributeForReadOnlyProperty</a>(</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>               <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *property, <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar) {</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> propertyLifetime = </div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     <a class="code" href="SemaObjCProperty_8cpp.html#a7042dd0a227864d08af3126e4f671ee0">getImpliedARCOwnership</a>(property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>(),</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>                            <span class="keyword">property</span>->getType());</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>   <span class="keywordflow">if</span> (propertyLifetime != <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a29b319bca942e44bf183ca2749b072b3" title="There is no lifetime qualification on this type.">Qualifiers::OCL_None</a>)</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>   </div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>   <span class="keywordflow">if</span> (!ivar) {</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     <span class="comment">// if no backing ivar, make property 'strong'.</span></div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>     <span class="keyword">property</span>->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>);</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>   }</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   <span class="comment">// property assumes owenership of backing ivar.</span></div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ivarType = ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>   <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> ivarLifetime = ivarType.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>();</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <span class="keywordflow">if</span> (ivarLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>)</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>     <span class="keyword">property</span>->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>);</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ivarLifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300ad62a7a19d7027c37d407d2ca7638a89c" title="Reading or writing from this object requires a barrier call.">Qualifiers::OCL_Weak</a>)</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>     <span class="keyword">property</span>->setPropertyAttributes(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af015fdde1c948c8276c880434ef5dc0f">ObjCPropertyDecl::OBJC_PR_weak</a>);</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>   <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span> }</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span> <span class="comment"></span></div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span> <span class="comment">/// DiagnosePropertyMismatchDeclInProtocols - diagnose properties declared</span></div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span> <span class="comment">/// in inherited protocols with mismatched types. Since any of them can</span></div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span> <span class="comment">/// be candidate for synthesis.</span></div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a73c19982b7acd1634b0e1db086f88586">  762</a></span> <a class="code" href="SemaObjCProperty_8cpp.html#a73c19982b7acd1634b0e1db086f88586">DiagnosePropertyMismatchDeclInProtocols</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtLoc,</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>                                         <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *ClassDecl,</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>                                         <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Property) {</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>   <a class="code" href="classclang_1_1ObjCContainerDecl.html#a7c2d95527fe3bbd93c5975ec4c4b6421">ObjCInterfaceDecl::ProtocolPropertyMap</a> PropMap;</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a9da2d6646fb8c8dd1793f81688b6c0f0">ObjCInterfaceDecl::all_protocol_iterator</a></div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>        PI = ClassDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a430f01ff8c8c1294fd13db1d11c2bbd9">all_referenced_protocol_begin</a>(),</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>        E = ClassDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a6b647c530b962651ef1a0912da0fe121">all_referenced_protocol_end</a>(); PI != E; ++PI) {</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PDecl = (*PI)-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#acaa3df11f4600181c0910838bea02172" title="Retrieve the definition of this protocol, if any.">getDefinition</a>())</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>       PDecl->collectInheritedProtocolProperties(Property, PropMap);</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>   }</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *SDecl = ClassDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a5f23eb5cda9e27622e71382d1dc4b95d">getSuperClass</a>())</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>     <span class="keywordflow">while</span> (SDecl) {</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a9da2d6646fb8c8dd1793f81688b6c0f0">ObjCInterfaceDecl::all_protocol_iterator</a></div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>            PI = SDecl->all_referenced_protocol_begin(),</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>            E = SDecl->all_referenced_protocol_end(); PI != E; ++PI) {</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PDecl = (*PI)-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#acaa3df11f4600181c0910838bea02172" title="Retrieve the definition of this protocol, if any.">getDefinition</a>())</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>           PDecl->collectInheritedProtocolProperties(Property, PropMap);</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>       }</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>       SDecl = SDecl->getSuperClass();</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>     }</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>   </div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>   <span class="keywordflow">if</span> (PropMap.empty())</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>   </div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> RHSType = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>());</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>   <span class="keywordtype">bool</span> FirsTime = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>   <span class="keywordflow">for</span> (ObjCInterfaceDecl::ProtocolPropertyMap::iterator</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>        I = PropMap.begin(), E = PropMap.end(); I != E; I++) {</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Prop = I->second;</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> LHSType = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>());</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>     <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a35c7a28ad7871a1f8a6d31b483a55602">propertyTypesAreCompatible</a>(LHSType, RHSType)) {</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>       <span class="keywordtype">bool</span> IncompatibleObjC = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> ConvertedType;</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>       <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a6e114e48e852552fa5e157a79f1923a8">isObjCPointerConversion</a>(RHSType, LHSType, ConvertedType, IncompatibleObjC)</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>           || IncompatibleObjC) {</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>         <span class="keywordflow">if</span> (FirsTime) {</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>           S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_protocol_property_mismatch)</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>             << Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>();</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>           FirsTime = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>         }</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>         S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Prop-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_protocol_property_declare)</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>           << Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>();</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       }</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     }</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>   }</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>   <span class="keywordflow">if</span> (!FirsTime && AtLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>())</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>     S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::note_property_synthesize);</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span> }</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span> <span class="comment"></span></div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span> <span class="comment">/// ActOnPropertyImplDecl - This routine performs semantic checks and</span></div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span> <span class="comment">/// builds the AST node for a property implementation declaration; declared</span></div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span> <span class="comment">/// as \@synthesize or \@dynamic.</span></div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00815"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a547aaf1d9f35839049fbc23de7c30dc7">  815</a></span> <span class="comment"></span><a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Sema.html#a547aaf1d9f35839049fbc23de7c30dc7">Sema::ActOnPropertyImplDecl</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>                                   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtLoc,</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>                                   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> PropertyLoc,</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>                                   <span class="keywordtype">bool</span> Synthesize,</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>                                   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *PropertyId,</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>                                   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *PropertyIvar,</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>                                   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> PropertyIvarLoc) {</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>   <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *ClassImpDecl =</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>     dyn_cast<<a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a>>(<a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>);</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>   <span class="comment">// Make sure we have a context for the property implementation declaration.</span></div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>   <span class="keywordflow">if</span> (!ClassImpDecl) {</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::error_missing_property_context);</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>   }</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>   <span class="keywordflow">if</span> (PropertyIvarLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     PropertyIvarLoc = PropertyLoc;</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> PropertyDiagLoc = PropertyLoc;</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>   <span class="keywordflow">if</span> (PropertyDiagLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     PropertyDiagLoc = ClassImpDecl-><a class="code" href="classclang_1_1Decl.html#ae66a13d419e9cad2f6c3643bfce45c54">getLocStart</a>();</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *<span class="keyword">property</span> = 0;</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>* IDecl = 0;</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>   <span class="comment">// Find the class or category class where this property must have</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>   <span class="comment">// a declaration.</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>   <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *IC = 0;</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>   <a class="code" href="classclang_1_1ObjCCategoryImplDecl.html">ObjCCategoryImplDecl</a>* CatImplClass = 0;</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>   <span class="keywordflow">if</span> ((IC = dyn_cast<ObjCImplementationDecl>(ClassImpDecl))) {</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     IDecl = IC-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>();</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     <span class="comment">// We always synthesize an interface for an implementation</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>     <span class="comment">// without an interface decl. So, IDecl is always non-zero.</span></div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     assert(IDecl &&</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>            <span class="stringliteral">"ActOnPropertyImplDecl - @implementation without @interface"</span>);</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span> </div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>     <span class="comment">// Look for this property declaration in the @implementation's @interface</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     <span class="keyword">property</span> = IDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#af9e27df54a37f3414e0896d56a8c0b1f">FindPropertyDeclaration</a>(PropertyId);</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>     <span class="keywordflow">if</span> (!property) {</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyLoc, diag::error_bad_property_decl) << IDecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>     }</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     <span class="keywordtype">unsigned</span> PIkind = <span class="keyword">property</span>->getPropertyAttributesAsWritten();</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     <span class="keywordflow">if</span> ((PIkind & (<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08acc3f6599e0d52d6f6fa52f2e07588b10">ObjCPropertyDecl::OBJC_PR_atomic</a> |</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>                    <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a9bc182e9e33edf812dd5e9000ad6d5ce">ObjCPropertyDecl::OBJC_PR_nonatomic</a>) ) == 0) {</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>       <span class="keywordflow">if</span> (AtLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>())</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::warn_implicit_atomic_property);</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IC-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_auto_implicit_atomic_property);</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>     }</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>     </div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CD =</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>         dyn_cast<ObjCCategoryDecl>(property->getDeclContext())) {</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>       <span class="keywordflow">if</span> (!CD->IsClassExtension()) {</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyLoc, diag::error_category_property) << CD->getDeclName();</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>         <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>       }</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>     }</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>     <span class="keywordflow">if</span> (Synthesize&&</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>         (PIkind & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>) &&</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>         <span class="keyword">property</span>->hasAttr<<a class="code" href="classclang_1_1IBOutletAttr.html">IBOutletAttr</a>>() &&</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>         !AtLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>()) {</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>       <span class="keywordtype">bool</span> ReadWriteProperty = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       <span class="comment">// Search into the class extensions and see if 'readonly property is</span></div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       <span class="comment">// redeclared 'readwrite', then no warning is to be issued.</span></div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl_1_1filtered__category__iterator.html" title="Iterator that walks over the list of categories, filtering out those that do not meet specific criter...">ObjCInterfaceDecl::known_extensions_iterator</a></div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>             Ext = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#ae8a5db36f5cc75890b386c2f9fe3e71d" title="Retrieve an iterator to the beginning of the known-extensions list.">known_extensions_begin</a>(),</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>             ExtEnd = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a6c3d90b10af9218ad5f190df9a7db0b5" title="Retrieve an iterator to the end of the known-extensions list.">known_extensions_end</a>(); Ext != ExtEnd; ++Ext) {</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>         <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">DeclContext::lookup_result</a> R = Ext->lookup(property->getDeclName());</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>         <span class="keywordflow">if</span> (!R.empty())</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>           <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *ExtProp = dyn_cast<ObjCPropertyDecl>(R[0])) {</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>             PIkind = ExtProp->getPropertyAttributesAsWritten();</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>             <span class="keywordflow">if</span> (PIkind & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ac8b256d777df2a2a0e4895cb3bcf2ef0">ObjCPropertyDecl::OBJC_PR_readwrite</a>) {</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>               ReadWriteProperty = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>               <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>             }</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>           }</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>       }</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>       </div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>       <span class="keywordflow">if</span> (!ReadWriteProperty) {</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::warn_auto_readonly_iboutlet_property)</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>             << property->getName();</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>         <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> readonlyLoc;</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>         <span class="keywordflow">if</span> (<a class="code" href="SemaObjCProperty_8cpp.html#a3e3b5a0bd05ce452cd76a0d2ce264043">LocPropertyAttribute</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <span class="stringliteral">"readonly"</span>, </div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>                                  property->getLParenLoc(), readonlyLoc)) {</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>           <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> endLoc = </div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>             readonlyLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(strlen(<span class="stringliteral">"readonly"</span>)-1);</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>           <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> ReadonlySourceRange(readonlyLoc, endLoc);</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), </div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>                diag::note_auto_readonly_iboutlet_fixup_suggest) <<</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>           <a class="code" href="classclang_1_1FixItHint.html#a90e122cd34933ba821718385fddfae7a" title="Create a code modification hint that replaces the given source range with the given code string...">FixItHint::CreateReplacement</a>(ReadonlySourceRange, <span class="stringliteral">"readwrite"</span>);</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>         }</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>       }</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>     }</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>     <span class="keywordflow">if</span> (Synthesize && isa<ObjCProtocolDecl>(property->getDeclContext()))</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>       <a class="code" href="SemaObjCProperty_8cpp.html#a73c19982b7acd1634b0e1db086f88586">DiagnosePropertyMismatchDeclInProtocols</a>(*<span class="keyword">this</span>, AtLoc, IDecl, property);</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>         </div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((CatImplClass = dyn_cast<ObjCCategoryImplDecl>(ClassImpDecl))) {</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>     <span class="keywordflow">if</span> (Synthesize) {</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::error_synthesize_category_decl);</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>     }</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>     IDecl = CatImplClass-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>();</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>     <span class="keywordflow">if</span> (!IDecl) {</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::error_missing_property_interface);</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>     }</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *Category =</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>     IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a38f6341423d6259490b11350838b7b65">FindCategoryDeclaration</a>(CatImplClass-><a class="code" href="classclang_1_1ObjCCategoryImplDecl.html#acfd58b44aa57cb04907fec87b0297f93">getIdentifier</a>());</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span> </div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>     <span class="comment">// If category for this implementation not found, it is an error which</span></div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>     <span class="comment">// has already been reported eralier.</span></div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>     <span class="keywordflow">if</span> (!Category)</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>     <span class="comment">// Look for this property declaration in @implementation's category</span></div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>     <span class="keyword">property</span> = Category-><a class="code" href="classclang_1_1ObjCContainerDecl.html#af9e27df54a37f3414e0896d56a8c0b1f">FindPropertyDeclaration</a>(PropertyId);</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>     <span class="keywordflow">if</span> (!property) {</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyLoc, diag::error_bad_category_property_decl)</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>       << Category-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>     }</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtLoc, diag::error_bad_property_context);</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>   }</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>   <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar = 0;</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   <span class="keywordtype">bool</span> CompleteTypeErr = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>   <span class="keywordtype">bool</span> compat = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>   <span class="comment">// Check that we have a valid, previously declared ivar for @synthesize</span></div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>   <span class="keywordflow">if</span> (Synthesize) {</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>     <span class="comment">// @synthesize</span></div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     <span class="keywordflow">if</span> (!PropertyIvar)</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>       PropertyIvar = PropertyId;</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     <span class="comment">// Check that this is a previously declared 'ivar' in 'IDecl' interface</span></div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>     <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *ClassDeclared;</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>     Ivar = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1a0c954cf7c0fbbf77b4bf65c5a5c604">lookupInstanceVariable</a>(PropertyIvar, ClassDeclared);</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> PropType = <span class="keyword">property</span>->getType();</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> PropertyIvarType = PropType.<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>();</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span> </div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(PropertyDiagLoc, PropertyIvarType,</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>                             diag::err_incomplete_synthesized_property,</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>                             property->getDeclName())) {</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>       CompleteTypeErr = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>     }</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span> </div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>         (<span class="keyword">property</span>->getPropertyAttributesAsWritten() &</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>          <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>) &&</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>         PropertyIvarType-><a class="code" href="classclang_1_1Type.html#aefead70d5348015b03c14f274621789c">isObjCRetainableType</a>()) {</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>       <a class="code" href="SemaObjCProperty_8cpp.html#a53be9c620b612ae96c82c3ee59d46dad">setImpliedPropertyAttributeForReadOnlyProperty</a>(property, Ivar);    </div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>     }</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>     </div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08">ObjCPropertyDecl::PropertyAttributeKind</a> <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a> </div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>       = <span class="keyword">property</span>->getPropertyAttributes();</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span> </div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>     <span class="comment">// Add GC __weak to the ivar type if the property is weak.</span></div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>     <span class="keywordflow">if</span> ((kind & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08af015fdde1c948c8276c880434ef5dc0f">ObjCPropertyDecl::OBJC_PR_weak</a>) && </div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>         <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>) {</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>       assert(!<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount);</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>       <span class="keywordflow">if</span> (PropertyIvarType.<a class="code" href="classclang_1_1QualType.html#a14082db735b2de31f1c3a117b52016e4" title="isObjCGCStrong true when Type is objc's strong.">isObjCGCStrong</a>()) {</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::err_gc_weak_property_strong_type);</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>         PropertyIvarType =</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>           <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ad6aadf0769883e34fb3481cf38f0986d" title="Return the uniqued reference to the type for an Objective-C gc-qualified type.">getObjCGCQualType</a>(PropertyIvarType, <a class="code" href="classclang_1_1Qualifiers.html#ac385e8f4b76a81b9668d05335e62308ead5594339da5918c05fdb973cec934f22">Qualifiers::Weak</a>);</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>       }</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>     }</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>     <span class="keywordflow">if</span> (AtLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>()) {</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>       <span class="comment">// Check when default synthesizing a property that there is </span></div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>       <span class="comment">// an ivar matching property name and issue warning; since this</span></div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>       <span class="comment">// is the most common case of not using an ivar used for backing</span></div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>       <span class="comment">// property in non-default synthesis case.</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>       <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *ClassDeclared=0;</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>       <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *originalIvar = </div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1a0c954cf7c0fbbf77b4bf65c5a5c604">lookupInstanceVariable</a>(property->getIdentifier(), </div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>                                     ClassDeclared);</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>       <span class="keywordflow">if</span> (originalIvar) {</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, </div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>              diag::warn_autosynthesis_property_ivar_match)</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>         << PropertyId << (Ivar == 0) << PropertyIvar </div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>         << originalIvar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>();</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(originalIvar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_ivar_decl);</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>       }</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>     }</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     </div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>     <span class="keywordflow">if</span> (!Ivar) {</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>       <span class="comment">// In ARC, give the ivar a lifetime qualifier based on the</span></div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>       <span class="comment">// property attributes.</span></div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>           !PropertyIvarType.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>() &&</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>           PropertyIvarType-><a class="code" href="classclang_1_1Type.html#aefead70d5348015b03c14f274621789c">isObjCRetainableType</a>()) {</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>         <span class="comment">// It's an error if we have to do this and the user didn't</span></div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>         <span class="comment">// explicitly write an ownership attribute on the property.</span></div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>         <span class="keywordflow">if</span> (!property->hasWrittenStorageAttribute() &&</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>             !(kind & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>)) {</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc,</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>                diag::err_arc_objc_property_default_assign_on_object);</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>           <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> lifetime =</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>             <a class="code" href="SemaObjCProperty_8cpp.html#a7042dd0a227864d08af3126e4f671ee0">getImpliedARCOwnership</a>(kind, PropertyIvarType);</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>           assert(lifetime && <span class="stringliteral">"no lifetime for property?"</span>);</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>           <span class="keywordflow">if</span> (lifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300ad62a7a19d7027c37d407d2ca7638a89c" title="Reading or writing from this object requires a barrier call.">Qualifiers::OCL_Weak</a>) {</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>             <span class="keywordtype">bool</span> err = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>             <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *ObjT =</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>                 PropertyIvarType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()) {</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>               <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *ObjI = ObjT->getInterfaceDecl();</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>               <span class="keywordflow">if</span> (ObjI && ObjI-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a462f0cc171d1650be7378a6533e81efd">isArcWeakrefUnavailable</a>()) {</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>                 <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(),</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>                      diag::err_arc_weak_unavailable_property) << PropertyIvarType;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>                 <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassImpDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_implemented_by_class)</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>                   << ClassImpDecl-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>();</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>                 err = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>               }</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>             }</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>             <span class="keywordflow">if</span> (!err && !<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCARCWeak) {</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>               <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::err_arc_weak_no_runtime);</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>               <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>             }</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>           }</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>           </div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>           <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> qs;</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>           qs.<a class="code" href="classclang_1_1Qualifiers.html#af9d94b26c5c491827b2ed5bbdb8f50b5">addObjCLifetime</a>(lifetime);</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>           PropertyIvarType = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1995e62dee79876059ef940d76a38983" title="Un-split a SplitQualType.">getQualifiedType</a>(PropertyIvarType, qs);   </div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>         }</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>       }</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> </div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>       <span class="keywordflow">if</span> (kind & ObjCPropertyDecl::OBJC_PR_weak &&</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>           !<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>           <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() == <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>) {</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_synthesize_weak_non_arc_or_gc);</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>       }</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> </div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>       Ivar = <a class="code" href="classclang_1_1ObjCIvarDecl.html#ac22c890daae78815d25119f3899f9c92">ObjCIvarDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, ClassImpDecl,</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>                                   PropertyIvarLoc,PropertyIvarLoc, PropertyIvar,</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>                                   PropertyIvarType, <span class="comment">/*Dinfo=*/</span>0,</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>                                   <a class="code" href="classclang_1_1ObjCIvarDecl.html#a6a902654b0b06d4a7392ab64a8ca3a9da8f6f25fa365a12828014e00b885acd8e">ObjCIvarDecl::Private</a>,</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>                                   (<a class="code" href="classclang_1_1Expr.html">Expr</a> *)0, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a6a040659397d7f4e0cb9c8b94e8447ef">RequireNonAbstractType</a>(PropertyIvarLoc,</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>                                  PropertyIvarType,</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>                                  diag::err_abstract_type_in_decl,</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>                                  <a class="code" href="classclang_1_1Sema.html#ae5a8d8e005f822735b05ce0c80ac6eb3a257cda4aff5c67b0d8ff36b81acaf35c">AbstractSynthesizedIvarType</a>)) {</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>         Ivar-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (CompleteTypeErr)</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>           Ivar-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>       ClassImpDecl-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(Ivar);</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>       IDecl-><a class="code" href="classclang_1_1DeclContext.html#a107cb2ec5172b24089981a4ec66b2197" title="Makes a declaration visible within this context.">makeDeclVisibleInContext</a>(Ivar);</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> </div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().<a class="code" href="classclang_1_1ObjCRuntime.html" title="The basic abstraction for the target Objective-C runtime.">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a69f6bcf7a3dc2e5b3f9e05734aaf75bc">isFragile</a>())</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_missing_property_ivar_decl)</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>             << PropertyId;</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>       <span class="comment">// Note! I deliberately want it to fall thru so, we have a</span></div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>       <span class="comment">// a property implementation and to avoid future warnings.</span></div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a5523ca4491b7915e32c02d98a491505e" title="Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?">isNonFragile</a>() &&</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>                !<a class="code" href="namespaceclang.html#ad9d926b16adbdbc93705737b69d47cae" title="Determine whether two declarations declare the same entity.">declaresSameEntity</a>(ClassDeclared, IDecl)) {</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_ivar_in_superclass_use)</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>       << <span class="keyword">property</span>->getDeclName() << Ivar-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>       << ClassDeclared-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_access_declaration)</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>       << Ivar << Ivar-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>();</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>       <span class="comment">// Note! I deliberately want it to fall thru so more errors are caught.</span></div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>     }</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>     <span class="keyword">property</span>->setPropertyIvarDecl(Ivar);</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> </div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> IvarType = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(Ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     <span class="comment">// Check that type of property and its ivar are type compatible.</span></div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(PropertyIvarType, IvarType)) {</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>       <span class="keywordflow">if</span> (isa<ObjCObjectPointerType>(PropertyIvarType) </div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>           && isa<ObjCObjectPointerType>(IvarType))</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>         compat =</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>           <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a4819d803b6726ac10837782702426ef6">canAssignObjCInterfaces</a>(</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>                                   PropertyIvarType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>(),</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>                                   IvarType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>());</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>         compat = (<a class="code" href="classclang_1_1Sema.html#ae926bdadf47f89f8ef6ff5415386286e">CheckAssignmentConstraints</a>(PropertyIvarLoc, PropertyIvarType,</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>                                              IvarType)</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>                     == <a class="code" href="classclang_1_1Sema.html#a989c30946e5cabc831bca08a8da4b3dda691144416ccd7da1984a21de8941c3e2" title="Compatible - the types are compatible according to the standard.">Compatible</a>);</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>       }</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>       <span class="keywordflow">if</span> (!compat) {</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_property_ivar_type)</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>           << <span class="keyword">property</span>->getDeclName() << PropType</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>           << Ivar-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << IvarType;</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_ivar_decl);</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>         <span class="comment">// Note! I deliberately want it to fall thru so, we have a</span></div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>         <span class="comment">// a property implementation and to avoid future warnings.</span></div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>       }</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>         <span class="comment">// FIXME! Rules for properties are somewhat different that those</span></div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>         <span class="comment">// for assignments. Use a new routine to consolidate all cases;</span></div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>         <span class="comment">// specifically for property redeclarations as well as for ivars.</span></div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>         <a class="code" href="classclang_1_1QualType.html">QualType</a> lhsType =<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(PropertyIvarType).<a class="code" href="classclang_1_1CanQual.html#af48a042eb252e80347f11899625ca0dc" title="Retrieve the unqualified form of this type.">getUnqualifiedType</a>();</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>         <a class="code" href="classclang_1_1QualType.html">QualType</a> rhsType =<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(IvarType).<a class="code" href="classclang_1_1CanQual.html#af48a042eb252e80347f11899625ca0dc" title="Retrieve the unqualified form of this type.">getUnqualifiedType</a>();</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>         <span class="keywordflow">if</span> (lhsType != rhsType &&</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>             lhsType-><a class="code" href="classclang_1_1Type.html#a3c072948dc40a770d97459f82feb0bc8">isArithmeticType</a>()) {</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_property_ivar_type)</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>             << <span class="keyword">property</span>->getDeclName() << PropType</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>             << Ivar-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << IvarType;</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_ivar_decl);</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>           <span class="comment">// Fall thru - see previous comment</span></div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>         }</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>       }</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>       <span class="comment">// __weak is explicit. So it works on Canonical type.</span></div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>       <span class="keywordflow">if</span> ((PropType.<a class="code" href="classclang_1_1QualType.html#aa3531092d44c1ecacc18c3f88f213d52" title="isObjCGCWeak true when Type is objc's weak.">isObjCGCWeak</a>() && !IvarType.<a class="code" href="classclang_1_1QualType.html#aa3531092d44c1ecacc18c3f88f213d52" title="isObjCGCWeak true when Type is objc's weak.">isObjCGCWeak</a>() &&</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>            <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>)) {</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_weak_property)</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>         << <span class="keyword">property</span>->getDeclName() << Ivar-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_ivar_decl);</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>         <span class="comment">// Fall thru - see previous comment</span></div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>       }</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>       <span class="comment">// Fall thru - see previous comment</span></div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>       <span class="keywordflow">if</span> ((property->getType()->isObjCObjectPointerType() ||</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>            PropType.<a class="code" href="classclang_1_1QualType.html#a14082db735b2de31f1c3a117b52016e4" title="isObjCGCStrong true when Type is objc's strong.">isObjCGCStrong</a>()) && IvarType.<a class="code" href="classclang_1_1QualType.html#aa3531092d44c1ecacc18c3f88f213d52" title="isObjCGCWeak true when Type is objc's weak.">isObjCGCWeak</a>() &&</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>           <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>) {</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_strong_property)</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>         << <span class="keyword">property</span>->getDeclName() << Ivar-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>         <span class="comment">// Fall thru - see previous comment</span></div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>       }</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     }</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount)</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>       <a class="code" href="SemaObjCProperty_8cpp.html#a3a737267fa458320f727f4768b9c756d">checkARCPropertyImpl</a>(*<span class="keyword">this</span>, PropertyLoc, property, Ivar);</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (PropertyIvar)</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>     <span class="comment">// @dynamic</span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_dynamic_property_ivar_decl);</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>     </div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>   assert (property && <span class="stringliteral">"ActOnPropertyImplDecl - property declaration missing"</span>);</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>   <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PIDecl =</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>   <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#ac452bb829534c89e2b46287d8a3d5ba5">ObjCPropertyImplDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, AtLoc, PropertyLoc,</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>                                property,</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>                                (Synthesize ?</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>                                 <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#acdb7be10674a19eac70b6bdb1face435af3f0447ab9b01f3502acb005d2908334">ObjCPropertyImplDecl::Synthesize</a></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>                                 : <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#acdb7be10674a19eac70b6bdb1face435a7fabe790aec6ffb4bea226668ac8787a">ObjCPropertyImplDecl::Dynamic</a>),</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>                                Ivar, PropertyIvarLoc);</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>   <span class="keywordflow">if</span> (CompleteTypeErr || !compat)</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>     PIDecl-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *getterMethod = property->getGetterMethodDecl()) {</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>     getterMethod->createImplicitParams(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, IDecl);</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().<a class="code" href="namespaceclang_1_1frontend.html#a09dfa01c4e997a3794d80922c5e853bbaf89a7ac6211aecefb5f7ecc17d3ebed4">CPlusPlus</a> && Synthesize && !CompleteTypeErr &&</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>         Ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>       <span class="comment">// For Objective-C++, need to synthesize the AST for the IVAR object to be</span></div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>       <span class="comment">// returned by the getter as it must conform to C++'s copy-return rules.</span></div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>       <span class="comment">// FIXME. Eventually we want to do this for Objective-C as well.</span></div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>       <a class="code" href="classclang_1_1Sema_1_1SynthesizedFunctionScope.html" title="RAII object to handle the state changes required to synthesize a function body.">SynthesizedFunctionScope</a> <a class="code" href="classclang_1_1Scope.html">Scope</a>(*<span class="keyword">this</span>, getterMethod);</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>       <a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a> *SelfDecl = getterMethod->getSelfDecl();</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>       <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *SelfExpr = </div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>         <span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>(SelfDecl, <span class="keyword">false</span>, SelfDecl-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(),</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>                                   <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, PropertyDiagLoc);</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       <a class="code" href="classclang_1_1Sema.html#ac9abb295a5809cdf04d64844feac25b5" title="Perform reference-marking and odr-use handling for a DeclRefExpr.">MarkDeclRefReferenced</a>(SelfExpr);</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *IvarRefExpr =</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>         <span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1ObjCIvarRefExpr.html" title="ObjCIvarRefExpr - A reference to an ObjC instance variable.">ObjCIvarRefExpr</a>(Ivar, Ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), PropertyDiagLoc,</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>                                       Ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>                                       SelfExpr, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>       <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> Res = </div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>         <a class="code" href="classclang_1_1Sema.html#ad36f57d7a801997658ab43b24034db20">PerformCopyInitialization</a>(<a class="code" href="classclang_1_1InitializedEntity.html#a9b1551ab470ed6ec9768417f48d89e76" title="Create the initialization entity for the result of a function.">InitializedEntity::InitializeResult</a>(</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>                                     PropertyDiagLoc,</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>                                     getterMethod->getResultType(),</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>                                     <span class="comment">/*NRVO=*/</span><span class="keyword">false</span>),</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>                                   PropertyDiagLoc,</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>                                   <a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(IvarRefExpr));</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>       <span class="keywordflow">if</span> (!Res.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>()) {</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>         <a class="code" href="classclang_1_1Expr.html">Expr</a> *ResExpr = Res.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>();</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>         <span class="keywordflow">if</span> (ResExpr)</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>           ResExpr = <a class="code" href="classclang_1_1Sema.html#ac7f951bbb24506aff28e15ccbe34945f">MaybeCreateExprWithCleanups</a>(ResExpr);</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>         PIDecl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#af0775981100e05dcd0c7936052b2d018">setGetterCXXConstructor</a>(ResExpr);</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>       }</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     }</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>     <span class="keywordflow">if</span> (property->hasAttr<<a class="code" href="classclang_1_1NSReturnsNotRetainedAttr.html">NSReturnsNotRetainedAttr</a>>() &&</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>         !getterMethod->hasAttr<<a class="code" href="classclang_1_1NSReturnsNotRetainedAttr.html">NSReturnsNotRetainedAttr</a>>()) {</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(getterMethod->getLocation(), </div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>            diag::warn_property_getter_owning_mismatch);</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property->getLocation(), diag::note_property_declare);</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>     }</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount && Synthesize)</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>       <span class="keywordflow">switch</span> (getterMethod->getMethodFamily()) {</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ae86182746e5f440a137ab74935cfc6f3">OMF_retain</a>:</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ab33e5b4cd97daae64b0409a18449ace4">OMF_retainCount</a>:</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a7e220cb728054440402011e61c42426d">OMF_release</a>:</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a2b78c8dee03c81f201d7fd438470b5d4">OMF_autorelease</a>:</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(getterMethod->getLocation(), diag::err_arc_illegal_method_def)</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>             << 1 << getterMethod->getSelector();</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>         <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>       }</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   }</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *setterMethod = property->getSetterMethodDecl()) {</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>     setterMethod->createImplicitParams(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, IDecl);</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().<a class="code" href="namespaceclang_1_1frontend.html#a09dfa01c4e997a3794d80922c5e853bbaf89a7ac6211aecefb5f7ecc17d3ebed4">CPlusPlus</a> && Synthesize && !CompleteTypeErr &&</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>         Ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>       <span class="comment">// FIXME. Eventually we want to do this for Objective-C as well.</span></div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>       <a class="code" href="classclang_1_1Sema_1_1SynthesizedFunctionScope.html" title="RAII object to handle the state changes required to synthesize a function body.">SynthesizedFunctionScope</a> <a class="code" href="classclang_1_1Scope.html">Scope</a>(*<span class="keyword">this</span>, setterMethod);</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>       <a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a> *SelfDecl = setterMethod->getSelfDecl();</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>       <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *SelfExpr = </div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>         <span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>(SelfDecl, <span class="keyword">false</span>, SelfDecl-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(),</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>                                   <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, PropertyDiagLoc);</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>       <a class="code" href="classclang_1_1Sema.html#ac9abb295a5809cdf04d64844feac25b5" title="Perform reference-marking and odr-use handling for a DeclRefExpr.">MarkDeclRefReferenced</a>(SelfExpr);</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *lhs =</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>         <span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1ObjCIvarRefExpr.html" title="ObjCIvarRefExpr - A reference to an ObjC instance variable.">ObjCIvarRefExpr</a>(Ivar, Ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), PropertyDiagLoc,</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>                                       Ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>                                       SelfExpr, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>       <a class="code" href="classclang_1_1ObjCMethodDecl.html#abbba9916294190611d98ec23edcf6bef">ObjCMethodDecl::param_iterator</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = setterMethod->param_begin();</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>       <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *<a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a> = (*P);</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> T = Param-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>();</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>       <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *rhs = <span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>(Param, <span class="keyword">false</span>, T,</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>                                                    <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>, PropertyDiagLoc);</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>       <a class="code" href="classclang_1_1Sema.html#ac9abb295a5809cdf04d64844feac25b5" title="Perform reference-marking and odr-use handling for a DeclRefExpr.">MarkDeclRefReferenced</a>(rhs);</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>       <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> Res = <a class="code" href="classclang_1_1Sema.html#ae4fc8526e7be7ed8ebbda0ea0cb444f1">BuildBinOp</a>(S, PropertyDiagLoc, </div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>                                   <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a>, lhs, rhs);</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>       <span class="keywordflow">if</span> (property->getPropertyAttributes() & </div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>           <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08acc3f6599e0d52d6f6fa52f2e07588b10">ObjCPropertyDecl::OBJC_PR_atomic</a>) {</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>         <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#af8ced6b4a2485eb1077c689e4ba34372" title="Matches call expressions.">callExpr</a> = Res.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>();</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXOperatorCallExpr.html" title="A call to an overloaded operator written using operator syntax.">CXXOperatorCallExpr</a> *CXXCE = </div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>               dyn_cast_or_null<CXXOperatorCallExpr>(callExpr))</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>           <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FuncDecl = CXXCE->getDirectCallee())</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>             <span class="keywordflow">if</span> (!FuncDecl->isTrivial())</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>               <span class="keywordflow">if</span> (property->getType()->isReferenceType()) {</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>                 <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, </div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>                      diag::err_atomic_property_nontrivial_assign_op)</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>                     << <span class="keyword">property</span>->getType();</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>                 <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(FuncDecl->getLocStart(), </div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>                      diag::note_callee_decl) << FuncDecl;</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>               }</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>       }</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>       PIDecl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a91308ae678396fa1faa8eeaa45b4db93">setSetterCXXAssignment</a>(Res.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>     }</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>   }</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>   </div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>   <span class="keywordflow">if</span> (IC) {</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>     <span class="keywordflow">if</span> (Synthesize)</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PPIDecl =</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>           IC-><a class="code" href="classclang_1_1ObjCImplDecl.html#abc6acbfc0dfc796134ebaf524acc3827">FindPropertyImplIvarDecl</a>(PropertyIvar)) {</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyLoc, diag::error_duplicate_ivar_use)</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>         << PropertyId << PPIDecl->getPropertyDecl()->getIdentifier()</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>         << PropertyIvar;</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PPIDecl->getLocation(), diag::note_previous_use);</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>       }</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> </div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PPIDecl</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>         = IC-><a class="code" href="classclang_1_1ObjCImplDecl.html#adeee43f9303d46eef0d69aebfd8df8b4">FindPropertyImplDecl</a>(PropertyId)) {</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyLoc, diag::error_property_implemented) << PropertyId;</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PPIDecl->getLocation(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>     }</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>     IC-><a class="code" href="classclang_1_1ObjCImplDecl.html#a173b9d1558f9ac60533c8e269c012100">addPropertyImplementation</a>(PIDecl);</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCDefaultSynthProperties &&</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>         <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().<a class="code" href="classclang_1_1ObjCRuntime.html" title="The basic abstraction for the target Objective-C runtime.">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a5523ca4491b7915e32c02d98a491505e" title="Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?">isNonFragile</a>() &&</div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>         !IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#ab9add7400366606edfd3cff1472f60c1">isObjCRequiresPropertyDefs</a>()) {</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>       <span class="comment">// Diagnose if an ivar was lazily synthesdized due to a previous</span></div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>       <span class="comment">// use and if 1) property is @dynamic or 2) property is synthesized</span></div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>       <span class="comment">// but it requires an ivar of different name.</span></div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>       <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *ClassDeclared=0;</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>       <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar = 0;</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>       <span class="keywordflow">if</span> (!Synthesize)</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>         Ivar = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1a0c954cf7c0fbbf77b4bf65c5a5c604">lookupInstanceVariable</a>(PropertyId, ClassDeclared);</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>         <span class="keywordflow">if</span> (PropertyIvar && PropertyIvar != PropertyId)</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>           Ivar = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1a0c954cf7c0fbbf77b4bf65c5a5c604">lookupInstanceVariable</a>(PropertyId, ClassDeclared);</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>       }</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>       <span class="comment">// Issue diagnostics only if Ivar belongs to current class.</span></div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>       <span class="keywordflow">if</span> (Ivar && Ivar-><a class="code" href="classclang_1_1ObjCIvarDecl.html#ae3b2d77862c967f71d4b03081b3ddb8b">getSynthesize</a>() && </div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>           <a class="code" href="namespaceclang.html#ad9d926b16adbdbc93705737b69d47cae" title="Determine whether two declarations declare the same entity.">declaresSameEntity</a>(IC-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>(), ClassDeclared)) {</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_undeclared_var_use) </div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>         << PropertyId;</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>         Ivar-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>       }</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     }</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>     <span class="keywordflow">if</span> (Synthesize)</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PPIDecl =</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>           CatImplClass-><a class="code" href="classclang_1_1ObjCImplDecl.html#abc6acbfc0dfc796134ebaf524acc3827">FindPropertyImplIvarDecl</a>(PropertyIvar)) {</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_duplicate_ivar_use)</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>         << PropertyId << PPIDecl->getPropertyDecl()->getIdentifier()</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>         << PropertyIvar;</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PPIDecl->getLocation(), diag::note_previous_use);</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>       }</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> </div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PPIDecl =</div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>         CatImplClass-><a class="code" href="classclang_1_1ObjCImplDecl.html#adeee43f9303d46eef0d69aebfd8df8b4">FindPropertyImplDecl</a>(PropertyId)) {</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropertyDiagLoc, diag::error_property_implemented) << PropertyId;</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PPIDecl->getLocation(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>     }</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>     CatImplClass-><a class="code" href="classclang_1_1ObjCImplDecl.html#a173b9d1558f9ac60533c8e269c012100">addPropertyImplementation</a>(PIDecl);</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>   }</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>   <span class="keywordflow">return</span> PIDecl;</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span> }</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> </div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> <span class="comment">// Helper methods.</span></div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> <span class="comment"></span></div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> <span class="comment">/// DiagnosePropertyMismatch - Compares two properties for their</span></div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> <span class="comment">/// attributes and types and warns on a variety of inconsistencies.</span></div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> <span class="comment"></span><span class="keywordtype">void</span></div>
+<div class="line"><a name="l01316"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a88fde93592d702fdabb1ea17f6a658e8"> 1316</a></span> <a class="code" href="classclang_1_1Sema.html#a88fde93592d702fdabb1ea17f6a658e8">Sema::DiagnosePropertyMismatch</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Property,</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>                                <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *SuperProperty,</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>                                <span class="keyword">const</span> <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *inheritedName,</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>                                <span class="keywordtype">bool</span> OverridingProtocolProperty) {</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08">ObjCPropertyDecl::PropertyAttributeKind</a> CAttr =</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>     Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>();</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08">ObjCPropertyDecl::PropertyAttributeKind</a> SAttr =</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>     SuperProperty-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>();</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>   </div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>   <span class="comment">// We allow readonly properties without an explicit ownership</span></div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>   <span class="comment">// (assign/unsafe_unretained/weak/retain/strong/copy) in super class</span></div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>   <span class="comment">// to be overridden by a property with any explicit ownership in the subclass.</span></div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>   <span class="keywordflow">if</span> (!OverridingProtocolProperty &&</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>       !<a class="code" href="SemaObjCProperty_8cpp.html#a645a2f511fa2eb7806920bd4f209f96d">getOwnershipRule</a>(SAttr) && <a class="code" href="SemaObjCProperty_8cpp.html#a645a2f511fa2eb7806920bd4f209f96d">getOwnershipRule</a>(CAttr))</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>     ;</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>     <span class="keywordflow">if</span> ((CAttr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>)</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>         && (SAttr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ac8b256d777df2a2a0e4895cb3bcf2ef0">ObjCPropertyDecl::OBJC_PR_readwrite</a>))</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_readonly_property)</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>         << Property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << inheritedName;</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>     <span class="keywordflow">if</span> ((CAttr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a48da21f81d458dd0c8567edfeb203024">ObjCPropertyDecl::OBJC_PR_copy</a>)</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>         != (SAttr & ObjCPropertyDecl::OBJC_PR_copy))</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_property_attribute)</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>         << Property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << <span class="stringliteral">"copy"</span> << inheritedName;</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!(SAttr & ObjCPropertyDecl::OBJC_PR_readonly)){</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>       <span class="keywordtype">unsigned</span> CAttrRetain =</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>         (CAttr &</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>          (<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ab0393d37874d5dad992cab46cfc2c41d">ObjCPropertyDecl::OBJC_PR_retain</a> | <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>));</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>       <span class="keywordtype">unsigned</span> SAttrRetain =</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>         (SAttr &</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>          (<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ab0393d37874d5dad992cab46cfc2c41d">ObjCPropertyDecl::OBJC_PR_retain</a> | <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>));</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>       <span class="keywordtype">bool</span> CStrong = (CAttrRetain != 0);</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>       <span class="keywordtype">bool</span> SStrong = (SAttrRetain != 0);</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>       <span class="keywordflow">if</span> (CStrong != SStrong)</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_property_attribute)</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>           << Property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << <span class="stringliteral">"retain (or strong)"</span> << inheritedName;</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>     }</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>   }</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> </div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>   <span class="keywordflow">if</span> ((CAttr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a9bc182e9e33edf812dd5e9000ad6d5ce">ObjCPropertyDecl::OBJC_PR_nonatomic</a>)</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>       != (SAttr & ObjCPropertyDecl::OBJC_PR_nonatomic)) {</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_property_attribute)</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>       << Property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << <span class="stringliteral">"atomic"</span> << inheritedName;</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperProperty-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>   }</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>   <span class="keywordflow">if</span> (Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>() != SuperProperty-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>()) {</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_property_attribute)</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>       << Property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << <span class="stringliteral">"setter"</span> << inheritedName;</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperProperty-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>   }</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>   <span class="keywordflow">if</span> (Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>() != SuperProperty-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>()) {</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_property_attribute)</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>       << Property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << <span class="stringliteral">"getter"</span> << inheritedName;</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperProperty-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>   }</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> </div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> LHSType =</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>     <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(SuperProperty-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>());</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> RHSType =</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>     <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>());</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span> </div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a35c7a28ad7871a1f8a6d31b483a55602">propertyTypesAreCompatible</a>(LHSType, RHSType)) {</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>     <span class="comment">// Do cases not handled in above.</span></div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>     <span class="comment">// FIXME. For future support of covariant property types, revisit this.</span></div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>     <span class="keywordtype">bool</span> IncompatibleObjC = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ConvertedType;</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#a6e114e48e852552fa5e157a79f1923a8">isObjCPointerConversion</a>(RHSType, LHSType, </div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>                                  ConvertedType, IncompatibleObjC) ||</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>         IncompatibleObjC) {</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_property_types_are_incompatible)</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>         << Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>() << SuperProperty-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>() << inheritedName;</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperProperty-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>     }</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>   }</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span> }</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> </div>
+<div class="line"><a name="l01392"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ad3498714f771dbac5c562c8512e21d20"> 1392</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Sema.html#ad3498714f771dbac5c562c8512e21d20">Sema::DiagnosePropertyAccessorMismatch</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *property,</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>                                             <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *GetterMethod,</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>                                             <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc) {</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>   <span class="keywordflow">if</span> (!GetterMethod)</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> GetterType = GetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>().<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>();</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> PropertyIvarType = <span class="keyword">property</span>->getType().getNonReferenceType();</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>   <span class="keywordtype">bool</span> compat = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(PropertyIvarType, GetterType);</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>   <span class="keywordflow">if</span> (!compat) {</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>     <span class="keywordflow">if</span> (isa<ObjCObjectPointerType>(PropertyIvarType) && </div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>         isa<ObjCObjectPointerType>(GetterType))</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>       compat =</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>         <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a4819d803b6726ac10837782702426ef6">canAssignObjCInterfaces</a>(</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>                                       GetterType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>(),</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>                                       PropertyIvarType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>());</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#ae926bdadf47f89f8ef6ff5415386286e">CheckAssignmentConstraints</a>(Loc, GetterType, PropertyIvarType) </div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>               != <a class="code" href="classclang_1_1Sema.html#a989c30946e5cabc831bca08a8da4b3dda691144416ccd7da1984a21de8941c3e2" title="Compatible - the types are compatible according to the standard.">Compatible</a>) {</div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::error_property_accessor_type)</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>             << <span class="keyword">property</span>->getDeclName() << PropertyIvarType</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>             << GetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>() << GetterType;</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(GetterMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_declared_at);</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>           <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>       compat = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> lhsType =<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(PropertyIvarType).<a class="code" href="classclang_1_1CanQual.html#af48a042eb252e80347f11899625ca0dc" title="Retrieve the unqualified form of this type.">getUnqualifiedType</a>();</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> rhsType =<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(GetterType).<a class="code" href="classclang_1_1CanQual.html#af48a042eb252e80347f11899625ca0dc" title="Retrieve the unqualified form of this type.">getUnqualifiedType</a>();</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>       <span class="keywordflow">if</span> (lhsType != rhsType && lhsType-><a class="code" href="classclang_1_1Type.html#a3c072948dc40a770d97459f82feb0bc8">isArithmeticType</a>())</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>         compat = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>     }</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>   }</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>   </div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>   <span class="keywordflow">if</span> (!compat) {</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::warn_accessor_property_type_mismatch)</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     << <span class="keyword">property</span>->getDeclName()</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>     << GetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>();</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(GetterMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_declared_at);</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>   }</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> </div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> }</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> <span class="comment"></span></div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> <span class="comment">/// CollectImmediateProperties - This routine collects all properties in</span></div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span> <span class="comment">/// the class and its conforming protocols; but not those in its super class.</span></div>
+<div class="line"><a name="l01436"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ab155e0fae582f48a6fbaab168090694a"> 1436</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#ab155e0fae582f48a6fbaab168090694a">Sema::CollectImmediateProperties</a>(<a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *CDecl,</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>             <a class="code" href="classclang_1_1ObjCContainerDecl.html#a206382581f08b288ac70f3590b0a9907">ObjCContainerDecl::PropertyMap</a> &PropMap,</div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>             <a class="code" href="classclang_1_1ObjCContainerDecl.html#a206382581f08b288ac70f3590b0a9907">ObjCContainerDecl::PropertyMap</a> &SuperPropMap) {</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl = dyn_cast<ObjCInterfaceDecl>(CDecl)) {</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCContainerDecl::prop_iterator</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = IDecl->prop_begin(),</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>          E = IDecl->prop_end(); <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != E; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>       <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Prop = *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>;</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>       PropMap[Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()] = Prop;</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>     }</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>     <span class="comment">// scan through class's protocols.</span></div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a9da2d6646fb8c8dd1793f81688b6c0f0">ObjCInterfaceDecl::all_protocol_iterator</a></div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>          PI = IDecl->all_referenced_protocol_begin(),</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>          E = IDecl->all_referenced_protocol_end(); PI != E; ++PI)</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>         <a class="code" href="classclang_1_1Sema.html#ab155e0fae582f48a6fbaab168090694a">CollectImmediateProperties</a>((*PI), PropMap, SuperPropMap);</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>   }</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CATDecl = dyn_cast<ObjCCategoryDecl>(CDecl)) {</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>     <span class="keywordflow">if</span> (!CATDecl->IsClassExtension())</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCContainerDecl::prop_iterator</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = CATDecl->prop_begin(),</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>            E = CATDecl->prop_end(); <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != E; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>         <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Prop = *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>;</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>         PropMap[Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()] = Prop;</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>       }</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>     <span class="comment">// scan through class's protocols.</span></div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html#a2838849e5805ca4bce587a4d9c68acb8">ObjCCategoryDecl::protocol_iterator</a> PI = CATDecl->protocol_begin(),</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>          E = CATDecl->protocol_end(); PI != E; ++PI)</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>       <a class="code" href="classclang_1_1Sema.html#ab155e0fae582f48a6fbaab168090694a">CollectImmediateProperties</a>((*PI), PropMap, SuperPropMap);</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>   }</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PDecl = dyn_cast<ObjCProtocolDecl>(CDecl)) {</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCProtocolDecl::prop_iterator</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = PDecl->prop_begin(),</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>          E = PDecl->prop_end(); <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != E; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>       <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Prop = *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>;</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>       <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PropertyFromSuper = SuperPropMap[Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()];</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>       <span class="comment">// Exclude property for protocols which conform to class's super-class, </span></div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>       <span class="comment">// as super-class has to implement the property.</span></div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>       <span class="keywordflow">if</span> (!PropertyFromSuper || </div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>           PropertyFromSuper-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>() != Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()) {</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>         <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *&PropEntry = PropMap[Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()];</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>         <span class="keywordflow">if</span> (!PropEntry)</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>           PropEntry = Prop;</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>       }</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>     }</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>     <span class="comment">// scan through protocol's protocols.</span></div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html#adbd4b44a478f573a24072123f93b2fe9">ObjCProtocolDecl::protocol_iterator</a> PI = PDecl->protocol_begin(),</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>          E = PDecl->protocol_end(); PI != E; ++PI)</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>       <a class="code" href="classclang_1_1Sema.html#ab155e0fae582f48a6fbaab168090694a">CollectImmediateProperties</a>((*PI), PropMap, SuperPropMap);</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>   }</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> }</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> <span class="comment"></span></div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> <span class="comment">/// CollectSuperClassPropertyImplementations - This routine collects list of</span></div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> <span class="comment">/// properties to be implemented in super class(s) and also coming from their</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> <span class="comment">/// conforming protocols.</span></div>
+<div class="line"><a name="l01487"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a9973233d8e03cfc4cce6606f6a710d7c"> 1487</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaObjCProperty_8cpp.html#a9973233d8e03cfc4cce6606f6a710d7c">CollectSuperClassPropertyImplementations</a>(<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *CDecl,</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>                                     <a class="code" href="classclang_1_1ObjCContainerDecl.html#a206382581f08b288ac70f3590b0a9907">ObjCInterfaceDecl::PropertyMap</a> &PropMap) {</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *SDecl = CDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a5f23eb5cda9e27622e71382d1dc4b95d">getSuperClass</a>()) {</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>     <a class="code" href="classclang_1_1ObjCContainerDecl.html#a7215f518a4a01ea4570cf52f9dc3c493">ObjCInterfaceDecl::PropertyDeclOrder</a> PO;</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>     <span class="keywordflow">while</span> (SDecl) {</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>       SDecl->collectPropertiesToImplement(PropMap, PO);</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>       SDecl = SDecl->getSuperClass();</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>     }</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>   }</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> }</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> <span class="comment"></span></div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> <span class="comment">/// IvarBacksCurrentMethodAccessor - This routine returns 'true' if 'IV' is</span></div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span> <span class="comment">/// an ivar synthesized for 'Method' and 'Method' is a property accessor</span></div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span> <span class="comment">/// declared in class 'IFace'.</span></div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> <span class="comment"></span><span class="keywordtype">bool</span></div>
+<div class="line"><a name="l01502"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a90d3c2f936d17a1fba2f639a6aaba103"> 1502</a></span> <a class="code" href="classclang_1_1Sema.html#a90d3c2f936d17a1fba2f639a6aaba103">Sema::IvarBacksCurrentMethodAccessor</a>(<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IFace,</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>                                      <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method, <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *IV) {</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   <span class="keywordflow">if</span> (!IV-><a class="code" href="classclang_1_1ObjCIvarDecl.html#ae3b2d77862c967f71d4b03081b3ddb8b">getSynthesize</a>())</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *IMD = IFace-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aa0d4c160329e1b90faa8e66316bdb35b">lookupMethod</a>(Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>(),</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>                                             Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a437ea0ebec5ba72fcf0084dd01654d4c">isInstanceMethod</a>());</div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>   <span class="keywordflow">if</span> (!IMD || !IMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a4ca2941f86e7822b3f15b6d258230cb1">isPropertyAccessor</a>())</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>   </div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>   <span class="comment">// look up a property declaration whose one of its accessors is implemented</span></div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>   <span class="comment">// by this method.</span></div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCContainerDecl::prop_iterator</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = IFace-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a7d227b3190dce85fee03fea236beebe2">prop_begin</a>(),</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>        E = IFace-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a38678ed182f7c9ec01f470c7a58f5f19">prop_end</a>(); <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != E; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *<span class="keyword">property</span> = *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>;</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>     <span class="keywordflow">if</span> ((property->getGetterName() == IMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>() ||</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>          <span class="keyword">property</span>->getSetterName() == IMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()) &&</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>         (property->getPropertyIvarDecl() == IV))</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>   }</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span> }</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> </div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span> <span class="comment"></span></div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> <span class="comment">/// \brief Default synthesizes all properties which must be synthesized</span></div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> <span class="comment">/// in class's \@implementation.</span></div>
+<div class="line"><a name="l01527"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a8b1611b27be5568396b9a1bb7dcf2922"> 1527</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a8b1611b27be5568396b9a1bb7dcf2922" title="Default synthesizes all properties which must be synthesized in class's @implementation.">Sema::DefaultSynthesizeProperties</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a>* IMPDecl,</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>                                        <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl) {</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>   </div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>   <a class="code" href="classclang_1_1ObjCContainerDecl.html#a206382581f08b288ac70f3590b0a9907">ObjCInterfaceDecl::PropertyMap</a> PropMap;</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>   <a class="code" href="classllvm_1_1SmallVector.html">ObjCInterfaceDecl::PropertyDeclOrder</a> PropertyOrder;</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>   IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aed8f09f0ab8ad27a9ef65aa65970ff2c">collectPropertiesToImplement</a>(PropMap, PropertyOrder);</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>   <span class="keywordflow">if</span> (PropMap.empty())</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>   <a class="code" href="classclang_1_1ObjCContainerDecl.html#a206382581f08b288ac70f3590b0a9907">ObjCInterfaceDecl::PropertyMap</a> SuperPropMap;</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>   <a class="code" href="SemaObjCProperty_8cpp.html#a9973233d8e03cfc4cce6606f6a710d7c">CollectSuperClassPropertyImplementations</a>(IDecl, SuperPropMap);</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>   </div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = PropertyOrder.size(); i != e; i++) {</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Prop = PropertyOrder[i];</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>     <span class="comment">// Is there a matching property synthesize/dynamic?</span></div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>     <span class="keywordflow">if</span> (Prop-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>() ||</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>         Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af10258894cb90d5caf3b7caee60b324c">getPropertyImplementation</a>() == <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a79a227c96a7b7d27c72c069e1e3d88aead71875caeec7ce6b43a8be66b3644edc">ObjCPropertyDecl::Optional</a>)</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>     <span class="comment">// Property may have been synthesized by user.</span></div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>     <span class="keywordflow">if</span> (IMPDecl-><a class="code" href="classclang_1_1ObjCImplDecl.html#adeee43f9303d46eef0d69aebfd8df8b4">FindPropertyImplDecl</a>(Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()))</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>     <span class="keywordflow">if</span> (IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>())) {</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>       <span class="keywordflow">if</span> (Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>() & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>)</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>       <span class="keywordflow">if</span> (IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>()))</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>     }</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>     <span class="comment">// If property to be implemented in the super class, ignore.</span></div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>     <span class="keywordflow">if</span> (SuperPropMap[Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()]) {</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>       <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PropInSuperClass = SuperPropMap[Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()];</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>       <span class="keywordflow">if</span> ((Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>() & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ac8b256d777df2a2a0e4895cb3bcf2ef0">ObjCPropertyDecl::OBJC_PR_readwrite</a>) &&</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>           (PropInSuperClass-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>() &</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>            <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>) &&</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>           !IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>()) &&</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>           !IDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad54bd5b577a3a6d5edf44244d2b8bfbd">HasUserDeclaredSetterMethod</a>(Prop)) {</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Prop-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_no_autosynthesis_property)</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>               << Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()-><a class="code" href="classclang_1_1IdentifierInfo.html#a94caec6a16e508e8ca39eacd278bd2c5" title="Return the actual identifier string.">getName</a>();</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PropInSuperClass-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>       }</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>     }</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PID =</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>         IMPDecl-><a class="code" href="classclang_1_1ObjCImplDecl.html#abc6acbfc0dfc796134ebaf524acc3827">FindPropertyImplIvarDecl</a>(Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>())) {</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>       <span class="keywordflow">if</span> (PID->getPropertyDecl() != Prop) {</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Prop-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_no_autosynthesis_shared_ivar_property)</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>         << Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()-><a class="code" href="classclang_1_1IdentifierInfo.html#a94caec6a16e508e8ca39eacd278bd2c5" title="Return the actual identifier string.">getName</a>();</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>         <span class="keywordflow">if</span> (!PID->getLocation().isInvalid())</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PID->getLocation(), diag::note_property_synthesize);</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>       }</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>     }</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>     <span class="keywordflow">if</span> (isa<ObjCProtocolDecl>(Prop-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>())) {</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>       <span class="comment">// We won't auto-synthesize properties declared in protocols.</span></div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IMPDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>            diag::warn_auto_synthesizing_protocol_property);</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Prop-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>     }</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> </div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>     <span class="comment">// We use invalid SourceLocations for the synthesized ivars since they</span></div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>     <span class="comment">// aren't really synthesized at a particular location; they just exist.</span></div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>     <span class="comment">// Saying that they are located at the @implementation isn't really going</span></div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>     <span class="comment">// to help users.</span></div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>     <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PIDecl = dyn_cast_or_null<ObjCPropertyImplDecl>(</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>       <a class="code" href="classclang_1_1Sema.html#a547aaf1d9f35839049fbc23de7c30dc7">ActOnPropertyImplDecl</a>(S, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(), <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(),</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>                             <span class="keyword">true</span>,</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>                             <span class="comment">/* property = */</span> Prop-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>(),</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>                             <span class="comment">/* ivar = */</span> Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a5513f5664e45d6f6c890a1941be1add1" title="Get the default name of the synthesized ivar.">getDefaultSynthIvarName</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>),</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>                             Prop-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>()));</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>     <span class="keywordflow">if</span> (PIDecl) {</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Prop-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_missing_explicit_synthesis);</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IMPDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_while_in_implementation);</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>     }</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>   }</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span> }</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> </div>
+<div class="line"><a name="l01602"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#aafd6319ed1125acee2301807dbdd0ace"> 1602</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a8b1611b27be5568396b9a1bb7dcf2922" title="Default synthesizes all properties which must be synthesized in class's @implementation.">Sema::DefaultSynthesizeProperties</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.ObjCDefaultSynthProperties || <a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a69f6bcf7a3dc2e5b3f9e05734aaf75bc">isFragile</a>())</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>   <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *IC=dyn_cast_or_null<ObjCImplementationDecl>(D);</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>   <span class="keywordflow">if</span> (!IC)</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>* IDecl = IC-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>())</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>     <span class="keywordflow">if</span> (!IDecl->isObjCRequiresPropertyDefs())</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>       <a class="code" href="classclang_1_1Sema.html#a8b1611b27be5568396b9a1bb7dcf2922" title="Default synthesizes all properties which must be synthesized in class's @implementation.">DefaultSynthesizeProperties</a>(S, IC, IDecl);</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> }</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> </div>
+<div class="line"><a name="l01613"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a9bd91bddc066e31cfad03a11c95ed38b"> 1613</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a9bd91bddc066e31cfad03a11c95ed38b">Sema::DiagnoseUnimplementedProperties</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a>* IMPDecl,</div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>                                       <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *CDecl) {</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>   <a class="code" href="classclang_1_1ObjCContainerDecl.html#a206382581f08b288ac70f3590b0a9907">ObjCContainerDecl::PropertyMap</a> NoNeedToImplPropMap;</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl;</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>   <span class="comment">// Gather properties which need not be implemented in this class</span></div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>   <span class="comment">// or category.</span></div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>   <span class="keywordflow">if</span> (!(IDecl = dyn_cast<ObjCInterfaceDecl>(CDecl)))</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *C = dyn_cast<ObjCCategoryDecl>(CDecl)) {</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>       <span class="comment">// For categories, no need to implement properties declared in</span></div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>       <span class="comment">// its primary class (and its super classes) if property is</span></div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>       <span class="comment">// declared in one of those containers.</span></div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>       <span class="keywordflow">if</span> ((IDecl = C->getClassInterface())) {</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>         <a class="code" href="classllvm_1_1SmallVector.html">ObjCInterfaceDecl::PropertyDeclOrder</a> PO;</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>         IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aed8f09f0ab8ad27a9ef65aa65970ff2c">collectPropertiesToImplement</a>(NoNeedToImplPropMap, PO);</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>       }</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>     }</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>   <span class="keywordflow">if</span> (IDecl)</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>     <a class="code" href="SemaObjCProperty_8cpp.html#a9973233d8e03cfc4cce6606f6a710d7c">CollectSuperClassPropertyImplementations</a>(IDecl, NoNeedToImplPropMap);</div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>   </div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>   <a class="code" href="classclang_1_1ObjCContainerDecl.html#a206382581f08b288ac70f3590b0a9907">ObjCContainerDecl::PropertyMap</a> PropMap;</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>   <a class="code" href="classclang_1_1Sema.html#ab155e0fae582f48a6fbaab168090694a">CollectImmediateProperties</a>(CDecl, PropMap, NoNeedToImplPropMap);</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>   <span class="keywordflow">if</span> (PropMap.empty())</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> </div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>   <a class="code" href="classllvm_1_1DenseSet.html">llvm::DenseSet<ObjCPropertyDecl *></a> PropImplMap;</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCImplDecl::propimpl_iterator</a></div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>        I = IMPDecl-><a class="code" href="classclang_1_1ObjCImplDecl.html#a7ee14e0eeb28f7f7b2c99a5be2f95b8e">propimpl_begin</a>(),</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>        EI = IMPDecl-><a class="code" href="classclang_1_1ObjCImplDecl.html#aa2eeebdf41b3d382f99db40c4017b1aa">propimpl_end</a>(); I != EI; ++I)</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>     PropImplMap.insert(I->getPropertyDecl());</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> </div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>   <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> InsMap;</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>   <span class="comment">// Collect property accessors implemented in current implementation.</span></div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCImplementationDecl::instmeth_iterator</a></div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>        I = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#adb21f3e7fa3b060c5b31b92ae97f957e">instmeth_begin</a>(), E = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ab363adb39c69750940adf83386f4b923">instmeth_end</a>(); I!=E; ++I)</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>     InsMap.insert((*I)->getSelector());</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>   </div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>   <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *C = dyn_cast<<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a>>(CDecl);</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *PrimaryClass = 0;</div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>   <span class="keywordflow">if</span> (C && !C-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#ad8b830f899332fb32412f90c4b5cc855">IsClassExtension</a>())</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>     <span class="keywordflow">if</span> ((PrimaryClass = C-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#acdb14eeca277cfa745a4e8e842312008">getClassInterface</a>()))</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>       <span class="comment">// Report unimplemented properties in the category as well.</span></div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a> *IMP = PrimaryClass->getImplementation()) {</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>         <span class="comment">// When reporting on missing setter/getters, do not report when</span></div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>         <span class="comment">// setter/getter is implemented in category's primary class</span></div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>         <span class="comment">// implementation.</span></div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>         <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCImplementationDecl::instmeth_iterator</a></div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>              I = IMP->instmeth_begin(), E = IMP->instmeth_end(); I!=E; ++I)</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>           InsMap.insert((*I)->getSelector());</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>       }</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> </div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>   <span class="keywordflow">for</span> (ObjCContainerDecl::PropertyMap::iterator</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>        <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = PropMap.begin(), E = PropMap.end(); <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> != E; ++<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Prop = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->second;</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>     <span class="comment">// Is there a matching propery synthesize/dynamic?</span></div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>     <span class="keywordflow">if</span> (Prop-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>() ||</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>         Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af10258894cb90d5caf3b7caee60b324c">getPropertyImplementation</a>() == <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a79a227c96a7b7d27c72c069e1e3d88aead71875caeec7ce6b43a8be66b3644edc">ObjCPropertyDecl::Optional</a> ||</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>         PropImplMap.count(Prop) ||</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>         Prop-><a class="code" href="classclang_1_1Decl.html#a59880f2930b89626b5061e060e80fbdf" title="Determine the availability of the given declaration.">getAvailability</a>() == <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307baef5f77edb8ed586e5256a1f644667657">AR_Unavailable</a>)</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>     <span class="comment">// When reporting on missing property getter implementation in</span></div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>     <span class="comment">// categories, do not report when they are declared in primary class,</span></div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>     <span class="comment">// class's protocol, or one of it super classes. This is because,</span></div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>     <span class="comment">// the class is going to implement them.</span></div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>     <span class="keywordflow">if</span> (!InsMap.count(Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>()) &&</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>         (PrimaryClass == 0 ||</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>          !PrimaryClass->lookupPropertyAccessor(Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>(), C))) {</div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IMPDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>            isa<ObjCCategoryDecl>(CDecl) ?</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>             diag::warn_setter_getter_impl_required_in_category :</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>             diag::warn_setter_getter_impl_required)</div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>       << Prop-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>();</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Prop-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>            diag::note_property_declare);</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.ObjCDefaultSynthProperties && <a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a5523ca4491b7915e32c02d98a491505e" title="Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?">isNonFragile</a>())</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = dyn_cast<ObjCInterfaceDecl>(CDecl))</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>           <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *RID = <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>->isObjCRequiresPropertyDefs())</div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(RID->getLocation(), diag::note_suppressed_class_declare);</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>             </div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>     }</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>     <span class="comment">// When reporting on missing property setter implementation in</span></div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>     <span class="comment">// categories, do not report when they are declared in primary class,</span></div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>     <span class="comment">// class's protocol, or one of it super classes. This is because,</span></div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>     <span class="comment">// the class is going to implement them.</span></div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>     <span class="keywordflow">if</span> (!Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a66d0a870cb7a45e334f4400956781dbf" title="isReadOnly - Return true iff the property has a setter.">isReadOnly</a>() && !InsMap.count(Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>()) &&</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>         (PrimaryClass == 0 ||</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>          !PrimaryClass->lookupPropertyAccessor(Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>(), C))) {</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IMPDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>            isa<ObjCCategoryDecl>(CDecl) ?</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>            diag::warn_setter_getter_impl_required_in_category :</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>            diag::warn_setter_getter_impl_required)</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>       << Prop-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << Prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>();</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Prop-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>            diag::note_property_declare);</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.ObjCDefaultSynthProperties && <a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a5523ca4491b7915e32c02d98a491505e" title="Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?">isNonFragile</a>())</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = dyn_cast<ObjCInterfaceDecl>(CDecl))</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>           <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *RID = <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>->isObjCRequiresPropertyDefs())</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(RID->getLocation(), diag::note_suppressed_class_declare);</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>     }</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>   }</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span> }</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> </div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01715"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#adf80ec954a4cfe32cbbdf799d65d6634"> 1715</a></span> <a class="code" href="classclang_1_1Sema.html#adf80ec954a4cfe32cbbdf799d65d6634">Sema::AtomicPropertySetterGetterRules</a> (<a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a>* IMPDecl,</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>                                        <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a>* IDecl) {</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>   <span class="comment">// Rules apply in non-GC mode only</span></div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>)</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCContainerDecl::prop_iterator</a> I = IDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a7d227b3190dce85fee03fea236beebe2">prop_begin</a>(),</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>        E = IDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a38678ed182f7c9ec01f470c7a58f5f19">prop_end</a>();</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>        I != E; ++I) {</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Property = *I;</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *GetterMethod = 0;</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *SetterMethod = 0;</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>     <span class="keywordtype">bool</span> LookedUpGetterSetter = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> </div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>     <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a> = Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>();</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>     <span class="keywordtype">unsigned</span> AttributesAsWritten = Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#abea5ac9eeb1d4c9d7db14d2c3c38714f">getPropertyAttributesAsWritten</a>();</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> </div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>     <span class="keywordflow">if</span> (!(AttributesAsWritten & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08acc3f6599e0d52d6f6fa52f2e07588b10">ObjCPropertyDecl::OBJC_PR_atomic</a>) &&</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>         !(AttributesAsWritten & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a9bc182e9e33edf812dd5e9000ad6d5ce">ObjCPropertyDecl::OBJC_PR_nonatomic</a>)) {</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>       GetterMethod = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>());</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>       SetterMethod = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>());</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>       LookedUpGetterSetter = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>       <span class="keywordflow">if</span> (GetterMethod) {</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(GetterMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>              diag::warn_default_atomic_custom_getter_setter)</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>           << Property-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>() << 0;</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>       }</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>       <span class="keywordflow">if</span> (SetterMethod) {</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SetterMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>              diag::warn_default_atomic_custom_getter_setter)</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>           << Property-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>() << 1;</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>       }</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>     }</div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> </div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>     <span class="comment">// We only care about readwrite atomic property.</span></div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>     <span class="keywordflow">if</span> ((Attributes & ObjCPropertyDecl::OBJC_PR_nonatomic) ||</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>         !(Attributes & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ac8b256d777df2a2a0e4895cb3bcf2ef0">ObjCPropertyDecl::OBJC_PR_readwrite</a>))</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PIDecl</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>          = IMPDecl-><a class="code" href="classclang_1_1ObjCImplDecl.html#adeee43f9303d46eef0d69aebfd8df8b4">FindPropertyImplDecl</a>(Property-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>())) {</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>       <span class="keywordflow">if</span> (PIDecl->getPropertyImplementation() == <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#acdb7be10674a19eac70b6bdb1face435a7fabe790aec6ffb4bea226668ac8787a">ObjCPropertyImplDecl::Dynamic</a>)</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>       <span class="keywordflow">if</span> (!LookedUpGetterSetter) {</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>         GetterMethod = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>());</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>         SetterMethod = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>());</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>         LookedUpGetterSetter = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>       }</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>       <span class="keywordflow">if</span> ((GetterMethod && !SetterMethod) || (!GetterMethod && SetterMethod)) {</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>         <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> MethodLoc =</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>           (GetterMethod ? GetterMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>()</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>                         : SetterMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>());</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MethodLoc, diag::warn_atomic_property_rule)</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>           << Property-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>() << (GetterMethod != 0)</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>           << (SetterMethod != 0);</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>         <span class="comment">// fixit stuff.</span></div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>         <span class="keywordflow">if</span> (!AttributesAsWritten) {</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>           <span class="keywordflow">if</span> (Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aaeba493f5dff3119e3307e9c26846a3c">getLParenLoc</a>().<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>()) {</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>             <span class="comment">// @property () ... case.</span></div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>             <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> PropSourceRange(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ababa7df44fadbacd470894064bb011ea">getAtLoc</a>(), </div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>                                         Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aaeba493f5dff3119e3307e9c26846a3c">getLParenLoc</a>());</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_atomic_property_fixup_suggest) <<</div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>               <a class="code" href="classclang_1_1FixItHint.html#a90e122cd34933ba821718385fddfae7a" title="Create a code modification hint that replaces the given source range with the given code string...">FixItHint::CreateReplacement</a>(PropSourceRange, <span class="stringliteral">"@property (nonatomic"</span>);</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>           }</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>           <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>             <span class="comment">//@property id etc.</span></div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>             <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> endLoc = </div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>               Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a10fe1cb645fc76605c71344b9323be49">getTypeSourceInfo</a>()-><a class="code" href="classclang_1_1TypeSourceInfo.html#a51bc61879d5926193a3bb3ee1a280fee" title="Return the TypeLoc wrapper for the type source info.">getTypeLoc</a>().<a class="code" href="classclang_1_1TypeLoc.html#ae2d52812c218de89646d554ea4fc69b8" title="Get the begin source location.">getBeginLoc</a>();</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>             endLoc = endLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(-1);</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>             <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> PropSourceRange(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ababa7df44fadbacd470894064bb011ea">getAtLoc</a>(), endLoc);</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_atomic_property_fixup_suggest) <<</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>               <a class="code" href="classclang_1_1FixItHint.html#a90e122cd34933ba821718385fddfae7a" title="Create a code modification hint that replaces the given source range with the given code string...">FixItHint::CreateReplacement</a>(PropSourceRange, <span class="stringliteral">"@property (nonatomic) "</span>);</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>           }</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>         }</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!(AttributesAsWritten & ObjCPropertyDecl::OBJC_PR_atomic)) {</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>           <span class="comment">// @property () ... case.</span></div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>           <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> endLoc = Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aaeba493f5dff3119e3307e9c26846a3c">getLParenLoc</a>();</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>           <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> PropSourceRange(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ababa7df44fadbacd470894064bb011ea">getAtLoc</a>(), endLoc);</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_atomic_property_fixup_suggest) <<</div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>            <a class="code" href="classclang_1_1FixItHint.html#a90e122cd34933ba821718385fddfae7a" title="Create a code modification hint that replaces the given source range with the given code string...">FixItHint::CreateReplacement</a>(PropSourceRange, <span class="stringliteral">"@property (nonatomic, "</span>);</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>         }</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MethodLoc, diag::note_atomic_property_fixup_suggest);</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>       }</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>     }</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>   }</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span> }</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span> </div>
+<div class="line"><a name="l01804"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a62f383f13827ba06a22770b29b089232"> 1804</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a62f383f13827ba06a22770b29b089232">Sema::DiagnoseOwningPropertyGetterSynthesis</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *D) {</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() == <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84a14f316080dbd204ff0c18a43a3e46869">LangOptions::GCOnly</a>)</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> </div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCImplementationDecl::propimpl_iterator</a></div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>          i = D-><a class="code" href="classclang_1_1ObjCImplDecl.html#a7ee14e0eeb28f7f7b2c99a5be2f95b8e">propimpl_begin</a>(), e = D-><a class="code" href="classclang_1_1ObjCImplDecl.html#aa2eeebdf41b3d382f99db40c4017b1aa">propimpl_end</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>     <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PID = *i;</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>     <span class="keywordflow">if</span> (PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a2abe69de01c6e7b1b74edb61a704032a">getPropertyImplementation</a>() != <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#acdb7be10674a19eac70b6bdb1face435af3f0447ab9b01f3502acb005d2908334">ObjCPropertyImplDecl::Synthesize</a>)</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>     </div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PD = PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a7c47743d3355f901f96c12f3ea552d16">getPropertyDecl</a>();</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>     <span class="keywordflow">if</span> (PD && !PD-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsNotRetainedAttr.html">NSReturnsNotRetainedAttr</a>>() &&</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>         !D-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(PD-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>())) {</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>       <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method = PD-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7f00c5e70f112c0c7863f93c1872545">getGetterMethodDecl</a>();</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>       <span class="keywordflow">if</span> (!method)</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>       <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140" title="A family of Objective-C methods.">ObjCMethodFamily</a> family = method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a797418dad629dd1538fd9ebaa6daa1f1" title="Determines the family of this method.">getMethodFamily</a>();</div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>       <span class="keywordflow">if</span> (family == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140aa2506f3f3aa110c8634c520cac188850">OMF_alloc</a> || family == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ae5e7e02afb30e2fd7e5454b4f98678ef">OMF_copy</a> ||</div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>           family == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a3051bdd94642c1f656e86cb06914f9cf">OMF_mutableCopy</a> || family == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140add0d96887fd8a747f93910ca08eb466c">OMF_new</a>) {</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount)</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PID-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_ownin_getter_rule);</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PID-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_owning_getter_rule);</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_property_declare);</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>       }</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>     }</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>   }</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> }</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span> <span class="comment"></span></div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span> <span class="comment">/// AddPropertyAttrs - Propagates attributes from a property to the</span></div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span> <span class="comment">/// implicitly-declared getter or setter for that property.</span></div>
+<div class="line"><a name="l01835"></a><span class="lineno"><a class="code" href="SemaObjCProperty_8cpp.html#a40b68a0cce838f2b20900fc2965bbbf5"> 1835</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaObjCProperty_8cpp.html#a40b68a0cce838f2b20900fc2965bbbf5">AddPropertyAttrs</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *PropertyMethod,</div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>                              <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Property) {</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>   <span class="comment">// Should we just clone all attributes over?</span></div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1Decl.html#a26c62ee021b1672a0d10becdb16fbeb1">Decl::attr_iterator</a> A = Property-><a class="code" href="classclang_1_1Decl.html#a0f748228d545e93f18f56f89148cfdf7">attr_begin</a>(), </div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>                         AEnd = Property-><a class="code" href="classclang_1_1Decl.html#ac0fac4a867a10e52b649ac06e3e3a9dc">attr_end</a>(); </div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>        A != AEnd; ++A) {</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>     <span class="keywordflow">if</span> (isa<DeprecatedAttr>(*A) || </div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>         isa<UnavailableAttr>(*A) || </div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>         isa<AvailabilityAttr>(*A))</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>       PropertyMethod-><a class="code" href="classclang_1_1Decl.html#ae06dbf27ea2b038ffba068a4b24f3913">addAttr</a>((*A)->clone(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>));</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>   }</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span> }</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span> <span class="comment"></span></div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span> <span class="comment">/// ProcessPropertyDecl - Make sure that any user-defined setter/getter methods</span></div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span> <span class="comment">/// have the property type and issue diagnostics if they don't.</span></div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> <span class="comment">/// Also synthesize a getter/setter method if none exist (and update the</span></div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span> <span class="comment">/// appropriate lookup tables. FIXME: Should reconsider if adding synthesized</span></div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span> <span class="comment">/// methods is the "right" thing to do.</span></div>
+<div class="line"><a name="l01853"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a171970a77b05346b320021d6d97dafc3"> 1853</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a171970a77b05346b320021d6d97dafc3">Sema::ProcessPropertyDecl</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *property,</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>                                <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *CD,</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>                                <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *redeclaredProperty,</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>                                <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *lexicalDC) {</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> </div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *GetterMethod, *SetterMethod;</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span> </div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>   GetterMethod = CD-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>());</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>   SetterMethod = CD-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>(property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>());</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>   <a class="code" href="classclang_1_1Sema.html#ad3498714f771dbac5c562c8512e21d20">DiagnosePropertyAccessorMismatch</a>(property, GetterMethod,</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>                                    property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>());</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span> </div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>   <span class="keywordflow">if</span> (SetterMethod) {</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>     <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08">ObjCPropertyDecl::PropertyAttributeKind</a> CAttr =</div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>       <span class="keyword">property</span>->getPropertyAttributes();</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>     <span class="keywordflow">if</span> ((!(CAttr & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08a42d5321da515e536012690973e584789">ObjCPropertyDecl::OBJC_PR_readonly</a>)) &&</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>         <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(SetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()) !=</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>           <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>)</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SetterMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_setter_type_void);</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>     <span class="keywordflow">if</span> (SetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af883bf1b49148f6653b4e68d482e81ec">param_size</a>() != 1 ||</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>         !<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>           (*SetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>())->getType().getNonReferenceType(), </div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>           <span class="keyword">property</span>->getType().getNonReferenceType())) {</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(property-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>            diag::warn_accessor_property_type_mismatch)</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>         << property-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>         << SetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>();</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SetterMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_declared_at);</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>     }</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>   }</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span> </div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>   <span class="comment">// Synthesize getter/setter methods if none exist.</span></div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>   <span class="comment">// Find the default getter and if one not found, add one.</span></div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>   <span class="comment">// FIXME: The synthesized property we set here is misleading. We almost always</span></div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>   <span class="comment">// synthesize these methods unless the user explicitly provided prototypes</span></div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>   <span class="comment">// (which is odd, but allowed). Sema should be typechecking that the</span></div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>   <span class="comment">// declarations jive in that situation (which it is not currently).</span></div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>   <span class="keywordflow">if</span> (!GetterMethod) {</div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>     <span class="comment">// No instance method of same name as property getter name was found.</span></div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>     <span class="comment">// Declare a getter method and add it to the list of methods</span></div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>     <span class="comment">// for this class.</span></div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc = redeclaredProperty ? </div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>       redeclaredProperty-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>() :</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>       <span class="keyword">property</span>->getLocation();</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span> </div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>     GetterMethod = <a class="code" href="classclang_1_1ObjCMethodDecl.html#ad3e3e73fa88f08cb8b769f4614cdb237">ObjCMethodDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, Loc, Loc,</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>                              property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>(),</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>                              <span class="keyword">property</span>->getType(), 0, CD, <span class="comment">/*isInstance=*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>                              <span class="comment">/*isVariadic=*/</span><span class="keyword">false</span>, <span class="comment">/*isPropertyAccessor=*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>                              <span class="comment">/*isImplicitlyDeclared=*/</span><span class="keyword">true</span>, <span class="comment">/*isDefined=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>                              (<span class="keyword">property</span>->getPropertyImplementation() ==</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>                               <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a79a227c96a7b7d27c72c069e1e3d88aead71875caeec7ce6b43a8be66b3644edc">ObjCPropertyDecl::Optional</a>) ?</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>                              <a class="code" href="classclang_1_1ObjCMethodDecl.html#a542f187aaa0c0781b19ead8e71198abea8a74fa475f05f920a949240fdc03a24e">ObjCMethodDecl::Optional</a> :</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>                              <a class="code" href="classclang_1_1ObjCMethodDecl.html#a542f187aaa0c0781b19ead8e71198abea703b6cb86335709a7f15e1df6932b1bb">ObjCMethodDecl::Required</a>);</div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>     CD-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(GetterMethod);</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span> </div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>     <a class="code" href="SemaObjCProperty_8cpp.html#a40b68a0cce838f2b20900fc2965bbbf5">AddPropertyAttrs</a>(*<span class="keyword">this</span>, GetterMethod, property);</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span> </div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>     <span class="comment">// FIXME: Eventually this shouldn't be needed, as the lexical context</span></div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>     <span class="comment">// and the real context should be the same.</span></div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>     <span class="keywordflow">if</span> (lexicalDC)</div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>       GetterMethod-><a class="code" href="classclang_1_1Decl.html#ae9774d70804bdaa706bd2ba7c5ccb47f">setLexicalDeclContext</a>(lexicalDC);</div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>     <span class="keywordflow">if</span> (property-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsNotRetainedAttr.html">NSReturnsNotRetainedAttr</a>>())</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>       GetterMethod-><a class="code" href="classclang_1_1Decl.html#ae06dbf27ea2b038ffba068a4b24f3913">addAttr</a>(</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>         ::<span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1NSReturnsNotRetainedAttr.html">NSReturnsNotRetainedAttr</a>(Loc, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>));</div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>     </div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>     <span class="keywordflow">if</span> (property-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ObjCReturnsInnerPointerAttr.html">ObjCReturnsInnerPointerAttr</a>>())</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>       GetterMethod-><a class="code" href="classclang_1_1Decl.html#ae06dbf27ea2b038ffba068a4b24f3913">addAttr</a>(</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>         ::<span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1ObjCReturnsInnerPointerAttr.html">ObjCReturnsInnerPointerAttr</a>(Loc, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>));</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span> </div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount)</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>       <a class="code" href="classclang_1_1Sema.html#a08ccd27e0ff55912da0a9aeb48ba120e" title="Check a method declaration for compatibility with the Objective-C ARC conventions.">CheckARCMethodDecl</a>(GetterMethod);</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>   } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>     <span class="comment">// A user declared getter will be synthesize when @synthesize of</span></div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>     <span class="comment">// the property with the same name is seen in the @implementation</span></div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>     GetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa50dab341af0ece584e0e2c9ff8f8f4f">setPropertyAccessor</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>   <span class="keyword">property</span>->setGetterMethodDecl(GetterMethod);</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span> </div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>   <span class="comment">// Skip setter if property is read-only.</span></div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>   <span class="keywordflow">if</span> (!property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a66d0a870cb7a45e334f4400956781dbf" title="isReadOnly - Return true iff the property has a setter.">isReadOnly</a>()) {</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>     <span class="comment">// Find the default setter and if one not found, add one.</span></div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>     <span class="keywordflow">if</span> (!SetterMethod) {</div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>       <span class="comment">// No instance method of same name as property setter name was found.</span></div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>       <span class="comment">// Declare a setter method and add it to the list of methods</span></div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>       <span class="comment">// for this class.</span></div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc = redeclaredProperty ? </div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>         redeclaredProperty-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>() :</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>         <span class="keyword">property</span>->getLocation();</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> </div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>       SetterMethod =</div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>         <a class="code" href="classclang_1_1ObjCMethodDecl.html#ad3e3e73fa88f08cb8b769f4614cdb237">ObjCMethodDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, Loc, Loc,</div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>                                property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>(), <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>, 0,</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>                                CD, <span class="comment">/*isInstance=*/</span><span class="keyword">true</span>, <span class="comment">/*isVariadic=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>                                <span class="comment">/*isPropertyAccessor=*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>                                <span class="comment">/*isImplicitlyDeclared=*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>                                <span class="comment">/*isDefined=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>                                (<span class="keyword">property</span>->getPropertyImplementation() ==</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>                                 <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a79a227c96a7b7d27c72c069e1e3d88aead71875caeec7ce6b43a8be66b3644edc">ObjCPropertyDecl::Optional</a>) ?</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>                                 <a class="code" href="classclang_1_1ObjCMethodDecl.html#a542f187aaa0c0781b19ead8e71198abea8a74fa475f05f920a949240fdc03a24e">ObjCMethodDecl::Optional</a> :</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>                                 <a class="code" href="classclang_1_1ObjCMethodDecl.html#a542f187aaa0c0781b19ead8e71198abea703b6cb86335709a7f15e1df6932b1bb">ObjCMethodDecl::Required</a>);</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span> </div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>       <span class="comment">// Invent the arguments for the setter. We don't bother making a</span></div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>       <span class="comment">// nice name for the argument.</span></div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>       <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *Argument = <a class="code" href="classclang_1_1ParmVarDecl.html#aa4caff73c551f0c8ac06b6ddc51d1a09">ParmVarDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, SetterMethod,</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>                                                   Loc, Loc,</div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>                                                   property-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>(),</div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>                                     <span class="keyword">property</span>->getType().getUnqualifiedType(),</div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>                                                   <span class="comment">/*TInfo=*/</span>0,</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>                                                   <a class="code" href="namespaceclang.html#a56dabc7d0ce7d72b9a35f6f5c3f89370aebf74ba707605e744f1303f997b2477f">SC_None</a>,</div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>                                                   0);</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>       SetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ac8ecf1ca37d2ca78b9455bdc5f4e1c8b" title="Sets the method's parameters and selector source locations. If the method is implicit (not coming fro...">setMethodParams</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, Argument, None);</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span> </div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>       <a class="code" href="SemaObjCProperty_8cpp.html#a40b68a0cce838f2b20900fc2965bbbf5">AddPropertyAttrs</a>(*<span class="keyword">this</span>, SetterMethod, property);</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span> </div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>       CD-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(SetterMethod);</div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>       <span class="comment">// FIXME: Eventually this shouldn't be needed, as the lexical context</span></div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>       <span class="comment">// and the real context should be the same.</span></div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>       <span class="keywordflow">if</span> (lexicalDC)</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>         SetterMethod-><a class="code" href="classclang_1_1Decl.html#ae9774d70804bdaa706bd2ba7c5ccb47f">setLexicalDeclContext</a>(lexicalDC);</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span> </div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>       <span class="comment">// It's possible for the user to have set a very odd custom</span></div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>       <span class="comment">// setter selector that causes it to have a method family.</span></div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount)</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>         <a class="code" href="classclang_1_1Sema.html#a08ccd27e0ff55912da0a9aeb48ba120e" title="Check a method declaration for compatibility with the Objective-C ARC conventions.">CheckARCMethodDecl</a>(SetterMethod);</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>     } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>       <span class="comment">// A user declared setter will be synthesize when @synthesize of</span></div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>       <span class="comment">// the property with the same name is seen in the @implementation</span></div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>       SetterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa50dab341af0ece584e0e2c9ff8f8f4f">setPropertyAccessor</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>     <span class="keyword">property</span>->setSetterMethodDecl(SetterMethod);</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>   }</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>   <span class="comment">// Add any synthesized methods to the global pool. This allows us to</span></div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>   <span class="comment">// handle the following, which is supported by GCC (and part of the design).</span></div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>   <span class="comment">// @interface Foo</span></div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>   <span class="comment">// @property double bar;</span></div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>   <span class="comment">// @end</span></div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>   <span class="comment">// void thisIsUnfortunate() {</span></div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>   <span class="comment">//   id foo;</span></div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>   <span class="comment">//   double bar = [foo bar];</span></div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>   <span class="comment">// }</span></div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>   <span class="keywordflow">if</span> (GetterMethod)</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>     <a class="code" href="classclang_1_1Sema.html#a6fd92927cc2d97aa2c444f9ac9ec9398">AddInstanceMethodToGlobalPool</a>(GetterMethod);</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>   <span class="keywordflow">if</span> (SetterMethod)</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>     <a class="code" href="classclang_1_1Sema.html#a6fd92927cc2d97aa2c444f9ac9ec9398">AddInstanceMethodToGlobalPool</a>(SetterMethod);</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> </div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *CurrentClass = dyn_cast<<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>>(CD);</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>   <span class="keywordflow">if</span> (!CurrentClass) {</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *Cat = dyn_cast<ObjCCategoryDecl>(CD))</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>       CurrentClass = Cat->getClassInterface();</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a> *Impl = dyn_cast<ObjCImplDecl>(CD))</div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>       CurrentClass = Impl->getClassInterface();</div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>   }</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>   <span class="keywordflow">if</span> (GetterMethod)</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>     <a class="code" href="classclang_1_1Sema.html#a48ace867931100169b0ec69895b18742">CheckObjCMethodOverrides</a>(GetterMethod, CurrentClass, <a class="code" href="classclang_1_1Sema.html#ac9a2748b1865a6c75b3eb51b0fc9da50aefe4a5eacf35c76e36d8600d1d2e4eaa">Sema::RTC_Unknown</a>);</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>   <span class="keywordflow">if</span> (SetterMethod)</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>     <a class="code" href="classclang_1_1Sema.html#a48ace867931100169b0ec69895b18742">CheckObjCMethodOverrides</a>(SetterMethod, CurrentClass, <a class="code" href="classclang_1_1Sema.html#ac9a2748b1865a6c75b3eb51b0fc9da50aefe4a5eacf35c76e36d8600d1d2e4eaa">Sema::RTC_Unknown</a>);</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span> }</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span> </div>
+<div class="line"><a name="l02013"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a63fe4a795eb20d77e8780ecb796b2dfc"> 2013</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a63fe4a795eb20d77e8780ecb796b2dfc">Sema::CheckObjCPropertyAttributes</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *PDecl,</div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>                                        <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc,</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>                                        <span class="keywordtype">unsigned</span> &<a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a>,</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>                                        <span class="keywordtype">bool</span> propertyInPrimaryClass) {</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>   <span class="comment">// FIXME: Improve the reported location.</span></div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>   <span class="keywordflow">if</span> (!PDecl || PDecl-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>())</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>   </div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>   <span class="keywordflow">if</span> ((Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea6670cb1eb4fdf3be1fb8b2a4b50a9469">ObjCDeclSpec::DQ_PR_readonly</a>) &&</div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>       (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eadd3236c931b1c11d2e301902133420a4">ObjCDeclSpec::DQ_PR_readwrite</a>))</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>     << <span class="stringliteral">"readonly"</span> << <span class="stringliteral">"readwrite"</span>;</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>   </div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PropertyDecl = cast<ObjCPropertyDecl>(PDecl);</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> PropertyTy = PropertyDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>();</div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>   <span class="keywordtype">unsigned</span> PropertyOwnership = <a class="code" href="SemaObjCProperty_8cpp.html#a645a2f511fa2eb7806920bd4f209f96d">getOwnershipRule</a>(Attributes);</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> </div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>   <span class="keywordflow">if</span> (Attributes & ObjCDeclSpec::DQ_PR_readonly) {</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>         PropertyTy->isObjCRetainableType() &&</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>         !PropertyOwnership) {</div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>       <span class="comment">// 'readonly' property with no obvious lifetime.</span></div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>       <span class="comment">// its life time will be determined by its backing ivar.</span></div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>     }</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (PropertyOwnership) {</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#aa6addac536d2911c8d411bfb1bd97fac">getSourceManager</a>().<a class="code" href="classclang_1_1SourceManager.html#a99c639318222119c75ea9c12f1aa5cf2" title="Returns if a SourceLocation is in a system header.">isInSystemHeader</a>(Loc))</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::warn_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>           << <span class="stringliteral">"readonly"</span> << <a class="code" href="SemaObjCProperty_8cpp.html#af6edb721f6dfa880195937d90dec8a26">NameOfOwnershipAttribute</a>(Attributes);</div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>     }</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>   }</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span> </div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>   <span class="comment">// Check for copy or retain on non-object types.</span></div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>   <span class="keywordflow">if</span> ((Attributes & (<a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a> | <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a> |</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>                     <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a> | <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>)) &&</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>       !PropertyTy->isObjCRetainableType() &&</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>       !PropertyDecl-><a class="code" href="classclang_1_1Decl.html#a6a041df02fad17a6fabe51af5de0ea3c">getAttr</a><<a class="code" href="classclang_1_1ObjCNSObjectAttr.html">ObjCNSObjectAttr</a>>()) {</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_requires_object)</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>       << (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a> ? <span class="stringliteral">"weak"</span> :</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>           Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a> ? <span class="stringliteral">"copy"</span> : <span class="stringliteral">"retain (or strong)"</span>);</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>     Attributes &= ~(<a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>   | <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a> |</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>                     <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a> | <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>);</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>     PropertyDecl-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>   }</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span> </div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>   <span class="comment">// Check for more than one of { assign, copy, retain }.</span></div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>   <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea21e6ab8ff00919ac24fbbef723b1f221">ObjCDeclSpec::DQ_PR_assign</a>) {</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a>) {</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>         << <span class="stringliteral">"assign"</span> << <span class="stringliteral">"copy"</span>;</div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_copy;</div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>     }</div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a>) {</div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>         << <span class="stringliteral">"assign"</span> << <span class="stringliteral">"retain"</span>;</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_retain;</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>     }</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>) {</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>         << <span class="stringliteral">"assign"</span> << <span class="stringliteral">"strong"</span>;</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_strong;</div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>     }</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount  &&</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>         (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>)) {</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>         << <span class="stringliteral">"assign"</span> << <span class="stringliteral">"weak"</span>;</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_weak;</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>     }</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>     <span class="keywordflow">if</span> (PropertyDecl-><a class="code" href="classclang_1_1Decl.html#a6a041df02fad17a6fabe51af5de0ea3c">getAttr</a><<a class="code" href="classclang_1_1IBOutletCollectionAttr.html">IBOutletCollectionAttr</a>>())</div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::warn_iboutletcollection_property_assign);</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea628b0bb8dec9bc465ec2670ab322fa66">ObjCDeclSpec::DQ_PR_unsafe_unretained</a>) {</div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a>) {</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>         << <span class="stringliteral">"unsafe_unretained"</span> << <span class="stringliteral">"copy"</span>;</div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_copy;</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>     }</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a>) {</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>         << <span class="stringliteral">"unsafe_unretained"</span> << <span class="stringliteral">"retain"</span>;</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_retain;</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>     }</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>) {</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>         << <span class="stringliteral">"unsafe_unretained"</span> << <span class="stringliteral">"strong"</span>;</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_strong;</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>     }</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount  &&</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>         (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>)) {</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>         << <span class="stringliteral">"unsafe_unretained"</span> << <span class="stringliteral">"weak"</span>;</div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_weak;</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>     }</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eac194171a9c42c6d379fd5c85c2e99193">ObjCDeclSpec::DQ_PR_copy</a>) {</div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a>) {</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>         << <span class="stringliteral">"copy"</span> << <span class="stringliteral">"retain"</span>;</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_retain;</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>     }</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>) {</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>         << <span class="stringliteral">"copy"</span> << <span class="stringliteral">"strong"</span>;</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_strong;</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>     }</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>     <span class="keywordflow">if</span> (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>) {</div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>         << <span class="stringliteral">"copy"</span> << <span class="stringliteral">"weak"</span>;</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_weak;</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>     }</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>   }</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaa5fa6f12ec888f4a9fb496d2f9c1166b">ObjCDeclSpec::DQ_PR_retain</a>) &&</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>            (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea687a3a62a65337ea2ef32c97efda8d4e">ObjCDeclSpec::DQ_PR_weak</a>)) {</div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>         << <span class="stringliteral">"retain"</span> << <span class="stringliteral">"weak"</span>;</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_retain;</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>   }</div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea4dea2c135e1d002415ebced4bf1ea54f">ObjCDeclSpec::DQ_PR_strong</a>) &&</div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>            (Attributes & ObjCDeclSpec::DQ_PR_weak)) {</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>         << <span class="stringliteral">"strong"</span> << <span class="stringliteral">"weak"</span>;</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_weak;</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>   }</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>   <span class="keywordflow">if</span> ((Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076eaf7065dbbffb902f735039acdc27c5e27">ObjCDeclSpec::DQ_PR_atomic</a>) &&</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>       (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea66eb92a2e80a59b98098f1d3a1018a46">ObjCDeclSpec::DQ_PR_nonatomic</a>)) {</div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_objc_property_attr_mutually_exclusive)</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>         << <span class="stringliteral">"atomic"</span> << <span class="stringliteral">"nonatomic"</span>;</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>       Attributes &= ~<a class="code" href="classclang_1_1ObjCDeclSpec.html" title="Captures information about "declaration specifiers" specific to Objective-C.">ObjCDeclSpec</a>::DQ_PR_atomic;</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>   }</div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span> </div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>   <span class="comment">// Warn if user supplied no assignment attribute, property is</span></div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>   <span class="comment">// readwrite, and this is an object type.</span></div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>   <span class="keywordflow">if</span> (!(Attributes & (ObjCDeclSpec::DQ_PR_assign | ObjCDeclSpec::DQ_PR_copy |</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>                       ObjCDeclSpec::DQ_PR_unsafe_unretained |</div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>                       ObjCDeclSpec::DQ_PR_retain | ObjCDeclSpec::DQ_PR_strong |</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>                       ObjCDeclSpec::DQ_PR_weak)) &&</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>       PropertyTy->isObjCObjectPointerType()) {</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount)</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>         <span class="comment">// With arc,  @property definitions should default to (strong) when </span></div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>         <span class="comment">// not specified; including when property is 'readonly'.</span></div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>         PropertyDecl-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7cda0703ffb6b55a12fe2a2d9c18e90">setPropertyAttributes</a>(<a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08ae37cc492fe4a3ece8410acd18c002c04">ObjCPropertyDecl::OBJC_PR_strong</a>);</div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!(Attributes & ObjCDeclSpec::DQ_PR_readonly)) {</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>         <span class="keywordtype">bool</span> isAnyClassTy = </div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>           (PropertyTy->isObjCClassType() || </div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>            PropertyTy->isObjCQualifiedClassType());</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>         <span class="comment">// In non-gc, non-arc mode, 'Class' is treated as a 'void *' no need to</span></div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>         <span class="comment">// issue any warning.</span></div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>         <span class="keywordflow">if</span> (isAnyClassTy && <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() == <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>)</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>           ;</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (propertyInPrimaryClass) {</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>           <span class="comment">// Don't issue warning on property with no life time in class </span></div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>           <span class="comment">// extension as it is inherited from property in primary class.</span></div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>           <span class="comment">// Skip this warning in gc-only mode.</span></div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>           <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84a14f316080dbd204ff0c18a43a3e46869">LangOptions::GCOnly</a>)</div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::warn_objc_property_no_assignment_attribute);</div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span> </div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>           <span class="comment">// If non-gc code warn that this is likely inappropriate.</span></div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>           <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() == <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>)</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::warn_objc_property_default_assign_on_object);</div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>         }</div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>       }</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> </div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>     <span class="comment">// FIXME: Implement warning dependent on NSCopying being</span></div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>     <span class="comment">// implemented. See also:</span></div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>     <span class="comment">// <rdar://5168496&4855821&5607453&5096644&4947311&5698469&4947014&5168496></span></div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>     <span class="comment">// (please trim this list while you are at it).</span></div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>   }</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span> </div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>   <span class="keywordflow">if</span> (!(Attributes & ObjCDeclSpec::DQ_PR_copy)</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>       &&!(Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea6670cb1eb4fdf3be1fb8b2a4b50a9469">ObjCDeclSpec::DQ_PR_readonly</a>)</div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>       && <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() == <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84a14f316080dbd204ff0c18a43a3e46869">LangOptions::GCOnly</a></div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>       && PropertyTy->isBlockPointerType())</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::warn_objc_property_copy_missing_on_block);</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((Attributes & ObjCDeclSpec::DQ_PR_retain) &&</div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>            !(Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea6670cb1eb4fdf3be1fb8b2a4b50a9469">ObjCDeclSpec::DQ_PR_readonly</a>) &&</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>            !(Attributes & ObjCDeclSpec::DQ_PR_strong) &&</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>            PropertyTy->isBlockPointerType())</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::warn_objc_property_retain_of_block);</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>   </div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>   <span class="keywordflow">if</span> ((Attributes & ObjCDeclSpec::DQ_PR_readonly) &&</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>       (Attributes & <a class="code" href="classclang_1_1ObjCDeclSpec.html#a062ec7a6afefc663f811bdcc03a7076ea75d33da549161c49b9c68bac97e48e08">ObjCDeclSpec::DQ_PR_setter</a>))</div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::warn_objc_readonly_property_has_setter);</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>       </div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:06 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaObjCProperty_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaObjCProperty_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaObjCProperty_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaObjCProperty_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,595 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: SemaObjCProperty.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_0c3cadfa2fbef89a3b8f57073e8a31f9.html">Sema</a></li><li class="navelem"><a class="el" href="dir_eb0099ce9b4bd055698282f76081f892.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SemaObjCProperty.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SemaObjCProperty_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> /home/tstellar/llvm/tools/clang/lib/Sema/Release+Asserts/SemaObjCProperty.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/Sema/Release+Asserts/SemaObjCProperty.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  SemaObjCProperty.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaInternal.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Sema.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attr.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrKinds.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrList.inc \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attrs.inc \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprObjC.h \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclObjC.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/<a class="code" href="namespaceclang.html#a0bca8d4a06a5e7175d2177c94788c9b4" title="Whether all locations of the selector identifiers are in a "standard" position.">SelectorLocationsKind</a>.h \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/MangleNumberingContext.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NSAPI.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.def \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TemplateKinds.h \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleLoader.h \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AnalysisBasedWarnings.h \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/DeclSpec.h \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttributeList.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Ownership.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttrParsedAttrList.inc \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ExternalSemaSource.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TypoCorrection.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Weak.h \</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>  /home/tstellar/llvm/include/llvm/ADT/MapVector.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/IdentifierResolver.h \</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/LocInfoType.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ObjCMethodList.h \</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ScopeInfo.h \</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>  /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmParser.h \</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>  /home/tstellar/llvm/include/llvm/MC/MCParser/AsmLexer.h \</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>  /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmLexer.h \</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>  /home/tstellar/llvm/include/llvm/Support/SMLoc.h \</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaDiagnostic.h \</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticSemaKinds.inc \</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTMutationListener.h \</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h \</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h \</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h \</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Preprocessor.h \</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.h \</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MacroInfo.h \</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.h \</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPCallbacks.h \</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h \</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Pragma.h \</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHLexer.h \</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHManager.h \</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/TokenLexer.h \</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Initialization.h \</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Overload.h \</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclTemplate.h \</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaFixItUtils.h \</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TemplateDeduction.h</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaInternal.h:</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTContext.h:</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTTypeTraits.h:</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTFwd.h:</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclNodes.inc:</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtNodes.inc:</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeNodes.def:</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Decl.h:</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/APValue.h:</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclBase.h:</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/AttrIterator.h:</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExternalASTSource.h:</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CharUnits.h:</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Redeclarable.h:</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Type.h:</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NestedNameSpecifier.h:</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h:</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateName.h:</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h:</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> </div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Stmt.h:</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclGroup.h:</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtIterator.h:</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CapturedStmt.h:</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateBase.h:</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLoc.h:</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLocNodes.def:</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CanonicalType.h:</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandTraits.h:</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandList.inc:</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/PrettyPrinter.h:</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/RawCommentList.h:</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AddressSpaces.h:</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h:</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Sema.h:</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attr.h:</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrKinds.h:</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrList.inc:</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h:</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attrs.inc:</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Expr.h:</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> </div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTVector.h:</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span> </div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> </div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> </div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span> </div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprObjC.h:</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclObjC.h:</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/<a class="code" href="namespaceclang.html#a0bca8d4a06a5e7175d2177c94788c9b4" title="Whether all locations of the selector identifiers are in a "standard" position.">SelectorLocationsKind</a>.h:</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/MangleNumberingContext.h:</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span> </div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NSAPI.h:</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ExpressionTraits.h:</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> </div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.h:</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.def:</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TemplateKinds.h:</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> </div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleLoader.h:</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> </div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h:</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AnalysisBasedWarnings.h:</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> </div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/DeclSpec.h:</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> </div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Lambda.h:</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h:</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttributeList.h:</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Ownership.h:</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttrParsedAttrList.inc:</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span> </div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ExternalSemaSource.h:</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span> </div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TypoCorrection.h:</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span> </div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclCXX.h:</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTUnresolvedSet.h:</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/UnresolvedSet.h:</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprCXX.h:</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> </div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Weak.h:</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span> /home/tstellar/llvm/include/llvm/ADT/MapVector.h:</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/IdentifierResolver.h:</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/LocInfoType.h:</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span> </div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ObjCMethodList.h:</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span> </div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ScopeInfo.h:</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmParser.h:</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span> /home/tstellar/llvm/include/llvm/MC/MCParser/AsmLexer.h:</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span> </div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmLexer.h:</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> /home/tstellar/llvm/include/llvm/Support/SMLoc.h:</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span> </div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaDiagnostic.h:</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticSemaKinds.inc:</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTMutationListener.h:</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> </div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h:</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> </div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h:</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> </div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h:</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Preprocessor.h:</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.h:</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> </div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MacroInfo.h:</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.h:</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPCallbacks.h:</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h:</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> </div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Pragma.h:</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHLexer.h:</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHManager.h:</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/TokenLexer.h:</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Initialization.h:</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span> </div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Overload.h:</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> </div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclTemplate.h:</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> </div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaFixItUtils.h:</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span> </div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TemplateDeduction.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:06 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaOpenMP_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaOpenMP_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaOpenMP_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaOpenMP_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1241 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: SemaOpenMP.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_0c3cadfa2fbef89a3b8f57073e8a31f9.html">Sema</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SemaOpenMP.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SemaOpenMP_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- SemaOpenMP.cpp - Semantic Analysis for OpenMP constructs ----------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span><span class="comment"></span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">/// \file</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">/// \brief This file implements semantic analysis for OpenMP directives and</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">/// clauses.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment"></span><span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="OpenMPKinds_8h.html" title="Defines some OpenMP-specific enums and functions.">clang/Basic/OpenMPKinds.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="Decl_8h.html">clang/AST/Decl.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="DeclCXX_8h.html" title="Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).">clang/AST/DeclCXX.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="DeclOpenMP_8h.html" title="This file defines OpenMP nodes for declarative directives.">clang/AST/DeclOpenMP.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="StmtCXX_8h.html">clang/AST/StmtCXX.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="StmtOpenMP_8h.html" title="This file defines OpenMP AST classes for executable directives and clauses.">clang/AST/StmtOpenMP.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="StmtVisitor_8h.html">clang/AST/StmtVisitor.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="Preprocessor_8h.html">clang/Lex/Preprocessor.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="Initialization_8h.html">clang/Sema/Initialization.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="SemaInternal_8h.html">clang/Sema/SemaInternal.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="Lookup_8h.html">clang/Sema/Lookup.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "<a class="code" href="Scope_8h.html">clang/Sema/Scope.h</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "<a class="code" href="ScopeInfo_8h.html">clang/Sema/ScopeInfo.h</a>"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">// Stack of data-sharing attributes for variables</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">/// \brief Default data sharing attributes, which can be applied to directive.</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="SemaOpenMP_8cpp.html#a4d63232577138069c6f0acc303ffc325">   36</a></span> <span class="comment"></span><span class="keyword">enum</span> <a class="code" href="SemaOpenMP_8cpp.html#a4d63232577138069c6f0acc303ffc325" title="Default data sharing attributes, which can be applied to directive.">DefaultDataSharingAttributes</a> {</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   DSA_unspecified = 0,   <span class="comment">/// \brief Data sharing attribute not specified.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment"></span>  DSA_none = 1 << 0,     <span class="comment">/// \brief Default data sharing attribute 'none'.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment"></span>  DSA_shared = 1 << 1    <span class="comment">/// \brief Default data sharing attribute 'shared'.</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment"></span>};</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment"></span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment">/// \brief Stack for tracking declarations used in OpenMP directives and</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment">/// clauses and their data-sharing attributes.</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment"></span><span class="keyword">class </span>DSAStackTy {</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keyword">struct </span>DSAVarData {</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> DKind;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699" title="OpenMP clauses.">OpenMPClauseKind</a> CKind;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *RefExpr;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     DSAVarData() : DKind(<a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3ad2540e88992ae4cec3cbcba1e8e73a92">OMPD_unknown</a>), CKind(<a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a>), RefExpr(0) { }</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   };</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keyword">struct </span>DSAInfo {</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699" title="OpenMP clauses.">OpenMPClauseKind</a> <a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *RefExpr;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   };</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keyword">typedef</span> llvm::SmallDenseMap<VarDecl *, DSAInfo, 64> DeclSAMapTy;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keyword">struct </span>SharingMapTy {</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     DeclSAMapTy SharingMap;</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <a class="code" href="SemaOpenMP_8cpp.html#a4d63232577138069c6f0acc303ffc325" title="Default data sharing attributes, which can be applied to directive.">DefaultDataSharingAttributes</a> DefaultAttr;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> <a class="code" href="VerifyDiagnosticConsumer_8cpp.html#a921b22de3a2e7d65400ea994e3d70c9d">Directive</a>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> DirectiveName;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <a class="code" href="classclang_1_1Scope.html">Scope</a> *CurScope;</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     SharingMapTy(<a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> DKind,</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>                  <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &Name,</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>                  <a class="code" href="classclang_1_1Scope.html">Scope</a> *CurScope)</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>       : SharingMap(), DefaultAttr(DSA_unspecified), <a class="code" href="classclang_1_1VerifyDiagnosticConsumer_1_1Directive.html">Directive</a>(DKind),</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         DirectiveName(Name), CurScope(CurScope) { }</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     SharingMapTy()</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>       : SharingMap(), DefaultAttr(DSA_unspecified),</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <a class="code" href="classclang_1_1VerifyDiagnosticConsumer_1_1Directive.html">Directive</a>(<a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3ad2540e88992ae4cec3cbcba1e8e73a92">OMPD_unknown</a>), DirectiveName(),</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         CurScope(0) { }</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   };</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SharingMapTy, 64></a> StackTy;</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment"></span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">  /// \brief Stack of used declaration and their data-sharing attributes.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment"></span>  StackTy <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &Actions;</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SharingMapTy, 8>::reverse_iterator</a> reverse_iterator;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> </div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   DSAVarData getDSA(StackTy::reverse_iterator Iter, <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D);</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keyword">explicit</span> DSAStackTy(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) : <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>(1), Actions(S) { }</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordtype">void</span> push(<a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> DKind, <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &DirName,</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>             <a class="code" href="classclang_1_1Scope.html">Scope</a> *CurScope) {</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.push_back(SharingMapTy(DKind, DirName, CurScope));</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   }</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keywordtype">void</span> pop() {</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     assert(<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.size() > 1 && <span class="stringliteral">"Data-sharing attributes stack is empty!"</span>);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.pop_back();</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   }</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment"></span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="comment">  /// \brief Adds explicit data sharing attribute to the specified declaration.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment"></span>  <span class="keywordtype">void</span> addDSA(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D, <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *E, <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699" title="OpenMP clauses.">OpenMPClauseKind</a> A);</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment"></span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">  /// \brief Checks if the variable is a local for OpenMP region.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment"></span>  <span class="keywordtype">bool</span> isOpenMPLocal(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D);</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment"></span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment">  /// \brief Returns data sharing attributes from top of the stack for the</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">  /// specified declaration.</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment"></span>  DSAVarData getTopDSA(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D);<span class="comment"></span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">  /// \brief Returns data-sharing attributes for the specified declaration.</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment"></span>  DSAVarData getImplicitDSA(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D);<span class="comment"></span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">  /// \brief Checks if the specified variables has \a CKind data-sharing</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment">  /// attribute in \a DKind directive.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="comment"></span>  DSAVarData hasDSA(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D, <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699" title="OpenMP clauses.">OpenMPClauseKind</a> CKind,</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>                     <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> DKind = <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3ad2540e88992ae4cec3cbcba1e8e73a92">OMPD_unknown</a>);</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> </div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment"></span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">  /// \brief Returns currently analyzed directive.</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment"></span>  <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> getCurrentDirective()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="keywordflow">return</span> <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().Directive;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   }</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment"></span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">  /// \brief Set default data sharing attribute to none.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment"></span>  <span class="keywordtype">void</span> setDefaultDSANone() { <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().DefaultAttr = DSA_none; }<span class="comment"></span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">  /// \brief Set default data sharing attribute to shared.</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment"></span>  <span class="keywordtype">void</span> setDefaultDSAShared() { <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().DefaultAttr = DSA_shared; }</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <a class="code" href="SemaOpenMP_8cpp.html#a4d63232577138069c6f0acc303ffc325" title="Default data sharing attributes, which can be applied to directive.">DefaultDataSharingAttributes</a> getDefaultDSA()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordflow">return</span> <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().DefaultAttr;</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   }</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <a class="code" href="classclang_1_1Scope.html">Scope</a> *getCurScope() { <span class="keywordflow">return</span> <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().CurScope; }</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> };</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> } <span class="comment">// end anonymous namespace.</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> DSAStackTy::DSAVarData DSAStackTy::getDSA(StackTy::reverse_iterator Iter,</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>                                           <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D) {</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   DSAVarData DVar;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keywordflow">if</span> (Iter == <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.rend() - 1) {</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="comment">// in a region but not in construct]</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="comment">//  File-scope or namespace-scope variables referenced in called routines</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="comment">//  in the region are shared unless they appear in a threadprivate</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="comment">//  directive.</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="comment">// TODO</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">if</span> (!D-><a class="code" href="classclang_1_1VarDecl.html#a3b5f3ef917987cca85cd9f33f31c567e">isFunctionOrMethodVarDecl</a>())</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       DVar.CKind = OMPC_shared;</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     <span class="comment">// OpenMP [2.9.1.2, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     <span class="comment">// in a region but not in construct]</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="comment">//  Variables with static storage duration that are declared in called</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="comment">//  routines in the region are shared.</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (D-><a class="code" href="classclang_1_1VarDecl.html#a29acc74cf00aaf5d939367f31eeb3aa3" title="Returns true for all variables that do not have local storage.">hasGlobalStorage</a>())</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       DVar.CKind = OMPC_shared;</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   }</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   DVar.DKind = Iter->Directive;</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="comment">// Explicitly specified attributes and local variables with predetermined</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="comment">// attributes.</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <span class="keywordflow">if</span> (Iter->SharingMap.count(D)) {</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     DVar.RefExpr = Iter->SharingMap[D].RefExpr;</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     DVar.CKind = Iter->SharingMap[D].Attributes;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   }</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="comment">// in a Construct, C/C++, implicitly determined, p.1]</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="comment">//  In a parallel or task construct, the data-sharing attributes of these</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="comment">//  variables are determined by the default clause, if present.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordflow">switch</span> (Iter->DefaultAttr) {</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordflow">case</span> DSA_shared:</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     DVar.CKind = OMPC_shared;</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="keywordflow">case</span> DSA_none:</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">case</span> DSA_unspecified:</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <span class="comment">// in a Construct, implicitly determined, p.2]</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <span class="comment">//  In a parallel construct, if no default clause is present, these</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="comment">//  variables are shared.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">if</span> (DVar.DKind == OMPD_parallel) {</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       DVar.CKind = OMPC_shared;</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     }</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="comment">// in a Construct, implicitly determined, p.4]</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="comment">//  In a task construct, if no default clause is present, a variable that in</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="comment">//  the enclosing context is determined to be shared by all implicit tasks</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     <span class="comment">//  bound to the current team is shared.</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="comment">// TODO</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     <span class="keywordflow">if</span> (DVar.DKind == OMPD_task) {</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       DSAVarData DVarTemp;</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       <span class="keywordflow">for</span> (StackTy::reverse_iterator I = Iter + 1,</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>                                      EE = <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.rend() - 1;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>            I != EE; ++I) {</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         <span class="comment">// in a Construct, implicitly determined, p.6]</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         <span class="comment">//  In a task construct, if no default clause is present, a variable</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>         <span class="comment">//  whose data-sharing attribute is not determined by the rules above is</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         <span class="comment">//  firstprivate.</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>         DVarTemp = getDSA(I, D);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         <span class="keywordflow">if</span> (DVarTemp.CKind != OMPC_shared) {</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>           DVar.RefExpr = 0;</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>           DVar.DKind = OMPD_task;</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>           DVar.CKind = OMPC_firstprivate;</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>           <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>         }</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         <span class="keywordflow">if</span> (I->Directive == OMPD_parallel) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>       }</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>       DVar.DKind = OMPD_task;</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       DVar.CKind =</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         (DVarTemp.CKind == <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a>) ? OMPC_firstprivate : OMPC_shared;</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>       <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     }</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   }</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="comment">// in a Construct, implicitly determined, p.3]</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="comment">//  For constructs other than task, if no default clause is present, these</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="comment">//  variables inherit their data-sharing attributes from the enclosing</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="comment">//  context.</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordflow">return</span> getDSA(Iter + 1, D);</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> }</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="keywordtype">void</span> DSAStackTy::addDSA(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D, <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *E, <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699" title="OpenMP clauses.">OpenMPClauseKind</a> A) {</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">if</span> (A == <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699af9bc5d6012e03b67514f0b8db72fe7c7">OMPC_threadprivate</a>) {</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>[0].SharingMap[D].Attributes = A;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>[0].SharingMap[D].RefExpr = E;</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     assert(<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.size() > 1 && <span class="stringliteral">"Data-sharing attributes stack is empty"</span>);</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().SharingMap[D].Attributes = A;</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().SharingMap[D].RefExpr = E;</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   }</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> }</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="keywordtype">bool</span> DSAStackTy::isOpenMPLocal(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D) {</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <a class="code" href="classclang_1_1Scope.html">Scope</a> *CurScope = getCurScope();</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <span class="keywordflow">while</span> (CurScope && !CurScope-><a class="code" href="classclang_1_1Scope.html#a704908bfa8ade9ea0ff027f1c45b0e12">isDeclScope</a>(D))</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     CurScope = CurScope-><a class="code" href="classclang_1_1Scope.html#a41a39e012b966ffcb2f05d41f4bdbb4b">getParent</a>();</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="keywordflow">while</span> (CurScope && !CurScope-><a class="code" href="classclang_1_1Scope.html#a0ef8bf4c43826bf9a1dc0cac83b1dbf4" title="Determines whether this scope is the OpenMP directive scope.">isOpenMPDirectiveScope</a>())</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     CurScope = CurScope-><a class="code" href="classclang_1_1Scope.html#a41a39e012b966ffcb2f05d41f4bdbb4b">getParent</a>();</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="keywordtype">bool</span> isOpenMPLocal = !!CurScope;</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="keywordflow">if</span> (!isOpenMPLocal) {</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     CurScope = getCurScope();</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     <span class="keywordflow">while</span> (CurScope && !CurScope-><a class="code" href="classclang_1_1Scope.html#a0ef8bf4c43826bf9a1dc0cac83b1dbf4" title="Determines whether this scope is the OpenMP directive scope.">isOpenMPDirectiveScope</a>())</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       CurScope = CurScope-><a class="code" href="classclang_1_1Scope.html#a41a39e012b966ffcb2f05d41f4bdbb4b">getParent</a>();</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     isOpenMPLocal =</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       CurScope &&</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       isa<CapturedDecl>(D-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()) &&</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       CurScope-><a class="code" href="classclang_1_1Scope.html#a9f689f716c89b3c12b187fc4f53d47ac">getFnParent</a>()-><a class="code" href="classclang_1_1Scope.html#a0ddcbbc7cb53f7b1f407ef68696b8d37">getEntity</a>()-><a class="code" href="classclang_1_1DeclContext.html#ac573b7eaf4f3177d1378df80e557160d" title="Determine whether this declaration context encloses the declaration context DC.">Encloses</a>(D-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   }</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="keywordflow">return</span> isOpenMPLocal;</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> }</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> DSAStackTy::DSAVarData DSAStackTy::getTopDSA(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D) {</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   DSAVarData DVar;</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="comment">// in a Construct, C/C++, predetermined, p.1]</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="comment">//  Variables appearing in threadprivate directives are threadprivate.</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1VarDecl.html#ae704b725af5821356581f7857a2a2761">getTLSKind</a>() != <a class="code" href="classclang_1_1VarDecl.html#abd5cfc880214a4e8b29d1875602ae3c6a9d620e432e4fb1d0137c9aaa4de9ee3d" title="Not a TLS variable.">VarDecl::TLS_None</a>) {</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     DVar.CKind = <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699af9bc5d6012e03b67514f0b8db72fe7c7">OMPC_threadprivate</a>;</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   }</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <span class="keywordflow">if</span> (<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>[0].SharingMap.count(D)) {</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     DVar.RefExpr = <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>[0].SharingMap[D].RefExpr;</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     DVar.CKind = <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699af9bc5d6012e03b67514f0b8db72fe7c7">OMPC_threadprivate</a>;</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   }</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="comment">// in a Construct, C/C++, predetermined, p.1]</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <span class="comment">// Variables with automatic storage duration that are declared in a scope</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="comment">// inside the construct are private.</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordflow">if</span> (isOpenMPLocal(D) && D-><a class="code" href="classclang_1_1VarDecl.html#ab3fc38243546c278bf42ea0deb0ed8e9">isLocalVarDecl</a>() &&</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>       (D-><a class="code" href="classclang_1_1VarDecl.html#aabdb595f049bd0ce4703ca3a97dd2445" title="Returns the storage class as written in the source. For the computed linkage of symbol, see getLinkage.">getStorageClass</a>() == <a class="code" href="namespaceclang.html#a56dabc7d0ce7d72b9a35f6f5c3f89370a05562b421144cec9c0bb9feafc45e9ec">SC_Auto</a> ||</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>        D-><a class="code" href="classclang_1_1VarDecl.html#aabdb595f049bd0ce4703ca3a97dd2445" title="Returns the storage class as written in the source. For the computed linkage of symbol, see getLinkage.">getStorageClass</a>() == <a class="code" href="namespaceclang.html#a56dabc7d0ce7d72b9a35f6f5c3f89370aebf74ba707605e744f1303f997b2477f">SC_None</a>)) {</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     DVar.CKind = OMPC_private;</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   }</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="comment">// in a Construct, C/C++, predetermined, p.4]</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   <span class="comment">//  Static data memebers are shared.</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1VarDecl.html#a373bffe9299b1e17054f1bd6c46e00a5" title="Determines whether this is a static data member.">isStaticDataMember</a>()) {</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="comment">// Variables with const-qualified type having no mutable member may be listed</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     <span class="comment">// in a firstprivate clause, even if they are static data members.</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     DSAVarData DVarTemp = hasDSA(D, OMPC_firstprivate);</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     <span class="keywordflow">if</span> (DVarTemp.CKind == OMPC_firstprivate && DVarTemp.RefExpr)</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     DVar.CKind = OMPC_shared;</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   }</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1Type.html">Type</a> = D-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>().<a class="code" href="classclang_1_1QualType.html#abae06108b779ed32a4dc18fe8802fd6e">getCanonicalType</a>();</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   <span class="keywordtype">bool</span> IsConstant = Type.<a class="code" href="classclang_1_1QualType.html#a01b3c45b5f15a6893f4d8ce4f63f94e8">isConstant</a>(Actions.getASTContext());</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="keywordflow">while</span> (Type-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>()) {</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElemType = cast<ArrayType>(Type.<a class="code" href="classclang_1_1QualType.html#a669d7ba0645cd05d53508e3c1895075a">getTypePtr</a>())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     Type = ElemType.<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>().<a class="code" href="classclang_1_1QualType.html#abae06108b779ed32a4dc18fe8802fd6e">getCanonicalType</a>();</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   }</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="comment">// in a Construct, C/C++, predetermined, p.6]</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="comment">//  Variables with const qualified type having no mutable member are</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="comment">//  shared.</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = Actions.getLangOpts().CPlusPlus ?</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>                                 Type-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>() : 0;</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="keywordflow">if</span> (IsConstant &&</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       !(Actions.getLangOpts().CPlusPlus && RD && RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#ac4031735e5a340216c6085cc0bb44f61" title="Determine whether this class, or any of its class subobjects, contains a mutable field.">hasMutableFields</a>())) {</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     <span class="comment">// Variables with const-qualified type having no mutable member may be</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="comment">// listed in a firstprivate clause, even if they are static data members.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     DSAVarData DVarTemp = hasDSA(D, OMPC_firstprivate);</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     <span class="keywordflow">if</span> (DVarTemp.CKind == OMPC_firstprivate && DVarTemp.RefExpr)</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     DVar.CKind = OMPC_shared;</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   }</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="comment">// in a Construct, C/C++, predetermined, p.7]</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   <span class="comment">//  Variables with static storage duration that are declared in a scope</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="comment">//  inside the construct are shared.</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="keywordflow">if</span> (isOpenMPLocal(D) && D-><a class="code" href="classclang_1_1VarDecl.html#a513c56596b4d12e99dd42a4f3ff646d4">isStaticLocal</a>()) {</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     DVar.CKind = OMPC_shared;</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   }</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="comment">// Explicitly specified attributes and local variables with predetermined</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="comment">// attributes.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="keywordflow">if</span> (<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().SharingMap.count(D)) {</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     DVar.RefExpr = <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().SharingMap[D].RefExpr;</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     DVar.CKind = <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.back().SharingMap[D].Attributes;</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   }</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> }</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> </div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> DSAStackTy::DSAVarData DSAStackTy::getImplicitDSA(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D) {</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   <span class="keywordflow">return</span> getDSA(<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.rbegin() + 1, D);</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> }</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> </div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> DSAStackTy::DSAVarData DSAStackTy::hasDSA(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D, <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699" title="OpenMP clauses.">OpenMPClauseKind</a> CKind,</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>                                           <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> DKind) {</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <span class="keywordflow">for</span> (StackTy::reverse_iterator I = <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.rbegin() + 1,</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>                                  E = <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.rend() - 1;</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>        I != E; ++I) {</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     <span class="keywordflow">if</span> (DKind != <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3ad2540e88992ae4cec3cbcba1e8e73a92">OMPD_unknown</a> && DKind != I->Directive) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     DSAVarData DVar = getDSA(I, D);</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordflow">if</span> (DVar.CKind == CKind)</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>       <span class="keywordflow">return</span> DVar;</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   }</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="keywordflow">return</span> DSAVarData();</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> }</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> <span class="keywordtype">void</span> Sema::InitDataSharingAttributesStack() {</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   VarDataSharingAttributesStack = <span class="keyword">new</span> DSAStackTy(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> }</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a name="l00358"></a><span class="lineno"><a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">  358</a></span> <span class="preprocessor">#define DSAStack static_cast<DSAStackTy *>(VarDataSharingAttributesStack)</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> <span class="keywordtype">void</span> Sema::DestroyDataSharingAttributesStack() {</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="keyword">delete</span> <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>;</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> }</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a68974e651775f83ba98d987fb5092c90">  364</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a68974e651775f83ba98d987fb5092c90" title="Called on start of new data sharing attribute block.">Sema::StartOpenMPDSABlock</a>(<a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> DKind,</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>                                <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &DirName,</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>                                <a class="code" href="classclang_1_1Scope.html">Scope</a> *CurScope) {</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->push(DKind, DirName, CurScope);</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <a class="code" href="classclang_1_1Sema.html#a8e2c915481d9268a78c63f1cd01e5149">PushExpressionEvaluationContext</a>(<a class="code" href="classclang_1_1Sema.html#ac105cb9d8d4ad3e532351c498f6082b5a95024daaf0c7fed326d8d8c6a36714ab" title="The current expression is potentially evaluated at run time, which means that code may be generated t...">PotentiallyEvaluated</a>);</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> }</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
+<div class="line"><a name="l00371"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ad6bcac21d2d617e894374b68509d1f23">  371</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#ad6bcac21d2d617e894374b68509d1f23" title="Called on end of data sharing attribute block.">Sema::EndOpenMPDSABlock</a>(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *CurDirective) {</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->pop();</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   <a class="code" href="classclang_1_1Sema.html#ac9c31031071a21f7be71a6a51fef82e6">DiscardCleanupsInEvaluationContext</a>();</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   <a class="code" href="classclang_1_1Sema.html#a4b14ecfccf7ae79fada5380373df9223">PopExpressionEvaluationContext</a>();</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> }</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> <span class="keyword">class </span>VarDeclFilterCCC : <span class="keyword">public</span> <a class="code" href="classclang_1_1CorrectionCandidateCallback.html" title="Base class for callback objects used by Sema::CorrectTypo to check the validity of a potential typo c...">CorrectionCandidateCallback</a> {</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   <a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &Actions;</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   VarDeclFilterCCC(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) : Actions(S) { }</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateCandidate(<span class="keyword">const</span> <a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a> &Candidate) {</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *ND = Candidate.<a class="code" href="classclang_1_1TypoCorrection.html#a29de9b01d96527ae25ce1c2b7d45f7b6" title="Gets the pointer to the declaration of the typo correction.">getCorrectionDecl</a>();</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = dyn_cast_or_null<VarDecl>(ND)) {</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>       <span class="keywordflow">return</span> VD->hasGlobalStorage() &&</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>              Actions.isDeclInScope(ND, Actions.getCurLexicalContext(),</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>                                    Actions.getCurScope());</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     }</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   }</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> };</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> }</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#aa4cd9ee11398c6360fac8f4fe08a8eb0">  396</a></span> <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> <a class="code" href="classclang_1_1Sema.html#aa4cd9ee11398c6360fac8f4fe08a8eb0" title="Called on correct id-expression from the '#pragma omp threadprivate'.">Sema::ActOnOpenMPIdExpression</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *CurScope,</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>                                          <a class="code" href="classclang_1_1CXXScopeSpec.html" title="Represents a C++ nested-name-specifier or a global scope specifier.">CXXScopeSpec</a> &ScopeSpec,</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>                                          <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &Id) {</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   <a class="code" href="classclang_1_1LookupResult.html" title="Represents the results of name lookup.">LookupResult</a> Lookup(*<span class="keyword">this</span>, Id, <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>);</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>   <a class="code" href="classclang_1_1Sema.html#a805a91ca2bb0cccaa46c9cf35b36a4bb" title="Performs name lookup for a name that was parsed in the source code, and may contain a C++ scope speci...">LookupParsedName</a>(Lookup, CurScope, &ScopeSpec, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> </div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   <span class="keywordflow">if</span> (Lookup.<a class="code" href="classclang_1_1LookupResult.html#ad40ced676b01c7ef20a8a3612869bf54">isAmbiguous</a>())</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> </div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD;</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   <span class="keywordflow">if</span> (!Lookup.<a class="code" href="classclang_1_1LookupResult.html#aa262b3b1335fcc25968ca8aecd64e7eb">isSingleResult</a>()) {</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     VarDeclFilterCCC Validator(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a> Corrected = <a class="code" href="classclang_1_1Sema.html#a56bda9492c25602dc50508a4170268ef" title="Try to "correct" a typo in the source code by finding visible declarations whose names are similar to...">CorrectTypo</a>(Id, <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>, CurScope,</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>                                                0, Validator)) {</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       <a class="code" href="classclang_1_1Sema.html#ac282105147675560aa1344dcf17aeaa0">diagnoseTypo</a>(Corrected,</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>                    <a class="code" href="classclang_1_1Sema.html#ac4e72de7865043558a71912b3bfd8f91" title="Build a partial diagnostic.">PDiag</a>(Lookup.<a class="code" href="classclang_1_1LookupResult.html#a9f44c1cd9d9c7e84dd0202538dd72cd7" title="Return true if no decls were found.">empty</a>()? diag::err_undeclared_var_use_suggest</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>                                        : diag::err_omp_expected_var_arg_suggest)</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>                      << Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a4a662304441c06d60ec1764e515337c4" title="getName - Returns the embedded declaration name.">getName</a>());</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>       VD = Corrected.getCorrectionDeclAs<<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a>>();</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a47f8f8d3dab3d4ae666ac99f15b58b02" title="getLoc - Returns the main location of the declaration name.">getLoc</a>(), Lookup.<a class="code" href="classclang_1_1LookupResult.html#a9f44c1cd9d9c7e84dd0202538dd72cd7" title="Return true if no decls were found.">empty</a>() ? diag::err_undeclared_var_use</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>                                        : diag::err_omp_expected_var_arg)</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>           << Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a4a662304441c06d60ec1764e515337c4" title="getName - Returns the embedded declaration name.">getName</a>();</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     }</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="keywordflow">if</span> (!(VD = Lookup.<a class="code" href="classclang_1_1LookupResult.html#a94bcf1d27520ce8a3a9603e76dd4acee">getAsSingle</a><<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a>>())) {</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a47f8f8d3dab3d4ae666ac99f15b58b02" title="getLoc - Returns the main location of the declaration name.">getLoc</a>(), diag::err_omp_expected_var_arg)</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>         << Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a4a662304441c06d60ec1764e515337c4" title="getName - Returns the embedded declaration name.">getName</a>();</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Lookup.<a class="code" href="classclang_1_1LookupResult.html#a626e09f67bb669edefa962b5ae745344" title="Fetch the unique decl found by this lookup. Asserts that one was found.">getFoundDecl</a>()-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_declared_at);</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     }</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   }</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   Lookup.<a class="code" href="classclang_1_1LookupResult.html#ae2764b699f93e9590281ce9c4b097e33">suppressDiagnostics</a>();</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   <span class="comment">// OpenMP [2.9.2, Syntax, C/C++]</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   <span class="comment">//   Variables must be file-scope, namespace-scope, or static block-scope.</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keywordflow">if</span> (!VD-><a class="code" href="classclang_1_1VarDecl.html#a29acc74cf00aaf5d939367f31eeb3aa3" title="Returns true for all variables that do not have local storage.">hasGlobalStorage</a>()) {</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a47f8f8d3dab3d4ae666ac99f15b58b02" title="getLoc - Returns the main location of the declaration name.">getLoc</a>(), diag::err_omp_global_var_arg)</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>       << <a class="code" href="namespaceclang.html#ad685a6d44cbd3af2f4555e23776fddc0">getOpenMPDirectiveName</a>(OMPD_threadprivate)</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>       << !VD-><a class="code" href="classclang_1_1VarDecl.html#a513c56596b4d12e99dd42a4f3ff646d4">isStaticLocal</a>();</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="keywordtype">bool</span> IsDecl = VD-><a class="code" href="classclang_1_1VarDecl.html#a78a1c154d746b4dd700349fa705feaf6" title="Check whether this declaration is a definition. If this could be a tentative definition (in C)...">isThisDeclarationADefinition</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) ==</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>                   <a class="code" href="classclang_1_1VarDecl.html#ac06c359e18b401f50b6b71d050d4a48ca318c15b99fe2bdf050c425984ca16835" title="This declaration is only a declaration.">VarDecl::DeclarationOnly</a>;</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(VD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>          IsDecl ? diag::note_previous_decl : diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   }</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span> </div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *CanonicalVD = VD-><a class="code" href="classclang_1_1VarDecl.html#a90f40de40dddeba3c8e998214c50ab29" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>();</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *ND = cast<NamedDecl>(CanonicalVD);</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <span class="comment">// OpenMP [2.9.2, Restrictions, C/C++, p.2]</span></div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   <span class="comment">//   A threadprivate directive for file-scope variables must appear outside</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>   <span class="comment">//   any definition or declaration.</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   <span class="keywordflow">if</span> (CanonicalVD-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#add710d53ebeab05385a08e978862c149">isTranslationUnit</a>() &&</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       !<a class="code" href="classclang_1_1Sema.html#ac867e0d46910fdfd6c47f9a85574c15e">getCurLexicalContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#add710d53ebeab05385a08e978862c149">isTranslationUnit</a>()) {</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a47f8f8d3dab3d4ae666ac99f15b58b02" title="getLoc - Returns the main location of the declaration name.">getLoc</a>(), diag::err_omp_var_scope)</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       << <a class="code" href="namespaceclang.html#ad685a6d44cbd3af2f4555e23776fddc0">getOpenMPDirectiveName</a>(OMPD_threadprivate) << VD;</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     <span class="keywordtype">bool</span> IsDecl = VD-><a class="code" href="classclang_1_1VarDecl.html#a78a1c154d746b4dd700349fa705feaf6" title="Check whether this declaration is a definition. If this could be a tentative definition (in C)...">isThisDeclarationADefinition</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) ==</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>                   <a class="code" href="classclang_1_1VarDecl.html#ac06c359e18b401f50b6b71d050d4a48ca318c15b99fe2bdf050c425984ca16835" title="This declaration is only a declaration.">VarDecl::DeclarationOnly</a>;</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(VD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), IsDecl ? diag::note_previous_decl :</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>                                      diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   }</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   <span class="comment">// OpenMP [2.9.2, Restrictions, C/C++, p.3]</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   <span class="comment">//   A threadprivate directive for static class member variables must appear</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>   <span class="comment">//   in the class definition, in the same scope in which the member</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>   <span class="comment">//   variables are declared.</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>   <span class="keywordflow">if</span> (CanonicalVD-><a class="code" href="classclang_1_1VarDecl.html#a373bffe9299b1e17054f1bd6c46e00a5" title="Determines whether this is a static data member.">isStaticDataMember</a>() &&</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       !CanonicalVD-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#ab26c189165e15c46df7e4c734da0b0b8" title="Determine whether this declaration context is equivalent to the declaration context DC...">Equals</a>(<a class="code" href="classclang_1_1Sema.html#ac867e0d46910fdfd6c47f9a85574c15e">getCurLexicalContext</a>())) {</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a47f8f8d3dab3d4ae666ac99f15b58b02" title="getLoc - Returns the main location of the declaration name.">getLoc</a>(), diag::err_omp_var_scope)</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       << <a class="code" href="namespaceclang.html#ad685a6d44cbd3af2f4555e23776fddc0">getOpenMPDirectiveName</a>(OMPD_threadprivate) << VD;</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     <span class="keywordtype">bool</span> IsDecl = VD-><a class="code" href="classclang_1_1VarDecl.html#a78a1c154d746b4dd700349fa705feaf6" title="Check whether this declaration is a definition. If this could be a tentative definition (in C)...">isThisDeclarationADefinition</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) ==</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>                   <a class="code" href="classclang_1_1VarDecl.html#ac06c359e18b401f50b6b71d050d4a48ca318c15b99fe2bdf050c425984ca16835" title="This declaration is only a declaration.">VarDecl::DeclarationOnly</a>;</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(VD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), IsDecl ? diag::note_previous_decl :</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>                                      diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>   }</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>   <span class="comment">// OpenMP [2.9.2, Restrictions, C/C++, p.4]</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>   <span class="comment">//   A threadprivate directive for namespace-scope variables must appear</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>   <span class="comment">//   outside any definition or declaration other than the namespace</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>   <span class="comment">//   definition itself.</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <span class="keywordflow">if</span> (CanonicalVD-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#ab365d1e47ea9b252eb8c0fc8c3794ffd">isNamespace</a>() &&</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       (!<a class="code" href="classclang_1_1Sema.html#ac867e0d46910fdfd6c47f9a85574c15e">getCurLexicalContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#ac33a346d4e8db5e892aba87393f4e8e4">isFileContext</a>() ||</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>        !<a class="code" href="classclang_1_1Sema.html#ac867e0d46910fdfd6c47f9a85574c15e">getCurLexicalContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#ac573b7eaf4f3177d1378df80e557160d" title="Determine whether this declaration context encloses the declaration context DC.">Encloses</a>(CanonicalVD-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()))) {</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a47f8f8d3dab3d4ae666ac99f15b58b02" title="getLoc - Returns the main location of the declaration name.">getLoc</a>(), diag::err_omp_var_scope)</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       << <a class="code" href="namespaceclang.html#ad685a6d44cbd3af2f4555e23776fddc0">getOpenMPDirectiveName</a>(OMPD_threadprivate) << VD;</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="keywordtype">bool</span> IsDecl = VD-><a class="code" href="classclang_1_1VarDecl.html#a78a1c154d746b4dd700349fa705feaf6" title="Check whether this declaration is a definition. If this could be a tentative definition (in C)...">isThisDeclarationADefinition</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) ==</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>                   <a class="code" href="classclang_1_1VarDecl.html#ac06c359e18b401f50b6b71d050d4a48ca318c15b99fe2bdf050c425984ca16835" title="This declaration is only a declaration.">VarDecl::DeclarationOnly</a>;</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(VD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), IsDecl ? diag::note_previous_decl :</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>                                      diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   }</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   <span class="comment">// OpenMP [2.9.2, Restrictions, C/C++, p.6]</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>   <span class="comment">//   A threadprivate directive for static block-scope variables must appear</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>   <span class="comment">//   in the scope of the variable and not in a nested scope.</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   <span class="keywordflow">if</span> (CanonicalVD-><a class="code" href="classclang_1_1VarDecl.html#a513c56596b4d12e99dd42a4f3ff646d4">isStaticLocal</a>() && CurScope &&</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>       !<a class="code" href="classclang_1_1Sema.html#ae005c10cc4c746b79cb0c00de6deaa00">isDeclInScope</a>(ND, <a class="code" href="classclang_1_1Sema.html#ac867e0d46910fdfd6c47f9a85574c15e">getCurLexicalContext</a>(), CurScope)) {</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a47f8f8d3dab3d4ae666ac99f15b58b02" title="getLoc - Returns the main location of the declaration name.">getLoc</a>(), diag::err_omp_var_scope)</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       << <a class="code" href="namespaceclang.html#ad685a6d44cbd3af2f4555e23776fddc0">getOpenMPDirectiveName</a>(OMPD_threadprivate) << VD;</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     <span class="keywordtype">bool</span> IsDecl = VD-><a class="code" href="classclang_1_1VarDecl.html#a78a1c154d746b4dd700349fa705feaf6" title="Check whether this declaration is a definition. If this could be a tentative definition (in C)...">isThisDeclarationADefinition</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) ==</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>                   <a class="code" href="classclang_1_1VarDecl.html#ac06c359e18b401f50b6b71d050d4a48ca318c15b99fe2bdf050c425984ca16835" title="This declaration is only a declaration.">VarDecl::DeclarationOnly</a>;</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(VD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), IsDecl ? diag::note_previous_decl :</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>                                      diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>   }</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <span class="comment">// OpenMP [2.9.2, Restrictions, C/C++, p.2-6]</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>   <span class="comment">//   A threadprivate directive must lexically precede all references to any</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>   <span class="comment">//   of the variables in its list.</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   <span class="keywordflow">if</span> (VD-><a class="code" href="classclang_1_1Decl.html#ad588cec2ab8cfc2963b9ee5a9a21d304" title="Whether this declaration was used, meaning that a definition is required.">isUsed</a>()) {</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a47f8f8d3dab3d4ae666ac99f15b58b02" title="getLoc - Returns the main location of the declaration name.">getLoc</a>(), diag::err_omp_var_used)</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>       << <a class="code" href="namespaceclang.html#ad685a6d44cbd3af2f4555e23776fddc0">getOpenMPDirectiveName</a>(OMPD_threadprivate) << VD;</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   }</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> </div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ExprType = VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>();</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> DE = <a class="code" href="classclang_1_1Sema.html#a841d49059c28b85433cdeaed2562fb05">BuildDeclRefExpr</a>(VD, ExprType, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, Id.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a47f8f8d3dab3d4ae666ac99f15b58b02" title="getLoc - Returns the main location of the declaration name.">getLoc</a>());</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->addDSA(VD, cast<DeclRefExpr>(DE.<a class="code" href="classclang_1_1ActionResult.html#a75d6bbdafaa638e85809e113629401ca">get</a>()), <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699af9bc5d6012e03b67514f0b8db72fe7c7">OMPC_threadprivate</a>);</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>   <span class="keywordflow">return</span> DE;</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span> }</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span> </div>
+<div class="line"><a name="l00517"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a44d16279c815657d20ab02fa98b4adfc">  517</a></span> <a class="code" href="classclang_1_1OpaquePtr.html" title="Wrapper for void* pointer.">Sema::DeclGroupPtrTy</a> <a class="code" href="classclang_1_1Sema.html#a44d16279c815657d20ab02fa98b4adfc" title="Called on well-formed '#pragma omp threadprivate'.">Sema::ActOnOpenMPThreadprivateDirective</a>(</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>                                 <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc,</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>                                 <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> VarList) {</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1OMPThreadPrivateDecl.html" title="This represents '#pragma omp threadprivate ...' directive. For example, in the following, both 'a' and 'A::b' are threadprivate:">OMPThreadPrivateDecl</a> *D = <a class="code" href="classclang_1_1Sema.html#a7677ab82fbc8c93519dd2ddf2139bb36">CheckOMPThreadPrivateDecl</a>(Loc, VarList)) {</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(D);</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1OpaquePtr.html#ada2a201949e5b234c4b55c8ce996b68e">DeclGroupPtrTy::make</a>(<a class="code" href="classclang_1_1DeclGroupRef.html">DeclGroupRef</a>(D));</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   }</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#af7c6337ba6f14bd9c6ce935758a4f951">DeclGroupPtrTy</a>();</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span> }</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span> </div>
+<div class="line"><a name="l00527"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a7677ab82fbc8c93519dd2ddf2139bb36">  527</a></span> <a class="code" href="classclang_1_1OMPThreadPrivateDecl.html" title="This represents '#pragma omp threadprivate ...' directive. For example, in the following, both 'a' and 'A::b' are threadprivate:">OMPThreadPrivateDecl</a> *<a class="code" href="classclang_1_1Sema.html#a7677ab82fbc8c93519dd2ddf2139bb36">Sema::CheckOMPThreadPrivateDecl</a>(</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>                                  <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc,</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>                                  <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> VarList) {</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Expr *, 8></a> Vars;</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *>::iterator</a> I = VarList.begin(),</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>                                          E = VarList.end();</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>        I != E; ++I) {</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *DE = cast<DeclRefExpr>(*I);</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = cast<VarDecl>(DE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>());</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ILoc = DE-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>();</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> </div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <span class="comment">// OpenMP [2.9.2, Restrictions, C/C++, p.10]</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     <span class="comment">//   A threadprivate variable must not have an incomplete type.</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(ILoc, VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(),</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>                             diag::err_omp_threadprivate_incomplete_type)) {</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     }</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> </div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="comment">// OpenMP [2.9.2, Restrictions, C/C++, p.10]</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     <span class="comment">//   A threadprivate variable must not have a reference type.</span></div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     <span class="keywordflow">if</span> (VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ILoc, diag::err_omp_ref_type_arg)</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>         << <a class="code" href="namespaceclang.html#ad685a6d44cbd3af2f4555e23776fddc0">getOpenMPDirectiveName</a>(OMPD_threadprivate)</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>         << VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       <span class="keywordtype">bool</span> IsDecl = VD-><a class="code" href="classclang_1_1VarDecl.html#a78a1c154d746b4dd700349fa705feaf6" title="Check whether this declaration is a definition. If this could be a tentative definition (in C)...">isThisDeclarationADefinition</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) ==</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>                     <a class="code" href="classclang_1_1VarDecl.html#ac06c359e18b401f50b6b71d050d4a48ca318c15b99fe2bdf050c425984ca16835" title="This declaration is only a declaration.">VarDecl::DeclarationOnly</a>;</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(VD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), IsDecl ? diag::note_previous_decl :</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>                                        diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     }</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> </div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     <span class="comment">// Check if this is a TLS variable.</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>     <span class="keywordflow">if</span> (VD-><a class="code" href="classclang_1_1VarDecl.html#ae704b725af5821356581f7857a2a2761">getTLSKind</a>()) {</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ILoc, diag::err_omp_var_thread_local) << VD;</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>       <span class="keywordtype">bool</span> IsDecl = VD-><a class="code" href="classclang_1_1VarDecl.html#a78a1c154d746b4dd700349fa705feaf6" title="Check whether this declaration is a definition. If this could be a tentative definition (in C)...">isThisDeclarationADefinition</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) ==</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>                     <a class="code" href="classclang_1_1VarDecl.html#ac06c359e18b401f50b6b71d050d4a48ca318c15b99fe2bdf050c425984ca16835" title="This declaration is only a declaration.">VarDecl::DeclarationOnly</a>;</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(VD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), IsDecl ? diag::note_previous_decl :</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>                                        diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     }</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> </div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     Vars.push_back(*I);</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>   }</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>   <span class="keywordflow">return</span> Vars.empty() ?</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>               0 : <a class="code" href="classclang_1_1OMPThreadPrivateDecl.html#a5fcfc8e4597edf3a2d1403482e736ce7">OMPThreadPrivateDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>,</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>                                                <a class="code" href="classclang_1_1Sema.html#ac867e0d46910fdfd6c47f9a85574c15e">getCurLexicalContext</a>(),</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>                                                Loc, Vars);</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> }</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> </div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="keyword">class </span>DSAAttrChecker : <span class="keyword">public</span> <a class="code" href="classclang_1_1StmtVisitor.html">StmtVisitor</a><DSAAttrChecker, void> {</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   DSAStackTy *<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>;</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   <a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &Actions;</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <span class="keywordtype">bool</span> ErrorFound;</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   <a class="code" href="classclang_1_1CapturedStmt.html" title="This captures a statement into a function. For example, the following pragma annotated compound state...">CapturedStmt</a> *CS;</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   <a class="code" href="classllvm_1_1SmallVector.html">llvm::SmallVector<Expr *, 8></a> ImplicitFirstprivate;</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   <span class="keywordtype">void</span> VisitDeclRefExpr(<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *E) {</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>     <span class="keywordflow">if</span>(<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = dyn_cast<VarDecl>(E-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>())) {</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>       <span class="comment">// Skip internally declared variables.</span></div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>       <span class="keywordflow">if</span> (VD->isLocalVarDecl() && !CS->capturesVariable(VD)) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> </div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ELoc = E-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>();</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span> </div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> DKind = <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>->getCurrentDirective();</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       DSAStackTy::DSAVarData DVar = <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>->getTopDSA(VD);</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       <span class="keywordflow">if</span> (DVar.CKind != <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a>) {</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         <span class="keywordflow">if</span> (DKind == OMPD_task && DVar.CKind != OMPC_shared &&</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>             DVar.CKind != <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699af9bc5d6012e03b67514f0b8db72fe7c7">OMPC_threadprivate</a> && !DVar.RefExpr)</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>           ImplicitFirstprivate.push_back(DVar.RefExpr);</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       }</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       <span class="comment">// The default(none) clause requires that each variable that is referenced</span></div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       <span class="comment">// in the construct, and does not have a predetermined data-sharing</span></div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       <span class="comment">// attribute, must have its data-sharing attribute explicitly determined</span></div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>       <span class="comment">// by being listed in a data-sharing attribute clause.</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>       <span class="keywordflow">if</span> (DVar.CKind == <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a> && <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>->getDefaultDSA() == DSA_none &&</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>           (DKind == OMPD_parallel || DKind == OMPD_task)) {</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         ErrorFound = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         Actions.Diag(ELoc, diag::err_omp_no_dsa_for_variable) << VD;</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       }</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span> </div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       <span class="comment">// OpenMP [2.9.3.6, Restrictions, p.2]</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <span class="comment">//  A list item that appears in a reduction clause of the innermost</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       <span class="comment">//  enclosing worksharing or parallel construct may not be accessed in an</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       <span class="comment">//  explicit task.</span></div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>       <span class="comment">// TODO:</span></div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> </div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>       <span class="comment">// Define implicit data-sharing attributes for task.</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       DVar = <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>->getImplicitDSA(VD);</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       <span class="keywordflow">if</span> (DKind == OMPD_task && DVar.CKind != OMPC_shared)</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         ImplicitFirstprivate.push_back(DVar.RefExpr);</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     }</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>   }</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   <span class="keywordtype">void</span> VisitOMPExecutableDirective(<a class="code" href="classclang_1_1OMPExecutableDirective.html" title="This is a basic class for representing single OpenMP executable directive.">OMPExecutableDirective</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<OMPClause *>::iterator</a> I = S-><a class="code" href="classclang_1_1OMPExecutableDirective.html#a1547a2b49b97d9388eb9e53e58ec1b0a">clauses</a>().begin(),</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>                                          E = S-><a class="code" href="classclang_1_1OMPExecutableDirective.html#a1547a2b49b97d9388eb9e53e58ec1b0a">clauses</a>().end();</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>          I != E; ++I)</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *C = *I)</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>         <span class="keywordflow">for</span> (<a class="code" href="structclang_1_1StmtRange.html">StmtRange</a> R = C-><a class="code" href="classclang_1_1Stmt.html#a489148e5d234a5a7f00d8b02981bcee5">children</a>(); R; ++R)</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>           <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Child = *R)</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>             Visit(Child);</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>   }</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   <span class="keywordtype">void</span> VisitStmt(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *S) {</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     <span class="keywordflow">for</span> (<a class="code" href="structclang_1_1StmtIterator.html">Stmt::child_iterator</a> I = S-><a class="code" href="classclang_1_1Stmt.html#a52a20468e7b2880de813ed91d75d2617">child_begin</a>(), E = S-><a class="code" href="classclang_1_1Stmt.html#a7a17d445eb6027180bbdc518e6cdb63a">child_end</a>();</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>          I != E; ++I)</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Child = *I)</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         <span class="keywordflow">if</span> (!isa<OMPExecutableDirective>(Child))</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>           Visit(Child);</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     }</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span> </div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>   <span class="keywordtype">bool</span> isErrorFound() { <span class="keywordflow">return</span> ErrorFound; }</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>   <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> getImplicitFirstprivate() { <span class="keywordflow">return</span> ImplicitFirstprivate; }</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span> </div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>   DSAAttrChecker(DSAStackTy *S, <a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &Actions, <a class="code" href="classclang_1_1CapturedStmt.html" title="This captures a statement into a function. For example, the following pragma annotated compound state...">CapturedStmt</a> *CS)</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     : <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>(S), Actions(Actions), ErrorFound(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), CS(CS) { }</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span> };</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span> }</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span> </div>
+<div class="line"><a name="l00647"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a8edbe0920c3aeb37bfcffb057237dbba">  647</a></span> <a class="code" href="classclang_1_1ActionResult.html">StmtResult</a> <a class="code" href="classclang_1_1Sema.html#a8edbe0920c3aeb37bfcffb057237dbba">Sema::ActOnOpenMPExecutableDirective</a>(<a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3" title="OpenMP directives.">OpenMPDirectiveKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>,</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>                                                 <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<OMPClause *></a> Clauses,</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>                                                 <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *AStmt,</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>                                                 <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> StartLoc,</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>                                                 <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> EndLoc) {</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>   assert(AStmt && isa<CapturedStmt>(AStmt) && <span class="stringliteral">"Captured statement expected"</span>);</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span> </div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <a class="code" href="classclang_1_1ActionResult.html">StmtResult</a> Res = <a class="code" href="namespaceclang.html#a72e08dd7978003227c1191013023a22d">StmtError</a>();</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span> </div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>   <span class="comment">// Check default data sharing attributes for referenced variables.</span></div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   DSAAttrChecker DSAChecker(<a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>, *<span class="keyword">this</span>, cast<CapturedStmt>(AStmt));</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   DSAChecker.Visit(cast<CapturedStmt>(AStmt)->getCapturedStmt());</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>   <span class="keywordflow">if</span> (DSAChecker.isErrorFound())</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a72e08dd7978003227c1191013023a22d">StmtError</a>();</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>   <span class="comment">// Generate list of implicitly defined firstprivate variables.</span></div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>   <a class="code" href="classllvm_1_1SmallVector.html">llvm::SmallVector<OMPClause *, 8></a> ClausesWithImplicit;</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   ClausesWithImplicit.append(Clauses.begin(), Clauses.end());</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span> </div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="keywordtype">bool</span> ErrorFound = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   <span class="keywordflow">if</span> (!DSAChecker.getImplicitFirstprivate().empty()) {</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *Implicit =</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>          <a class="code" href="classclang_1_1Sema.html#a5c3aad1f6e04d241ab8c32a74bfd1e17" title="Called on well-formed 'firstprivate' clause.">ActOnOpenMPFirstprivateClause</a>(DSAChecker.getImplicitFirstprivate(),</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>                                        <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(), <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(),</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>                                        <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>())) {</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>       ClausesWithImplicit.push_back(Implicit);</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       ErrorFound = cast<OMPFirstprivateClause>(Implicit)->varlist_size() !=</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>                                     DSAChecker.getImplicitFirstprivate().size();</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>       ErrorFound = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   }</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span> </div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   <span class="keywordflow">switch</span> (Kind) {</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   <span class="keywordflow">case</span> OMPD_parallel:</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     Res = <a class="code" href="classclang_1_1Sema.html#ad7be05bb9bef9ff81a0b91db8fc3db71" title="Called on well-formed '#pragma omp parallel' after parsing of the associated statement.">ActOnOpenMPParallelDirective</a>(ClausesWithImplicit, AStmt,</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>                                        StartLoc, EndLoc);</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   <span class="keywordflow">case</span> OMPD_threadprivate:</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   <span class="keywordflow">case</span> OMPD_task:</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     llvm_unreachable(<span class="stringliteral">"OpenMP Directive is not allowed"</span>);</div>
+<div cl