[llvm] r238447 - AsmPrinter: Suppress warnings on GCC from r238362, NFC
David Blaikie
dblaikie at gmail.com
Thu May 28 11:28:12 PDT 2015
On Thu, May 28, 2015 at 11:09 AM, Duncan P. N. Exon Smith <
dexonsmith at apple.com> wrote:
> Author: dexonsmith
> Date: Thu May 28 13:09:13 2015
> New Revision: 238447
>
> URL: http://llvm.org/viewvc/llvm-project?rev=238447&view=rev
> Log:
> AsmPrinter: Suppress warnings on GCC from r238362, NFC
>
> GCC seems to have some overzealous warnings about strict aliasing.
>
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)
> Rafael reports that this patch suppresses them on GCC 4.9, and I'm
> hoping this will work for GCC 4.7 as well. I'll watch [1] and iterate
> if necessary.
>
> [1]: http://bb.pgr.jp/builders/clang-3stage-x86_64-linux/builds/8597
>
> Modified:
> llvm/trunk/include/llvm/CodeGen/DIE.h
>
> Modified: llvm/trunk/include/llvm/CodeGen/DIE.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/DIE.h?rev=238447&r1=238446&r2=238447&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/DIE.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/DIE.h Thu May 28 13:09:13 2015
> @@ -340,11 +340,11 @@ private:
> new (reinterpret_cast<void *>(Val.buffer)) T(V);
> }
>
> - template <class T> T &get() { return *reinterpret_cast<T
> *>(Val.buffer); }
> - template <class T> const T &get() const {
> - return *reinterpret_cast<const T *>(Val.buffer);
> + template <class T> T *get() { return reinterpret_cast<T *>(Val.buffer);
> }
> + template <class T> const T *get() const {
> + return reinterpret_cast<const T *>(Val.buffer);
> }
> - template <class T> void destruct() { get<T>().~T(); }
> + template <class T> void destruct() { get<T>()->~T(); }
>
> /// Destroy the underlying value.
> ///
> @@ -378,11 +378,11 @@ private:
> return;
> #define HANDLE_DIEVALUE_SMALL(T)
> \
> case is##T:
> \
> - construct<DIE##T>(X.get<DIE##T>());
> \
> + construct<DIE##T>(*X.get<DIE##T>());
> \
> return;
> #define HANDLE_DIEVALUE_LARGE(T)
> \
> case is##T:
> \
> - construct<const DIE##T *>(X.get<const DIE##T *>());
> \
> + construct<const DIE##T *>(*X.get<const DIE##T *>());
> \
> return;
> #include "llvm/CodeGen/DIEValue.def"
> }
> @@ -425,12 +425,12 @@ public:
> #define HANDLE_DIEVALUE_SMALL(T)
> \
> const DIE##T &getDIE##T() const {
> \
> assert(getType() == is##T && "Expected " #T);
> \
> - return get<DIE##T>();
> \
> + return *get<DIE##T>();
> \
> }
> #define HANDLE_DIEVALUE_LARGE(T)
> \
> const DIE##T &getDIE##T() const {
> \
> assert(getType() == is##T && "Expected " #T);
> \
> - return *get<const DIE##T *>();
> \
> + return **get<const DIE##T *>();
> \
> }
> #include "llvm/CodeGen/DIEValue.def"
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150528/d3d0494b/attachment.html>
More information about the llvm-commits
mailing list