<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Ping.<br>
<br>
On 2/6/2013 8:15 AM, Matthew Curtis wrote:<br>
</div>
<blockquote cite="mid:5112658A.8060001@codeaurora.org" type="cite">Hello
all,
<br>
<br>
This patch helps resolve a couple of issues we encountered while
<br>
porting the Polly plug-in to Windows.
<br>
<br>
The Polly plugin depends on some LLVM Passes which it identifies
via
<br>
Pass IDs. Pass IDs are implemented as the address of a static
member
<br>
variable (ID) of the Pass. On Windows however, there seems to be a
bug
<br>
in the Visual Studio compiler or linker that results in multiple
<br>
dll-local copies of this data when referenced directly. The result
is
<br>
that Polly is unable to locate Passes that are part of the
executable
<br>
it is being loaded into.
<br>
<br>
As a work around, this patch adds getters (GetClassPassID) for the
<br>
Pass IDs used by Polly. The symbols for the globals are not
<br>
exported. The getters are exported and Polly uses them instead.
<br>
<br>
Removing use of global data by the Polly plug-in also makes it
<br>
possible to delay load LLVM symbols from the containing executable
<br>
which in turn removes the restriction that the executable have a
<br>
specific name (determined at link-time).
<br>
<br>
We also considered a couple alternatives to this minimal patch:
<br>
<br>
1) Update *all* Passes to provide GetClassPassID in lieu of ID.
<br>
<br>
This leaves the code in the cleanest state and would be a good
<br>
choice if starting from scratch. However I started implementing
it
<br>
and it turns out to have a very large ripple effect. Not only
does
<br>
it require changing a large number of files in LLVM, but it
breaks
<br>
source compatibility for passes that are not part of the LLVM
<br>
source.
<br>
<br>
That being said, I'd be willing to do the work if everyone
thinks
<br>
that's the right thing to do and we're willing break source
<br>
compatibility.
<br>
<br>
Perhaps we could ease the pain by deprecating ID for some time
<br>
before removing it.
<br>
<br>
2) Add GetClassPassID to Passes accessible by plug-ins (i.e. those
<br>
under include/llvm), but leave ID as it is.
<br>
<br>
As with the proposed patch, this may cause confusion because
there
<br>
are multiple ways of getting a Pass's ID. But at least it's not
<br>
specific to the Polly plug-in and other plug-ins on Windows may
<br>
benefit.
<br>
<br>
Thanks,
<br>
Matthew Curtis
<br>
<br>
BTW, there's a brief related discussion on llvm-dev here:
<br>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-January/058838.html">http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-January/058838.html</a>
<br>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-February/thread.html#58982">http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-February/thread.html#58982</a>
<br>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
llvm-commits mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a>
</pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation</pre>
</body>
</html>