<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi Nico,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Yes, it should. I’d like the followup commit (adding a fixit) to be merged too, if it gets through code review.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">James<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> thakis@google.com [mailto:thakis@google.com]
<b>On Behalf Of </b>Nico Weber<br>
<b>Sent:</b> 25 July 2014 15:21<br>
<b>To:</b> James Molloy<br>
<b>Cc:</b> cfe-commits@cs.uiuc.edu<br>
<b>Subject:</b> Re: r213935 - Revert part of r206963<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Should this be merged to 3.5? 3.4 had this warning too, right?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Fri, Jul 25, 2014 at 3:19 AM, James Molloy <<a href="mailto:james.molloy@arm.com" target="_blank">james.molloy@arm.com</a>> wrote:<o:p></o:p></p>
<p class="MsoNormal">Author: jamesm<br>
Date: Fri Jul 25 05:19:47 2014<br>
New Revision: 213935<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=213935&view=rev" target="_blank">
http://llvm.org/viewvc/llvm-project?rev=213935&view=rev</a><br>
Log:<br>
Revert part of r206963<br>
<br>
Specifically the part where we removed a warning to be compatible with GCC, which has been widely regarded as a bad idea.<br>
<br>
I'm not quite happy with how obtuse this warning is, especially in the fairly common case of a 32-bit integer literal, so I've got another patch awaiting review that adds a fixit to reduce confusion.<br>
<br>
<br>
Modified:<br>
    cfe/trunk/lib/Basic/Targets.cpp<br>
    cfe/trunk/test/Sema/arm64-inline-asm.c<br>
    cfe/trunk/test/Sema/inline-asm-validate.c<br>
<br>
Modified: cfe/trunk/lib/Basic/Targets.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=213935&r1=213934&r2=213935&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=213935&r1=213934&r2=213935&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Basic/Targets.cpp (original)<br>
+++ cfe/trunk/lib/Basic/Targets.cpp Fri Jul 25 05:19:47 2014<br>
@@ -4503,6 +4503,33 @@ public:<br>
     return false;<br>
   }<br>
<br>
+  virtual bool validateConstraintModifier(StringRef Constraint,<br>
+                                          const char Modifier,<br>
+                                          unsigned Size) const {<br>
+    // Strip off constraint modifiers.<br>
+    while (Constraint[0] == '=' || Constraint[0] == '+' || Constraint[0] == '&')<br>
+      Constraint = Constraint.substr(1);<br>
+<br>
+    switch (Constraint[0]) {<br>
+    default:<br>
+      return true;<br>
+    case 'z':<br>
+    case 'r': {<br>
+      switch (Modifier) {<br>
+      case 'x':<br>
+      case 'w':<br>
+        // For now assume that the person knows what they're<br>
+        // doing with the modifier.<br>
+        return true;<br>
+      default:<br>
+        // By default an 'r' constraint will be in the 'x'<br>
+        // registers.<br>
+        return Size == 64;<br>
+      }<br>
+    }<br>
+    }<br>
+  }<br>
+<br>
   virtual const char *getClobbers() const { return ""; }<br>
<br>
   int getEHDataRegisterNumber(unsigned RegNo) const {<br>
<br>
Modified: cfe/trunk/test/Sema/arm64-inline-asm.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/arm64-inline-asm.c?rev=213935&r1=213934&r2=213935&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/arm64-inline-asm.c?rev=213935&r1=213934&r2=213935&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Sema/arm64-inline-asm.c (original)<br>
+++ cfe/trunk/test/Sema/arm64-inline-asm.c Fri Jul 25 05:19:47 2014<br>
@@ -1,9 +1,9 @@<br>
 // RUN: %clang_cc1 -triple arm64-apple-ios7.1 -fsyntax-only -verify %s<br>
-// expected-no-diagnostics<br>
<br>
 void foo() {<br>
   asm volatile("USE(%0)" :: "z"(0LL));<br>
   asm volatile("USE(%x0)" :: "z"(0LL));<br>
   asm volatile("USE(%w0)" :: "z"(0));<br>
<br>
+  asm volatile("USE(%0)" :: "z"(0)); // expected-warning {{value size does not match register size specified by the constraint and modifier}}<br>
 }<br>
<br>
Modified: cfe/trunk/test/Sema/inline-asm-validate.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/inline-asm-validate.c?rev=213935&r1=213934&r2=213935&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/inline-asm-validate.c?rev=213935&r1=213934&r2=213935&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Sema/inline-asm-validate.c (original)<br>
+++ cfe/trunk/test/Sema/inline-asm-validate.c Fri Jul 25 05:19:47 2014<br>
@@ -1,9 +1,8 @@<br>
 // RUN: %clang_cc1 -triple arm64-apple-macosx10.8.0 -fsyntax-only -verify %s<br>
-// expected-no-diagnostics<br>
<br>
 unsigned t, r, *p;<br>
<br>
 int foo (void) {<br>
-  __asm__ __volatile__( "stxr   %w[_t], %[_r], [%[_p]]" : [_t] "=&r" (t) : [_p] "p" (p), [_r] "r" (r) : "memory");<br>
+  __asm__ __volatile__( "stxr   %w[_t], %[_r], [%[_p]]" : [_t] "=&r" (t) : [_p] "p" (p), [_r] "r" (r) : "memory"); // expected-warning{{value size does not match register size specified by the constraint and modifier}}<br>
   return 1;<br>
 }<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<br>
<font face="Arial" color="Black" size="2">-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents
 to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.<br>
<br>
ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2557590<br>
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2548782<br>
</font>
</body>
</html>