[MC] Make bundle alignment mode setting idempotent and support nested bundles
authorDerek Schuff <dschuff@google.com>
Wed, 15 Oct 2014 17:10:04 +0000 (17:10 +0000)
committerDerek Schuff <dschuff@google.com>
Wed, 15 Oct 2014 17:10:04 +0000 (17:10 +0000)
commit279b5504a3441b2d2d8330af2b02b99ebe74d38a
tree767da686bc09baaa9a9adfbdcff5c0693013bb6f
parentffc65d2bfe5b86ec858f41685710cfac08feb35f
[MC] Make bundle alignment mode setting idempotent and support nested bundles

Summary:
Currently an error is thrown if bundle alignment mode is set more than once
per module (either via the API or the .bundle_align_mode directive). This
change allows setting it multiple times as long as the alignment doesn't
change.

Also nested bundle_lock groups are currently not allowed. This change allows
them, with the effect that the group stays open until all nests are exited,
and if any of the bundle_lock directives has the align_to_end flag, the
group becomes align_to_end.

These changes make the bundle aligment simpler to use in the compiler, and
also better match the corresponding support in GNU as.

Reviewers: jvoung, eliben

Differential Revision: http://reviews.llvm.org/D5801

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219811 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/MC/MCAssembler.h
lib/MC/MCAssembler.cpp
lib/MC/MCELFStreamer.cpp
test/MC/X86/AlignedBundling/nesting.s [new file with mode: 0644]