<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 28, 2015 at 11:09 AM, Duncan P. N. Exon Smith <span dir="ltr"><<a href="mailto:dexonsmith@apple.com" target="_blank">dexonsmith@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dexonsmith<br>
Date: Thu May 28 13:09:13 2015<br>
New Revision: 238447<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D238447-26view-3Drev&d=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=zwr1d3EVPj16j2gj_dT4TWkoxdc_ke6n-UqMkGXbRww&s=l_RYKMlO180586tQhW6BXRwLO-_vZLWoIvzqvCRyCBI&e=" target="_blank">http://llvm.org/viewvc/llvm-project?rev=238447&view=rev</a><br>
Log:<br>
AsmPrinter: Suppress warnings on GCC from r238362, NFC<br>
<br>
GCC seems to have some overzealous warnings about strict aliasing.<br></blockquote><div><br>If the warning is wrong, can we just disable it rather than contorting the code to suppress it? (especially with the risk that warnings like this in GCC tend to be powered by their optimizer & thus might see through this & start warning again)<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Rafael reports that this patch suppresses them on GCC 4.9, and I'm<br>
hoping this will work for GCC 4.7 as well.  I'll watch [1] and iterate<br>
if necessary.<br>
<br>
[1]: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__bb.pgr.jp_builders_clang-2D3stage-2Dx86-5F64-2Dlinux_builds_8597&d=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=zwr1d3EVPj16j2gj_dT4TWkoxdc_ke6n-UqMkGXbRww&s=OuzhGXdDyrH16w-vcjUuATEbrYf_N_OcSyOIyeddwe8&e=" target="_blank">http://bb.pgr.jp/builders/clang-3stage-x86_64-linux/builds/8597</a><br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/CodeGen/DIE.h<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGen/DIE.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_CodeGen_DIE.h-3Frev-3D238447-26r1-3D238446-26r2-3D238447-26view-3Ddiff&d=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=zwr1d3EVPj16j2gj_dT4TWkoxdc_ke6n-UqMkGXbRww&s=a5D4xvtkve6cnI868L3-Cnia6OGV4BweiwYGFKRegD4&e=" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/DIE.h?rev=238447&r1=238446&r2=238447&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/CodeGen/DIE.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGen/DIE.h Thu May 28 13:09:13 2015<br>
@@ -340,11 +340,11 @@ private:<br>
     new (reinterpret_cast<void *>(Val.buffer)) T(V);<br>
   }<br>
<br>
-  template <class T> T &get() { return *reinterpret_cast<T *>(Val.buffer); }<br>
-  template <class T> const T &get() const {<br>
-    return *reinterpret_cast<const T *>(Val.buffer);<br>
+  template <class T> T *get() { return reinterpret_cast<T *>(Val.buffer); }<br>
+  template <class T> const T *get() const {<br>
+    return reinterpret_cast<const T *>(Val.buffer);<br>
   }<br>
-  template <class T> void destruct() { get<T>().~T(); }<br>
+  template <class T> void destruct() { get<T>()->~T(); }<br>
<br>
   /// Destroy the underlying value.<br>
   ///<br>
@@ -378,11 +378,11 @@ private:<br>
       return;<br>
 #define HANDLE_DIEVALUE_SMALL(T)                                               \<br>
   case is##T:                                                                  \<br>
-    construct<DIE##T>(X.get<DIE##T>());                                        \<br>
+    construct<DIE##T>(*X.get<DIE##T>());                                       \<br>
     return;<br>
 #define HANDLE_DIEVALUE_LARGE(T)                                               \<br>
   case is##T:                                                                  \<br>
-    construct<const DIE##T *>(X.get<const DIE##T *>());                        \<br>
+    construct<const DIE##T *>(*X.get<const DIE##T *>());                       \<br>
     return;<br>
 #include "llvm/CodeGen/DIEValue.def"<br>
     }<br>
@@ -425,12 +425,12 @@ public:<br>
 #define HANDLE_DIEVALUE_SMALL(T)                                               \<br>
   const DIE##T &getDIE##T() const {                                            \<br>
     assert(getType() == is##T && "Expected " #T);                              \<br>
-    return get<DIE##T>();                                                      \<br>
+    return *get<DIE##T>();                                                     \<br>
   }<br>
 #define HANDLE_DIEVALUE_LARGE(T)                                               \<br>
   const DIE##T &getDIE##T() const {                                            \<br>
     assert(getType() == is##T && "Expected " #T);                              \<br>
-    return *get<const DIE##T *>();                                             \<br>
+    return **get<const DIE##T *>();                                            \<br>
   }<br>
 #include "llvm/CodeGen/DIEValue.def"<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>