[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 class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3ad2540e88992ae4cec3cbcba1e8e73a92">OMPD_unknown</a>:</div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a83bf68190e1cfffe33ddf8f230a32cf3a21cb0dfada6512f817c553121ec43330">NUM_OPENMP_DIRECTIVES</a>:</div>
+<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> llvm_unreachable(<span class="stringliteral">"Unknown OpenMP directive"</span>);</div>
+<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> }</div>
+<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> </div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> <span class="keywordflow">if</span> (ErrorFound) <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a72e08dd7978003227c1191013023a22d">StmtError</a>();</div>
+<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="keywordflow">return</span> Res;</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"><a class="code" href="classclang_1_1Sema.html#ad7be05bb9bef9ff81a0b91db8fc3db71"> 695</a></span> <a class="code" href="classclang_1_1ActionResult.html">StmtResult</a> <a class="code" href="classclang_1_1Sema.html#ad7be05bb9bef9ff81a0b91db8fc3db71" title="Called on well-formed '#pragma omp parallel' after parsing of the associated statement.">Sema::ActOnOpenMPParallelDirective</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<OMPClause *></a> Clauses,</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *AStmt,</div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</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="l00698"></a><span class="lineno"> 698</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="l00699"></a><span class="lineno"> 699</span> <a class="code" href="classclang_1_1Sema.html#a60473869f00fc68cd2253da60ce8b23b">getCurFunction</a>()-><a class="code" href="classclang_1_1sema_1_1FunctionScopeInfo.html#adf4f81d5a9d0f20091553de908b7e65b">setHasBranchProtectedScope</a>();</div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div>
+<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(<a class="code" href="classclang_1_1OMPParallelDirective.html#aafef5af51c4da30ad779f27349c67ec9" title="Creates directive with a list of Clauses.">OMPParallelDirective::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, StartLoc, EndLoc,</div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> Clauses, AStmt));</div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> }</div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> </div>
+<div class="line"><a name="l00705"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a4457d72995b746ee6d9fb147ab094f55"> 705</a></span> <a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *<a class="code" href="classclang_1_1Sema.html#a4457d72995b746ee6d9fb147ab094f55">Sema::ActOnOpenMPSimpleClause</a>(<a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699" title="OpenMP clauses.">OpenMPClauseKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>,</div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span> <span class="keywordtype">unsigned</span> Argument,</div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</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> ArgumentLoc,</div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</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="l00709"></a><span class="lineno"> 709</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="l00710"></a><span class="lineno"> 710</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="l00711"></a><span class="lineno"> 711</span> <a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *Res = 0;</div>
+<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="keywordflow">switch</span> (Kind) {</div>
+<div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="keywordflow">case</span> OMPC_default:</div>
+<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> Res =</div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <a class="code" href="classclang_1_1Sema.html#a4291784e1c8d4610cc4bf84e40d47e36" title="Called on well-formed 'default' clause.">ActOnOpenMPDefaultClause</a>(static_cast<OpenMPDefaultClauseKind>(Argument),</div>
+<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> ArgumentLoc, StartLoc, LParenLoc, EndLoc);</div>
+<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="keywordflow">case</span> OMPC_private:</div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="keywordflow">case</span> OMPC_firstprivate:</div>
+<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="keywordflow">case</span> OMPC_shared:</div>
+<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699af9bc5d6012e03b67514f0b8db72fe7c7">OMPC_threadprivate</a>:</div>
+<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a>:</div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a213601b62b61229aa1a31132bd4c72f7">NUM_OPENMP_CLAUSES</a>:</div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> llvm_unreachable(<span class="stringliteral">"Clause is not allowed."</span>);</div>
+<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> }</div>
+<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> }</div>
+<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> </div>
+<div class="line"><a name="l00729"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a4291784e1c8d4610cc4bf84e40d47e36"> 729</a></span> <a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *<a class="code" href="classclang_1_1Sema.html#a4291784e1c8d4610cc4bf84e40d47e36" title="Called on well-formed 'default' clause.">Sema::ActOnOpenMPDefaultClause</a>(<a class="code" href="namespaceclang.html#a9160b1118dccd8b7fdd634c2f5f05181" title="OpenMP attributes for 'default' clause.">OpenMPDefaultClauseKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>,</div>
+<div class="line"><a name="l00730"></a><span class="lineno"> 730</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> KindKwLoc,</div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</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="l00732"></a><span class="lineno"> 732</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="l00733"></a><span class="lineno"> 733</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="l00734"></a><span class="lineno"> 734</span> <span class="keywordflow">if</span> (Kind == <a class="code" href="namespaceclang.html#a9160b1118dccd8b7fdd634c2f5f05181a30b73642242bb8f9703f4979b7312b6a">OMPC_DEFAULT_unknown</a>) {</div>
+<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> std::string Values;</div>
+<div class="line"><a name="l00736"></a><span class="lineno"> 736</span> std::string Sep(<a class="code" href="namespaceclang.html#a9160b1118dccd8b7fdd634c2f5f05181ada06b23faf1e9a15ffe72ed8e3655250">NUM_OPENMP_DEFAULT_KINDS</a> > 1 ? <span class="stringliteral">", "</span> : <span class="stringliteral">""</span>);</div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = <a class="code" href="namespaceclang.html#a9160b1118dccd8b7fdd634c2f5f05181a30b73642242bb8f9703f4979b7312b6a">OMPC_DEFAULT_unknown</a> + 1;</div>
+<div class="line"><a name="l00738"></a><span class="lineno"> 738</span> i < <a class="code" href="namespaceclang.html#a9160b1118dccd8b7fdd634c2f5f05181ada06b23faf1e9a15ffe72ed8e3655250">NUM_OPENMP_DEFAULT_KINDS</a>; ++i) {</div>
+<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> Values += <span class="stringliteral">"'"</span>;</div>
+<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> Values += <a class="code" href="namespaceclang.html#aabb3f04769a5232eb944b8f8b193c79b">getOpenMPSimpleClauseTypeName</a>(OMPC_default, i);</div>
+<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> Values += <span class="stringliteral">"'"</span>;</div>
+<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="keywordflow">switch</span> (i) {</div>
+<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="keywordflow">case</span> NUM_OPENMP_DEFAULT_KINDS - 2:</div>
+<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> Values += <span class="stringliteral">" or "</span>;</div>
+<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="keywordflow">case</span> NUM_OPENMP_DEFAULT_KINDS - 1:</div>
+<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> Values += Sep;</div>
+<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> }</div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> }</div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(KindKwLoc, diag::err_omp_unexpected_clause_value)</div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> << Values << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_default);</div>
+<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="keywordflow">return</span> 0;</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="keywordflow">switch</span> (Kind) {</div>
+<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="keywordflow">case</span> OMPC_DEFAULT_none:</div>
+<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->setDefaultDSANone();</div>
+<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="keywordflow">case</span> OMPC_DEFAULT_shared:</div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->setDefaultDSAShared();</div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> }</div>
+<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="keywordflow">return</span> <span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1OMPDefaultClause.html" title="This represents 'default' clause in the '#pragma omp ...' directive.">OMPDefaultClause</a>(Kind, KindKwLoc, StartLoc, LParenLoc,</div>
+<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> EndLoc);</div>
+<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> }</div>
+<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> </div>
+<div class="line"><a name="l00771"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#acf9a1c19c7fc18688397b28bb3cb5ebf"> 771</a></span> <a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *<a class="code" href="classclang_1_1Sema.html#acf9a1c19c7fc18688397b28bb3cb5ebf">Sema::ActOnOpenMPVarListClause</a>(<a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699" title="OpenMP clauses.">OpenMPClauseKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>,</div>
+<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> VarList,</div>
+<div class="line"><a name="l00773"></a><span class="lineno"> 773</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="l00774"></a><span class="lineno"> 774</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="l00775"></a><span class="lineno"> 775</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="l00776"></a><span class="lineno"> 776</span> <a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *Res = 0;</div>
+<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="keywordflow">switch</span> (Kind) {</div>
+<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="keywordflow">case</span> OMPC_private:</div>
+<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> Res = <a class="code" href="classclang_1_1Sema.html#ab818530b4d53246836a7c0d020af8fef" title="Called on well-formed 'private' clause.">ActOnOpenMPPrivateClause</a>(VarList, StartLoc, LParenLoc, EndLoc);</div>
+<div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="keywordflow">case</span> OMPC_firstprivate:</div>
+<div class="line"><a name="l00782"></a><span class="lineno"> 782</span> Res = <a class="code" href="classclang_1_1Sema.html#a5c3aad1f6e04d241ab8c32a74bfd1e17" title="Called on well-formed 'firstprivate' clause.">ActOnOpenMPFirstprivateClause</a>(VarList, StartLoc, LParenLoc, EndLoc);</div>
+<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="keywordflow">case</span> OMPC_shared:</div>
+<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> Res = <a class="code" href="classclang_1_1Sema.html#a48cd13935d98d7d8d9601299d29d42d1" title="Called on well-formed 'shared' clause.">ActOnOpenMPSharedClause</a>(VarList, StartLoc, LParenLoc, EndLoc);</div>
+<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="keywordflow">case</span> OMPC_default:</div>
+<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699af9bc5d6012e03b67514f0b8db72fe7c7">OMPC_threadprivate</a>:</div>
+<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a>:</div>
+<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a213601b62b61229aa1a31132bd4c72f7">NUM_OPENMP_CLAUSES</a>:</div>
+<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> llvm_unreachable(<span class="stringliteral">"Clause is not allowed."</span>);</div>
+<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> }</div>
+<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> }</div>
+<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> </div>
+<div class="line"><a name="l00796"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ab818530b4d53246836a7c0d020af8fef"> 796</a></span> <a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *<a class="code" href="classclang_1_1Sema.html#ab818530b4d53246836a7c0d020af8fef" title="Called on well-formed 'private' clause.">Sema::ActOnOpenMPPrivateClause</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> VarList,</div>
+<div class="line"><a name="l00797"></a><span class="lineno"> 797</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="l00798"></a><span class="lineno"> 798</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="l00799"></a><span class="lineno"> 799</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="l00800"></a><span class="lineno"> 800</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Expr *, 8></a> Vars;</div>
+<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *>::iterator</a> I = VarList.begin(), E = VarList.end();</div>
+<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> I != E; ++I) {</div>
+<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> assert(*I && <span class="stringliteral">"NULL expr in OpenMP private clause."</span>);</div>
+<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="keywordflow">if</span> (isa<DependentScopeDeclRefExpr>(*I)) {</div>
+<div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="comment">// It will be analyzed later.</span></div>
+<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> Vars.push_back(*I);</div>
+<div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> }</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> <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 = (*I)->getExprLoc();</div>
+<div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="comment">// OpenMP [2.1, C/C++]</span></div>
+<div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="comment">// A list item is a variable name.</span></div>
+<div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="comment">// OpenMP [2.9.3.3, Restrictions, p.1]</span></div>
+<div class="line"><a name="l00814"></a><span class="lineno"> 814</span> <span class="comment">// A variable that is part of another variable (as an array or</span></div>
+<div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="comment">// structure element) cannot appear in a private clause.</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno"> 816</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 = dyn_cast_or_null<DeclRefExpr>(*I);</div>
+<div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <span class="keywordflow">if</span> (!DE || !isa<VarDecl>(DE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>())) {</div>
+<div class="line"><a name="l00818"></a><span class="lineno"> 818</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_expected_var_name)</div>
+<div class="line"><a name="l00819"></a><span class="lineno"> 819</span> << (*I)->getSourceRange();</div>
+<div class="line"><a name="l00820"></a><span class="lineno"> 820</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00821"></a><span class="lineno"> 821</span> }</div>
+<div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D = DE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>();</div>
+<div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = cast<VarDecl>(D);</div>
+<div class="line"><a name="l00824"></a><span class="lineno"> 824</span> </div>
+<div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> Type = VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00826"></a><span class="lineno"> 826</span> <span class="keywordflow">if</span> (Type->isDependentType() || Type->isInstantiationDependentType()) {</div>
+<div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="comment">// It will be analyzed later.</span></div>
+<div class="line"><a name="l00828"></a><span class="lineno"> 828</span> Vars.push_back(DE);</div>
+<div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00830"></a><span class="lineno"> 830</span> }</div>
+<div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div>
+<div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <span class="comment">// OpenMP [2.9.3.3, Restrictions, C/C++, p.3]</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> <span class="comment">// A variable that appears in a private clause must not have an incomplete</span></div>
+<div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="comment">// type or a reference type.</span></div>
+<div class="line"><a name="l00835"></a><span class="lineno"> 835</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>(ELoc, Type,</div>
+<div class="line"><a name="l00836"></a><span class="lineno"> 836</span> diag::err_omp_private_incomplete_type)) {</div>
+<div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00838"></a><span class="lineno"> 838</span> }</div>
+<div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="keywordflow">if</span> (Type->isReferenceType()) {</div>
+<div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_clause_ref_type_arg)</div>
+<div class="line"><a name="l00841"></a><span class="lineno"> 841</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_private) << Type;</div>
+<div class="line"><a name="l00842"></a><span class="lineno"> 842</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="l00843"></a><span class="lineno"> 843</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="l00844"></a><span class="lineno"> 844</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="l00845"></a><span class="lineno"> 845</span> diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00847"></a><span class="lineno"> 847</span> }</div>
+<div class="line"><a name="l00848"></a><span class="lineno"> 848</span> </div>
+<div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="comment">// OpenMP [2.9.3.3, Restrictions, C/C++, p.1]</span></div>
+<div class="line"><a name="l00850"></a><span class="lineno"> 850</span> <span class="comment">// A variable of class type (or array thereof) that appears in a private</span></div>
+<div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="comment">// clause requires an accesible, unambiguous default constructor for the</span></div>
+<div class="line"><a name="l00852"></a><span class="lineno"> 852</span> <span class="comment">// class type.</span></div>
+<div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="keywordflow">while</span> (Type.getNonReferenceType()->isArrayType()) {</div>
+<div class="line"><a name="l00854"></a><span class="lineno"> 854</span> Type = cast<ArrayType>(</div>
+<div class="line"><a name="l00855"></a><span class="lineno"> 855</span> Type.getNonReferenceType().getTypePtr())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00856"></a><span class="lineno"> 856</span> }</div>
+<div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus ?</div>
+<div class="line"><a name="l00858"></a><span class="lineno"> 858</span> Type.getNonReferenceType()->getAsCXXRecordDecl() : 0;</div>
+<div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="keywordflow">if</span> (RD) {</div>
+<div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD = <a class="code" href="classclang_1_1Sema.html#a605da90716726f38b65837d15633e526" title="Look up the default constructor for the given class.">LookupDefaultConstructor</a>(RD);</div>
+<div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <a class="code" href="classclang_1_1PartialDiagnostic.html">PartialDiagnostic</a> PD =</div>
+<div class="line"><a name="l00862"></a><span class="lineno"> 862</span> <a class="code" href="classclang_1_1PartialDiagnostic.html">PartialDiagnostic</a>(<a class="code" href="structclang_1_1PartialDiagnostic_1_1NullDiagnostic.html">PartialDiagnostic::NullDiagnostic</a>());</div>
+<div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="keywordflow">if</span> (!CD ||</div>
+<div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <a class="code" href="classclang_1_1Sema.html#a5bc900352a164f839d48ec37b0b45909" title="Checks access to a constructor.">CheckConstructorAccess</a>(ELoc, CD,</div>
+<div class="line"><a name="l00865"></a><span class="lineno"> 865</span> <a class="code" href="classclang_1_1InitializedEntity.html#a4898b194ad60ddb5d0293dd57e730d3f" title="Create the initialization entity for a temporary.">InitializedEntity::InitializeTemporary</a>(Type),</div>
+<div class="line"><a name="l00866"></a><span class="lineno"> 866</span> CD-><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>(), PD) == <a class="code" href="classclang_1_1Sema.html#a26a58c1ba81e4901ca9e3592bd414508ad88205428cada7aff2dc5f92d3a10378">AR_inaccessible</a> ||</div>
+<div class="line"><a name="l00867"></a><span class="lineno"> 867</span> CD-><a class="code" href="classclang_1_1FunctionDecl.html#aa7c712ee63af38d248bd8c9da34695c1" title="Whether this function has been deleted.">isDeleted</a>()) {</div>
+<div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_required_method)</div>
+<div class="line"><a name="l00869"></a><span class="lineno"> 869</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_private) << 0;</div>
+<div class="line"><a name="l00870"></a><span class="lineno"> 870</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="l00871"></a><span class="lineno"> 871</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="l00872"></a><span class="lineno"> 872</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="l00873"></a><span class="lineno"> 873</span> diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(RD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_decl) << RD;</div>
+<div class="line"><a name="l00875"></a><span class="lineno"> 875</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00876"></a><span class="lineno"> 876</span> }</div>
+<div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <a class="code" href="classclang_1_1Sema.html#a2a9395d01104a3ac7526186780969818" title="Mark a function referenced, and check whether it is odr-used (C++ [basic.def.odr]p2, C99 6.9p3)">MarkFunctionReferenced</a>(ELoc, CD);</div>
+<div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(CD, ELoc);</div>
+<div class="line"><a name="l00879"></a><span class="lineno"> 879</span> </div>
+<div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *DD = RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a69a4522df480ad34e4846b08856a57b4" title="Returns the destructor decl for this class.">getDestructor</a>();</div>
+<div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="keywordflow">if</span> (DD) {</div>
+<div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a41e00023ba78ccbade93e0336869d8f6">CheckDestructorAccess</a>(ELoc, DD, PD) == <a class="code" href="classclang_1_1Sema.html#a26a58c1ba81e4901ca9e3592bd414508ad88205428cada7aff2dc5f92d3a10378">AR_inaccessible</a> ||</div>
+<div class="line"><a name="l00883"></a><span class="lineno"> 883</span> DD-><a class="code" href="classclang_1_1FunctionDecl.html#aa7c712ee63af38d248bd8c9da34695c1" title="Whether this function has been deleted.">isDeleted</a>()) {</div>
+<div class="line"><a name="l00884"></a><span class="lineno"> 884</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_required_method)</div>
+<div class="line"><a name="l00885"></a><span class="lineno"> 885</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_private) << 4;</div>
+<div class="line"><a name="l00886"></a><span class="lineno"> 886</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="l00887"></a><span class="lineno"> 887</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="l00888"></a><span class="lineno"> 888</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="l00889"></a><span class="lineno"> 889</span> diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00890"></a><span class="lineno"> 890</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(RD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_decl) << RD;</div>
+<div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00892"></a><span class="lineno"> 892</span> }</div>
+<div class="line"><a name="l00893"></a><span class="lineno"> 893</span> <a class="code" href="classclang_1_1Sema.html#a2a9395d01104a3ac7526186780969818" title="Mark a function referenced, and check whether it is odr-used (C++ [basic.def.odr]p2, C99 6.9p3)">MarkFunctionReferenced</a>(ELoc, DD);</div>
+<div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(DD, ELoc);</div>
+<div class="line"><a name="l00895"></a><span class="lineno"> 895</span> }</div>
+<div class="line"><a name="l00896"></a><span class="lineno"> 896</span> }</div>
+<div class="line"><a name="l00897"></a><span class="lineno"> 897</span> </div>
+<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="comment">// in a Construct]</span></div>
+<div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="comment">// Variables with the predetermined data-sharing attributes may not be</span></div>
+<div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="comment">// listed in data-sharing attributes clauses, except for the cases</span></div>
+<div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="comment">// listed below. For these exceptions only, listing a predetermined</span></div>
+<div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="comment">// variable in a data-sharing attribute clause is allowed and overrides</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno"> 904</span> <span class="comment">// the variable's predetermined data-sharing attributes.</span></div>
+<div class="line"><a name="l00905"></a><span class="lineno"> 905</span> DSAStackTy::DSAVarData DVar = <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->getTopDSA(VD);</div>
+<div class="line"><a name="l00906"></a><span class="lineno"> 906</span> <span class="keywordflow">if</span> (DVar.CKind != <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a> && DVar.CKind != OMPC_private) {</div>
+<div class="line"><a name="l00907"></a><span class="lineno"> 907</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_wrong_dsa)</div>
+<div class="line"><a name="l00908"></a><span class="lineno"> 908</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(DVar.CKind)</div>
+<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_private);</div>
+<div class="line"><a name="l00910"></a><span class="lineno"> 910</span> <span class="keywordflow">if</span> (DVar.RefExpr) {</div>
+<div class="line"><a name="l00911"></a><span class="lineno"> 911</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(DVar.RefExpr->getExprLoc(), diag::note_omp_explicit_dsa)</div>
+<div class="line"><a name="l00912"></a><span class="lineno"> 912</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(DVar.CKind);</div>
+<div class="line"><a name="l00913"></a><span class="lineno"> 913</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00914"></a><span class="lineno"> 914</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>(), diag::note_omp_predetermined_dsa)</div>
+<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(DVar.CKind);</div>
+<div class="line"><a name="l00916"></a><span class="lineno"> 916</span> }</div>
+<div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00918"></a><span class="lineno"> 918</span> }</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="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->addDSA(VD, DE, OMPC_private);</div>
+<div class="line"><a name="l00921"></a><span class="lineno"> 921</span> Vars.push_back(DE);</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> </div>
+<div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="keywordflow">if</span> (Vars.empty()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00925"></a><span class="lineno"> 925</span> </div>
+<div class="line"><a name="l00926"></a><span class="lineno"> 926</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1OMPPrivateClause.html#a60cfaaa8fd4d5ba93ec6b6e9a05f6faa" title="Creates clause with a list of variables VL.">OMPPrivateClause::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, StartLoc, LParenLoc, EndLoc, Vars);</div>
+<div class="line"><a name="l00927"></a><span class="lineno"> 927</span> }</div>
+<div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div>
+<div class="line"><a name="l00929"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a5c3aad1f6e04d241ab8c32a74bfd1e17"> 929</a></span> <a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *<a class="code" href="classclang_1_1Sema.html#a5c3aad1f6e04d241ab8c32a74bfd1e17" title="Called on well-formed 'firstprivate' clause.">Sema::ActOnOpenMPFirstprivateClause</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> VarList,</div>
+<div class="line"><a name="l00930"></a><span class="lineno"> 930</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="l00931"></a><span class="lineno"> 931</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="l00932"></a><span class="lineno"> 932</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="l00933"></a><span class="lineno"> 933</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Expr *, 8></a> Vars;</div>
+<div class="line"><a name="l00934"></a><span class="lineno"> 934</span> <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *>::iterator</a> I = VarList.begin(), E = VarList.end();</div>
+<div class="line"><a name="l00935"></a><span class="lineno"> 935</span> I != E; ++I) {</div>
+<div class="line"><a name="l00936"></a><span class="lineno"> 936</span> assert(*I && <span class="stringliteral">"NULL expr in OpenMP firstprivate clause."</span>);</div>
+<div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <span class="keywordflow">if</span> (isa<DependentScopeDeclRefExpr>(*I)) {</div>
+<div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="comment">// It will be analyzed later.</span></div>
+<div class="line"><a name="l00939"></a><span class="lineno"> 939</span> Vars.push_back(*I);</div>
+<div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00941"></a><span class="lineno"> 941</span> }</div>
+<div class="line"><a name="l00942"></a><span class="lineno"> 942</span> </div>
+<div class="line"><a name="l00943"></a><span class="lineno"> 943</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 = (*I)->getExprLoc();</div>
+<div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="comment">// OpenMP [2.1, C/C++]</span></div>
+<div class="line"><a name="l00945"></a><span class="lineno"> 945</span> <span class="comment">// A list item is a variable name.</span></div>
+<div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <span class="comment">// OpenMP [2.9.3.3, Restrictions, p.1]</span></div>
+<div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="comment">// A variable that is part of another variable (as an array or</span></div>
+<div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="comment">// structure element) cannot appear in a private clause.</span></div>
+<div class="line"><a name="l00949"></a><span class="lineno"> 949</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 = dyn_cast_or_null<DeclRefExpr>(*I);</div>
+<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="keywordflow">if</span> (!DE || !isa<VarDecl>(DE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>())) {</div>
+<div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_expected_var_name)</div>
+<div class="line"><a name="l00952"></a><span class="lineno"> 952</span> << (*I)->getSourceRange();</div>
+<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00954"></a><span class="lineno"> 954</span> }</div>
+<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D = DE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>();</div>
+<div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = cast<VarDecl>(D);</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> <a class="code" href="classclang_1_1QualType.html">QualType</a> Type = VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00959"></a><span class="lineno"> 959</span> <span class="keywordflow">if</span> (Type->isDependentType() || Type->isInstantiationDependentType()) {</div>
+<div class="line"><a name="l00960"></a><span class="lineno"> 960</span> <span class="comment">// It will be analyzed later.</span></div>
+<div class="line"><a name="l00961"></a><span class="lineno"> 961</span> Vars.push_back(DE);</div>
+<div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> }</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> <span class="comment">// OpenMP [2.9.3.3, Restrictions, C/C++, p.3]</span></div>
+<div class="line"><a name="l00966"></a><span class="lineno"> 966</span> <span class="comment">// A variable that appears in a private clause must not have an incomplete</span></div>
+<div class="line"><a name="l00967"></a><span class="lineno"> 967</span> <span class="comment">// type or a reference type.</span></div>
+<div class="line"><a name="l00968"></a><span class="lineno"> 968</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>(ELoc, Type,</div>
+<div class="line"><a name="l00969"></a><span class="lineno"> 969</span> diag::err_omp_firstprivate_incomplete_type)) {</div>
+<div class="line"><a name="l00970"></a><span class="lineno"> 970</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00971"></a><span class="lineno"> 971</span> }</div>
+<div class="line"><a name="l00972"></a><span class="lineno"> 972</span> <span class="keywordflow">if</span> (Type->isReferenceType()) {</div>
+<div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_clause_ref_type_arg)</div>
+<div class="line"><a name="l00974"></a><span class="lineno"> 974</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_firstprivate) << Type;</div>
+<div class="line"><a name="l00975"></a><span class="lineno"> 975</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="l00976"></a><span class="lineno"> 976</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="l00977"></a><span class="lineno"> 977</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="l00978"></a><span class="lineno"> 978</span> diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l00979"></a><span class="lineno"> 979</span> <span class="keywordflow">continue</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> </div>
+<div class="line"><a name="l00982"></a><span class="lineno"> 982</span> <span class="comment">// OpenMP [2.9.3.4, Restrictions, C/C++, p.1]</span></div>
+<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="comment">// A variable of class type (or array thereof) that appears in a private</span></div>
+<div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="comment">// clause requires an accesible, unambiguous copy constructor for the</span></div>
+<div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="comment">// class type.</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno"> 986</span> Type = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(Type);</div>
+<div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus ?</div>
+<div class="line"><a name="l00988"></a><span class="lineno"> 988</span> Type.getNonReferenceType()->getAsCXXRecordDecl() : 0;</div>
+<div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="keywordflow">if</span> (RD) {</div>
+<div class="line"><a name="l00990"></a><span class="lineno"> 990</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD = <a class="code" href="classclang_1_1Sema.html#ab84f42ffa6429615fdca6fd5b4151327" title="Look up the copying constructor for the given class.">LookupCopyingConstructor</a>(RD, 0);</div>
+<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <a class="code" href="classclang_1_1PartialDiagnostic.html">PartialDiagnostic</a> PD =</div>
+<div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <a class="code" href="classclang_1_1PartialDiagnostic.html">PartialDiagnostic</a>(<a class="code" href="structclang_1_1PartialDiagnostic_1_1NullDiagnostic.html">PartialDiagnostic::NullDiagnostic</a>());</div>
+<div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <span class="keywordflow">if</span> (!CD ||</div>
+<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <a class="code" href="classclang_1_1Sema.html#a5bc900352a164f839d48ec37b0b45909" title="Checks access to a constructor.">CheckConstructorAccess</a>(ELoc, CD,</div>
+<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <a class="code" href="classclang_1_1InitializedEntity.html#a4898b194ad60ddb5d0293dd57e730d3f" title="Create the initialization entity for a temporary.">InitializedEntity::InitializeTemporary</a>(Type),</div>
+<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> CD-><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>(), PD) == <a class="code" href="classclang_1_1Sema.html#a26a58c1ba81e4901ca9e3592bd414508ad88205428cada7aff2dc5f92d3a10378">AR_inaccessible</a> ||</div>
+<div class="line"><a name="l00997"></a><span class="lineno"> 997</span> CD-><a class="code" href="classclang_1_1FunctionDecl.html#aa7c712ee63af38d248bd8c9da34695c1" title="Whether this function has been deleted.">isDeleted</a>()) {</div>
+<div class="line"><a name="l00998"></a><span class="lineno"> 998</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_required_method)</div>
+<div class="line"><a name="l00999"></a><span class="lineno"> 999</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_firstprivate) << 1;</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</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="l01001"></a><span class="lineno"> 1001</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="l01002"></a><span class="lineno"> 1002</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="l01003"></a><span class="lineno"> 1003</span> diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(RD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_decl) << RD;</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="keywordflow">continue</span>;</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> <a class="code" href="classclang_1_1Sema.html#a2a9395d01104a3ac7526186780969818" title="Mark a function referenced, and check whether it is odr-used (C++ [basic.def.odr]p2, C99 6.9p3)">MarkFunctionReferenced</a>(ELoc, CD);</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(CD, ELoc);</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *DD = RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a69a4522df480ad34e4846b08856a57b4" title="Returns the destructor decl for this class.">getDestructor</a>();</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="keywordflow">if</span> (DD) {</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a41e00023ba78ccbade93e0336869d8f6">CheckDestructorAccess</a>(ELoc, DD, PD) == <a class="code" href="classclang_1_1Sema.html#a26a58c1ba81e4901ca9e3592bd414508ad88205428cada7aff2dc5f92d3a10378">AR_inaccessible</a> ||</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> DD-><a class="code" href="classclang_1_1FunctionDecl.html#aa7c712ee63af38d248bd8c9da34695c1" title="Whether this function has been deleted.">isDeleted</a>()) {</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_required_method)</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_firstprivate) << 4;</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</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="l01017"></a><span class="lineno"> 1017</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="l01018"></a><span class="lineno"> 1018</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="l01019"></a><span class="lineno"> 1019</span> diag::note_defined_here) << VD;</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(RD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_decl) << RD;</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> }</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <a class="code" href="classclang_1_1Sema.html#a2a9395d01104a3ac7526186780969818" title="Mark a function referenced, and check whether it is odr-used (C++ [basic.def.odr]p2, C99 6.9p3)">MarkFunctionReferenced</a>(ELoc, DD);</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> <a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(DD, ELoc);</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> }</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> }</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> <span class="comment">// If StartLoc and EndLoc are invalid - this is an implicit firstprivate</span></div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <span class="comment">// variable and it was checked already.</span></div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="keywordflow">if</span> (StartLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && EndLoc.<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="l01031"></a><span class="lineno"> 1031</span> DSAStackTy::DSAVarData DVar = <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->getTopDSA(VD);</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> Type = Type.getNonReferenceType().getCanonicalType();</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="keywordtype">bool</span> IsConstant = Type.isConstant(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> Type = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(Type);</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="comment">// OpenMP [2.4.13, Data-sharing Attribute Clauses]</span></div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="comment">// A list item that specifies a given variable may not appear in more</span></div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <span class="comment">// than one clause on the same directive, except that a variable may be</span></div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="comment">// specified in both firstprivate and lastprivate clauses.</span></div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> <span class="comment">// TODO: add processing for lastprivate.</span></div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> <span class="keywordflow">if</span> (DVar.CKind != <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a> && DVar.CKind != OMPC_firstprivate &&</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> DVar.RefExpr) {</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_wrong_dsa)</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(DVar.CKind)</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_firstprivate);</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(DVar.RefExpr->getExprLoc(), diag::note_omp_explicit_dsa)</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(DVar.CKind);</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> <span class="keywordflow">continue</span>;</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> <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> <span class="comment">// in a Construct]</span></div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> <span class="comment">// Variables with the predetermined data-sharing attributes may not be</span></div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="comment">// listed in data-sharing attributes clauses, except for the cases</span></div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> <span class="comment">// listed below. For these exceptions only, listing a predetermined</span></div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> <span class="comment">// variable in a data-sharing attribute clause is allowed and overrides</span></div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> <span class="comment">// the variable's predetermined data-sharing attributes.</span></div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="comment">// in a Construct, C/C++, p.2]</span></div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="comment">// Variables with const-qualified type having no mutable member may be</span></div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="comment">// listed in a firstprivate clause, even if they are static data members.</span></div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="keywordflow">if</span> (!(IsConstant || VD-><a class="code" href="classclang_1_1VarDecl.html#a373bffe9299b1e17054f1bd6c46e00a5" title="Determines whether this is a static data member.">isStaticDataMember</a>()) && !DVar.RefExpr &&</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> DVar.CKind != <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a> && DVar.CKind != OMPC_shared) {</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_wrong_dsa)</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(DVar.CKind)</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_firstprivate);</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</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>(), diag::note_omp_predetermined_dsa)</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(DVar.CKind);</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> }</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> <span class="comment">// OpenMP [2.9.3.4, Restrictions, p.2]</span></div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> <span class="comment">// A list item that is private within a parallel region must not appear</span></div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> <span class="comment">// in a firstprivate clause on a worksharing construct if any of the</span></div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="comment">// worksharing regions arising from the worksharing construct ever bind</span></div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> <span class="comment">// to any of the parallel regions arising from the parallel construct.</span></div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> <span class="comment">// OpenMP [2.9.3.4, Restrictions, p.3]</span></div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> <span class="comment">// A list item that appears in a reduction clause of a parallel construct</span></div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> <span class="comment">// must not appear in a firstprivate clause on a worksharing or task</span></div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="comment">// construct if any of the worksharing or task regions arising from the</span></div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> <span class="comment">// worksharing or task construct ever bind to any of the parallel regions</span></div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> <span class="comment">// arising from the parallel construct.</span></div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <span class="comment">// OpenMP [2.9.3.4, Restrictions, p.4]</span></div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="comment">// A list item that appears in a reduction clause in worksharing</span></div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <span class="comment">// construct must not appear in a firstprivate clause in a task construct</span></div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="comment">// encountered during execution of any of the worksharing regions arising</span></div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="comment">// from the worksharing construct.</span></div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="comment">// TODO:</span></div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> }</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> </div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->addDSA(VD, DE, OMPC_firstprivate);</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> Vars.push_back(DE);</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> }</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> </div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="keywordflow">if</span> (Vars.empty()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> </div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1OMPFirstprivateClause.html#a541af64396a5651cd8bf176a6a0e6515" title="Creates clause with a list of variables VL.">OMPFirstprivateClause::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, StartLoc, LParenLoc, EndLoc,</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> Vars);</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> }</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div>
+<div class="line"><a name="l01100"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a48cd13935d98d7d8d9601299d29d42d1"> 1100</a></span> <a class="code" href="classclang_1_1OMPClause.html" title="This is a basic class for representing single OpenMP clause.">OMPClause</a> *<a class="code" href="classclang_1_1Sema.html#a48cd13935d98d7d8d9601299d29d42d1" title="Called on well-formed 'shared' clause.">Sema::ActOnOpenMPSharedClause</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> VarList,</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</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="l01102"></a><span class="lineno"> 1102</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="l01103"></a><span class="lineno"> 1103</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="l01104"></a><span class="lineno"> 1104</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Expr *, 8></a> Vars;</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *>::iterator</a> I = VarList.begin(), E = VarList.end();</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> I != E; ++I) {</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> assert(*I && <span class="stringliteral">"NULL expr in OpenMP shared clause."</span>);</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="keywordflow">if</span> (isa<DependentScopeDeclRefExpr>(*I)) {</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="comment">// It will be analyzed later.</span></div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> Vars.push_back(*I);</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> }</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</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 = (*I)->getExprLoc();</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="comment">// OpenMP [2.1, C/C++]</span></div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> <span class="comment">// A list item is a variable name.</span></div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> <span class="comment">// OpenMP [2.9.3.4, Restrictions, p.1]</span></div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> <span class="comment">// A variable that is part of another variable (as an array or</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> <span class="comment">// structure element) cannot appear in a private clause.</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</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 = dyn_cast<<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>>(*I);</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> <span class="keywordflow">if</span> (!DE || !isa<VarDecl>(DE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>())) {</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_expected_var_name)</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> << (*I)->getSourceRange();</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> }</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D = DE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>();</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = cast<VarDecl>(D);</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> </div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> Type = VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> <span class="keywordflow">if</span> (Type->isDependentType() || Type->isInstantiationDependentType()) {</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> <span class="comment">// It will be analyzed later.</span></div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> Vars.push_back(DE);</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</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> <span class="comment">// OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced</span></div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> <span class="comment">// in a Construct]</span></div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> <span class="comment">// Variables with the predetermined data-sharing attributes may not be</span></div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> <span class="comment">// listed in data-sharing attributes clauses, except for the cases</span></div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> <span class="comment">// listed below. For these exceptions only, listing a predetermined</span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="comment">// variable in a data-sharing attribute clause is allowed and overrides</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> <span class="comment">// the variable's predetermined data-sharing attributes.</span></div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> DSAStackTy::DSAVarData DVar = <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->getTopDSA(VD);</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> <span class="keywordflow">if</span> (DVar.CKind != <a class="code" href="namespaceclang.html#ab382501d3271b9d16960dd008523e699a0d82660374d9709859f23d61502d5e78">OMPC_unknown</a> && DVar.CKind != OMPC_shared && DVar.RefExpr) {</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ELoc, diag::err_omp_wrong_dsa)</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(DVar.CKind)</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(OMPC_shared);</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(DVar.RefExpr->getExprLoc(), diag::note_omp_explicit_dsa)</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> << <a class="code" href="namespaceclang.html#a63af3a81f3a39dd4765b8930895e9c16">getOpenMPClauseName</a>(DVar.CKind);</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> <span class="keywordflow">continue</span>;</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> </div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> <a class="code" href="SemaOpenMP_8cpp.html#ad1102810b54d6896edb7e8a5f31faf7b">DSAStack</a>->addDSA(VD, DE, OMPC_shared);</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> Vars.push_back(DE);</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> }</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> </div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> <span class="keywordflow">if</span> (Vars.empty()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> </div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1OMPSharedClause.html#a41d90d0a68ddd69da7c8fcc660f2f689" title="Creates clause with a list of variables VL.">OMPSharedClause::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, StartLoc, LParenLoc, EndLoc, Vars);</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> }</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="preprocessor">#undef DSAStack</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/SemaOpenMP_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaOpenMP_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaOpenMP_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaOpenMP_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,613 @@
+<!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.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">SemaOpenMP.d</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="SemaOpenMP_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/SemaOpenMP.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> /home/tstellar/llvm/tools/clang/lib/Sema/Release+Asserts/SemaOpenMP.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> SemaOpenMP.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.def \</div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</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="l00050"></a><span class="lineno"> 50</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</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="l00061"></a><span class="lineno"> 61</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="l00062"></a><span class="lineno"> 62</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclOpenMP.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtCXX.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtOpenMP.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtVisitor.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprObjC.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclObjC.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</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="l00101"></a><span class="lineno"> 101</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtObjC.h \</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</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="l00103"></a><span class="lineno"> 103</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</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="l00105"></a><span class="lineno"> 105</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</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="l00114"></a><span class="lineno"> 114</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="l00115"></a><span class="lineno"> 115</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="l00116"></a><span class="lineno"> 116</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TemplateKinds.h \</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</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="l00118"></a><span class="lineno"> 118</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="l00119"></a><span class="lineno"> 119</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</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="l00130"></a><span class="lineno"> 130</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="l00131"></a><span class="lineno"> 131</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="l00132"></a><span class="lineno"> 132</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="l00133"></a><span class="lineno"> 133</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="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>/PTHManager.h \</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</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="l00136"></a><span class="lineno"> 136</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Initialization.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h \</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attr.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrKinds.h \</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrList.inc \</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attrs.inc \</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Overload.h \</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclTemplate.h \</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaFixItUtils.h \</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TemplateDeduction.h \</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Ownership.h \</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaInternal.h \</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Sema.h \</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/MangleNumberingContext.h \</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NSAPI.h \</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AnalysisBasedWarnings.h \</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/DeclSpec.h \</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttributeList.h \</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttrParsedAttrList.inc \</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ExternalSemaSource.h \</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TypoCorrection.h \</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Weak.h \</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> /home/tstellar/llvm/include/llvm/ADT/MapVector.h \</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/IdentifierResolver.h \</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/LocInfoType.h \</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ObjCMethodList.h \</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ScopeInfo.h \</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmParser.h \</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> /home/tstellar/llvm/include/llvm/MC/MCParser/AsmLexer.h \</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmLexer.h \</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> /home/tstellar/llvm/include/llvm/Support/SMLoc.h \</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaDiagnostic.h \</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticSemaKinds.inc \</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Lookup.h \</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Scope.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/Basic/OpenMPKinds.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/include/llvm/ADT/StringRef.h:</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/include/llvm/Support/type_traits.h:</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/include/llvm/Support/DataTypes.h:</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/Basic/OpenMPKinds.def:</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/Decl.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/AST/APValue.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/tools/clang/lib/Sema/../../include/clang/Basic/LLVM.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/Casting.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/ADT/None.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/APFloat.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/APInt.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/ArrayRef.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/SmallVector.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/Support/AlignOf.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/Compiler.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/Config/llvm-config.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/Support/MathExtras.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/SwapByteOrder.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/ADT/APSInt.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/PointerIntPair.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/Support/PointerLikeTypeTraits.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/ADT/PointerUnion.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/tools/clang/lib/Sema/../../include/clang/AST/DeclBase.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/AttrIterator.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/DeclarationName.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/Basic/IdentifierTable.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/OperatorKinds.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.def:</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/TokenKinds.h:</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.def:</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/include/llvm/ADT/SmallString.h:</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/StringMap.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/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.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/tools/clang/lib/Sema/../../include/clang/Basic/PartialDiagnostic.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/tools/clang/lib/Sema/../../include/clang/Basic/Diagnostic.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/DiagnosticIDs.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/include/llvm/ADT/IntrusiveRefCntPtr.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/DiagnosticCommonKinds.inc:</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/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.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/DiagnosticOptions.def:</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/SourceLocation.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/include/llvm/ADT/DenseMap.h:</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/include/llvm/ADT/DenseMapInfo.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/STLExtras.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/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="l00273"></a><span class="lineno"> 273</span> </div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Specifiers.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/include/llvm/Support/PrettyStackTrace.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/AST/DeclNodes.inc:</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/tools/clang/lib/Sema/../../include/clang/AST/ExternalASTSource.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/CharUnits.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/Redeclarable.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/Type.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/NestedNameSpecifier.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/include/llvm/ADT/FoldingSet.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/tools/clang/lib/Sema/../../include/clang/AST/TemplateName.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/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="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#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</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/include/llvm/ADT/Optional.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/Twine.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/Support/ErrorHandling.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/tools/clang/lib/Sema/../../include/clang/AST/TypeNodes.def:</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/DeclCXX.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/ASTUnresolvedSet.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/ASTVector.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/AST/UnresolvedSet.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/DeclAccessPair.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/Expr.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/OperationKinds.h:</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/Stmt.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/DeclGroup.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/AST/StmtIterator.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/Basic/CapturedStmt.h:</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/StmtNodes.inc:</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/AST/TemplateBase.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/CharInfo.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/TypeTraits.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/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.def:</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/AST/ExprCXX.h:</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/ExpressionTraits.h:</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/Lambda.h:</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/TypeLoc.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/AST/TypeLocNodes.def:</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/include/llvm/ADT/SmallPtrSet.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/AST/DeclOpenMP.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/tools/clang/lib/Sema/../../include/clang/AST/StmtCXX.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/tools/clang/lib/Sema/../../include/clang/AST/StmtOpenMP.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/tools/clang/lib/Sema/../../include/clang/AST/StmtVisitor.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/tools/clang/lib/Sema/../../include/clang/AST/ExprObjC.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/AST/DeclObjC.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/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="l00375"></a><span class="lineno"> 375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtObjC.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Preprocessor.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/Basic/Builtins.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.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/LangOptions.h:</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/tools/clang/lib/Sema/../../include/clang/Basic/CommentOptions.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/Basic/ObjCRuntime.h:</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/Basic/VersionTuple.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/include/llvm/ADT/Triple.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/Basic/Sanitizers.def:</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/Basic/LangOptions.def:</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/OpenCLExtensions.def:</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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h:</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/<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="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/Basic/TemplateKinds.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MacroInfo.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.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/Basic/Module.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/include/llvm/ADT/DenseSet.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/include/llvm/ADT/SetVector.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/include/llvm/ADT/SmallSet.h:</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/SourceManager.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/Basic/FileManager.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/FileSystemOptions.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/Support/MemoryBuffer.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/Support/CBindingWrapping.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/include/llvm-c/Core.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPCallbacks.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.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>/ModuleLoader.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Pragma.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHLexer.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHManager.h:</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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/TokenLexer.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/Initialization.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/ASTContext.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/ASTTypeTraits.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/ASTFwd.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/CanonicalType.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/AST/CommentCommandTraits.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/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandList.inc:</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/AST/PrettyPrinter.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/AST/RawCommentList.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/Basic/AddressSpaces.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/include/llvm/ADT/TinyPtrVector.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/tools/clang/lib/Sema/../../include/clang/AST/Attr.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/tools/clang/lib/Sema/../../include/clang/Basic/AttrKinds.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/tools/clang/lib/Sema/../../include/clang/Basic/AttrList.inc:</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/ADT/StringSwitch.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/AST/Attrs.inc:</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/Sema/Overload.h:</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/DeclTemplate.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/Sema/SemaFixItUtils.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/Sema/TemplateDeduction.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/Sema/Ownership.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/Sema/SemaInternal.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/Sema/Sema.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/AST/MangleNumberingContext.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/AST/NSAPI.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/Sema/AnalysisBasedWarnings.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/Sema/DeclSpec.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/Sema/AttributeList.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/Sema/AttrParsedAttrList.inc:</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/Sema/ExternalSemaSource.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/Sema/TypoCorrection.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/Weak.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/include/llvm/ADT/MapVector.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/Sema/IdentifierResolver.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/LocInfoType.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/ObjCMethodList.h:</div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ScopeInfo.h:</div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> </div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmParser.h:</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> /home/tstellar/llvm/include/llvm/MC/MCParser/AsmLexer.h:</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> /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmLexer.h:</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> /home/tstellar/llvm/include/llvm/Support/SMLoc.h:</div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaDiagnostic.h:</div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticSemaKinds.inc:</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Lookup.h:</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> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Scope.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>
More information about the llvm-commits
mailing list