Anastasia added inline comments.
================ Comment at: lib/Parse/ParseDecl.cpp:6162 + } + } + ---------------- rjmccall wrote: > This is enforcing a restriction that users write `const __private`, which > seems unreasonable. It looks like `ParseTypeQualifierList` takes a flag > saying not to parse attributes; try adding a new option to that enum allowing > address-space attributes. > > Collecting the attributes on the type-qualifiers `DeclSpec` rather than > adding them as function attributes seems correct. Do you mean `ParseTypeQualifierListOpt`? That already parses the address spaces unconditionally. The problem is however that we are using local `DeclSpec` - `DS` variable here during the function qualifiers parsing because the `DeclSpec` member of the `Declarator` corresponds to the return type as far as I understand it. Therefore I am propagating missing address space attributes from the local `DS` variable into `FnAttrs` to be used in the function type info. With current patch both of the following two forms: struct C { void foo() __local const; }; and struct C { void foo() const __local; }; would be parsed correctly generating identical IR declare void @_ZNU3AS3K1C3fooEv(%struct.C addrspace(3)*) CHANGES SINCE LAST ACTION https://reviews.llvm.org/D55850/new/ https://reviews.llvm.org/D55850 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits