aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-05-01[clang codegen] Fix MS ABI detection of user-provided constructors. (#90151)llvmorg-18.1.5Eli Friedman3-3/+30
In the context of determining whether a class counts as an "aggregate", a constructor template counts as a user-provided constructor. Fixes #86384 (cherry picked from commit 3ab4ae9e58c09dfd8203547ba8916f3458a0a481)
2024-05-01[RISCV][ISel] Fix types in `tryFoldSelectIntoOp` (#90659)Yingwei Zheng2-1/+20
``` SelectionDAG has 17 nodes: t0: ch,glue = EntryToken t6: i64,ch = CopyFromReg t0, Register:i64 %2 t8: i1 = truncate t6 t4: i64,ch = CopyFromReg t0, Register:i64 %1 t7: i1 = truncate t4 t2: i64,ch = CopyFromReg t0, Register:i64 %0 t10: i64,i1 = saddo t2, Constant:i64<1> t11: i1 = or t8, t10:1 t12: i1 = select t7, t8, t11 t13: i64 = any_extend t12 t15: ch,glue = CopyToReg t0, Register:i64 $x10, t13 t16: ch = RISCVISD::RET_GLUE t15, Register:i64 $x10, t15:1 ``` `OtherOpVT` should be i1, but `OtherOp->getValueType(0)` returns `i64`, which ignores `ResNo` in `SDValue`. Fix https://github.com/llvm/llvm-project/issues/90652. (cherry picked from commit 2647bd73696ae987addd0e74774a44108accb1e6)
2024-05-01[GlobalISel] Fix store merging incorrectly classifying an unknown index expr ↵Amara Emerson4-34/+115
as 0. (#90375) During analysis, we incorrectly leave the offset part of an address info struct as zero, when in actual fact we failed to decompose it into base + offset. This results in incorrectly assuming that the address is adjacent to another store addr. To fix this we wrap the offset in an optional<> so we can distinguish between real zero and unknown. Fixes issue #90242 (cherry picked from commit 19f4d68252b70c81ebb1686a5a31069eda5373de)
2024-05-01[X86] Enable EVEX512 when host CPU has AVX512 (#90479)Phoebe Wang1-1/+4
This is used when -march=native run on an unknown CPU to old version of LLVM. (cherry picked from commit b3291793f11924a3b62601aabebebdcfbb12a9a1)
2024-05-01[GlobalISel] Don't form anyextending atomic loads.Amara Emerson5-59/+131
Until we can reliably check the legality and improve our selection of these, don't form them at all. (cherry picked from commit 60fc4ac67a613e4e36cef019fb2d13d70a06cfe8)
2024-04-30[AArch64] Remove invalid uabdl patterns. (#89272)David Green2-10/+48
These were added in https://reviews.llvm.org/D14208, which look like they attempt to detect abs from xor+add+ashr. They do not appear to be detecting the correct value for the src input though, which I think is intended to be the sub(zext, zext) part of the pattern. We have pattens from abs now, so the old invalid patterns can be removed. Fixes #88784 (cherry picked from commit 851462fcaa7f6e3301865de84f98be7e872e64b6)
2024-04-30[clang][CoverageMapping] do not emit a gap region when either end doesn't ↵Wentao Zhang2-3/+44
have valid source locations (#89564) Fixes #86998 (cherry picked from commit c1b6cca1214e7a9c14a30b81585dd8b81baeaa77)
2024-04-30[X86][EVEX512] Check hasEVEX512 for canExtendTo512DQ (#90390)Phoebe Wang2-3/+35
Fixes #90356 (cherry picked from commit 35b89dda2b9734917824b1457f149192669b314c)
2024-04-30 [CGP] Drop poison-generating flags after hoisting (#90382)Yingwei Zheng3-0/+105
See the following case: ``` define i8 @src1(i8 %x) { entry: %cmp = icmp eq i8 %x, -1 br i1 %cmp, label %exit, label %if.then if.then: %inc = add nuw nsw i8 %x, 1 br label %exit exit: %retval = phi i8 [ %inc, %if.then ], [ -1, %entry ] ret i8 %retval } define i8 @tgt1(i8 %x) { entry: %inc = add nuw nsw i8 %x, 1 %0 = icmp eq i8 %inc, 0 br i1 %0, label %exit, label %if.then if.then: ; preds = %entry br label %exit exit: ; preds = %if.then, %entry %retval = phi i8 [ %inc, %if.then ], [ -1, %entry ] ret i8 %retval } ``` `optimizeBranch` converts `icmp eq X, -1` into cmp to zero on RISC-V and hoists the add into the entry block. Poison-generating flags should be dropped as they don't still hold. Proof: https://alive2.llvm.org/ce/z/sP7mvK Fixes https://github.com/llvm/llvm-project/issues/90380 (cherry picked from commit ab12bba0aad800c1805eca2ea937da958c1854c8)
2024-04-29[Clang] Handle structs with inner structs and no fields (#89126)Bill Wendling3-11/+75
A struct that declares an inner struct, but no fields, won't have a field count. So getting the offset of the inner struct fails. This happens in both C and C++: struct foo { struct bar { int Quantizermatrix[]; }; }; Here 'struct foo' has no fields. Closes: https://github.com/llvm/llvm-project/issues/88931
2024-04-29[IRCE] Skip icmp ptr in `InductiveRangeCheck::parseRangeCheckICmp` (#89967)Yingwei Zheng2-0/+36
Fixes https://github.com/llvm/llvm-project/issues/89959. (cherry picked from commit 22da5a6e34ed6146752b24d9156a678b50fddaef)
2024-04-29Fix Objective-C++ Sret of non-trivial data types on Windows ARM64 (#88671)Hugo Melder4-14/+105
Linked to https://github.com/gnustep/libobjc2/pull/289. More information can be found in issue: #88273. My solution involves creating a new message-send function for this calling convention when targeting MSVC. Additional information is available in the libobjc2 pull request. I am unsure whether we should check for a runtime version where objc_msgSend_stret2_np is guaranteed to be present or leave it as is, considering it remains a critical bug. What are your thoughts about this @davidchisnall? (cherry picked from commit 3dcd2cca7777b338d87deb1ca506df1376123667)
2024-04-26[clang-format] Fix a regression in ContinuationIndenter (#88414)Owen Pan2-1/+11
Commit d06b92391513 caused a regression that breaks after a block comment adjacent to a function paramter that follows. Fixes #86573. (cherry picked from commit d61edecbfd099143e0e2617505fec921524938f8)
2024-04-26[clang-format] Fix a regression in annotating TrailingReturnArrow (#86624)Owen Pan2-0/+6
Fixes #86559. (cherry picked from commit a7f4576ff4e296ff42b16d9d91aadf82b5ea325c)
2024-04-26[AMDGPU] Fix setting nontemporal in memory legalizer (#83815)Mirko Brkušanin5-5/+710
Iterator MI can advance in insertWait() but we need original instruction to set temporal hint. Just move it before handling volatile.
2024-04-25[DAGCombiner] Fix miscompile bug in combineShiftOfShiftedLogic (#89616)Björn Pettersson2-45/+22
Ensure that the sum of the shift amounts does not overflow the shift amount type when combining shifts in combineShiftOfShiftedLogic. Solves a miscompile bug found when testing the C23 BitInt feature. Targets like X86 that only use an i8 for shift amounts after legalization seems to be extra susceptible for bugs like this as it isn't legal to shift more than 255 steps. (cherry picked from commit f9b419b7a038dcd51a7943b160acc867714c595f)
2024-04-25[DAGCombiner] Pre-commit test case for miscompile bug in ↵Bjorn Pettersson1-0/+65
combineShiftOfShiftedLogic DAGCombiner is trying to fold shl over binops, and in the process combining it with another shl. However it needs to be more careful to ensure that the sum of the shift counts fits in the type used for the shift amount. For example, X86 is using i8 as shift amount type. So we need to make sure that the sum of the shift amounts isn't greater than 255. Fix will be applied in a later commit. This only pre-commits the test case to show that we currently get the wrong result. Bug was found when testing the C23 BitInt feature. (cherry picked from commit 5fd9bbdea6cc248469d5465de44e747378ffafcb)
2024-04-25release/18.x: [clang-format] Correctly annotate braces in macros (#87953)Owen Pan4-16/+29
Backport 58323de2e5ed
2024-04-25[libcxx] [modules] Add _LIBCPP_USING_IF_EXISTS on aligned_alloc (#89827)Martin Storsjö1-1/+1
This is missing e.g. on Windows. With this change, it's possible to make the libcxx std module work on mingw-w64 (although that requires a few fixes to those headers). In the regular cstdlib header, we have _LIBCPP_USING_IF_EXISTS flagged on every single reexported function (since a9c9183ca42629fa83cdda297d1d30c7bc1d7c91), but the modules seem to only have _LIBCPP_USING_IF_EXISTS set on a few individual functions, so far. (cherry picked from commit 91526d64a8adb14edc55adfd5270858791822837)
2024-04-24release/18.x: [clang-format] Revert breaking stream operators to previous ↵Owen Pan5-26/+9
default (#89016) Backport 29ecd6d50f14
2024-04-24[analyzer] Fix performance of getTaintedSymbolsImpl() (#89606)NagyDonat1-8/+6
Previously the function ``` std::vector<SymbolRef> taint::getTaintedSymbolsImpl(ProgramStateRef State, const MemRegion *Reg, TaintTagType K, bool returnFirstOnly) ``` (one of the 4 overloaded variants under this name) was handling element regions in a highly inefficient manner: it performed the "also examine the super-region" step twice. (Once in the branch for element regions, and once in the more general branch for all `SubRegion`s -- note that `ElementRegion` is a subclass of `SubRegion`.) As pointer arithmetic produces `ElementRegion`s, it's not too difficult to get a chain of N nested element regions where this inefficient recursion would produce 2^N calls. This commit is essentially NFC, apart from the performance improvements and the removal of (probably irrelevant) duplicate entries from the return value of `getTaintedSymbols()` calls. Fixes #89045 (cherry picked from commit ce763bff081f8e97c7c3610ed0f15f14d60e875f)
2024-04-24release/18.x: [clang-format] Fix a regression in annotating BK_BracedInit ↵Owen Pan3-7/+38
(#87450) Backport 7c9c38eaa9b7
2024-04-24[GlobalISel] Fix fewerElementsVectorPhi to insert after G_PHIs (#87927)Dávid Ferenc Szabó2-3/+7
Currently the inserted mergelike instructions will be inserted at the location of the G_PHI. Seems like the behaviour was correct before, but the rework done in https://reviews.llvm.org/D114198 forgot to include the part which makes sure the instructions will be inserted after all the G_PHIs. (cherry picked from commit 2347020e4ce62ee7c7378824dc6ad2b94917a638)
2024-04-24[X86] Fix miscompile in combineShiftRightArithmeticRose2-18/+21
When folding (ashr (shl, x, c1), c2) we need to treat c1 and c2 as unsigned to find out if the combined shift should be a left or right shift. Also do an early out during pre-legalization in case c1 and c2 has different types, as that otherwise complicated the comparison of c1 and c2 a bit. (cherry picked from commit 3e6e54eb795ce7a1ccd47df8c22fc08125a88886)
2024-04-24[X86] Pre-commit tests (NFC)Rose1-0/+41
2024-04-23 [InstCombine] Fix unexpected overwriting in `foldSelectWithSRem` (#89539)Yingwei Zheng2-1/+18
Fixes #89516 (cherry picked from commit 6309440c218778db027306826993e484eab2be17)
2024-04-23ReleaseNote: Mention SpecialCaseList change (#89141)Fangrui Song1-0/+7
Co-authored-by: Paul T Robinson <paul.robinson@sony.com>
2024-04-23[X86] Always use 64-bit relocations in no-PIC large code model (#89101)Arthur Eubanks2-6/+5
This matches other types of relocations, e.g. to constant pool. And makes things more consistent with PIC large code model. Some users of the large code model may not place small data in the lower 2GB of the address space (e.g. https://github.com/ClangBuiltLinux/linux/issues/2016), so just unconditionally use 64-bit relocations in the large code model. So now functions in a section not marked large will use 64-bit relocations to reference everything when using the large code model. This also fixes some lldb tests broken by #88172 (https://lab.llvm.org/buildbot/#/builders/68/builds/72458). (cherry picked from commit 6cea7c491f4c4c68aa0494a9b18f36ff40c22c81)
2024-04-23[analyzer] Fix a security.cert.env.InvalidPtr crashBalazs Benics3-1/+19
Fixes #88181 (cherry picked from commit e096c144921daba59963f15e89d2ca6fb32d3a78)
2024-04-23Bump version to 18.1.5 (#89291)Tom Stellard2-2/+2
2024-04-16[CMake][Release] Disable PGO (#88465) (#89000)llvmorg-18.1.4Tom Stellard1-1/+1
Running the test-release.sh script with PGO enabled causes build errors like: ld.lld: error: Function Import: link error: linking module flags 'ProfileSummary': IDs have conflicting values I believe this a build system bug due to the PGO profile data being generated unconditionally. If you run `ninja check-all` and then `ninja install` like we do in test-release.sh, then the profile data is regenerated during `ninja install` and some of the clang tools which are not test dependencies get build during the ninja install step with different profile data. When these tools link against the LLVM libraries, like libSupport, we end up with these errors. (cherry picked from commit 0d2bb7f017f13ceae793fab7d83d3e67e8d8d8f8)
2024-04-16[MIPS] Fix the opcode of max.fmt and mina.fmt (#85609)Cinhi Young7-28/+28
- The opcode of the mina.fmt and max.fmt is documented wrong, the object code compiled from the same assembly with LLVM behaves differently than one compiled with GCC and Binutils. - Modify the opcodes to match Binutils. The actual opcodes are as follows: {5,3} | bits {2,0} of func | ... | 100 | 101 | 110 | 111 -----+-----+-----+-----+-----+----- 010 | ... | min | mina | max | maxa (cherry picked from commit 8b859c6e4a8e9ab9969582267bbdc04ed6bfa535)
2024-04-16Fix override keyword being print to the left sideGiuliano Belinassi2-0/+22
Previously, the `override` keyword in C++ was being print in the left side of a method decl, which is unsupported by C++ standard. This commit fixes that by setting the `CanPrintOnLeft` field to 0, forcing it to be print on the right side of the decl. Signed-off-by: Giuliano Belinassi <gbelinassi@suse.de>
2024-04-16Revert "[Mips] Fix missing sign extension in expansion of sub-word atomic ↵Nikita Popov2-594/+81
max (#77072)" These changes caused correctness regressions observed in Rust, see https://github.com/llvm/llvm-project/pull/77072#issuecomment-2049009507. This reverts commit 0e501dbd932ef1c6f4e747c83bf33beef0a09ecf. This reverts commit fbb27d16fa12aa595cbd20a1fb5f1c5b80748fa4.
2024-04-16[LLD] [COFF] Don't add pseudo relocs for dangling references (#88487)Martin Storsjö2-0/+48
When doing GC, we normally won't have dangling references, because such a reference would keep the other section alive, keeping it from being eliminated. However, references within DWARF sections are ignored for the purposes of GC (because otherwise, they would essentially keep everything alive, defeating the point of the GC), see c579a5b1d92a9bc2046d00ee2d427832e0f5ddec for more context. Therefore, dangling relocations against discarded symbols are ignored within DWARF sections (see maybeReportRelocationToDiscarded in Chunks.cpp). Consequently, we also shouldn't create any pseudo relocations for these cases, as we run into a null pointer dereference when trying to generate the pseudo relocation info for it. This fixes the downstream bug https://github.com/mstorsjo/llvm-mingw/issues/418, fixing crashes on combinations with -ffunction-sections, -fdata-sections, -Wl,--gc-sections and debug info. (cherry picked from commit 9c970d5ecd6a85188cd2b0a941fcd4d60063ef81)
2024-04-16[libc++] Fix -Wgnu-include-next in stddef.h (#88214)Louis Dionne1-4/+4
As reported in #86843, we must have #pragma GCC system_header before we use #include_next, otherwise the compiler may not understand that we're in a system header and may issue a diagnostic for our usage of (cherry picked from commit 3c4b673af05f53e8a4d1a382b5c86367ea512c9e)
2024-04-16[SelectionDAG] Prevent combination on inconsistent type in ↵XChy2-1/+29
`combineCarryDiamond` (#84888) Fixes #84831 When matching carry pattern with `getAsCarry`, it may produce different type of carryout. This patch checks such case and does early exit. I'm new to DAG, any suggestion is appreciated. (cherry picked from commit cb4453dc69d75064c9a82e9a6a9bf0d0ded4b204)
2024-04-15[RISCV] Support rv{32, 64}e in the compiler builtins (#88252)Cyrill Leutwiler2-0/+84
Register spills (save/restore) in RISC-V embedded work differently because there are less registers and different stack alignment. [GCC equivalent ](https://github.com/gcc-mirror/gcc/blob/master/libgcc/config/riscv/save-restore.S#L298C16-L336) Follow up from #76777. --------- Signed-off-by: xermicus <cyrill@parity.io> (cherry picked from commit bd32aaa8c9ec2094f605315b3989adc2a567ca98)
2024-04-15github-upload-release.py: Fix bug preventing release creation (#84571)Tom Stellard1-1/+1
After aa02002491333c42060373bc84f1ff5d2c76b4ce we started passing the user name to the create_release function and this was being interpreted as the git tag. (cherry picked from commit 0b9ce71a256d86c08f2b52ad2e337395b8f54b41)
2024-04-15[Codegen][X86] Fix /HOTPATCH with clang-cl and inline asm (#87639)Alexandre Ganea2-1/+20
This fixes an edge case where functions starting with inline assembly would assert while trying to lower that inline asm instruction. After this PR, for now we always add a no-op (xchgw in this case) without considering the size of the next inline asm instruction. We might want to revisit this in the future. This fixes Unreal Engine 5.3.2 compilation with clang-cl and /HOTPATCH. Should close https://github.com/llvm/llvm-project/issues/56234 (cherry picked from commit ec1af63dde58c735fe60d6f2aafdb10fa93f410d)
2024-04-15[InstSimplify] Make sure the simplified value doesn't generate poison in ↵Yingwei Zheng2-1/+44
threadBinOpOverSelect (#87075) Alive2: https://alive2.llvm.org/ce/z/y_Jmdn Fix https://github.com/llvm/llvm-project/issues/87042. (cherry picked from commit 3197f9d8b0efc3efdc531421bd11c16305d9b1ff)
2024-04-15Prepend all library intrinsics with `#` when building for Arm64EC (#87542)Daniel Paoliello2-34/+11
While attempting to build some Rust code, I was getting linker errors due to missing functions that are implemented in `compiler-rt`. Turns out that when `compiler-rt` is built for Arm64EC, all its function names are mangled with the leading `#`. This change removes the hard-coded list of library-implemented intrinsics to mangle for Arm64EC, and instead assumes that they all must be mangled.
2024-04-15[SLP]Fix a crash if the argument of call was affected by minbitwidth analysis.Alexey Bataev2-1/+102
Need to support proper type conversion for function arguments to avoid compiler crash.
2024-04-15[libcxx] coerce formatter precision to int (#87738)Brian Cain1-1/+1
__precision_ is declared as an int32_t which on some hexagon platforms is defined as a long. This change fixes errors like the ones below: In file included from /local/mnt/workspace/hex/llvm-project/libcxx/test/libcxx/diagnostics/format.nodiscard_extensions.compile.pass.cpp:19: In file included from /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/format:202: In file included from /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__format/format_functions.h:29: /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__format/formatter_floating_point.h:700:17: error: no matching function for call to 'max' 700 | int __p = std::max(1, (__specs.__has_precision() ? __specs.__precision_ : 6)); | ^~~~~~~~ /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__format/formatter_floating_point.h:771:25: note: in instantiation of function template specialization 'std::__formatter::__format_floating_point<float, char, std::format_context>' requested here 771 | return __formatter::__format_floating_point(__value, __ctx, __parser_.__get_parsed_std_specifications(__ctx)); | ^ /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__format/format_functions.h:284:42: note: in instantiation of function template specialization 'std::__formatter_floating_point<char>::format<float, std::format_context>' requested here 284 | __ctx.advance_to(__formatter.format(__arg, __ctx)); | ^ /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__format/format_functions.h:429:15: note: in instantiation of function template specialization 'std::__vformat_to<std::back_insert_iterator<std::string>, char, std::back_insert_iterator<std::__format::__output_buffer<char>>>' requested here 429 | return std::__vformat_to(std::move(__out_it), __fmt, __args); | ^ /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__format/format_functions.h:462:8: note: in instantiation of function template specialization 'std::vformat_to<std::back_insert_iterator<std::string>>' requested here 462 | std::vformat_to(std::back_inserter(__res), __fmt, __args); | ^ /local/mnt/workspace/hex/llvm-project/libcxx/test/libcxx/diagnostics/format.nodiscard_extensions.compile.pass.cpp:29:8: note: in instantiation of function template specialization 'std::vformat<void>' requested here 29 | std::vformat("", std::make_format_args()); | ^ /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__algorithm/max.h:35:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('int' vs. 'int32_t' (aka 'long')) 35 | max(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b) { | ^ /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__algorithm/max.h:43:1: note: candidate template ignored: could not match 'initializer_list<_Tp>' against 'int' 43 | max(initializer_list<_Tp> __t, _Compare __comp) { | ^ /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__algorithm/max.h:48:86: note: candidate function template not viable: requires single argument '__t', but 2 arguments were provided 48 | _LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp max(initializer_list<_Tp> __t) { | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~ /local/mnt/workspace/hex/obj_runtimes_hex88_qurt_v75_ON_ON_shared/include/c++/v1/__algorithm/max.h:29:1: note: candidate function template not viable: requires 3 arguments, but 2 were provided 29 | max(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b, _Compare __comp) { | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (cherry picked from commit e1830f586ac4c504f632bdb69aab49234256e899)
2024-04-10[SPARC] Implement L and H inline asm argument modifiers (#87259)Koakuma4-0/+64
This adds support for using the L and H argument modifiers for twinword operands in inline asm code, such as in: ``` %1 = tail call i64 asm sideeffect "rd %pc, ${0:L} ; srlx ${0:L}, 32, ${0:H}", "={o4}"() ``` This is needed by the Linux kernel. (cherry picked from commit 697dd93ae30f489e5bcdac74c2ef2d876e3ca064)
2024-04-10[libc++] Simplify the implementation of <stddef.h> (#86843)Louis Dionne1-17/+8
Libc++'s own <stddef.h> is complicated by the need to handle various platform-specific macros and to support duplicate inclusion. In reality, we only need to add a declaration of nullptr_t to it, so we can simply include the underlying <stddef.h> outside of our guards to let it handle re-inclusion itself. (cherry picked from commit 2950283dddab03c183c1be2d7de9d4999cc86131)
2024-04-10[lit][ci] Publish lit wheels (#88072)Schuyler Eldridge1-1/+1
Add wheel publishing in addition to existing source distribution publishing of lit. Fixes #63369. This also uses the exact fix proposed by @EFord36 in #63369. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com> (cherry picked from commit 8a8ab8f70cbb5507d1aa55efcd9c6e61ad4e891c)
2024-04-10[clang-format] Correctly annotate braces of empty ctors/dtors (#82097)Owen Pan6-14/+28
Also reformat Polly. Fixes #79834. (cherry picked from commit 8de230093f585b64fcd642b46e6560131e95b394)
2024-04-10[Headers] Don't declare unreachable() from stddef.h in C++ (#86748)Ian Anderson1-0/+4
Even if __need_unreachable is set, stddef.h should not declare unreachable() in C++ because it conflicts with the declaration in \<utility>. (cherry picked from commit df69a305253f1d1b4a4066055a07101a4cc03e55)
2024-04-10[ConstantRange] Fix off by 1 bugs in UIToFP and SIToFP handling. (#86041)Craig Topper3-5/+24
We were passing the min and max values of the range to the ConstantRange constructor, but the constructor expects the upper bound to 1 more than the max value so we need to add 1. We also need to use getNonEmpty so that passing 0, 0 to the constructor creates a full range rather than an empty range. And passing smin, smax+1 doesn't cause an assertion. I believe this fixes at least some of the reason #79158 was reverted. (cherry picked from commit 12836467b76c56872b4c22a6fd44bcda696ea720)