<div dir="ltr">Hi everyone,<div><br></div><div>I writed my own pass (which play with global variables). I can call my pass with "clang++ -mllvm -mypass" and everything is working.</div><div>However if I use my pass with optimizations passes like -O2 or -O3, clang crashs :</div><div><br></div><div><div>0  clang-3.4       0x0000000001b451bb llvm::sys::PrintStackTrace(_IO_FILE*) + 38                                                                                                                                                                                               </div><div>1  clang-3.4       0x0000000001b45438                                                                                                                                                                                                                                          </div><div>2  clang-3.4       0x0000000001b44e8e                                                                                                                                                                                                                                          </div><div>3  libpthread.so.0 0x00007fe7708a2340                                                                                                                                                                                                                                          </div><div>4  clang-3.4       0x0000000000d5ea1a                                                                                                                                                                                                                                          </div><div>5  clang-3.4       0x00000000017c264f                                                                                                                                                                                                                                          </div><div>6  clang-3.4       0x00000000017c2c51 llvm::GlobalStatus::analyzeGlobal(llvm::Value const*, llvm::GlobalStatus&) + 73                                                                                                                                                          </div><div>7  clang-3.4       0x000000000115bd78                                                                                                                                                                                                                                          </div><div>8  clang-3.4       0x000000000115ca60                                                                                                                                                                                                                                          </div><div>9  clang-3.4       0x0000000001160d70                                                                                                                                                                                                                                          </div><div>10 clang-3.4       0x0000000001a208aa                                                                                                                                                                                                                                          </div><div>11 clang-3.4       0x0000000001a20dc6 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 244                                                                                                                                                                                  </div><div>12 clang-3.4       0x0000000001a20fd1 llvm::legacy::PassManager::run(llvm::Module&) + 39                                                                                                                                                                                       </div><div>13 clang-3.4       0x0000000001b7d4aa                                                                                                                                                                                                                                          </div><div>14 clang-3.4       0x0000000001b7d5f3 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::Module*, clang::BackendAction, llvm::raw_ostream*) + 136                                 </div><div>15 clang-3.4       0x0000000001b78efe                                                                                                                                                                                                                                          </div><div>16 clang-3.4       0x0000000001f00754 clang::ParseAST(clang::Sema&, bool, bool) + 780                                                                                                                                                                                          </div><div>17 clang-3.4       0x0000000001e0b188 clang::ASTFrontendAction::ExecuteAction() + 322                                                                                                                                                                                          </div><div>18 clang-3.4       0x0000000001b77f19 clang::CodeGenAction::ExecuteAction() + 1145</div><div>19 clang-3.4       0x0000000001e0accb clang::FrontendAction::Execute() + 205</div><div>20 clang-3.4       0x0000000001de5128 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 564</div><div>21 clang-3.4       0x0000000001b4aea1 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1026</div><div>22 clang-3.4       0x0000000000c1ac73 cc1_main(char const**, char const**, char const*, void*) + 717</div><div>23 clang-3.4       0x0000000000c15997 main + 785</div><div>24 libc.so.6       0x00007fe76fccdec5 __libc_start_main + 245</div><div>25 clang-3.4       0x0000000000c14499</div></div><div><br></div><div>After further investigation i fixed the problem (cf patch attached).</div><div>In the lib/Transforms/Utils/GlobalStatus.cpp : </div><div>const Function *F = I->getParent()->getParent();<br></div><div>There is no check if the first parent is null...</div><div><br></div><div>I don't know if this is me doing something wrong and I->getParent() should never be null or if this is a bug?</div><div>I'm working with clang/llvm 3.4 but same problem in 3.5 and trunk ...</div><div><br></div><div>Regards,</div><div>Christophe</div><div><br></div><div><br></div><div><br></div></div>