SuccessChanges

Summary

  1. Fix include guard and properly order __deregister_frame_info. (details)
  2. [X86] Only pass v64i8/v32i16 as v16i32 on non-avx512bw targets if the (details)
  3. [X86] Don't consider v64i1 as a legal type unless v64i8 is also a legal (details)
  4. Add a shim for setenv on PS4 since it does not exist. (details)
  5. [LLDB] Remove debug message in AddLLDB.cmake (details)
  6. [LLDB] Only set FRAMEWORK when we're actually building a framework. (details)
Commit 38c356176b5370164578c1d08e984964354b7189 by saugustine
Fix include guard and properly order __deregister_frame_info.
Summary: This patch fixes two problems with the crtbegin.c as written:
1. In do_init, register_frame_info is not guarded by a #define, but in
do_fini, deregister_frame_info is guarded by #ifndef
CRT_HAS_INITFINI_ARRAY. Thus when CRT_HAS_INITFINI_ARRAY is not defined,
frames are registered but then never deregistered.
The frame registry mechanism builds a linked-list from the .so's static
variable do_init.object, and when the .so is unloaded, this memory
becomes invalid and should be deregistered.
Further, libgcc's crtbegin treats the frame registry as independent from
the initfini array mechanism.
This patch fixes this by adding a new #define,
"EH_USE_FRAME_INFO_REGISTRY", which is set by the cmake option
COMPILER_RT_CRT_USE_EH_FRAME_REGISTRY Currently, do_init calls
register_frame_info, and then calls the binary's constructors. This
allows constructors to safely use libunwind. However, do_fini calls
deregister_frame_info and then calls the binary's destructors. This
prevents destructors from safely using libunwind.
This patch also switches that ordering, so that destructors can safely
use libunwind. As it happens, this is a fairly common scenario for
thread sanitizer.
The file was modifiedcompiler-rt/CMakeLists.txt (diff)
The file was modifiedcompiler-rt/lib/crt/crtbegin.c (diff)
The file was modifiedcompiler-rt/lib/crt/CMakeLists.txt (diff)
The file was modifiedcompiler-rt/test/crt/ctor_dtor.c (diff)
Commit 0f04ffc073deeb1738f1d9bd5c8161d13fe42592 by craig.topper
[X86] Only pass v64i8/v32i16 as v16i32 on non-avx512bw targets if the
v16i32 type won't be split by prefer-vector-width=256
Otherwise just let the v64i8/v32i16 types be split to v32i8/v16i16.
In reality this shouldn't happen because it means we have a 512-bit
vector argument, but min-legal-vector-width says a value less than 512.
But a 512-bit argument should have been factored into the preferred
vector width.
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp (diff)
Commit 3e1aee2ba717529b651a79ed4fc7e7147358043f by craig.topper
[X86] Don't consider v64i1 as a legal type unless v64i8 is also a legal
type.
This avoids some nasty issues with argument passing and lowering of
arbitrary v64i8 shuffles.
The file was modifiedllvm/test/CodeGen/X86/min-legal-vector-width.ll (diff)
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp (diff)
Commit 7ebde1bf67daa24ea7735f2b2d7000d074e2ba93 by douglas.yung
Add a shim for setenv on PS4 since it does not exist.
A few years back a similar change was made for getenv since neither
function is supported on the PS4 platform.
Recently, commit d889d1e added a call to setenv in compiler-rt which was
causing linking errors because the symbol was not found. This fixes that
issue by putting in a shim similar to how we previously dealt with the
lack of getenv.
Differential Revision: https://reviews.llvm.org/D70033
The file was modifiedcompiler-rt/lib/profile/InstrProfilingUtil.h (diff)
Commit 34ca6e1fbef54465d623ffc8d55e824054913509 by Jonas Devlieghere
[LLDB] Remove debug message in AddLLDB.cmake
The file was modifiedlldb/cmake/modules/AddLLDB.cmake (diff)
Commit 056c3197694881379cb75a3cb1bd6a511d044714 by Jonas Devlieghere
[LLDB] Only set FRAMEWORK when we're actually building a framework.
The file was modifiedlldb/source/API/CMakeLists.txt (diff)