- May 06, 2022
-
-
Sam McCall authored
It turns out clang::expandUCNs only works on tokens that contain valid UCNs and no other random escapes, and clang only uses it on raw_identifiers. Currently we can hit an assertion by creating tokens with stray non-valid-UCN backslashes in them. Fortunately, expanding UCNs in raw_identifiers is actually all we need. Most tokens (keywords, punctuation) can't have them. UCNs in literals can be treated as escape sequences like \n even this isn't the standard's interpretation. This more or less matches how clang works. (See https://isocpp.org/files/papers/P2194R0.pdf which points out that the standard's description of how UCNs work is misaligned with real implementations) Differential Revision: https://reviews.llvm.org/D125049
-
Sam McCall authored
Currently if a lexically-valid UCN encodes an invalid codepoint, then we diagnose that, and then hit an assertion while trying to decode it. Since there isn't anything preventing us reaching this state, remove the assertion. expandUCNs("X\UAAAAAAAAY") will produce "XY". Differential Revision: https://reviews.llvm.org/D125059 -
Ben Shi authored
Reviewed By: Patryk27, aykevl Differential Revision: https://reviews.llvm.org/D125066
-
Chuanqi Xu authored
Re-materialize for debug instructions would cause a different code generated if we enabled `-g`. This is bad. So we disable to re-materialize for debug instructions.
-
Mehdi Amini authored
-
Mehdi Amini authored
-
Chenbing Zheng authored
-
Chenbing Zheng authored
Try to narrow more bswap, if the shift amount is less than the zext (bswap (zext X)) >> C --> (zext (bswap X)) << C' https://alive2.llvm.org/ce/z/i7ddjn Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D124598
-
Volodymyr Sapsai authored
Differential Revision: https://reviews.llvm.org/D124285
-
Lian Wang authored
Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D124986
-
Wael Yehia authored
-
Jason Molenda authored
On arm64 targets, when the crashing pc is 0, the caller frame can be found by looking at $lr, but the crash reports don't use that trick to show the actual crashing frame. This patch adds that stack frame that lldb shows. Also fix an issue where some register names were printed as having a prefix of 'None'. Differential Revision: https://reviews.llvm.org/D125042 rdar://92631787
-
Nico Weber authored
-
Sheng authored
In VarLenDecoder.td, the opcode in CHECK line is hardcoded, which causes chaos in several downstream projects. This patch is trying to fix that.
-
Chengji Yao authored
A large DenseElementsAttr of i1could trigger a bug in printer/parser roundtrip. Ex. A DenseElementsAttr of i1 with 200 elements will print as Hex format of length 400 before the fix. However, when parsing the printed text, an error will be triggered. After fix, the printed length will be 50. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D122925
-
Florian Mayer authored
The globals are better expressed as members of the Symbolizer, and all functions operating on it should be methods instead. Also using the standard idiom of wrapping the main code in `if __name__ == '__main__'`. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D125032
-
Florian Mayer authored
Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D124950
-
Ben Shi authored
__udivmodhi4 : uint16 div and mod __udivmodqi4 : uint8 div and mod __divmodhi4 : sint16 div and mod __divmodqi4 : sint8 div and mod The above helper functions in libgcc have special ABI as described at https://gcc.gnu.org/wiki/avr-gcc#Exceptions_to_the_Calling_Convention . Reviewed By: aykevl Differential Revision: https://reviews.llvm.org/D124600
-
Ilia Diachkov authored
The patch adds SPIR-V specific intrinsics required to keep information critical to SPIR-V consistency (types, constants, etc.) during translation from IR to MIR. Two related passes (SPIRVEmitIntrinsics and SPIRVPreLegalizer) and several LIT tests (passed with this change) have also been added. It also fixes the issue with opaque pointers in SPIRVGlobalRegistry.cpp and the mismatch of the data layout between the SPIR-V backend and clang (Issue #55122). Differential Revision: https://reviews.llvm.org/D124416 Co-authored-by:
Aleksandr Bezzubikov <zuban32s@gmail.com> Co-authored-by:
Michal Paszkowski <michal.paszkowski@outlook.com> Co-authored-by:
Andrey Tretyakov <andrey1.tretyakov@intel.com> Co-authored-by:
Konrad Trifunovic <konrad.trifunovic@intel.com>
-
Richard Smith authored
-
Richard Smith authored
-
Aaron Ballman authored
This reverts commit f6dff936. This diagnostic is also in the -Wcomment group, which is in the -Wall group, so the diagnostic is enabled in a wider context than GCC does. That turns out to be disruptive for the Linux kernel builds still using -std=gnu89 because the kernel requires C source files to start with // comments: https://kernel.org/doc/html/v5.18-rc5/process/license-rules.html#license-identifier-syntax
-
Aart Bik authored
Although we now have semi-rings to deal with arbitrary ops, it is still good to convey zero-preserving semantics of ops to the sparse compiler. Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D125043
-
Peter Steinfeld authored
If a programmer is able to compile and link a program that contains types that are not yet supported by the runtime, it must be because they're not yet implemented. This change will make it easier to find unimplemented code in tests. Differential Revision: https://reviews.llvm.org/D125046
-
owenca authored
-
River Riddle authored
The fallback attribute parse path is parsing a Type attribute, but this results in a really unintuitive error message: `expected non-function type`, which doesn't really hint at tall that we were trying to parse an attribute. This commit fixes this by trying to optionally parse a type, and on failure emitting an error that we were expecting an attribute. Differential Revision: https://reviews.llvm.org/D124870
-
Alexander Yermolovich authored
Added support for DWARF5 Split Dwarf. Reviewed By: maksfb Differential Revision: https://reviews.llvm.org/D122988
-
Richard Smith authored
Compared to the old implementation: * In C++, we only recurse into aggregate classes. * Unnamed bit-fields are not printed. * Constant evaluation is supported. * Proper conversion is done when passing arguments through `...`. * Additional arguments are supported and are injected prior to the format string; this directly supports use with `fprintf`, for example. * An arbitrary callable can be passed rather than only a function pointer. In particular, in C++, a function template or overload set is acceptable. * All text generated by Clang is printed via `%s` rather than directly; this avoids issues where Clang's pretty-printing output might itself contain a `%` character. * Fields of types that we don't know how to print are printed with a `"*%p"` format and passed by address to the print function. * No return value is produced. Reviewed By: aaron.ballman, erichkeane, yihanaa Differential Revision: https://reviews.llvm.org/D124221
-
owenca authored
The ShouldShiftBeAdded lambda checks if extra space should be added before the wrapped part of a braced list. If the first element of the list is wrapped, no extra space should be added. Fixes #55161. Differential Revision: https://reviews.llvm.org/D124956
-
River Riddle authored
This was changed in 16dcbb53
-
Jason Molenda authored
When picking the UnwindPlan row to use to backtrace, off of the zeroth frame, decrement the return pc so we're in the address range of the call instruction. If this is a noretrun function call, the instruction at the "return address" is likely an entirely different basic block with possibly very different unwind rules, and this can cause the backtrace to be incorrect. Differential Revision: https://reviews.llvm.org/D124957 rdar://84651805
-
Amara Emerson authored
-
Lang Hames authored
Clients don't care about linkage, and ExecutorAddr is much more ergonomic.
-
H.J. Lu authored
Since x32 pointer size is 4 bytes, the self pointer offset in TCB: struct { void *tcb; dtv_t *dtv; void *self; ... should be 8, not 16. Fixes https://github.com/llvm/llvm-project/issues/55288 Differential Revision: https://reviews.llvm.org/D125025 -
Stella Stamenova authored
The names of the functions that are supposed to be exported do not match the implementations. This is due in part to https://github.com/llvm/llvm-project/commit/cac7aabbd8236bef2909bfc0dbba17644f7aaade. This change makes the implementations and declarations match and adds a couple missing declarations. The new names follow the pattern of the existing `verify` functions where the prefix is maintained as `_mlir_ciface_` but the suffix follows the new naming convention. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D124891
-
Eric Li authored
A follow-up to 62b2a47a to centralize the logic that skips expressions that the CFG does not emit. This allows client code to avoid sprinkling this logic everywhere. Add redirects in the transfer function to similarly skip such expressions by forwarding the visit to the sub-expression. Differential Revision: https://reviews.llvm.org/D124965
-
Martin Storsjö authored
This test only fails on x86_64 clang-cl, not for i386. (The root cause is still not explored, thus the FIXME is still relevant.) Differential Revision: https://reviews.llvm.org/D124994
-
Martin Storsjö authored
[libcxx] [test] Extend the UNSUPPORTED lines in strong_order_long_double.verify.cpp for non-x86_64 Windows Differential Revision: https://reviews.llvm.org/D124992
-
Martin Storsjö authored
On Windows on i386, C++ member functions use a different calling convention (`__thiscall`) than the default one for regular functions (`__cdecl`). (On Windows on architectures other than i386, both calling convention attributes are no-ops.) This matches how libstdc++ declares these types. This fixes the std/thread/futures/futures.{shared,unique}_future/dtor.pass.cpp tests on i386 mingw. Differential Revision: https://reviews.llvm.org/D124990 -
Martin Storsjö authored
All current Windows architectures (i386, x86_64, arm, arm64) get the full_size() behaviour here. x86_64 (the only one tested in CI currently) is handled by the first ifdef at the top, but handle Windows in general on all other architectures later. Differential Revision: https://reviews.llvm.org/D124989
-