[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-22 Thread Ben Shi via Phabricator via cfe-commits
benshi001 added a comment.

In D145646#4213975 , @MaskRay wrote:

> In D145646#4213547 , @gulfem wrote:
>
>> We started seeing a test failure in `avr-ld.c`.
>>
>>   /b/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c:48:11: error: 
>>   // LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
>> "-plugin" {{.*}} "-plugin-opt=mcpu=atmega328"
>> ^
>>   :1:1: note: scanning from here
>>   Fuchsia clang version 17.0.0 (https://llvm.googlesource.com/llvm-project 
>> 0d37efdbc599e61ce2a0418723a66d6b45aea8d7)
>>   ^
>>   :6:239: note: possible intended match here
>>
>> https://luci-milo.appspot.com/ui/p/fuchsia/builders/toolchain.ci/clang-linux-x64/b8785950851645447937/overview
>
> I am testing a change and will fix it in one minute.

Thanks! I should pay attention to Fuchsia next time.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145646/new/

https://reviews.llvm.org/D145646

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


[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-22 Thread Gulfem Savrun Yeniceri via Phabricator via cfe-commits
gulfem added a comment.

In D145646#4213975 , @MaskRay wrote:

> In D145646#4213547 , @gulfem wrote:
>
>> We started seeing a test failure in `avr-ld.c`.
>>
>>   /b/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c:48:11: error: 
>>   // LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
>> "-plugin" {{.*}} "-plugin-opt=mcpu=atmega328"
>> ^
>>   :1:1: note: scanning from here
>>   Fuchsia clang version 17.0.0 (https://llvm.googlesource.com/llvm-project 
>> 0d37efdbc599e61ce2a0418723a66d6b45aea8d7)
>>   ^
>>   :6:239: note: possible intended match here
>>
>> https://luci-milo.appspot.com/ui/p/fuchsia/builders/toolchain.ci/clang-linux-x64/b8785950851645447937/overview
>
> I am testing a change and will fix it in one minute.

Thanks, and it fixed the test failure that we have been seeing.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145646/new/

https://reviews.llvm.org/D145646

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


[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-22 Thread Fangrui Song via Phabricator via cfe-commits
MaskRay added a comment.

In D145646#4213547 , @gulfem wrote:

> We started seeing a test failure in `avr-ld.c`.
>
>   /b/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c:48:11: error: 
>   // LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
> "-plugin" {{.*}} "-plugin-opt=mcpu=atmega328"
> ^
>   :1:1: note: scanning from here
>   Fuchsia clang version 17.0.0 (https://llvm.googlesource.com/llvm-project 
> 0d37efdbc599e61ce2a0418723a66d6b45aea8d7)
>   ^
>   :6:239: note: possible intended match here
>
> https://luci-milo.appspot.com/ui/p/fuchsia/builders/toolchain.ci/clang-linux-x64/b8785950851645447937/overview

I am testing a change and will fix it in one minute.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145646/new/

https://reviews.llvm.org/D145646

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


[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-22 Thread Gulfem Savrun Yeniceri via Phabricator via cfe-commits
gulfem added a comment.

We started seeing a test failure in `avr-ld.c`.

  /b/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c:48:11: error: 
  // LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
"-plugin" {{.*}} "-plugin-opt=mcpu=atmega328"
^
  :1:1: note: scanning from here
  Fuchsia clang version 17.0.0 (https://llvm.googlesource.com/llvm-project 
0d37efdbc599e61ce2a0418723a66d6b45aea8d7)
  ^
  :6:239: note: possible intended match here

https://luci-milo.appspot.com/ui/p/fuchsia/builders/toolchain.ci/clang-linux-x64/b8785950851645447937/overview


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145646/new/

https://reviews.llvm.org/D145646

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


[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-21 Thread Ben Shi via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG0d37efdbc599: [clang][driver] Enable -flto on 
AVR (authored by benshi001).

Changed prior to commit:
  https://reviews.llvm.org/D145646?vs=503607=507229#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145646/new/

https://reviews.llvm.org/D145646

Files:
  clang/lib/Driver/ToolChains/AVR.cpp
  clang/lib/Driver/ToolChains/AVR.h
  clang/test/Driver/avr-ld.c


Index: clang/test/Driver/avr-ld.c
===
--- clang/test/Driver/avr-ld.c
+++ clang/test/Driver/avr-ld.c
@@ -43,3 +43,17 @@
 
 // RUN: %clang -### --target=avr -mmcu=atxmega128a1 --rtlib=libgcc --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKO %s
 // LINKO: {{".*ld.*"}} {{.*}} {{"-L.*avrxmega7"}} {{.*}} 
"--defsym=__DATA_REGION_ORIGIN__=0x802000" "--start-group" {{.*}} 
"-latxmega128a1" {{.*}} "--end-group" "--relax" "-mavrxmega7"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKP %s
+// LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
"-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+
+// RUN: %clang -### --target=avr -flto --sysroot %S/Inputs/basic_avr_tree %s 
2>&1 | FileCheck -check-prefix LINKQ %s
+// LINKQ: {{".*ld.*"}} {{.*}} "-plugin"
+// LINKQ-NOT: "-plugin-opt=mcpu"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto=thin --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKR %s
+// LINKR: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
"-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328" "-plugin-opt=thinlto"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKS %s
+// LINKS: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
"-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+// LINKS-NOT: "-plugin-opt=thinlto"
Index: clang/lib/Driver/ToolChains/AVR.h
===
--- clang/lib/Driver/ToolChains/AVR.h
+++ clang/lib/Driver/ToolChains/AVR.h
@@ -36,6 +36,8 @@
   std::string getCompilerRT(const llvm::opt::ArgList , StringRef 
Component,
 FileType Type) const override;
 
+  bool HasNativeLLVMSupport() const override { return true; }
+
 protected:
   Tool *buildLinker() const override;
 
Index: clang/lib/Driver/ToolChains/AVR.cpp
===
--- clang/lib/Driver/ToolChains/AVR.cpp
+++ clang/lib/Driver/ToolChains/AVR.cpp
@@ -506,6 +506,12 @@
 D.Diag(diag::warn_drv_avr_linker_section_addresses_not_implemented) << CPU;
   }
 
+  if (D.isUsingLTO()) {
+assert(!Inputs.empty() && "Must have at least one input.");
+addLTOOptions(getToolChain(), Args, CmdArgs, Output, Inputs[0],
+  D.getLTOMode() == LTOK_Thin);
+  }
+
   // If the family name is known, we can link with the device-specific libgcc.
   // Without it, libgcc will simply not be linked. This matches avr-gcc
   // behavior.


Index: clang/test/Driver/avr-ld.c
===
--- clang/test/Driver/avr-ld.c
+++ clang/test/Driver/avr-ld.c
@@ -43,3 +43,17 @@
 
 // RUN: %clang -### --target=avr -mmcu=atxmega128a1 --rtlib=libgcc --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKO %s
 // LINKO: {{".*ld.*"}} {{.*}} {{"-L.*avrxmega7"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x802000" "--start-group" {{.*}} "-latxmega128a1" {{.*}} "--end-group" "--relax" "-mavrxmega7"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKP %s
+// LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" "-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+
+// RUN: %clang -### --target=avr -flto --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKQ %s
+// LINKQ: {{".*ld.*"}} {{.*}} "-plugin"
+// LINKQ-NOT: "-plugin-opt=mcpu"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto=thin --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKR %s
+// LINKR: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" "-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328" "-plugin-opt=thinlto"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKS %s
+// LINKS: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" "-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+// LINKS-NOT: "-plugin-opt=thinlto"
Index: clang/lib/Driver/ToolChains/AVR.h
===
--- clang/lib/Driver/ToolChains/AVR.h
+++ clang/lib/Driver/ToolChains/AVR.h
@@ 

[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-21 Thread Fangrui Song via Phabricator via cfe-commits
MaskRay accepted this revision.
MaskRay added a comment.
This revision is now accepted and ready to land.

"Close" seems more appropriate to me as this isn't a bug (previously not an 
intended use case).




Comment at: clang/test/Driver/avr-ld.c:59
+// LINKS: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
"-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+// LINKS-NOT: "thinlto"




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145646/new/

https://reviews.llvm.org/D145646

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


[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-21 Thread Ben Shi via Phabricator via cfe-commits
benshi001 added a comment.

ping ...


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145646/new/

https://reviews.llvm.org/D145646

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


[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-15 Thread Ben Shi via Phabricator via cfe-commits
benshi001 added a comment.

ping ...


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145646/new/

https://reviews.llvm.org/D145646

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


[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-08 Thread Ben Shi via Phabricator via cfe-commits
benshi001 updated this revision to Diff 503607.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145646/new/

https://reviews.llvm.org/D145646

Files:
  clang/lib/Driver/ToolChains/AVR.cpp
  clang/lib/Driver/ToolChains/AVR.h
  clang/test/Driver/avr-ld.c


Index: clang/test/Driver/avr-ld.c
===
--- clang/test/Driver/avr-ld.c
+++ clang/test/Driver/avr-ld.c
@@ -43,3 +43,17 @@
 
 // RUN: %clang -### --target=avr -mmcu=atxmega128a1 --rtlib=libgcc --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKO %s
 // LINKO: {{".*ld.*"}} {{.*}} {{"-L.*avrxmega7"}} {{.*}} 
"--defsym=__DATA_REGION_ORIGIN__=0x802000" "--start-group" {{.*}} 
"-latxmega128a1" {{.*}} "--end-group" "--relax" "-mavrxmega7"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKP %s
+// LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
"-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+
+// RUN: %clang -### --target=avr -flto --sysroot %S/Inputs/basic_avr_tree %s 
2>&1 | FileCheck -check-prefix LINKQ %s
+// LINKQ: {{".*ld.*"}} {{.*}} "-plugin"
+// LINKQ-NOT: "-plugin-opt=mcpu"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto=thin --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKR %s
+// LINKR: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
"-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328" "-plugin-opt=thinlto"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKS %s
+// LINKS: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
"-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+// LINKS-NOT: "thinlto"
Index: clang/lib/Driver/ToolChains/AVR.h
===
--- clang/lib/Driver/ToolChains/AVR.h
+++ clang/lib/Driver/ToolChains/AVR.h
@@ -36,6 +36,8 @@
   std::string getCompilerRT(const llvm::opt::ArgList , StringRef 
Component,
 FileType Type) const override;
 
+  bool HasNativeLLVMSupport() const override { return true; }
+
 protected:
   Tool *buildLinker() const override;
 
Index: clang/lib/Driver/ToolChains/AVR.cpp
===
--- clang/lib/Driver/ToolChains/AVR.cpp
+++ clang/lib/Driver/ToolChains/AVR.cpp
@@ -506,6 +506,12 @@
 D.Diag(diag::warn_drv_avr_linker_section_addresses_not_implemented) << CPU;
   }
 
+  if (D.isUsingLTO()) {
+assert(!Inputs.empty() && "Must have at least one input.");
+addLTOOptions(getToolChain(), Args, CmdArgs, Output, Inputs[0],
+  D.getLTOMode() == LTOK_Thin);
+  }
+
   // If the family name is known, we can link with the device-specific libgcc.
   // Without it, libgcc will simply not be linked. This matches avr-gcc
   // behavior.


Index: clang/test/Driver/avr-ld.c
===
--- clang/test/Driver/avr-ld.c
+++ clang/test/Driver/avr-ld.c
@@ -43,3 +43,17 @@
 
 // RUN: %clang -### --target=avr -mmcu=atxmega128a1 --rtlib=libgcc --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKO %s
 // LINKO: {{".*ld.*"}} {{.*}} {{"-L.*avrxmega7"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x802000" "--start-group" {{.*}} "-latxmega128a1" {{.*}} "--end-group" "--relax" "-mavrxmega7"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKP %s
+// LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" "-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+
+// RUN: %clang -### --target=avr -flto --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKQ %s
+// LINKQ: {{".*ld.*"}} {{.*}} "-plugin"
+// LINKQ-NOT: "-plugin-opt=mcpu"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto=thin --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKR %s
+// LINKR: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" "-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328" "-plugin-opt=thinlto"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKS %s
+// LINKS: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" "-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+// LINKS-NOT: "thinlto"
Index: clang/lib/Driver/ToolChains/AVR.h
===
--- clang/lib/Driver/ToolChains/AVR.h
+++ clang/lib/Driver/ToolChains/AVR.h
@@ -36,6 +36,8 @@
   std::string getCompilerRT(const llvm::opt::ArgList , StringRef Component,
 FileType Type) const override;
 
+  bool HasNativeLLVMSupport() const override { return true; }
+
 protected:
   Tool *buildLinker() const override;
 
Index: 

[PATCH] D145646: [clang][driver] Enable '-flto' on AVR

2023-03-08 Thread Ben Shi via Phabricator via cfe-commits
benshi001 created this revision.
benshi001 added reviewers: MaskRay, aykevl.
Herald added subscribers: Jim, inglorion, dylanmckay.
Herald added a project: All.
benshi001 requested review of this revision.
Herald added subscribers: cfe-commits, jacquesguan.
Herald added a project: clang.

Fixes https://github.com/llvm/llvm-project/issues/55940


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D145646

Files:
  clang/lib/Driver/ToolChains/AVR.cpp
  clang/lib/Driver/ToolChains/AVR.h
  clang/test/Driver/avr-ld.c


Index: clang/test/Driver/avr-ld.c
===
--- clang/test/Driver/avr-ld.c
+++ clang/test/Driver/avr-ld.c
@@ -43,3 +43,10 @@
 
 // RUN: %clang -### --target=avr -mmcu=atxmega128a1 --rtlib=libgcc --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKO %s
 // LINKO: {{".*ld.*"}} {{.*}} {{"-L.*avrxmega7"}} {{.*}} 
"--defsym=__DATA_REGION_ORIGIN__=0x802000" "--start-group" {{.*}} 
"-latxmega128a1" {{.*}} "--end-group" "--relax" "-mavrxmega7"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot 
%S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKP %s
+// LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" 
"-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+
+// RUN: %clang -### --target=avr -flto --sysroot %S/Inputs/basic_avr_tree %s 
2>&1 | FileCheck -check-prefix LINKQ %s
+// LINKQ: {{".*ld.*"}} {{.*}} "-plugin"
+// LINKQ-NOT: "-plugin-opt=mcpu"
Index: clang/lib/Driver/ToolChains/AVR.h
===
--- clang/lib/Driver/ToolChains/AVR.h
+++ clang/lib/Driver/ToolChains/AVR.h
@@ -36,6 +36,8 @@
   std::string getCompilerRT(const llvm::opt::ArgList , StringRef 
Component,
 FileType Type) const override;
 
+  bool HasNativeLLVMSupport() const override { return true; }
+
 protected:
   Tool *buildLinker() const override;
 
Index: clang/lib/Driver/ToolChains/AVR.cpp
===
--- clang/lib/Driver/ToolChains/AVR.cpp
+++ clang/lib/Driver/ToolChains/AVR.cpp
@@ -506,6 +506,12 @@
 D.Diag(diag::warn_drv_avr_linker_section_addresses_not_implemented) << CPU;
   }
 
+  if (D.isUsingLTO()) {
+assert(!Inputs.empty() && "Must have at least one input.");
+addLTOOptions(getToolChain(), Args, CmdArgs, Output, Inputs[0],
+  D.getLTOMode() == LTOK_Thin);
+  }
+
   // If the family name is known, we can link with the device-specific libgcc.
   // Without it, libgcc will simply not be linked. This matches avr-gcc
   // behavior.


Index: clang/test/Driver/avr-ld.c
===
--- clang/test/Driver/avr-ld.c
+++ clang/test/Driver/avr-ld.c
@@ -43,3 +43,10 @@
 
 // RUN: %clang -### --target=avr -mmcu=atxmega128a1 --rtlib=libgcc --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKO %s
 // LINKO: {{".*ld.*"}} {{.*}} {{"-L.*avrxmega7"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x802000" "--start-group" {{.*}} "-latxmega128a1" {{.*}} "--end-group" "--relax" "-mavrxmega7"
+
+// RUN: %clang -### --target=avr -mmcu=atmega328 -flto --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKP %s
+// LINKP: {{".*ld.*"}} {{.*}} "--defsym=__DATA_REGION_ORIGIN__=0x800100" "-plugin" {{.*}}  "-plugin-opt=mcpu=atmega328"
+
+// RUN: %clang -### --target=avr -flto --sysroot %S/Inputs/basic_avr_tree %s 2>&1 | FileCheck -check-prefix LINKQ %s
+// LINKQ: {{".*ld.*"}} {{.*}} "-plugin"
+// LINKQ-NOT: "-plugin-opt=mcpu"
Index: clang/lib/Driver/ToolChains/AVR.h
===
--- clang/lib/Driver/ToolChains/AVR.h
+++ clang/lib/Driver/ToolChains/AVR.h
@@ -36,6 +36,8 @@
   std::string getCompilerRT(const llvm::opt::ArgList , StringRef Component,
 FileType Type) const override;
 
+  bool HasNativeLLVMSupport() const override { return true; }
+
 protected:
   Tool *buildLinker() const override;
 
Index: clang/lib/Driver/ToolChains/AVR.cpp
===
--- clang/lib/Driver/ToolChains/AVR.cpp
+++ clang/lib/Driver/ToolChains/AVR.cpp
@@ -506,6 +506,12 @@
 D.Diag(diag::warn_drv_avr_linker_section_addresses_not_implemented) << CPU;
   }
 
+  if (D.isUsingLTO()) {
+assert(!Inputs.empty() && "Must have at least one input.");
+addLTOOptions(getToolChain(), Args, CmdArgs, Output, Inputs[0],
+  D.getLTOMode() == LTOK_Thin);
+  }
+
   // If the family name is known, we can link with the device-specific libgcc.
   // Without it, libgcc will simply not be linked. This matches avr-gcc
   // behavior.
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits