[llvm-branch-commits] [cfe-branch] r353807 - Merging r353495:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 00:35:38 2019
New Revision: 353807

URL: http://llvm.org/viewvc/llvm-project?rev=353807&view=rev
Log:
Merging r353495:

r353495 | jfb | 2019-02-08 02:29:17 +0100 (Fri, 08 Feb 2019) | 32 lines

Variable auto-init: fix __block initialization

Summary:
Automatic initialization [1] of __block variables was trampling over the block's
headers after they'd been initialized, which caused self-init usage to crash,
such as here:

  typedef struct XYZ { void (^block)(); } *xyz_t;
  __attribute__((noinline))
  xyz_t create(void (^block)()) {
xyz_t myself = malloc(sizeof(struct XYZ));
myself->block = block;
return myself;
  }
  int main() {
__block xyz_t captured = create(^(){ (void)captured; });
  }

This type of code shouldn't be broken by variable auto-init, even if it's
sketchy.

[1] With -ftrivial-auto-var-init=pattern



Reviewers: rjmccall, pcc, kcc

Subscribers: jkorous, dexonsmith, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D57797


Modified:
cfe/branches/release_80/   (props changed)
cfe/branches/release_80/lib/CodeGen/CGDecl.cpp
cfe/branches/release_80/test/CodeGenCXX/trivial-auto-var-init.cpp

Propchange: cfe/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 00:35:38 2019
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353393
+/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353393,353495
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_80/lib/CodeGen/CGDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/lib/CodeGen/CGDecl.cpp?rev=353807&r1=353806&r2=353807&view=diff
==
--- cfe/branches/release_80/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/branches/release_80/lib/CodeGen/CGDecl.cpp Tue Feb 12 00:35:38 2019
@@ -1631,11 +1631,15 @@ void CodeGenFunction::EmitAutoVarInit(co
   ? LangOptions::TrivialAutoVarInitKind::Uninitialized
   : getContext().getLangOpts().getTrivialAutoVarInit()));
 
-  auto initializeWhatIsTechnicallyUninitialized = [&]() {
+  auto initializeWhatIsTechnicallyUninitialized = [&](Address Loc) {
 if (trivialAutoVarInit ==
 LangOptions::TrivialAutoVarInitKind::Uninitialized)
   return;
 
+// Only initialize a __block's storage: we always initialize the header.
+if (emission.IsEscapingByRef)
+  Loc = emitBlockByrefAddress(Loc, &D, /*follow=*/false);
+
 CharUnits Size = getContext().getTypeSizeInChars(type);
 if (!Size.isZero()) {
   switch (trivialAutoVarInit) {
@@ -1713,7 +1717,7 @@ void CodeGenFunction::EmitAutoVarInit(co
   };
 
   if (isTrivialInitializer(Init)) {
-initializeWhatIsTechnicallyUninitialized();
+initializeWhatIsTechnicallyUninitialized(Loc);
 return;
   }
 
@@ -1727,7 +1731,7 @@ void CodeGenFunction::EmitAutoVarInit(co
   }
 
   if (!constant) {
-initializeWhatIsTechnicallyUninitialized();
+initializeWhatIsTechnicallyUninitialized(Loc);
 LValue lv = MakeAddrLValue(Loc, type);
 lv.setNonGC(true);
 return EmitExprAsInit(Init, &D, lv, capturedByInit);

Modified: cfe/branches/release_80/test/CodeGenCXX/trivial-auto-var-init.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/test/CodeGenCXX/trivial-auto-var-init.cpp?rev=353807&r1=353806&r2=353807&view=diff
==
--- cfe/branches/release_80/test/CodeGenCXX/trivial-auto-var-init.cpp (original)
+++ cfe/branches/release_80/test/CodeGenCXX/trivial-auto-var-init.cpp Tue Feb 
12 00:35:38 2019
@@ -30,6 +30,32 @@ void test_block() {
   used(block);
 }
 
+// Using the variable being initialized is typically UB in C, but for blocks we
+// can be nice: they imply extra book-keeping and we can do the auto-init 
before
+// any of said book-keeping.
+//
+// UNINIT-LABEL:  test_block_self_init(
+// ZERO-LABEL:test_block_self_init(
+// ZERO:  %block = alloca <{ i8*, i32, i32, i8*, 
%struct.__block_descriptor*, i8* }>, align 8
+// ZERO:  %captured1 = getelementptr inbounds 
%struct.__block_byref_captured, %struct.__block_byref_captured* %captured, i32 
0, i32 4
+// ZERO-NEXT: store %struct.XYZ* null, %struct.XYZ** %captured1, align 8
+// ZERO:  %call = call %struct.XYZ* @create(
+// PATTERN-LABEL: test_block_self_in

[llvm-branch-commits] [llvm-branch] r353808 - ReleaseNotes about the toolchain version cmake check

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 00:45:37 2019
New Revision: 353808

URL: http://llvm.org/viewvc/llvm-project?rev=353808&view=rev
Log:
ReleaseNotes about the toolchain version cmake check

Based on text from JF!

Modified:
llvm/branches/release_80/docs/ReleaseNotes.rst

Modified: llvm/branches/release_80/docs/ReleaseNotes.rst
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/docs/ReleaseNotes.rst?rev=353808&r1=353807&r2=353808&view=diff
==
--- llvm/branches/release_80/docs/ReleaseNotes.rst (original)
+++ llvm/branches/release_80/docs/ReleaseNotes.rst Tue Feb 12 00:45:37 2019
@@ -40,6 +40,22 @@ Non-comprehensive list of changes in thi
functionality, or simply have a lot to talk about), see the `NOTE` below
for adding a new subsection.
 
+* As `discussed on the mailing list
+  `_,
+  building LLVM will soon require more recent toolchains as follows:
+
+  = 
+  Clang 3.5
+  Apple Clang   6.0
+  GCC   5.1
+  Visual Studio 2017
+  = 
+
+  A new CMake check when configuring LLVM provides a soft-error if your
+  toolchain will become unsupported soon. You can opt out of the soft-error by
+  setting the ``LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN`` CMake variable to
+  ``ON``.
+
 * The **llvm-cov** tool can now export lcov trace files using the
   `-format=lcov` option of the `export` command.
 


___
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-branch] r353811 - Merging r353551 and r353809:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 01:11:50 2019
New Revision: 353811

URL: http://llvm.org/viewvc/llvm-project?rev=353811&view=rev
Log:
Merging r353551 and r353809:

Also removed the text about Clang 9.


r353551 | metzman | 2019-02-08 20:35:04 +0100 (Fri, 08 Feb 2019) | 13 lines

Document libFuzzer on Windows.

Summary:
Document that libFuzzer supports Windows, how to get it,
and its limitations.

Reviewers: kcc, morehouse, rnk, metzman

Reviewed By: kcc, rnk, metzman

Subscribers: hans, rnk

Differential Revision: https://reviews.llvm.org/D57597



r353809 | hans | 2019-02-12 10:08:52 +0100 (Tue, 12 Feb 2019) | 1 line

LibFuzzer.rst: double backticks


Modified:
llvm/branches/release_80/   (props changed)
llvm/branches/release_80/docs/LibFuzzer.rst

Propchange: llvm/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 01:11:50 2019
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,351325,351344-351345,351349,351351,351370,351381,351387,351421,351426,351436,351475,351485,351753-351754,351765,351910,351930,351932,352034,352204,352246,352374,352555,352770,352889,352945,353082,353155,353218,353304,353367,353374,353463
+/llvm/trunk:155241,351325,351344-351345,351349,351351,351370,351381,351387,351421,351426,351436,351475,351485,351753-351754,351765,351910,351930,351932,352034,352204,352246,352374,352555,352770,352889,352945,353082,353155,353218,353304,353367,353374,353463,353551,353809

Modified: llvm/branches/release_80/docs/LibFuzzer.rst
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/docs/LibFuzzer.rst?rev=353811&r1=353810&r2=353811&view=diff
==
--- llvm/branches/release_80/docs/LibFuzzer.rst (original)
+++ llvm/branches/release_80/docs/LibFuzzer.rst Tue Feb 12 01:11:50 2019
@@ -645,10 +645,20 @@ coverage set of the process (since the f
 using more external dependencies we will slow down the fuzzer while the main
 reason for it to exist is extreme speed.
 
-Q. What about Windows then? The fuzzer contains code that does not build on 
Windows.
+Q. Does libFuzzer Support Windows?
 

 
-Volunteers are welcome.
+Yes, libFuzzer now supports Windows. Initial support was added in r341082.
+You can download a build of Clang for Windows
+that has libFuzzer from
+`LLVM Snapshot Builds `_.
+
+Using libFuzzer on Windows without ASAN is unsupported. Building fuzzers with 
the
+``/MD`` (dynamic runtime library) compile option is unsupported. Support for 
these
+may be added in the future. Linking fuzzers with the ``/INCREMENTAL`` link 
option
+(or the ``/DEBUG`` option which implies it) is also unsupported.
+
+Send any questions or comments to the mailing list: 
libfuzzer(#)googlegroups.com
 
 Q. When libFuzzer is not a good solution for a problem?
 -


___
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] [cfe-branch] r353819 - Merging r353142:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 02:14:10 2019
New Revision: 353819

URL: http://llvm.org/viewvc/llvm-project?rev=353819&view=rev
Log:
Merging r353142:

r353142 | ctopper | 2019-02-05 07:13:14 +0100 (Tue, 05 Feb 2019) | 13 lines

[X86] Change MS inline asm clobber list filter to check for 'fpsr' instead of 
'fpsw' after D57641.

Summary: The backend used to print the x87 FPSW register as 'fpsw', but gcc 
inline asm uses 'fpsr'. After D57641, the backend now uses 'fpsr' to match.

Reviewers: rnk

Reviewed By: rnk

Subscribers: eraman, cfe-commits, llvm-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D57642


Modified:
cfe/branches/release_80/   (props changed)
cfe/branches/release_80/lib/Parse/ParseStmtAsm.cpp

Propchange: cfe/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 02:14:10 2019
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353393,353495
+/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353495
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_80/lib/Parse/ParseStmtAsm.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/lib/Parse/ParseStmtAsm.cpp?rev=353819&r1=353818&r2=353819&view=diff
==
--- cfe/branches/release_80/lib/Parse/ParseStmtAsm.cpp (original)
+++ cfe/branches/release_80/lib/Parse/ParseStmtAsm.cpp Tue Feb 12 02:14:10 2019
@@ -637,7 +637,7 @@ StmtResult Parser::ParseMicrosoftAsmStat
   // Filter out "fpsw" and "mxcsr". They aren't valid GCC asm clobber
   // constraints. Clang always adds fpsr to the clobber list anyway.
   llvm::erase_if(Clobbers, [](const std::string &C) {
-return C == "fpsw" || C == "mxcsr";
+return C == "fpsr" || C == "mxcsr";
   });
 
   // Build the vector of clobber StringRefs.


___
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-branch] r353822 - Merging r353308 and r353383:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 02:45:41 2019
New Revision: 353822

URL: http://llvm.org/viewvc/llvm-project?rev=353822&view=rev
Log:
Merging r353308 and r353383:


r353308 | tnorthover | 2019-02-06 16:26:35 +0100 (Wed, 06 Feb 2019) | 5 lines

AArch64: enforce even/odd register pairs for CASP instructions.

ARMv8.1a CASP instructions need the first of the pair to be an even register
(otherwise the encoding is unallocated). We enforced this during assembly, but
not CodeGen before.



r353383 | tnorthover | 2019-02-07 11:35:34 +0100 (Thu, 07 Feb 2019) | 4 lines

AArch64: implement copy for paired GPR registers.

When doing 128-bit atomics using CASP we might need to copy a GPRPair to a
different register, but that was unimplemented up to now.


Added:
llvm/branches/release_80/test/CodeGen/AArch64/cmpxchg-lse-even-regs.ll
  - copied unchanged from r353308, 
llvm/trunk/test/CodeGen/AArch64/cmpxchg-lse-even-regs.ll
llvm/branches/release_80/test/CodeGen/AArch64/seqpaircopy.mir
  - copied unchanged from r353383, 
llvm/trunk/test/CodeGen/AArch64/seqpaircopy.mir
Modified:
llvm/branches/release_80/   (props changed)
llvm/branches/release_80/lib/Target/AArch64/AArch64InstrInfo.cpp
llvm/branches/release_80/lib/Target/AArch64/AArch64InstrInfo.h
llvm/branches/release_80/lib/Target/AArch64/AArch64RegisterInfo.td

llvm/branches/release_80/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp

Propchange: llvm/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 02:45:41 2019
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,351325,351344-351345,351349,351351,351370,351381,351387,351421,351426,351436,351475,351485,351753-351754,351765,351910,351930,351932,352034,352204,352246,352374,352555,352607-352608,352770,352889,352945,353015,353061,353082,353138,353141,353155,353218,353304,353334,353367,353374,353463,353489,353551,353809
+/llvm/trunk:155241,351325,351344-351345,351349,351351,351370,351381,351387,351421,351426,351436,351475,351485,351753-351754,351765,351910,351930,351932,352034,352204,352246,352374,352555,352607-352608,352770,352889,352945,353015,353061,353082,353138,353141,353155,353218,353304,353308,353334,353367,353374,353383,353463,353489,353551,353809

Modified: llvm/branches/release_80/lib/Target/AArch64/AArch64InstrInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/lib/Target/AArch64/AArch64InstrInfo.cpp?rev=353822&r1=353821&r2=353822&view=diff
==
--- llvm/branches/release_80/lib/Target/AArch64/AArch64InstrInfo.cpp (original)
+++ llvm/branches/release_80/lib/Target/AArch64/AArch64InstrInfo.cpp Tue Feb 12 
02:45:41 2019
@@ -2292,6 +2292,31 @@ void AArch64InstrInfo::copyPhysRegTuple(
   }
 }
 
+void AArch64InstrInfo::copyGPRRegTuple(MachineBasicBlock &MBB,
+   MachineBasicBlock::iterator I,
+   DebugLoc DL, unsigned DestReg,
+   unsigned SrcReg, bool KillSrc,
+   unsigned Opcode, unsigned ZeroReg,
+   llvm::ArrayRef Indices) const 
{
+  const TargetRegisterInfo *TRI = &getRegisterInfo();
+  unsigned NumRegs = Indices.size();
+
+#ifndef NDEBUG
+  uint16_t DestEncoding = TRI->getEncodingValue(DestReg);
+  uint16_t SrcEncoding = TRI->getEncodingValue(SrcReg);
+  assert(DestEncoding % NumRegs == 0 && SrcEncoding % NumRegs == 0 &&
+ "GPR reg sequences should not be able to overlap");
+#endif
+
+  for (unsigned SubReg = 0; SubReg != NumRegs; ++SubReg) {
+const MachineInstrBuilder MIB = BuildMI(MBB, I, DL, get(Opcode));
+AddSubReg(MIB, DestReg, Indices[SubReg], RegState::Define, TRI);
+MIB.addReg(ZeroReg);
+AddSubReg(MIB, SrcReg, Indices[SubReg], getKillRegState(KillSrc), TRI);
+MIB.addImm(0);
+  }
+}
+
 void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I,
const DebugLoc &DL, unsigned DestReg,
@@ -2431,6 +2456,22 @@ void AArch64InstrInfo::copyPhysReg(Machi
 return;
   }
 
+  if (AArch64::XSeqPairsClassRegClass.contains(DestReg) &&
+  AArch64::XSeqPairsClassRegClass.contains(SrcReg)) {
+static const unsigned Indices[] = {AArch64::sube64, AArch64::subo64};
+copyGPRRegTuple(MBB, I, DL, DestReg, SrcReg, KillSrc, AArch64::ORRXrs,
+AArch64::XZR, Indices);
+return;
+  }
+
+  if

[llvm-branch-commits] [cfe-branch] r353825 - Merging r353411:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 02:56:21 2019
New Revision: 353825

URL: http://llvm.org/viewvc/llvm-project?rev=353825&view=rev
Log:
Merging r353411:

r353411 | erichkeane | 2019-02-07 16:14:11 +0100 (Thu, 07 Feb 2019) | 7 lines

Fix r350643 to limit COFF emission to <= 32 BYTES instead of BITS.

The patch in r350643 incorrectly sets the COFF emission based on bits
instead of bytes. This patch converts the 32 via CharUnits to bits to
compare the correct values.

Change-Id: Icf38a16470ad5ae3531374969c033557ddb0d323


Modified:
cfe/branches/release_80/   (props changed)
cfe/branches/release_80/lib/CodeGen/CodeGenModule.cpp
cfe/branches/release_80/test/CodeGen/microsoft-no-common-align.c

Propchange: cfe/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 02:56:21 2019
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353495
+/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353411,353495
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_80/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/lib/CodeGen/CodeGenModule.cpp?rev=353825&r1=353824&r2=353825&view=diff
==
--- cfe/branches/release_80/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/branches/release_80/lib/CodeGen/CodeGenModule.cpp Tue Feb 12 02:56:21 
2019
@@ -3762,13 +3762,15 @@ static bool isVarDeclStrongDefinition(co
 }
   }
 
-  // Microsoft's link.exe doesn't support alignments greater than 32 for common
-  // symbols, so symbols with greater alignment requirements cannot be common.
+  // Microsoft's link.exe doesn't support alignments greater than 32 bytes for
+  // common symbols, so symbols with greater alignment requirements cannot be
+  // common.
   // Other COFF linkers (ld.bfd and LLD) support arbitrary power-of-two
   // alignments for common symbols via the aligncomm directive, so this
   // restriction only applies to MSVC environments.
   if (Context.getTargetInfo().getTriple().isKnownWindowsMSVCEnvironment() &&
-  Context.getTypeAlignIfKnown(D->getType()) > 32)
+  Context.getTypeAlignIfKnown(D->getType()) >
+  Context.toBits(CharUnits::fromQuantity(32)))
 return true;
 
   return false;

Modified: cfe/branches/release_80/test/CodeGen/microsoft-no-common-align.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/test/CodeGen/microsoft-no-common-align.c?rev=353825&r1=353824&r2=353825&view=diff
==
--- cfe/branches/release_80/test/CodeGen/microsoft-no-common-align.c (original)
+++ cfe/branches/release_80/test/CodeGen/microsoft-no-common-align.c Tue Feb 12 
02:56:21 2019
@@ -6,3 +6,6 @@ TooLargeAlignment TooBig;
 // CHECK: @TooBig = dso_local global <16 x float>  zeroinitializer, align 64
 NormalAlignment JustRight;
 // CHECK: @JustRight = common dso_local global <1 x float>  zeroinitializer, 
align 4
+
+TooLargeAlignment *IsAPointer;
+// CHECK: @IsAPointer = common dso_local global <16 x float>* null, align 8


___
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] [cfe-branch] r353826 - Merging r353431:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 03:02:43 2019
New Revision: 353826

URL: http://llvm.org/viewvc/llvm-project?rev=353826&view=rev
Log:
Merging r353431:

r353431 | stulova | 2019-02-07 18:32:37 +0100 (Thu, 07 Feb 2019) | 9 lines

[OpenCL][PR40603] In C++ preserve compatibility with OpenCL C v2.0

Valid OpenCL C code should still compile in C++ mode.

This change enables extensions and OpenCL types.

Differential Revision: https://reviews.llvm.org/D57824




Modified:
cfe/branches/release_80/   (props changed)
cfe/branches/release_80/include/clang/Basic/OpenCLOptions.h
cfe/branches/release_80/lib/Frontend/InitPreprocessor.cpp
cfe/branches/release_80/lib/Parse/ParsePragma.cpp
cfe/branches/release_80/lib/Sema/Sema.cpp
cfe/branches/release_80/test/SemaOpenCL/extension-version.cl
cfe/branches/release_80/test/SemaOpenCL/extensions.cl

Propchange: cfe/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 03:02:43 2019
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353411,353495
+/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353411,353431,353495
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_80/include/clang/Basic/OpenCLOptions.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/include/clang/Basic/OpenCLOptions.h?rev=353826&r1=353825&r2=353826&view=diff
==
--- cfe/branches/release_80/include/clang/Basic/OpenCLOptions.h (original)
+++ cfe/branches/release_80/include/clang/Basic/OpenCLOptions.h Tue Feb 12 
03:02:43 2019
@@ -15,6 +15,7 @@
 #ifndef LLVM_CLANG_BASIC_OPENCLOPTIONS_H
 #define LLVM_CLANG_BASIC_OPENCLOPTIONS_H
 
+#include "clang/Basic/LangOptions.h"
 #include "llvm/ADT/StringMap.h"
 
 namespace clang {
@@ -42,25 +43,29 @@ public:
 
   // Is supported as either an extension or an (optional) core feature for
   // OpenCL version \p CLVer.
-  bool isSupported(llvm::StringRef Ext, unsigned CLVer) const {
+  bool isSupported(llvm::StringRef Ext, LangOptions LO) const {
+// In C++ mode all extensions should work at least as in v2.0.
+auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion;
 auto I = OptMap.find(Ext)->getValue();
 return I.Supported && I.Avail <= CLVer;
   }
 
   // Is supported (optional) OpenCL core features for OpenCL version \p CLVer.
   // For supported extension, return false.
-  bool isSupportedCore(llvm::StringRef Ext, unsigned CLVer) const {
+  bool isSupportedCore(llvm::StringRef Ext, LangOptions LO) const {
+// In C++ mode all extensions should work at least as in v2.0.
+auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion;
 auto I = OptMap.find(Ext)->getValue();
-return I.Supported && I.Avail <= CLVer &&
-  I.Core != ~0U && CLVer >= I.Core;
+return I.Supported && I.Avail <= CLVer && I.Core != ~0U && CLVer >= I.Core;
   }
 
   // Is supported OpenCL extension for OpenCL version \p CLVer.
   // For supported (optional) core feature, return false.
- bool isSupportedExtension(llvm::StringRef Ext, unsigned CLVer) const {
+  bool isSupportedExtension(llvm::StringRef Ext, LangOptions LO) const {
+// In C++ mode all extensions should work at least as in v2.0.
+auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion;
 auto I = OptMap.find(Ext)->getValue();
-return I.Supported && I.Avail <= CLVer &&
-  (I.Core == ~0U || CLVer < I.Core);
+return I.Supported && I.Avail <= CLVer && (I.Core == ~0U || CLVer < 
I.Core);
   }
 
   void enable(llvm::StringRef Ext, bool V = true) {
@@ -122,10 +127,10 @@ public:
   I->second.Enabled = false;
   }
 
-  void enableSupportedCore(unsigned CLVer) {
-for (llvm::StringMap::iterator I = OptMap.begin(),
- E = OptMap.end(); I != E; ++I)
-  if (isSupportedCore(I->getKey(), CLVer))
+  void enableSupportedCore(LangOptions LO) {
+for (llvm::StringMap::iterator I = OptMap.begin(), E = OptMap.end();
+ I != E; ++I)
+  if (isSupportedCore(I->getKey(), LO))
 I->second.Enabled = true;
   }
 
@@ -133,6 +138,6 @@ public:
   friend class ASTReader;
 };
 
-}  // end namespace clang
+} // end namespace clang
 
 #endif

Modified: cfe/branches/release_80/lib/Frontend/InitPreprocessor.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/lib/Frontend/InitPreprocessor.cpp?rev=353826&r1=

[llvm-branch-commits] [llvm-branch] r353827 - Merging r353480:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 03:05:22 2019
New Revision: 353827

URL: http://llvm.org/viewvc/llvm-project?rev=353827&view=rev
Log:
Merging r353480:

r353480 | petarj | 2019-02-07 23:57:33 +0100 (Thu, 07 Feb 2019) | 15 lines

[mips][micromips] Fix how values in .gcc_except_table are calculated

When a landing pad is calculated in a program that is compiled for micromips
with -fPIC flag, it will point to an even address.
Such an error will cause a segmentation fault, as the instructions in
micromips are aligned on odd addresses. This patch sets the last bit of the
offset where a landing pad is, to 1, which will effectively be an odd
address and point to the instruction exactly.

r344591 fixed this issue for -static compilation.

Patch by Aleksandar Beserminji.

Differential Revision: https://reviews.llvm.org/D57677



Modified:
llvm/branches/release_80/   (props changed)
llvm/branches/release_80/lib/MC/MCExpr.cpp
llvm/branches/release_80/test/CodeGen/Mips/micromips-b-range.ll
llvm/branches/release_80/test/DebugInfo/Mips/eh_frame.ll

Propchange: llvm/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 03:05:22 2019
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,351325,351344-351345,351349,351351,351370,351381,351387,351421,351426,351436,351475,351485,351753-351754,351765,351910,351930,351932,352034,352204,352246,352374,352555,352607-352608,352770,352889,352945,353015,353061,353082,353138,353141,353155,353218,353304,353308,353334,353367,353374,353383,353463,353489,353551,353809
+/llvm/trunk:155241,351325,351344-351345,351349,351351,351370,351381,351387,351421,351426,351436,351475,351485,351753-351754,351765,351910,351930,351932,352034,352204,352246,352374,352555,352607-352608,352770,352889,352945,353015,353061,353082,353138,353141,353155,353218,353304,353308,353334,353367,353374,353383,353463,353480,353489,353551,353809

Modified: llvm/branches/release_80/lib/MC/MCExpr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/lib/MC/MCExpr.cpp?rev=353827&r1=353826&r2=353827&view=diff
==
--- llvm/branches/release_80/lib/MC/MCExpr.cpp (original)
+++ llvm/branches/release_80/lib/MC/MCExpr.cpp Tue Feb 12 03:05:22 2019
@@ -559,6 +559,11 @@ static void AttemptToFoldSymbolOffsetDif
   if (Asm->isThumbFunc(&SA))
 Addend |= 1;
 
+  // If symbol is labeled as micromips, we set low-bit to ensure
+  // correct offset in .gcc_except_table
+  if (Asm->getBackend().isMicroMips(&SA))
+Addend |= 1;
+
   // Clear the symbol expr pointers to indicate we have folded these
   // operands.
   A = B = nullptr;

Modified: llvm/branches/release_80/test/CodeGen/Mips/micromips-b-range.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/test/CodeGen/Mips/micromips-b-range.ll?rev=353827&r1=353826&r2=353827&view=diff
==
--- llvm/branches/release_80/test/CodeGen/Mips/micromips-b-range.ll (original)
+++ llvm/branches/release_80/test/CodeGen/Mips/micromips-b-range.ll Tue Feb 12 
03:05:22 2019
@@ -13,7 +13,7 @@
 ; CHECK-NEXT:1e:   fb fd 00 00 sw  $ra, 0($sp)
 ; CHECK-NEXT:22:   41 a1 00 01 lui $1, 1
 ; CHECK-NEXT:26:   40 60 00 02 bal 8 
-; CHECK-NEXT:2a:   30 21 04 68 addiu   $1, $1, 1128
+; CHECK-NEXT:2a:   30 21 04 69 addiu   $1, $1, 1129
 ; CHECK-NEXT:2e:   00 3f 09 50 addu$1, $ra, $1
 ; CHECK-NEXT:32:   ff fd 00 00 lw  $ra, 0($sp)
 ; CHECK-NEXT:36:   00 01 0f 3c jr  $1
@@ -27,7 +27,7 @@
 ; CHECK-NEXT:56:   fb fd 00 00 sw  $ra, 0($sp)
 ; CHECK-NEXT:5a:   41 a1 00 01 lui $1, 1
 ; CHECK-NEXT:5e:   40 60 00 02 bal 8 
-; CHECK-NEXT:62:   30 21 04 5c addiu   $1, $1, 1116
+; CHECK-NEXT:62:   30 21 04 5d addiu   $1, $1, 1117
 ; CHECK-NEXT:66:   00 3f 09 50 addu$1, $ra, $1
 ; CHECK-NEXT:6a:   ff fd 00 00 lw  $ra, 0($sp)
 ; CHECK-NEXT:6e:   00 01 0f 3c jr  $1
@@ -39,7 +39,7 @@
 ; CHECK-NEXT:86:   fb fd 00 00 sw  $ra, 0($sp)
 ; CHECK-NEXT:8a:   41 a1 00 01 lui $1, 1
 ; CHECK-NEXT:8e:   40 60 00 02 bal 8 
-; CHECK-NEXT:92:   30 21 04 2c addiu   $1, $1, 1068
+; CHECK-NEXT:92:   30 21 04 2d addiu   $1, $1, 1069
 ; CHECK-NEXT:96:   00 3f 09 50 addu$1, $ra, $1
 ; CHECK-NEXT:9a:   ff fd 00 00 lw  $ra, 0($sp)
 ; CHECK-NEXT:9e:   00 01 0f 3c jr  $1
@@ -51,7 +51,7 @@
 ; CHECK-NEXT: 10476:   fb fd 00 00 sw  $ra, 0($sp)
 ; CHECK-NEXT: 1047a:   41 a1 00 01 lui

[llvm-branch-commits] [cfe-branch] r353828 - Merging r353493:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 03:09:24 2019
New Revision: 353828

URL: http://llvm.org/viewvc/llvm-project?rev=353828&view=rev
Log:
Merging r353493:

r353493 | efriedma | 2019-02-08 02:17:49 +0100 (Fri, 08 Feb 2019) | 9 lines

[COFF, ARM64] Fix types for _ReadStatusReg, _WriteStatusReg

r344765 added those intrinsics, but used the wrong types.

Patch by Mike Hommey

Differential Revision: https://reviews.llvm.org/D57636




Modified:
cfe/branches/release_80/   (props changed)
cfe/branches/release_80/include/clang/Basic/BuiltinsAArch64.def
cfe/branches/release_80/lib/CodeGen/CGBuiltin.cpp
cfe/branches/release_80/lib/Headers/intrin.h   (contents, props changed)
cfe/branches/release_80/test/CodeGen/arm64-microsoft-status-reg.cpp

Propchange: cfe/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 03:09:24 2019
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353411,353431,353495
+/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353411,353431,353493,353495
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_80/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/include/clang/Basic/BuiltinsAArch64.def?rev=353828&r1=353827&r2=353828&view=diff
==
--- cfe/branches/release_80/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/branches/release_80/include/clang/Basic/BuiltinsAArch64.def Tue Feb 12 
03:09:24 2019
@@ -204,8 +204,8 @@ TARGET_HEADER_BUILTIN(_InterlockedDecrem
 
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
-TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(_WriteStatusReg, "vii", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_ReadStatusReg,  "LLii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_WriteStatusReg, "viLLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_AddressOfReturnAddress, "v*", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
 #undef BUILTIN

Modified: cfe/branches/release_80/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/lib/CodeGen/CGBuiltin.cpp?rev=353828&r1=353827&r2=353828&view=diff
==
--- cfe/branches/release_80/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/branches/release_80/lib/CodeGen/CGBuiltin.cpp Tue Feb 12 03:09:24 2019
@@ -7052,19 +7052,16 @@ Value *CodeGenFunction::EmitAArch64Built
 llvm::Value *Metadata = llvm::MetadataAsValue::get(Context, RegName);
 
 llvm::Type *RegisterType = Int64Ty;
-llvm::Type *ValueType = Int32Ty;
 llvm::Type *Types[] = { RegisterType };
 
 if (BuiltinID == AArch64::BI_ReadStatusReg) {
   llvm::Value *F = CGM.getIntrinsic(llvm::Intrinsic::read_register, Types);
-  llvm::Value *Call = Builder.CreateCall(F, Metadata);
 
-  return Builder.CreateTrunc(Call, ValueType);
+  return Builder.CreateCall(F, Metadata);
 }
 
 llvm::Value *F = CGM.getIntrinsic(llvm::Intrinsic::write_register, Types);
 llvm::Value *ArgValue = EmitScalarExpr(E->getArg(1));
-ArgValue = Builder.CreateZExt(ArgValue, RegisterType);
 
 return Builder.CreateCall(F, { Metadata, ArgValue });
   }

Modified: cfe/branches/release_80/lib/Headers/intrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/lib/Headers/intrin.h?rev=353828&r1=353827&r2=353828&view=diff
==
--- cfe/branches/release_80/lib/Headers/intrin.h (original)
+++ cfe/branches/release_80/lib/Headers/intrin.h Tue Feb 12 03:09:24 2019
@@ -564,8 +564,8 @@ __nop(void) {
 #if defined(__aarch64__)
 unsigned __int64 __getReg(int);
 long _InterlockedAdd(long volatile *Addend, long Value);
-int _ReadStatusReg(int);
-void _WriteStatusReg(int, int);
+__int64 _ReadStatusReg(int);
+void _WriteStatusReg(int, __int64);
 
 static inline unsigned short _byteswap_ushort (unsigned short val) {
   return __builtin_bswap16(val);

Propchange: cfe/branches/release_80/lib/Headers/intrin.h
--

[llvm-branch-commits] [cfe-branch] r353829 - Merging r353402:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 03:12:23 2019
New Revision: 353829

URL: http://llvm.org/viewvc/llvm-project?rev=353829&view=rev
Log:
Merging r353402:

r353402 | mstorsjo | 2019-02-07 13:46:49 +0100 (Thu, 07 Feb 2019) | 7 lines

[clang-cl] support /Oy- on aarch64

MSVC supports /Oy- on aarch64, so clang-cl should too.

Patch by Nathan Froyd!

Differential Revision: https://reviews.llvm.org/D57838


Modified:
cfe/branches/release_80/   (props changed)
cfe/branches/release_80/lib/Driver/ToolChains/MSVC.cpp
cfe/branches/release_80/test/Driver/cl-options.c

Propchange: cfe/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 03:12:23 2019
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353411,353431,353493,353495
+/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353402,353411,353431,353493,353495
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_80/lib/Driver/ToolChains/MSVC.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/lib/Driver/ToolChains/MSVC.cpp?rev=353829&r1=353828&r2=353829&view=diff
==
--- cfe/branches/release_80/lib/Driver/ToolChains/MSVC.cpp (original)
+++ cfe/branches/release_80/lib/Driver/ToolChains/MSVC.cpp Tue Feb 12 03:12:23 
2019
@@ -1408,10 +1408,10 @@ static void TranslateOptArg(Arg *A, llvm
   DAL.AddFlagArg(
   A, Opts.getOption(options::OPT_fno_omit_frame_pointer));
   } else {
-// Don't warn about /Oy- in 64-bit builds (where
+// Don't warn about /Oy- in x86-64 builds (where
 // SupportsForcingFramePointer is false).  The flag having no effect
 // there is a compiler-internal optimization, and people shouldn't have
-// to special-case their build files for 64-bit clang-cl.
+// to special-case their build files for x86-64 clang-cl.
 A->claim();
   }
   break;
@@ -1442,8 +1442,8 @@ MSVCToolChain::TranslateArgs(const llvm:
   DerivedArgList *DAL = new DerivedArgList(Args.getBaseArgs());
   const OptTable &Opts = getDriver().getOpts();
 
-  // /Oy and /Oy- only has an effect under X86-32.
-  bool SupportsForcingFramePointer = getArch() == llvm::Triple::x86;
+  // /Oy and /Oy- don't have an effect on X86-64
+  bool SupportsForcingFramePointer = getArch() != llvm::Triple::x86_64;
 
   // The -O[12xd] flag actually expands to several flags.  We must desugar the
   // flags so that options embedded can be negated.  For example, the '-O2' 
flag

Modified: cfe/branches/release_80/test/Driver/cl-options.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/test/Driver/cl-options.c?rev=353829&r1=353828&r2=353829&view=diff
==
--- cfe/branches/release_80/test/Driver/cl-options.c (original)
+++ cfe/branches/release_80/test/Driver/cl-options.c Tue Feb 12 03:12:23 2019
@@ -178,6 +178,10 @@
 // Oy_2: -momit-leaf-frame-pointer
 // Oy_2: -O2
 
+// RUN: %clang_cl --target=aarch64-pc-windows-msvc -Werror /Oy- /O2 -### -- %s 
2>&1 | FileCheck -check-prefix=Oy_aarch64 %s
+// Oy_aarch64: -mdisable-fp-elim
+// Oy_aarch64: -O2
+
 // RUN: %clang_cl --target=i686-pc-win32 -Werror /O2 /O2 -### -- %s 2>&1 | 
FileCheck -check-prefix=O2O2 %s
 // O2O2: "-O2"
 


___
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-branch] r353830 - Merging r351322:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 03:17:08 2019
New Revision: 353830

URL: http://llvm.org/viewvc/llvm-project?rev=353830&view=rev
Log:
Merging r351322:

r351322 | pfaffe | 2019-01-16 12:14:07 +0100 (Wed, 16 Jan 2019) | 9 lines

[MSan] Apply the ctor creation scheme of TSan

Summary: To avoid adding an extern function to the global ctors list, apply the 
changes of D56538 also to MSan.

Reviewers: chandlerc, vitalybuka, fedor.sergeev, leonardchan

Subscribers: hiraditya, bollu, llvm-commits

Differential Revision: https://reviews.llvm.org/D56734


Added:

llvm/branches/release_80/test/Instrumentation/MemorySanitizer/global_ctors_2to3.ll
  - copied unchanged from r351322, 
llvm/trunk/test/Instrumentation/MemorySanitizer/global_ctors_2to3.ll
Modified:
llvm/branches/release_80/   (props changed)
llvm/branches/release_80/lib/Transforms/Instrumentation/MemorySanitizer.cpp
llvm/branches/release_80/test/Instrumentation/MemorySanitizer/msan_basic.ll

llvm/branches/release_80/test/Instrumentation/MemorySanitizer/msan_llvm_is_constant.ll

Propchange: llvm/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 03:17:08 2019
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,351325,351344-351345,351349,351351,351370,351381,351387,351421,351426,351436,351475,351485,351753-351754,351765,351910,351930,351932,352034,352204,352246,352374,352555,352607-352608,352770,352889,352945,353015,353061,353082,353138,353141,353155,353218,353304,353308,353334,353367,353374,353383,353463,353480,353489,353551,353809
+/llvm/trunk:155241,351322,351325,351344-351345,351349,351351,351370,351381,351387,351421,351426,351436,351475,351485,351753-351754,351765,351910,351930,351932,352034,352204,352246,352374,352555,352607-352608,352770,352889,352945,353015,353061,353082,353138,353141,353155,353218,353304,353308,353334,353367,353374,353383,353463,353480,353489,353551,353809

Modified: 
llvm/branches/release_80/lib/Transforms/Instrumentation/MemorySanitizer.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/lib/Transforms/Instrumentation/MemorySanitizer.cpp?rev=353830&r1=353829&r2=353830&view=diff
==
--- llvm/branches/release_80/lib/Transforms/Instrumentation/MemorySanitizer.cpp 
(original)
+++ llvm/branches/release_80/lib/Transforms/Instrumentation/MemorySanitizer.cpp 
Tue Feb 12 03:17:08 2019
@@ -321,6 +321,7 @@ static cl::opt ClOri
cl::desc("Define custom MSan OriginBase"),
cl::Hidden, cl::init(0));
 
+static const char *const kMsanModuleCtorName = "msan.module_ctor";
 static const char *const kMsanInitName = "__msan_init";
 
 namespace {
@@ -586,6 +587,8 @@ private:
 
   /// An empty volatile inline asm that prevents callback merge.
   InlineAsm *EmptyAsm;
+
+  Function *MsanCtorFunction;
 };
 
 /// A legacy function pass for msan instrumentation.
@@ -839,6 +842,8 @@ Value *MemorySanitizer::getKmsanShadowOr
 }
 
 /// Module-level initialization.
+///
+/// inserts a call to __msan_init to the module's constructor list.
 void MemorySanitizer::initializeModule(Module &M) {
   auto &DL = M.getDataLayout();
 
@@ -913,7 +918,22 @@ void MemorySanitizer::initializeModule(M
   OriginStoreWeights = MDBuilder(*C).createBranchWeights(1, 1000);
 
   if (!CompileKernel) {
-getOrCreateInitFunction(M, kMsanInitName);
+std::tie(MsanCtorFunction, std::ignore) =
+getOrCreateSanitizerCtorAndInitFunctions(
+M, kMsanModuleCtorName, kMsanInitName,
+/*InitArgTypes=*/{},
+/*InitArgs=*/{},
+// This callback is invoked when the functions are created the 
first
+// time. Hook them into the global ctors list in that case:
+[&](Function *Ctor, Function *) {
+  if (!ClWithComdat) {
+appendToGlobalCtors(M, Ctor, 0);
+return;
+  }
+  Comdat *MsanCtorComdat = 
M.getOrInsertComdat(kMsanModuleCtorName);
+  Ctor->setComdat(MsanCtorComdat);
+  appendToGlobalCtors(M, Ctor, 0, Ctor);
+});
 
 if (TrackOrigins)
   M.getOrInsertGlobal("__msan_track_origins", IRB.getInt32Ty(), [&] {
@@ -4458,6 +4478,8 @@ static VarArgHelper *CreateVarArgHelper(
 }
 
 bool MemorySanitizer::sanitizeFunction(Function &F, TargetLibraryInfo &TLI) {
+  if (!CompileKernel && (&F == MsanCtorFunction))
+return false;
   MemorySanitizerVisitor Visitor(F, *this, TLI);
 
   // Clear out readonly/readnone attributes.

Modified: 
llvm/branches/release_80/test/Instrumentation/MemorySanitizer/msan_basic.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release

[llvm-branch-commits] [cfe-branch] r353831 - Merging r353656:

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 03:19:21 2019
New Revision: 353831

URL: http://llvm.org/viewvc/llvm-project?rev=353831&view=rev
Log:
Merging r353656:

r353656 | brad | 2019-02-11 03:53:16 +0100 (Mon, 11 Feb 2019) | 4 lines

long double is double on OpenBSD/NetBSD/PPC.

Patch by George Koehler.



Modified:
cfe/branches/release_80/   (props changed)
cfe/branches/release_80/lib/Basic/Targets/PPC.h
cfe/branches/release_80/test/CodeGen/powerpc_types.c

Propchange: cfe/branches/release_80/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 03:19:21 2019
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353402,353411,353431,353493,353495
+/cfe/trunk:351334,351340,351344,351360,351457,351459,351531,351579-351580,352040,352079,352099,352102,352105,352156,352221-35,352229,352307,352323,352463,352539,352610,352672,352822,353142,353393,353402,353411,353431,353493,353495,353656
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_80/lib/Basic/Targets/PPC.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/lib/Basic/Targets/PPC.h?rev=353831&r1=353830&r2=353831&view=diff
==
--- cfe/branches/release_80/lib/Basic/Targets/PPC.h (original)
+++ cfe/branches/release_80/lib/Basic/Targets/PPC.h Tue Feb 12 03:19:21 2019
@@ -331,9 +331,15 @@ public:
   break;
 }
 
-if (getTriple().isOSFreeBSD()) {
+switch (getTriple().getOS()) {
+case llvm::Triple::FreeBSD:
+case llvm::Triple::NetBSD:
+case llvm::Triple::OpenBSD:
   LongDoubleWidth = LongDoubleAlign = 64;
   LongDoubleFormat = &llvm::APFloat::IEEEdouble();
+  break;
+default:
+  break;
 }
 
 // PPC32 supports atomics up to 4 bytes.

Modified: cfe/branches/release_80/test/CodeGen/powerpc_types.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/test/CodeGen/powerpc_types.c?rev=353831&r1=353830&r2=353831&view=diff
==
--- cfe/branches/release_80/test/CodeGen/powerpc_types.c (original)
+++ cfe/branches/release_80/test/CodeGen/powerpc_types.c Tue Feb 12 03:19:21 
2019
@@ -1,4 +1,6 @@
 // RUN: %clang_cc1 -triple powerpc-unknown-freebsd -emit-llvm -o - %s| 
FileCheck -check-prefix=SVR4-CHECK %s
+// RUN: %clang_cc1 -triple powerpc-unknown-netbsd -emit-llvm -o - %s| 
FileCheck -check-prefix=SVR4-CHECK %s
+// RUN: %clang_cc1 -triple powerpc-unknown-openbsd -emit-llvm -o - %s| 
FileCheck -check-prefix=SVR4-CHECK %s
 
 #include 
 


___
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] [lld] r353833 - [WebAssembly] Backport custom import name changes for lld to 8.0.

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 04:24:52 2019
New Revision: 353833

URL: http://llvm.org/viewvc/llvm-project?rev=353833&view=rev
Log:
[WebAssembly] Backport custom import name changes for lld to 8.0.

Specifically, this backports r352645, r352828, and r353473 to the
8.0 branch. The trunk patches don't apply cleanly to 8.0 due to
some contemporaneous mass-rename and mass-clang-tidy patches, so
this merges them to simplify rebasing.

r352645 [WebAssembly] Fix crash with LTO + relocatable + undefined symbols
r352828 [WebAssembly] Support imports from custom module names
r353473 [WebAssembly] Fix imported function symbol names that differ from their 
import names in the .o format

By Dan Gohman!

Added:
lld/branches/release_80/test/wasm/import-module.ll
lld/branches/release_80/test/wasm/import-names.ll
lld/branches/release_80/test/wasm/lto/relocatable-undefined.ll
Modified:
lld/branches/release_80/test/wasm/data-layout.ll
lld/branches/release_80/test/wasm/init-fini.ll
lld/branches/release_80/test/wasm/locals-duplicate.test
lld/branches/release_80/test/wasm/weak-alias.ll
lld/branches/release_80/wasm/Driver.cpp
lld/branches/release_80/wasm/InputChunks.cpp
lld/branches/release_80/wasm/InputFiles.cpp
lld/branches/release_80/wasm/LTO.cpp
lld/branches/release_80/wasm/LTO.h
lld/branches/release_80/wasm/MarkLive.cpp
lld/branches/release_80/wasm/SymbolTable.cpp
lld/branches/release_80/wasm/SymbolTable.h
lld/branches/release_80/wasm/Symbols.h
lld/branches/release_80/wasm/Writer.cpp
lld/branches/release_80/wasm/Writer.h

Modified: lld/branches/release_80/test/wasm/data-layout.ll
URL: 
http://llvm.org/viewvc/llvm-project/lld/branches/release_80/test/wasm/data-layout.ll?rev=353833&r1=353832&r2=353833&view=diff
==
--- lld/branches/release_80/test/wasm/data-layout.ll (original)
+++ lld/branches/release_80/test/wasm/data-layout.ll Tue Feb 12 04:24:52 2019
@@ -85,10 +85,10 @@ target triple = "wasm32-unknown-unknown"
 ; RELOC:   - Type:DATA
 ; RELOC-NEXT: Relocations:
 ; RELOC-NEXT:   - Type:R_WEBASSEMBLY_MEMORY_ADDR_I32
-; RELOC-NEXT: Index:   6
+; RELOC-NEXT: Index:   3
 ; RELOC-NEXT: Offset:  0x0018
 ; RELOC-NEXT:   - Type:R_WEBASSEMBLY_MEMORY_ADDR_I32
-; RELOC-NEXT: Index:   3
+; RELOC-NEXT: Index:   4
 ; RELOC-NEXT: Offset:  0x002E
 ; RELOC-NEXT: Addend:  4
 ; RELOC-NEXT: Segments:
@@ -148,7 +148,7 @@ target triple = "wasm32-unknown-unknown"
 ; RELOC-NEXT: Flags:   [  ]
 ; RELOC-NEXT: Segment: 2
 ; RELOC-NEXT: Size:4
-; RELOC:- Index:   6
+; RELOC-NEXT:   - Index:   3
 ; RELOC-NEXT: Kind:DATA
 ; RELOC-NEXT: Name:hello_str
 ; RELOC-NEXT: Flags:   [  ]

Added: lld/branches/release_80/test/wasm/import-module.ll
URL: 
http://llvm.org/viewvc/llvm-project/lld/branches/release_80/test/wasm/import-module.ll?rev=353833&view=auto
==
--- lld/branches/release_80/test/wasm/import-module.ll (added)
+++ lld/branches/release_80/test/wasm/import-module.ll Tue Feb 12 04:24:52 2019
@@ -0,0 +1,21 @@
+; RUN: llc -filetype=obj %s -o %t.o
+; RUN: wasm-ld --allow-undefined -o %t.wasm %t.o
+; RUN: obj2yaml %t.wasm | FileCheck %s
+
+target triple = "wasm32-unknown-unknown-wasm"
+
+define void @_start() {
+  call void @foo();
+  ret void
+}
+
+declare void @foo() #0
+
+attributes #0 = { "wasm-import-module"="bar" }
+
+; CHECK:- Type:IMPORT
+; CHECK-NEXT: Imports: 
+; CHECK-NEXT:   - Module:  bar
+; CHECK-NEXT: Field:   foo
+; CHECK-NEXT: Kind:FUNCTION
+; CHECK-NEXT: SigIndex:0

Added: lld/branches/release_80/test/wasm/import-names.ll
URL: 
http://llvm.org/viewvc/llvm-project/lld/branches/release_80/test/wasm/import-names.ll?rev=353833&view=auto
==
--- lld/branches/release_80/test/wasm/import-names.ll (added)
+++ lld/branches/release_80/test/wasm/import-names.ll Tue Feb 12 04:24:52 2019
@@ -0,0 +1,27 @@
+; RUN: llc -filetype=obj %s -o %t.o
+; RUN: wasm-ld --allow-undefined -o %t.wasm %t.o
+; RUN: obj2yaml %t.wasm | FileCheck %s
+
+target triple = "wasm32-unknown-unknown"
+
+declare void @f0() #0
+
+define void @_start() {
+call void @f0()
+ret void
+}
+
+attributes #0 = { "wasm-import-module"="somewhere" 
"wasm-import-name"="something" }
+
+; CHECK:- Type:IMPORT
+; CHECK-NEXT: Imports:
+; CHECK-NEXT:   - Module:  somewhere
+; CHECK-NEXT: Field:   something
+; CHECK-NEXT: Kind:   

[llvm-branch-commits] [cfe-branch] r353834 - [WebAssembly] Backport custom import name changes for clang to 8.0.

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 04:26:10 2019
New Revision: 353834

URL: http://llvm.org/viewvc/llvm-project?rev=353834&view=rev
Log:
[WebAssembly] Backport custom import name changes for clang to 8.0.

Specifically, this backports r352106, r352108, r352930, and r352936
to the 8.0 branch. The trunk patches don't apply cleanly to 8.0 due to
some contemporaneous mass-rename and mass-clang-tidy patches, so
this merges them to simplify rebasing.

r352106 [WebAssembly] Add an import_module function attribute
r352108 [WebAssembly] Add WebAssemblyImportModule to 
pragma-attribute-supported-attributes-list.test
r352930 [WebAssembly] Add an import_field function attribute
r352936 [WebAssembly] Fix ImportName's position in this test.

By Dan Gohman!

Added:
cfe/branches/release_80/test/CodeGen/wasm-import-module.c
cfe/branches/release_80/test/CodeGen/wasm-import-name.c
Modified:
cfe/branches/release_80/include/clang/Basic/Attr.td
cfe/branches/release_80/include/clang/Basic/AttrDocs.td
cfe/branches/release_80/lib/CodeGen/TargetInfo.cpp
cfe/branches/release_80/lib/Sema/SemaDeclAttr.cpp

cfe/branches/release_80/test/Misc/pragma-attribute-supported-attributes-list.test

Modified: cfe/branches/release_80/include/clang/Basic/Attr.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/include/clang/Basic/Attr.td?rev=353834&r1=353833&r2=353834&view=diff
==
--- cfe/branches/release_80/include/clang/Basic/Attr.td (original)
+++ cfe/branches/release_80/include/clang/Basic/Attr.td Tue Feb 12 04:26:10 2019
@@ -329,6 +329,7 @@ def TargetMSP430 : TargetArch<["msp430"]
 def TargetRISCV : TargetArch<["riscv32", "riscv64"]>;
 def TargetX86 : TargetArch<["x86"]>;
 def TargetAnyX86 : TargetArch<["x86", "x86_64"]>;
+def TargetWebAssembly : TargetArch<["wasm32", "wasm64"]>;
 def TargetWindows : TargetArch<["x86", "x86_64", "arm", "thumb", "aarch64"]> {
   let OSes = ["Win32"];
 }
@@ -1500,6 +1501,22 @@ def AMDGPUNumVGPR : InheritableAttr {
   let Subjects = SubjectList<[Function], ErrorDiag, "kernel functions">;
 }
 
+def WebAssemblyImportModule : InheritableAttr,
+  TargetSpecificAttr {
+  let Spellings = [Clang<"import_module">];
+  let Args = [StringArgument<"ImportModule">];
+  let Documentation = [WebAssemblyImportModuleDocs];
+  let Subjects = SubjectList<[Function], ErrorDiag>;
+}
+
+def WebAssemblyImportName : InheritableAttr,
+TargetSpecificAttr {
+  let Spellings = [Clang<"import_name">];
+  let Args = [StringArgument<"ImportName">];
+  let Documentation = [WebAssemblyImportNameDocs];
+  let Subjects = SubjectList<[Function], ErrorDiag>;
+}
+
 def NoSplitStack : InheritableAttr {
   let Spellings = [GCC<"no_split_stack">];
   let Subjects = SubjectList<[Function], ErrorDiag>;

Modified: cfe/branches/release_80/include/clang/Basic/AttrDocs.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/include/clang/Basic/AttrDocs.td?rev=353834&r1=353833&r2=353834&view=diff
==
--- cfe/branches/release_80/include/clang/Basic/AttrDocs.td (original)
+++ cfe/branches/release_80/include/clang/Basic/AttrDocs.td Tue Feb 12 04:26:10 
2019
@@ -3652,7 +3652,40 @@ definition (
 For more information see
 `gcc documentation 
`_
 or `msvc documentation `_.
-}];
+}]; }
+
+def WebAssemblyImportModuleDocs : Documentation {
+  let Category = DocCatFunction;
+  let Content = [{
+Clang supports the ``__attribute__((import_module()))`` 
+attribute for the WebAssembly target. This attribute may be attached to a
+function declaration, where it modifies how the symbol is to be imported
+within the WebAssembly linking environment.
+
+WebAssembly imports use a two-level namespace scheme, consisting of a module
+name, which typically identifies a module from which to import, and a field
+name, which typically identifies a field from that module to import. By
+default, module names for C/C++ symbols are assigned automatically by the
+linker. This attribute can be used to override the default behavior, and
+reuqest a specific module name be used instead.
+  }];
+}
+
+def WebAssemblyImportNameDocs : Documentation {
+  let Category = DocCatFunction;
+  let Content = [{
+Clang supports the ``__attribute__((import_name()))`` 
+attribute for the WebAssembly target. This attribute may be attached to a
+function declaration, where it modifies how the symbol is to be imported
+within the WebAssembly linking environment.
+
+WebAssembly imports use a two-level namespace scheme, consisting of a module
+name, which typically identifies a module from which to import, and a field
+name, which typically identifies a field from that module to import. By
+default, field names for C/C++ s

[llvm-branch-commits] [llvm-branch] r353835 - [WebAssembly] Backport custom import name changes for LLVM to 8.0.

2019-02-12 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Tue Feb 12 04:27:08 2019
New Revision: 353835

URL: http://llvm.org/viewvc/llvm-project?rev=353835&view=rev
Log:
[WebAssembly] Backport custom import name changes for LLVM to 8.0.

Specifically, this backports r352479, r352931, r353474, and r353476
to the 8.0 branch. The trunk patches don't apply cleanly to 8.0 due to
some contemporaneous mass-rename and mass-clang-tidy patches, so
this merges them to simplify rebasing.

r352479 [WebAssembly] Re-enable main-function signature rewriting
r352931 [WebAssembly] Add codegen support for the import_field attribute
r353474 [WebAssembly] Fix imported function symbol names that differ from their 
import names in the .o format
r353476 [WebAssembly] Update test output after rL353474. NFC.

By Dan Gohman!

Added:
llvm/branches/release_80/test/CodeGen/WebAssembly/main-three-args.ll
llvm/branches/release_80/test/MC/WebAssembly/import-module.ll
Modified:
llvm/branches/release_80/include/llvm/BinaryFormat/Wasm.h
llvm/branches/release_80/include/llvm/MC/MCSymbolWasm.h
llvm/branches/release_80/lib/MC/WasmObjectWriter.cpp
llvm/branches/release_80/lib/Object/WasmObjectFile.cpp

llvm/branches/release_80/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp

llvm/branches/release_80/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h
llvm/branches/release_80/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp

llvm/branches/release_80/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
llvm/branches/release_80/test/CodeGen/WebAssembly/call.ll

llvm/branches/release_80/test/CodeGen/WebAssembly/function-bitcasts-varargs.ll
llvm/branches/release_80/test/CodeGen/WebAssembly/function-bitcasts.ll
llvm/branches/release_80/test/CodeGen/WebAssembly/import-module.ll
llvm/branches/release_80/test/CodeGen/WebAssembly/main-declaration.ll
llvm/branches/release_80/test/CodeGen/WebAssembly/main-no-args.ll
llvm/branches/release_80/test/CodeGen/WebAssembly/main-with-args.ll
llvm/branches/release_80/test/MC/WebAssembly/external-func-address.ll
llvm/branches/release_80/tools/yaml2obj/yaml2wasm.cpp

Modified: llvm/branches/release_80/include/llvm/BinaryFormat/Wasm.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/include/llvm/BinaryFormat/Wasm.h?rev=353835&r1=353834&r2=353835&view=diff
==
--- llvm/branches/release_80/include/llvm/BinaryFormat/Wasm.h (original)
+++ llvm/branches/release_80/include/llvm/BinaryFormat/Wasm.h Tue Feb 12 
04:27:08 2019
@@ -165,7 +165,8 @@ struct WasmSymbolInfo {
   StringRef Name;
   uint8_t Kind;
   uint32_t Flags;
-  StringRef Module; // For undefined symbols the module name of the import
+  StringRef ImportModule; // For undefined symbols the module of the import
+  StringRef ImportName;   // For undefined symbols the name of the import
   union {
 // For function or global symbols, the index in function or global index
 // space.
@@ -284,6 +285,7 @@ const unsigned WASM_SYMBOL_BINDING_LOCAL
 const unsigned WASM_SYMBOL_VISIBILITY_DEFAULT = 0x0;
 const unsigned WASM_SYMBOL_VISIBILITY_HIDDEN = 0x4;
 const unsigned WASM_SYMBOL_UNDEFINED = 0x10;
+const unsigned WASM_SYMBOL_EXPLICIT_NAME = 0x40;
 
 #define WASM_RELOC(name, value) name = value,
 

Modified: llvm/branches/release_80/include/llvm/MC/MCSymbolWasm.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/include/llvm/MC/MCSymbolWasm.h?rev=353835&r1=353834&r2=353835&view=diff
==
--- llvm/branches/release_80/include/llvm/MC/MCSymbolWasm.h (original)
+++ llvm/branches/release_80/include/llvm/MC/MCSymbolWasm.h Tue Feb 12 04:27:08 
2019
@@ -19,7 +19,8 @@ class MCSymbolWasm : public MCSymbol {
   bool IsWeak = false;
   bool IsHidden = false;
   bool IsComdat = false;
-  std::string ModuleName;
+  Optional ImportModule;
+  Optional ImportName;
   wasm::WasmSignature *Signature = nullptr;
   Optional GlobalType;
   Optional EventType;
@@ -32,7 +33,7 @@ public:
   // Use a module name of "env" for now, for compatibility with existing tools.
   // This is temporary, and may change, as the ABI is not yet stable.
   MCSymbolWasm(const StringMapEntry *Name, bool isTemporary)
-  : MCSymbol(SymbolKindWasm, Name, isTemporary), ModuleName("env") {}
+  : MCSymbol(SymbolKindWasm, Name, isTemporary) {}
   static bool classof(const MCSymbol *S) { return S->isWasm(); }
 
   const MCExpr *getSize() const { return SymbolSize; }
@@ -55,8 +56,21 @@ public:
   bool isComdat() const { return IsComdat; }
   void setComdat(bool isComdat) { IsComdat = isComdat; }
 
-  const StringRef getModuleName() const { return ModuleName; }
-  void setModuleName(StringRef Name) { ModuleName = Name; }
+  const StringRef getImportModule() const {
+  if (ImportModule.hasValue()) {
+  return ImportModule.getValue();
+  }
+  r