New issue
Advanced search Search tips

Issue 728360 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Closed: Jun 2017
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug

Blocking:
issue 705071



Sign in to add a comment

autofdo fails when built using compiler-rt as default rtlib

Project Member Reported by manojgupta@chromium.org, May 31 2017

Issue description

When clang is host compiler, autofdo does not build with compiler-rt as default rtlib.

https://uberchromegw.corp.google.com/i/chromiumos.tryserver/builders/chromiumos-sdk/builds/2305

autofdo-0.15-r3: rm -f libglog.a
autofdo-0.15-r3: ar cru libglog.a glog/src/libglog_a-logging.o glog/src/libglog_a-raw_logging.o glog/src/libglog_a-vlog_is_on.o glog/src/libglog_a-utilities.o glog/src/libglog_a-demangle.o glog/src/libglog_a-symbolize.o glog/src/libglog_a-signalhandler.o 
autofdo-0.15-r3: x86_64-pc-linux-gnu-ranlib libglog.a
autofdo-0.15-r3: llvm_profile_writer.cc:101:18: error: no member named 'setName' in
autofdo-0.15-r3:       'llvm::StringMap<llvm::sampleprof::FunctionSamples,
autofdo-0.15-r3:       llvm::MallocAllocator>'
autofdo-0.15-r3:   callee_profile.setName(GetNameRef(callsite.second));
autofdo-0.15-r3:   ~~~~~~~~~~~~~~ ^
autofdo-0.15-r3: llvm_profile_writer.cc:102:17: error: no matching member function for call to
autofdo-0.15-r3:       'push_back'
autofdo-0.15-r3:   inline_stack_.push_back(&callee_profile);
autofdo-0.15-r3:   ~~~~~~~~~~~~~~^~~~~~~~~
autofdo-0.15-r3: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4/bits/stl_vector.h:1038:7: note: 
autofdo-0.15-r3:       candidate function not viable: no known conversion from
autofdo-0.15-r3:       'llvm::StringMap<llvm::sampleprof::FunctionSamples, llvm::MallocAllocator>
autofdo-0.15-r3:       *' to 'const std::vector<llvm::sampleprof::FunctionSamples *,
autofdo-0.15-r3:       std::allocator<llvm::sampleprof::FunctionSamples *> >::value_type' (aka
autofdo-0.15-r3:       'llvm::sampleprof::FunctionSamples *const') for 1st argument
autofdo-0.15-r3:       push_back(const value_type& __x)
autofdo-0.15-r3:       ^
autofdo-0.15-r3: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4/bits/stl_vector.h:1057:7: note: 
autofdo-0.15-r3:       candidate function not viable: no known conversion from
autofdo-0.15-r3:       'llvm::StringMap<llvm::sampleprof::FunctionSamples, llvm::MallocAllocator>
autofdo-0.15-r3:       *' to 'std::vector<llvm::sampleprof::FunctionSamples *,
autofdo-0.15-r3:       std::allocator<llvm::sampleprof::FunctionSamples *> >::value_type' (aka
autofdo-0.15-r3:       'llvm::sampleprof::FunctionSamples *') for 1st argument
autofdo-0.15-r3:       push_back(value_type&& __x)
autofdo-0.15-r3:       ^
autofdo-0.15-r3: 2 errors generated.
autofdo-0.15-r3: make[1]: *** [Makefile:1059: create_llvm_prof-llvm_profile_writer.o] Error 1
 
Root Cause is these functions are removed from SampleProf.h
file that gets pulled in with llvm-next. So the error is correct and nothing to do with compiler-rt, but happens because of llvm-next.


Existing github bug https://github.com/google/autofdo/issues/42
Project Member

Comment 3 by bugdroid1@chromium.org, Jun 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/e6d27f8c20b576c7abf2e4bd0454691e645e518d

commit e6d27f8c20b576c7abf2e4bd0454691e645e518d
Author: Manoj Gupta <manojgupta@google.com>
Date: Fri Jun 02 02:47:42 2017

Update autofdo to use different APIs with llvm-next.

LLVM's ProfileData API has changed. So patch autofdo
when built with llvm-next to use newer API.

BUG= chromium:728360 
TEST=autofdo builds with llvm-next.

Change-Id: Ib006aec7ba73f427f991cea3756088f27eff0d09
Reviewed-on: https://chromium-review.googlesource.com/520663
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Caroline Tice <cmtice@chromium.org>
Commit-Queue: Manoj Gupta <manojgupta@chromium.org>
Trybot-Ready: Manoj Gupta <manojgupta@chromium.org>

[add] https://crrev.com/e6d27f8c20b576c7abf2e4bd0454691e645e518d/sys-devel/autofdo/files/autofdo-0.15-llvm-next.patch
[rename] https://crrev.com/e6d27f8c20b576c7abf2e4bd0454691e645e518d/sys-devel/autofdo/autofdo-0.15-r4.ebuild
[modify] https://crrev.com/e6d27f8c20b576c7abf2e4bd0454691e645e518d/sys-devel/autofdo/autofdo-0.15.ebuild

Status: Verified (was: Untriaged)
Toolchain llvm_next builders are failing with this change. 
They set latest_toolchain=True and USE="llvm-next" but it does not build the host llvm compiler which is still the older version.
We should probably ask the upstream to make a new release for similar issues next time.
Project Member

Comment 7 by bugdroid1@chromium.org, Jun 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/73e8d004472a02e14b364122d283d78f09b22f52

commit 73e8d004472a02e14b364122d283d78f09b22f52
Author: Manoj Gupta <manojgupta@google.com>
Date: Fri Jun 02 23:59:42 2017

Remove autofdo llvm-next use flag.

Toolchain builders fail to build autofdo with llvm-next
as host clang is not rebuilt.
Instead directly query if llvm was built with llvm-next and apply
the patch to use newer API.
Also update EAPI to 5 to be able to use the query.

BUG= chromium:728360 
TEST=autofdo builds with llvm with and without llvm-next.

Change-Id: I6192c0a35cb4161ffa195f54083da5e89373bb51
Reviewed-on: https://chromium-review.googlesource.com/522908
Commit-Ready: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[rename] https://crrev.com/73e8d004472a02e14b364122d283d78f09b22f52/sys-devel/autofdo/autofdo-0.15-r5.ebuild
[modify] https://crrev.com/73e8d004472a02e14b364122d283d78f09b22f52/sys-devel/autofdo/autofdo-0.15.ebuild

Labels: compiler-rt-migration

Sign in to add a comment