簡體   English   中英

Clang ++ PGO:空.profraw

[英]Clang++ PGO: empty .profraw


我正在尋求Clang Profile Guided Optimization問題的幫助。 我正在使用clang ++ - 3.7,但問題仍然存在於clang ++ - 3.6中。
如果我嘗試使用虛擬代碼進行PGO,一切都很好:

  • 我用-fprofile-instr-generate編譯:
    clang ++ -o test -fprofile-instr-generate dummy.cpp
  • 可執行文件“test”在啟動時會生成default.profraw文件
  • 我可以將配置文件與llvm-profdata合並合並
  • 最后,我可以使用.profdata上的-fprofile-instr-use進行配置文件集成
  • 但是對於一個更大的項目,存在一些問題。 我使用makefile和腳本來自動化該過程,但這是操作流程:

  • 我編譯包含創建目標文件的類的源:
    clang ++ -c --std = c ++ 0x -O3 -flto -fprofile-instr-generate src / foo1.cpp -o obj / foo1.o
    clang ++ -c --std = c ++ 0x -O3 -flto -fprofile-instr-generate src / foo2.cpp -o obj / foo2.o
    clang ++ -c --std = c ++ 0x -O3 -flto -fprofile-instr-generate src / foo3.cpp -o obj / foo3.o
  • 然后我鏈接對象:
    clang ++ -O3 -flto -fprofile-instr-generate obj / foo1.o obj / foo2.o obj / foo3.o -o foobar.out
  • 此時存在問題:當我嘗試使用訓練實例執行foobar.out時,生成的.profraw始終為空(執行速度正常,而不是像創建pgo期間那樣慢),當我嘗試使用配置文件集成進行編譯(在.profraw文件合並之后),編譯器總是在我的項目中為每個foo * .cpp文件提供警告“警告:沒有可用於文件foo * .cpp的配置文件數據”。

    任何人都可以幫助我試圖了解問題出在哪里? 先感謝您!

  • 解決了。 問題是僅在正常退出(返回或退出)的情況​​下生成配置文件,而在我的代碼中,主要以_exit結束。

    暫無
    暫無

    聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM