Skip to content
  • George Burgess IV's avatar
    Add the diagnose_if attribute to clang. · 5a6ff0d5
    George Burgess IV authored
    `diagnose_if` can be used to have clang emit either warnings or errors
    for function calls that meet user-specified conditions. For example:
    
    ```
    constexpr int foo(int a)
      __attribute__((diagnose_if(a > 10, "configurations with a > 10 are "
                                          "expensive.", "warning")));
    
    int f1 = foo(9);
    int f2 = foo(10); // warning: configuration with a > 10 are expensive.
    int f3 = foo(f2);
    ```
    
    It currently only emits diagnostics in cases where the condition is
    guaranteed to always be true. So, the following code will emit no
    warnings:
    
    ```
    constexpr int bar(int a) {
      foo(a);
      return 0;
    }
    
    constexpr int i = bar(10);
    ```
    
    We hope to support optionally emitting diagnostics for cases like that
    (and emitting runtime checks) in the future.
    
    Release notes will appear shortly. :)
    
    Differential Revision: https://reviews.llvm.org/D27424
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291418 91177308-0d34-0410-b5e6-96231b3b80d8
    5a6ff0d5