llc -march=cpp fails when using some STL stuff?

Hi,
I’m really a novice in experimenting with LLVM, so I might be doing something plain wrong here, but I can’t understand why this snippet

// File ticket.cpp
struct ticket
{
int field1;
char field2[10];
} _ticket;

goes fine through the sequence

  1. clang++ -O0 -S -emit-llvm ticket.cpp (which generates ticket.s)
  2. llc -march=cpp ticket.s

So that I end up with a ticket.s.cpp that I can inspect to learn more about how to define structures in LLVM IR, while the following:

//File ticket_stl.cpp
#include

struct ticket_stl
{
int field1;
std::vector field2;
} _ticket_stl;

Fails during step 2) (llc -march=cpp ticket_stl.s) with a laconic:

LLVM ERROR: Invalid instruction

Everything works if I instead perform step 1) with -O1.
For what it’s worth, the online compiler at http://llvm.org/demo/index.cgi, targeting “LLVM C++ API code”, exhibits the same behavior (i.e. it fails at optimization level “None”).

Is this known/expected behavior?

Andrea.

Hi Andrea,

Fails during step 2) (llc -march=cpp ticket_stl.s) with a laconic:

LLVM ERROR: Invalid instruction

sounds like a bug. I think this came up on the mailing list a little while
ago. Anyway, I suggest to open a bug report.

Ciao, Duncan.