[PATCH] D120327: compiler-rt: Add udivmodei5 to builtins and add bitint library
    Andrew Ng via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Apr  8 08:03:55 PDT 2022
    
    
  
andrewng added a comment.
@mgehre-amd this has broken our Linux GCC And Windows MSVC builds. Both complain that:
  .../compiler-rt/lib/builtins/udivmodei5.c:27:32: error: initializer element is not constant
   static const su_int WORD_MSB = (su_int)1 << (WORD_SIZE_IN_BITS - 1);
Also `__attribute__((weak))` is not supported for MSVC.
The following patch fixes the Windows MSVC build:
  diff --git a/compiler-rt/lib/builtins/udivmodei5.c b/compiler-rt/lib/builtins/udivmodei5.c
  index d1cc62c19135..5a31b9c1e685 100644
  --- a/compiler-rt/lib/builtins/udivmodei5.c
  +++ b/compiler-rt/lib/builtins/udivmodei5.c
  @@ -15,7 +15,7 @@
   // When this is built into the bitint library, provide symbols with
   // weak linkage to allow gracefully upgrading once libgcc contains those
   // symbols.
  -#ifdef IS_BITINT_LIBRARY
  +#if defined(IS_BITINT_LIBRARY) && !defined(_WIN32)
   #define WEAK_IF_BITINT_LIBRARY __attribute__((weak))
   #else
   #define WEAK_IF_BITINT_LIBRARY
  @@ -24,7 +24,7 @@
   static const int WORD_SIZE_IN_BITS = sizeof(su_int) * CHAR_BIT;
  
   /// A mask with the most significant bit set.
  -static const su_int WORD_MSB = (su_int)1 << (WORD_SIZE_IN_BITS - 1);
  +static const su_int WORD_MSB = (su_int)1 << ((sizeof(su_int) * CHAR_BIT) - 1);
  
   // Define an index such that a[WORD_IDX(0)] is the least significant word
   // and a[WORD_IDX(words-1)] is the most significant word.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D120327/new/
https://reviews.llvm.org/D120327
    
    
More information about the llvm-commits
mailing list