Status of constexpr

Hey,

Is anyone out there currently working on constexpr? More features, including default constructors, are getting implemented that affect constexpr in some way, and some level of constexpr support is needed to properly compile newer libstdc++.

If you're out there, can you please stand up?

Thanks,
Sean

Hi Sean,

I have been working on a constexpr branch recently, but I have been
really bad about getting my changes into trunk (mainly due to a lack
of time). My branch is available here:

http://git.pcc.me.uk/?p=~peter/clang.git;a=shortlog;h=refs/heads/constexpr

The main problem is that some of the changes cause test regressions,
but there are some earlier changes (e.g. a literal type test) that we
should be able to commit. Once I find some time I'll try to commit
some of this.

Thanks,

I'd like to take a look at it except that it's got some weird build problems, possibly due to out of date. You also have include/clang/AST/StmtVisitor.inc in the repository, which is a no-no.

Looking at the history, I also see that you have interspersed your SVN history with your own rather than rebasing it. I'm not quite sure how you managed that but it makes it almost impossible to deal with from a git perspective - in order to do useful work on it, it would be necessary to extract all the patches you've made and re-apply them on a clean tree.

Sean

Hi Sean,

I have been working on a constexpr branch recently, but I have been
really bad about getting my changes into trunk (mainly due to a lack
of time). My branch is available here:

http://git.pcc.me.uk/?p=~peter/clang.git;a=shortlog;h=refs/heads/constexpr

The main problem is that some of the changes cause test regressions,
but there are some earlier changes (e.g. a literal type test) that we
should be able to commit. Once I find some time I'll try to commit
some of this.

Thanks,

I'd like to take a look at it except that it's got some weird build
problems, possibly due to out of date.

Try r128978 of LLVM, that was the latest version of clang that I
merged from.

You also have
include/clang/AST/StmtVisitor.inc in the repository, which is a no-no.

StmtVisitor.inc isn't a generated file, if that's what you're thinking.
StmtVisitor.inc contains the common implementation of StmtVisitor and
ConstStmtVisitor which I #include twice to define those two classes.
I guess the other way to do it would be to use a base class with
a template template parameter (e.g. below) which may be slightly
less ugly.

Try r128978 of LLVM, that was the latest version of clang that I
merged from.

Ok, thanks.

You also have
include/clang/AST/StmtVisitor.inc in the repository, which is a no-no.

StmtVisitor.inc isn't a generated file, if that's what you're thinking.
StmtVisitor.inc contains the common implementation of StmtVisitor and
ConstStmtVisitor which I #include twice to define those two classes.
I guess the other way to do it would be to use a base class with
a template template parameter (e.g. below) which may be slightly
less ugly.

Ah, ok. You should probably pick a different name; .inc breaks the CMake build as CMake thinks that it's a generated file.

That is just a git merge from SVN trunk every so often. Perhaps gitk
will show the commit graph more clearly.

Well, it works for me in practice. I just commit and merge when
necessary. If I wanted to commit something from that branch to SVN
trunk then I use git cherry-pick and rebase if necessary. This method
saves me from having to mess around with rewriting history until I
commit to trunk.

Thanks,

I suppose.

Sean