<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.compilers.llvm.devel">
    <title>gmane.comp.compilers.llvm.devel</title>
    <link>http://blog.gmane.org/gmane.comp.compilers.llvm.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50110"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50108"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50107"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50104"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50099"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50089"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50066"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50063"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50062"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50061"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50049"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50043"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50027"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50024"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50023"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50022"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50018"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50016"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50015"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50014"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50110">
    <title>Quick question: LLVM.org documentation tool?</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50110</link>
    <description>&lt;pre&gt;Hi,

I was wondering if you guys are using a tool of some sort for generating
the HTML for LLVM or if you are writing it by hand?  I am thinking of
submitting some Windows-specific documentation because I honestly find it
quite difficult to get things up and running with MINGW64.  I may be daft,
but so may others :-)  As a former build master, I have a strong preference
for documentation that assumes zero knowledge by the reader (just like a
daily build system should assume zero knowledge from the host environment).

I seem to be progressing nicely on setting up a MINGW64 build slave, but it
is still too early to tell for sure.


Cheers,
Mikael
_______________________________________________
LLVM Developers mailing list
LLVMdev&amp;lt; at &amp;gt;cs.uiuc.edu         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
&lt;/pre&gt;</description>
    <dc:creator>Mikael Lyngvig</dc:creator>
    <dc:date>2012-05-26T19:28:49</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50108">
    <title>Work in your project</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50108</link>
    <description>&lt;pre&gt;Hi guys,

In next three years I'm going to get the scientific degree in System
programming.
That's why I'm looking for the interesting and actual theme not like a new
bicycle with square rings.
My degree work in university was connected with value range propagation
(VRP) functionality in clang static analyzer based on AST.
I founded it rather interesting and want to follow this direction with your
project.
As i know, VRP is a not new theme, and llvm and gcc projects already have
the similar feature.


It would be nice, if you suggest me good theme or give me the area where I
could find it.

--
Best regards,
Sergey
_______________________________________________
LLVM Developers mailing list
LLVMdev&amp;lt; at &amp;gt;cs.uiuc.edu         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
&lt;/pre&gt;</description>
    <dc:creator>Serg Anohovsky</dc:creator>
    <dc:date>2012-05-26T07:11:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50107">
    <title>handleMoveIntoBundle assertion</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50107</link>
    <description>&lt;pre&gt;Hi,

I have a custom scheduler/bundler running just after coalescing as 
proposed by the current infrastructure of machine schedulers. Btw, great 
thanks for this cool stuff !
I'm running into problems when I want to update the LI information of an 
instruction. I call handleMoveIntoBundle() to make its LI begins from 
the packet header but the following assertion is raised:

"Can't have two defs for the same variable exiting a bundle." in 
moveExitingFromInto()

IIUC, handleMoveIntoBundle collects entering, internal and exiting live 
ranges from the bundle and group all this information into BundleRanges. 
Then it collects the same information for the incoming instruction and 
add it to the current BundleRanges while updating its live ranges.
I found that entering, internal and exiting live ranges of the packet 
are not cleared before collecting the same information for the incoming 
instruction. The attached patch fix it.
Unfortunately, I can't provide a test case but it can be easily tested 
by calling ha&lt;/pre&gt;</description>
    <dc:creator>Ivan Llopard</dc:creator>
    <dc:date>2012-05-25T22:52:06</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50104">
    <title>generating LLVM code that meets the C ABI</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50104</link>
    <description>&lt;pre&gt;I want to generate LLVM functions that meet the C ABI for function
calls/returns (preferably on multiple platforms but x86_64 would be OK
for now).
I know that LLVM doesn't handle this completely automatically (e.g.
the type {i32,i32} should be passed as a single i64 on x86_64 linux).
Is there any library that automates the generation of function
declarations meeting the ABI and emit marshalling/demarshalling code
from LLVM's types?
I would imagine that Clang needs to do this internally,  where does
this code live?

Thanks for your help!

Zach
&lt;/pre&gt;</description>
    <dc:creator>Zach Devito</dc:creator>
    <dc:date>2012-05-25T18:29:58</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50099">
    <title>Changes to TargetLowering::{LowerCallTo,LowerCall}</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50099</link>
    <description>&lt;pre&gt;A change has just been committed that changes the interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall.  Instead of passing a mess of parameters to these functions, a new structure has been created that encapsulates these parameters.  The motivation is that additional fields can be added to this structure (with appropriate changes to SelectionDAGBuilder for populating the new fields) without forcing an ABI change on each and every target.  In-tree targets have been updated accordingly, so no change is required.  However, if you have an out-of-tree target that is following trunk, please be aware that this *will* break your build.  Please see any in-tree target for the new interface and how to access the values that used to be available as individual function parameters.



As a quick example, the ARM implementation for LowerCall is now:



SDValue

ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &amp;amp;CLI,

                             SmallVectorImpl&amp;lt;SDValue&amp;gt; &amp;amp;InVals) const {

  S&lt;/pre&gt;</description>
    <dc:creator>Justin Holewinski</dc:creator>
    <dc:date>2012-05-25T16:59:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50089">
    <title>MachineOperand TargetFlags being ignored in registercoalescing pass</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50089</link>
    <description>&lt;pre&gt;Hi,

On AMD GPUs we have source modifiers and output modifiers, which are bits
you can set on instructions to perform some simple no cost operations
on either the operands or the result of an instruction (floating point
values only).

The source modifiers are FABS and FNEG and are applied to the operands
before an instruction is executed.

The output modifiers are CLAMP (clamp result between 0.0f and 1.0f)
and OMOD (multiply the result by 0.5f, 2.0f, or 4.0f).  These are
applied to the result of an instruction after it is executed.

For the R600 backend, I'm using the MachineOperand TargetFlags to
keep track of the modifiers, but I've noticed when I use them on
operands to COPY instructions they are not propagated when registers
are coalesced.  Is this a bug, or should I not be using TargetFlags for
storing this kind of information?

-Tom
&lt;/pre&gt;</description>
    <dc:creator>Tom Stellard</dc:creator>
    <dc:date>2012-05-25T15:15:08</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50066">
    <title>LLVM Clang compiling error</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50066</link>
    <description>&lt;pre&gt;Dear Sir,

I am trying to compile llvm (llvm, clang, compiler-rt) package. I got an errors: 
/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_defs.h:144:9: error: expression result unused; assign into a variable to force a volatile load [-Werror, -Wunused-volatile-lvalue]. 

Same errors in lines 145 and 146 ((void) cfg; (void)stats; (void)shadow). 

OS: RHEL 6.2 (x86-64)
GCC: 4.4.6

Compiled with optimization enabled flag. 

Also some tests (make check-all) finished unsuccessful. 

Could you please help with this issue?

- Andrey
&lt;/pre&gt;</description>
    <dc:creator>Andrey Pudov</dc:creator>
    <dc:date>2012-05-24T20:27:06</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50063">
    <title>JITEventListener destructor location</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50063</link>
    <description>&lt;pre&gt;Hello,

I've recently finished moving a cross-platform project to LLVM 3.0 and now transitioning to 3.1.  One of the things I've hit is on OS X, I have linker errors involving JITEventListener and I've noticed if I move the JITEventListener destructor out of JIT.cpp and into JITEventListener.h (like other functions of JITEventListener), the linker is much happier.  I'd like to push this change back to LLVM trunk if people think it is good.  What do I need to do to gain blessings and permission to do this?

Aaron Dwyer
Imagination Technologies

_______________________________________________
LLVM Developers mailing list
LLVMdev&amp;lt; at &amp;gt;cs.uiuc.edu         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
&lt;/pre&gt;</description>
    <dc:creator>Aaron Dwyer</dc:creator>
    <dc:date>2012-05-24T20:55:30</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50062">
    <title>use AVX automatically if present</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50062</link>
    <description>&lt;pre&gt;
I wonder why AVX is not used automatically if available at the host 
machine. In contrast to that, SSE41 instructions (like pmulld) are 
automatically used if the host machine supports SSE41.

E.g.

$ cat avx.ll

define void &amp;lt; at &amp;gt;_fun1(&amp;lt;8 x float&amp;gt;*, &amp;lt;8 x float&amp;gt;*) {
_L1:
   %x = load &amp;lt;8 x float&amp;gt;* %0
   %y = load &amp;lt;8 x float&amp;gt;* %1
   %z = fadd &amp;lt;8 x float&amp;gt; %x, %y
   store &amp;lt;8 x float&amp;gt; %z, &amp;lt;8 x float&amp;gt;* %0
   ret void
}


$ llc -o - avx.ll
         .file   "avx.ll"
         .text
         .globl  _fun1
         .align  16, 0x90
         .type   _fun1,&amp;lt; at &amp;gt;function
_fun1:                                  # &amp;lt; at &amp;gt;_fun1
         .cfi_startproc
# BB#0:                                 # %_L1
         movaps  (%rdi), %xmm0
         movaps  16(%rdi), %xmm1
         addps   (%rsi), %xmm0
         addps   16(%rsi), %xmm1
         movaps  %xmm1, 16(%rdi)
         movaps  %xmm0, (%rdi)
         ret
.Ltmp0:
         .size   _fun1, .Ltmp0-_fun1
         .cfi_endproc


         .section        ".note.GNU-stack","",&amp;lt; at &amp;gt;progbits



$ llc -o - -ma&lt;/pre&gt;</description>
    <dc:creator>Henning Thielemann</dc:creator>
    <dc:date>2012-05-24T20:19:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50061">
    <title>MC Hammer Test results</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50061</link>
    <description>&lt;pre&gt;Hello everyone

At EuroLLVM I presented some testing work we have been doing on improving
correctness of the MC Layer for ARM. There seemed to be interest from the
community in seeing the results of this test suite.

Background
-----------
We are using a test suite, called MC Hammer, that compares MC with an ARM
in-house implementation of the same functionality. The test space for this suite
is very large ( O(10 trillion) points ) so we are concentrating on small slices
at a time.

For further details you can check out the talk I did at EuroLLVM last month:
http://llvm.org/devmtg/2012-04-12/Slides/Richard_Barton.pdf

Results
--------
The below results are:

 - for Thumb instructions 
 - for Cortex-A8 with VFPv3 and Advanced SIMDv1 extensions
 - for the encode/decode loop, described on slide 11 of the talk
 - all silent codegen bugs[1], that is bugs where:
   - The reference bitpattern is defined and predictable.
   - The generated bitpattern is defined.
   - The generated bitpattern differs from the referenc&lt;/pre&gt;</description>
    <dc:creator>Richard Barton</dc:creator>
    <dc:date>2012-05-24T18:18:48</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50049">
    <title>[TableGen] How to specify multiple types to one registerclass.</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50049</link>
    <description>&lt;pre&gt;Hi all,

In our architecture, there is a set of general purpose registers which could be
used to store integer and floating point numbers. My problem is how to correctly
specify the type of this register class. For now, its type is
specified as i32, and
it is problematic if it is used in floating point instructions, since
tablegen cannot
correctly infer the type information of such a pattern. Here is an example:

    // Definition of the register class
    def RegCRF : RegisterClass&amp;lt;"Foo", [i32], 32, (sequence "R%u", 0, 255)&amp;gt;;

    // Tablegen: error: In FADD: Type inference contradiction found
    //           no floating point types found
    def FADD : InstFoo&amp;lt;(outs RegCRF:$d),
                       (ins RegCRF:$a, RegCRF:$b),
                       "FADD\t$d, $a, $b",
                       [(set RegCRF:$d, (fadd RegCRF:$a, RegCRF:$b))]&amp;gt;;

I also tried to type RegCRF as [i32, f32], but then the type inference error
appears in my load/store instructions, when RegCRF is used as an address
operand. So what&lt;/pre&gt;</description>
    <dc:creator>Lei Mou</dc:creator>
    <dc:date>2012-05-24T14:25:36</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50043">
    <title>data dependency and fully loop unrolling</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50043</link>
    <description>&lt;pre&gt;Hi, all

When I have a loop unrolled, in the loop body, the same element of the 
array may be accessed multiple times.
I see there are then load and store instructions and I can no longer 
trace the data dependency directly by comparing
the operands. So I am writing to see if anyone has done this or any 
methods in llvm that may help?

Best regards,

&lt;/pre&gt;</description>
    <dc:creator>Cheng Liu</dc:creator>
    <dc:date>2012-05-24T11:07:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50027">
    <title>make check-lit + grep escape characters</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50027</link>
    <description>&lt;pre&gt;Hi all. I found that if you want to use grep with escape characters in 
lit, you should pass it within the double slash (\\). Since the first 
one is captured by python scripts and the second one by grep.
E.g. if you want to capture "grep icmp ule" you should pass
"grep icmp\\ ule"

So I'm going to commit the test with strings like this. How stable this 
feature in lit?

-Stepan.
&lt;/pre&gt;</description>
    <dc:creator>Stepan Dyatkovskiy</dc:creator>
    <dc:date>2012-05-24T07:12:47</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50024">
    <title>LTO for smaller memory footprint for Clang</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50024</link>
    <description>&lt;pre&gt;Hi all,

I was trying to use LTO facility of LLVM to reduce the footprint of
Clang itself. I build the ld-gold  and LLVMgold.so as described at [1]
and then set the environment as described too. However, had to add the
path for plugin manually as Clang was not able pass it to ld
automatically. Following is the setting I used before starting to
build (small foot Clang.

CXX=clang++ -flto
-Wl,--plugin=/home/wer/llvm-3.0/build_config_gold_release/Release/lib/LLVMgold.so
CFLAGS=-O3
CC=clang -flto -Wl,--plugin=/home/wer/llvm-3.0/build_config_gold_release/Release/lib/LLVMgold.so
RANLIB=/bin/true

Then configured and did the build for LLVM. While building Clang tool,
there may be large part of LLVM/Clang libraries which are not used by
Clang. So I was expecting appreciable reduction in size for Clang.
However memory savings were minimal.

Also, as explained in [2] in the topic "Compiler driver invokes link
time optimizer separately." , there are many cases when invoking Clang
with -flto may not remove the dead c&lt;/pre&gt;</description>
    <dc:creator>ankur deshwal</dc:creator>
    <dc:date>2012-05-24T04:34:46</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50023">
    <title>Tips for using clang v3.1 on Windows</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50023</link>
    <description>&lt;pre&gt;Here are the results of me playing around with the new EXPERIMENTAL release
v3.1 of clang for Windows using MinGW32:

   0. You don't need to go through the nightmare of building clang v3.1
yourself - it is right there on the download page, albeit at the very
bottom.
   1. Install MinGW32 in the directory C:\MinGW and nowhere else.
 Otherwise you'll get all sorts of errors about missing include files and
nothing will work at all.
   2. Install all of MinGW32 - MSYS and all of the packages, just to be
sure it all works.
   3. Install Clang in a directory without spaces in it (as the clang docs
say).
   4. Add both c:\MinGW\bin and clang's bin directory to your path using
the PATH command: path
c:\tmp\clang-3.1-win32-mingw32\bin;c:\MinGW\bin;%path%
   5. Be prepared to have to edit your source files a little as MinGW32 is
not entirely Microsoft compatible (there's no GetFileSizeEx() function, for
instance).
   6. Remember to use MinGW's ranlib, not llvm-ranlib, when you create an
indexed archive.  The latter w&lt;/pre&gt;</description>
    <dc:creator>Mikael Lyngvig</dc:creator>
    <dc:date>2012-05-24T02:32:15</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50022">
    <title>About the result of getPointerSizeInBits();</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50022</link>
    <description>&lt;pre&gt;Hi guys,

Does getPointerSizeInBits need to return sizeof(void*) in Platform?
I found that getPointerSizeInBits return 8 in x86-32 on win7-64, MSVC 2010.

And if I have a struct { i32, i32* }; the structLayout-&amp;gt;getElementOffset(1)
return 8, but I think 4 is right.
In generated ASM, the offset of second element is 4.

Thanks.

&lt;/pre&gt;</description>
    <dc:creator>空明流转</dc:creator>
    <dc:date>2012-05-24T01:43:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50018">
    <title>vmkit: Getting Started</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50018</link>
    <description>&lt;pre&gt;Hi,

I recently tried to follow the instructions on
    http://vmkit.llvm.org/get_started.html

but all I get is

&lt;/pre&gt;</description>
    <dc:creator>Patrik Plihal</dc:creator>
    <dc:date>2012-05-24T00:18:20</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50016">
    <title>Windows question: Dozens of linker warnings and errors</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50016</link>
    <description>&lt;pre&gt;Hi again again,

I'm trying to build my compiler frontend in C++ on Windows 7 x64 using
clang++.exe.  I want to use clang++ for my project so that I get a feel for
how mature and usable the Windows support is as I gradually get up to speed
with LLVM for Windows.  I could develop on Linux, but I need the Windows
support so I figure I might as well do it the hard way.

My code is fairly simple C++ with a few template classes, a rare virtual
function, and nothing very fancy.  I am able to compile my code without
warnings (although clang++ earlier on found a couple of very serious issues
in my code).  But when I get to the link phase, all hell breaks loose:

I get a ton of these warnings:

Memory.o : warning LNK4006: _InterlockedBitTestAndSet already defined
in Stream.o; second definition ignored
Memory.o : warning LNK4006: _InterlockedBitTestAndReset already
defined in Stream.o; second definition ignored
Memory.o : warning LNK4006: _InterlockedBitTestAndComplement already
defined in Stream.o; second definition &lt;/pre&gt;</description>
    <dc:creator>Mikael Lyngvig</dc:creator>
    <dc:date>2012-05-23T23:38:05</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50015">
    <title>alloc_size metadata</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50015</link>
    <description>&lt;pre&gt;Hi,

I'm implementing the alloc_size function attribute in clang. This  
attribute exists in gcc since version 4.3.
The attribute specifies that a function returns a buffer with the size  
given by the multiplication of the specified arguments.  I would like  
to add new metadata to pass this information to LLVM IR.

For example, take the following C code:

void* my_calloc(size_t, size_t) __attribute__((alloc_size(1,2)));

void* fn() {
   return my_calloc(1, 3);
}


which would get translated to:


define i8* &amp;lt; at &amp;gt;fn() {
entry:
   %call = call i8* &amp;lt; at &amp;gt;my_calloc(i32 1, i32 3), !alloc_size !0
   ret i8* %call
}

declare i8* &amp;lt; at &amp;gt;my_calloc(i32, i32)

!0 = metadata !{i32 0, i32 1}


The downsize is that the metadata is added to all call sites, since  
it's not possible to attach metadata to function declarations.

Any comment, suggestion, etc?

Thanks,
Nuno
&lt;/pre&gt;</description>
    <dc:creator>Nuno Lopes</dc:creator>
    <dc:date>2012-05-23T23:16:30</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50014">
    <title>tblgen for generation of Haskell bindings to LLVMintrinsics</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50014</link>
    <description>&lt;pre&gt;
I want to generate Haskell bindings to LLVM intrinsics. In a first attempt I 
wrote a little parser that reads IntrinsicsX86.td and outputs a Haskell module.

E.g. the definition

   def int_x86_avx_max_ps_256 : GCCBuiltin&amp;lt;"__builtin_ia32_maxps256"&amp;gt;,
         Intrinsic&amp;lt;[llvm_v8f32_ty], [llvm_v8f32_ty,
                   llvm_v8f32_ty], [IntrNoMem]&amp;gt;;

is turned into

   maxpd256 :: Ext.T (V4Double -&amp;gt; V4Double -&amp;gt; LLVM.CodeGenFunction r V4Double)
   maxpd256 = Ext.intrinsic ExtX86.avx "max.pd.256"


This works for the flat structure of IntrinsicsX86.td, but e.g. 
IntrinsicsPowerPC.td uses tablegen classes.

Now I wonder whether it is better to use tablegen to generate the Haskell code. 
The tblgen man page says, that tablegen emits C++. This would not be a big 
problem, since I could let it write C++ code that in turn writes Haskell code.

Unfortunately the section
   "http://llvm.org/docs/TableGenFundamentals.html#backends"
  is not yet written.

Is it possible to use the llvm-tblgen binary without modificati&lt;/pre&gt;</description>
    <dc:creator>Henning Thielemann</dc:creator>
    <dc:date>2012-05-23T22:38:13</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50013">
    <title>Minor correction to the Visual Studio documentation</title>
    <link>http://comments.gmane.org/gmane.comp.compilers.llvm.devel/50013</link>
    <description>&lt;pre&gt;Hi again,

The Visual Studio getting started guide (
http://llvm.org/docs/GettingStartedVS.html) mentions the "llvm-lit" tool,
but fails to mention these things:

   1. Either you need to run it from bash or a similar Unix shell, as
Windows does not recognize the extensionless Python script that it is.
   2. Alternatively, you can invoke it using Python like this: python
bin/llvm-lit test

I know that the documentation says that I am to install GnuWin32 tools, but
I strongly oppose that idea.  We Windows people have our own tools and
practices and I think the LLVM developers should open up to a more
multi-platform approach than the current (Unix then, perhaps maybe,
Windows) approach.  CMake works brilliantly, though, so there are no issues
in building neither the win32 or win64 versions of LLVM.

As far as I can tell, I don't need the GnuWin32 tools at all.  I can
succesfully build and link a tiny "hello world" sample program without
problems.  I do have many Windows ports of Unix tools in my standard path,&lt;/pre&gt;</description>
    <dc:creator>Mikael Lyngvig</dc:creator>
    <dc:date>2012-05-23T21:50:06</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.compilers.llvm.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.compilers.llvm.devel</link>
  </textinput>
</rdf:RDF>

