aaron.ballman added inline comments. ================ Comment at: include/clang/Basic/Attr.td:1657 @@ +1656,3 @@ + TargetSpecificAttr<TargetAnyX86> { + let Spellings = [GNU<"no_caller_saved_registers">]; + let Subjects = SubjectList<[FunctionLike], WarnDiag, "ExpectedFunction">; ---------------- Any particular reason this isn't (also) a C++-style attribute under the clang namespace?
================ Comment at: include/clang/Basic/AttrDocs.td:2177 @@ +2176,3 @@ +Use this attribute to indicate that the specified function has no +caller-saved registers. That is, all registers are callee-saved. +The compiler generates proper function entry and exit sequences to ---------------- How does this interact with calling convention attributes? For instance, if I have a function that is explicitly marked cdecl and has this attribute, what is the behavior for EAX, ECX, and EDX? Also, why is this an attribute rather than a calling convention? I'm wondering how this works through function pointers, for instance (whether it is intended to work or not). ================ Comment at: test/SemaCXX/attr-x86-no_caller_saved_registers.cpp:15 @@ +14,3 @@ +__attribute__((no_caller_saved_registers)) void foo(int *) {} + +int main(int argc, char **argv) { ---------------- Should also have a sema test that this attribute accepts no arguments. http://reviews.llvm.org/D22045 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits