[llvm-dev] noinline changes between 3.8 and 4.0?

Matthew O'Connor via llvm-dev llvm-dev at lists.llvm.org
Fri May 19 12:50:33 PDT 2017


Huh, that appears to do it - preventing `noinline` from showing up on
defined functions. Thanks.

Out of curiosity, what does that do? And what changed to require this?

On Fri, May 19, 2017 at 1:47 PM, Friedman, Eli <efriedma at codeaurora.org>
wrote:

> On 5/19/2017 12:42 PM, Matthew O'Connor via llvm-dev wrote:
>
> All,
>
> I'm in the process of upgrading an LLVM client from using 3.8 to using 4.0
> and am running into the following issue:
>
> // compile with:
> // clang++ -std=c++11 -Wno-c++14-extensions -S -emit-llvm
> //   ~/chrono.cpp -o chrono.ll
> #include <chrono>
> #include <ratio>
> #include <thread>
> using namespace std;
> using namespace std::chrono;
>
> using tick = ratio<1, 300>;
> using tick_duration = duration<long, tick>;
>
> class ticking_clock {
> public:
>   using duration = tick_duration;
>   using rep = duration::rep;
>   using period = duration::period;
>   using time_point = time_point<ticking_clock, duration>;
>   static constexpr bool is_steady = true;
>
>   static time_point now() noexcept;
> };
>
> void f(long &elapsed_time) {
>     auto start = ticking_clock::now();
>     this_thread::sleep_for(tick_duration(71));
>     auto finish = ticking_clock::now();
>     auto dur = finish - start;
>     elapsed_time = dur.count();
> }
>
> The functions defined in the resultant IR are marked `noinline` in 4.0 but
> do not have that same attribute in 3.8. Running the unoptimized IR through
> `opt -O2 <chrono.ll -S >chrono.opt.ll` produces the expected 6 line
> function in 3.8 but does no inlining in 4.0 (respecting the attribute).
>
> This appears to be a large change from where `clang++ -O2` was roughly
> equal to `clang++ -O0 | opt -O2` in 3.8 but is not in 4.0.
>
> Is there a way to obtain that previous functionality in 4.0?
>
>
> Try "-O2 -Xclang -disable-llvm-passes".
>
> -Eli
>
> --
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170519/a21efa37/attachment.html>


More information about the llvm-dev mailing list