GAS LISTING /tmp/ccIlNqbG.s page 1 1 .file "constexpr.cpp" 2 .text 3 .Ltext0: 5 _Z41__static_initialization_and_destruction_0ii: 6 .LFB1401: 7 .file 1 "constexpr.cpp" 1:constexpr.cpp **** #include <iostream> 2:constexpr.cpp **** 3:constexpr.cpp **** constexpr int myexpr(int arg) { 4:constexpr.cpp **** return arg * 3; 5:constexpr.cpp **** } 6:constexpr.cpp **** 7:constexpr.cpp **** void dirtyArray(int *x) { 8:constexpr.cpp **** x[1] = 11; 9:constexpr.cpp **** } 10:constexpr.cpp **** 11:constexpr.cpp **** void constExpr() { 12:constexpr.cpp **** int x[myexpr(11)]; 13:constexpr.cpp **** x[3] = 17; 14:constexpr.cpp **** 15:constexpr.cpp **** dirtyArray(x); 16:constexpr.cpp **** 17:constexpr.cpp **** std::cout << "constExpr " << x[3] << "size=" << sizeof(x) << std::endl; 18:constexpr.cpp **** } 8 .loc 1 18 0 9 .cfi_startproc 10 .LVL0: 11 0000 83FF01 cmpl $1, %edi 12 0003 752E jne .L5 13 .loc 1 18 0 discriminator 1 14 0005 81FEFFFF cmpl $65535, %esi 14 0000 15 000b 7526 jne .L5 16 .loc 1 18 0 is_stmt 0 17 000d 4883EC08 subq $8, %rsp 18 .cfi_def_cfa_offset 16 19 .file 2 "/usr/include/c++/4.8/iostream" 1:/usr/include/c++/4.8/iostream **** // Standard iostream objects -*- C++ -*- 2:/usr/include/c++/4.8/iostream **** 3:/usr/include/c++/4.8/iostream **** // Copyright (C) 1997-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/iostream **** // 5:/usr/include/c++/4.8/iostream **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/iostream **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/iostream **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/iostream **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/iostream **** // any later version. 10:/usr/include/c++/4.8/iostream **** 11:/usr/include/c++/4.8/iostream **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/iostream **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/iostream **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/iostream **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/iostream **** 16:/usr/include/c++/4.8/iostream **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/iostream **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/iostream **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/iostream **** 20:/usr/include/c++/4.8/iostream **** // You should have received a copy of the GNU General Public License and GAS LISTING /tmp/ccIlNqbG.s page 2 21:/usr/include/c++/4.8/iostream **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/iostream **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/iostream **** // <http://www.gnu.org/licenses/>. 24:/usr/include/c++/4.8/iostream **** 25:/usr/include/c++/4.8/iostream **** /** @file include/iostream 26:/usr/include/c++/4.8/iostream **** * This is a Standard C++ Library header. 27:/usr/include/c++/4.8/iostream **** */ 28:/usr/include/c++/4.8/iostream **** 29:/usr/include/c++/4.8/iostream **** // 30:/usr/include/c++/4.8/iostream **** // ISO C++ 14882: 27.3 Standard iostream objects 31:/usr/include/c++/4.8/iostream **** // 32:/usr/include/c++/4.8/iostream **** 33:/usr/include/c++/4.8/iostream **** #ifndef _GLIBCXX_IOSTREAM 34:/usr/include/c++/4.8/iostream **** #define _GLIBCXX_IOSTREAM 1 35:/usr/include/c++/4.8/iostream **** 36:/usr/include/c++/4.8/iostream **** #pragma GCC system_header 37:/usr/include/c++/4.8/iostream **** 38:/usr/include/c++/4.8/iostream **** #include <bits/c++config.h> 39:/usr/include/c++/4.8/iostream **** #include <ostream> 40:/usr/include/c++/4.8/iostream **** #include <istream> 41:/usr/include/c++/4.8/iostream **** 42:/usr/include/c++/4.8/iostream **** namespace std _GLIBCXX_VISIBILITY(default) 43:/usr/include/c++/4.8/iostream **** { 44:/usr/include/c++/4.8/iostream **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 45:/usr/include/c++/4.8/iostream **** 46:/usr/include/c++/4.8/iostream **** /** 47:/usr/include/c++/4.8/iostream **** * @name Standard Stream Objects 48:/usr/include/c++/4.8/iostream **** * 49:/usr/include/c++/4.8/iostream **** * The <iostream> header declares the eight <em>standard stream 50:/usr/include/c++/4.8/iostream **** * objects</em>. For other declarations, see 51:/usr/include/c++/4.8/iostream **** * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html 52:/usr/include/c++/4.8/iostream **** * and the @link iosfwd I/O forward declarations @endlink 53:/usr/include/c++/4.8/iostream **** * 54:/usr/include/c++/4.8/iostream **** * They are required by default to cooperate with the global C 55:/usr/include/c++/4.8/iostream **** * library's @c FILE streams, and to be available during program 56:/usr/include/c++/4.8/iostream **** * startup and termination. For more information, see the HOWTO 57:/usr/include/c++/4.8/iostream **** * linked to above. 58:/usr/include/c++/4.8/iostream **** */ 59:/usr/include/c++/4.8/iostream **** //@{ 60:/usr/include/c++/4.8/iostream **** extern istream cin; /// Linked to standard input 61:/usr/include/c++/4.8/iostream **** extern ostream cout; /// Linked to standard output 62:/usr/include/c++/4.8/iostream **** extern ostream cerr; /// Linked to standard error (unbuffered) 63:/usr/include/c++/4.8/iostream **** extern ostream clog; /// Linked to standard error (buffered) 64:/usr/include/c++/4.8/iostream **** 65:/usr/include/c++/4.8/iostream **** #ifdef _GLIBCXX_USE_WCHAR_T 66:/usr/include/c++/4.8/iostream **** extern wistream wcin; /// Linked to standard input 67:/usr/include/c++/4.8/iostream **** extern wostream wcout; /// Linked to standard output 68:/usr/include/c++/4.8/iostream **** extern wostream wcerr; /// Linked to standard error (unbuffered) 69:/usr/include/c++/4.8/iostream **** extern wostream wclog; /// Linked to standard error (buffered) 70:/usr/include/c++/4.8/iostream **** #endif 71:/usr/include/c++/4.8/iostream **** //@} 72:/usr/include/c++/4.8/iostream **** 73:/usr/include/c++/4.8/iostream **** // For construction of filebuffers for cout, cin, cerr, clog et. al. 74:/usr/include/c++/4.8/iostream **** static ios_base::Init __ioinit; 20 .loc 2 74 0 is_stmt 1 21 0011 BF000000 movl $_ZStL8__ioinit, %edi 21 00 GAS LISTING /tmp/ccIlNqbG.s page 3 22 .LVL1: 23 0016 E8000000 call _ZNSt8ios_base4InitC1Ev 23 00 24 .LVL2: 25 001b BA000000 movl $__dso_handle, %edx 25 00 26 0020 BE000000 movl $_ZStL8__ioinit, %esi 26 00 27 0025 BF000000 movl $_ZNSt8ios_base4InitD1Ev, %edi 27 00 28 002a E8000000 call __cxa_atexit 28 00 29 .LVL3: 30 .loc 1 18 0 31 002f 4883C408 addq $8, %rsp 32 .cfi_def_cfa_offset 8 33 .L5: 34 0033 C3 ret 35 .cfi_endproc 36 .LFE1401: 38 .globl _Z10dirtyArrayPi 40 _Z10dirtyArrayPi: 41 .LFB1244: 7:constexpr.cpp **** x[1] = 11; 42 .loc 1 7 0 43 .cfi_startproc 44 .LVL4: 8:constexpr.cpp **** } 45 .loc 1 8 0 46 0034 C747040B movl $11, 4(%rdi) 46 000000 47 003b C3 ret 48 .cfi_endproc 49 .LFE1244: 51 .section .rodata.str1.1,"aMS",@progbits,1 52 .LC0: 53 0000 636F6E73 .string "constExpr " 53 74457870 53 722000 54 .LC1: 55 000b 73697A65 .string "size=" 55 3D00 56 .text 57 .globl _Z9constExprv 59 _Z9constExprv: 60 .LFB1245: 11:constexpr.cpp **** int x[myexpr(11)]; 61 .loc 1 11 0 62 .cfi_startproc 63 003c 53 pushq %rbx 64 .cfi_def_cfa_offset 16 65 .cfi_offset 3, -16 66 003d 4881EC90 subq $144, %rsp 66 000000 67 .cfi_def_cfa_offset 160 68 .LBB2: 13:constexpr.cpp **** GAS LISTING /tmp/ccIlNqbG.s page 4 69 .loc 1 13 0 70 0044 C744240C movl $17, 12(%rsp) 70 11000000 15:constexpr.cpp **** 71 .loc 1 15 0 72 004c 4889E7 movq %rsp, %rdi 73 004f E8000000 call _Z10dirtyArrayPi 73 00 74 .LVL5: 17:constexpr.cpp **** } 75 .loc 1 17 0 76 0054 8B5C240C movl 12(%rsp), %ebx 77 0058 BE000000 movl $.LC0, %esi 77 00 78 005d BF000000 movl $_ZSt4cout, %edi 78 00 79 0062 E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 79 00 80 .LVL6: 81 0067 89DE movl %ebx, %esi 82 0069 4889C7 movq %rax, %rdi 83 006c E8000000 call _ZNSolsEi 83 00 84 .LVL7: 85 0071 BE000000 movl $.LC1, %esi 85 00 86 0076 4889C7 movq %rax, %rdi 87 0079 E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 87 00 88 .LVL8: 89 007e BE840000 movl $132, %esi 89 00 90 0083 4889C7 movq %rax, %rdi 91 0086 E8000000 call _ZNSolsEm 91 00 92 .LVL9: 93 008b BE000000 movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi 93 00 94 0090 4889C7 movq %rax, %rdi 95 0093 E8000000 call _ZNSolsEPFRSoS_E 95 00 96 .LVL10: 97 .LBE2: 98 .loc 1 18 0 99 0098 4881C490 addq $144, %rsp 99 000000 100 .cfi_def_cfa_offset 16 101 009f 5B popq %rbx 102 .cfi_def_cfa_offset 8 103 00a0 C3 ret 104 .cfi_endproc 105 .LFE1245: 108 _GLOBAL__sub_I__Z10dirtyArrayPi: 109 .LFB1402: 110 .loc 1 18 0 111 .cfi_startproc 112 00a1 4883EC08 subq $8, %rsp GAS LISTING /tmp/ccIlNqbG.s page 5 113 .cfi_def_cfa_offset 16 114 .loc 1 18 0 115 00a5 BEFFFF00 movl $65535, %esi 115 00 116 00aa BF010000 movl $1, %edi 116 00 117 00af E84CFFFF call _Z41__static_initialization_and_destruction_0ii 117 FF 118 .LVL11: 119 00b4 4883C408 addq $8, %rsp 120 .cfi_def_cfa_offset 8 121 00b8 C3 ret 122 .cfi_endproc 123 .LFE1402: 125 .section .init_array,"aw" 126 .align 8 127 0000 00000000 .quad _GLOBAL__sub_I__Z10dirtyArrayPi 127 00000000 128 .local _ZStL8__ioinit 129 .comm _ZStL8__ioinit,1,1 130 .text 131 .Letext0: 132 .file 3 "/usr/include/libio.h" 133 .file 4 "/usr/include/stdio.h" 134 .file 5 "<built-in>" 135 .file 6 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h" 136 .file 7 "/usr/include/wchar.h" 137 .file 8 "/usr/include/c++/4.8/cwchar" 138 .file 9 "/usr/include/c++/4.8/bits/exception_ptr.h" 139 .file 10 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h" 140 .file 11 "/usr/include/c++/4.8/bits/char_traits.h" 141 .file 12 "/usr/include/c++/4.8/cstdint" 142 .file 13 "/usr/include/c++/4.8/clocale" 143 .file 14 "/usr/include/c++/4.8/cstdlib" 144 .file 15 "/usr/include/c++/4.8/cstdio" 145 .file 16 "/usr/include/c++/4.8/bits/ios_base.h" 146 .file 17 "/usr/include/c++/4.8/cwctype" 147 .file 18 "/usr/include/c++/4.8/bits/ostream.tcc" 148 .file 19 "/usr/include/c++/4.8/ostream" 149 .file 20 "/usr/include/c++/4.8/iosfwd" 150 .file 21 "/usr/include/x86_64-linux-gnu/bits/wchar2.h" 151 .file 22 "/usr/include/time.h" 152 .file 23 "/usr/include/c++/4.8/ext/new_allocator.h" 153 .file 24 "/usr/include/c++/4.8/ext/numeric_traits.h" 154 .file 25 "/usr/include/c++/4.8/debug/debug.h" 155 .file 26 "/usr/include/stdint.h" 156 .file 27 "/usr/include/locale.h" 157 .file 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 158 .file 29 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/atomic_word.h" 159 .file 30 "/usr/include/stdlib.h" 160 .file 31 "/usr/include/x86_64-linux-gnu/bits/stdlib.h" 161 .file 32 "/usr/include/_G_config.h" 162 .file 33 "/usr/include/x86_64-linux-gnu/bits/stdio2.h" 163 .file 34 "/usr/include/wctype.h" 164 .file 35 "/usr/include/c++/4.8/bits/stl_pair.h" GAS LISTING /tmp/ccIlNqbG.s page 6 DEFINED SYMBOLS *ABS*:0000000000000000 constexpr.cpp /tmp/ccIlNqbG.s:5 .text:0000000000000000 _Z41__static_initialization_and_destruction_0ii .bss:0000000000000000 _ZStL8__ioinit /tmp/ccIlNqbG.s:40 .text:0000000000000034 _Z10dirtyArrayPi /tmp/ccIlNqbG.s:59 .text:000000000000003c _Z9constExprv /tmp/ccIlNqbG.s:108 .text:00000000000000a1 _GLOBAL__sub_I__Z10dirtyArrayPi UNDEFINED SYMBOLS _ZNSt8ios_base4InitC1Ev __dso_handle _ZNSt8ios_base4InitD1Ev __cxa_atexit _ZSt4cout _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc _ZNSolsEi _ZNSolsEm _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ _ZNSolsEPFRSoS_E