nickdesaulniers added a comment.

Testing Diff 342071 on the mainline Linux kernel, just building x86_64 
defconfig triggers 19 instances of this warning; all look legit. ;)

In D100581#2730708 <https://reviews.llvm.org/D100581#2730708>, @dblaikie wrote:

> In D100581#2730557 <https://reviews.llvm.org/D100581#2730557>, 
> @nickdesaulniers wrote:
>
>> I see lots of instances from the kernel that look like this when reduced:
>>
>>   $ cat foo.c
>>   int page;
>>   int put_page_testzero(int);
>>   void foo (void) {
>>     int zeroed;
>>     zeroed = put_page_testzero(page);
>>     ((void)(sizeof(( long)(!zeroed))));
>>   }
>>   $ clang -c -Wall foo.c
>>   foo.c:4:7: warning: variable 'zeroed' set but not used 
>> [-Wunused-but-set-variable]
>>     int zeroed;
>>         ^
>
> Any idea what the purpose of this code is/why it's not a reasonable thing to 
> warn on?

include/linux/build_bug.h:

  25 /*                                                                         
                                                                                
                 
  26  * BUILD_BUG_ON_INVALID() permits the compiler to check the validity of 
the                                                                             
                    
  27  * expression but avoids the generation of any code, even if that 
expression                                                                      
                          
  28  * has side-effects.                                                       
                                                                                
                 
  29  */                                                                        
                                                                                
                 
  30 #define BUILD_BUG_ON_INVALID(e) ((void)(sizeof((__force long)(e))))

include/linux/mmdebug.h:

  57 #define VM_BUG_ON(cond) BUILD_BUG_ON_INVALID(cond)                         
                                                                                
                 

mm/internal.h:

  410 static inline unsigned long                                               
                                                                                
                  
  411 vma_address(struct page *page, struct vm_area_struct *vma)                
                                                                                
                  
  412 {                                                                         
                                                                                
                  
  413   unsigned long start, end;                                               
                                                                                
                  
  414                                                                           
                                                                                
                  
  415   start = __vma_address(page, vma);                                       
                                                                                
                  
  416   end = start + thp_size(page) - PAGE_SIZE;                               
                                                                                
                  
  417                                                                           
                                                                                
                  
  418   /* page should be within @vma mapping range */                          
                                                                                
                  
  419   VM_BUG_ON_VMA(end < vma->vm_start || start >= vma->vm_end, vma);

The warning (in previous revisions was triggering on `end` in `vma_address`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100581/new/

https://reviews.llvm.org/D100581

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to