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

Reply via email to