http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50459

             Bug #: 50459
           Summary: alignof doesn't work on plain old constant, works with
                    expressions containing it
    Classification: Unclassified
           Product: gcc
           Version: 4.6.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: b.r.longb...@gmail.com


For certain types of constant, the exact form:

__attribute__((aligned(align)))

fails, even though 'align' can be used in other constant expressions.

Types of constants that fail:
// C
enum { align = 8 };
// C++
const int align = 8;
class Foo { static const int align = 8; };
// and lots of nasty template stuff

Anything that forms an expression succeeds, even if it's just (align).
sizeof() or a C++11 constexpr function also work.

Bad versions: 4.2.4, 4.3.6, 4.4.6, 4.5.3, 4.6.0, 4.6.1, and a couple of recent
builds from git.

Minimal testcase:
enum { align = 8 };
int succeeds __attribute__((aligned((align)) ));
int fails __attribute__((aligned(align) ));

Reply via email to