<div dir="ltr">Sorry about that!<div><br></div><div>echristo picked up this issue and reverted the offending commits in r231731. I've reapplied them, with the fix identified by dblaikie, in r231896.<br><div><br></div><div>- Lang.</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 10, 2015 at 11:36 AM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">----- Original Message -----<br>
> From: "Lang Hames" <<a href="mailto:lhames@gmail.com">lhames@gmail.com</a>><br>
> To: <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> Sent: Monday, March 9, 2015 6:51:09 PM<br>
> Subject: [llvm] r231726 - [Orc][MCJIT][RuntimeDyld] Add header that was       accidentally left out of r231724.<br>
><br>
> Author: lhames<br>
> Date: Mon Mar  9 18:51:09 2015<br>
> New Revision: 231726<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=231726&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=231726&view=rev</a><br>
> Log:<br>
> [Orc][MCJIT][RuntimeDyld] Add header that was accidentally left out<br>
> of r231724.<br>
><br>
> Added:<br>
>     llvm/trunk/include/llvm/ExecutionEngine/JITSymbolFlags.h<br>
><br>
> Added: llvm/trunk/include/llvm/ExecutionEngine/JITSymbolFlags.h<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/JITSymbolFlags.h?rev=231726&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/JITSymbolFlags.h?rev=231726&view=auto</a><br>
> ==============================================================================<br>
> --- llvm/trunk/include/llvm/ExecutionEngine/JITSymbolFlags.h (added)<br>
> +++ llvm/trunk/include/llvm/ExecutionEngine/JITSymbolFlags.h Mon Mar<br>
>  9 18:51:09 2015<br>
> @@ -0,0 +1,81 @@<br>
> +//===------ JITSymbolFlags.h - Flags for symbols in the JIT -----*-<br>
> C++ -*-===//<br>
> +//<br>
> +//                     The LLVM Compiler Infrastructure<br>
> +//<br>
> +// This file is distributed under the University of Illinois Open<br>
> Source<br>
> +// License. See LICENSE.TXT for details.<br>
> +//<br>
> +//===----------------------------------------------------------------------===//<br>
> +//<br>
> +// Symbol flags for symbols in the JIT (e.g. weak, exported).<br>
> +//<br>
> +//===----------------------------------------------------------------------===//<br>
> +<br>
> +#ifndef LLVM_EXECUTIONENGINE_JITSYMBOLFLAGS_H<br>
> +#define LLVM_EXECUTIONENGINE_JITSYMBOLFLAGS_H<br>
> +<br>
> +#include "llvm/IR/GlobalValue.h"<br>
> +<br>
> +namespace llvm {<br>
> +<br>
> +/// @brief Flags for symbols in the JIT.<br>
> +enum class JITSymbolFlags : char {<br>
> +  None = 0,<br>
> +  Weak = 1U << 0,<br>
> +  Exported = 1U << 1<br>
> +};<br>
> +<br>
> +JITSymbolFlags operator|(JITSymbolFlags LHS, JITSymbolFlags RHS) {<br>
> +  typedef std::underlying_type<JITSymbolFlags>::type UT;<br>
> +  return static_cast<JITSymbolFlags>(<br>
> +           static_cast<UT>(LHS) | static_cast<UT>(RHS));<br>
> +}<br>
<br>
</div></div>This does not link when compiled with gcc 4.8.0:<br>
<br>
  multiple definition of `llvm::operator|(llvm::JITSymbolFlags, llvm::JITSymbolFlags)'<br>
<br>
 -Hal<br>
<div class="HOEnZb"><div class="h5"><br>
> +<br>
> +JITSymbolFlags& operator |=(JITSymbolFlags &LHS, JITSymbolFlags RHS)<br>
> {<br>
> +  LHS = LHS | RHS;<br>
> +  return LHS;<br>
> +}<br>
> +<br>
> +JITSymbolFlags operator&(JITSymbolFlags LHS, JITSymbolFlags RHS) {<br>
> +  typedef std::underlying_type<JITSymbolFlags>::type UT;<br>
> +  return static_cast<JITSymbolFlags>(<br>
> +           static_cast<UT>(LHS) & static_cast<UT>(RHS));<br>
> +}<br>
> +<br>
> +JITSymbolFlags& operator &=(JITSymbolFlags &LHS, JITSymbolFlags RHS)<br>
> {<br>
> +  LHS = LHS & RHS;<br>
> +  return LHS;<br>
> +}<br>
> +<br>
> +/// @brief Base class for symbols in the JIT.<br>
> +class JITSymbolBase {<br>
> +public:<br>
> +  JITSymbolBase(JITSymbolFlags Flags) : Flags(Flags) {}<br>
> +<br>
> +  JITSymbolFlags getFlags() const { return Flags; }<br>
> +<br>
> +  bool isWeak() const {<br>
> +    return (Flags & JITSymbolFlags::Weak) == JITSymbolFlags::Weak;<br>
> +  }<br>
> +<br>
> +  bool isExported() const {<br>
> +    return (Flags & JITSymbolFlags::Exported) ==<br>
> JITSymbolFlags::Exported;<br>
> +  }<br>
> +<br>
> +  static JITSymbolFlags flagsFromGlobalValue(const GlobalValue &GV)<br>
> {<br>
> +    JITSymbolFlags Flags = JITSymbolFlags::None;<br>
> +    if (GV.hasWeakLinkage())<br>
> +      Flags |= JITSymbolFlags::Weak;<br>
> +    if (!GV.hasLocalLinkage() && !GV.hasHiddenVisibility())<br>
> +      Flags |= JITSymbolFlags::Exported;<br>
> +    return Flags;<br>
> +<br>
> +  }<br>
> +<br>
> +private:<br>
> +  JITSymbolFlags Flags;<br>
> +};<br>
> +<br>
> +} // end namespace llvm<br>
> +<br>
> +#endif<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>
><br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Hal Finkel<br>
Assistant Computational Scientist<br>
Leadership Computing Facility<br>
Argonne National Laboratory<br>
</font></span></blockquote></div><br></div>