oren_ben_simhon marked an inline comment as done. oren_ben_simhon added inline comments.
================ Comment at: test/Sema/attr-nocf_check.c:18-20 + FuncPointerWithNoCfCheck fNoCfCheck = f; // no-warning + (*fNoCfCheck)(); // no-warning + f = fNoCfCheck; // no-warning ---------------- aaron.ballman wrote: > oren_ben_simhon wrote: > > aaron.ballman wrote: > > > oren_ben_simhon wrote: > > > > aaron.ballman wrote: > > > > > These are an error in GCC and I think we should match that behavior. > > > > > https://godbolt.org/g/r3pf4X > > > > I will create a warning however in LLVM we don't create an error upon > > > > incompatible pointer due to function attribute types. > > > It should be an error -- Clang does error on this sort of thing when > > > appropriate (which I believe it is, here). For instance, calling > > > convention attributes do this: https://godbolt.org/g/mkTGLg > > In Clang there is Sema::IncompatiblePointer in case to pointers are not > > compatible. This flag emits warning message. In the time i check for > > pointer incompatibility (checkPointerTypesForAssignment()), i don;t have a > > handle to the attributes. Any suggestion how to implement the exception for > > nocf_check attribute? > I believe this is handled in `ASTContext::mergeFunctionType()`. See: > ``` > // Compatible functions must have compatible calling conventions > if (lbaseInfo.getCC() != rbaseInfo.getCC()) > return QualType(); > ``` > Somewhere around there is likely where you should be. I already added there getnocfcheck. After double checking, I see that nocf_check behavior is identical to other function attributes. For some reason in the clang tests they give warning but in godbolt it gives an error. I am not sure what is the difference between the flags in godbolt and in my test but this is what causing the warning/error message difference. So basically my behavior is identical to other function type attributes (e.g. no_caller_saved_registers). I believe it is also identical to GCC but i can't prove it because i don't know the flags that godbolt is using. Repository: rL LLVM https://reviews.llvm.org/D41880 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits