James Y Knight via llvm-dev
2016-May-23 14:01 UTC
[llvm-dev] Is the CppBackend still supported?
There was, a long time ago, a backend that actually targetted C. It was deleted in 2012 at r153307. On Sun, May 22, 2016 at 8:37 AM, Stefan Gränitz <stefan.graenitz at gmail.com> wrote:> after realizing that it wasn't actually a backend that targetted c++ > (which might be useful) > > Exact same thing just happened to me.. it's not obvious, especially when > reading the llc info: > > $ llc -version > Registered Targets: > arm - ARM > arm64 - ARM64 (little endian) > cpp - C++ backend > x86 - 32-bit X86: Pentium-Pro and above > x86-64 - 64-bit X86: EM64T and AMD64 > ... > > * If not delete it, then at least adjust the description? E.g. "LLVM C++ > API code" following http://ellcc.org/demo/ ? Could also the name change > to "cppapi"? > > * 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? > > Cheers, > Stefan > > -- https://about.me/stefan.graenitz > > > Am 03.05.16 um 22:23 schrieb James Y Knight via llvm-dev: > > Yes, it's quite obviously dead and should be deleted. > > 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. > > > On Tue, May 3, 2016 at 4:14 PM, Sean Silva via llvm-dev < > <llvm-dev at lists.llvm.org>llvm-dev at lists.llvm.org> wrote: > >> AFAICT it is dead. >> >> On Tue, May 3, 2016 at 4:04 AM, Stanislav Manilov via llvm-dev < >> llvm-dev at lists.llvm.org> wrote: >> >>> Hello, >>> >>> I was trying to compile a simple program with the CppBackend like so: >>> >>> $ clang str_arg.c -emit-llvm -S >>> $ llc -march=cpp str_arg.ll >>> >>> 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. >>> >>> My question is this: is the CppBackend supposed to work? If so, what am >>> I missing? >>> >>> Listing of str_arg.c: >>> >>> #include <stdio.h> >>> >>> void i(unsigned index, char *string) { >>> printf("%d %s\n", index, string); >>> } >>> >>> int main() { >>> i(10, "foo"); >>> return 0; >>> } >>> >>> clang version: >>> >>> clang version 3.7.1 ( <http://llvm.org/git/clang.git> >>> http://llvm.org/git/clang.git 0dbefa1b83eb90f7a06b5df5df254ce32be3db4b) >>> (http://llvm.org/git/llvm.git 33c352b3eda89abc24e7511d9045fa2e499a42e3) >>> Target: x86_64-unknown-linux-gnu >>> Thread model: posix >>> >>> llc version: >>> >>> LLVM ( <http://llvm.org/>http://llvm.org/): >>> LLVM version 3.7.1 >>> Optimized build. >>> Built Apr 4 2016 (15:04:44). >>> Default target: x86_64-unknown-linux-gnu >>> Host CPU: ivybridge >>> >>> Registered Targets: >>> aarch64 - AArch64 (little endian) >>> aarch64_be - AArch64 (big endian) >>> amdgcn - AMD GCN GPUs >>> arm - ARM >>> arm64 - ARM64 (little endian) >>> armeb - ARM (big endian) >>> bpf - BPF (host endian) >>> bpfeb - BPF (big endian) >>> bpfel - BPF (little endian) >>> cpp - C++ backend >>> hexagon - Hexagon >>> mips - Mips >>> mips64 - Mips64 [experimental] >>> mips64el - Mips64el [experimental] >>> mipsel - Mipsel >>> msp430 - MSP430 [experimental] >>> nvptx - NVIDIA PTX 32-bit >>> nvptx64 - NVIDIA PTX 64-bit >>> ppc32 - PowerPC 32 >>> ppc64 - PowerPC 64 >>> ppc64le - PowerPC 64 LE >>> r600 - AMD GPUs HD2XXX-HD6XXX >>> sparc - Sparc >>> sparcel - Sparc LE >>> sparcv9 - Sparc V9 >>> systemz - SystemZ >>> thumb - Thumb >>> thumbeb - Thumb (big endian) >>> x86 - 32-bit X86: Pentium-Pro and above >>> x86-64 - 64-bit X86: EM64T and AMD64 >>> xcore - XCore >>> >>> Kind regards, >>> - Stan >>> >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> llvm-dev at lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>> >>> >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> > > > _______________________________________________ > LLVM Developers mailing listllvm-dev at lists.llvm.orghttp://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160523/a943c473/attachment-0001.html>
Renato Golin via llvm-dev
2016-May-23 14:32 UTC
[llvm-dev] Is the CppBackend still supported?
On 23 May 2016 at 15:01, James Y Knight via llvm-dev <llvm-dev at lists.llvm.org> wrote:> There was, a long time ago, a backend that actually targetted C. It was > deleted in 2012 at r153307.It was largely unmaintained, and its tests were failing all the time when we targeted other architectures. I think it'd be cool to have a back-end targeting C/C++, but it'd have to be reasonably self-contained and updated to continue in tree. cheers, --renato
Stefan Gränitz via llvm-dev
2016-May-24 19:44 UTC
[llvm-dev] Is the CppBackend still supported?
Am 23.05.2016 um 16:32 schrieb Renato Golin:> On 23 May 2016 at 15:01, James Y Knight via llvm-dev > <llvm-dev at lists.llvm.org> wrote: >> There was, a long time ago, a backend that actually targetted C. It was >> deleted in 2012 at r153307.Thanks for the pointer!> I think it'd be cool to have a back-end targeting C/C++I stumbled over it when evaluating code generation approaches. Basically I'm looking for more generic alternatives to printf and/or static templates. Doing that based on clang's AST would be great, especially as there's some tooling around already.> but it'd have > to be reasonably self-contained and updated to continue in tree.Yap that's certainly a lot of work and it may not be realistic for me to achieve that at all. At least I want to gain some insight.