<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Hi Hans,</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Can this be merged into the release 9.0 branch please?<br>
</p>
</div>
<div style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<br>
</div>
<div style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
Thank you!</div>
<div style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
Anastasia<br>
</div>
<div style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<br>
<div style="color: rgb(0, 0, 0);">
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> cfe-commits <cfe-commits-bounces@lists.llvm.org> on behalf of Sven van Haastregt via cfe-commits <cfe-commits@lists.llvm.org><br>
<b>Sent:</b> 12 August 2019 13:44<br>
<b>To:</b> cfe-commits@lists.llvm.org <cfe-commits@lists.llvm.org><br>
<b>Subject:</b> r368561 - [OpenCL] Ignore parentheses for sampler initialization</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Author: svenvh<br>
Date: Mon Aug 12 05:44:26 2019<br>
New Revision: 368561<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=368561&view=rev">http://llvm.org/viewvc/llvm-project?rev=368561&view=rev</a><br>
Log:<br>
[OpenCL] Ignore parentheses for sampler initialization<br>
<br>
The sampler handling logic in SemaInit.cpp would inadvertently treat<br>
parentheses around sampler arguments as an implicit cast, leading to<br>
an unreachable "can't implicitly cast lvalue to rvalue with<br>
this cast kind".  Fix by ignoring parentheses once we are in the<br>
sampler initializer case.<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D66080">https://reviews.llvm.org/D66080</a><br>
<br>
Modified:<br>
    cfe/trunk/lib/Sema/SemaInit.cpp<br>
    cfe/trunk/test/SemaOpenCL/sampler_t.cl<br>
<br>
Modified: cfe/trunk/lib/Sema/SemaInit.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=368561&r1=368560&r2=368561&view=diff">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=368561&r1=368560&r2=368561&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Sema/SemaInit.cpp (original)<br>
+++ cfe/trunk/lib/Sema/SemaInit.cpp Mon Aug 12 05:44:26 2019<br>
@@ -8248,7 +8248,7 @@ ExprResult InitializationSequence::Perfo<br>
       // argument passing.<br>
       assert(Step->Type->isSamplerT() &&<br>
              "Sampler initialization on non-sampler type.");<br>
-      Expr *Init = CurInit.get();<br>
+      Expr *Init = CurInit.get()->IgnoreParens();<br>
       QualType SourceType = Init->getType();<br>
       // Case 1<br>
       if (Entity.isParameterKind()) {<br>
<br>
Modified: cfe/trunk/test/SemaOpenCL/sampler_t.cl<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/sampler_t.cl?rev=368561&r1=368560&r2=368561&view=diff">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/sampler_t.cl?rev=368561&r1=368560&r2=368561&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/SemaOpenCL/sampler_t.cl (original)<br>
+++ cfe/trunk/test/SemaOpenCL/sampler_t.cl Mon Aug 12 05:44:26 2019<br>
@@ -10,6 +10,9 @@<br>
 #define CLK_FILTER_NEAREST              0x10<br>
 #define CLK_FILTER_LINEAR               0x20<br>
 <br>
+typedef float float4 __attribute__((ext_vector_type(4)));<br>
+float4 read_imagef(read_only image1d_t, sampler_t, float);<br>
+<br>
 constant sampler_t glb_smp = CLK_ADDRESS_CLAMP_TO_EDGE | CLK_NORMALIZED_COORDS_TRUE | CLK_FILTER_LINEAR;<br>
 constant sampler_t glb_smp2; // expected-error{{variable in constant address space must be initialized}}<br>
 global sampler_t glb_smp3 = CLK_ADDRESS_CLAMP_TO_EDGE | CLK_NORMALIZED_COORDS_TRUE | CLK_FILTER_NEAREST; // expected-error{{sampler type cannot be used with the __local and __global address space qualifiers}} expected-error {{global sampler requires a const
 or constant address space qualifier}}<br>
@@ -74,3 +77,7 @@ void bar() {<br>
   foo(smp1+1); //expected-error{{invalid operands to binary expression ('sampler_t' and 'int')}}<br>
 }<br>
 <br>
+void smp_args(read_only image1d_t image) {<br>
+  // Test that parentheses around sampler arguments are ignored.<br>
+  float4 res = read_imagef(image, (glb_smp10), 0.0f);<br>
+}<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
cfe-commits@lists.llvm.org<br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</div>
</span></font></div>
</div>
</div>
</div>
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.
</body>
</html>