[llvm-branch-commits] [clang] release/18.x: [clang][CodeGen] Keep processing the rest of AST after encountering unsupported MC/DC expressions (#82464) (PR #82866)

2024-02-24 Thread Alan Phipps via llvm-branch-commits

https://github.com/evodius96 approved this pull request.

This should also be on 18.x

https://github.com/llvm/llvm-project/pull/82866
___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [llvm] 12573c7 - Revert "[llvm-ar] Use COFF archive format for COFF targets. (#82642)"

2024-02-24 Thread via llvm-branch-commits

Author: Jacek Caban
Date: 2024-02-24T17:41:21+01:00
New Revision: 12573c717e2e4b7c8cafe008b8fff8922295fe4a

URL: 
https://github.com/llvm/llvm-project/commit/12573c717e2e4b7c8cafe008b8fff8922295fe4a
DIFF: 
https://github.com/llvm/llvm-project/commit/12573c717e2e4b7c8cafe008b8fff8922295fe4a.diff

LOG: Revert "[llvm-ar] Use COFF archive format for COFF targets. (#82642)"

This reverts commit cf9201cfdbc10f4606fc4ca22bf1ccaf5ee841b3.

Added: 


Modified: 
llvm/include/llvm/Object/Archive.h
llvm/lib/Object/Archive.cpp
llvm/lib/Object/ArchiveWriter.cpp
llvm/tools/llvm-ar/llvm-ar.cpp

Removed: 
llvm/test/tools/llvm-ar/coff-symtab.test



diff  --git a/llvm/include/llvm/Object/Archive.h 
b/llvm/include/llvm/Object/Archive.h
index 66f07939b11050..3dd99a46507a24 100644
--- a/llvm/include/llvm/Object/Archive.h
+++ b/llvm/include/llvm/Object/Archive.h
@@ -339,7 +339,6 @@ class Archive : public Binary {
   Kind kind() const { return (Kind)Format; }
   bool isThin() const { return IsThin; }
   static object::Archive::Kind getDefaultKindForHost();
-  static object::Archive::Kind getDefaultKindForTriple(Triple &T);
 
   child_iterator child_begin(Error &Err, bool SkipInternal = true) const;
   child_iterator child_end() const;

diff  --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp
index d3fdcd9ee88111..e447e5b23316f1 100644
--- a/llvm/lib/Object/Archive.cpp
+++ b/llvm/lib/Object/Archive.cpp
@@ -969,19 +969,12 @@ Archive::Archive(MemoryBufferRef Source, Error &Err)
   Err = Error::success();
 }
 
-object::Archive::Kind Archive::getDefaultKindForTriple(Triple &T) {
-  if (T.isOSDarwin())
-return object::Archive::K_DARWIN;
-  if (T.isOSAIX())
-return object::Archive::K_AIXBIG;
-  if (T.isOSWindows())
-return object::Archive::K_COFF;
-  return object::Archive::K_GNU;
-}
-
 object::Archive::Kind Archive::getDefaultKindForHost() {
   Triple HostTriple(sys::getProcessTriple());
-  return getDefaultKindForTriple(HostTriple);
+  return HostTriple.isOSDarwin()
+ ? object::Archive::K_DARWIN
+ : (HostTriple.isOSAIX() ? object::Archive::K_AIXBIG
+ : object::Archive::K_GNU);
 }
 
 Archive::child_iterator Archive::child_begin(Error &Err,

diff  --git a/llvm/lib/Object/ArchiveWriter.cpp 
b/llvm/lib/Object/ArchiveWriter.cpp
index 02f72521c8b544..155926a8c5949d 100644
--- a/llvm/lib/Object/ArchiveWriter.cpp
+++ b/llvm/lib/Object/ArchiveWriter.cpp
@@ -62,16 +62,12 @@ object::Archive::Kind 
NewArchiveMember::detectKindFromObject() const {
   Expected> OptionalObject =
   object::ObjectFile::createObjectFile(MemBufferRef);
 
-  if (OptionalObject) {
-if (isa(**OptionalObject))
-  return object::Archive::K_DARWIN;
-if (isa(**OptionalObject))
-  return object::Archive::K_AIXBIG;
-if (isa(**OptionalObject) ||
-isa(**OptionalObject))
-  return object::Archive::K_COFF;
-return object::Archive::K_GNU;
-  }
+  if (OptionalObject)
+return isa(**OptionalObject)
+   ? object::Archive::K_DARWIN
+   : (isa(**OptionalObject)
+  ? object::Archive::K_AIXBIG
+  : object::Archive::K_GNU);
 
   // Squelch the error in case we had a non-object file.
   consumeError(OptionalObject.takeError());
@@ -84,7 +80,10 @@ object::Archive::Kind 
NewArchiveMember::detectKindFromObject() const {
 MemBufferRef, file_magic::bitcode, &Context)) {
   auto &IRObject = cast(**ObjOrErr);
   auto TargetTriple = Triple(IRObject.getTargetTriple());
-  return object::Archive::getDefaultKindForTriple(TargetTriple);
+  return TargetTriple.isOSDarwin()
+ ? object::Archive::K_DARWIN
+ : (TargetTriple.isOSAIX() ? object::Archive::K_AIXBIG
+   : object::Archive::K_GNU);
 } else {
   // Squelch the error in case this was not a SymbolicFile.
   consumeError(ObjOrErr.takeError());

diff  --git a/llvm/test/tools/llvm-ar/coff-symtab.test 
b/llvm/test/tools/llvm-ar/coff-symtab.test
deleted file mode 100644
index 50d08fba3b02f6..00
--- a/llvm/test/tools/llvm-ar/coff-symtab.test
+++ /dev/null
@@ -1,85 +0,0 @@
-Verify that llvm-ar uses COFF archive format by ensuring that archive map is 
sorted.
-
-RUN: rm -rf %t.dif && split-file %s %t.dir && cd %t.dir
-
-RUN: yaml2obj coff-symtab.yaml -o coff-symtab.obj
-RUN: llvm-ar crs out.a coff-symtab.obj
-RUN: llvm-nm --print-armap out.a | FileCheck %s
-
-RUN: llvm-as coff-symtab.ll -o coff-symtab.bc
-RUN: llvm-ar crs out2.a coff-symtab.bc
-RUN: llvm-nm --print-armap out2.a | FileCheck %s
-
-RUN: yaml2obj elf.yaml -o coff-symtab.o
-RUN: llvm-ar crs --format coff out3.a coff-symtab.o
-RUN: llvm-nm --print-armap out3.a | FileCheck %s
-
-CHECK: Archive map
-CHECK-NEXT: a in coff-symtab
-CHECK-NEXT: b in coff-symtab
-CHECK-NEXT: c in coff-symt

[llvm-branch-commits] [llvm] d1e98bf - Revert "[AArch64] Intrinsics aarch64_{get, set}_fpsr (#81867)"

2024-02-24 Thread via llvm-branch-commits

Author: Serge Pavlov
Date: 2024-02-25T02:04:21+07:00
New Revision: d1e98bf0beb7f1d480710c93432fe6095269

URL: 
https://github.com/llvm/llvm-project/commit/d1e98bf0beb7f1d480710c93432fe6095269
DIFF: 
https://github.com/llvm/llvm-project/commit/d1e98bf0beb7f1d480710c93432fe6095269.diff

LOG: Revert "[AArch64] Intrinsics aarch64_{get,set}_fpsr (#81867)"

This reverts commit 00c0638b5613912a7d1b65c8789bbb8ad1003115.

Added: 


Modified: 
llvm/include/llvm/IR/IntrinsicsAArch64.td
llvm/lib/Target/AArch64/AArch64InstrInfo.td
llvm/lib/Target/AArch64/AArch64RegisterInfo.td
llvm/test/CodeGen/AArch64/preserve.ll

Removed: 
llvm/test/CodeGen/AArch64/arm64-fpenv.ll



diff  --git a/llvm/include/llvm/IR/IntrinsicsAArch64.td 
b/llvm/include/llvm/IR/IntrinsicsAArch64.td
index 5a9a7c4b43a1ff..6b045e412cd519 100644
--- a/llvm/include/llvm/IR/IntrinsicsAArch64.td
+++ b/llvm/include/llvm/IR/IntrinsicsAArch64.td
@@ -703,19 +703,17 @@ def int_aarch64_neon_tbx3 : AdvSIMD_Tbx3_Intrinsic;
 def int_aarch64_neon_tbx4 : AdvSIMD_Tbx4_Intrinsic;
 
 let TargetPrefix = "aarch64" in {
-  class FPENV_Get_Intrinsic
+  class FPCR_Get_Intrinsic
 : DefaultAttrsIntrinsic<[llvm_i64_ty], [], [IntrNoMem, 
IntrHasSideEffects]>;
-  class FPENV_Set_Intrinsic
+  class FPCR_Set_Intrinsic
 : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrNoMem, 
IntrHasSideEffects]>;
   class RNDR_Intrinsic
 : DefaultAttrsIntrinsic<[llvm_i64_ty, llvm_i1_ty], [], [IntrNoMem, 
IntrHasSideEffects]>;
 }
 
-// FP environment registers.
-def int_aarch64_get_fpcr : FPENV_Get_Intrinsic;
-def int_aarch64_set_fpcr : FPENV_Set_Intrinsic;
-def int_aarch64_get_fpsr : FPENV_Get_Intrinsic;
-def int_aarch64_set_fpsr : FPENV_Set_Intrinsic;
+// FPCR
+def int_aarch64_get_fpcr : FPCR_Get_Intrinsic;
+def int_aarch64_set_fpcr : FPCR_Set_Intrinsic;
 
 // Armv8.5-A Random number generation intrinsics
 def int_aarch64_rndr : RNDR_Intrinsic;

diff  --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td 
b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
index e73bc0d89e4c9d..8e73f57ced42b8 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
@@ -1805,7 +1805,7 @@ def HWASAN_CHECK_MEMACCESS_SHORTGRANULES : Pseudo<
 // The virtual cycle counter register is CNTVCT_EL0.
 def : Pat<(readcyclecounter), (MRS 0xdf02)>;
 
-// FPCR and FPSR registers.
+// FPCR register
 let Uses = [FPCR] in
 def MRS_FPCR : Pseudo<(outs GPR64:$dst), (ins),
   [(set GPR64:$dst, (int_aarch64_get_fpcr))]>,
@@ -1817,17 +1817,6 @@ def MSR_FPCR : Pseudo<(outs), (ins GPR64:$val),
PseudoInstExpansion<(MSR 0xda20, GPR64:$val)>,
Sched<[WriteSys]>;
 
-let Uses = [FPSR] in
-def MRS_FPSR : Pseudo<(outs GPR64:$dst), (ins),
-  [(set GPR64:$dst, (int_aarch64_get_fpsr))]>,
-   PseudoInstExpansion<(MRS GPR64:$dst, 0xda21)>,
-   Sched<[WriteSys]>;
-let Defs = [FPSR] in
-def MSR_FPSR : Pseudo<(outs), (ins GPR64:$val),
-  [(int_aarch64_set_fpsr i64:$val)]>,
-   PseudoInstExpansion<(MSR 0xda21, GPR64:$val)>,
-   Sched<[WriteSys]>;
-
 // Generic system instructions
 def SYSxt  : SystemXtI<0, "sys">;
 def SYSLxt : SystemLXtI<1, "sysl">;

diff  --git a/llvm/lib/Target/AArch64/AArch64RegisterInfo.td 
b/llvm/lib/Target/AArch64/AArch64RegisterInfo.td
index fef1748021b07c..569944e0e660b7 100644
--- a/llvm/lib/Target/AArch64/AArch64RegisterInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64RegisterInfo.td
@@ -147,9 +147,6 @@ def VG : AArch64Reg<0, "vg">, DwarfRegNum<[46]>;
 // Floating-point control register
 def FPCR : AArch64Reg<0, "fpcr">;
 
-// Floating-point status register.
-def FPSR : AArch64Reg<0, "fpsr">;
-
 // GPR register classes with the intersections of GPR32/GPR32sp and
 // GPR64/GPR64sp for use by the coalescer.
 def GPR32common : RegisterClass<"AArch64", [i32], 32, (sequence "W%u", 0, 30)> 
{

diff  --git a/llvm/test/CodeGen/AArch64/arm64-fpenv.ll 
b/llvm/test/CodeGen/AArch64/arm64-fpenv.ll
deleted file mode 100644
index 030809caee3394..00
--- a/llvm/test/CodeGen/AArch64/arm64-fpenv.ll
+++ /dev/null
@@ -1,45 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 
UTC_ARGS: --version 4
-; RUN: llc -mtriple=aarch64 < %s | FileCheck %s
-
-define i64 @get_fpcr() #0 {
-; CHECK-LABEL: get_fpcr:
-; CHECK:   // %bb.0:
-; CHECK-NEXT:mrs x0, FPCR
-; CHECK-NEXT:ret
-  %1 = tail call i64 @llvm.aarch64.get.fpcr()
-  ret i64 %1
-}
-
-define void @set_fpcr(i64 %cr) {
-; CHECK-LABEL: set_fpcr:
-; CHECK:   // %bb.0:
-; CHECK-NEXT:msr FPCR, x0
-; CHECK-NEXT:ret
-  call void @llvm.aarch64.set.fpcr(i64 %cr)
-  ret void
-}
-
-define i64 @get_fpsr() {
-; CHECK-LABEL: get_fpsr:
-; CHECK:   // %bb.0:
-; CHECK-NEXT:mrs x0, FPSR
-; CHECK-NEXT:ret
-  %1 = tail call i64 @llvm.aarch64

[llvm-branch-commits] [openmp] release/18.x: Fix build on musl by including stdint.h (#81434) (PR #82897)

2024-02-24 Thread via llvm-branch-commits

https://github.com/llvmbot created 
https://github.com/llvm/llvm-project/pull/82897

Backport 45fe67dd61a6ac7df84d3a586e41c36a4767757f

Requested by: @Calandracas606

>From b8e4939ddf6fef001be433c873c95185ac6d1a94 Mon Sep 17 00:00:00 2001
From: Daniel Martinez 
Date: Thu, 22 Feb 2024 21:14:27 +
Subject: [PATCH] Fix build on musl by including stdint.h (#81434)

openmp fails to build on musl since it lacks the defines for int32_t

Co-authored-by: Daniel Martinez 
(cherry picked from commit 45fe67dd61a6ac7df84d3a586e41c36a4767757f)
---
 openmp/libomptarget/include/Shared/SourceInfo.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/openmp/libomptarget/include/Shared/SourceInfo.h 
b/openmp/libomptarget/include/Shared/SourceInfo.h
index 7ce5fd43efc07f..711f06a04d017f 100644
--- a/openmp/libomptarget/include/Shared/SourceInfo.h
+++ b/openmp/libomptarget/include/Shared/SourceInfo.h
@@ -13,6 +13,7 @@
 #ifndef OMPTARGET_SHARED_SOURCE_INFO_H
 #define OMPTARGET_SHARED_SOURCE_INFO_H
 
+#include 
 #include 
 
 #ifdef _WIN32

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


[llvm-branch-commits] [openmp] release/18.x: Fix build on musl by including stdint.h (#81434) (PR #82897)

2024-02-24 Thread via llvm-branch-commits

https://github.com/llvmbot milestoned 
https://github.com/llvm/llvm-project/pull/82897
___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [openmp] release/18.x: Fix build on musl by including stdint.h (#81434) (PR #82897)

2024-02-24 Thread Fangrui Song via llvm-branch-commits

https://github.com/MaskRay approved this pull request.


https://github.com/llvm/llvm-project/pull/82897
___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [compiler-rt] release/18.x: Unbreak *tf builtins for hexfloat (#82208) (PR #82904)

2024-02-24 Thread via llvm-branch-commits

https://github.com/llvmbot milestoned 
https://github.com/llvm/llvm-project/pull/82904
___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [compiler-rt] release/18.x: Unbreak *tf builtins for hexfloat (#82208) (PR #82904)

2024-02-24 Thread via llvm-branch-commits

https://github.com/llvmbot created 
https://github.com/llvm/llvm-project/pull/82904

Backport 99c457dc2ef395872d7448c85609f6cb73a7f89b

Requested by: @brad0

>From 4de7aeb2176f6a05e427d57149596c376d5b148d Mon Sep 17 00:00:00 2001
From: Alexander Richardson 
Date: Wed, 21 Feb 2024 12:59:56 -0800
Subject: [PATCH] Unbreak *tf builtins for hexfloat (#82208)

This re-lands cc0065a7d082f0bd322a538cf62cfaef1c8f89f8 in a way that
keeps existing targets working.

-

Original commit message:
#68132 ended up removing
__multc3 & __divtc3 from compiler-rt library builds that have
QUAD_PRECISION but not TF_MODE due to missing int128 support.
I added support for QUAD_PRECISION to use the native hex float long double 
representation.

-

Co-authored-by: Sean Perry 
(cherry picked from commit 99c457dc2ef395872d7448c85609f6cb73a7f89b)
---
 compiler-rt/lib/builtins/divtc3.c|  2 +-
 compiler-rt/lib/builtins/fp_lib.h| 41 ++--
 compiler-rt/lib/builtins/int_types.h |  8 --
 compiler-rt/lib/builtins/multc3.c|  2 +-
 4 files changed, 34 insertions(+), 19 deletions(-)

diff --git a/compiler-rt/lib/builtins/divtc3.c 
b/compiler-rt/lib/builtins/divtc3.c
index e970cef574b21d..099de5802daf0e 100644
--- a/compiler-rt/lib/builtins/divtc3.c
+++ b/compiler-rt/lib/builtins/divtc3.c
@@ -13,7 +13,7 @@
 #define QUAD_PRECISION
 #include "fp_lib.h"
 
-#if defined(CRT_HAS_TF_MODE)
+#if defined(CRT_HAS_F128)
 
 // Returns: the quotient of (a + ib) / (c + id)
 
diff --git a/compiler-rt/lib/builtins/fp_lib.h 
b/compiler-rt/lib/builtins/fp_lib.h
index af406e760497a4..c4f0a5b9587f77 100644
--- a/compiler-rt/lib/builtins/fp_lib.h
+++ b/compiler-rt/lib/builtins/fp_lib.h
@@ -22,6 +22,7 @@
 
 #include "int_lib.h"
 #include "int_math.h"
+#include "int_types.h"
 #include 
 #include 
 #include 
@@ -93,13 +94,14 @@ static __inline void wideMultiply(rep_t a, rep_t b, rep_t 
*hi, rep_t *lo) {
 COMPILER_RT_ABI fp_t __adddf3(fp_t a, fp_t b);
 
 #elif defined QUAD_PRECISION
-#if defined(CRT_HAS_TF_MODE)
+#if defined(CRT_HAS_F128) && defined(CRT_HAS_128BIT)
 typedef uint64_t half_rep_t;
 typedef __uint128_t rep_t;
 typedef __int128_t srep_t;
 typedef tf_float fp_t;
 #define HALF_REP_C UINT64_C
 #define REP_C (__uint128_t)
+#if defined(CRT_HAS_IEEE_TF)
 // Note: Since there is no explicit way to tell compiler the constant is a
 // 128-bit integer, we let the constant be casted to 128-bit integer
 #define significandBits 112
@@ -188,7 +190,10 @@ static __inline void wideMultiply(rep_t a, rep_t b, rep_t 
*hi, rep_t *lo) {
 #undef Word_HiMask
 #undef Word_LoMask
 #undef Word_FullMask
-#endif // defined(CRT_HAS_TF_MODE)
+#endif // defined(CRT_HAS_IEEE_TF)
+#else
+typedef long double fp_t;
+#endif // defined(CRT_HAS_F128) && defined(CRT_HAS_128BIT)
 #else
 #error SINGLE_PRECISION, DOUBLE_PRECISION or QUAD_PRECISION must be defined.
 #endif
@@ -196,19 +201,6 @@ static __inline void wideMultiply(rep_t a, rep_t b, rep_t 
*hi, rep_t *lo) {
 #if defined(SINGLE_PRECISION) || defined(DOUBLE_PRECISION) ||  
\
 (defined(QUAD_PRECISION) && defined(CRT_HAS_TF_MODE))
 #define typeWidth (sizeof(rep_t) * CHAR_BIT)
-#define exponentBits (typeWidth - significandBits - 1)
-#define maxExponent ((1 << exponentBits) - 1)
-#define exponentBias (maxExponent >> 1)
-
-#define implicitBit (REP_C(1) << significandBits)
-#define significandMask (implicitBit - 1U)
-#define signBit (REP_C(1) << (significandBits + exponentBits))
-#define absMask (signBit - 1U)
-#define exponentMask (absMask ^ significandMask)
-#define oneRep ((rep_t)exponentBias << significandBits)
-#define infRep exponentMask
-#define quietBit (implicitBit >> 1)
-#define qnanRep (exponentMask | quietBit)
 
 static __inline rep_t toRep(fp_t x) {
   const union {
@@ -226,6 +218,21 @@ static __inline fp_t fromRep(rep_t x) {
   return rep.f;
 }
 
+#if !defined(QUAD_PRECISION) || defined(CRT_HAS_IEEE_TF)
+#define exponentBits (typeWidth - significandBits - 1)
+#define maxExponent ((1 << exponentBits) - 1)
+#define exponentBias (maxExponent >> 1)
+
+#define implicitBit (REP_C(1) << significandBits)
+#define significandMask (implicitBit - 1U)
+#define signBit (REP_C(1) << (significandBits + exponentBits))
+#define absMask (signBit - 1U)
+#define exponentMask (absMask ^ significandMask)
+#define oneRep ((rep_t)exponentBias << significandBits)
+#define infRep exponentMask
+#define quietBit (implicitBit >> 1)
+#define qnanRep (exponentMask | quietBit)
+
 static __inline int normalize(rep_t *significand) {
   const int shift = rep_clz(*significand) - rep_clz(implicitBit);
   *significand <<= shift;
@@ -328,6 +335,8 @@ static __inline fp_t __compiler_rt_scalbnX(fp_t x, int y) {
 return fromRep(sign | ((rep_t)exp << significandBits) | sig);
 }
 
+#endif // !defined(QUAD_PRECISION) || defined(CRT_HAS_IEEE_TF)
+
 // Avoid using fmax from libm.
 static __inline fp_t __compiler_rt_fmaxX(fp_t x, fp_t y) {
   // If either argument is NaN, return the other argument. If bot