Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line source
/* Checks for a bug where static data with a section attribute within a function would stop the function being partitioned into hot and cold blocks. */ /* { dg-require-effective-target freorder } */ /* { dg-options "-O2 -fno-profile-reorder-functions -freorder-blocks-and-partition -save-temps" } */ #define SIZE 10000 #define NOINLINE __attribute__((noinline)) __attribute__ ((noclone)) const char *sarr[SIZE]; #ifdef __APPLE__ const char *buf_hot __attribute__ ((section ("__DATA,__data"))); #else const char *buf_hot __attribute__ ((section (".data"))); #endif const char *buf_cold; void foo (int path); int main (int argc, char *argv[]) { int i; buf_hot = "hello"; buf_cold = "world"; for (i = 0; i < 1000000; i++) foo (argc); return 0; } void NOINLINE foo (int path) { int i; if (path) { for (i = 0; i < SIZE; i++) sarr[i] = buf_hot; } else { for (i = 0; i < SIZE; i++) sarr[i] = buf_cold; } } /* { dg-final-use { scan-assembler "\.section\[\t \]*\.text\.unlikely\[\\n\\r\]+\[\t \]*\.size\[\t \]*foo\.cold" { target *-*-linux* *-*-gnu* } } } */ /* { dg-final-use { scan-assembler {.section[\t ]*__TEXT,__text_cold[^\n]*[\n\r]+_foo.cold:} { target *-*-darwin* } } } */