multiple return value assembler regression?

It appears the syntax for returning multiple values has changed since 2.9.
Previous to that:
  ret i32 %a, i32 %b
worked. The new syntax is something like:
  ret { i32, i32 }{i32 %a, i32 %b}
but this yields an error:
mrv-bug.ll:5:24: error: invalid use of function-local name
  ret { i32, i32 }{i32 %a, i32 %b}
                        ^
If %a and %b are replaced by constants, things work.

Am I doing something wrong, or should I file a bug report?

You need to use insertvalue to build a struct with non-constant values..

-Eli

This is obsolete and deprecated syntax that is dropped in "llvm 3.0" (and thus on mainline right now). If you run that through llvm-as|llvm-dis from llvm 2.9, you'll see the preferred syntax.

-Chris

OK, I guess I missed the announcement that it was obsolete. The new mechanism is quite wordy when compared with the old. Sigh.

Are there any other languages other than mine (Google Code Archive - Long-term storage for Google Code Project Hosting.) which return multiple scalars that have LLVM frontends?

bagel

This is obsolete and deprecated syntax that is dropped in "llvm 3.0" (and thus on mainline right now). If you run that through llvm-as|llvm-dis from llvm 2.9, you'll see the preferred syntax.

-Chris

OK, I guess I missed the announcement that it was obsolete.

It will eventually be in the llvm 3.0 release notes.

The new mechanism is quite wordy when compared with the old. Sigh.

Are there any other languages other than mine (Google Code Archive - Long-term storage for Google Code Project Hosting.) which return multiple scalars that have LLVM frontends?

Most LLVM frontends don't generate LLVM IR as text files. They typically use the C or C++ APIs (or wrappers thereof) so they wouldn't have noticed the syntax change.

-Chris

I am appreciative that you keep the text representation, since my frontend is not written in C or C++ the API does me no good. I'll deal with the changes. I just hope that the backend continues to deal with frontends that are not C, C++, or Object-C.

thank you,
bagel

Bagel wrote:

I am appreciative that you keep the text representation, since my frontend

is not

written in C or C++ the API does me no good. I'll deal with the changes.
I just hope that the backend continues to deal with frontends that are not

C,

C++, or Object-C.

FWIW, HLVM is written in OCaml (not C, C++ or Objective-C) and hasn't
suffered from any such problems (and it returns multiple values). I highly
recommend using the C API.

Cheers,
Jon.