diff --git a/gcc/testsuite/g++.dg/dg.exp b/gcc/testsuite/g++.dg/dg.exp index 23542ace87e94ff723dfd76cc160e6bfce3faf84..e2cf62478c14d956d0bb215de9eb365322b34ab2 100644 --- a/gcc/testsuite/g++.dg/dg.exp +++ b/gcc/testsuite/g++.dg/dg.exp @@ -18,6 +18,7 @@ # Load support procs. load_lib g++-dg.exp +load_lib oeaware.exp # If a testcase doesn't have special options, use these. global DEFAULT_CXXFLAGS diff --git a/gcc/testsuite/gcc.dg/oeaware-main-in-namespace.cpp b/gcc/testsuite/g++.dg/oeaware-main-in-namespace.C similarity index 100% rename from gcc/testsuite/gcc.dg/oeaware-main-in-namespace.cpp rename to gcc/testsuite/g++.dg/oeaware-main-in-namespace.C diff --git a/gcc/testsuite/g++.dg/oeaware-with-lto.C b/gcc/testsuite/g++.dg/oeaware-with-lto.C new file mode 100644 index 0000000000000000000000000000000000000000..fe77daede344167ed7612e5d782494ba8b36b591 --- /dev/null +++ b/gcc/testsuite/g++.dg/oeaware-with-lto.C @@ -0,0 +1,12 @@ +/* { dg-do compile { target *-*-linux* *-*-gnu* } } */ +/* { dg-options "-foeaware-policy=1 -flto -ffat-lto-objects" } */ + +namespace radar8446940 { +int main () { + return 0; +} +} + +int main () { + return 0; +} \ No newline at end of file diff --git a/gcc/varasm.cc b/gcc/varasm.cc index 5134c0c1fed86d6d765ee4dda539e10f2c1f0268..c771ede71b8e21e5169733668dc8b48be586aa15 100644 --- a/gcc/varasm.cc +++ b/gcc/varasm.cc @@ -8581,8 +8581,17 @@ create_oeaware_section () TREE_CODE (DECL_CONTEXT (cfun->decl)) != TRANSLATION_UNIT_DECL)) return; - int flags = SECTION_STRINGS; - section *oe_section = get_section (".GCC4OE_oeAware", flags, NULL, true); + const char *sect_name = ".GCC4OE_oeAware"; + + /* If section already exists, just skip. */ + section **slot + = section_htab->find_slot_with_hash (sect_name, + htab_hash_string (sect_name), + INSERT); + if (!slot || *slot != NULL) + return; + + section *oe_section = get_section (sect_name, SECTION_STRINGS, NULL, false); switch_to_section (oe_section); gcc_assert (oeaware_optimize_policy <= UINT8_MAX);