[llvm-branch-commits] [cfe-branch] r278605 - Merge r278393 and r278395.

2016-08-19 Thread Ed Schouten via llvm-branch-commits
Author: ed
Date: Sat Aug 13 15:43:56 2016
New Revision: 278605

URL: http://llvm.org/viewvc/llvm-project?rev=278605&view=rev
Log:
Merge r278393 and r278395.

LLVM/Clang 3.8 is directly usable as a cross compiler for CloudABI/i686.
In 3.9rc1 there are a couple of regressions in the driver that cause it
to be less usable:

- PIE was enabled unconditionally, even though it's only available for
  x86-64 and aarch64.
- Some inline assembly fails to build, due to a shortage of registers,
  as frame pointers are not omitted.

Both these changes are fairly low risk (read: they don't affect other
targets), so go ahead and merge them into 3.9, so we can use an
unmodified compiler on all architectures.


Modified:
cfe/branches/release_39/   (props changed)
cfe/branches/release_39/lib/Driver/ToolChains.cpp
cfe/branches/release_39/lib/Driver/ToolChains.h
cfe/branches/release_39/lib/Driver/Tools.cpp
cfe/branches/release_39/test/Driver/cloudabi.c
cfe/branches/release_39/test/Driver/cloudabi.cpp
cfe/branches/release_39/test/Driver/frame-pointer-elim.c

Propchange: cfe/branches/release_39/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Aug 13 15:43:56 2016
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276900,276979,276983,277095,277138,277141,277221,277307,277522,277743,277796-277797,277866,277889,277900,278139,278234-278235
+/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276900,276979,276983,277095,277138,277141,277221,277307,277522,277743,277796-277797,277866,277889,277900,278139,278234-278235,278393,278395
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_39/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Driver/ToolChains.cpp?rev=278605&r1=278604&r2=278605&view=diff
==
--- cfe/branches/release_39/lib/Driver/ToolChains.cpp (original)
+++ cfe/branches/release_39/lib/Driver/ToolChains.cpp Sat Aug 13 15:43:56 2016
@@ -3281,6 +3281,19 @@ Tool *CloudABI::buildLinker() const {
   return new tools::cloudabi::Linker(*this);
 }
 
+bool CloudABI::isPIEDefault() const {
+  // Only enable PIE on architectures that support PC-relative
+  // addressing. PC-relative addressing is required, as the process
+  // startup code must be able to relocate itself.
+  switch (getTriple().getArch()) {
+  case llvm::Triple::aarch64:
+  case llvm::Triple::x86_64:
+return true;
+  default:
+return false;
+  }
+}
+
 SanitizerMask CloudABI::getSupportedSanitizers() const {
   SanitizerMask Res = ToolChain::getSupportedSanitizers();
   Res |= SanitizerKind::SafeStack;

Modified: cfe/branches/release_39/lib/Driver/ToolChains.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Driver/ToolChains.h?rev=278605&r1=278604&r2=278605&view=diff
==
--- cfe/branches/release_39/lib/Driver/ToolChains.h (original)
+++ cfe/branches/release_39/lib/Driver/ToolChains.h Sat Aug 13 15:43:56 2016
@@ -634,8 +634,7 @@ public:
   void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) const override;
 
-  bool isPIEDefault() const override { return true; }
-
+  bool isPIEDefault() const override;
   SanitizerMask getSupportedSanitizers() const override;
   SanitizerMask getDefaultSanitizers() const override;
 

Modified: cfe/branches/release_39/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Driver/Tools.cpp?rev=278605&r1=278604&r2=278605&view=diff
==
--- cfe/branches/release_39/lib/Driver/Tools.cpp (original)
+++ cfe/branches/release_39/lib/Driver/Tools.cpp Sat Aug 13 15:43:56 2016
@@ -3258,7 +3258,7 @@ static bool shouldUseFramePointerForTarg
 break;
   }
 
-  if (Triple.isOSLinux()) {
+  if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI) {
 switch (Triple.getArch()) {
 // Don't use a frame pointer on linux if optimizing for certain targets.
 case llvm::Triple::mips64:
@@ -7458,11 +7458,13 @@ void cloudabi::Linker::ConstructJob(Comp
 
   // CloudABI only supports static linkage.
   CmdArgs.push_back("-Bstatic");
-
-  // CloudABI uses Position Independent Executables exclusively.
-  CmdArgs.push_back("-pie");
   CmdArgs.push_back("--no-dynamic-linker");
-  CmdArgs.push_back("-zrelro");
+
+  // Provide PIE linker flags in case PIE is default for the architecture.
+  if (ToolChain.isPIEDefault()) {
+CmdArgs.push_back("-pie");
+CmdArgs.push_back("-zrelro");
+  }
 
   CmdArgs.push_back("--eh-frame-hdr");
   CmdArgs.push_back("--gc-sections");

Modified

[llvm-branch-commits] [cfe-branch] r287093 - Merge r280672, per bug 30839:

2016-11-16 Thread Ed Schouten via llvm-branch-commits
Author: ed
Date: Wed Nov 16 04:18:17 2016
New Revision: 287093

URL: http://llvm.org/viewvc/llvm-project?rev=287093&view=rev
Log:
Merge r280672, per bug 30839:

  Add support for targeting armv6-unknown-cloudabi-eabihf.

  I'm in the progress of adding ARMv6 support to CloudABI. On the compiler
  side, everything seems to work properly with this tiny change applied.

Modified:
cfe/branches/release_39/   (props changed)
cfe/branches/release_39/lib/Basic/Targets.cpp
cfe/branches/release_39/test/Preprocessor/init.c

Propchange: cfe/branches/release_39/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov 16 04:18:17 2016
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276900,276979,276983,277095,277138,277141,277221,277307,277522,277743,277783,277796-277797,277852,277866,277889,277900,278139,278156,278234-278235,278393,278395,278763,278786,278988,284110,284229,286103,286106,286129,286584,286944,286953,287025
+/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276900,276979,276983,277095,277138,277141,277221,277307,277522,277743,277783,277796-277797,277852,277866,277889,277900,278139,278156,278234-278235,278393,278395,278763,278786,278988,280672,284110,284229,286103,286106,286129,286584,286944,286953,287025
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_39/lib/Basic/Targets.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Basic/Targets.cpp?rev=287093&r1=287092&r2=287093&view=diff
==
--- cfe/branches/release_39/lib/Basic/Targets.cpp (original)
+++ cfe/branches/release_39/lib/Basic/Targets.cpp Wed Nov 16 04:18:17 2016
@@ -8170,6 +8170,8 @@ static TargetInfo *AllocateTarget(const
   return new DarwinARMTargetInfo(Triple, Opts);
 
 switch (os) {
+case llvm::Triple::CloudABI:
+  return new CloudABITargetInfo(Triple, Opts);
 case llvm::Triple::Linux:
   return new LinuxTargetInfo(Triple, Opts);
 case llvm::Triple::FreeBSD:

Modified: cfe/branches/release_39/test/Preprocessor/init.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/test/Preprocessor/init.c?rev=287093&r1=287092&r2=287093&view=diff
==
--- cfe/branches/release_39/test/Preprocessor/init.c (original)
+++ cfe/branches/release_39/test/Preprocessor/init.c Wed Nov 16 04:18:17 2016
@@ -1975,6 +1975,11 @@
 // ARMEABIHARDFP:#define __arm 1
 // ARMEABIHARDFP:#define __arm__ 1
 
+// RUN: %clang_cc1 -E -dM -ffreestanding -triple=armv6-unknown-cloudabi-eabihf 
< /dev/null | FileCheck -match-full-lines -check-prefix ARMV6-CLOUDABI %s
+//
+// ARMV6-CLOUDABI:#define __CloudABI__ 1
+// ARMV6-CLOUDABI:#define __arm__ 1
+
 // RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-netbsd-eabi < /dev/null | 
FileCheck -match-full-lines -check-prefix ARM-NETBSD %s
 //
 // ARM-NETBSD-NOT:#define _LP64


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