<div dir="ltr">There was, a long time ago, a backend that actually targetted C. It was deleted in 2012 at r153307.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, May 22, 2016 at 8:37 AM, Stefan Gränitz <span dir="ltr"><<a href="mailto:stefan.graenitz@gmail.com" target="_blank">stefan.graenitz@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000"><span class="">
    <p>
      </p><blockquote type="cite">after realizing that it wasn't actually a
        backend that targetted c++ (which might be useful)</blockquote>
    <p></p></span>
    Exact same thing just happened to me.. it's not obvious, especially
    when reading the llc info:<br>
    <tt><br>
      $ llc -version</tt><tt><br>
    </tt><tt>  Registered Targets:</tt><tt><span class=""><br>
          arm        - ARM<br>
          arm64      - ARM64 (little endian)<br></span>
          cpp        - C++ backend<span class=""><br>
          x86        - 32-bit X86: Pentium-Pro and above<br>
          x86-64     - 64-bit X86: EM64T and AMD64</span></tt><tt><br>
    </tt><tt>    ...</tt><br>
    <br>
    * If not delete it, then at least adjust the description? E.g. "LLVM
    C++ API code" following <a href="http://ellcc.org/demo/" target="_blank">http://ellcc.org/demo/</a> ? Could also the name
    change to "cppapi"?<br>
    <br>
    * Has there ever been an attempt to implement a real C++ Backend?
    Without having done research in that direction - shouldn't that be
    quite straightforward? Anyone aware of technical difficulties?<br>
    <br>
    Cheers,<br>
    Stefan<span class="HOEnZb"><font color="#888888"><br>
    <pre cols="72">-- 
<a href="https://about.me/stefan.graenitz" target="_blank">https://about.me/stefan.graenitz</a></pre>
    <br>
    <div>Am 03.05.16 um 22:23 schrieb James Y
      Knight via llvm-dev:<br>
    </div></font></span><div><div class="h5">
    <blockquote type="cite">
      <div dir="ltr">Yes, it's quite obviously dead and should be
        deleted.
        <div><br>
        </div>
        <div>When I brought this up last time -- after realizing that it
          wasn't actually a backend that targetted c++ (which might be
          useful), but rather just something that emitted IR by calling
          llvm C++ functions (which really isn't IMO) -- someone also
          pointed out that it also really ought to be using
          IRBuilder...if anyone cared about it.
          <div><br>
            <div>
              <div>
                <div class="gmail_extra"><br>
                  <div class="gmail_quote">On Tue, May 3, 2016 at 4:14
                    PM, Sean Silva via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank"></a><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      <div dir="ltr">AFAICT it is dead.</div>
                      <div class="gmail_extra"><br>
                        <div class="gmail_quote">
                          <div>
                            <div>On Tue, May 3, 2016 at 4:04
                              AM, Stanislav Manilov via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span>
                              wrote:<br>
                            </div>
                          </div>
                          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                            <div>
                              <div>
                                <div dir="ltr">Hello,
                                  <div><br>
                                  </div>
                                  <div>I was trying to compile a simple
                                    program with the CppBackend like so:</div>
                                  <div><br>
                                  </div>
                                  <div>$ clang str_arg.c -emit-llvm -S</div>
                                  <div>$ llc -march=cpp str_arg.ll</div>
                                  <div><br>
                                  </div>
                                  <div>It produces a file `str_arg.cpp`
                                    as expected, however it doesn't seem
                                    that the resulting file is correct.
                                    For once, it includes
                                    `<llvm/Analysis/Verifier.h>`
                                    which seems to have been moved to
                                    `llvm/IR/Verifier.h` as far back as
                                    2013.</div>
                                  <div><br>
                                  </div>
                                  <div>My question is this: is the
                                    CppBackend supposed to work? If so,
                                    what am I missing?</div>
                                  <div><br>
                                  </div>
                                  <div>Listing of str_arg.c:</div>
                                  <div><br>
                                  </div>
                                  <div>
                                    <div>    #include <stdio.h></div>
                                    <div>    </div>
                                    <div>    void i(unsigned index, char
                                      *string) {</div>
                                    <div>      printf("%d %s\n", index,
                                      string);</div>
                                    <div>    }</div>
                                    <div>    <br>
                                    </div>
                                    <div>    int main() {</div>
                                    <div>      i(10, "foo");</div>
                                    <div>      return 0;</div>
                                    <div>    }</div>
                                  </div>
                                  <div><br>
                                  </div>
                                  <div>clang version:</div>
                                  <div><br>
                                  </div>
                                  <div>
                                    <div>    clang version 3.7.1 (<a href="http://llvm.org/git/clang.git" target="_blank"></a><a href="http://llvm.org/git/clang.git" target="_blank">http://llvm.org/git/clang.git</a>
0dbefa1b83eb90f7a06b5df5df254ce32be3db4b) (<a href="http://llvm.org/git/llvm.git" target="_blank">http://llvm.org/git/llvm.git</a>
33c352b3eda89abc24e7511d9045fa2e499a42e3)</div>
                                    <div>    Target:
                                      x86_64-unknown-linux-gnu</div>
                                    <div>    Thread model: posix</div>
                                  </div>
                                  <div><br>
                                  </div>
                                  <div>llc version:</div>
                                  <div><br>
                                  </div>
                                  <div>
                                    <div>    LLVM (<a href="http://llvm.org/" target="_blank"></a><a href="http://llvm.org/" target="_blank">http://llvm.org/</a>):</div>
                                    <div>      LLVM version 3.7.1</div>
                                    <div>      Optimized build.</div>
                                    <div>      Built Apr  4 2016
                                      (15:04:44).</div>
                                    <div>      Default target:
                                      x86_64-unknown-linux-gnu</div>
                                    <div>      Host CPU: ivybridge</div>
                                    <div>    <br>
                                    </div>
                                    <div>      Registered Targets:</div>
                                    <div>        aarch64    - AArch64
                                      (little endian)</div>
                                    <div>        aarch64_be - AArch64
                                      (big endian)</div>
                                    <div>        amdgcn     - AMD GCN
                                      GPUs</div>
                                    <div>        arm        - ARM</div>
                                    <div>        arm64      - ARM64
                                      (little endian)</div>
                                    <div>        armeb      - ARM (big
                                      endian)</div>
                                    <div>        bpf        - BPF (host
                                      endian)</div>
                                    <div>        bpfeb      - BPF (big
                                      endian)</div>
                                    <div>        bpfel      - BPF
                                      (little endian)</div>
                                    <div>        cpp        - C++
                                      backend</div>
                                    <div>        hexagon    - Hexagon</div>
                                    <div>        mips       - Mips</div>
                                    <div>        mips64     - Mips64
                                      [experimental]</div>
                                    <div>        mips64el   - Mips64el
                                      [experimental]</div>
                                    <div>        mipsel     - Mipsel</div>
                                    <div>        msp430     - MSP430
                                      [experimental]</div>
                                    <div>        nvptx      - NVIDIA PTX
                                      32-bit</div>
                                    <div>        nvptx64    - NVIDIA PTX
                                      64-bit</div>
                                    <div>        ppc32      - PowerPC 32</div>
                                    <div>        ppc64      - PowerPC 64</div>
                                    <div>        ppc64le    - PowerPC 64
                                      LE</div>
                                    <div>        r600       - AMD GPUs
                                      HD2XXX-HD6XXX</div>
                                    <div>        sparc      - Sparc</div>
                                    <div>        sparcel    - Sparc LE</div>
                                    <div>        sparcv9    - Sparc V9</div>
                                    <div>        systemz    - SystemZ</div>
                                    <div>        thumb      - Thumb</div>
                                    <div>        thumbeb    - Thumb (big
                                      endian)</div>
                                    <div>        x86        - 32-bit
                                      X86: Pentium-Pro and above</div>
                                    <div>        x86-64     - 64-bit
                                      X86: EM64T and AMD64</div>
                                    <div>        xcore      - XCore</div>
                                  </div>
                                  <div><br>
                                  </div>
                                  <div>Kind regards,</div>
                                  <div> - Stan</div>
                                  <div><br>
                                  </div>
                                </div>
                                <br>
                              </div>
                            </div>
                            <span>_______________________________________________<br>
                              LLVM Developers mailing list<br>
                              <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
                              <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
                              <br>
                            </span></blockquote>
                        </div>
                        <br>
                      </div>
                      <br>
                      _______________________________________________<br>
                      LLVM Developers mailing list<br>
                      <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
                      <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
                      <br>
                    </blockquote>
                  </div>
                  <br>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
    </blockquote>
  </div></div></div>

</blockquote></div><br></div>