Commit 21effa23 authored by Jim Meyering's avatar Jim Meyering Committed by Sara Golemon

folly: attribute-aligned-arg must now be constant (not enum)

Summary:
With gcc-4.8.[01], the argument to __attribute__((__aligned__(...)))
must be a literal;  using an enum member evokes this:

./folly/MPMCQueue.h:341:63: error: requested alignment is not an \
integer constant
size_t capacity_ FOLLY_ON_NEXT_CACHE_LINE;

Changing the enum member to this made no difference:

static constexpr size_t kFalseSharingRange = 64;

Test Plan: compile tao and run test suite

Reviewed By: andrei.alexandrescu@fb.com

FB internal diff: D926221

@override-unit-failures
parent 6d5d48ac
......@@ -335,7 +335,13 @@ class MPMCQueue : boost::noncopyable {
(kFalseSharingRange - 1) / sizeof(detail::SingleElementQueue<T,Atom>)
};
#define FOLLY_ON_NEXT_CACHE_LINE __attribute__((aligned(kFalseSharingRange)))
static_assert(kFalseSharingRange == 64,
"FOLLY_ON_NEXT_CACHE_LINE must track kFalseSharingRange");
// This literal "64' should be kFalseSharingRange,
// but gcc-4.8.0 and 4.8.1 reject it.
// FIXME: s/64/kFalseSharingRange/ if that ever changes.
#define FOLLY_ON_NEXT_CACHE_LINE __attribute__((aligned(64)))
/// The maximum number of items in the queue at once
size_t capacity_ FOLLY_ON_NEXT_CACHE_LINE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment