[3.7 Release] Let's fix the release notes!

Dear everyone,

The in-progress release notes for 3.7 [1,2] make it look like we
didn't do very much over the past six months. Obviously that's not the
case at all, so let's get them in shape!

If you've been thinking "I should probably add this to the release
notes at some point", now is the time :slight_smile:

I have a list below of changes that might be worth mentioning. I
probably missed lots of stuff; please let me know.

To update the notes, please commit directly to the 3.7 branch. If you
don't want to do that, just email me some text, and I'll happily land
it for you.

If you're uncertain whether your work is in the release or not, 3.7
covers commits r225992-r242221.

Other updates to the docs are also very welcome.

Thanks,
Hans

(You're bcc'd on this email if you're mentioned in this list.)

Lang: can you write something about the new ORC JIT interface?

Reid: how far did SEH support get in 3.7? Is this something we should mention?

I'll add something about the switch lowering changes.

Chandler: can you write something about the TTI changes? Just a small
blurb and pointer to
http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-February/081589.html
would probably help a lot.

Chandler: were there vector lowering changes in this release, or was
that all in 3.6?

Kostya: I think the sanitizer coverage is new in 3.7? And the fuzzer lib?

Diego: I think you added some new Clang flags like fprofile-generate.
These would be good to mention in the "new flags section" in Clang's
release notes. Is there any other PGO work that should be mentioned?

Alexei: maybe add something about the BPF backend.

Saleem: should we mention something about libunwind moving to a
separate repository?

Zach: should we mention llvm-pdbdump?

David: did you get around to writing something about the opaque
pointer type conversion? People will certainly run into this.

Duncan: I haven't followed the changes around debug info and metadata.
Is there something here that should be in the release notes?

Ulrich: would you like to mention something about SystemZ support?

Mehdi: the notes do say "DataLayout is no longer optional", but maybe
we could flesh this text out a little to make it easier for users?

Eric: do you want to add anything for out-of-tree targets after your
TargetMachine changes, etc? I stumbled across
http://article.gmane.org/gmane.comp.compilers.llvm.devel/83858, for
example

Hal: the PowePC notes have a note saying "QPX - Hal, please say a few words" :slight_smile:

Alex: I think MIR is new for 3.7. Do you want to add something to the notes?

Quentin: How far did your shrinkwrap work get in 3.7? If it mostly
landed after the branch, maybe add it to the 3.8 (trunk) notes.

Alexey: Would you or someone of the OpenMP developers be willing to
add a section on OpenMP to Clang's UsersManual.rst? It would be nice
if the note in the release notes could point to this.

Peter: I think the SafeStack patch landed in 3.7. Should we mention
this in the notes?

[1]. http://llvm.org/pre-releases/3.7.0/rc2/docs/ReleaseNotes.html
[2]. http://llvm.org/pre-releases/3.7.0/rc2/docs/clang/ReleaseNotes.html

Dear everyone,

The in-progress release notes for 3.7 [1,2] make it look like we
didn't do very much over the past six months. Obviously that's not the
case at all, so let's get them in shape!

If you've been thinking "I should probably add this to the release
notes at some point", now is the time :slight_smile:

I have a list below of changes that might be worth mentioning. I
probably missed lots of stuff; please let me know.

To update the notes, please commit directly to the 3.7 branch. If you
don't want to do that, just email me some text, and I'll happily land
it for you.

If you're uncertain whether your work is in the release or not, 3.7
covers commits r225992-r242221.

Other updates to the docs are also very welcome.

Thanks,
Hans

(You're bcc'd on this email if you're mentioned in this list.)

Lang: can you write something about the new ORC JIT interface?

Reid: how far did SEH support get in 3.7? Is this something we should
mention?

I'll add something about the switch lowering changes.

Chandler: can you write something about the TTI changes? Just a small
blurb and pointer to
http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-February/081589.html
would probably help a lot.

Chandler: were there vector lowering changes in this release, or was
that all in 3.6?

Kostya: I think the sanitizer coverage is new in 3.7? And the fuzzer lib?

Diego: I think you added some new Clang flags like fprofile-generate.
These would be good to mention in the "new flags section" in Clang's
release notes. Is there any other PGO work that should be mentioned?

Alexei: maybe add something about the BPF backend.

Saleem: should we mention something about libunwind moving to a
separate repository?

Zach: should we mention llvm-pdbdump?

David: did you get around to writing something about the opaque
pointer type conversion? People will certainly run into this.

Yeah, got halfway through that in a 3.7 checkout... I'll get to it.
Throwing things at me may help. Sorry for the delay.

Hi,

I haven't received approval to merge the ubsan fixes from the code-owner so I've had to drop the claim that it's supported from the release notes. If we do merge the fix (r243384) and the code-owner requested correction (r244646) at the last minute, we'll need to revert the release notes change (r245037) too. FWIW, I've successfully tested both using a patched rc2.

I've just noticed a likely reason why I haven't had a response, my sent mail includes Richard and Hans but the mail I received back from the list doesn't. It seems they disappear when they come after llvm-commits in the CC list *shrug*. I'm not sure what has happened there but I've mentioned it to Tanya.

I'm not sure exactly where the changes would go, but here's a list of
notable changes on SystemZ for the LLVM / clang Release Notes:

LLVM:

LLVM no longer attempts to automatically detect the
current host CPU when invoked natively.

LLVM now supports all thread-local storage models on SystemZ.
(Previous releases would support only the local-exec TLS model.)

LLVM now uses the POPCNT instruction on z196 and above.

LLVM now uses the RISBGN instruction on zEC12 and above.

LLVN now supports the transactional-execuction facility
on zEC12 and above.

LLVM now supports the z13 processor and its vector facility.

clang:

Clang will now always default to the z10 processor when compiling
without any -march= option. Previous releases used to automatically
detect the current host CPU when compiling natively. If you wish to
still have clang detect the current host CPU, you now need to use the
-march=native option.

Clang now provides the <s390intrin.h> header file.

Clang now supports the transactional-execution facility and
provides associated builtins and the <htmintrin.h> and
<htmxlintrin.h> header files. Support is enabled by default
on zEC12 and above, and can additionally be enabled or disabled
via the -mhtm / -mno-htm command line options.

Clang now supports the vector facility. This includes a
change in the ABI to pass arguments and return values of
vector types in vector registers, as well as a change in
the default alignment of vector types. Support is enabled
by default on z13 and above, and can additionally be enabled
or disabled via the -mvx / -mno-vx command line options.

Clang now supports the System z vector language extension,
providing a "vector" keyword to define vector types, and a
set of builtins defined in the <vecintrin.h> header file.
This can be enabled via the -fzvector command line option.
For compatibility with GCC, Clang also supports the
-mzvector option as an alias.

Several cases of ABI incompatibility with GCC have been fixed.

Bye,
Ulrich

Clang doesn't assume libgcc_s and libgcc_eh when you choose
--rtlib=compiler-rt on any system. Until we can all agree in the
proper way of handling this depending on the architecture / OS, users
will have to include them (or libc++abi / libunwind) manually.

Oh, wait. That was after the branch. Ignore me.

Diego: I think you added some new Clang flags like fprofile-generate.

These would be good to mention in the "new flags section" in Clang's
release notes. Is there any other PGO work that should be mentioned?

Added some notes on the flag changes I made recently. r245061.

Diego.

[off-list reply]

Where's the right place to talk about additions to clang-tidy?

Many thanks!

LLVM:

LLVM no longer attempts to automatically detect the
current host CPU when invoked natively.

LLVM now supports all thread-local storage models on SystemZ.
(Previous releases would support only the local-exec TLS model.)

LLVM now uses the POPCNT instruction on z196 and above.

LLVM now uses the RISBGN instruction on zEC12 and above.

LLVN now supports the transactional-execuction facility
on zEC12 and above.

LLVM now supports the z13 processor and its vector facility.

http://llvm.org/viewvc/llvm-project?rev=245102&view=rev

clang:

Clang will now always default to the z10 processor when compiling
without any -march= option. Previous releases used to automatically
detect the current host CPU when compiling natively. If you wish to
still have clang detect the current host CPU, you now need to use the
-march=native option.

Clang now provides the <s390intrin.h> header file.

Clang now supports the transactional-execution facility and
provides associated builtins and the <htmintrin.h> and
<htmxlintrin.h> header files. Support is enabled by default
on zEC12 and above, and can additionally be enabled or disabled
via the -mhtm / -mno-htm command line options.

Clang now supports the vector facility. This includes a
change in the ABI to pass arguments and return values of
vector types in vector registers, as well as a change in
the default alignment of vector types. Support is enabled
by default on z13 and above, and can additionally be enabled
or disabled via the -mvx / -mno-vx command line options.

Clang now supports the System z vector language extension,
providing a "vector" keyword to define vector types, and a
set of builtins defined in the <vecintrin.h> header file.
This can be enabled via the -fzvector command line option.
For compatibility with GCC, Clang also supports the
-mzvector option as an alias.

Several cases of ABI incompatibility with GCC have been fixed.

http://llvm.org/viewvc/llvm-project?rev=245104&view=rev

Great, thanks!

- Hans

Dear everyone,

The in-progress release notes for 3.7 [1,2] make it look like we
didn't do very much over the past six months. Obviously that's not the
case at all, so let's get them in shape!

If you've been thinking "I should probably add this to the release
notes at some point", now is the time :slight_smile:

I have a list below of changes that might be worth mentioning. I
probably missed lots of stuff; please let me know.

To update the notes, please commit directly to the 3.7 branch. If you
don't want to do that, just email me some text, and I'll happily land
it for you.

If you're uncertain whether your work is in the release or not, 3.7
covers commits r225992-r242221.

Other updates to the docs are also very welcome.

Thanks,
Hans

(You're bcc'd on this email if you're mentioned in this list.)

Lang: can you write something about the new ORC JIT interface?

Reid: how far did SEH support get in 3.7? Is this something we should
mention?

I'll add something about the switch lowering changes.

Chandler: can you write something about the TTI changes? Just a small
blurb and pointer to
http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-February/081589.html
would probably help a lot.

Chandler: were there vector lowering changes in this release, or was
that all in 3.6?

Kostya: I think the sanitizer coverage is new in 3.7? And the fuzzer lib?

Diego: I think you added some new Clang flags like fprofile-generate.
These would be good to mention in the "new flags section" in Clang's
release notes. Is there any other PGO work that should be mentioned?

Alexei: maybe add something about the BPF backend.

Saleem: should we mention something about libunwind moving to a
separate repository?

Zach: should we mention llvm-pdbdump?

David: did you get around to writing something about the opaque
pointer type conversion? People will certainly run into this.

Duncan: I haven't followed the changes around debug info and metadata.
Is there something here that should be in the release notes?

Ulrich: would you like to mention something about SystemZ support?

Mehdi: the notes do say "DataLayout is no longer optional", but maybe
we could flesh this text out a little to make it easier for users?

Eric: do you want to add anything for out-of-tree targets after your
TargetMachine changes, etc? I stumbled across
http://article.gmane.org/gmane.comp.compilers.llvm.devel/83858, for
example

Hal: the PowePC notes have a note saying "QPX - Hal, please say a few
words" :slight_smile:

Alex: I think MIR is new for 3.7. Do you want to add something to the
notes?

I think that it would be better if we leave out MIR from the 3.7 release
notes -
the MIR format in the 3.7 branch wasn't ready for use yet and the MIR
syntax used in trunk is different as well.

Thanks,
Alex

That's fine. I wasn't sure how far MIR had gotten before the branch.
Thanks for the update.

Cheers,
Hans

These have been merged and the release notes change reverted. Thanks

Thanks for putting this in!

Just one minor nit: The architecture really should not be
referred to as "System/Z" (with a slash). Either call it
"SystemZ" (LLVM back-end name), or "System z" (IBM machine
name).

Thanks,
Ulrich

Oops. Fixed in r245242 and r245243.

Cheers,
Hans

This look good now.

Thanks again,
Ulrich

Wrote some up (245534) - happy to iterate on them if anyone has ideas

Final release notes nag:

Eric: do you want to add anything for out-of-tree targets after your
TargetMachine changes, etc? I stumbled across
http://article.gmane.org/gmane.comp.compilers.llvm.devel/83858, for
example

Thanks for the reminder. I did something small in r246013.

-eric

Got something in about SEH in clang.